Fix some issues with double battles

This commit is contained in:
Flashfyre 2023-05-15 22:51:29 -04:00
parent 6235590b72
commit ae8aff0822
3 changed files with 15 additions and 8 deletions

View File

@ -140,7 +140,7 @@ export abstract class FieldPhase extends BattlePhase {
}
executeForAll(func: PokemonFunc): void {
const field = this.scene.getField().filter(p => p);
const field = this.scene.getField().filter(p => p?.hp);
field.forEach(pokemon => func(pokemon));
}
}
@ -1312,7 +1312,7 @@ class MoveEffectPhase extends PokemonPhase {
}
getTargets(): Pokemon[] {
return this.scene.getField().filter(p => this.targets.indexOf(p.getBattleTarget()) > -1);
return this.scene.getField().filter(p => p?.hp && this.targets.indexOf(p.getBattleTarget()) > -1);
}
getTarget(): Pokemon {
@ -2099,9 +2099,15 @@ export class AttemptCapturePhase extends PokemonPhase {
start() {
super.start();
const pokemon = this.getPokemon();
if (!pokemon?.hp) {
this.end();
return;
}
this.scene.pokeballCounts[this.pokeballType]--;
const pokemon = this.getPokemon();
this.originalY = pokemon.y;
const _3m = 3 * pokemon.getMaxHp();
@ -2111,6 +2117,7 @@ export class AttemptCapturePhase extends PokemonPhase {
const statusMultiplier = pokemon.status ? getStatusEffectCatchRateMultiplier(pokemon.status.effect) : 1;
const x = Math.round((((_3m - _2h) * catchRate * pokeballMultiplier) / _3m) * statusMultiplier);
const y = Math.round(65536 / Math.sqrt(Math.sqrt(255 / x)));
const fpOffset = pokemon.getFieldPositionOffset();
const pokeballAtlasKey = getPokeballAtlasKey(this.pokeballType);
this.pokeball = this.scene.add.sprite(16, 80, 'pb', pokeballAtlasKey);
@ -2123,8 +2130,8 @@ export class AttemptCapturePhase extends PokemonPhase {
});
this.scene.tweens.add({
targets: this.pokeball,
x: { value: 236, ease: 'Linear' },
y: { value: 16, ease: 'Cubic.easeOut' },
x: { value: 236 + fpOffset[0], ease: 'Linear' },
y: { value: 16 + fpOffset[1], ease: 'Cubic.easeOut' },
duration: 500,
onComplete: () => {
this.pokeball.setTexture('pb', `${pokeballAtlasKey}_opening`);

View File

@ -449,7 +449,7 @@ export default class BattleScene extends Phaser.Scene {
}
getPlayerPokemon(): PlayerPokemon {
return this.getParty()[0];
return this.getPlayerField().find(() => true);
}
getPlayerField(): PlayerPokemon[] {
@ -458,7 +458,7 @@ export default class BattleScene extends Phaser.Scene {
}
getEnemyPokemon(): EnemyPokemon {
return this.currentBattle?.enemyField[0];
return this.currentBattle?.enemyField.find(() => true);
}
getEnemyField(): EnemyPokemon[] {

View File

@ -421,7 +421,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
}
canApplyAbility(): boolean {
return !this.getAbility().conditions.find(condition => !condition(this));
return this.hp && !this.getAbility().conditions.find(condition => !condition(this));
}
getAttackMoveEffectiveness(moveType: Type): TypeDamageMultiplier {