Fixes Substitute triggering Stamina and Eject Button on crash damage (#3669)
* Fixes Substitute triggering Stamina * Fix Eject Button triggering on crash damage
This commit is contained in:
parent
d86a2136a7
commit
57ce85207e
@ -5858,9 +5858,9 @@ static void Cmd_moveend(void)
|
||||
u8 battler = battlers[i];
|
||||
// Attacker is the damage-dealer, battler is mon to be switched out
|
||||
if (IsBattlerAlive(battler)
|
||||
&& gBattlerAttacker != battler
|
||||
&& GetBattlerHoldEffect(battler, TRUE) == HOLD_EFFECT_EJECT_BUTTON
|
||||
&& !DoesSubstituteBlockMove(gBattlerAttacker, battler, gCurrentMove)
|
||||
&& (gSpecialStatuses[battler].physicalDmg != 0 || gSpecialStatuses[battler].specialDmg != 0)
|
||||
&& TARGET_TURN_DAMAGED
|
||||
&& CountUsablePartyMons(battler) > 0) // Has mon to switch into
|
||||
{
|
||||
gBattleScripting.battler = battler;
|
||||
|
||||
@ -5193,6 +5193,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
|
||||
break;
|
||||
case ABILITY_STAMINA:
|
||||
if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT)
|
||||
&& gBattlerAttacker != gBattlerTarget
|
||||
&& TARGET_TURN_DAMAGED
|
||||
&& IsBattlerAlive(battler)
|
||||
&& CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN))
|
||||
|
||||
@ -87,3 +87,39 @@ DOUBLE_BATTLE_TEST("Stamina activates correctly for every battler with the abili
|
||||
EXPECT_EQ(opponentLeft->hp, opponentLeft->maxHP);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Stamina activates for every hit of a multi hit move")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_MUDBRAY) { Ability(ABILITY_STAMINA); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_DOUBLE_KICK); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_KICK, player);
|
||||
HP_BAR(opponent);
|
||||
STAMINA_STAT_RAISE(opponent, "Foe Mudbray's Defense rose!");
|
||||
STAMINA_STAT_RAISE(opponent, "Foe Mudbray's Defense rose!");
|
||||
} THEN {
|
||||
EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 2);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Stamina is not activated by users own Substitute")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_MUDBRAY) { Ability(ABILITY_STAMINA); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SUBSTITUTE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
|
||||
MESSAGE("Mudbray made a SUBSTITUTE!");
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(player, ABILITY_STAMINA);
|
||||
MESSAGE("Mudbray's Defense rose!");
|
||||
}
|
||||
} THEN {
|
||||
EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE);
|
||||
}
|
||||
}
|
||||
|
||||
@ -187,3 +187,24 @@ SINGLE_BATTLE_TEST("Eject Button is activated before Emergency Exit")
|
||||
MESSAGE("Foe Golisopod is switched out with the Eject Button!");
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Eject Button is not triggered after High Jump Kick crash damage")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_EJECT_BUTTON); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN {
|
||||
MOVE(player, MOVE_PROTECT);
|
||||
MOVE(opponent, MOVE_HIGH_JUMP_KICK);
|
||||
}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_PROTECT, player);
|
||||
MESSAGE("Foe Wobbuffet kept going and crashed!");
|
||||
NONE_OF {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent);
|
||||
MESSAGE("Foe Wobbuffet is switched out with the Eject Button!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user