Implement Burmy form change
Burmy changes form based on where it last battled.
This commit is contained in:
parent
e6a2d2226f
commit
f0cb6190e0
3 changed files with 42 additions and 0 deletions
|
@ -138,6 +138,7 @@ bool32 CanFling(u8 battlerId);
|
|||
bool32 IsTelekinesisBannedSpecies(u16 species);
|
||||
bool32 IsHealBlockPreventingMove(u32 battler, u32 move);
|
||||
bool32 HasEnoughHpToEatBerry(u32 battlerId, u32 hpFraction, u32 itemId);
|
||||
void DoBurmyFormChange(u32 monId);
|
||||
|
||||
// ability checks
|
||||
bool32 IsRolePlayBannedAbilityAtk(u16 ability);
|
||||
|
|
|
@ -4879,6 +4879,7 @@ static void HandleEndTurn_FinishBattle(void)
|
|||
{
|
||||
UndoMegaEvolution(i);
|
||||
UndoFormChange(i, B_SIDE_PLAYER, FALSE);
|
||||
DoBurmyFormChange(i);
|
||||
}
|
||||
gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions;
|
||||
gCB2_AfterEvolution = BattleMainCB2;
|
||||
|
|
|
@ -8659,3 +8659,43 @@ bool32 IsEntrainmentTargetOrSimpleBeamBannedAbility(u16 ability)
|
|||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
+void DoBurmyFormChange(u32 monId)
|
||||
{
|
||||
u16 newSpecies, currSpecies;
|
||||
s32 sentIn;
|
||||
struct Pokemon *party = gPlayerParty;
|
||||
|
||||
sentIn = gSentPokesToOpponent[(gBattlerFainted & 2) >> 1];
|
||||
currSpecies = GetMonData(&party[monId], MON_DATA_SPECIES, NULL);
|
||||
|
||||
if ((gSpeciesToNationalPokedexNum[currSpecies - 1] == SPECIES_BURMY) && (gBitTable[monId] & sentIn))
|
||||
{
|
||||
switch (gBattleTerrain)
|
||||
{
|
||||
case BATTLE_TERRAIN_GRASS:
|
||||
case BATTLE_TERRAIN_LONG_GRASS:
|
||||
case BATTLE_TERRAIN_POND:
|
||||
case BATTLE_TERRAIN_MOUNTAIN:
|
||||
case BATTLE_TERRAIN_PLAIN:
|
||||
newSpecies = SPECIES_BURMY;
|
||||
break;
|
||||
case BATTLE_TERRAIN_CAVE:
|
||||
case BATTLE_TERRAIN_SAND:
|
||||
newSpecies = SPECIES_BURMY_SANDY_CLOAK;
|
||||
break;
|
||||
case BATTLE_TERRAIN_BUILDING:
|
||||
newSpecies = SPECIES_BURMY_TRASH_CLOAK;
|
||||
break;
|
||||
default: // Don't change form if last battle was water-related
|
||||
newSpecies = SPECIES_NONE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (newSpecies != SPECIES_NONE)
|
||||
{
|
||||
SetMonData(&party[monId], MON_DATA_SPECIES, &newSpecies);
|
||||
CalculateMonStats(&party[monId]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue