Fixes Flower Shield affecting semi-invulnerable mons (#7766)

This commit is contained in:
Alex 2025-09-22 15:57:11 +02:00 committed by GitHub
parent abc471e9bd
commit 2c16f6ba55
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 41 additions and 3 deletions

View File

@ -1475,14 +1475,17 @@ BattleScript_EffectFlowerShield::
ppreduce
savetarget
selectfirstvalidtarget
BattleScript_FlowerShieldIsAnyGrass:
BattleScript_FlowerShieldIsAnyValidTarget:
jumpifvolatile BS_TARGET, VOLATILE_SEMI_INVULNERABLE, BattleScript_FlowerShieldCheckNextTarget
jumpiftype BS_TARGET, TYPE_GRASS, BattleScript_FlowerShieldLoopStart
jumpifnexttargetvalid BattleScript_FlowerShieldIsAnyGrass
BattleScript_FlowerShieldCheckNextTarget:
jumpifnexttargetvalid BattleScript_FlowerShieldIsAnyValidTarget
goto BattleScript_RestoreTargetButItFailed
BattleScript_FlowerShieldLoopStart:
selectfirstvalidtarget
BattleScript_FlowerShieldLoop:
movevaluescleanup
jumpifvolatile BS_TARGET, VOLATILE_SEMI_INVULNERABLE, BattleScript_FlowerShieldMoveTargetEnd
jumpiftype BS_TARGET, TYPE_GRASS, BattleScript_FlowerShieldLoop2
goto BattleScript_FlowerShieldMoveTargetEnd
BattleScript_FlowerShieldLoop2:
@ -1503,6 +1506,7 @@ BattleScript_FlowerShieldMoveTargetEnd:
moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_FlowerShieldLoop
restoretarget
moveendfrom MOVEEND_ITEM_EFFECTS_ATTACKER
end
BattleScript_EffectRototiller::

View File

@ -36,4 +36,38 @@ DOUBLE_BATTLE_TEST("Flower Shield raises the defense of all Grass-type Pokémon"
}
}
TO_DO_BATTLE_TEST("Flower Shield fails if there's no Grass-type Pokémon on the field")
SINGLE_BATTLE_TEST("Flower Shield fails if there's no Grass-type Pokémon on the field")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_FLOWER_SHIELD); }
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_FLOWER_SHIELD, player);
}
}
DOUBLE_BATTLE_TEST("Flower Shield doesn't affect Grass-type Pokémon that are in a semi-invulnerable position")
{
GIVEN {
PLAYER(SPECIES_BULBASAUR);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_BULBASAUR);
OPPONENT(SPECIES_WYNAUT);
} WHEN {
TURN {
MOVE(opponentLeft, MOVE_FLY, target: playerLeft);
MOVE(playerLeft, MOVE_FLOWER_SHIELD);
}
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FLY, opponentLeft);
ANIMATION(ANIM_TYPE_MOVE, MOVE_FLOWER_SHIELD, playerLeft);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
NONE_OF {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
}
}
}