SetMoveEffect cleanup (#9514)
Some checks are pending
CI / build (push) Waiting to run
CI / docs_validate (push) Waiting to run
CI / allcontributors (push) Waiting to run

This commit is contained in:
PhallenTree 2026-03-16 11:26:21 +00:00 committed by GitHub
parent 62c4ac5f5a
commit 3bbcc63258
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 358 additions and 318 deletions

View File

@ -156,9 +156,12 @@ BattleScript_EffectShedTail::
switchinevents
end
BattleScript_EffectPsychicNoise::
BattleScript_MoveEffectPsychicNoise::
savetarget
copybyte gBattlerTarget, gEffectBattler
printstring STRINGID_PKMNPREVENTEDFROMHEALING
waitmessage B_WAIT_TIME_LONG
restoretarget
return
BattleScript_EffectFilletAway::
@ -409,18 +412,18 @@ BattleScript_EffectRevivalBlessingSendOut:
switchinevents
goto BattleScript_MoveEnd
BattleScript_StealthRockActivates::
setstealthrock BattleScript_StealthRockActivatesRet
BattleScript_MoveEffectStealthRock::
setstealthrock BattleScript_MoveEffectStealthRockRet
printfromtable gDmgHazardsStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_StealthRockActivatesRet:
BattleScript_MoveEffectStealthRockRet:
return
BattleScript_SpikesActivates::
trysetspikes BattleScript_SpikesActivatesRet
BattleScript_MoveEffectSpikes::
trysetspikes BattleScript_MoveEffectSpikesRet
printfromtable gDmgHazardsStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_SpikesActivatesRet:
BattleScript_MoveEffectSpikesRet:
return
BattleScript_EffectTeatime::
@ -649,11 +652,6 @@ BattleScript_ButHoopaCantUseIt:
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
BattleScript_HyperspaceFuryRemoveProtect::
printstring STRINGID_BROKETHROUGHPROTECTION
waitmessage B_WAIT_TIME_LONG
return
BattleScript_MoveEffectIonDeluge::
printstring STRINGID_IONDELUGEON
waitmessage B_WAIT_TIME_LONG
@ -665,18 +663,19 @@ BattleScript_MoveEffectHaze::
return
BattleScript_MoveEffectLeechSeed::
savetarget
copybyte gBattlerTarget, gEffectBattler
printstring STRINGID_PKMNSEEDED
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
BattleScript_MoveEffectReflect::
printfromtable gReflectLightScreenSafeguardStringIds
waitmessage B_WAIT_TIME_LONG
restoretarget
return
BattleScript_MoveEffectLightScreen::
BattleScript_MoveEffectScreens::
saveattacker
copybyte gBattlerAttacker, gEffectBattler
printfromtable gReflectLightScreenSafeguardStringIds
waitmessage B_WAIT_TIME_LONG
restoreattacker
return
BattleScript_EffectStuffCheeks::
@ -899,6 +898,8 @@ BattleScript_MoveEffectBugBite::
return
BattleScript_MoveEffectCoreEnforcer::
savetarget
copybyte gBattlerTarget, gEffectBattler
setgastroacid BattleScript_CoreEnforcerRet
printstring STRINGID_PKMNSABILITYSUPPRESSED
waitmessage B_WAIT_TIME_LONG
@ -906,6 +907,7 @@ BattleScript_MoveEffectCoreEnforcer::
call BattleScript_TryRevertWeatherform
flushtextbox
BattleScript_CoreEnforcerRet:
restoretarget
return
BattleScript_EffectLaserFocus::
@ -1120,7 +1122,7 @@ BattleScript_EffectAcupressureTry:
goto BattleScript_MoveEnd
BattleScript_MoveEffectFeint::
printstring STRINGID_FELLFORFEINT
printfromtable gBrokeProtectionStringIds
waitmessage B_WAIT_TIME_LONG
return
@ -1246,9 +1248,9 @@ BattleScript_EffectAfterYou::
BattleScript_MoveEffectFlameBurst::
printstring STRINGID_BURSTINGFLAMESHIT
waitmessage B_WAIT_TIME_LONG
healthbarupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
datahpupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
tryfaintmon BS_SCRIPTING
healthbarupdate BS_EFFECT_BATTLER, PASSIVE_HP_UPDATE
datahpupdate BS_EFFECT_BATTLER, PASSIVE_HP_UPDATE
tryfaintmon BS_EFFECT_BATTLER
return
BattleScript_EffectPowerTrick::
@ -2124,7 +2126,7 @@ BattleScript_EffectGravityInternal:
setgravity BattleScript_ButItFailed
attackanimation
waitanimation
BattleScript_EffectGravitySuccess::
BattleScript_MoveEffectGravity::
printstring STRINGID_GRAVITYINTENSIFIED
waitmessage B_WAIT_TIME_LONG
savetarget
@ -2767,11 +2769,6 @@ BattleScript_PrintReflectLightScreenSafeguardString::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
BattleScript_MoveEffectAuroraVeil::
printfromtable gReflectLightScreenSafeguardStringIds
waitmessage B_WAIT_TIME_LONG
return
BattleScript_VoltAbsorbHeal:
copybyte gBattlerAbility, gBattlerTarget
tryhealquarterhealth BS_TARGET, BattleScript_MonMadeMoveUseless @ Check if max hp
@ -3012,8 +3009,11 @@ BattleScript_EffectDestinyBond::
goto BattleScript_MoveEnd
BattleScript_MoveEffectEerieSpell::
savetarget
copybyte gBattlerTarget, gEffectBattler
printstring STRINGID_PKMNREDUCEDPP
waitmessage B_WAIT_TIME_LONG
restoretarget
return
BattleScript_EffectSpite::
@ -3734,12 +3734,15 @@ BattleScript_BreakScreens::
return
BattleScript_StealStats::
savetarget
copybyte gBattlerTarget, gEffectBattler
playmoveanimation MOVE_SPECTRAL_THIEF
waitanimation
printstring STRINGID_SPECTRALTHIEFSTEAL
waitmessage B_WAIT_TIME_LONG
spectralthiefprintstats
flushtextbox
restoretarget
return
BattleScript_EffectYawn::
@ -3752,9 +3755,12 @@ BattleScript_EffectYawn::
waitmessage B_WAIT_TIME_LONG
goto BattleScript_MoveEnd
BattleScript_MoveEffectYawnSide::
BattleScript_MoveEffectYawnFoe::
savetarget
copybyte gBattlerTarget, gEffectBattler
printstring STRINGID_PKMNWASMADEDROWSY
waitmessage B_WAIT_TIME_LONG
restoretarget
return
BattleScript_PrintAbilityMadeIneffective::
@ -5933,6 +5939,13 @@ BattleScript_MoveEffectConfusion::
waitmessage B_WAIT_TIME_LONG
return
BattleScript_MoveEffectRecoilHP25::
saveattacker
copybyte gBattlerAttacker, sBATTLER
call BattleScript_MoveEffectRecoil
restoreattacker
return
BattleScript_MoveEffectRecoil::
healthbarupdate BS_ATTACKER, PASSIVE_HP_UPDATE
datahpupdate BS_ATTACKER, PASSIVE_HP_UPDATE
@ -7813,21 +7826,21 @@ BattleScript_LowerSideStatsEnd:
restoretarget
return
BattleScript_EffectSetWeather::
BattleScript_MoveEffectSetWeather::
playanimation 0, B_ANIM_MAX_SET_WEATHER
printfromtable gMoveWeatherChangeStringIds
waitmessage B_WAIT_TIME_LONG
call BattleScript_ActivateWeatherAbilities
return
BattleScript_EffectSetTerrain::
BattleScript_MoveEffectSetTerrain::
printfromtable gTerrainStringIds
waitmessage B_WAIT_TIME_LONG
playanimation BS_ATTACKER, B_ANIM_RESTORE_BG
call BattleScript_ActivateTerrainEffects
return
BattleScript_DamageNonTypesStarts::
BattleScript_MoveEffectDamageNonTypes::
printfromtable gDamageNonTypesStartStringIds
waitmessage B_WAIT_TIME_LONG
return
@ -7839,15 +7852,20 @@ BattleScript_DamageNonTypesContinues::
hitanimation BS_ATTACKER
goto BattleScript_DoTurnDmg
BattleScript_EffectTryReducePP::
tryspiteppreduce BattleScript_MoveEnd
BattleScript_MoveEffectSpite::
savetarget
copybyte gBattlerTarget, gEffectBattler
tryspiteppreduce BattleScript_MoveEffectSpiteRet
printstring STRINGID_PKMNREDUCEDPP
waitmessage B_WAIT_TIME_LONG
BattleScript_MoveEffectSpiteRet:
restoretarget
return
BattleScript_EffectParalyzeSide::
savetarget
copybyte sBATTLER, gBattlerTarget
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_ParalyzeSideLoop:
jumpifabsent BS_TARGET, BattleScript_ParalyzeSideIncrement
trysetparalysis BattleScript_ParalyzeSideIncrement
@ -7860,7 +7878,8 @@ BattleScript_ParalyzeSideEnd:
BattleScript_EffectPoisonSide::
savetarget
copybyte sBATTLER, gBattlerTarget
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_PoisonSideLoop:
jumpifabsent BS_TARGET, BattleScript_PoisonSideIncrement
trysetpoison BattleScript_PoisonSideIncrement
@ -7873,7 +7892,8 @@ BattleScript_PoisonSideEnd:
BattleScript_EffectPoisonParalyzeSide::
savetarget
copybyte sBATTLER, gBattlerTarget
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_PoisonParalyzeSideLoop:
jumpifabsent BS_TARGET, BattleScript_PoisonParalyzeSideIncrement
trysetpoisonparalysis BattleScript_PoisonParalyzeSideIncrement
@ -7886,7 +7906,8 @@ BattleScript_PoisonParalyzeSideEnd:
BattleScript_EffectEffectSporeSide::
savetarget
copybyte sBATTLER, gBattlerTarget
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_EffectSporeSideLoop:
jumpifabsent BS_TARGET, BattleScript_EffectSporeSideIncrement
tryseteffectspore BattleScript_EffectSporeSideIncrement
@ -7899,11 +7920,12 @@ BattleScript_EffectSporeSideEnd:
BattleScript_EffectConfuseSide::
savetarget
copybyte sBATTLER, gBattlerTarget
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_ConfuseSideLoop:
jumpifabsent BS_TARGET, BattleScript_ConfuseSideIncrement
trysetconfusion BattleScript_ConfuseSideIncrement
volatileanimation BS_EFFECT_BATTLER, VOLATILE_CONFUSION
volatileanimation BS_TARGET, VOLATILE_CONFUSION
BattleScript_ConfuseSidePrintMessage:
printstring STRINGID_PKMNWASCONFUSED
waitmessage B_WAIT_TIME_LONG
@ -7921,11 +7943,12 @@ BattleScript_PrintCoinsScattered:
BattleScript_EffectInfatuateSide::
savetarget
copybyte sBATTLER, gBattlerTarget
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_InfatuateSideLoop:
jumpifabsent BS_TARGET, BattleScript_InfatuateSideIncrement
trysetinfatuation BattleScript_InfatuateSideIncrement
volatileanimation BS_EFFECT_BATTLER, VOLATILE_INFATUATION
volatileanimation BS_TARGET, VOLATILE_INFATUATION
BattleScript_InfatuateSidePrintMessage:
printstring STRINGID_PKMNFELLINLOVE
waitmessage B_WAIT_TIME_LONG
@ -7938,7 +7961,8 @@ BattleScript_InfatuateSideEnd:
BattleScript_EffectTormentSide::
savetarget
copybyte sBATTLER, gBattlerTarget
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_TormentSideLoop:
jumpifabsent BS_TARGET, BattleScript_TormentSideIncrement
trysettorment BattleScript_TormentSideIncrement
@ -7959,7 +7983,8 @@ BattleScript_TormentEnds::
BattleScript_EffectMeanLookSide::
savetarget
copybyte sBATTLER, gBattlerTarget
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_MeanLookSideLoop:
jumpifabsent BS_TARGET, BattleScript_MeanLookSideIncrement
trysetescapeprevention BattleScript_MeanLookSideIncrement
@ -7975,7 +8000,8 @@ BattleScript_MeanLookSideEnd:
BattleScript_EffectRaiseCritAlliesAnim::
savetarget
copybyte gBattlerTarget, gBattlerAttacker
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_RaiseCritAlliesLoop:
jumpifabsent BS_TARGET, BattleScript_RaiseCritAlliesIncrement
setstatchanger STAT_ATK, 0, FALSE @ for animation
@ -7983,7 +8009,7 @@ BattleScript_RaiseCritAlliesLoop:
printstring STRINGID_PKMNGETTINGPUMPED
waitmessage B_WAIT_TIME_LONG
BattleScript_RaiseCritAlliesIncrement:
jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RaiseCritAlliesEnd
jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_RaiseCritAlliesEnd
setallytonexttarget BattleScript_RaiseCritAlliesLoop
BattleScript_RaiseCritAlliesEnd:
restoretarget
@ -7992,7 +8018,8 @@ BattleScript_RaiseCritAlliesEnd:
BattleScript_EffectHealOneSixthAllies::
jumpifteamhealthy BattleScript_MoveEnd
savetarget
copybyte gBattlerTarget, gBattlerAttacker
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_HealOneSixthAlliesLoop:
jumpifabsent BS_TARGET, BattleScript_HealOneSixthAlliesIncrement
tryhealsixthhealth BattleScript_HealOneSixthAlliesIncrement
@ -8001,7 +8028,7 @@ BattleScript_HealOneSixthAlliesLoop:
printstring STRINGID_PKMNREGAINEDHEALTH
waitmessage B_WAIT_TIME_LONG
BattleScript_HealOneSixthAlliesIncrement:
jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_HealOneSixthAlliesEnd
jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_HealOneSixthAlliesEnd
setallytonexttarget BattleScript_HealOneSixthAlliesLoop
BattleScript_HealOneSixthAlliesEnd:
restoretarget
@ -8009,7 +8036,8 @@ BattleScript_HealOneSixthAlliesEnd:
BattleScript_EffectRecycleBerriesAllies::
savetarget
copybyte gBattlerTarget, gBattlerAttacker
copybyte sBATTLER, gEffectBattler
copybyte gBattlerTarget, gEffectBattler
BattleScript_RecycleBerriesAlliesLoop:
jumpifabsent BS_TARGET, BattleScript_RecycleBerriesAlliesIncrement
tryrecycleberry BattleScript_RecycleBerriesAlliesIncrement
@ -8018,13 +8046,13 @@ BattleScript_RecycleBerriesAlliesLoop:
waitmessage B_WAIT_TIME_LONG
swapattackerwithtarget
BattleScript_RecycleBerriesAlliesIncrement:
jumpifbytenotequal gBattlerTarget, gBattlerAttacker, BattleScript_RecycleBerriesAlliesEnd
jumpifbytenotequal gBattlerTarget, sBATTLER, BattleScript_RecycleBerriesAlliesEnd
setallytonexttarget BattleScript_RecycleBerriesAlliesLoop
BattleScript_RecycleBerriesAlliesEnd:
restoretarget
return
BattleScript_EffectSteelsurge::
BattleScript_MoveEffectSteelsurge::
setsteelsurge BattleScript_MoveEnd
printfromtable gDmgHazardsStringIds
waitmessage B_WAIT_TIME_LONG

View File

@ -159,6 +159,7 @@ extern const u8 BattleScript_MoveEffectToxic[];
extern const u8 BattleScript_MoveEffectPayDay[];
extern const u8 BattleScript_MoveEffectWrap[];
extern const u8 BattleScript_MoveEffectConfusion[];
extern const u8 BattleScript_MoveEffectRecoilHP25[];
extern const u8 BattleScript_MoveEffectRecoil[];
extern const u8 BattleScript_FaintAttackerForExplosion[];
extern const u8 BattleScript_MaxHp50Recoil[];
@ -404,7 +405,6 @@ extern const u8 BattleScript_MysteriousAirCurrentBlowsOn[];
extern const u8 BattleScript_AttackWeakenedByStrongWinds[];
extern const u8 BattleScript_BlockedByPrimalWeather[];
extern const u8 BattleScript_PrimalReversion[];
extern const u8 BattleScript_HyperspaceFuryRemoveProtect[];
extern const u8 BattleScript_SelectingNotAllowedMoveGorillaTactics[];
extern const u8 BattleScript_SelectingNotAllowedMoveGorillaTacticsInPalace[];
extern const u8 BattleScript_WanderingSpiritActivates[];
@ -450,12 +450,12 @@ extern const u8 BattleScript_DampPreventsAftermath[];
extern const u8 BattleScript_HealingWishActivates[];
extern const u8 BattleScript_LunarDanceActivates[];
extern const u8 BattleScript_ShellTrapSetUp[];
extern const u8 BattleScript_StealthRockActivates[];
extern const u8 BattleScript_MoveEffectStealthRock[];
extern const u8 BattleScript_CouldntFullyProtect[];
extern const u8 BattleScript_TargetAvoidsAttack[];
extern const u8 BattleScript_TargetAvoidsAttackConsumeFlingItem[];
extern const u8 BattleScript_MoveEffectStockpileWoreOff[];
extern const u8 BattleScript_SpikesActivates[];
extern const u8 BattleScript_MoveEffectSpikes[];
extern const u8 BattleScript_BerserkGeneRet[];
extern const u8 BattleScript_TargetFormChangeWithStringNoPopup[];
extern const u8 BattleScript_DefDown[];
@ -472,7 +472,7 @@ extern const u8 BattleScript_TheRainbowDisappeared[];
extern const u8 BattleScript_HurtByTheSeaOfFire[];
extern const u8 BattleScript_TheSeaOfFireDisappeared[];
extern const u8 BattleScript_TheSwampDisappeared[];
extern const u8 BattleScript_EffectPsychicNoise[];
extern const u8 BattleScript_MoveEffectPsychicNoise[];
extern const u8 BattleScript_AromaVeilProtectsRet[];
extern const u8 BattleScript_LowerAtkSpAtk[];
extern const u8 BattleScript_Terastallization[];
@ -530,16 +530,15 @@ extern const u8 BattleScript_EffectExtremeEvoboost[];
// max moves
extern const u8 BattleScript_EffectRaiseStatAllies[];
extern const u8 BattleScript_EffectLowerStatFoes[];
extern const u8 BattleScript_EffectSetWeather[];
extern const u8 BattleScript_EffectSetTerrain[];
extern const u8 BattleScript_EffectSteelsurge[];
extern const u8 BattleScript_DamageNonTypesStarts[];
extern const u8 BattleScript_MoveEffectSetWeather[];
extern const u8 BattleScript_MoveEffectSetTerrain[];
extern const u8 BattleScript_MoveEffectSteelsurge[];
extern const u8 BattleScript_MoveEffectDamageNonTypes[];
extern const u8 BattleScript_DamageNonTypesContinues[];
extern const u8 BattleScript_MoveEffectDefog[];
extern const u8 BattleScript_MoveEffectAuroraVeil[];
extern const u8 BattleScript_EffectGravitySuccess[];
extern const u8 BattleScript_MoveEffectYawnSide[];
extern const u8 BattleScript_EffectTryReducePP[];
extern const u8 BattleScript_MoveEffectGravity[];
extern const u8 BattleScript_MoveEffectYawnFoe[];
extern const u8 BattleScript_MoveEffectSpite[];
extern const u8 BattleScript_EffectParalyzeSide[];
extern const u8 BattleScript_EffectPoisonSide[];
extern const u8 BattleScript_EffectPoisonParalyzeSide[];
@ -769,8 +768,7 @@ extern const u8 BattleScript_EffectCoaching[];
extern const u8 BattleScript_EffectDecorate[];
extern const u8 BattleScript_EffectStruggle[];
extern const u8 BattleScript_EffectStuffCheeks[];
extern const u8 BattleScript_MoveEffectLightScreen[];
extern const u8 BattleScript_MoveEffectReflect[];
extern const u8 BattleScript_MoveEffectScreens[];
extern const u8 BattleScript_MoveEffectLeechSeed[];
extern const u8 BattleScript_MoveEffectHaze[];
extern const u8 BattleScript_MoveEffectIonDeluge[];

View File

@ -822,6 +822,13 @@ enum ProtectLikeUsedStringID
B_MSG_PROTECTED_TEAM,
};
// gBrokeProtectionStringIds
enum BrokeProtectionStringID
{
B_MSG_FEINT,
B_MSG_HYPERSPACE_FURY,
};
// gRestUsedStringIds
enum RestUsedStringID
{
@ -920,7 +927,7 @@ enum SportsUsedStringID
// gCaughtMonStringIds
enum CaughtMonStringID
{
B_MSG_NO_MESSSAGE_SKIP,
B_MSG_NO_MESSAGE_SKIP,
// "Lanette's" should always follow "someone's"
B_MSG_SENT_SOMEONES_PC,
B_MSG_SENT_LANETTES_PC,

View File

@ -215,12 +215,12 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_HITXTIMES] = COMPOUND_STRING("The Pokémon was hit {B_BUFF1} time(s)!"), //SV has dynamic plural here
[STRINGID_PKMNFELLASLEEP] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} fell asleep!"),
[STRINGID_PKMNMADESLEEP] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_BUFF1} made {B_EFF_NAME_WITH_PREFIX2} sleep!"), //not in gen 5+, ability popup
[STRINGID_PKMNALREADYASLEEP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is already asleep!"),
[STRINGID_PKMNALREADYASLEEP] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} is already asleep!"),
[STRINGID_PKMNALREADYASLEEP2] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is already asleep!"),
[STRINGID_PKMNWASPOISONED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was poisoned!"),
[STRINGID_PKMNPOISONEDBY] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was poisoned by {B_SCR_NAME_WITH_PREFIX2}'s {B_BUFF1}!"), //not in gen 5+, ability popup
[STRINGID_PKMNHURTBYPOISON] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} was hurt by its poisoning!"),
[STRINGID_PKMNALREADYPOISONED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is already poisoned!"),
[STRINGID_PKMNALREADYPOISONED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} is already poisoned!"),
[STRINGID_PKMNBADLYPOISONED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was badly poisoned!"),
[STRINGID_PKMNENERGYDRAINED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} had its energy drained!"),
[STRINGID_PKMNWASBURNED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was burned!"),
@ -234,7 +234,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNWASPARALYZED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} is paralyzed, so it may be unable to move!"),
[STRINGID_PKMNWASPARALYZEDBY] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_BUFF1} paralyzed {B_EFF_NAME_WITH_PREFIX2}, so it may be unable to move!"), //not in gen 5+, ability popup
[STRINGID_PKMNISPARALYZED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} couldn't move because it's paralyzed!"),
[STRINGID_PKMNISALREADYPARALYZED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is already paralyzed!"),
[STRINGID_PKMNISALREADYPARALYZED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} is already paralyzed!"),
[STRINGID_PKMNHEALEDPARALYSIS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} was cured of paralysis!"),
[STRINGID_STATSWONTINCREASE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} won't go any higher!"),
[STRINGID_STATSWONTDECREASE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1} won't go any lower!"),
@ -262,10 +262,10 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNISGLOWING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} became cloaked in a harsh light!"),
[STRINGID_PKMNFLEWHIGH] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} flew up high!"),
[STRINGID_PKMNDUGHOLE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} burrowed its way under the ground!"),
[STRINGID_PKMNSQUEEZEDBYBIND] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} was squeezed by {B_ATK_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNTRAPPEDINVORTEX] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} became trapped in the vortex!"),
[STRINGID_PKMNWRAPPEDBY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} was wrapped by {B_ATK_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNCLAMPED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} clamped down on {B_DEF_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNSQUEEZEDBYBIND] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was squeezed by {B_SCR_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNTRAPPEDINVORTEX] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} became trapped in the vortex!"),
[STRINGID_PKMNWRAPPEDBY] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} was wrapped by {B_SCR_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNCLAMPED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} clamped down on {B_EFF_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNHURTBY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is hurt by {B_BUFF1}!"),
[STRINGID_PKMNFREEDFROM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} was freed from {B_BUFF1}!"),
[STRINGID_PKMNCRASHED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} kept going and crashed!"),
@ -282,7 +282,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNFASTASLEEP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is fast asleep."),
[STRINGID_PKMNWOKEUP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} woke up!"),
[STRINGID_PKMNWOKEUPINUPROAR] = COMPOUND_STRING("The uproar woke {B_EFF_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNCAUSEDUPROAR] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} caused an uproar!"),
[STRINGID_PKMNCAUSEDUPROAR] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} caused an uproar!"),
[STRINGID_PKMNMAKINGUPROAR] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is making an uproar!"),
[STRINGID_PKMNCALMEDDOWN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} calmed down."),
[STRINGID_PKMNSTOCKPILED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} stockpiled {B_BUFF1}!"),
@ -485,7 +485,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_USINGITEMSTATOFPKMNFELL] = COMPOUND_STRING("Using {B_LAST_ITEM}, the {B_BUFF1} of {B_SCR_NAME_WITH_PREFIX2} {B_BUFF2}fell!"),
[STRINGID_PKMNUSEDXTOGETPUMPED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} used the {B_LAST_ITEM} to get pumped!"),
[STRINGID_PKMNSXMADEYUSELESS] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_SCR_ABILITY} made {B_CURRENT_MOVE} useless!"), //not in gen 5+, ability popup
[STRINGID_PKMNTRAPPEDBYSANDTOMB] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} became trapped by the quicksand!"),
[STRINGID_PKMNTRAPPEDBYSANDTOMB] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} became trapped by the quicksand!"),
[STRINGID_EMPTYSTRING4] = COMPOUND_STRING(""),
[STRINGID_ABOOSTED] = COMPOUND_STRING(" a boosted"),
[STRINGID_PKMNSXINTENSIFIEDSUN] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_SCR_ABILITY} intensified the sun's rays!"), //not in gen 5+, ability popup
@ -552,7 +552,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNLEVITATEDONELECTROMAGNETISM] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} levitated with electromagnetism!"),
[STRINGID_PKMNTWISTEDDIMENSIONS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} twisted the dimensions!"),
[STRINGID_POINTEDSTONESFLOAT] = COMPOUND_STRING("Pointed stones float in the air around {B_DEF_TEAM2} team!"),
[STRINGID_TRAPPEDBYSWIRLINGMAGMA] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} became trapped by swirling magma!"),
[STRINGID_TRAPPEDBYSWIRLINGMAGMA] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} became trapped by swirling magma!"),
[STRINGID_VANISHEDINSTANTLY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} vanished instantly!"),
[STRINGID_PROTECTEDTEAM] = COMPOUND_STRING("{B_CURRENT_MOVE} protected {B_ATK_TEAM2} team!"),
[STRINGID_SHAREDITSGUARD] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} shared its guard with the target!"),
@ -564,7 +564,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_FELLSTRAIGHTDOWN] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} fell straight down!"),
[STRINGID_TARGETCHANGEDTYPE] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} transformed into the {B_BUFF1} type!"),
[STRINGID_KINDOFFER] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} took the kind offer!"),
[STRINGID_RESETSTARGETSSTATLEVELS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s stat changes were removed!"),
[STRINGID_RESETSTARGETSSTATLEVELS] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX}'s stat changes were removed!"),
[STRINGID_ALLYSWITCHPOSITION] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} and {B_SCR_NAME_WITH_PREFIX2} switched places!"),
[STRINGID_REFLECTTARGETSTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} became the same type as {B_DEF_NAME_WITH_PREFIX2}!"),
[STRINGID_EMBARGOENDS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} can use items again!"),
@ -639,12 +639,12 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_MEGAEVOEVOLVED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} has Mega Evolved into Mega {B_BUFF1}!"),
[STRINGID_DRASTICALLY] = gText_drastically,
[STRINGID_SEVERELY] = gText_severely,
[STRINGID_INFESTATION] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} has been afflicted with an infestation by {B_ATK_NAME_WITH_PREFIX2}!"),
[STRINGID_INFESTATION] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} has been afflicted with an infestation by {B_SCR_NAME_WITH_PREFIX2}!"),
[STRINGID_NOEFFECTONTARGET] = COMPOUND_STRING("It won't have any effect on {B_DEF_NAME_WITH_PREFIX2}!"),
[STRINGID_BURSTINGFLAMESHIT] = COMPOUND_STRING("The bursting flames hit {B_SCR_NAME_WITH_PREFIX2}!"),
[STRINGID_BURSTINGFLAMESHIT] = COMPOUND_STRING("The bursting flames hit {B_EFF_NAME_WITH_PREFIX2}!"),
[STRINGID_BESTOWITEMGIVING] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} received {B_LAST_ITEM} from {B_ATK_NAME_WITH_PREFIX2}!"),
[STRINGID_THIRDTYPEADDED] = COMPOUND_STRING("{B_BUFF1} type was added to {B_DEF_NAME_WITH_PREFIX2}!"),
[STRINGID_FELLFORFEINT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} fell for the feint!"),
[STRINGID_FELLFORFEINT] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} fell for the feint!"),
[STRINGID_POKEMONCANNOTUSEMOVE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} cannot use {B_CURRENT_MOVE}!"),
[STRINGID_COVEREDINPOWDER] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is covered in powder!"),
[STRINGID_POWDEREXPLODES] = COMPOUND_STRING("When the flame touched the powder on the Pokémon, it exploded!"),
@ -671,7 +671,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_BUGBITE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} stole and ate its target's {B_LAST_ITEM}!"),
[STRINGID_ILLUSIONWOREOFF] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s illusion wore off!"),
[STRINGID_ATTACKERCUREDTARGETSTATUS] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} cured {B_DEF_NAME_WITH_PREFIX2}'s problem!"),
[STRINGID_ATTACKERLOSTFIRETYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} burned itself out!"),
[STRINGID_ATTACKERLOSTFIRETYPE] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} burned itself out!"),
[STRINGID_HEALERCURE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_LAST_ABILITY} cured {B_SCR_NAME_WITH_PREFIX2}'s problem!"),
[STRINGID_SCRIPTINGABILITYSTATRAISE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_SCR_ABILITY} {B_BUFF2}raised its {B_BUFF1}!"),
[STRINGID_RECEIVERABILITYTAKEOVER] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_SCR_ABILITY} was taken over!"),
@ -724,7 +724,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_PKMNREVERTEDTOPRIMAL] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s Primal Reversion! It reverted to its primal state!"),
[STRINGID_BUTPOKEMONCANTUSETHEMOVE] = COMPOUND_STRING("But {B_ATK_NAME_WITH_PREFIX2} can't use the move!"),
[STRINGID_BUTHOOPACANTUSEIT] = COMPOUND_STRING("But {B_ATK_NAME_WITH_PREFIX2} can't use it the way it is now!"),
[STRINGID_BROKETHROUGHPROTECTION] = COMPOUND_STRING("It broke through {B_DEF_NAME_WITH_PREFIX2}'s protection!"),
[STRINGID_BROKETHROUGHPROTECTION] = COMPOUND_STRING("It broke through {B_EFF_NAME_WITH_PREFIX2}'s protection!"),
[STRINGID_ABILITYALLOWSONLYMOVE] = COMPOUND_STRING("{B_ATK_ABILITY} only allows the use of {B_CURRENT_MOVE}!\p"),
[STRINGID_SWAPPEDABILITIES] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} swapped Abilities with its target!"),
[STRINGID_PASTELVEILENTERS] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} was cured of its poisoning!"),
@ -738,7 +738,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_NEUTRALIZINGGASOVER] = COMPOUND_STRING("The effects of the neutralizing gas wore off!"),
[STRINGID_TARGETTOOHEAVY] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is too heavy to be lifted!"),
[STRINGID_PKMNTOOKTARGETHIGH] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} took {B_DEF_NAME_WITH_PREFIX2} into the sky!"),
[STRINGID_PKMNINSNAPTRAP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} got trapped by a snap trap!"),
[STRINGID_PKMNINSNAPTRAP] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} got trapped by a snap trap!"),
[STRINGID_METEORBEAMCHARGING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is overflowing with space power!"),
[STRINGID_HEATUPBEAK] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} started heating up its beak!"),
[STRINGID_COURTCHANGE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} swapped the battle effects affecting each side of the field!"),
@ -756,7 +756,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_ATTACKERHEALEDITSBURN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} cured its burn through sheer determination so you wouldn't worry!"),
[STRINGID_ATTACKERMELTEDTHEICE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} melted the ice with its fiery determination so you wouldn't worry!"),
[STRINGID_TARGETTOUGHEDITOUT] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} toughed it out so you wouldn't feel sad!"),
[STRINGID_ATTACKERLOSTELECTRICTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} used up all its electricity!"),
[STRINGID_ATTACKERLOSTELECTRICTYPE] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} used up all its electricity!"),
[STRINGID_ATTACKERSWITCHEDSTATWITHTARGET] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} switched {B_BUFF1} with its target!"),
[STRINGID_BEINGHITCHARGEDPKMNWITHPOWER] = COMPOUND_STRING("Being hit by {B_CURRENT_MOVE} charged {B_DEF_NAME_WITH_PREFIX2} with power!"),
[STRINGID_SUNLIGHTACTIVATEDABILITY] = COMPOUND_STRING("The harsh sunlight activated {B_SCR_NAME_WITH_PREFIX2}'s Protosynthesis!"),
@ -777,7 +777,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_ITEMRESTOREDSPECIESHEALTH] = COMPOUND_STRING("{B_BUFF1} had its HP restored."),
[STRINGID_ITEMCUREDSPECIESSTATUS] = COMPOUND_STRING("{B_BUFF1} had its status healed!"),
[STRINGID_ITEMRESTOREDSPECIESPP] = COMPOUND_STRING("{B_BUFF1} had its PP restored!"),
[STRINGID_THUNDERCAGETRAPPED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} trapped {B_DEF_NAME_WITH_PREFIX2}!"),
[STRINGID_THUNDERCAGETRAPPED] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} trapped {B_EFF_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNHURTBYFROSTBITE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} was hurt by its frostbite!"),
[STRINGID_PKMNGOTFROSTBITE] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} got frostbite!"),
[STRINGID_PKMNSITEMHEALEDFROSTBITE] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX}'s {B_LAST_ITEM} cured its frostbite!"),
@ -794,20 +794,20 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_ULTRABURSTCOMPLETED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} regained its true power through Ultra Burst!"),
[STRINGID_TEAMGAINEDEXP] = COMPOUND_STRING("The rest of your team gained Exp. Points thanks to the Exp. Share!\p"),
[STRINGID_CURRENTMOVECANTSELECT] = COMPOUND_STRING("{B_BUFF1} cannot be used!\p"),
[STRINGID_TARGETISBEINGSALTCURED] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} is being salt cured!"),
[STRINGID_TARGETISBEINGSALTCURED] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} is being salt cured!"),
[STRINGID_TARGETISHURTBYSALTCURE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is hurt by {B_BUFF1}!"),
[STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX} got covered in sticky candy syrup!"),
[STRINGID_TARGETCOVEREDINSTICKYCANDYSYRUP] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} got covered in sticky candy syrup!"),
[STRINGID_SHARPSTEELFLOATS] = COMPOUND_STRING("Sharp-pointed pieces of steel started floating around {B_DEF_TEAM2} Pokémon!"),
[STRINGID_SHARPSTEELDMG] = COMPOUND_STRING("The sharp steel bit into {B_DEF_NAME_WITH_PREFIX2}!"),
[STRINGID_PKMNBLEWAWAYSHARPSTEEL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} blew away sharp steel!"),
[STRINGID_SHARPSTEELDISAPPEAREDFROMTEAM] = COMPOUND_STRING("The pieces of steel surrounding {B_ATK_TEAM2} Pokémon disappeared!"),
[STRINGID_TEAMTRAPPEDWITHVINES] = COMPOUND_STRING("{B_DEF_TEAM1} Pokémon got trapped with vines!"),
[STRINGID_TEAMTRAPPEDWITHVINES] = COMPOUND_STRING("{B_EFF_TEAM1} Pokémon got trapped with vines!"),
[STRINGID_PKMNHURTBYVINES] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is hurt by G-Max Vine Lash's ferocious beating!"),
[STRINGID_TEAMCAUGHTINVORTEX] = COMPOUND_STRING("{B_DEF_TEAM1} Pokémon got caught in a vortex of water!"),
[STRINGID_TEAMCAUGHTINVORTEX] = COMPOUND_STRING("{B_EFF_TEAM1} Pokémon got caught in a vortex of water!"),
[STRINGID_PKMNHURTBYVORTEX] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is hurt by G-Max Cannonade's vortex!"),
[STRINGID_TEAMSURROUNDEDBYFIRE] = COMPOUND_STRING("{B_DEF_TEAM1} Pokémon were surrounded by fire!"),
[STRINGID_TEAMSURROUNDEDBYFIRE] = COMPOUND_STRING("{B_EFF_TEAM1} Pokémon were surrounded by fire!"),
[STRINGID_PKMNBURNINGUP] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is burning up within G-Max Wildfire's flames!"),
[STRINGID_TEAMSURROUNDEDBYROCKS] = COMPOUND_STRING("{B_DEF_TEAM1} Pokémon became surrounded by rocks!"),
[STRINGID_TEAMSURROUNDEDBYROCKS] = COMPOUND_STRING("{B_EFF_TEAM1} Pokémon became surrounded by rocks!"),
[STRINGID_PKMNHURTBYROCKSTHROWN] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} is hurt by rocks thrown out by G-Max Volcalith!"),
[STRINGID_MOVEBLOCKEDBYDYNAMAX] = COMPOUND_STRING("The move was blocked by the power of Dynamax!"),
[STRINGID_ZEROTOHEROTRANSFORMATION] = COMPOUND_STRING("{B_SCR_NAME_WITH_PREFIX} underwent a heroic transformation!"),
@ -824,7 +824,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_HOSPITALITYRESTORATION] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} drank down all the matcha that {B_SCR_NAME_WITH_PREFIX2} made!"),
[STRINGID_ELECTROSHOTCHARGING] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} absorbed electricity!"),
[STRINGID_ITEMWASUSEDUP] = COMPOUND_STRING("The {B_LAST_ITEM} was used up…"),
[STRINGID_ATTACKERLOSTITSTYPE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} lost its {B_BUFF1} type!"),
[STRINGID_ATTACKERLOSTITSTYPE] = COMPOUND_STRING("{B_EFF_NAME_WITH_PREFIX} lost its {B_BUFF1} type!"),
[STRINGID_SHEDITSTAIL] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} shed its tail to create a decoy!"),
[STRINGID_CLOAKEDINAHARSHLIGHT] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} became cloaked in a harsh light!"),
[STRINGID_SUPERSWEETAROMAWAFTS] = COMPOUND_STRING("A supersweet aroma is wafting from the syrup covering {B_ATK_NAME_WITH_PREFIX2}!"),
@ -1057,6 +1057,12 @@ const u16 gProtectLikeUsedStringIds[] =
[B_MSG_PROTECTED_TEAM] = STRINGID_PROTECTEDTEAM,
};
const u16 gBrokeProtectionStringIds[] =
{
[B_MSG_FEINT] = STRINGID_FELLFORFEINT,
[B_MSG_HYPERSPACE_FURY] = STRINGID_BROKETHROUGHPROTECTION,
};
const u16 gReflectLightScreenSafeguardStringIds[] =
{
[B_MSG_SIDE_STATUS_FAILED] = STRINGID_BUTITFAILED,

View File

@ -1101,7 +1101,7 @@ static enum CancelerResult CancelerMoveFailure(struct BattleContext *ctx)
case EFFECT_FLING:
if (!CanFling(ctx->battlerAtk, ctx->abilityAtk))
battleScript = BattleScript_ButItFailed;
else // set fling item
else // for Fling message
gLastUsedItem = gBattleMons[ctx->battlerAtk].item;
break;
case EFFECT_FAIL_IF_NOT_ARG_TYPE:
@ -3086,7 +3086,7 @@ static enum MoveEndResult MoveEndMoveBlock(void)
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_POINTEDSTONESFLOAT;
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_StealthRockActivates;
gBattlescriptCurrInstr = BattleScript_MoveEffectStealthRock;
result = MOVEEND_RESULT_RUN_SCRIPT;
}
break;
@ -3104,7 +3104,7 @@ static enum MoveEndResult MoveEndMoveBlock(void)
else
{
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_SpikesActivates;
gBattlescriptCurrInstr = BattleScript_MoveEffectSpikes;
result = MOVEEND_RESULT_RUN_SCRIPT;
}
}

View File

@ -2392,21 +2392,8 @@ static inline bool32 IgnoreTargetingForMoveEffect(enum MoveEffect moveEffect) //
case MOVE_EFFECT_ELECTRIC_TERRAIN:
case MOVE_EFFECT_PSYCHIC_TERRAIN:
case MOVE_EFFECT_DEFOG:
case MOVE_EFFECT_REFLECT:
case MOVE_EFFECT_LIGHT_SCREEN:
case MOVE_EFFECT_AURORA_VEIL:
case MOVE_EFFECT_GRAVITY:
case MOVE_EFFECT_HEAL_TEAM:
case MOVE_EFFECT_AROMATHERAPY:
case MOVE_EFFECT_RECYCLE_BERRIES:
case MOVE_EFFECT_ION_DELUGE:
case MOVE_EFFECT_HAZE:
case MOVE_EFFECT_RAISE_TEAM_ATTACK:
case MOVE_EFFECT_RAISE_TEAM_DEFENSE:
case MOVE_EFFECT_RAISE_TEAM_SPEED:
case MOVE_EFFECT_RAISE_TEAM_SP_ATK:
case MOVE_EFFECT_RAISE_TEAM_SP_DEF:
case MOVE_EFFECT_CRIT_PLUS_SIDE:
case MOVE_EFFECT_LOWER_ATTACK_SIDE:
case MOVE_EFFECT_LOWER_DEFENSE_SIDE:
case MOVE_EFFECT_LOWER_SPEED_SIDE:
@ -2465,12 +2452,12 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
bool32 primary = effectFlags & EFFECT_PRIMARY;
bool32 certain = effectFlags & EFFECT_CERTAIN;
bool32 affectsUser = (battlerAtk == effectBattler);
bool32 mirrorArmorReflected = (abilities[gBattlerTarget] == ABILITY_MIRROR_ARMOR);
bool32 mirrorArmorReflected = (!affectsUser && abilities[effectBattler] == ABILITY_MIRROR_ARMOR);
union StatChangeFlags flags = {0};
if (gSpecialStatuses[gBattlerAttacker].parentalBondState == PARENTAL_BOND_1ST_HIT
&& IsBattlerAlive(gBattlerTarget)
&& IsFinalStrikeEffect(moveEffect))
&& IsBattlerAlive(effectBattler)
&& IsFinalStrikeEffect(moveEffect))
{
gBattlescriptCurrInstr = battleScript;
return;
@ -2483,11 +2470,11 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
moveEffect = MOVE_EFFECT_NONE;
else if (!primary
&& IsSheerForceAffected(gCurrentMove, abilities[battlerAtk])
&& !(moveEffect == MOVE_EFFECT_ORDER_UP && gBattleStruct->battlerState[gBattlerAttacker].commanderSpecies != SPECIES_NONE))
&& !(moveEffect == MOVE_EFFECT_ORDER_UP && gBattleStruct->battlerState[battlerAtk].commanderSpecies != SPECIES_NONE))
moveEffect = MOVE_EFFECT_NONE;
else if (!IsBattlerAlive(gEffectBattler) && !IgnoreTargetingForMoveEffect(moveEffect))
else if (!IsBattlerAlive(effectBattler) && !IgnoreTargetingForMoveEffect(moveEffect))
moveEffect = MOVE_EFFECT_NONE;
else if (DoesSubstituteBlockMoveEffectOnTarget(gBattlerAttacker, gEffectBattler, moveEffect))
else if (DoesSubstituteBlockMoveEffectOnTarget(battlerAtk, effectBattler, moveEffect))
moveEffect = MOVE_EFFECT_NONE;
gBattleScripting.moveEffect = moveEffect; // ChangeStatBuffs still needs the global moveEffect
@ -2504,19 +2491,19 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
case MOVE_EFFECT_PARALYSIS:
case MOVE_EFFECT_TOXIC:
case MOVE_EFFECT_FROSTBITE:
if (IsSafeguardProtected(gBattlerAttacker, gEffectBattler, GetBattlerAbility(gBattlerAttacker)) && !primary)
if (IsSafeguardProtected(battlerAtk, effectBattler, abilities[battlerAtk]) && !primary)
{
gBattlescriptCurrInstr = battleScript;
}
else if (CanSetNonVolatileStatus(
gBattlerAttacker,
gEffectBattler,
abilities[gBattlerAttacker],
abilities[gBattlerTarget],
battlerAtk,
effectBattler,
abilities[battlerAtk],
abilities[effectBattler],
moveEffect,
CHECK_TRIGGER))
{
SetNonVolatileStatus(gBattlerAttacker, gEffectBattler, moveEffect, battleScript, TRIGGER_ON_MOVE);
SetNonVolatileStatus(battlerAtk, effectBattler, moveEffect, battleScript, TRIGGER_ON_MOVE);
}
else
{
@ -2524,13 +2511,13 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_CONFUSION:
if (!CanBeConfused(gBattlerAttacker, gEffectBattler))
if (!CanBeConfused(battlerAtk, effectBattler))
{
gBattlescriptCurrInstr = battleScript;
}
else
{
gBattleMons[gEffectBattler].volatiles.confusionTurns = RandomUniform(RNG_CONFUSION_TURNS, 2, B_CONFUSION_TURNS); // 2-5 turns
gBattleMons[effectBattler].volatiles.confusionTurns = RandomUniform(RNG_CONFUSION_TURNS, 2, B_CONFUSION_TURNS); // 2-5 turns
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectConfusion;
}
@ -2543,8 +2530,8 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
if (primary || certain)
{
gLastUsedAbility = ABILITY_INNER_FOCUS;
gBattlerAbility = gEffectBattler;
RecordAbilityBattle(gEffectBattler, ABILITY_INNER_FOCUS);
gBattlerAbility = effectBattler;
RecordAbilityBattle(effectBattler, ABILITY_INNER_FOCUS);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_FlinchPrevention;
}
@ -2553,14 +2540,14 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = battleScript;
}
}
else if (gBattleMons[gEffectBattler].volatiles.flinched)
else if (gBattleMons[effectBattler].volatiles.flinched)
{
gBattlescriptCurrInstr = battleScript;
}
else if (!HasBattlerActedThisTurn(gEffectBattler)
&& GetActiveGimmick(gEffectBattler) != GIMMICK_DYNAMAX)
else if (!HasBattlerActedThisTurn(effectBattler)
&& GetActiveGimmick(effectBattler) != GIMMICK_DYNAMAX)
{
gBattleMons[gEffectBattler].volatiles.flinched = TRUE;
gBattleMons[effectBattler].volatiles.flinched = TRUE;
gBattlescriptCurrInstr = battleScript;
}
else
@ -2569,11 +2556,11 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_UPROAR:
if (!gBattleMons[gEffectBattler].volatiles.uproarTurns)
if (!gBattleMons[effectBattler].volatiles.uproarTurns)
{
gBattleMons[gEffectBattler].volatiles.multipleTurns = TRUE;
gLockedMoves[gEffectBattler] = gCurrentMove;
gBattleMons[gEffectBattler].volatiles.uproarTurns = B_UPROAR_TURNS >= GEN_5
gBattleMons[effectBattler].volatiles.multipleTurns = TRUE;
gLockedMoves[effectBattler] = gCurrentMove;
gBattleMons[effectBattler].volatiles.uproarTurns = B_UPROAR_TURNS >= GEN_5
? B_UPROAR_TURN_COUNT - 2
: RandomUniform(RNG_CONFUSION_TURNS, 2, B_UPROAR_TURN_COUNT);
@ -2587,11 +2574,11 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
case MOVE_EFFECT_PAYDAY:
// Don't scatter coins on the second hit of Parental Bond
if (IsOnPlayerSide(gBattlerAttacker) && gSpecialStatuses[gBattlerAttacker].parentalBondState!= PARENTAL_BOND_2ND_HIT)
if (IsOnPlayerSide(battlerAtk) && gSpecialStatuses[battlerAtk].parentalBondState != PARENTAL_BOND_2ND_HIT)
{
u16 payday = gPaydayMoney;
enum MoveTarget moveTarget = GetBattlerMoveTargetType(gBattlerAttacker, gCurrentMove);
gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 5);
enum MoveTarget moveTarget = GetBattlerMoveTargetType(battlerAtk, gCurrentMove);
gPaydayMoney += (gBattleMons[battlerAtk].level * 5);
if (payday > gPaydayMoney)
gPaydayMoney = 0xFFFF;
@ -2611,7 +2598,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_HAPPY_HOUR:
if (IsOnPlayerSide(gBattlerAttacker) && !gBattleStruct->moneyMultiplierMove)
if (IsOnPlayerSide(battlerAtk) && !gBattleStruct->moneyMultiplierMove)
{
gBattleStruct->moneyMultiplier *= 2;
gBattleStruct->moneyMultiplierMove = 1;
@ -2635,16 +2622,16 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
}
case MOVE_EFFECT_WRAP:
if (gBattleMons[gEffectBattler].volatiles.wrapped)
if (gBattleMons[effectBattler].volatiles.wrapped)
{
gBattlescriptCurrInstr = battleScript;
}
else
{
SetWrapTurns(gEffectBattler, GetBattlerHoldEffect(gBattlerAttacker));
gBattleMons[gEffectBattler].volatiles.wrapped = TRUE;
gBattleMons[gEffectBattler].volatiles.wrappedMove = gCurrentMove;
gBattleMons[gEffectBattler].volatiles.wrappedBy = gBattlerAttacker;
SetWrapTurns(effectBattler, GetBattlerHoldEffect(battlerAtk));
gBattleMons[effectBattler].volatiles.wrapped = TRUE;
gBattleMons[effectBattler].volatiles.wrappedMove = gCurrentMove;
gBattleMons[effectBattler].volatiles.wrappedBy = battlerAtk;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectWrap;
}
@ -2682,7 +2669,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
case MOVE_EFFECT_ACC_MINUS_1:
case MOVE_EFFECT_EVS_MINUS_1:
flags.certain = affectsUser;
if (mirrorArmorReflected && !affectsUser)
if (mirrorArmorReflected)
flags.allowPtr = TRUE;
else
flags.updateMoveEffect = TRUE;
@ -2738,7 +2725,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
case MOVE_EFFECT_ACC_MINUS_2:
case MOVE_EFFECT_EVS_MINUS_2:
flags.certain = affectsUser;
if (mirrorArmorReflected && !affectsUser)
if (mirrorArmorReflected)
flags.allowPtr = TRUE;
else
flags.updateMoveEffect = TRUE;
@ -2765,28 +2752,28 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
if (B_SKIP_RECHARGE == GEN_1 && !IsBattlerAlive(gBattlerTarget)) // Skip recharge if gen 1 and foe is KO'd
break;
gBattleMons[gEffectBattler].volatiles.rechargeTimer = 2;
gLockedMoves[gEffectBattler] = gCurrentMove;
gBattleMons[effectBattler].volatiles.rechargeTimer = 2;
gLockedMoves[effectBattler] = gCurrentMove;
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_RAGE:
gBattleMons[gBattlerAttacker].volatiles.rage = TRUE;
gBattleMons[battlerAtk].volatiles.rage = TRUE;
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_PREVENT_ESCAPE:
if (!gBattleMons[gBattlerTarget].volatiles.escapePrevention) // Do we need to check if the status is already set?
if (!gBattleMons[effectBattler].volatiles.escapePrevention) // Do we need to check if the status is already set?
{
gBattleMons[gBattlerTarget].volatiles.escapePrevention = TRUE;
gBattleMons[gBattlerTarget].volatiles.battlerPreventingEscape = gBattlerAttacker;
gBattleMons[effectBattler].volatiles.escapePrevention = TRUE;
gBattleMons[effectBattler].volatiles.battlerPreventingEscape = battlerAtk;
}
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_NIGHTMARE:
gBattleMons[gBattlerTarget].volatiles.nightmare = TRUE;
gBattleMons[effectBattler].volatiles.nightmare = TRUE;
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_GLAIVE_RUSH:
gBattleMons[gBattlerAttacker].volatiles.glaiveRush = TRUE;
gBattleMons[battlerAtk].volatiles.glaiveRush = TRUE;
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_ALL_STATS_UP:
@ -2812,49 +2799,49 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
case MOVE_EFFECT_RECOIL_HP_25: // Struggle
{
s32 recoil = (gBattleMons[gEffectBattler].maxHP) / 4;
s32 recoil = (gBattleMons[effectBattler].maxHP) / 4;
if (recoil == 0)
recoil = 1;
SetPassiveDamageAmount(gEffectBattler, recoil);
TryUpdateEvolutionTracker(IF_RECOIL_DAMAGE_GE, gBattleStruct->passiveHpUpdate[gBattlerAttacker], MOVE_NONE);
SetPassiveDamageAmount(effectBattler, recoil);
TryUpdateEvolutionTracker(IF_RECOIL_DAMAGE_GE, gBattleStruct->passiveHpUpdate[battlerAtk], MOVE_NONE);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectRecoil;
gBattlescriptCurrInstr = BattleScript_MoveEffectRecoilHP25;
break;
}
case MOVE_EFFECT_THRASH:
// Petal Dance doesn't lock mons that copy the move with Dancer
if (gSpecialStatuses[gEffectBattler].dancerUsedMove || gBattleMons[gEffectBattler].volatiles.rampageTurns)
if (gSpecialStatuses[effectBattler].dancerUsedMove || gBattleMons[effectBattler].volatiles.rampageTurns)
{
gBattlescriptCurrInstr = battleScript;
}
else
{
gBattleMons[gEffectBattler].volatiles.multipleTurns = TRUE;
gLockedMoves[gEffectBattler] = gCurrentMove;
gBattleMons[gEffectBattler].volatiles.rampageTurns = RandomUniform(RNG_RAMPAGE_TURNS, 2, B_RAMPAGE_TURNS);
gBattleMons[effectBattler].volatiles.multipleTurns = TRUE;
gLockedMoves[effectBattler] = gCurrentMove;
gBattleMons[effectBattler].volatiles.rampageTurns = RandomUniform(RNG_RAMPAGE_TURNS, 2, B_RAMPAGE_TURNS);
}
break;
case MOVE_EFFECT_CLEAR_SMOG:
for (i = 0; i < NUM_BATTLE_STATS; i++)
{
if (gBattleMons[gEffectBattler].statStages[i] != DEFAULT_STAT_STAGE)
if (gBattleMons[effectBattler].statStages[i] != DEFAULT_STAT_STAGE)
break;
}
if (IsBattlerTurnDamaged(gEffectBattler, EXCLUDING_SUBSTITUTES) && i != NUM_BATTLE_STATS)
if (IsBattlerTurnDamaged(effectBattler, EXCLUDING_SUBSTITUTES) && i != NUM_BATTLE_STATS)
{
for (i = 0; i < NUM_BATTLE_STATS; i++)
gBattleMons[gEffectBattler].statStages[i] = DEFAULT_STAT_STAGE;
gBattleMons[effectBattler].statStages[i] = DEFAULT_STAT_STAGE;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectClearSmog;
}
break;
case MOVE_EFFECT_FLAME_BURST:
if (IsBattlerAlive(BATTLE_PARTNER(gBattlerTarget))
&& !IsSemiInvulnerable(BATTLE_PARTNER(gBattlerTarget), CHECK_ALL)
&& GetBattlerAbility(BATTLE_PARTNER(gBattlerTarget)) != ABILITY_MAGIC_GUARD)
if (IsBattlerAlive(BATTLE_PARTNER(effectBattler))
&& !IsSemiInvulnerable(BATTLE_PARTNER(effectBattler), CHECK_ALL)
&& GetBattlerAbility(BATTLE_PARTNER(effectBattler)) != ABILITY_MAGIC_GUARD)
{
enum BattlerId partnerTarget = BATTLE_PARTNER(gBattlerTarget);
gBattleScripting.battler = partnerTarget;
enum BattlerId partnerTarget = BATTLE_PARTNER(effectBattler);
gEffectBattler = partnerTarget;
SetPassiveDamageAmount(partnerTarget, gBattleMons[partnerTarget].maxHP / 16);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectFlameBurst;
@ -2862,24 +2849,26 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
case MOVE_EFFECT_FEINT:
i = FALSE; // Remove Protect if any
if (gProtectStructs[gBattlerTarget].protected != PROTECT_NONE
&& gProtectStructs[gBattlerTarget].protected != PROTECT_MAX_GUARD)
if (gProtectStructs[effectBattler].protected != PROTECT_NONE
&& gProtectStructs[effectBattler].protected != PROTECT_MAX_GUARD)
{
gProtectStructs[gBattlerTarget].protected = PROTECT_NONE;
gProtectStructs[effectBattler].protected = PROTECT_NONE;
i = TRUE;
}
if (GetProtectType(gProtectStructs[BATTLE_PARTNER(gBattlerTarget)].protected) == PROTECT_TYPE_SIDE)
if (GetProtectType(gProtectStructs[BATTLE_PARTNER(effectBattler)].protected) == PROTECT_TYPE_SIDE)
{
gProtectStructs[BATTLE_PARTNER(gBattlerTarget)].protected = PROTECT_NONE;
gProtectStructs[BATTLE_PARTNER(effectBattler)].protected = PROTECT_NONE;
i = TRUE;
}
if (i)
{
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectFeint;
if (GetMoveEffect(gCurrentMove) == EFFECT_HYPERSPACE_FURY)
gBattlescriptCurrInstr = BattleScript_HyperspaceFuryRemoveProtect;
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_HYPERSPACE_FURY;
else
gBattlescriptCurrInstr = BattleScript_MoveEffectFeint;
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FEINT;
}
break;
case MOVE_EFFECT_V_CREATE:
@ -2890,7 +2879,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_CORE_ENFORCER:
if (HasBattlerActedThisTurn(gBattlerTarget)
if (HasBattlerActedThisTurn(effectBattler)
&& !NoAliveMonsForEitherParty())
{
BattleScriptPush(battleScript);
@ -2898,61 +2887,62 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_THROAT_CHOP:
if (gBattleMons[gEffectBattler].volatiles.throatChopTimer == 0)
if (gBattleMons[effectBattler].volatiles.throatChopTimer == 0)
{
gBattleMons[gEffectBattler].volatiles.throatChopTimer = B_THROAT_CHOP_TIMER;
gBattleMons[effectBattler].volatiles.throatChopTimer = B_THROAT_CHOP_TIMER;
gBattlescriptCurrInstr = battleScript;
}
break;
case MOVE_EFFECT_INCINERATE:
if (((gBattleMons[gEffectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[gEffectBattler].item <= LAST_BERRY_INDEX)
|| (B_INCINERATE_GEMS >= GEN_6 && GetBattlerHoldEffect(gEffectBattler) == HOLD_EFFECT_GEMS))
&& abilities[gEffectBattler] != ABILITY_STICKY_HOLD)
if (((gBattleMons[effectBattler].item >= FIRST_BERRY_INDEX && gBattleMons[effectBattler].item <= LAST_BERRY_INDEX)
|| (B_INCINERATE_GEMS >= GEN_6 && GetBattlerHoldEffect(effectBattler) == HOLD_EFFECT_GEMS))
&& abilities[effectBattler] != ABILITY_STICKY_HOLD)
{
gLastUsedItem = gBattleMons[gEffectBattler].item;
gBattleMons[gEffectBattler].item = ITEM_NONE;
CheckSetUnburden(gEffectBattler);
gLastUsedItem = gBattleMons[effectBattler].item;
gBattleMons[effectBattler].item = ITEM_NONE;
CheckSetUnburden(effectBattler);
BtlController_EmitSetMonData(gEffectBattler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].item), &gBattleMons[gEffectBattler].item);
MarkBattlerForControllerExec(gEffectBattler);
BtlController_EmitSetMonData(effectBattler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[effectBattler].item), &gBattleMons[effectBattler].item);
MarkBattlerForControllerExec(effectBattler);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectIncinerate;
}
break;
case MOVE_EFFECT_BUG_BITE:
if (GetBattlerHoldEffect(gEffectBattler) == HOLD_EFFECT_JABOCA_BERRY)
if (GetBattlerHoldEffect(effectBattler) == HOLD_EFFECT_JABOCA_BERRY)
{
// jaboca berry triggers instead of being stolen
gBattlescriptCurrInstr = battleScript;
}
else if (GetItemPocket(gBattleMons[gEffectBattler].item) == POCKET_BERRIES
else if (GetItemPocket(gBattleMons[effectBattler].item) == POCKET_BERRIES
&& abilities[effectBattler] != ABILITY_STICKY_HOLD)
{
// target loses their berry
gLastUsedItem = gBattleMons[gEffectBattler].item;
gBattleMons[gEffectBattler].item = ITEM_NONE;
CheckSetUnburden(gEffectBattler);
gLastUsedItem = gBattleMons[effectBattler].item;
gBattleMons[effectBattler].item = ITEM_NONE;
CheckSetUnburden(effectBattler);
BtlController_EmitSetMonData(gEffectBattler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].item), &gBattleMons[gEffectBattler].item);
MarkBattlerForControllerExec(gEffectBattler);
BtlController_EmitSetMonData(effectBattler, B_COMM_TO_CONTROLLER, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[effectBattler].item), &gBattleMons[effectBattler].item);
MarkBattlerForControllerExec(effectBattler);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectBugBite;
}
break;
case MOVE_EFFECT_TRAP_BOTH:
if (!(gBattleMons[gBattlerTarget].volatiles.escapePrevention || gBattleMons[gBattlerAttacker].volatiles.escapePrevention))
if (!(gBattleMons[effectBattler].volatiles.escapePrevention || gBattleMons[battlerAtk].volatiles.escapePrevention))
{
if (!gBattleMons[effectBattler].volatiles.escapePrevention)
gBattleMons[effectBattler].volatiles.battlerPreventingEscape = battlerAtk;
if (!gBattleMons[battlerAtk].volatiles.escapePrevention)
gBattleMons[battlerAtk].volatiles.battlerPreventingEscape = effectBattler;
gBattleMons[effectBattler].volatiles.escapePrevention = TRUE;
gBattleMons[battlerAtk].volatiles.escapePrevention = TRUE;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_BothCanNoLongerEscape;
}
if (!gBattleMons[gBattlerTarget].volatiles.escapePrevention)
gBattleMons[gBattlerTarget].volatiles.battlerPreventingEscape = gBattlerAttacker;
if (!gBattleMons[gBattlerAttacker].volatiles.escapePrevention)
gBattleMons[gBattlerAttacker].volatiles.battlerPreventingEscape = gBattlerTarget;
gBattleMons[gBattlerTarget].volatiles.escapePrevention = TRUE;
gBattleMons[gBattlerAttacker].volatiles.escapePrevention = TRUE;
break;
case MOVE_EFFECT_REMOVE_ARG_TYPE:
{
@ -2971,7 +2961,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = BattleScript_RemoveGenericType;
break;
}
RemoveBattlerType(gEffectBattler, type);
RemoveBattlerType(effectBattler, type);
break;
}
case MOVE_EFFECT_ROUND:
@ -2979,29 +2969,29 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = battleScript;
break;
case MOVE_EFFECT_DIRE_CLAW:
if (!gBattleMons[gEffectBattler].status1)
if (!gBattleMons[effectBattler].status1)
{
static const u8 sDireClawEffects[] = { MOVE_EFFECT_POISON, MOVE_EFFECT_PARALYSIS, MOVE_EFFECT_SLEEP };
SetMoveEffect(battlerAtk, effectBattler, RandomElement(RNG_DIRE_CLAW, sDireClawEffects), battleScript, effectFlags);
}
break;
case MOVE_EFFECT_STEALTH_ROCK:
if (!IsHazardOnSide(GetBattlerSide(gEffectBattler), HAZARDS_STEALTH_ROCK))
if (!IsHazardOnSide(GetBattlerSide(effectBattler), HAZARDS_STEALTH_ROCK))
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_POINTEDSTONESFLOAT;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_StealthRockActivates;
gBattlescriptCurrInstr = BattleScript_MoveEffectStealthRock;
}
break;
case MOVE_EFFECT_SYRUP_BOMB:
if (!gBattleMons[gEffectBattler].volatiles.syrupBomb)
if (!gBattleMons[effectBattler].volatiles.syrupBomb)
{
struct Pokemon *mon = GetBattlerMon(gBattlerAttacker);
struct Pokemon *mon = GetBattlerMon(battlerAtk);
gBattleMons[gEffectBattler].volatiles.syrupBomb = TRUE;
gBattleMons[gEffectBattler].volatiles.stickySyrupedBy = gBattlerAttacker;
gBattleMons[gEffectBattler].volatiles.syrupBombTimer = B_SYRUP_BOMB_TIMER;
gBattleMons[gEffectBattler].volatiles.syrupBombIsShiny = IsMonShiny(mon);
gBattleMons[effectBattler].volatiles.syrupBomb = TRUE;
gBattleMons[effectBattler].volatiles.stickySyrupedBy = battlerAtk;
gBattleMons[effectBattler].volatiles.syrupBombTimer = B_SYRUP_BOMB_TIMER;
gBattleMons[effectBattler].volatiles.syrupBombIsShiny = IsMonShiny(mon);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_SyrupBombActivates;
}
@ -3036,7 +3026,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
case MOVE_EFFECT_PSYCHIC_NOISE:
{
enum BattlerId battler = IsAbilityOnSide(gEffectBattler, ABILITY_AROMA_VEIL);
enum BattlerId battler = IsAbilityOnSide(effectBattler, ABILITY_AROMA_VEIL);
if (battler)
{
@ -3044,19 +3034,19 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_AromaVeilProtectsRet;
}
else if (!gBattleMons[gEffectBattler].volatiles.healBlock)
else if (!gBattleMons[effectBattler].volatiles.healBlock)
{
gBattleMons[gEffectBattler].volatiles.healBlock = TRUE;
gBattleMons[gEffectBattler].volatiles.healBlockTimer = 2;
gBattleMons[effectBattler].volatiles.healBlock = TRUE;
gBattleMons[effectBattler].volatiles.healBlockTimer = 2;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_EffectPsychicNoise;
gBattlescriptCurrInstr = BattleScript_MoveEffectPsychicNoise;
}
break;
}
case MOVE_EFFECT_TERA_BLAST:
if (GetActiveGimmick(gEffectBattler) == GIMMICK_TERA
&& GetBattlerTeraType(gEffectBattler) == TYPE_STELLAR
&& !NoAliveMonsForEitherParty())
if (GetActiveGimmick(effectBattler) == GIMMICK_TERA
&& GetBattlerTeraType(effectBattler) == TYPE_STELLAR
&& !NoAliveMonsForEitherParty())
{
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_LowerAtkSpAtk;
@ -3066,7 +3056,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
{
enum Stat stat = 0;
bool32 commanderAffected = TRUE;
switch (gBattleStruct->battlerState[gEffectBattler].commanderSpecies)
switch (gBattleStruct->battlerState[effectBattler].commanderSpecies)
{
case SPECIES_TATSUGIRI_CURLY:
stat = STAT_ATK;
@ -3117,66 +3107,66 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = BattleScript_MoveEffectHaze;
break;
case MOVE_EFFECT_LEECH_SEED:
if (!IS_BATTLER_OF_TYPE(gBattlerTarget, TYPE_GRASS) && !gBattleMons[gBattlerTarget].volatiles.leechSeed)
if (!IS_BATTLER_OF_TYPE(effectBattler, TYPE_GRASS) && !gBattleMons[effectBattler].volatiles.leechSeed)
{
gBattleMons[gBattlerTarget].volatiles.leechSeed = LEECHSEEDED_BY(gBattlerAttacker);
gBattleMons[effectBattler].volatiles.leechSeed = LEECHSEEDED_BY(battlerAtk);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectLeechSeed;
}
break;
case MOVE_EFFECT_REFLECT:
if (TrySetReflect(gBattlerAttacker))
if (TrySetReflect(effectBattler))
{
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectReflect;
gBattlescriptCurrInstr = BattleScript_MoveEffectScreens;
}
break;
case MOVE_EFFECT_LIGHT_SCREEN:
if (TrySetLightScreen(gBattlerAttacker))
if (TrySetLightScreen(effectBattler))
{
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectLightScreen;
gBattlescriptCurrInstr = BattleScript_MoveEffectScreens;
}
break;
case MOVE_EFFECT_SALT_CURE:
if (!gBattleMons[gBattlerTarget].volatiles.saltCure)
if (!gBattleMons[effectBattler].volatiles.saltCure)
{
gBattleMons[gBattlerTarget].volatiles.saltCure = TRUE;
gBattleMons[effectBattler].volatiles.saltCure = TRUE;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectSaltCure;
}
break;
case MOVE_EFFECT_EERIE_SPELL:
if (gLastMoves[gBattlerTarget] != MOVE_NONE && gLastMoves[gBattlerTarget] != 0xFFFF)
if (gLastMoves[effectBattler] != MOVE_NONE && gLastMoves[effectBattler] != 0xFFFF)
{
u32 i;
for (i = 0; i < MAX_MON_MOVES; i++)
{
if (gLastMoves[gBattlerTarget] == gBattleMons[gBattlerTarget].moves[i])
if (gLastMoves[effectBattler] == gBattleMons[effectBattler].moves[i])
break;
}
if (i != MAX_MON_MOVES && gBattleMons[gBattlerTarget].pp[i] != 0)
if (i != MAX_MON_MOVES && gBattleMons[effectBattler].pp[i] != 0)
{
u32 ppToDeduct = 3;
if (gBattleMons[gBattlerTarget].pp[i] < ppToDeduct)
ppToDeduct = gBattleMons[gBattlerTarget].pp[i];
if (gBattleMons[effectBattler].pp[i] < ppToDeduct)
ppToDeduct = gBattleMons[effectBattler].pp[i];
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBattlerTarget])
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[effectBattler])
ConvertIntToDecimalStringN(gBattleTextBuff2, ppToDeduct, STR_CONV_MODE_LEFT_ALIGN, 1);
PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 1, ppToDeduct)
gBattleMons[gBattlerTarget].pp[i] -= ppToDeduct;
if (!(gBattleMons[gBattlerTarget].volatiles.mimickedMoves & (1u << i))
&& !(gBattleMons[gBattlerTarget].volatiles.transformed))
gBattleMons[effectBattler].pp[i] -= ppToDeduct;
if (!(gBattleMons[effectBattler].volatiles.mimickedMoves & (1u << i))
&& !(gBattleMons[effectBattler].volatiles.transformed))
{
BtlController_EmitSetMonData(gBattlerTarget, B_COMM_TO_CONTROLLER, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[gBattlerTarget].pp[i]), &gBattleMons[gBattlerTarget].pp[i]);
MarkBattlerForControllerExec(gBattlerTarget);
BtlController_EmitSetMonData(effectBattler, B_COMM_TO_CONTROLLER, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[effectBattler].pp[i]), &gBattleMons[effectBattler].pp[i]);
MarkBattlerForControllerExec(effectBattler);
}
if (gBattleMons[gBattlerTarget].pp[i] == 0)
CancelMultiTurnMoves(gBattlerTarget);
if (gBattleMons[effectBattler].pp[i] == 0)
CancelMultiTurnMoves(effectBattler);
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectEerieSpell;
@ -3184,7 +3174,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_FLING:
if (CanFling(gBattlerAttacker, abilities[gBattlerAttacker]) || gBattleStruct->flungItem == FLUNG_ITEM_REMOVED)
if (CanFling(battlerAtk, abilities[battlerAtk]) || gBattleStruct->flungItem == FLUNG_ITEM_REMOVED)
{
enum Item item = ITEM_NONE;
@ -3192,10 +3182,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
{
case FLUNG_ITEM_NONE:
gBattleStruct->flungItem = FLUNG_ITEM_REMOVE;
if (GetMoveEffect(gCurrentMove) != EFFECT_FLING)
item = gBattleStruct->flingItem = gLastUsedItem = gBattleMons[gBattlerAttacker].item;
else
item = gBattleStruct->flingItem = gLastUsedItem;
item = gLastUsedItem = gBattleStruct->flingItem = gBattleMons[battlerAtk].item;
break;
case FLUNG_ITEM_REMOVE:
case FLUNG_ITEM_REMOVED:
@ -3213,7 +3200,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
break;
}
if (IsMoveEffectBlockedByTarget(abilities[gBattlerTarget]))
if (IsMoveEffectBlockedByTarget(abilities[effectBattler]))
{
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_FlingBlockedByShieldDust;
@ -3225,24 +3212,24 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
switch (holdEffect)
{
case HOLD_EFFECT_FLAME_ORB:
SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_BURN, gBattlescriptCurrInstr, NO_FLAGS);
SetMoveEffect(battlerAtk, effectBattler, MOVE_EFFECT_BURN, gBattlescriptCurrInstr, NO_FLAGS);
break;
case HOLD_EFFECT_TOXIC_ORB:
SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_TOXIC, gBattlescriptCurrInstr, NO_FLAGS);
SetMoveEffect(battlerAtk, effectBattler, MOVE_EFFECT_TOXIC, gBattlescriptCurrInstr, NO_FLAGS);
break;
case HOLD_EFFECT_LIGHT_BALL:
SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_PARALYSIS, gBattlescriptCurrInstr, NO_FLAGS);
SetMoveEffect(battlerAtk, effectBattler, MOVE_EFFECT_PARALYSIS, gBattlescriptCurrInstr, NO_FLAGS);
break;
case HOLD_EFFECT_TYPE_POWER:
if (GetItemSecondaryId(item) == TYPE_POISON)
SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_POISON, gBattlescriptCurrInstr, NO_FLAGS);
SetMoveEffect(battlerAtk, effectBattler, MOVE_EFFECT_POISON, gBattlescriptCurrInstr, NO_FLAGS);
break;
case HOLD_EFFECT_FLINCH:
SetMoveEffect(gBattlerAttacker, gBattlerTarget, MOVE_EFFECT_FLINCH, gBattlescriptCurrInstr, NO_FLAGS);
SetMoveEffect(battlerAtk, effectBattler, MOVE_EFFECT_FLINCH, gBattlescriptCurrInstr, NO_FLAGS);
break;
case HOLD_EFFECT_MENTAL_HERB:
case HOLD_EFFECT_WHITE_HERB:
ItemBattleEffects(gBattlerTarget, 0, holdEffect, IsOnFlingActivation);
ItemBattleEffects(effectBattler, 0, holdEffect, IsOnFlingActivation);
break;
default:
break;
@ -3359,11 +3346,11 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
default:
break;
}
if (TryChangeBattleWeather(gBattlerAttacker, weather, ABILITY_NONE))
if (TryChangeBattleWeather(battlerAtk, weather, ABILITY_NONE))
{
gBattleCommunication[MULTISTRING_CHOOSER] = msg;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_EffectSetWeather;
gBattlescriptCurrInstr = BattleScript_MoveEffectSetWeather;
}
break;
}
@ -3394,10 +3381,10 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
default:
break;
}
if (TryChangeBattleTerrain(gBattlerAttacker, statusFlag))
if (TryChangeBattleTerrain(battlerAtk, statusFlag))
{
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_EffectSetTerrain;
gBattlescriptCurrInstr = BattleScript_MoveEffectSetTerrain;
}
break;
}
@ -3406,7 +3393,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
case MOVE_EFFECT_WILDFIRE:
case MOVE_EFFECT_VOLCALITH:
{
u8 side = GetBattlerSide(gBattlerTarget);
u8 side = GetBattlerSide(effectBattler);
if (!(gSideStatuses[side] & SIDE_STATUS_DAMAGE_NON_TYPES))
{
u32 moveType = GetMoveType(gCurrentMove);
@ -3415,22 +3402,22 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gSideTimers[side].damageNonTypesType = moveType;
BattleScriptPush(battleScript);
ChooseDamageNonTypesString(moveType);
gBattlescriptCurrInstr = BattleScript_DamageNonTypesStarts;
gBattlescriptCurrInstr = BattleScript_MoveEffectDamageNonTypes;
}
break;
}
case MOVE_EFFECT_STEELSURGE:
if (!IsHazardOnSide(GetBattlerSide(gBattlerTarget), HAZARDS_STEELSURGE))
if (!IsHazardOnSide(GetBattlerSide(effectBattler), HAZARDS_STEELSURGE))
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SHARPSTEELFLOATS;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_EffectSteelsurge;
gBattlescriptCurrInstr = BattleScript_MoveEffectSteelsurge;
}
break;
case MOVE_EFFECT_DEFOG:
if (gSideStatuses[GetBattlerSide(gBattlerTarget)] & SIDE_STATUS_SCREEN_ANY
|| AreAnyHazardsOnSide(GetBattlerSide(gBattlerTarget))
|| AreAnyHazardsOnSide(GetBattlerSide(gBattlerAttacker))
if (gSideStatuses[GetBattlerSide(effectBattler)] & SIDE_STATUS_SCREEN_ANY
|| AreAnyHazardsOnSide(GetBattlerSide(effectBattler))
|| AreAnyHazardsOnSide(GetBattlerSide(battlerAtk))
|| gFieldStatuses & STATUS_FIELD_TERRAIN_ANY)
{
BattleScriptPush(battleScript);
@ -3438,16 +3425,16 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_AURORA_VEIL:
if (!(gSideStatuses[GetBattlerSide(gBattlerAttacker)] & SIDE_STATUS_AURORA_VEIL))
if (!(gSideStatuses[GetBattlerSide(effectBattler)] & SIDE_STATUS_AURORA_VEIL))
{
gSideStatuses[GetBattlerSide(gBattlerAttacker)] |= SIDE_STATUS_AURORA_VEIL;
if (GetBattlerHoldEffect(gBattlerAttacker) == HOLD_EFFECT_LIGHT_CLAY)
gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 8;
gSideStatuses[GetBattlerSide(effectBattler)] |= SIDE_STATUS_AURORA_VEIL;
if (GetBattlerHoldEffect(effectBattler) == HOLD_EFFECT_LIGHT_CLAY)
gSideTimers[GetBattlerSide(effectBattler)].auroraVeilTimer = 8;
else
gSideTimers[GetBattlerSide(gBattlerAttacker)].auroraVeilTimer = 5;
gSideTimers[GetBattlerSide(effectBattler)].auroraVeilTimer = 5;
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SET_SAFEGUARD;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectAuroraVeil;
gBattlescriptCurrInstr = BattleScript_MoveEffectScreens;
}
break;
case MOVE_EFFECT_GRAVITY:
@ -3456,7 +3443,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gFieldStatuses |= STATUS_FIELD_GRAVITY;
gFieldTimers.gravityTimer = 5;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_EffectGravitySuccess;
gBattlescriptCurrInstr = BattleScript_MoveEffectGravity;
}
break;
case MOVE_EFFECT_SANDBLAST_SIDE:
@ -3464,14 +3451,14 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
// Affects both opponents, but doesn't print strings so we can handle it here.
for (enum BattlerId battler = 0; battler < MAX_BATTLERS_COUNT; ++battler)
{
if (!IsBattlerAlly(battler, gBattlerTarget))
if (!IsBattlerAlly(battler, effectBattler))
continue;
if (!gBattleMons[battler].volatiles.wrapped)
{
gBattleMons[battler].volatiles.wrapped = TRUE;
SetWrapTurns(battler, GetBattlerHoldEffect(gBattlerAttacker));
SetWrapTurns(battler, GetBattlerHoldEffect(battlerAtk));
// The Wrap effect does not expire when the user switches, so here's some cheese.
gBattleMons[battler].volatiles.wrappedBy = gBattlerTarget;
gBattleMons[battler].volatiles.wrappedBy = effectBattler;
if (moveEffect == MOVE_EFFECT_SANDBLAST_SIDE)
gBattleMons[battler].volatiles.wrappedMove = MOVE_SAND_TOMB;
else
@ -3480,21 +3467,21 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_YAWN_FOE:
if (gBattleMons[gBattlerTarget].volatiles.yawn == 0
&& CanBeSlept(gBattlerTarget, gBattlerTarget, abilities[gBattlerTarget], BLOCKED_BY_SLEEP_CLAUSE)
&& RandomPercentage(RNG_G_MAX_SNOOZE, 50))
if (gBattleMons[effectBattler].volatiles.yawn == 0
&& CanBeSlept(battlerAtk, effectBattler, abilities[effectBattler], BLOCKED_BY_SLEEP_CLAUSE)
&& RandomPercentage(RNG_G_MAX_SNOOZE, 50))
{
gBattleMons[gBattlerTarget].volatiles.yawn = 2;
gBattleMons[effectBattler].volatiles.yawn = 2;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_MoveEffectYawnSide;
gBattlescriptCurrInstr = BattleScript_MoveEffectYawnFoe;
}
break;
case MOVE_EFFECT_SPITE:
if (gLastMoves[gBattlerTarget] != MOVE_NONE
&& gLastMoves[gBattlerTarget] != MOVE_UNAVAILABLE)
if (gLastMoves[effectBattler] != MOVE_NONE
&& gLastMoves[effectBattler] != MOVE_UNAVAILABLE)
{
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_EffectTryReducePP;
gBattlescriptCurrInstr = BattleScript_MoveEffectSpite;
}
break;
case MOVE_EFFECT_PARALYZE_SIDE:
@ -3514,10 +3501,10 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = BattleScript_EffectEffectSporeSide;
break;
case MOVE_EFFECT_CONFUSE_PAY_DAY_SIDE:
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && IsOnPlayerSide(battlerAtk))
{
u32 payday = gPaydayMoney;
gPaydayMoney += (gBattleMons[gBattlerAttacker].level * 100);
gPaydayMoney += (gBattleMons[battlerAtk].level * 100);
if (payday > gPaydayMoney)
gPaydayMoney = 0xFFFF;
gBattleCommunication[CURSOR_POSITION] = 1; // add "Coins scattered." message
@ -3540,10 +3527,10 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = BattleScript_EffectMeanLookSide;
break;
case MOVE_EFFECT_CRIT_PLUS_SIDE:
if (gBattleMons[gBattlerAttacker].volatiles.bonusCritStages < 3)
gBattleMons[gBattlerAttacker].volatiles.bonusCritStages++;
if (gBattleMons[BATTLE_PARTNER(gBattlerAttacker)].volatiles.bonusCritStages < 3)
gBattleMons[BATTLE_PARTNER(gBattlerAttacker)].volatiles.bonusCritStages++;
if (gBattleMons[effectBattler].volatiles.bonusCritStages < 3)
gBattleMons[effectBattler].volatiles.bonusCritStages++;
if (gBattleMons[BATTLE_PARTNER(effectBattler)].volatiles.bonusCritStages < 3)
gBattleMons[BATTLE_PARTNER(effectBattler)].volatiles.bonusCritStages++;
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_EffectRaiseCritAlliesAnim;
break;
@ -3565,13 +3552,13 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
case MOVE_EFFECT_REMOVE_STATUS:
{
u32 argStatus = GetMoveEffectArg_Status(gCurrentMove);
if ((gBattleMons[gEffectBattler].status1 & argStatus)
&& (NumAffectedSpreadMoveTargets() > 1 || !IsMoveEffectBlockedByTarget(abilities[gEffectBattler])))
if ((gBattleMons[effectBattler].status1 & argStatus)
&& (NumAffectedSpreadMoveTargets() > 1 || !IsMoveEffectBlockedByTarget(abilities[effectBattler])))
{
gBattleScripting.battler = gEffectBattler;
gBattleMons[gEffectBattler].status1 &= ~(argStatus);
BtlController_EmitSetMonData(gEffectBattler, 0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBattler].status1);
MarkBattlerForControllerExec(gEffectBattler);
gBattleScripting.battler = effectBattler;
gBattleMons[effectBattler].status1 &= ~(argStatus);
BtlController_EmitSetMonData(effectBattler, 0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[effectBattler].status1);
MarkBattlerForControllerExec(effectBattler);
BattleScriptPush(battleScript);
switch (argStatus)
@ -3580,7 +3567,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal;
break;
case STATUS1_SLEEP:
TryDeactivateSleepClause(GetBattlerSide(gEffectBattler), gBattlerPartyIndexes[gBattlerTarget]);
TryDeactivateSleepClause(GetBattlerSide(effectBattler), gBattlerPartyIndexes[effectBattler]);
gBattlescriptCurrInstr = BattleScript_TargetWokeUp;
break;
case STATUS1_BURN:
@ -3605,7 +3592,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
if (B_BRICK_BREAK >= GEN_4)
i = GetBattlerSide(gBattlerTarget); // From Gen 4 onwards, Brick Break can remove screens on the user's side if used on an ally
else
i = GetBattlerSide(gBattlerAttacker) ^ BIT_SIDE;
i = GetBattlerSide(battlerAtk) ^ BIT_SIDE;
if (gSideStatuses[i] & SIDE_STATUS_SCREEN_ANY)
{
@ -3633,26 +3620,26 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
break;
case MOVE_EFFECT_STEAL_STATS:
if (gBattleStruct->moveResultFlags[gBattlerTarget] & MOVE_RESULT_NO_EFFECT)
if (gBattleStruct->moveResultFlags[effectBattler] & MOVE_RESULT_NO_EFFECT)
break;
bool32 contrary = abilities[gBattlerAttacker] == ABILITY_CONTRARY;
bool32 contrary = abilities[battlerAtk] == ABILITY_CONTRARY;
gBattleStruct->stolenStats[0] = 0; // Stats to steal.
gBattleScripting.animArg1 = 0;
for (enum Stat stat = STAT_ATK; stat < NUM_BATTLE_STATS; stat++)
{
if (gBattleMons[gBattlerTarget].statStages[stat] > DEFAULT_STAT_STAGE && gBattleMons[gBattlerAttacker].statStages[stat] != MAX_STAT_STAGE)
if (gBattleMons[effectBattler].statStages[stat] > DEFAULT_STAT_STAGE && gBattleMons[battlerAtk].statStages[stat] != MAX_STAT_STAGE)
{
bool32 byTwo = FALSE;
gBattleStruct->stolenStats[0] |= (1 << (stat));
// Store by how many stages to raise the stat.
gBattleStruct->stolenStats[stat] = gBattleMons[gBattlerTarget].statStages[stat] - DEFAULT_STAT_STAGE;
gBattleStruct->stolenStats[stat] = gBattleMons[effectBattler].statStages[stat] - DEFAULT_STAT_STAGE;
while (gBattleMons[gBattlerAttacker].statStages[stat] + gBattleStruct->stolenStats[stat] > MAX_STAT_STAGE)
while (gBattleMons[battlerAtk].statStages[stat] + gBattleStruct->stolenStats[stat] > MAX_STAT_STAGE)
gBattleStruct->stolenStats[stat]--;
gBattleMons[gBattlerTarget].statStages[stat] = DEFAULT_STAT_STAGE;
gBattleMons[effectBattler].statStages[stat] = DEFAULT_STAT_STAGE;
if (gBattleStruct->stolenStats[stat] >= 2)
byTwo++;
@ -3695,7 +3682,7 @@ void SetMoveEffect(enum BattlerId battlerAtk, enum BattlerId effectBattler, enum
}
else
{
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gBattlerAttacker, gBattleStruct->beatUpSpecies[gBattleStruct->beatUpSlot])
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, battlerAtk, gBattleStruct->beatUpSpecies[gBattleStruct->beatUpSlot])
BattleScriptPush(battleScript);
gBattlescriptCurrInstr = BattleScript_BeatUpAttackMessage;
}
@ -11020,7 +11007,7 @@ static void Cmd_givecaughtmon(void)
}
else
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_NO_MESSSAGE_SKIP;
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_NO_MESSAGE_SKIP;
gBattleCommunication[MULTIUSE_STATE] = GIVECAUGHTMON_GIVE_AND_SHOW_MSG;
}
break;
@ -11154,7 +11141,7 @@ static void Cmd_givecaughtmon(void)
gSelectedMonPartyId = PARTY_SIZE;
gBattleCommunication[MULTIUSE_STATE] = 0;
if (gBattleCommunication[MULTISTRING_CHOOSER] == B_MSG_NO_MESSSAGE_SKIP)
if (gBattleCommunication[MULTISTRING_CHOOSER] == B_MSG_NO_MESSAGE_SKIP)
gBattlescriptCurrInstr = cmd->passInstr;
else
gBattlescriptCurrInstr = cmd->nextInstr;

View File

@ -17593,6 +17593,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.metronomeBanned = TRUE,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_LIGHT_SCREEN,
.self = TRUE,
}),
.battleAnimScript = gBattleAnimMove_GlitzyGlow,
},
@ -17615,6 +17616,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.metronomeBanned = TRUE,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_REFLECT,
.self = TRUE,
}),
.battleAnimScript = gBattleAnimMove_BaddyBad,
},
@ -17682,6 +17684,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.metronomeBanned = TRUE,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_AROMATHERAPY,
.self = TRUE,
}),
.battleAnimScript = gBattleAnimMove_SparklySwirl,
},
@ -22096,6 +22099,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_MaxKnuckle,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RAISE_TEAM_ATTACK,
.self = TRUE,
}),
},
@ -22156,6 +22160,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_MaxOoze,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RAISE_TEAM_SP_ATK,
.self = TRUE,
}),
},
@ -22196,6 +22201,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_MaxAirstream,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RAISE_TEAM_SPEED,
.self = TRUE,
}),
},
@ -22297,6 +22303,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_MaxQuake,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RAISE_TEAM_SP_DEF,
.self = TRUE,
}),
},
@ -22357,6 +22364,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_MaxSteelspike,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RAISE_TEAM_DEFENSE,
.self = TRUE,
}),
},
@ -22497,6 +22505,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxChiStrike,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_CRIT_PLUS_SIDE,
.self = TRUE,
}),
},
@ -22557,6 +22566,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxResonance,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_AURORA_VEIL,
.self = TRUE,
}),
},
@ -22597,6 +22607,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxReplenish,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_RECYCLE_BERRIES,
.self = TRUE,
}),
},
@ -22740,6 +22751,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxGravitas,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_GRAVITY,
.self = TRUE,
}),
},
@ -22820,6 +22832,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxSweetness,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_AROMATHERAPY,
.self = TRUE,
}),
},
@ -22941,6 +22954,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
.battleAnimScript = gBattleAnimMove_GMaxFinale,
.additionalEffects = ADDITIONAL_EFFECTS({
.moveEffect = MOVE_EFFECT_HEAL_TEAM,
.self = TRUE,
}),
},

View File

@ -736,7 +736,7 @@ DOUBLE_BATTLE_TEST("Dynamax: Max Knuckle raises both allies' attack")
{
s16 damage[4];
GIVEN {
ASSUME(MoveHasAdditionalEffect(MOVE_MAX_KNUCKLE, MOVE_EFFECT_RAISE_TEAM_ATTACK));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_MAX_KNUCKLE, MOVE_EFFECT_RAISE_TEAM_ATTACK));
ASSUME(GetMoveCategory(MOVE_CLOSE_COMBAT) == DAMAGE_CATEGORY_PHYSICAL);
ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL);
PLAYER(SPECIES_WOBBUFFET);
@ -1309,7 +1309,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Replenish recycles allies' berries 50\% of th
{
PASSES_RANDOMLY(1, 2, RNG_G_MAX_REPLENISH);
GIVEN {
ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_REPLENISH, MOVE_EFFECT_RECYCLE_BERRIES));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_REPLENISH, MOVE_EFFECT_RECYCLE_BERRIES));
ASSUME(GetItemHoldEffect(ITEM_APICOT_BERRY) == HOLD_EFFECT_SP_DEFENSE_UP);
PLAYER(SPECIES_SNORLAX) { Item(ITEM_APICOT_BERRY); GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MUNCHLAX) { Item(ITEM_APICOT_BERRY); Ability(ABILITY_THICK_FAT); }
@ -1364,7 +1364,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Finale heals allies by 1/6 of their health")
{
s16 damage1, damage2;
GIVEN {
ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_FINALE, MOVE_EFFECT_HEAL_TEAM));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_FINALE, MOVE_EFFECT_HEAL_TEAM));
PLAYER(SPECIES_ALCREMIE) { HP(1); GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MILCERY) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET);
@ -1386,7 +1386,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Sweetness cures allies' status conditions")
{
u32 j;
GIVEN {
ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_SWEETNESS, MOVE_EFFECT_AROMATHERAPY));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_SWEETNESS, MOVE_EFFECT_AROMATHERAPY));
PLAYER(SPECIES_APPLETUN) { Status1(STATUS1_POISON); GigantamaxFactor(TRUE); }
PLAYER(SPECIES_APPLIN) { Status1(STATUS1_POISON); }
PLAYER(SPECIES_APPLIN) { Status1(STATUS1_POISON); }
@ -1440,7 +1440,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Chi Strike boosts allies' crit chance by 1 st
u32 j;
GIVEN {
WITH_CONFIG(B_CRIT_CHANCE, GEN_6);
ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_CHI_STRIKE, MOVE_EFFECT_CRIT_PLUS_SIDE));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_CHI_STRIKE, MOVE_EFFECT_CRIT_PLUS_SIDE));
PLAYER(SPECIES_MACHAMP) { GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MACHOP);
OPPONENT(SPECIES_WOBBUFFET);
@ -1722,7 +1722,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Finale heals allies by 1/6 of their health, e
{
s16 damage1, damage2;
GIVEN {
ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_FINALE, MOVE_EFFECT_HEAL_TEAM));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_FINALE, MOVE_EFFECT_HEAL_TEAM));
PLAYER(SPECIES_ALCREMIE) { HP(1); GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MILCERY) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
@ -1744,7 +1744,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Replenish recycles allies' berries 50\% of th
{
PASSES_RANDOMLY(1, 2, RNG_G_MAX_REPLENISH);
GIVEN {
ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_REPLENISH, MOVE_EFFECT_RECYCLE_BERRIES));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_REPLENISH, MOVE_EFFECT_RECYCLE_BERRIES));
ASSUME(GetItemHoldEffect(ITEM_APICOT_BERRY) == HOLD_EFFECT_SP_DEFENSE_UP);
PLAYER(SPECIES_SNORLAX) { Item(ITEM_APICOT_BERRY); GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MUNCHLAX) { Item(ITEM_APICOT_BERRY); Ability(ABILITY_THICK_FAT); }

View File

@ -5,7 +5,7 @@ ASSUMPTIONS
{
ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL);
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
}
DOUBLE_BATTLE_TEST("Sparkly Swirl cures the entire party")

View File

@ -3,7 +3,7 @@
ASSUMPTIONS
{
ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
}
DOUBLE_BATTLE_TEST("Sparkly Swirl cures the entire party of the user from primary status effects")

View File

@ -3,7 +3,7 @@
ASSUMPTIONS
{
ASSUME(MoveHasAdditionalEffect(MOVE_GLITZY_GLOW, MOVE_EFFECT_LIGHT_SCREEN) == TRUE);
ASSUME(MoveHasAdditionalEffectSelf(MOVE_GLITZY_GLOW, MOVE_EFFECT_LIGHT_SCREEN) == TRUE);
}
SINGLE_BATTLE_TEST("Glitzy Glow sets up Light Screen when it was succesful")

View File

@ -3,7 +3,7 @@
ASSUMPTIONS
{
ASSUME(MoveHasAdditionalEffect(MOVE_BADDY_BAD, MOVE_EFFECT_REFLECT) == TRUE);
ASSUME(MoveHasAdditionalEffectSelf(MOVE_BADDY_BAD, MOVE_EFFECT_REFLECT) == TRUE);
}
SINGLE_BATTLE_TEST("Baddy Bad sets up Reflect when it was succesful")

View File

@ -588,7 +588,7 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL);
ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
ASSUME(B_SLEEP_TURNS >= GEN_5);
PLAYER(SPECIES_ZIGZAGOON);
PLAYER(SPECIES_ZIGZAGOON);
@ -1172,7 +1172,7 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
{
GIVEN {
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_SWEETNESS, MOVE_EFFECT_AROMATHERAPY));
ASSUME(MoveHasAdditionalEffectSelf(MOVE_G_MAX_SWEETNESS, MOVE_EFFECT_AROMATHERAPY));
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
PLAYER(SPECIES_APPLETUN) { GigantamaxFactor(TRUE); }