From 90fdb74ccbcd19fa575840b76899282b2242bff4 Mon Sep 17 00:00:00 2001 From: BuffelSaft Date: Fri, 16 Jul 2021 17:56:53 +1200 Subject: [PATCH] Remove UndoFormChangeOnSwitch Handle switching out Mimikyu Busted in UndoFormChange. --- include/battle_util.h | 3 +-- src/battle_main.c | 4 ++-- src/battle_util.c | 40 +++++++--------------------------------- 3 files changed, 10 insertions(+), 37 deletions(-) diff --git a/include/battle_util.h b/include/battle_util.h index cec7f7b73e..0b7b01d0c8 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -123,8 +123,7 @@ u16 GetMegaEvolutionSpecies(u16 preEvoSpecies, u16 heldItemId); u16 GetWishMegaEvolutionSpecies(u16 preEvoSpecies, u16 moveId1, u16 moveId2, u16 moveId3, u16 moveId4); bool32 CanMegaEvolve(u8 battlerId); void UndoMegaEvolution(u32 monId); -void UndoFormChange(u32 monId, u32 side); -void UndoFormChangeOnSwitch(u32 monId, u32 side); +void UndoFormChange(u32 monId, u32 side, bool32 isSwitchingOut); bool32 DoBattlersShareType(u32 battler1, u32 battler2); bool32 CanBattlerGetOrLoseItem(u8 battlerId, u16 itemId); struct Pokemon *GetIllusionMonPtr(u32 battlerId); diff --git a/src/battle_main.c b/src/battle_main.c index 9cf56abf74..94700bf969 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -3122,7 +3122,7 @@ void FaintClearSetData(void) ClearBattlerMoveHistory(gActiveBattler); ClearBattlerAbilityHistory(gActiveBattler); ClearBattlerItemEffectHistory(gActiveBattler); - UndoFormChange(gBattlerPartyIndexes[gActiveBattler], GET_BATTLER_SIDE(gActiveBattler)); + UndoFormChange(gBattlerPartyIndexes[gActiveBattler], GET_BATTLER_SIDE(gActiveBattler), FALSE); if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) UndoMegaEvolution(gBattlerPartyIndexes[gActiveBattler]); } @@ -4878,7 +4878,7 @@ static void HandleEndTurn_FinishBattle(void) for (i = 0; i < PARTY_SIZE; i++) { UndoMegaEvolution(i); - UndoFormChange(i, B_SIDE_PLAYER); + UndoFormChange(i, B_SIDE_PLAYER, FALSE); } gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions; gCB2_AfterEvolution = BattleMainCB2; diff --git a/src/battle_util.c b/src/battle_util.c index 8ac9a82579..0892263175 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -492,7 +492,7 @@ void HandleAction_Switch(void) if (gBattleResults.playerSwitchesCounter < 255) gBattleResults.playerSwitchesCounter++; - UndoFormChangeOnSwitch(gBattlerPartyIndexes[gBattlerAttacker], GetBattlerSide(gBattlerAttacker)); + UndoFormChange(gBattlerPartyIndexes[gBattlerAttacker], GetBattlerSide(gBattlerAttacker), TRUE); } void HandleAction_UseItem(void) @@ -8322,44 +8322,13 @@ void UndoMegaEvolution(u32 monId) } } -void UndoFormChange(u32 monId, u32 side) +void UndoFormChange(u32 monId, u32 side, bool32 isSwitchingOut) { u32 i, currSpecies; struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; static const u16 species[][2] = // changed form id, default form id { - {SPECIES_AEGISLASH_BLADE, SPECIES_AEGISLASH}, {SPECIES_MIMIKYU_BUSTED, SPECIES_MIMIKYU}, - {SPECIES_DARMANITAN_ZEN_MODE, SPECIES_DARMANITAN}, - {SPECIES_MINIOR, SPECIES_MINIOR_CORE_RED}, - {SPECIES_MINIOR_METEOR_BLUE, SPECIES_MINIOR_CORE_BLUE}, - {SPECIES_MINIOR_METEOR_GREEN, SPECIES_MINIOR_CORE_GREEN}, - {SPECIES_MINIOR_METEOR_INDIGO, SPECIES_MINIOR_CORE_INDIGO}, - {SPECIES_MINIOR_METEOR_ORANGE, SPECIES_MINIOR_CORE_ORANGE}, - {SPECIES_MINIOR_METEOR_VIOLET, SPECIES_MINIOR_CORE_VIOLET}, - {SPECIES_MINIOR_METEOR_YELLOW, SPECIES_MINIOR_CORE_YELLOW}, - {SPECIES_WISHIWASHI_SCHOOL, SPECIES_WISHIWASHI}, - }; - - currSpecies = GetMonData(&party[monId], MON_DATA_SPECIES, NULL); - for (i = 0; i < ARRAY_COUNT(species); i++) - { - if (currSpecies == species[i][0]) - { - SetMonData(&party[monId], MON_DATA_SPECIES, &species[i][1]); - CalculateMonStats(&party[monId]); - break; - } - } -} - -// Same as UndoFormChange but doesn't revert Mimikyu -void UndoFormChangeOnSwitch(u32 monId, u32 side) -{ - u32 i, currSpecies; - struct Pokemon *party = (side == B_SIDE_PLAYER) ? gPlayerParty : gEnemyParty; - static const u16 species[][2] = // changed form id, default form id - { {SPECIES_AEGISLASH_BLADE, SPECIES_AEGISLASH}, {SPECIES_DARMANITAN_ZEN_MODE, SPECIES_DARMANITAN}, {SPECIES_MINIOR, SPECIES_MINIOR_CORE_RED}, @@ -8375,6 +8344,11 @@ void UndoFormChangeOnSwitch(u32 monId, u32 side) currSpecies = GetMonData(&party[monId], MON_DATA_SPECIES, NULL); for (i = 0; i < ARRAY_COUNT(species); i++) { + if (i == 0 && isSwitchingOut) + { + i++; // Don't revert Mimikyu Busted when switching out + } + if (currSpecies == species[i][0]) { SetMonData(&party[monId], MON_DATA_SPECIES, &species[i][1]);