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 IsTelekinesisBannedSpecies(u16 species);
|
||||||
bool32 IsHealBlockPreventingMove(u32 battler, u32 move);
|
bool32 IsHealBlockPreventingMove(u32 battler, u32 move);
|
||||||
bool32 HasEnoughHpToEatBerry(u32 battlerId, u32 hpFraction, u32 itemId);
|
bool32 HasEnoughHpToEatBerry(u32 battlerId, u32 hpFraction, u32 itemId);
|
||||||
|
void DoBurmyFormChange(u32 monId);
|
||||||
|
|
||||||
// ability checks
|
// ability checks
|
||||||
bool32 IsRolePlayBannedAbilityAtk(u16 ability);
|
bool32 IsRolePlayBannedAbilityAtk(u16 ability);
|
||||||
|
|
|
@ -4879,6 +4879,7 @@ static void HandleEndTurn_FinishBattle(void)
|
||||||
{
|
{
|
||||||
UndoMegaEvolution(i);
|
UndoMegaEvolution(i);
|
||||||
UndoFormChange(i, B_SIDE_PLAYER, FALSE);
|
UndoFormChange(i, B_SIDE_PLAYER, FALSE);
|
||||||
|
DoBurmyFormChange(i);
|
||||||
}
|
}
|
||||||
gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions;
|
gBattleMainFunc = FreeResetData_ReturnToOvOrDoEvolutions;
|
||||||
gCB2_AfterEvolution = BattleMainCB2;
|
gCB2_AfterEvolution = BattleMainCB2;
|
||||||
|
|
|
@ -8659,3 +8659,43 @@ bool32 IsEntrainmentTargetOrSimpleBeamBannedAbility(u16 ability)
|
||||||
}
|
}
|
||||||
return FALSE;
|
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