Adds Illuminate's Gen9 effect (#3482)

Co-authored-by: Eduardo Quezada D'Ottone <eduardo602002@gmail.com>
This commit is contained in:
Bassoonian 2023-10-29 03:22:41 +01:00 committed by GitHub
parent 5087095aae
commit 0dd22305a4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 11 additions and 2 deletions

View file

@ -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.

View file

@ -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:

View file

@ -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;

View file

@ -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;

View file

@ -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)))
{ {