Opponents Shaymin Sky form correctly reverts on frozen status (#4559)
* Fixed Shaymin form change with incorrect status condition * Fixed Shaymin receiving damage again after changing form * PR feedback updates - fixed missing commas in battle script * Added Shaymin form change test by @AlexOn1ine
This commit is contained in:
parent
23b8804790
commit
9cd3fbb232
@ -6994,6 +6994,13 @@ BattleScript_CudChewActivates::
|
||||
setbyte sBERRY_OVERRIDE, 0
|
||||
end3
|
||||
|
||||
BattleScript_ApplyDisguiseFormChangeHPLoss::
|
||||
.if B_DISGUISE_HP_LOSS >= GEN_8
|
||||
healthbarupdate BS_SCRIPTING
|
||||
datahpupdate BS_SCRIPTING
|
||||
.endif
|
||||
return
|
||||
|
||||
BattleScript_TargetFormChangeNoPopup:
|
||||
flushtextbox
|
||||
handleformchange BS_SCRIPTING, 0
|
||||
@ -7001,10 +7008,7 @@ BattleScript_TargetFormChangeNoPopup:
|
||||
playanimation BS_TARGET, B_ANIM_FORM_CHANGE
|
||||
waitanimation
|
||||
handleformchange BS_SCRIPTING, 2
|
||||
.if B_DISGUISE_HP_LOSS >= GEN_8
|
||||
healthbarupdate BS_SCRIPTING
|
||||
datahpupdate BS_SCRIPTING
|
||||
.endif
|
||||
jumpifability BS_TARGET, ABILITY_DISGUISE, BattleScript_ApplyDisguiseFormChangeHPLoss
|
||||
return
|
||||
|
||||
BattleScript_TargetFormChange::
|
||||
|
||||
@ -627,7 +627,7 @@ static const struct FormChange sShayminFormChangeTable[] = {
|
||||
{FORM_CHANGE_ITEM_USE, SPECIES_SHAYMIN_SKY, ITEM_GRACIDEA, DAY},
|
||||
{FORM_CHANGE_WITHDRAW, SPECIES_SHAYMIN_LAND},
|
||||
{FORM_CHANGE_TIME_OF_DAY, SPECIES_SHAYMIN_LAND, NIGHT},
|
||||
{FORM_CHANGE_STATUS, SPECIES_SHAYMIN_LAND, (STATUS1_FREEZE | STATUS1_FROSTBITE)},
|
||||
{FORM_CHANGE_STATUS, SPECIES_SHAYMIN_LAND, STATUS1_FREEZE | STATUS1_FROSTBITE},
|
||||
{FORM_CHANGE_TERMINATOR},
|
||||
};
|
||||
#endif //P_FAMILY_SHAYMIN
|
||||
|
||||
@ -6226,9 +6226,12 @@ u16 GetFormChangeTargetSpeciesBoxMon(struct BoxPokemon *boxMon, u16 method, u32
|
||||
break;
|
||||
case FORM_CHANGE_WITHDRAW:
|
||||
case FORM_CHANGE_FAINT:
|
||||
case FORM_CHANGE_STATUS:
|
||||
targetSpecies = formChanges[i].targetSpecies;
|
||||
break;
|
||||
case FORM_CHANGE_STATUS:
|
||||
if (GetBoxMonData(boxMon, MON_DATA_STATUS, NULL) & formChanges[i].param1)
|
||||
targetSpecies = formChanges[i].targetSpecies;
|
||||
break;
|
||||
case FORM_CHANGE_TIME_OF_DAY:
|
||||
switch (formChanges[i].param1)
|
||||
{
|
||||
|
||||
@ -3,13 +3,38 @@
|
||||
|
||||
SINGLE_BATTLE_TEST("Shaymin-Sky reverts to Shaymin-Land when frozen or frostbitten")
|
||||
{
|
||||
u32 move;
|
||||
|
||||
PARAMETRIZE { move = MOVE_POWDER_SNOW; }
|
||||
PARAMETRIZE { move = MOVE_EMBER; }
|
||||
PARAMETRIZE { move = MOVE_THUNDERSHOCK; }
|
||||
PARAMETRIZE { move = MOVE_POISON_STING; }
|
||||
PARAMETRIZE { move = MOVE_POISON_FANG; }
|
||||
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_POWDER_SNOW, MOVE_EFFECT_FREEZE_OR_FROSTBITE));
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_EMBER, MOVE_EFFECT_BURN));
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_THUNDERSHOCK, MOVE_EFFECT_PARALYSIS));
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_POISON_STING, MOVE_EFFECT_POISON));
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_POISON_FANG, MOVE_EFFECT_TOXIC));
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_SHAYMIN_SKY);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_POWDER_SNOW); }
|
||||
TURN { MOVE(opponent, move); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, opponent);
|
||||
if (move == MOVE_POWDER_SNOW) {
|
||||
STATUS_ICON(player, freeze: TRUE);
|
||||
NOT HP_BAR(player); // Regression caused by Mimikyu form change
|
||||
MESSAGE("Shaymin transformed!");
|
||||
} else {
|
||||
NOT MESSAGE("Shaymin transformed!");
|
||||
}
|
||||
} THEN {
|
||||
EXPECT_EQ(player->species, SPECIES_SHAYMIN_LAND);
|
||||
if (move == MOVE_POWDER_SNOW)
|
||||
EXPECT_EQ(player->species, SPECIES_SHAYMIN_LAND);
|
||||
else
|
||||
EXPECT_EQ(player->species, SPECIES_SHAYMIN_SKY);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user