diff --git a/public/images/arenas/factory_a.png b/public/images/arenas/factory_a.png new file mode 100644 index 000000000..7752f08e9 Binary files /dev/null and b/public/images/arenas/factory_a.png differ diff --git a/public/images/arenas/factory_b.png b/public/images/arenas/factory_b.png new file mode 100644 index 000000000..eea4397ea Binary files /dev/null and b/public/images/arenas/factory_b.png differ diff --git a/public/images/arenas/factory_b_1.png b/public/images/arenas/factory_b_1.png new file mode 100644 index 000000000..73530a9ac Binary files /dev/null and b/public/images/arenas/factory_b_1.png differ diff --git a/public/images/arenas/factory_b_2.png b/public/images/arenas/factory_b_2.png new file mode 100644 index 000000000..4b60c2437 Binary files /dev/null and b/public/images/arenas/factory_b_2.png differ diff --git a/public/images/arenas/factory_b_3.png b/public/images/arenas/factory_b_3.png new file mode 100644 index 000000000..83c0c29f8 Binary files /dev/null and b/public/images/arenas/factory_b_3.png differ diff --git a/public/images/arenas/factory_bg.png b/public/images/arenas/factory_bg.png new file mode 100644 index 000000000..17fee1376 Binary files /dev/null and b/public/images/arenas/factory_bg.png differ diff --git a/public/images/items.json b/public/images/items.json index ed1e66698..133dd23ef 100644 --- a/public/images/items.json +++ b/public/images/items.json @@ -2194,7 +2194,7 @@ } }, { - "filename": "lum_berry,png", + "filename": "lum_berry", "rotated": false, "trimmed": true, "sourceSize": { diff --git a/public/images/items/lum_berry,png.png b/public/images/items/lum_berry.png similarity index 100% rename from public/images/items/lum_berry,png.png rename to public/images/items/lum_berry.png diff --git a/src/arena.ts b/src/arena.ts index 001002b54..d5f3d4f8c 100644 --- a/src/arena.ts +++ b/src/arena.ts @@ -316,8 +316,6 @@ export function getBiomeKey(biome: Biome): string { return 'wasteland'; case Biome.POWER_PLANT: return 'ruins'; - case Biome.FACTORY: - return 'wasteland'; case Biome.END: return 'wasteland'; } @@ -337,6 +335,7 @@ export function getBiomeHasProps(biomeType: Biome): boolean { case Biome.MEADOW: case Biome.VOLCANO: case Biome.GRAVEYARD: + case Biome.FACTORY: case Biome.WASTELAND: return true; } diff --git a/src/battle-phases.ts b/src/battle-phases.ts index 51130b7fd..7c101f729 100644 --- a/src/battle-phases.ts +++ b/src/battle-phases.ts @@ -738,26 +738,17 @@ export class TurnInitPhase extends FieldPhase { start() { super.start(); - this.scene.getPlayerField().forEach(playerPokemon => { - if (playerPokemon.isActive()) - this.scene.currentBattle.addParticipant(playerPokemon); + this.scene.getField().forEach((pokemon, i) => { + if (pokemon?.isActive()) { + if (pokemon.isPlayer()) + this.scene.currentBattle.addParticipant(pokemon as PlayerPokemon); - playerPokemon.resetTurnData(); + pokemon.resetTurnData(); + + this.scene.pushPhase(pokemon.isPlayer() ? new CommandPhase(this.scene, i) : new EnemyCommandPhase(this.scene, i - BattlerIndex.ENEMY)); + } }); - this.scene.getEnemyField().forEach(enemyPokemon => { - if (enemyPokemon.isActive()) - enemyPokemon.resetTurnData() - }); - - const order = this.getOrder(); - for (let o of order) { - if (o < BattlerIndex.ENEMY) - this.scene.pushPhase(new CommandPhase(this.scene, o)); - else - this.scene.pushPhase(new EnemyCommandPhase(this.scene, o - BattlerIndex.ENEMY)); - } - this.scene.pushPhase(new TurnStartPhase(this.scene)); this.end(); @@ -2392,7 +2383,10 @@ export class AttemptRunPhase extends PokemonPhase { ease: 'Sine.easeIn' }); - enemyField.forEach(enemyPokemon => enemyPokemon.hp = 0); + enemyField.forEach(enemyPokemon => { + enemyPokemon.hideInfo(); + enemyPokemon.hp = 0; + }); this.scene.pushPhase(new BattleEndPhase(this.scene)); this.scene.pushPhase(new NewBattlePhase(this.scene)); diff --git a/src/data/ability.ts b/src/data/ability.ts index 2f20204e2..53f02ae71 100644 --- a/src/data/ability.ts +++ b/src/data/ability.ts @@ -1224,7 +1224,7 @@ export function initAbilities() { new Ability(Abilities.FLAME_BODY, "Flame Body", "Contact with the POKéMON may burn the attacker.", 3) .attr(PostDefendContactApplyStatusEffectAbAttr, 30, StatusEffect.BURN), new Ability(Abilities.FLASH_FIRE, "Flash Fire", "It powers up FIRE-type moves if it's hit by one.", 3) - .attr(TypeImmunityAddBattlerTagAbAttr, Type.FIRE, 1, BattlerTagType.FIRE_BOOST, (pokemon: Pokemon) => !pokemon.status || pokemon.status.effect !== StatusEffect.FREEZE), + .attr(TypeImmunityAddBattlerTagAbAttr, Type.FIRE, BattlerTagType.FIRE_BOOST, 1, (pokemon: Pokemon) => !pokemon.status || pokemon.status.effect !== StatusEffect.FREEZE), new Ability(Abilities.FORECAST, "Forecast (N)", "Castform transforms with the weather.", 3), new Ability(Abilities.GUTS, "Guts (N)", "Boosts ATTACK if there is a status problem.", 3), new Ability(Abilities.HUGE_POWER, "Huge Power", "Raises the POKéMON's ATTACK stat.", 3) diff --git a/src/modifier/modifier.ts b/src/modifier/modifier.ts index 8a9a2245d..725e91110 100644 --- a/src/modifier/modifier.ts +++ b/src/modifier/modifier.ts @@ -225,6 +225,12 @@ export class DoubleBattleChanceBoosterModifier extends LapsingPersistentModifier super(type, battlesLeft, stackCount); } + match(modifier: Modifier): boolean { + if (modifier instanceof DoubleBattleChanceBoosterModifier) + return (modifier as DoubleBattleChanceBoosterModifier).battlesLeft === this.battlesLeft; + return false; + } + clone(): TempBattleStatBoosterModifier { return new TempBattleStatBoosterModifier(this.type as ModifierTypes.TempBattleStatBoosterModifierType, this.battlesLeft, this.stackCount); } @@ -250,6 +256,13 @@ export class TempBattleStatBoosterModifier extends LapsingPersistentModifier { this.tempBattleStat = tempBattleStat; } + match(modifier: Modifier): boolean { + if (modifier instanceof TempBattleStatBoosterModifier) + return (modifier as TempBattleStatBoosterModifier).tempBattleStat === this.tempBattleStat + && (modifier as TempBattleStatBoosterModifier).battlesLeft === this.battlesLeft; + return false; + } + clone(): TempBattleStatBoosterModifier { return new TempBattleStatBoosterModifier(this.type as ModifierTypes.TempBattleStatBoosterModifierType, this.tempBattleStat, this.battlesLeft, this.stackCount); }