Adds Illuminate's Gen9 effect (#3482)
Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
This commit is contained in:
parent
5087095aae
commit
0dd22305a4
5 changed files with 11 additions and 2 deletions
|
@ -129,6 +129,7 @@
|
||||||
#define B_LEAF_GUARD_PREVENTS_REST GEN_LATEST // In Gen5+, Leaf Guard prevents the use of Rest in harsh sunlight.
|
#define B_LEAF_GUARD_PREVENTS_REST GEN_LATEST // In Gen5+, Leaf Guard prevents the use of Rest in harsh sunlight.
|
||||||
#define B_SNOW_WARNING GEN_LATEST // In Gen9+, Snow Warning will summon snow instead of hail.
|
#define B_SNOW_WARNING GEN_LATEST // In Gen9+, Snow Warning will summon snow instead of hail.
|
||||||
#define B_TRANSISTOR_BOOST GEN_LATEST // In Gen9+, Transistor will only boost Electric-type moves by 1.3x as opposed to 1.5x.
|
#define B_TRANSISTOR_BOOST GEN_LATEST // In Gen9+, Transistor will only boost Electric-type moves by 1.3x as opposed to 1.5x.
|
||||||
|
#define B_ILLUMINATE_EFFECT GEN_LATEST // In Gen9+, Illuminate prevents accuracy reductions and ignores the target's evasion.
|
||||||
|
|
||||||
// Item settings
|
// Item settings
|
||||||
#define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore HP activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn.
|
#define B_HP_BERRIES GEN_LATEST // In Gen4+, berries which restore HP activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn.
|
||||||
|
|
|
@ -869,6 +869,10 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||||
&& move != MOVE_PLAY_NICE && move != MOVE_NOBLE_ROAR && move != MOVE_TEARFUL_LOOK && move != MOVE_VENOM_DRENCH)
|
&& move != MOVE_PLAY_NICE && move != MOVE_NOBLE_ROAR && move != MOVE_TEARFUL_LOOK && move != MOVE_VENOM_DRENCH)
|
||||||
RETURN_SCORE_MINUS(10);
|
RETURN_SCORE_MINUS(10);
|
||||||
break;
|
break;
|
||||||
|
case ABILITY_ILLUMINATE:
|
||||||
|
if (B_ILLUMINATE_EFFECT < GEN_9)
|
||||||
|
break;
|
||||||
|
// fallthrough
|
||||||
case ABILITY_KEEN_EYE:
|
case ABILITY_KEEN_EYE:
|
||||||
if (moveEffect == EFFECT_ACCURACY_DOWN || moveEffect == EFFECT_ACCURACY_DOWN_2)
|
if (moveEffect == EFFECT_ACCURACY_DOWN || moveEffect == EFFECT_ACCURACY_DOWN_2)
|
||||||
RETURN_SCORE_MINUS(10);
|
RETURN_SCORE_MINUS(10);
|
||||||
|
@ -1292,7 +1296,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||||
case EFFECT_ACCURACY_DOWN_2:
|
case EFFECT_ACCURACY_DOWN_2:
|
||||||
if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ACC))
|
if (!ShouldLowerStat(battlerDef, aiData->abilities[battlerDef], STAT_ACC))
|
||||||
ADJUST_SCORE(-10);
|
ADJUST_SCORE(-10);
|
||||||
else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE)
|
else if (aiData->abilities[battlerDef] == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && aiData->abilities[battlerDef] == ABILITY_ILLUMINATE))
|
||||||
ADJUST_SCORE(-8);
|
ADJUST_SCORE(-8);
|
||||||
break;
|
break;
|
||||||
case EFFECT_EVASION_DOWN:
|
case EFFECT_EVASION_DOWN:
|
||||||
|
|
|
@ -347,6 +347,7 @@ static bool8 ShouldSwitchIfGameStatePrompt(u32 battler)
|
||||||
if (gBattleMons[battler].statStages[STAT_EVASION] > (DEFAULT_STAT_STAGE + 3)
|
if (gBattleMons[battler].statStages[STAT_EVASION] > (DEFAULT_STAT_STAGE + 3)
|
||||||
&& AI_DATA->abilities[opposingBattler] != ABILITY_UNAWARE
|
&& AI_DATA->abilities[opposingBattler] != ABILITY_UNAWARE
|
||||||
&& AI_DATA->abilities[opposingBattler] != ABILITY_KEEN_EYE
|
&& AI_DATA->abilities[opposingBattler] != ABILITY_KEEN_EYE
|
||||||
|
&& (B_ILLUMINATE_EFFECT >= GEN_9 && AI_DATA->abilities[opposingBattler] != ABILITY_ILLUMINATE)
|
||||||
&& !(gBattleMons[battler].status2 & STATUS2_FORESIGHT)
|
&& !(gBattleMons[battler].status2 & STATUS2_FORESIGHT)
|
||||||
&& !(gStatuses3[battler] & STATUS3_MIRACLE_EYED))
|
&& !(gStatuses3[battler] & STATUS3_MIRACLE_EYED))
|
||||||
switchMon = FALSE;
|
switchMon = FALSE;
|
||||||
|
|
|
@ -1996,6 +1996,7 @@ bool32 ShouldLowerAccuracy(u32 battlerAtk, u32 battlerDef, u32 defAbility)
|
||||||
&& defAbility != ABILITY_WHITE_SMOKE
|
&& defAbility != ABILITY_WHITE_SMOKE
|
||||||
&& defAbility != ABILITY_FULL_METAL_BODY
|
&& defAbility != ABILITY_FULL_METAL_BODY
|
||||||
&& defAbility != ABILITY_KEEN_EYE
|
&& defAbility != ABILITY_KEEN_EYE
|
||||||
|
&& (B_ILLUMINATE_EFFECT >= GEN_9 && defAbility != ABILITY_ILLUMINATE)
|
||||||
&& AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET)
|
&& AI_DATA->holdEffects[battlerDef] != HOLD_EFFECT_CLEAR_AMULET)
|
||||||
return TRUE;
|
return TRUE;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -1623,7 +1623,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u
|
||||||
gPotentialItemEffectBattler = battlerDef;
|
gPotentialItemEffectBattler = battlerDef;
|
||||||
accStage = gBattleMons[battlerAtk].statStages[STAT_ACC];
|
accStage = gBattleMons[battlerAtk].statStages[STAT_ACC];
|
||||||
evasionStage = gBattleMons[battlerDef].statStages[STAT_EVASION];
|
evasionStage = gBattleMons[battlerDef].statStages[STAT_EVASION];
|
||||||
if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE)
|
if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE || (B_ILLUMINATE_EFFECT >= GEN_9 && atkAbility == ABILITY_ILLUMINATE))
|
||||||
evasionStage = DEFAULT_STAT_STAGE;
|
evasionStage = DEFAULT_STAT_STAGE;
|
||||||
if (gBattleMoves[move].ignoresTargetDefenseEvasionStages)
|
if (gBattleMoves[move].ignoresTargetDefenseEvasionStages)
|
||||||
evasionStage = DEFAULT_STAT_STAGE;
|
evasionStage = DEFAULT_STAT_STAGE;
|
||||||
|
@ -5058,6 +5058,7 @@ static void Cmd_playstatchangeanimation(void)
|
||||||
&& ability != ABILITY_FULL_METAL_BODY
|
&& ability != ABILITY_FULL_METAL_BODY
|
||||||
&& ability != ABILITY_WHITE_SMOKE
|
&& ability != ABILITY_WHITE_SMOKE
|
||||||
&& !(ability == ABILITY_KEEN_EYE && currStat == STAT_ACC)
|
&& !(ability == ABILITY_KEEN_EYE && currStat == STAT_ACC)
|
||||||
|
&& !(B_ILLUMINATE_EFFECT >= GEN_9 && ability == ABILITY_ILLUMINATE && currStat == STAT_ACC)
|
||||||
&& !(ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK)
|
&& !(ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK)
|
||||||
&& !(ability == ABILITY_BIG_PECKS && currStat == STAT_DEF))
|
&& !(ability == ABILITY_BIG_PECKS && currStat == STAT_DEF))
|
||||||
{
|
{
|
||||||
|
@ -11437,6 +11438,7 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr
|
||||||
}
|
}
|
||||||
else if (!certain
|
else if (!certain
|
||||||
&& ((battlerAbility == ABILITY_KEEN_EYE && statId == STAT_ACC)
|
&& ((battlerAbility == ABILITY_KEEN_EYE && statId == STAT_ACC)
|
||||||
|
|| (B_ILLUMINATE_EFFECT >= GEN_9 && battlerAbility == ABILITY_ILLUMINATE && statId == STAT_ACC)
|
||||||
|| (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK)
|
|| (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK)
|
||||||
|| (battlerAbility == ABILITY_BIG_PECKS && statId == STAT_DEF)))
|
|| (battlerAbility == ABILITY_BIG_PECKS && statId == STAT_DEF)))
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue