Schooling

This commit is contained in:
DizzyEggg 2020-04-21 20:43:47 +02:00
parent f8f61c10ac
commit 633ebe6148
3 changed files with 17 additions and 7 deletions

View file

@ -17,6 +17,8 @@
#define SPECIES_DARMANITAN_ZEN 10002 #define SPECIES_DARMANITAN_ZEN 10002
#define SPECIES_MINIOR_CORE 0 #define SPECIES_MINIOR_CORE 0
#define SPECIES_MINIOR 10003 #define SPECIES_MINIOR 10003
#define SPECIES_WISHIWASHI SPECIES_SKARMORY
#define SPECIES_WISHIWASHI_SCHOOL SPECIES_HO_OH
// Items with peculiar battle effects. Remove them if they're properly placed in constant/items.h // Items with peculiar battle effects. Remove them if they're properly placed in constant/items.h
#define ITEM_GRISEOUS_ORB 0 #define ITEM_GRISEOUS_ORB 0

View file

@ -2755,11 +2755,12 @@ static bool32 TryChangeBattleTerrain(u32 battler, u32 statusFlag, u8 *timer)
static bool32 ShouldChangeFormHpBased(u32 battler) static bool32 ShouldChangeFormHpBased(u32 battler)
{ {
// Ability, form >, form <= // Ability, form >, form <=, hp divided
static const u16 forms[][3] = static const u16 forms[][4] =
{ {
{ABILITY_ZEN_MODE, SPECIES_DARMANITAN, SPECIES_DARMANITAN_ZEN}, {ABILITY_ZEN_MODE, SPECIES_DARMANITAN, SPECIES_DARMANITAN_ZEN, 2},
{ABILITY_SHIELDS_DOWN, SPECIES_MINIOR, SPECIES_MINIOR_CORE}, {ABILITY_SHIELDS_DOWN, SPECIES_MINIOR, SPECIES_MINIOR_CORE, 2},
{ABILITY_SCHOOLING, SPECIES_WISHIWASHI_SCHOOL, SPECIES_WISHIWASHI, 4},
}; };
u32 i; u32 i;
@ -2768,13 +2769,13 @@ static bool32 ShouldChangeFormHpBased(u32 battler)
if (gBattleMons[battler].ability == forms[i][0]) if (gBattleMons[battler].ability == forms[i][0])
{ {
if (gBattleMons[battler].species == forms[i][2] if (gBattleMons[battler].species == forms[i][2]
&& gBattleMons[battler].hp > gBattleMons[battler].maxHP / 2) && gBattleMons[battler].hp > gBattleMons[battler].maxHP / forms[i][3])
{ {
gBattleMons[battler].species = forms[i][1]; gBattleMons[battler].species = forms[i][1];
return TRUE; return TRUE;
} }
if (gBattleMons[battler].species == forms[i][1] if (gBattleMons[battler].species == forms[i][1]
&& gBattleMons[battler].hp <= gBattleMons[battler].maxHP / 2) && gBattleMons[battler].hp <= gBattleMons[battler].maxHP / forms[i][3])
{ {
gBattleMons[battler].species = forms[i][2]; gBattleMons[battler].species = forms[i][2];
return TRUE; return TRUE;
@ -3093,6 +3094,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
} }
} }
break; break;
case ABILITY_SCHOOLING:
if (gBattleMons[battler].level < 20)
break;
case ABILITY_SHIELDS_DOWN: case ABILITY_SHIELDS_DOWN:
if (ShouldChangeFormHpBased(battler)) if (ShouldChangeFormHpBased(battler))
{ {
@ -3249,6 +3253,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA
effect++; effect++;
} }
break; break;
case ABILITY_SCHOOLING:
if (gBattleMons[battler].level < 20)
break;
case ABILITY_ZEN_MODE: case ABILITY_ZEN_MODE:
case ABILITY_SHIELDS_DOWN: case ABILITY_SHIELDS_DOWN:
if ((effect = ShouldChangeFormHpBased(battler))) if ((effect = ShouldChangeFormHpBased(battler)))
@ -6582,6 +6589,7 @@ void UndoFormChange(u32 monId, u32 side)
{SPECIES_MIMIKYU_BUSTED, SPECIES_MIMIKYU}, {SPECIES_MIMIKYU_BUSTED, SPECIES_MIMIKYU},
{SPECIES_DARMANITAN_ZEN, SPECIES_DARMANITAN}, {SPECIES_DARMANITAN_ZEN, SPECIES_DARMANITAN},
{SPECIES_MINIOR, SPECIES_MINIOR_CORE}, {SPECIES_MINIOR, SPECIES_MINIOR_CORE},
{SPECIES_WISHIWASHI_SCHOOL, SPECIES_WISHIWASHI},
}; };
currSpecies = GetMonData(&party[monId], MON_DATA_SPECIES, NULL); currSpecies = GetMonData(&party[monId], MON_DATA_SPECIES, NULL);

View file

@ -7296,7 +7296,7 @@ const struct BaseStats gBaseStats[] =
.growthRate = GROWTH_SLOW, .growthRate = GROWTH_SLOW,
.eggGroup1 = EGG_GROUP_FLYING, .eggGroup1 = EGG_GROUP_FLYING,
.eggGroup2 = EGG_GROUP_FLYING, .eggGroup2 = EGG_GROUP_FLYING,
.abilities = {ABILITY_KEEN_EYE, ABILITY_STURDY}, .abilities = {ABILITY_SCHOOLING, ABILITY_SCHOOLING},
.safariZoneFleeRate = 0, .safariZoneFleeRate = 0,
.bodyColor = BODY_COLOR_GRAY, .bodyColor = BODY_COLOR_GRAY,
.noFlip = FALSE, .noFlip = FALSE,