mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-03-21 18:04:50 -05:00
Zen Mode Fix: Removes start battle form change and adds switch-out form change (#9304)
Co-authored-by: LinathanZel <linathan@DESKTOP-RVGNQ5E.localdomain>
This commit is contained in:
parent
6ac7540d3b
commit
a635ac599d
|
|
@ -5425,6 +5425,17 @@ BattleScript_BattlerFormChangeFromAfterAnimation::
|
|||
jumpifability BS_TARGET, ABILITY_DISGUISE, BattleScript_ApplyDisguiseFormChangeHPLoss
|
||||
return
|
||||
|
||||
BattleScript_ZenMode::
|
||||
flushtextbox
|
||||
call BattleScript_AbilityPopUpScripting
|
||||
handleformchange BS_SCRIPTING, 0
|
||||
playanimation BS_SCRIPTING, B_ANIM_FORM_CHANGE
|
||||
waitanimation
|
||||
handleformchange BS_SCRIPTING, 1
|
||||
printfromtable gZenModeStringIds
|
||||
waitmessage B_WAIT_TIME_SHORT
|
||||
end2
|
||||
|
||||
BattleScript_BattlerFormChangeDisguise::
|
||||
call BattleScript_AbilityPopUpScripting
|
||||
pause B_WAIT_TIME_LONG
|
||||
|
|
|
|||
|
|
@ -340,6 +340,7 @@ extern const u8 BattleScript_AftermathDmg[];
|
|||
extern const u8 BattleScript_BattlerFormChange[];
|
||||
extern const u8 BattleScript_BattlerFormChangeEnd2[];
|
||||
extern const u8 BattleScript_BattlerFormChangeNoPopup[];
|
||||
extern const u8 BattleScript_ZenMode[];
|
||||
extern const u8 BattleScript_BattlerFormChangeDisguise[];
|
||||
extern const u8 BattleScript_TargetFormChange[];
|
||||
extern const u8 BattleScript_AnticipationActivates[];
|
||||
|
|
|
|||
|
|
@ -720,6 +720,8 @@ enum StringID
|
|||
STRINGID_PKMNANGRY,
|
||||
STRINGID_PKMNEATING,
|
||||
STRINGID_PKMNDISGUISEWASBUSTED,
|
||||
STRINGID_ZENMODETRIGGERED,
|
||||
STRINGID_ZENMODEENDED,
|
||||
STRINGID_COUNT
|
||||
};
|
||||
|
||||
|
|
@ -1199,4 +1201,11 @@ enum DamageNonTypesDmgStringID
|
|||
B_MSG_HURT_BY_ROCKS_THROWN,
|
||||
};
|
||||
|
||||
// gZenModeStringIds
|
||||
enum ZenModeStringID
|
||||
{
|
||||
B_MSG_ZEN_MODE_TRIGGERED,
|
||||
B_MSG_ZEN_MODE_ENDED,
|
||||
};
|
||||
|
||||
#endif // GUARD_CONSTANTS_BATTLE_STRING_IDS_H
|
||||
|
|
|
|||
|
|
@ -1324,12 +1324,26 @@ static bool32 HandleEndTurnFormChange(enum BattlerId battler)
|
|||
{
|
||||
gBattleScripting.battler = battler;
|
||||
gBattleScripting.abilityPopupOverwrite = ability; // To prevent the new form's ability from pop up
|
||||
if (ability == ABILITY_POWER_CONSTRUCT) // Special animation
|
||||
switch (ability)
|
||||
{
|
||||
case ABILITY_POWER_CONSTRUCT:
|
||||
BattleScriptExecute(BattleScript_PowerConstruct);
|
||||
else if (ability == ABILITY_HUNGER_SWITCH)
|
||||
break;
|
||||
case ABILITY_HUNGER_SWITCH:
|
||||
BattleScriptExecute(BattleScript_BattlerFormChangeEnd3NoPopup);
|
||||
else
|
||||
break;
|
||||
case ABILITY_ZEN_MODE:
|
||||
if (gBattleMons[battler].species == SPECIES_DARMANITAN_ZEN
|
||||
|| gBattleMons[battler].species == SPECIES_DARMANITAN_GALAR_ZEN)
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ZEN_MODE_TRIGGERED;
|
||||
else
|
||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ZEN_MODE_ENDED;
|
||||
BattleScriptExecute(BattleScript_ZenMode);
|
||||
break;
|
||||
default:
|
||||
BattleScriptExecute(BattleScript_BattlerFormChangeEnd2); // Generic animation
|
||||
break;
|
||||
}
|
||||
effect = TRUE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -897,6 +897,8 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
|
|||
[STRINGID_PKMNANGRY] = COMPOUND_STRING("{B_OPPONENT_MON1_NAME} is angry!"),
|
||||
[STRINGID_PKMNEATING] = COMPOUND_STRING("{B_OPPONENT_MON1_NAME} is eating!"),
|
||||
[STRINGID_PKMNDISGUISEWASBUSTED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s disguise was busted!"),
|
||||
[STRINGID_ZENMODETRIGGERED] = COMPOUND_STRING("{B_SCR_ABILITY} triggered!"),
|
||||
[STRINGID_ZENMODEENDED] = COMPOUND_STRING("{B_SCR_ABILITY} ended!"),
|
||||
};
|
||||
|
||||
const u16 gTrainerUsedItemStringIds[] =
|
||||
|
|
@ -1418,6 +1420,12 @@ const u16 gSpinHazardsStringIds[] =
|
|||
[HAZARDS_STEELSURGE] = STRINGID_PKMNBLEWAWAYSHARPSTEEL,
|
||||
};
|
||||
|
||||
const u16 gZenModeStringIds[] =
|
||||
{
|
||||
[B_MSG_ZEN_MODE_TRIGGERED] = STRINGID_ZENMODETRIGGERED,
|
||||
[B_MSG_ZEN_MODE_ENDED] = STRINGID_ZENMODEENDED
|
||||
};
|
||||
|
||||
const u8 gText_PkmnIsEvolving[] = _("What?\n{STR_VAR_1} is evolving!");
|
||||
const u8 gText_CongratsPkmnEvolved[] = _("Congratulations! Your {STR_VAR_1}\nevolved into {STR_VAR_2}!{WAIT_SE}\p");
|
||||
const u8 gText_PkmnStoppedEvolving[] = _("Huh? {STR_VAR_1}\nstopped evolving!\p");
|
||||
|
|
|
|||
|
|
@ -1066,10 +1066,9 @@ static const struct FormChange sScolipedeFormChangeTable[] =
|
|||
#if P_FAMILY_DARUMAKA
|
||||
static const struct FormChange sDarmanitanFormChangeTable[] =
|
||||
{
|
||||
{FORM_CHANGE_BATTLE_HP_PERCENT_SEND_OUT, SPECIES_DARMANITAN_STANDARD, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50},
|
||||
{FORM_CHANGE_BATTLE_HP_PERCENT_SEND_OUT, SPECIES_DARMANITAN_ZEN, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50},
|
||||
{FORM_CHANGE_BATTLE_HP_PERCENT_TURN_END, SPECIES_DARMANITAN_STANDARD, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50},
|
||||
{FORM_CHANGE_BATTLE_HP_PERCENT_TURN_END, SPECIES_DARMANITAN_ZEN, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50},
|
||||
{FORM_CHANGE_BATTLE_SWITCH_OUT, SPECIES_DARMANITAN_STANDARD, ABILITY_ZEN_MODE},
|
||||
{FORM_CHANGE_FAINT, SPECIES_DARMANITAN_STANDARD},
|
||||
{FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_STANDARD},
|
||||
{FORM_CHANGE_TERMINATOR},
|
||||
|
|
@ -1078,10 +1077,9 @@ static const struct FormChange sDarmanitanFormChangeTable[] =
|
|||
#if P_GALARIAN_FORMS
|
||||
static const struct FormChange sDarmanitanGalarFormChangeTable[] =
|
||||
{
|
||||
{FORM_CHANGE_BATTLE_HP_PERCENT_SEND_OUT, SPECIES_DARMANITAN_GALAR_STANDARD, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50},
|
||||
{FORM_CHANGE_BATTLE_HP_PERCENT_SEND_OUT, SPECIES_DARMANITAN_GALAR_ZEN, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50},
|
||||
{FORM_CHANGE_BATTLE_HP_PERCENT_TURN_END, SPECIES_DARMANITAN_GALAR_STANDARD, ABILITY_ZEN_MODE, HP_HIGHER_THAN, 50},
|
||||
{FORM_CHANGE_BATTLE_HP_PERCENT_TURN_END, SPECIES_DARMANITAN_GALAR_ZEN, ABILITY_ZEN_MODE, HP_LOWER_EQ_THAN, 50},
|
||||
{FORM_CHANGE_BATTLE_SWITCH_OUT, SPECIES_DARMANITAN_GALAR_STANDARD, ABILITY_ZEN_MODE},
|
||||
{FORM_CHANGE_FAINT, SPECIES_DARMANITAN_GALAR_STANDARD},
|
||||
{FORM_CHANGE_END_BATTLE, SPECIES_DARMANITAN_GALAR_STANDARD},
|
||||
{FORM_CHANGE_TERMINATOR},
|
||||
|
|
|
|||
|
|
@ -24,17 +24,18 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less
|
|||
HP_BAR(player);
|
||||
ABILITY_POPUP(player, ABILITY_ZEN_MODE);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
|
||||
MESSAGE("Zen Mode triggered!");
|
||||
} THEN {
|
||||
EXPECT_LT(player->hp, player->maxHP / 2);
|
||||
EXPECT_EQ(player->species, zenSpecies);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less before the first turn")
|
||||
SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form to Standard when swapped out")
|
||||
{
|
||||
u16 standardSpecies, zenSpecies;
|
||||
PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_STANDARD; zenSpecies = SPECIES_DARMANITAN_ZEN; }
|
||||
PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALAR_STANDARD; zenSpecies = SPECIES_DARMANITAN_GALAR_ZEN; }
|
||||
PARAMETRIZE { standardSpecies = SPECIES_DARMANITAN_GALAR_STANDARD; zenSpecies = SPECIES_DARMANITAN_GALAR_ZEN; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetSpeciesBaseHP(standardSpecies) == 105);
|
||||
|
|
@ -44,14 +45,25 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is half or less
|
|||
Ability(ABILITY_ZEN_MODE);
|
||||
HP(GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 2);
|
||||
}
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_CELEBRATE); }
|
||||
TURN { SWITCH(player, 0); MOVE(opponent, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_ZEN_MODE);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
|
||||
MESSAGE("Darmanitan used Celebrate!");
|
||||
MESSAGE("The opposing Wobbuffet used Celebrate!");
|
||||
ABILITY_POPUP(player, ABILITY_ZEN_MODE);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
|
||||
MESSAGE("Zen Mode triggered!");
|
||||
MESSAGE("Go! Wobbuffet!");
|
||||
MESSAGE("The opposing Wobbuffet used Celebrate!");
|
||||
MESSAGE("Go! Darmanitan!");
|
||||
MESSAGE("The opposing Wobbuffet used Celebrate!");
|
||||
ABILITY_POPUP(player, ABILITY_ZEN_MODE);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
|
||||
MESSAGE("Zen Mode triggered!");
|
||||
} THEN {
|
||||
EXPECT_LE(player->hp, player->maxHP / 2);
|
||||
EXPECT_EQ(player->species, zenSpecies);
|
||||
|
|
@ -74,15 +86,20 @@ SINGLE_BATTLE_TEST("Zen Mode switches Darmanitan's form when HP is healed above
|
|||
}
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_HEAL_PULSE); }
|
||||
} SCENE {
|
||||
MESSAGE("Darmanitan used Celebrate!");
|
||||
MESSAGE("The opposing Wobbuffet used Celebrate!");
|
||||
ABILITY_POPUP(player, ABILITY_ZEN_MODE);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
|
||||
MESSAGE("Zen Mode triggered!");
|
||||
MESSAGE("Darmanitan used Celebrate!");
|
||||
MESSAGE("The opposing Wobbuffet used Heal Pulse!");
|
||||
HP_BAR(player);
|
||||
ABILITY_POPUP(player, ABILITY_ZEN_MODE);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
|
||||
MESSAGE("Zen Mode ended!");
|
||||
} THEN {
|
||||
EXPECT_GT(player->hp, player->maxHP / 2);
|
||||
EXPECT_EQ(player->species, standardSpecies);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user