mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-04-26 02:14:22 -05:00
SetMoveEffect cleanup (#9514)
This commit is contained in:
parent
62c4ac5f5a
commit
3bbcc63258
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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[];
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}),
|
||||
},
|
||||
|
||||
|
|
|
|||
|
|
@ -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); }
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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); }
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user