#include "constants/abilities.h" #include "constants/moves.h" #include "constants/songs.h" .include "asm/macros.inc" .include "asm/macros/battle_script.inc" .include "constants/constants.inc" .include "constants/battle_constants.inc" .include "constants/battle_script_constants.inc" .include "constants/battle_text.inc" .section script_data, "aw", %progbits .align 2 gBattleScriptsForMoveEffects:: @ 82D86A8 .4byte BattleScript_EffectHit .4byte BattleScript_EffectSleep .4byte BattleScript_EffectPoisonHit .4byte BattleScript_EffectAbsorb .4byte BattleScript_EffectBurnHit .4byte BattleScript_EffectFreezeHit .4byte BattleScript_EffectParalyzeHit .4byte BattleScript_EffectExplosion .4byte BattleScript_EffectDreamEater .4byte BattleScript_EffectMirrorMove .4byte BattleScript_EffectAttackUp .4byte BattleScript_EffectDefenseUp .4byte BattleScript_EffectSpeedUp .4byte BattleScript_EffectSpecialAttackUp .4byte BattleScript_EffectSpecialDefenseUp .4byte BattleScript_EffectAccuracyUp .4byte BattleScript_EffectEvasionUp .4byte BattleScript_EffectAlwaysHit .4byte BattleScript_EffectAttackDown .4byte BattleScript_EffectDefenseDown .4byte BattleScript_EffectSpeedDown .4byte BattleScript_EffectSpecialAttackDown .4byte BattleScript_EffectSpecialDefenseDown .4byte BattleScript_EffectAccuracyDown .4byte BattleScript_EffectEvasionDown .4byte BattleScript_EffectHaze .4byte BattleScript_EffectBide .4byte BattleScript_EffectRampage .4byte BattleScript_EffectRoar .4byte BattleScript_EffectMultiHit .4byte BattleScript_EffectConversion .4byte BattleScript_EffectFlinchHit .4byte BattleScript_EffectRestoreHp .4byte BattleScript_EffectToxic .4byte BattleScript_EffectPayDay .4byte BattleScript_EffectLightScreen .4byte BattleScript_EffectTriAttack .4byte BattleScript_EffectRest .4byte BattleScript_EffectOHKO .4byte BattleScript_EffectRazorWind .4byte BattleScript_EffectSuperFang .4byte BattleScript_EffectDragonRage .4byte BattleScript_EffectTrap .4byte BattleScript_EffectHighCritical .4byte BattleScript_EffectDoubleHit .4byte BattleScript_EffectRecoilIfMiss .4byte BattleScript_EffectMist .4byte BattleScript_EffectFocusEnergy .4byte BattleScript_EffectRecoil .4byte BattleScript_EffectConfuse .4byte BattleScript_EffectAttackUp2 .4byte BattleScript_EffectDefenseUp2 .4byte BattleScript_EffectSpeedUp2 .4byte BattleScript_EffectSpecialAttackUp2 .4byte BattleScript_EffectSpecialDefenseUp2 .4byte BattleScript_EffectAccuracyUp2 .4byte BattleScript_EffectEvasionUp2 .4byte BattleScript_EffectTransform .4byte BattleScript_EffectAttackDown2 .4byte BattleScript_EffectDefenseDown2 .4byte BattleScript_EffectSpeedDown2 .4byte BattleScript_EffectSpecialAttackDown2 .4byte BattleScript_EffectSpecialDefenseDown2 .4byte BattleScript_EffectAccuracyDown2 .4byte BattleScript_EffectEvasionDown2 .4byte BattleScript_EffectReflect .4byte BattleScript_EffectPoison .4byte BattleScript_EffectParalyze .4byte BattleScript_EffectAttackDownHit .4byte BattleScript_EffectDefenseDownHit .4byte BattleScript_EffectSpeedDownHit .4byte BattleScript_EffectSpecialAttackDownHit .4byte BattleScript_EffectSpecialDefenseDownHit .4byte BattleScript_EffectAccuracyDownHit .4byte BattleScript_EffectEvasionDownHit .4byte BattleScript_EffectSkyAttack .4byte BattleScript_EffectConfuseHit .4byte BattleScript_EffectTwineedle .4byte BattleScript_EffectVitalThrow .4byte BattleScript_EffectSubstitute .4byte BattleScript_EffectRecharge .4byte BattleScript_EffectRage .4byte BattleScript_EffectMimic .4byte BattleScript_EffectMetronome .4byte BattleScript_EffectLeechSeed .4byte BattleScript_EffectSplash .4byte BattleScript_EffectDisable .4byte BattleScript_EffectLevelDamage .4byte BattleScript_EffectPsywave .4byte BattleScript_EffectCounter .4byte BattleScript_EffectEncore .4byte BattleScript_EffectPainSplit .4byte BattleScript_EffectSnore .4byte BattleScript_EffectConversion2 .4byte BattleScript_EffectLockOn .4byte BattleScript_EffectSketch .4byte BattleScript_EffectUnused60//Thaw .4byte BattleScript_EffectSleepTalk .4byte BattleScript_EffectDestinyBond .4byte BattleScript_EffectFlail .4byte BattleScript_EffectSpite .4byte BattleScript_EffectFalseSwipe .4byte BattleScript_EffectHealBell .4byte BattleScript_EffectQuickAttack .4byte BattleScript_EffectTripleKick .4byte BattleScript_EffectThief .4byte BattleScript_EffectMeanLook .4byte BattleScript_EffectNightmare .4byte BattleScript_EffectMinimize .4byte BattleScript_EffectCurse .4byte BattleScript_EffectUnused6e .4byte BattleScript_EffectProtect .4byte BattleScript_EffectSpikes .4byte BattleScript_EffectForesight .4byte BattleScript_EffectPerishSong .4byte BattleScript_EffectSandstorm .4byte BattleScript_EffectEndure .4byte BattleScript_EffectRollout .4byte BattleScript_EffectSwagger .4byte BattleScript_EffectFuryCutter .4byte BattleScript_EffectAttract .4byte BattleScript_EffectReturn .4byte BattleScript_EffectPresent .4byte BattleScript_EffectFrustration .4byte BattleScript_EffectSafeguard .4byte BattleScript_EffectThawHit .4byte BattleScript_EffectMagnitude .4byte BattleScript_EffectBatonPass .4byte BattleScript_EffectPursuit .4byte BattleScript_EffectRapidSpin .4byte BattleScript_EffectSonicboom .4byte BattleScript_EffectUnused83 .4byte BattleScript_EffectMorningSun .4byte BattleScript_EffectSynthesis .4byte BattleScript_EffectMoonlight .4byte BattleScript_EffectHiddenPower .4byte BattleScript_EffectRainDance .4byte BattleScript_EffectSunnyDay .4byte BattleScript_EffectDefenseUpHit .4byte BattleScript_EffectAttackUpHit .4byte BattleScript_EffectAllStatsUpHit .4byte BattleScript_EffectUnused8d .4byte BattleScript_EffectBellyDrum .4byte BattleScript_EffectPsychUp .4byte BattleScript_EffectMirrorCoat .4byte BattleScript_EffectSkullBash .4byte BattleScript_EffectTwister .4byte BattleScript_EffectEarthquake .4byte BattleScript_EffectFutureSight .4byte BattleScript_EffectGust .4byte BattleScript_EffectStomp .4byte BattleScript_EffectSolarbeam .4byte BattleScript_EffectThunder .4byte BattleScript_EffectTeleport .4byte BattleScript_EffectBeatUp .4byte BattleScript_EffectSemiInvulnerable .4byte BattleScript_EffectDefenseCurl .4byte BattleScript_EffectSoftboiled .4byte BattleScript_EffectFakeOut .4byte BattleScript_EffectUproar .4byte BattleScript_EffectStockpile .4byte BattleScript_EffectSpitUp .4byte BattleScript_EffectSwallow .4byte BattleScript_EffectUnusedA3 .4byte BattleScript_EffectHail .4byte BattleScript_EffectTorment .4byte BattleScript_EffectFlatter .4byte BattleScript_EffectWillOWisp .4byte BattleScript_EffectMemento .4byte BattleScript_EffectFacade .4byte BattleScript_EffectFocusPunch .4byte BattleScript_EffectSmellingsalt .4byte BattleScript_EffectFollowMe .4byte BattleScript_EffectNaturePower .4byte BattleScript_EffectCharge .4byte BattleScript_EffectTaunt .4byte BattleScript_EffectHelpingHand .4byte BattleScript_EffectTrick .4byte BattleScript_EffectRolePlay .4byte BattleScript_EffectWish .4byte BattleScript_EffectAssist .4byte BattleScript_EffectIngrain .4byte BattleScript_EffectSuperpower .4byte BattleScript_EffectMagicCoat .4byte BattleScript_EffectRecycle .4byte BattleScript_EffectRevenge .4byte BattleScript_EffectBrickBreak .4byte BattleScript_EffectYawn .4byte BattleScript_EffectKnockOff .4byte BattleScript_EffectEndeavor .4byte BattleScript_EffectEruption .4byte BattleScript_EffectSkillSwap .4byte BattleScript_EffectImprison .4byte BattleScript_EffectRefresh .4byte BattleScript_EffectGrudge .4byte BattleScript_EffectSnatch .4byte BattleScript_EffectLowKick .4byte BattleScript_EffectSecretPower .4byte BattleScript_EffectDoubleEdge .4byte BattleScript_EffectTeeterDance .4byte BattleScript_EffectBlazeKick .4byte BattleScript_EffectMudSport .4byte BattleScript_EffectPoisonFang .4byte BattleScript_EffectWeatherBall .4byte BattleScript_EffectOverheat .4byte BattleScript_EffectTickle .4byte BattleScript_EffectCosmicPower .4byte BattleScript_EffectSkyUppercut .4byte BattleScript_EffectBulkUp .4byte BattleScript_EffectPoisonTail .4byte BattleScript_EffectWaterSport .4byte BattleScript_EffectCalmMind .4byte BattleScript_EffectDragonDance .4byte BattleScript_EffectCamouflage BattleScript_EffectSpeedUp:: BattleScript_EffectSpecialDefenseUp:: BattleScript_EffectAccuracyUp:: BattleScript_EffectAlwaysHit:: BattleScript_EffectSpecialAttackDown:: BattleScript_EffectSpecialDefenseDown:: BattleScript_EffectHighCritical:: BattleScript_EffectAccuracyUp2:: BattleScript_EffectEvasionUp2:: BattleScript_EffectSpecialAttackDown2:: BattleScript_EffectAccuracyDown2:: BattleScript_EffectEvasionDown2:: BattleScript_EffectEvasionDownHit:: BattleScript_EffectVitalThrow:: BattleScript_EffectUnused60:: BattleScript_EffectFalseSwipe:: BattleScript_EffectQuickAttack:: BattleScript_EffectUnused6e:: BattleScript_EffectPursuit:: BattleScript_EffectUnused83:: BattleScript_EffectUnused8d:: BattleScript_EffectUnusedA3:: BattleScript_EffectHit:: jumpifnotmove MOVE_SURF, BattleScript_HitFromAtkCanceler jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_HitFromAtkCanceler orword gHitMarker, HITMARKER_IGNORE_UNDERWATER setbyte sDMG_MULTIPLIER, 0x2 BattleScript_HitFromAtkCanceler:: attackcanceler BattleScript_HitFromAccCheck:: accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE BattleScript_HitFromAtkString:: attackstring ppreduce BattleScript_HitFromCritCalc:: critcalc damagecalc typecalc adjustnormaldamage BattleScript_HitFromAtkAnimation:: attackanimation waitanimation effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET critmessage waitmessage 0x40 resultmessage waitmessage 0x40 seteffectwithchance tryfaintmon TARGET, FALSE, NULL BattleScript_MoveEnd:: setbyte sMOVEEND_STATE, 0x0 moveend 0x0, 0x0 end BattleScript_MakeMoveMissed:: orbyte gMoveResultFlags, MOVE_RESULT_MISSED BattleScript_PrintMoveMissed:: attackstring ppreduce BattleScript_MoveMissedPause:: pause 0x20 BattleScript_MoveMissed:: effectivenesssound resultmessage waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSleep:: attackcanceler attackstring ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, STATUS1_SLEEP, BattleScript_AlreadyAsleep jumpifcantmakeasleep BattleScript_CantMakeAsleep jumpifstatus TARGET, STATUS1_ANY, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_SLEEP seteffectprimary goto BattleScript_MoveEnd BattleScript_AlreadyAsleep:: various23 ATTACKER pause 0x20 printstring STRINGID_PKMNALREADYASLEEP waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_WasntAffected:: pause 0x20 printstring STRINGID_PKMNWASNTAFFECTED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_CantMakeAsleep:: pause 0x20 printfromtable gUproarAwakeStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectPoisonHit:: BattleScript_EffectPoisonTail:: setmoveeffect EFFECT_POISON goto BattleScript_EffectHit BattleScript_EffectAbsorb:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce critcalc damagecalc typecalc adjustnormaldamage attackanimation waitanimation effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET critmessage waitmessage 0x40 resultmessage waitmessage 0x40 negativedamage orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE jumpifability TARGET, ABILITY_LIQUID_OOZE, BattleScript_AbsorbLiquidOoze setbyte cMULTISTRING_CHOOSER, 0x0 goto BattleScript_AbsorbUpdateHp BattleScript_AbsorbLiquidOoze:: manipulatedamage ATK80_DMG_CHANGE_SIGN setbyte cMULTISTRING_CHOOSER, 0x1 BattleScript_AbsorbUpdateHp:: healthbarupdate ATTACKER datahpupdate ATTACKER jumpifmovehadnoeffect BattleScript_AbsorbTryFainting printfromtable gLeechSeedDrainStringIds waitmessage 0x40 BattleScript_AbsorbTryFainting:: tryfaintmon ATTACKER, FALSE, NULL tryfaintmon TARGET, FALSE, NULL goto BattleScript_MoveEnd BattleScript_EffectBurnHit:: BattleScript_EffectBlazeKick:: setmoveeffect EFFECT_BURN goto BattleScript_EffectHit BattleScript_EffectFreezeHit:: setmoveeffect EFFECT_FREEZE goto BattleScript_EffectHit BattleScript_EffectParalyzeHit:: setmoveeffect EFFECT_PARALYSIS goto BattleScript_EffectHit BattleScript_EffectExplosion:: attackcanceler attackstring ppreduce faintifabilitynotdamp setatkhptozero waitstate jumpifbyte NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_82D8B94 call BattleScript_82D8BEA goto BattleScript_82D8B96 BattleScript_82D8B94:: attackanimation waitanimation BattleScript_82D8B96:: movevaluescleanup critcalc damagecalc typecalc adjustnormaldamage accuracycheck BattleScript_82D8BCF, ACC_CURR_MOVE effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET critmessage waitmessage 0x40 resultmessage waitmessage 0x40 tryfaintmon TARGET, FALSE, NULL setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 jumpifnexttargetvalid BattleScript_82D8B96 tryfaintmon ATTACKER, FALSE, NULL end BattleScript_82D8BCF:: effectivenesssound resultmessage waitmessage 0x40 setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 jumpifnexttargetvalid BattleScript_82D8B96 tryfaintmon ATTACKER, FALSE, NULL end BattleScript_82D8BEA:: bicbyte gMoveResultFlags, MOVE_RESULT_MISSED attackanimation waitanimation orbyte gMoveResultFlags, MOVE_RESULT_MISSED return BattleScript_EffectDreamEater:: attackcanceler jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82D8C0E jumpifstatus TARGET, STATUS1_SLEEP, BattleScript_82D8C18 BattleScript_82D8C0E:: attackstring ppreduce waitmessage 0x40 goto BattleScript_WasntAffected BattleScript_82D8C18:: accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce critcalc damagecalc typecalc adjustnormaldamage attackanimation waitanimation effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET critmessage waitmessage 0x40 resultmessage waitmessage 0x40 negativedamage orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate ATTACKER datahpupdate ATTACKER jumpifmovehadnoeffect BattleScript_DreamEaterTryFaintEnd printstring STRINGID_PKMNDREAMEATEN waitmessage 0x40 BattleScript_DreamEaterTryFaintEnd:: tryfaintmon TARGET, FALSE, NULL goto BattleScript_MoveEnd BattleScript_EffectMirrorMove:: attackcanceler attackstring pause 0x40 trymirrormove ppreduce orbyte gMoveResultFlags, MOVE_RESULT_FAILED printstring STRINGID_MIRRORMOVEFAILED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectAttackUp:: setstatchanger ATK, 1, FALSE goto BattleScript_EffectStatUp BattleScript_EffectDefenseUp:: setstatchanger DEF, 1, FALSE goto BattleScript_EffectStatUp BattleScript_EffectSpecialAttackUp:: setstatchanger SPATK, 1, FALSE goto BattleScript_EffectStatUp BattleScript_EffectEvasionUp:: setstatchanger EVASION, 1, FALSE BattleScript_EffectStatUp:: attackcanceler BattleScript_EffectStatUpAfterAtkCanceler:: attackstring ppreduce statbuffchange AFFECTS_USER | 0x1, BattleScript_StatUpEnd jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpAttackAnim pause 0x20 goto BattleScript_StatUpPrintString BattleScript_StatUpAttackAnim:: attackanimation waitanimation BattleScript_StatUpDoAnim:: setgraphicalstatchangevalues playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 BattleScript_StatUpPrintString:: printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_StatUpEnd:: goto BattleScript_MoveEnd BattleScript_StatUp:: playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1 printfromtable gStatUpStringIds waitmessage 0x40 return BattleScript_EffectAttackDown:: setstatchanger ATK, 1, TRUE goto BattleScript_EffectStatDown BattleScript_EffectDefenseDown:: setstatchanger DEF, 1, TRUE goto BattleScript_EffectStatDown BattleScript_EffectSpeedDown:: setstatchanger SPEED, 1, TRUE goto BattleScript_EffectStatDown BattleScript_EffectAccuracyDown:: setstatchanger ACC, 1, TRUE goto BattleScript_EffectStatDown BattleScript_EffectEvasionDown:: setstatchanger EVASION, 1, TRUE BattleScript_EffectStatDown:: attackcanceler jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailedAtkStringPpReduce accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce statbuffchange 0x1, BattleScript_StatDownEnd jumpifbyte LESS_THAN, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatDownDoAnim jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x3, BattleScript_StatDownEnd pause 0x20 goto BattleScript_StatDownPrintString BattleScript_StatDownDoAnim:: attackanimation waitanimation setgraphicalstatchangevalues playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 BattleScript_StatDownPrintString:: printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_StatDownEnd:: goto BattleScript_MoveEnd BattleScript_StatDown:: playanimation EFFECT_BANK, ANIM_STATS_CHANGE, sANIM_ARG1 printfromtable gStatDownStringIds waitmessage 0x40 return BattleScript_EffectHaze:: attackcanceler attackstring ppreduce attackanimation waitanimation normalisebuffs printstring STRINGID_STATCHANGESGONE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectBide:: attackcanceler attackstring ppreduce attackanimation waitanimation orword gHitMarker, HITMARKER_x8000000 setbide goto BattleScript_MoveEnd BattleScript_EffectRampage:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_82D8DAE ppreduce BattleScript_82D8DAE:: confuseifrepeatingattackends goto BattleScript_HitFromCritCalc BattleScript_EffectRoar:: attackcanceler attackstring ppreduce jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut jumpifstatus3 TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed forcerandomswitch BattleScript_ButItFailed BattleScript_EffectMultiHit:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce setmultihitcounter 0x0 initmultihitstring setbyte sMULTIHIT_EFFECT, 0x0 BattleScript_MultiHitLoop:: jumpifhasnohp ATTACKER, BattleScript_MultiHitEnd jumpifhasnohp TARGET, BattleScript_MultiHitPrintStrings jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoMultiHit jumpifstatus ATTACKER, STATUS1_SLEEP, BattleScript_MultiHitPrintStrings BattleScript_DoMultiHit:: movevaluescleanup copybyte cEFFECT_CHOOSER, sMULTIHIT_EFFECT critcalc damagecalc typecalc jumpifmovehadnoeffect BattleScript_MultiHitNoMoreHits adjustnormaldamage attackanimation waitanimation effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET critmessage waitmessage 0x40 printstring STRINGID_EMPTYSTRING3 waitmessage 0x1 addbyte sMULTIHIT_STRING + 4, 0x1 setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 jumpifbyte COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_MultiHitPrintStrings decrementmultihit BattleScript_MultiHitLoop goto BattleScript_MultiHitPrintStrings BattleScript_MultiHitNoMoreHits:: pause 0x20 BattleScript_MultiHitPrintStrings:: resultmessage waitmessage 0x40 jumpifmovehadnoeffect BattleScript_MultiHitEnd copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6 printstring STRINGID_HITXTIMES waitmessage 0x40 BattleScript_MultiHitEnd:: seteffectwithchance tryfaintmon TARGET, FALSE, NULL setbyte sMOVEEND_STATE, 0x2 moveend 0x1, 0x0 setbyte sMOVEEND_STATE, 0x4 moveend 0x0, 0x0 end BattleScript_EffectConversion:: attackcanceler attackstring ppreduce tryconversiontypechange BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNCHANGEDTYPE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectFlinchHit:: setmoveeffect EFFECT_FLINCH goto BattleScript_EffectHit BattleScript_EffectRestoreHp:: attackcanceler attackstring ppreduce tryhealhalfhealth BattleScript_AlreadyAtFullHp, ATTACKER attackanimation waitanimation orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate ATTACKER datahpupdate ATTACKER printstring STRINGID_PKMNREGAINEDHEALTH waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectToxic:: attackcanceler attackstring ppreduce jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned jumpifstatus TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned jumpifstatus TARGET, STATUS1_ANY, BattleScript_ButItFailed jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_TOXIC seteffectprimary resultmessage waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_AlreadyPoisoned:: various23 ATTACKER pause 0x40 printstring STRINGID_PKMNALREADYPOISONED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_ImmunityProtected:: copybyte gEffectBank, gBankDefender setbyte cMULTISTRING_CHOOSER, 0x0 call BattleScript_PSNPrevention goto BattleScript_MoveEnd BattleScript_EffectPayDay:: setmoveeffect EFFECT_PAYDAY goto BattleScript_EffectHit BattleScript_EffectLightScreen:: attackcanceler attackstring ppreduce setlightscreen goto BattleScript_PrintReflectLightScreenSafeguardString BattleScript_EffectTriAttack:: setmoveeffect EFFECT_TRI_ATTACK goto BattleScript_EffectHit BattleScript_EffectRest:: attackcanceler attackstring ppreduce jumpifstatus ATTACKER, STATUS1_SLEEP, BattleScript_RestIsAlreadyAsleep jumpifcantmakeasleep BattleScript_RestCantSleep trysetrest BattleScript_AlreadyAtFullHp pause 0x20 printfromtable gRestUsedStringIds waitmessage 0x40 updatestatusicon ATTACKER waitstate goto BattleScript_PresentHealTarget BattleScript_RestCantSleep:: pause 0x40 printfromtable gUproarAwakeStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_RestIsAlreadyAsleep:: various23 ATTACKER pause 0x20 printstring STRINGID_PKMNALREADYASLEEP2 waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectOHKO:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON typecalc jumpifmovehadnoeffect BattleScript_HitFromAtkAnimation tryKO BattleScript_KOFail trysetdestinybondtohappen goto BattleScript_HitFromAtkAnimation BattleScript_KOFail:: pause 0x40 printfromtable gKOFailedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectRazorWind:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn setbyte sTWOTURN_STRINGID, 0x0 call BattleScriptFirstChargingTurn goto BattleScript_MoveEnd BattleScript_TwoTurnMovesSecondTurn:: attackcanceler setmoveeffect EFFECT_CHARGING setbyte sANIM_TURN, 0x1 clearstatusfromeffect ATTACKER orword gHitMarker, HITMARKER_NO_PPDEDUCT jumpifnotmove MOVE_SKY_ATTACK, BattleScript_HitFromAccCheck setmoveeffect EFFECT_FLINCH goto BattleScript_HitFromAccCheck BattleScriptFirstChargingTurn:: attackcanceler printstring STRINGID_EMPTYSTRING3 ppreduce attackanimation waitanimation orword gHitMarker, HITMARKER_x8000000 setmoveeffect EFFECT_CHARGING | AFFECTS_USER seteffectprimary copybyte cMULTISTRING_CHOOSER, sTWOTURN_STRINGID printfromtable gFirstTurnOfTwoStringIds waitmessage 0x40 return BattleScript_EffectSuperFang:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce typecalc bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE damagetohalftargethp goto BattleScript_HitFromAtkAnimation BattleScript_EffectDragonRage:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce typecalc bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE setword gBattleMoveDamage, 40 adjustsetdamage goto BattleScript_HitFromAtkAnimation BattleScript_EffectTrap:: jumpifnotmove MOVE_WHIRLPOOL, BattleScript_DoWrapEffect jumpifnostatus3 TARGET, STATUS3_UNDERWATER, BattleScript_DoWrapEffect orword gHitMarker, HITMARKER_IGNORE_UNDERWATER setbyte sDMG_MULTIPLIER, 0x2 BattleScript_DoWrapEffect:: setmoveeffect EFFECT_WRAP goto BattleScript_EffectHit BattleScript_EffectDoubleHit:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce setmultihitcounter 0x2 initmultihitstring setbyte sMULTIHIT_EFFECT, 0x0 goto BattleScript_MultiHitLoop BattleScript_EffectRecoilIfMiss:: attackcanceler accuracycheck BattleScript_MoveMissedDoDamage, ACC_CURR_MOVE goto BattleScript_HitFromAtkString BattleScript_MoveMissedDoDamage:: attackstring ppreduce pause 0x40 resultmessage waitmessage 0x40 jumpifbyte COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd printstring STRINGID_PKMNCRASHED waitmessage 0x40 damagecalc typecalc adjustnormaldamage manipulatedamage ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP bicbyte gMoveResultFlags, MOVE_RESULT_MISSED orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate ATTACKER datahpupdate ATTACKER tryfaintmon ATTACKER, FALSE, NULL orbyte gMoveResultFlags, MOVE_RESULT_MISSED goto BattleScript_MoveEnd BattleScript_EffectMist:: attackcanceler attackstring ppreduce setmist attackanimation waitanimation printfromtable gMistUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectFocusEnergy:: attackcanceler attackstring ppreduce jumpifstatus2 ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed setfocusenergy attackanimation waitanimation printfromtable gFocusEnergyUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectRecoil:: setmoveeffect EFFECT_RECOIL_25 | AFFECTS_USER | CERTAIN jumpifnotmove MOVE_STRUGGLE, BattleScript_EffectHit incrementgamestat 0x1B goto BattleScript_EffectHit BattleScript_EffectConfuse:: attackcanceler attackstring ppreduce jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_AlreadyConfused accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_CONFUSION seteffectprimary resultmessage waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_AlreadyConfused:: various23 ATTACKER pause 0x20 printstring STRINGID_PKMNALREADYCONFUSED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectAttackUp2:: setstatchanger ATK, 2, FALSE goto BattleScript_EffectStatUp BattleScript_EffectDefenseUp2:: setstatchanger DEF, 2, FALSE goto BattleScript_EffectStatUp BattleScript_EffectSpeedUp2:: setstatchanger SPEED, 2, FALSE goto BattleScript_EffectStatUp BattleScript_EffectSpecialAttackUp2:: setstatchanger SPATK, 2, FALSE goto BattleScript_EffectStatUp BattleScript_EffectSpecialDefenseUp2:: setstatchanger SPDEF, 2, FALSE goto BattleScript_EffectStatUp BattleScript_EffectTransform:: attackcanceler attackstring ppreduce transformdataexecution attackanimation waitanimation printfromtable gTransformUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectAttackDown2:: setstatchanger ATK, 2, TRUE goto BattleScript_EffectStatDown BattleScript_EffectDefenseDown2:: setstatchanger DEF, 2, TRUE goto BattleScript_EffectStatDown BattleScript_EffectSpeedDown2:: setstatchanger SPEED, 2, TRUE goto BattleScript_EffectStatDown BattleScript_EffectSpecialDefenseDown2:: setstatchanger SPDEF, 2, TRUE goto BattleScript_EffectStatDown BattleScript_EffectReflect:: attackcanceler attackstring ppreduce setreflect BattleScript_PrintReflectLightScreenSafeguardString:: attackanimation waitanimation printfromtable gReflectLightScreenSafeguardStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectPoison:: attackcanceler attackstring ppreduce jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned jumpifstatus TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected jumpifstatus TARGET, STATUS1_ANY, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_POISON seteffectprimary resultmessage waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectParalyze:: attackcanceler attackstring ppreduce jumpifability TARGET, ABILITY_LIMBER, BattleScript_LimberProtected jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed typecalc jumpifmovehadnoeffect BattleScript_ButItFailed jumpifstatus TARGET, STATUS1_PARALYSIS, BattleScript_AlreadyParalyzed jumpifstatus TARGET, STATUS1_ANY, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_PARALYSIS seteffectprimary resultmessage waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_AlreadyParalyzed:: various23 ATTACKER pause 0x20 printstring STRINGID_PKMNISALREADYPARALYZED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_LimberProtected:: copybyte gEffectBank, gBankDefender setbyte cMULTISTRING_CHOOSER, 0x0 call BattleScript_PRLZPrevention goto BattleScript_MoveEnd BattleScript_EffectAttackDownHit:: setmoveeffect EFFECT_ATK_MINUS_1 goto BattleScript_EffectHit BattleScript_EffectDefenseDownHit:: setmoveeffect EFFECT_DEF_MINUS_1 goto BattleScript_EffectHit BattleScript_EffectSpeedDownHit:: setmoveeffect EFFECT_SPD_MINUS_1 goto BattleScript_EffectHit BattleScript_EffectSpecialAttackDownHit:: setmoveeffect EFFECT_SP_ATK_MINUS_1 goto BattleScript_EffectHit BattleScript_EffectSpecialDefenseDownHit:: setmoveeffect EFFECT_SP_DEF_MINUS_1 goto BattleScript_EffectHit BattleScript_EffectAccuracyDownHit:: setmoveeffect EFFECT_ACC_MINUS_1 goto BattleScript_EffectHit BattleScript_EffectSkyAttack:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn setbyte sTWOTURN_STRINGID, 0x3 call BattleScriptFirstChargingTurn goto BattleScript_MoveEnd BattleScript_EffectConfuseHit:: setmoveeffect EFFECT_CONFUSION goto BattleScript_EffectHit BattleScript_EffectTwineedle:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE setbyte sMULTIHIT_EFFECT, EFFECT_POISON attackstring ppreduce setmultihitcounter 0x2 initmultihitstring goto BattleScript_MultiHitLoop BattleScript_EffectSubstitute:: attackcanceler ppreduce attackstring waitstate jumpifstatus2 ATTACKER, STATUS2_SUBSTITUTE, BattleScript_AlreadyHasSubstitute setsubstitute jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x1, BattleScript_SubstituteAnim pause 0x20 goto BattleScript_SubstituteString BattleScript_SubstituteAnim:: attackanimation waitanimation healthbarupdate ATTACKER datahpupdate ATTACKER BattleScript_SubstituteString:: printfromtable gSubsituteUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_AlreadyHasSubstitute:: various23 ATTACKER pause 0x20 printstring STRINGID_PKMNHASSUBSTITUTE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectRecharge:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE setmoveeffect EFFECT_RECHARGE | AFFECTS_USER | CERTAIN goto BattleScript_HitFromAtkString BattleScript_MoveUsedMustRecharge:: printstring STRINGID_PKMNMUSTRECHARGE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectRage:: attackcanceler accuracycheck BattleScript_RageMiss, ACC_CURR_MOVE setmoveeffect EFFECT_RAGE seteffectprimary setmoveeffect 0 goto BattleScript_HitFromAtkString BattleScript_RageMiss:: setmoveeffect EFFECT_RAGE clearstatusfromeffect ATTACKER goto BattleScript_PrintMoveMissed BattleScript_EffectMimic:: attackcanceler attackstring ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON mimicattackcopy BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNLEARNEDMOVE2 waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectMetronome:: attackcanceler attackstring pause 0x20 attackanimation waitanimation setbyte sANIM_TURN, 0x0 setbyte sANIM_TARGETS_HIT, 0x0 metronome BattleScript_EffectLeechSeed:: attackcanceler attackstring pause 0x20 ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed accuracycheck BattleScript_DoLeechSeed, ACC_CURR_MOVE BattleScript_DoLeechSeed:: setseeded attackanimation waitanimation printfromtable gLeechSeedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSplash:: attackcanceler attackstring ppreduce attackanimation waitanimation incrementgamestat 0x1A printstring STRINGID_BUTNOTHINGHAPPENED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectDisable:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE disablelastusedattack BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNMOVEWASDISABLED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectLevelDamage:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce typecalc bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE dmgtolevel adjustsetdamage goto BattleScript_HitFromAtkAnimation BattleScript_EffectPsywave:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce typecalc bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE psywavedamageeffect adjustsetdamage goto BattleScript_HitFromAtkAnimation BattleScript_EffectCounter:: attackcanceler counterdamagecalculator BattleScript_ButItFailedAtkStringPpReduce accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce typecalc2 adjustsetdamage goto BattleScript_HitFromAtkAnimation BattleScript_EffectEncore:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce trysetencore BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNGOTENCORE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectPainSplit:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON painsplitdmgcalc BattleScript_ButItFailed attackanimation waitanimation orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate ATTACKER datahpupdate ATTACKER copyword gBattleMoveDamage, sPAINSPLIT_HP healthbarupdate TARGET datahpupdate TARGET printstring STRINGID_SHAREDPAIN waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSnore:: attackcanceler jumpifstatus ATTACKER, STATUS1_SLEEP, BattleScript_SnoreIsAsleep attackstring ppreduce goto BattleScript_ButItFailed BattleScript_SnoreIsAsleep:: jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoSnore printstring STRINGID_PKMNFASTASLEEP waitmessage 0x40 statusanimation ATTACKER BattleScript_DoSnore:: attackstring ppreduce accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE setmoveeffect EFFECT_FLINCH goto BattleScript_HitFromCritCalc BattleScript_EffectConversion2:: attackcanceler attackstring ppreduce settypetorandomresistance BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNCHANGEDTYPE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectLockOn:: attackcanceler attackstring ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE setalwayshitflag attackanimation waitanimation printstring STRINGID_PKMNTOOKAIM waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSketch:: attackcanceler attackstring ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed copymovepermanently BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNSKETCHEDMOVE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSleepTalk:: attackcanceler jumpifstatus ATTACKER, STATUS1_SLEEP, BattleScript_SleepTalkIsAsleep attackstring ppreduce goto BattleScript_ButItFailed BattleScript_SleepTalkIsAsleep:: printstring STRINGID_PKMNFASTASLEEP waitmessage 0x40 statusanimation ATTACKER attackstring ppreduce orword gHitMarker, HITMARKER_NO_PPDEDUCT trychoosesleeptalkmove BattleScript_SleepTalkUsingMove pause 0x40 goto BattleScript_ButItFailed BattleScript_SleepTalkUsingMove:: attackanimation waitanimation setbyte sANIM_TURN, 0x0 setbyte sANIM_TARGETS_HIT, 0x0 jumptorandomattack TRUE BattleScript_EffectDestinyBond:: attackcanceler attackstring ppreduce setdestinybond attackanimation waitanimation printstring STRINGID_PKMNTRYINGTOTAKEFOE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectFlail:: remaininghptopower goto BattleScript_EffectHit BattleScript_EffectSpite:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE tryspiteppreduce BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNREDUCEDPP waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectHealBell:: attackcanceler attackstring ppreduce healpartystatus waitstate attackanimation waitanimation printfromtable gPartyStatusHealStringIds waitmessage 0x40 jumpifnotmove MOVE_HEAL_BELL, BattleScript_PartyHealEnd jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x1, BattleScript_CheckHealBellMon2Unaffected printstring STRINGID_PKMNSXBLOCKSY waitmessage 0x40 BattleScript_CheckHealBellMon2Unaffected:: jumpifbyte NO_COMMON_BITS, cMULTISTRING_CHOOSER, 0x2, BattleScript_PartyHealEnd printstring STRINGID_PKMNSXBLOCKSY2 waitmessage 0x40 BattleScript_PartyHealEnd:: updatestatusicon ATTACKER_WITH_PARTNER waitstate goto BattleScript_MoveEnd BattleScript_EffectTripleKick:: attackcanceler attackstring ppreduce sethword sTRIPLE_KICK_POWER, 0x0 initmultihitstring setmultihit 0x3 BattleScript_TripleKickLoop:: jumpifhasnohp ATTACKER, BattleScript_TripleKickEnd jumpifhasnohp TARGET, BattleScript_TripleKickNoMoreHits jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoTripleKickAttack jumpifstatus ATTACKER, STATUS1_SLEEP, BattleScript_TripleKickNoMoreHits BattleScript_DoTripleKickAttack:: accuracycheck BattleScript_TripleKickNoMoreHits, ACC_CURR_MOVE movevaluescleanup addbyte sTRIPLE_KICK_POWER, 10 addbyte sMULTIHIT_STRING + 4, 0x1 copyhword gDynamicBasePower, sTRIPLE_KICK_POWER critcalc damagecalc typecalc adjustnormaldamage jumpifmovehadnoeffect BattleScript_TripleKickNoMoreHits attackanimation waitanimation effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET critmessage waitmessage 0x40 printstring STRINGID_EMPTYSTRING3 waitmessage 0x1 setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 jumpifbyte COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_TripleKickPrintStrings decrementmultihit BattleScript_TripleKickLoop goto BattleScript_TripleKickPrintStrings BattleScript_TripleKickNoMoreHits:: pause 0x20 jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickPrintStrings bicbyte gMoveResultFlags, MOVE_RESULT_MISSED BattleScript_TripleKickPrintStrings:: resultmessage waitmessage 0x40 jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickEnd jumpifbyte COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_TripleKickEnd copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6 printstring STRINGID_HITXTIMES waitmessage 0x40 BattleScript_TripleKickEnd:: seteffectwithchance tryfaintmon TARGET, FALSE, NULL setbyte sMOVEEND_STATE, 0xE moveend 0x0, 0x0 end BattleScript_EffectThief:: setmoveeffect EFFECT_STEAL_ITEM goto BattleScript_EffectHit BattleScript_EffectMeanLook:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, NO_ACC_CALC jumpifstatus2 TARGET, STATUS2_ESCAPE_PREVENTION, BattleScript_ButItFailed jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed attackanimation waitanimation setmoveeffect EFFECT_PREVENT_ESCAPE seteffectprimary printstring STRINGID_TARGETCANTESCAPENOW waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectNightmare:: attackcanceler attackstring ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus2 TARGET, STATUS2_NIGHTMARE, BattleScript_ButItFailed jumpifstatus TARGET, STATUS1_SLEEP, BattleScript_NightmareWorked goto BattleScript_ButItFailed BattleScript_NightmareWorked:: attackanimation waitanimation setmoveeffect EFFECT_NIGHTMARE seteffectprimary printstring STRINGID_PKMNFELLINTONIGHTMARE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectMinimize:: attackcanceler setminimize setstatchanger EVASION, 1, FALSE goto BattleScript_EffectStatUpAfterAtkCanceler BattleScript_EffectCurse:: jumpiftype2 ATTACKER, TYPE_GHOST, BattleScript_GhostCurse attackcanceler attackstring ppreduce jumpifstat ATTACKER, GREATER_THAN, SPEED, 0x0, BattleScript_CurseTrySpeed jumpifstat ATTACKER, NOT_EQUAL, ATK, 0xC, BattleScript_CurseTrySpeed jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_ButItFailed BattleScript_CurseTrySpeed:: copybyte gBankDefender, gBankAttacker setbyte sANIM_TURN, 0x1 attackanimation waitanimation setstatchanger SPEED, 1, TRUE statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryAttack printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_CurseTryAttack:: setstatchanger ATK, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseTryDefence printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_CurseTryDefence:: setstatchanger DEF, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_CurseEnd printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_CurseEnd:: goto BattleScript_MoveEnd BattleScript_GhostCurse:: jumpifbytenotequal gBankAttacker, gBankDefender, BattleScript_DoGhostCurse getmovetarget ATTACKER BattleScript_DoGhostCurse:: attackcanceler attackstring ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON cursetarget BattleScript_ButItFailed orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE setbyte sANIM_TURN, 0x0 attackanimation waitanimation healthbarupdate ATTACKER datahpupdate ATTACKER printstring STRINGID_PKMNLAIDCURSE waitmessage 0x40 tryfaintmon ATTACKER, FALSE, NULL goto BattleScript_MoveEnd BattleScript_EffectProtect:: BattleScript_EffectEndure:: attackcanceler attackstring ppreduce setprotectlike attackanimation waitanimation printfromtable gProtectLikeUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSpikes:: attackcanceler trysetspikes BattleScript_ButItFailedAtkStringPpReduce attackstring ppreduce attackanimation waitanimation printstring STRINGID_SPIKESSCATTERED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectForesight:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce setforesight attackanimation waitanimation printstring STRINGID_PKMNIDENTIFIED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectPerishSong:: attackcanceler attackstring ppreduce trysetperishsong BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_FAINTINTHREE waitmessage 0x40 setbyte sBANK, 0x0 BattleScript_PerishSongLoop:: jumpifability SCRIPTING_BANK, ABILITY_SOUNDPROOF, BattleScript_PerishSongNotAffected BattleScript_PerishSongLoopIncrement:: addbyte sBANK, 0x1 jumpifbytenotequal sBANK, gBattleBanksCount, BattleScript_PerishSongLoop goto BattleScript_MoveEnd BattleScript_PerishSongNotAffected:: printstring STRINGID_PKMNSXBLOCKSY2 waitmessage 0x40 goto BattleScript_PerishSongLoopIncrement BattleScript_EffectSandstorm:: attackcanceler attackstring ppreduce setsandstorm goto BattleScript_MoveWeatherChange BattleScript_EffectRollout:: attackcanceler attackstring jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_RolloutCheckAccuracy ppreduce BattleScript_RolloutCheckAccuracy:: accuracycheck BattleScript_RolloutHit, ACC_CURR_MOVE BattleScript_RolloutHit:: typecalc2 rolloutdamagecalculation goto BattleScript_HitFromCritCalc BattleScript_EffectSwagger:: attackcanceler jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce jumpifconfusedandstatmaxed ATK, BattleScript_ButItFailed attackanimation waitanimation setstatchanger ATK, 2, FALSE statbuffchange 0x1, BattleScript_SwaggerTryConfuse jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SwaggerTryConfuse setgraphicalstatchangevalues playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_SwaggerTryConfuse:: jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected setmoveeffect EFFECT_CONFUSION seteffectprimary goto BattleScript_MoveEnd BattleScript_EffectFuryCutter:: attackcanceler attackstring ppreduce accuracycheck BattleScript_FuryCutterHit, ACC_CURR_MOVE BattleScript_FuryCutterHit:: furycuttercalc critcalc damagecalc typecalc jumpifmovehadnoeffect BattleScript_FuryCutterHit adjustnormaldamage goto BattleScript_HitFromAtkAnimation BattleScript_EffectAttract:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE tryinfatuating BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNFELLINLOVE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectReturn:: BattleScript_EffectFrustration:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE happinesstodamagecalculation goto BattleScript_HitFromAtkString BattleScript_EffectPresent:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce typecalc presentdamagecalculation BattleScript_EffectSafeguard:: attackcanceler attackstring ppreduce setsafeguard goto BattleScript_PrintReflectLightScreenSafeguardString BattleScript_EffectThawHit:: setmoveeffect EFFECT_BURN goto BattleScript_EffectHit BattleScript_EffectMagnitude:: attackcanceler attackstring ppreduce selectfirstvalidtarget magnitudedamagecalculation pause 0x20 printstring STRINGID_MAGNITUDESTRENGTH waitmessage 0x40 goto BattleScript_HitsAllWithUndergroundBonusLoop BattleScript_EffectBatonPass:: attackcanceler attackstring ppreduce jumpifbattletype BATTLE_TYPE_ARENA, BattleScript_ButItFailed jumpifcantswitch ATK4F_DONT_CHECK_STATUSES | ATTACKER, BattleScript_ButItFailed attackanimation waitanimation openpartyscreen 0x1, BattleScript_ButItFailed switchoutabilities ATTACKER waitstate switchhandleorder ATTACKER, 0x2 returntoball ATTACKER getswitchedmondata ATTACKER switchindataupdate ATTACKER hpthresholds ATTACKER printstring STRINGID_SWITCHINMON switchinanim ATTACKER, TRUE waitstate switchineffects ATTACKER goto BattleScript_MoveEnd BattleScript_EffectRapidSpin:: setmoveeffect EFFECT_RAPIDSPIN | AFFECTS_USER | CERTAIN goto BattleScript_EffectHit BattleScript_EffectSonicboom:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce typecalc bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE setword gBattleMoveDamage, 20 adjustsetdamage goto BattleScript_HitFromAtkAnimation BattleScript_EffectMorningSun:: BattleScript_EffectSynthesis:: BattleScript_EffectMoonlight:: attackcanceler attackstring ppreduce recoverbasedonsunlight BattleScript_AlreadyAtFullHp goto BattleScript_PresentHealTarget BattleScript_EffectHiddenPower:: hiddenpowercalc goto BattleScript_EffectHit BattleScript_EffectRainDance:: attackcanceler attackstring ppreduce setrain BattleScript_MoveWeatherChange:: attackanimation waitanimation printfromtable gMoveWeatherChangeStringIds waitmessage 0x40 call BattleScript_WeatherFormChanges goto BattleScript_MoveEnd BattleScript_EffectSunnyDay:: attackcanceler attackstring ppreduce setsunny goto BattleScript_MoveWeatherChange BattleScript_EffectDefenseUpHit:: setmoveeffect EFFECT_DEF_PLUS_1 | AFFECTS_USER goto BattleScript_EffectHit BattleScript_EffectAttackUpHit:: setmoveeffect EFFECT_ATK_PLUS_1 | AFFECTS_USER goto BattleScript_EffectHit BattleScript_EffectAllStatsUpHit:: setmoveeffect EFFECT_ALL_STATS_UP | AFFECTS_USER goto BattleScript_EffectHit BattleScript_EffectBellyDrum:: attackcanceler attackstring ppreduce maxattackhalvehp BattleScript_ButItFailed orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE attackanimation waitanimation healthbarupdate ATTACKER datahpupdate ATTACKER printstring STRINGID_PKMNCUTHPMAXEDATTACK waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectPsychUp:: attackcanceler attackstring ppreduce copyfoestats BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNCOPIEDSTATCHANGES waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectMirrorCoat:: attackcanceler mirrorcoatdamagecalculator BattleScript_ButItFailedAtkStringPpReduce accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce typecalc2 adjustsetdamage goto BattleScript_HitFromAtkAnimation BattleScript_EffectSkullBash:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn setbyte sTWOTURN_STRINGID, 0x2 call BattleScriptFirstChargingTurn setstatchanger DEF, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_SkullBashEnd jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_SkullBashEnd setgraphicalstatchangevalues playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_SkullBashEnd:: goto BattleScript_MoveEnd BattleScript_EffectTwister:: jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_FlinchEffect orword gHitMarker, HITMARKER_IGNORE_ON_AIR setbyte sDMG_MULTIPLIER, 0x2 BattleScript_FlinchEffect:: setmoveeffect EFFECT_FLINCH goto BattleScript_EffectHit BattleScript_EffectEarthquake:: attackcanceler attackstring ppreduce selectfirstvalidtarget BattleScript_HitsAllWithUndergroundBonusLoop:: movevaluescleanup jumpifnostatus3 TARGET, STATUS3_UNDERGROUND, BattleScript_HitsAllNoUndergroundBonus orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND setbyte sDMG_MULTIPLIER, 0x2 goto BattleScript_DoHitAllWithUndergroundBonus BattleScript_HitsAllNoUndergroundBonus:: bicword gHitMarker, HITMARKER_IGNORE_UNDERGROUND setbyte sDMG_MULTIPLIER, 0x1 BattleScript_DoHitAllWithUndergroundBonus:: accuracycheck BattleScript_HitAllWithUndergroundBonusMissed, ACC_CURR_MOVE critcalc damagecalc typecalc adjustnormaldamage attackanimation waitanimation effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET critmessage waitmessage 0x40 resultmessage waitmessage 0x40 printstring STRINGID_EMPTYSTRING3 waitmessage 0x1 tryfaintmon TARGET, FALSE, NULL setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop end BattleScript_HitAllWithUndergroundBonusMissed:: pause 0x20 typecalc effectivenesssound resultmessage waitmessage 0x40 setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop end BattleScript_EffectFutureSight:: attackcanceler attackstring ppreduce trysetfutureattack BattleScript_ButItFailed attackanimation waitanimation printfromtable gFutureMoveUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectGust:: jumpifnostatus3 TARGET, STATUS3_ON_AIR, BattleScript_EffectHit orword gHitMarker, HITMARKER_IGNORE_ON_AIR setbyte sDMG_MULTIPLIER, 0x2 goto BattleScript_EffectHit BattleScript_EffectStomp:: jumpifnostatus3 TARGET, STATUS3_MINIMIZED, BattleScript_FlinchEffect setbyte sDMG_MULTIPLIER, 0x2 goto BattleScript_FlinchEffect BattleScript_EffectSolarbeam:: jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_SolarbeamDecideTurn jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_SolarbeamDecideTurn jumpifhalfword COMMON_BITS, gBattleWeather, WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT, BattleScript_SolarbeamOnFirstTurn BattleScript_SolarbeamDecideTurn:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn setbyte sTWOTURN_STRINGID, 0x1 call BattleScriptFirstChargingTurn goto BattleScript_MoveEnd BattleScript_SolarbeamOnFirstTurn:: orword gHitMarker, HITMARKER_x8000000 setmoveeffect EFFECT_CHARGING | AFFECTS_USER seteffectprimary ppreduce goto BattleScript_TwoTurnMovesSecondTurn BattleScript_EffectThunder:: setmoveeffect EFFECT_PARALYSIS orword gHitMarker, HITMARKER_IGNORE_ON_AIR goto BattleScript_EffectHit BattleScript_EffectTeleport:: attackcanceler attackstring ppreduce jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_ButItFailed getifcantrunfrombattle ATTACKER jumpifbyte EQUAL, gBattleCommunication, 0x1, BattleScript_ButItFailed jumpifbyte EQUAL, gBattleCommunication, 0x2, BattleScript_PrintAbilityMadeIneffective attackanimation waitanimation printstring STRINGID_PKMNFLEDFROMBATTLE waitmessage 0x40 setoutcomeonteleport ATTACKER goto BattleScript_MoveEnd BattleScript_EffectBeatUp:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring pause 0x20 ppreduce setbyte gBattleCommunication, 0x0 BattleScript_BeatUpLoop:: movevaluescleanup trydobeatup BattleScript_BeatUpEnd, BattleScript_ButItFailed printstring STRINGID_PKMNATTACK critcalc jumpifbyte NOT_EQUAL, gCritMultiplier, 0x2, BattleScript_BeatUpAttack manipulatedamage ATK80_DMG_DOUBLED BattleScript_BeatUpAttack:: adjustnormaldamage attackanimation waitanimation effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET critmessage waitmessage 0x40 resultmessage waitmessage 0x40 tryfaintmon TARGET, FALSE, NULL setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 goto BattleScript_BeatUpLoop BattleScript_BeatUpEnd:: end BattleScript_EffectSemiInvulnerable:: jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable jumpifword COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable jumpifmove MOVE_FLY, BattleScript_FirstTurnFly jumpifmove MOVE_DIVE, BattleScript_FirstTurnDive jumpifmove MOVE_BOUNCE, BattleScript_FirstTurnBounce setbyte sTWOTURN_STRINGID, 0x5 goto BattleScript_FirstTurnSemiInvulnerable BattleScript_FirstTurnBounce:: setbyte sTWOTURN_STRINGID, 0x7 goto BattleScript_FirstTurnSemiInvulnerable BattleScript_FirstTurnDive:: setbyte sTWOTURN_STRINGID, 0x6 goto BattleScript_FirstTurnSemiInvulnerable BattleScript_FirstTurnFly:: setbyte sTWOTURN_STRINGID, 0x4 BattleScript_FirstTurnSemiInvulnerable:: call BattleScriptFirstChargingTurn setsemiinvulnerablebit goto BattleScript_MoveEnd BattleScript_SecondTurnSemiInvulnerable:: attackcanceler setmoveeffect EFFECT_CHARGING setbyte sANIM_TURN, 0x1 clearstatusfromeffect ATTACKER orword gHitMarker, HITMARKER_NO_PPDEDUCT jumpifnotmove MOVE_BOUNCE, BattleScript_SemiInvulnerableTryHit setmoveeffect EFFECT_PARALYSIS BattleScript_SemiInvulnerableTryHit:: accuracycheck BattleScript_SemiInvulnerableMiss, ACC_CURR_MOVE clearsemiinvulnerablebit goto BattleScript_HitFromAtkString BattleScript_SemiInvulnerableMiss:: clearsemiinvulnerablebit goto BattleScript_PrintMoveMissed BattleScript_EffectDefenseCurl:: attackcanceler attackstring ppreduce setdefensecurlbit setstatchanger DEF, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_DefenseCurlDoStatUpAnim jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_StatUpPrintString attackanimation waitanimation BattleScript_DefenseCurlDoStatUpAnim:: goto BattleScript_StatUpDoAnim BattleScript_EffectSoftboiled:: attackcanceler attackstring ppreduce tryhealhalfhealth BattleScript_AlreadyAtFullHp, TARGET BattleScript_PresentHealTarget:: attackanimation waitanimation orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate TARGET datahpupdate TARGET printstring STRINGID_PKMNREGAINEDHEALTH waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_AlreadyAtFullHp:: pause 0x20 printstring STRINGID_PKMNHPFULL waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectFakeOut:: attackcanceler jumpifnotfirstturn BattleScript_ButItFailedAtkStringPpReduce setmoveeffect EFFECT_FLINCH | CERTAIN goto BattleScript_EffectHit BattleScript_ButItFailedAtkStringPpReduce:: attackstring BattleScript_ButItFailedPpReduce:: ppreduce BattleScript_ButItFailed:: pause 0x20 orbyte gMoveResultFlags, MOVE_RESULT_FAILED resultmessage waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_NotAffected:: pause 0x20 orbyte gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE resultmessage waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectUproar:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE setmoveeffect EFFECT_UPROAR | AFFECTS_USER attackstring jumpifstatus2 ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_UproarHit ppreduce BattleScript_UproarHit:: nop goto BattleScript_HitFromCritCalc BattleScript_EffectStockpile:: attackcanceler attackstring ppreduce stockpile attackanimation waitanimation printfromtable gStockpileUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSpitUp:: attackcanceler jumpifbyte EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82D9FA2 attackstring ppreduce accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE stockpiletobasedamage BattleScript_SpitUpFail typecalc adjustsetdamage goto BattleScript_HitFromAtkAnimation BattleScript_SpitUpFail:: pause 0x20 printstring STRINGID_FAILEDTOSPITUP waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_82D9FA2:: attackstring ppreduce pause 0x40 stockpiletobasedamage BattleScript_SpitUpFail resultmessage waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSwallow:: attackcanceler attackstring ppreduce stockpiletohpheal BattleScript_SwallowFail goto BattleScript_PresentHealTarget BattleScript_SwallowFail:: pause 0x20 printfromtable gSwallowFailStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectHail:: attackcanceler attackstring ppreduce sethail goto BattleScript_MoveWeatherChange BattleScript_EffectTorment:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE settorment BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNSUBJECTEDTOTORMENT waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectFlatter:: attackcanceler jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce jumpifconfusedandstatmaxed SPATK, BattleScript_ButItFailed attackanimation waitanimation setstatchanger SPATK, 1, FALSE statbuffchange 0x1, BattleScript_FlatterTryConfuse jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_FlatterTryConfuse setgraphicalstatchangevalues playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_FlatterTryConfuse:: jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected setmoveeffect EFFECT_CONFUSION seteffectprimary goto BattleScript_MoveEnd BattleScript_EffectWillOWisp:: attackcanceler attackstring ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifstatus TARGET, STATUS1_BURN, BattleScript_AlreadyBurned jumpiftype TARGET, TYPE_FIRE, BattleScript_NotAffected jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents jumpifstatus TARGET, STATUS1_ANY, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected attackanimation waitanimation setmoveeffect EFFECT_BURN seteffectprimary goto BattleScript_MoveEnd BattleScript_WaterVeilPrevents:: copybyte gEffectBank, gBankDefender setbyte cMULTISTRING_CHOOSER, 0x0 call BattleScript_BRNPrevention goto BattleScript_MoveEnd BattleScript_AlreadyBurned:: various23 ATTACKER pause 0x20 printstring STRINGID_PKMNALREADYHASBURN waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectMemento:: attackcanceler jumpifbyte EQUAL, gBattleCommunication + 6, 0x1, BattleScript_82DA153 attackstring ppreduce jumpifattackandspecialattackcannotfall BattleScript_ButItFailed setatkhptozero attackanimation waitanimation jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DA148 setbyte sFIELD_1B, 0x0 playstatchangeanimation TARGET, 0x12, 0x7 playstatchangeanimation TARGET, 0x2, 0x3 setstatchanger ATK, 2, TRUE statbuffchange 0x1, BattleScript_82DA119 jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA119 printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DA119:: playstatchangeanimation TARGET, 0x10, 0x3 setstatchanger SPATK, 2, TRUE statbuffchange 0x1, BattleScript_82DA13C jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DA13C printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DA13C:: tryfaintmon ATTACKER, FALSE, NULL goto BattleScript_MoveEnd BattleScript_82DA148:: printstring STRINGID_BUTNOEFFECT waitmessage 0x40 goto BattleScript_82DA13C BattleScript_82DA153:: attackstring ppreduce jumpifattackandspecialattackcannotfall BattleScript_82DA15A BattleScript_82DA15A:: setatkhptozero pause 0x40 effectivenesssound resultmessage waitmessage 0x40 tryfaintmon ATTACKER, FALSE, NULL goto BattleScript_MoveEnd BattleScript_EffectFacade:: jumpifstatus ATTACKER, STATUS1_POISON | STATUS1_BURN | STATUS1_PARALYSIS | STATUS1_TOXIC_POISON, BattleScript_FacadeDoubleDmg goto BattleScript_EffectHit BattleScript_FacadeDoubleDmg:: setbyte sDMG_MULTIPLIER, 0x2 goto BattleScript_EffectHit BattleScript_EffectFocusPunch:: attackcanceler jumpifnodamage BattleScript_HitFromAccCheck ppreduce printstring STRINGID_PKMNLOSTFOCUS waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSmellingsalt:: jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_EffectHit setmoveeffect EFFECT_REMOVE_PARALYSIS | CERTAIN jumpifstatus TARGET, STATUS1_PARALYSIS, BattleScript_SmellingsaltDoubleDmg goto BattleScript_EffectHit BattleScript_SmellingsaltDoubleDmg:: setbyte sDMG_MULTIPLIER, 0x2 goto BattleScript_EffectHit BattleScript_EffectFollowMe:: attackcanceler attackstring ppreduce setforcedtarget attackanimation waitanimation printstring STRINGID_PKMNCENTERATTENTION waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectNaturePower:: attackcanceler attackstring pause 0x20 callterrainattack printstring STRINGID_NATUREPOWERTURNEDINTO waitmessage 0x40 return BattleScript_EffectCharge:: attackcanceler attackstring ppreduce setcharge attackanimation waitanimation printstring STRINGID_PKMNCHARGINGPOWER waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectTaunt:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE settaunt BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNFELLFORTAUNT waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectHelpingHand:: attackcanceler attackstring ppreduce trysethelpinghand BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNREADYTOHELP waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectTrick:: attackcanceler attackstring ppreduce jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE tryswapitems BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNSWITCHEDITEMS waitmessage 0x40 printfromtable gItemSwapStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectRolePlay:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON trycopyability BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNCOPIEDFOE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectWish:: attackcanceler attackstring ppreduce trywish 0x0, BattleScript_ButItFailed attackanimation waitanimation goto BattleScript_MoveEnd BattleScript_EffectAssist:: attackcanceler attackstring asistattackselect BattleScript_ButItFailedPpReduce attackanimation waitanimation setbyte sANIM_TURN, 0x0 setbyte sANIM_TARGETS_HIT, 0x0 jumptorandomattack TRUE BattleScript_EffectIngrain:: attackcanceler attackstring ppreduce trysetroots BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNPLANTEDROOTS waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSuperpower:: setmoveeffect EFFECT_ATK_DEF_DOWN | AFFECTS_USER | CERTAIN goto BattleScript_EffectHit BattleScript_EffectMagicCoat:: attackcanceler trysetmagiccoat BattleScript_ButItFailedAtkStringPpReduce attackstring ppreduce attackanimation waitanimation printstring STRINGID_PKMNSHROUDEDITSELF waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectRecycle:: attackcanceler attackstring ppreduce tryrecycleitem BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_XFOUNDONEY waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectRevenge:: doubledamagedealtifdamaged goto BattleScript_EffectHit BattleScript_EffectBrickBreak:: attackcanceler accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE attackstring ppreduce removelightscreenreflect critcalc damagecalc typecalc adjustnormaldamage jumpifbyte EQUAL, sANIM_TURN, 0x0, BattleScript_BrickBreakAnim bicbyte gMoveResultFlags, MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE BattleScript_BrickBreakAnim:: attackanimation waitanimation jumpifbyte LESS_THAN, sANIM_TURN, 0x2, BattleScript_BrickBreakDoHit printstring STRINGID_THEWALLSHATTERED waitmessage 0x40 BattleScript_BrickBreakDoHit:: typecalc2 effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET critmessage waitmessage 0x40 resultmessage waitmessage 0x40 seteffectwithchance tryfaintmon TARGET, FALSE, NULL goto BattleScript_MoveEnd BattleScript_EffectYawn:: attackcanceler attackstring ppreduce jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_PrintBankAbilityMadeIneffective jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_PrintBankAbilityMadeIneffective jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON jumpifcantmakeasleep BattleScript_ButItFailed setyawn BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNWASMADEDROWSY waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_PrintBankAbilityMadeIneffective:: copybyte sBANK, sBANK_WITH_ABILITY BattleScript_PrintAbilityMadeIneffective:: pause 0x20 printstring STRINGID_PKMNSXMADEITINEFFECTIVE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectKnockOff:: setmoveeffect EFFECT_KNOCK_OFF goto BattleScript_EffectHit BattleScript_EffectEndeavor:: attackcanceler attackstring ppreduce setdamagetohealthdifference BattleScript_ButItFailed copyword gHpDealt, gBattleMoveDamage accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE typecalc jumpifmovehadnoeffect BattleScript_HitFromAtkAnimation bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE copyword gBattleMoveDamage, gHpDealt adjustsetdamage goto BattleScript_HitFromAtkAnimation BattleScript_EffectEruption:: scaledamagebyhealthratio goto BattleScript_EffectHit BattleScript_EffectSkillSwap:: attackcanceler attackstring ppreduce accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON tryswapabilities BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNSWAPPEDABILITIES waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectImprison:: attackcanceler attackstring ppreduce tryimprision BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNSEALEDOPPONENTMOVE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectRefresh:: attackcanceler attackstring ppreduce cureifburnedparalysedorpoisoned BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNSTATUSNORMAL waitmessage 0x40 updatestatusicon ATTACKER goto BattleScript_MoveEnd BattleScript_EffectGrudge:: attackcanceler attackstring ppreduce trysetgrudge BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNWANTSGRUDGE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectSnatch:: attackcanceler trysetsnatch BattleScript_ButItFailedAtkStringPpReduce attackstring ppreduce attackanimation waitanimation pause 0x20 printstring STRINGID_PKMNWAITSFORTARGET waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectLowKick:: attackcanceler attackstring ppreduce weightdamagecalculation accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE goto BattleScript_HitFromCritCalc BattleScript_EffectSecretPower:: getsecretpowereffect goto BattleScript_EffectHit BattleScript_EffectDoubleEdge:: setmoveeffect EFFECT_RECOIL_33_PARALYSIS | AFFECTS_USER | CERTAIN goto BattleScript_EffectHit BattleScript_EffectTeeterDance:: attackcanceler attackstring ppreduce setbyte gBankDefender, 0x0 BattleScript_TeeterDanceLoop:: movevaluescleanup setmoveeffect EFFECT_CONFUSION jumpifbyteequal gBankAttacker, gBankDefender, BattleScript_TeeterDanceLoopIncrement jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_TeeterDanceOwnTempoPrevents jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_TeeterDanceSubstitutePrevents jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_TeeterDanceAlreadyConfused jumpifhasnohp TARGET, BattleScript_TeeterDanceLoopIncrement accuracycheck BattleScript_TeeterDanceMissed, ACC_CURR_MOVE jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_TeeterDanceSafeguardProtected attackanimation waitanimation seteffectprimary resultmessage waitmessage 0x40 BattleScript_TeeterDanceDoMoveEndIncrement:: setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 BattleScript_TeeterDanceLoopIncrement:: addbyte gBankDefender, 0x1 jumpifbytenotequal gBankDefender, gBattleBanksCount, BattleScript_TeeterDanceLoop end BattleScript_TeeterDanceOwnTempoPrevents:: pause 0x20 printstring STRINGID_PKMNPREVENTSCONFUSIONWITH waitmessage 0x40 goto BattleScript_TeeterDanceDoMoveEndIncrement BattleScript_TeeterDanceSafeguardProtected:: pause 0x20 printstring STRINGID_PKMNUSEDSAFEGUARD waitmessage 0x40 goto BattleScript_TeeterDanceDoMoveEndIncrement BattleScript_TeeterDanceSubstitutePrevents:: pause 0x20 printstring STRINGID_BUTITFAILED waitmessage 0x40 goto BattleScript_TeeterDanceDoMoveEndIncrement BattleScript_TeeterDanceAlreadyConfused:: various23 ATTACKER pause 0x20 printstring STRINGID_PKMNALREADYCONFUSED waitmessage 0x40 goto BattleScript_TeeterDanceDoMoveEndIncrement BattleScript_TeeterDanceMissed:: resultmessage waitmessage 0x40 goto BattleScript_TeeterDanceDoMoveEndIncrement BattleScript_EffectMudSport:: BattleScript_EffectWaterSport:: attackcanceler attackstring ppreduce settypebasedhalvers BattleScript_ButItFailed attackanimation waitanimation printfromtable gSportsUsedStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectPoisonFang:: setmoveeffect EFFECT_TOXIC goto BattleScript_EffectHit BattleScript_EffectWeatherBall:: setweatherballtype goto BattleScript_EffectHit BattleScript_EffectOverheat:: setmoveeffect EFFECT_SP_ATK_TWO_DOWN | AFFECTS_USER | CERTAIN goto BattleScript_EffectHit BattleScript_EffectTickle:: attackcanceler attackstring ppreduce jumpifstat TARGET, GREATER_THAN, ATK, 0x0, BattleScript_TickleDoMoveAnim jumpifstat TARGET, EQUAL, DEF, 0x0, BattleScript_CantLowerMultipleStats BattleScript_TickleDoMoveAnim:: accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE attackanimation waitanimation setbyte sFIELD_1B, 0x0 playstatchangeanimation TARGET, 0x6, 0x5 playstatchangeanimation TARGET, 0x2, 0x1 setstatchanger ATK, 1, TRUE statbuffchange 0x1, BattleScript_TickleTryLowerDef jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleTryLowerDef printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_TickleTryLowerDef:: playstatchangeanimation TARGET, 0x4, 0x1 setstatchanger DEF, 1, TRUE statbuffchange 0x1, BattleScript_TickleEnd jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_TickleEnd printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_TickleEnd:: goto BattleScript_MoveEnd BattleScript_CantLowerMultipleStats:: pause 0x20 orbyte gMoveResultFlags, MOVE_RESULT_FAILED printstring STRINGID_STATSWONTDECREASE2 waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectCosmicPower:: attackcanceler attackstring ppreduce jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_CosmicPowerDoMoveAnim jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats BattleScript_CosmicPowerDoMoveAnim:: attackanimation waitanimation setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x24, 0x0 setstatchanger DEF, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_CosmicPowerTrySpDef jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerTrySpDef printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_CosmicPowerTrySpDef:: setstatchanger SPDEF, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_CosmicPowerEnd jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CosmicPowerEnd printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_CosmicPowerEnd:: goto BattleScript_MoveEnd BattleScript_EffectSkyUppercut:: orword gHitMarker, HITMARKER_IGNORE_ON_AIR goto BattleScript_EffectHit BattleScript_EffectBulkUp:: attackcanceler attackstring ppreduce jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_BulkUpDoMoveAnim jumpifstat ATTACKER, EQUAL, DEF, 0xC, BattleScript_CantRaiseMultipleStats BattleScript_BulkUpDoMoveAnim:: attackanimation waitanimation setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x6, 0x0 setstatchanger ATK, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_BulkUpTryDef jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpTryDef printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_BulkUpTryDef:: setstatchanger DEF, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_BulkUpEnd jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_BulkUpEnd printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_BulkUpEnd:: goto BattleScript_MoveEnd BattleScript_EffectCalmMind:: attackcanceler attackstring ppreduce jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_CalmMindDoMoveAnim jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_CantRaiseMultipleStats BattleScript_CalmMindDoMoveAnim:: attackanimation waitanimation setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x30, 0x0 setstatchanger SPATK, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_CalmMindTrySpDef jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindTrySpDef printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_CalmMindTrySpDef:: setstatchanger SPDEF, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_CalmMindEnd jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_CalmMindEnd printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_CalmMindEnd:: goto BattleScript_MoveEnd BattleScript_CantRaiseMultipleStats:: pause 0x20 orbyte gMoveResultFlags, MOVE_RESULT_FAILED printstring STRINGID_STATSWONTINCREASE2 waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_EffectDragonDance:: attackcanceler attackstring ppreduce jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_DragonDanceDoMoveAnim jumpifstat ATTACKER, EQUAL, SPEED, 0xC, BattleScript_CantRaiseMultipleStats BattleScript_DragonDanceDoMoveAnim:: attackanimation waitanimation setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0xA, 0x0 setstatchanger ATK, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_DragonDanceTrySpeed jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceTrySpeed printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_DragonDanceTrySpeed:: setstatchanger SPEED, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_DragonDanceEnd jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_DragonDanceEnd printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_DragonDanceEnd:: goto BattleScript_MoveEnd BattleScript_EffectCamouflage:: attackcanceler attackstring ppreduce settypetoterrain BattleScript_ButItFailed attackanimation waitanimation printstring STRINGID_PKMNCHANGEDTYPE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_FaintAttacker:: playfaintcry ATTACKER pause 0x40 dofaintanimation ATTACKER cleareffectsonfaint ATTACKER printstring STRINGID_ATTACKERFAINTED return BattleScript_FaintTarget:: playfaintcry TARGET pause 0x40 dofaintanimation TARGET cleareffectsonfaint TARGET printstring STRINGID_TARGETFAINTED return BattleScript_GiveExp:: setbyte sGIVEEXP_STATE, 0x0 getexp TARGET end2 BattleScript_HandleFaintedMon:: atk24 BattleScript_82DA8F6 jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonTryChooseAnother jumpifword NO_COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonTryChooseAnother printstring STRINGID_USENEXTPKMN setbyte gBattleCommunication, 0x0 yesnobox jumpifbyte EQUAL, gBattleCommunication + 1, 0x0, BattleScript_FaintedMonTryChooseAnother jumpifplayerran BattleScript_FaintedMonEnd printstring STRINGID_CANTESCAPE2 BattleScript_FaintedMonTryChooseAnother:: openpartyscreen 0x3, BattleScript_FaintedMonEnd switchhandleorder GBANK_1, 0x2 jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_x2000000, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID, BattleScript_FaintedMonChooseAnother jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonChooseAnother jumpifword COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_FaintedMonChooseAnother jumpifbyte EQUAL, sBATTLE_STYLE, 0x1, BattleScript_FaintedMonChooseAnother jumpifcantswitch 11, BattleScript_FaintedMonChooseAnother printstring STRINGID_ENEMYABOUTTOSWITCHPKMN setbyte gBattleCommunication, 0x0 yesnobox jumpifbyte EQUAL, gBattleCommunication + 1, 0x1, BattleScript_FaintedMonChooseAnother setatktoplayer0 openpartyscreen 0x81, BattleScript_FaintedMonChooseAnother switchhandleorder ATTACKER, 0x2 jumpifbyte EQUAL, gBattleCommunication, 0x6, BattleScript_FaintedMonChooseAnother atknameinbuff1 resetintrimidatetracebits ATTACKER hpthresholds2 ATTACKER printstring STRINGID_RETURNMON switchoutabilities ATTACKER waitstate returnatktoball waitstate drawpartystatussummary ATTACKER getswitchedmondata ATTACKER switchindataupdate ATTACKER hpthresholds ATTACKER printstring STRINGID_SWITCHINMON atk62 ATTACKER switchinanim ATTACKER, 0x0 waitstate switchineffects ATTACKER resetsentmonsvalue BattleScript_FaintedMonChooseAnother:: drawpartystatussummary GBANK_1 getswitchedmondata GBANK_1 switchindataupdate GBANK_1 hpthresholds GBANK_1 printstring STRINGID_SWITCHINMON atk62 GBANK_1 switchinanim GBANK_1, FALSE waitstate various7 ATTACKER switchineffects GBANK_1 jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonEnd cancelallactions BattleScript_FaintedMonEnd:: end2 BattleScript_82DA8F6:: openpartyscreen 0x5, BattleScript_82DA8FC BattleScript_82DA8FC:: switchhandleorder GBANK_1, 0x0 openpartyscreen 0x6, BattleScript_82DA92C switchhandleorder GBANK_1, 0x0 BattleScript_82DA908:: switchhandleorder GBANK_1, 0x3 drawpartystatussummary GBANK_1 getswitchedmondata GBANK_1 switchindataupdate GBANK_1 hpthresholds GBANK_1 printstring STRINGID_SWITCHINMON atk62 GBANK_1 switchinanim GBANK_1, FALSE waitstate switchineffects 5 jumpifbytenotequal gBank1, gBattleBanksCount, BattleScript_82DA908 BattleScript_82DA92C:: end2 BattleScript_LocalTrainerBattleWon:: jumpifbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalTwoTrainersDefeated printstring STRINGID_PLAYERDEFEATEDTRAINER1 goto BattleScript_LocalBattleWonLoseTexts BattleScript_LocalTwoTrainersDefeated:: printstring STRINGID_TWOENEMIESDEFEATED BattleScript_LocalBattleWonLoseTexts:: trainerslidein ATTACKER waitstate printstring STRINGID_TRAINER1LOSETEXT jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleWonReward trainerslideout B_POSITION_OPPONENT_LEFT waitstate trainerslidein GBANK_1 waitstate printstring STRINGID_TRAINER2LOSETEXT BattleScript_LocalBattleWonReward:: getmoneyreward printstring STRINGID_PLAYERGOTMONEY waitmessage 0x40 BattleScript_PayDayMoneyAndPickUpItems:: givepaydaymoney pickup end2 BattleScript_LocalBattleLost:: jumpifbattletype BATTLE_TYPE_DOME, BattleScript_CheckDomeDrew jumpifbattletype BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_PIKE | BATTLE_TYPE_PYRAMID, BattleScript_LocalBattleLostPrintTrainersWinText jumpifbattletype BATTLE_TYPE_x4000000, BattleScript_LocalBattleLostPrintTrainersWinText jumpifbattletype BATTLE_TYPE_EREADER_TRAINER, BattleScript_LocalBattleLostEnd jumpifhalfword EQUAL, gTrainerBattleOpponent_A, 0x400, BattleScript_LocalBattleLostEnd BattleScript_LocalBattleLostPrintWhiteOut:: printstring STRINGID_PLAYERWHITEOUT waitmessage 0x40 printstring STRINGID_PLAYERWHITEOUT2 waitmessage 0x40 BattleScript_LocalBattleLostEnd:: end2 BattleScript_CheckDomeDrew:: jumpifbyte EQUAL, gBattleOutcome, DREW, BattleScript_LocalBattleLostEnd_ BattleScript_LocalBattleLostPrintTrainersWinText:: jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_LocalBattleLostPrintWhiteOut returnopponentmon1toball ATTACKER waitstate returnopponentmon2toball ATTACKER waitstate trainerslidein ATTACKER waitstate printstring STRINGID_TRAINER1WINTEXT jumpifbattletype BATTLE_TYPE_x800000, BattleScript_LocalBattleLostDoTrainer2WinText jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleLostEnd_ BattleScript_LocalBattleLostDoTrainer2WinText:: trainerslideout B_POSITION_OPPONENT_LEFT waitstate trainerslidein GBANK_1 waitstate printstring STRINGID_TRAINER2WINTEXT BattleScript_LocalBattleLostEnd_:: end2 BattleScript_82DAA0B:: returnopponentmon1toball ATTACKER waitstate returnopponentmon2toball ATTACKER waitstate trainerslidein ATTACKER waitstate printstring STRINGID_TRAINER1WINTEXT trainerslideout B_POSITION_OPPONENT_LEFT waitstate trainerslidein GBANK_1 waitstate printstring STRINGID_TRAINER2WINTEXT jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_82DAA31 atk57 BattleScript_82DAA31:: waitmessage 0x40 end2 BattleScript_LinkBattleWonOrLost:: jumpifbattletype BATTLE_TYPE_BATTLE_TOWER, BattleScript_82DAA5C printstring STRINGID_BATTLEEND waitmessage 0x40 jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_LinkBattleWonOrLostWaitEnd atk57 BattleScript_LinkBattleWonOrLostWaitEnd:: waitmessage 0x40 end2 BattleScript_82DAA5C:: playtrainerdefeatbgm ATTACKER printstring STRINGID_BATTLEEND waitmessage 0x40 trainerslidein ATTACKER waitstate printstring STRINGID_TRAINER1LOSETEXT trainerslideout B_POSITION_OPPONENT_LEFT waitstate trainerslidein GBANK_1 waitstate printstring STRINGID_TRAINER2LOSETEXT jumpifbattletype BATTLE_TYPE_RECORDED, BattleScript_82DAA83 atk57 BattleScript_82DAA83:: waitmessage 0x40 end2 BattleScript_FrontierTrainerBattleWon:: jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_PayDayMoneyAndPickUpItems jumpifbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAAAB printstring STRINGID_PLAYERDEFEATEDTRAINER1 goto BattleScript_82DAAAE BattleScript_82DAAAB:: printstring STRINGID_TWOENEMIESDEFEATED BattleScript_82DAAAE:: trainerslidein ATTACKER waitstate printstring STRINGID_TRAINER1LOSETEXT jumpifnotbattletype BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAACB trainerslideout B_POSITION_OPPONENT_LEFT waitstate trainerslidein GBANK_1 waitstate printstring STRINGID_TRAINER2LOSETEXT BattleScript_82DAACB:: jumpifnotbattletype BATTLE_TYPE_PYRAMID, BattleScript_82DAADA pickup BattleScript_82DAADA:: end2 BattleScript_SmokeBallEscape:: playanimation ATTACKER, ANIM_SMOKEBALL_ESCAPE, NULL printstring STRINGID_PKMNFLEDUSINGITS waitmessage 0x40 end2 BattleScript_RanAwayUsingMonAbility:: printstring STRINGID_PKMNFLEDUSING waitmessage 0x40 end2 BattleScript_GotAwaySafely:: printstring STRINGID_GOTAWAYSAFELY waitmessage 0x40 end2 BattleScript_WildMonFled:: printstring STRINGID_WILDPKMNFLED waitmessage 0x40 end2 BattleScript_PrintCantRunFromTrainer:: printstring STRINGID_NORUNNINGFROMTRAINERS end2 BattleScript_PrintFailedToRunString:: printfromtable gNoEscapeStringIds waitmessage 0x40 end2 BattleScript_PrintCantEscapeFromBattle:: printselectionstringfromtable gNoEscapeStringIds endselectionscript BattleScript_PrintFullBox:: printselectionstring STRINGID_BOXISFULL endselectionscript BattleScript_ActionSwitch:: hpthresholds2 ATTACKER printstring STRINGID_RETURNMON setbyte sDMG_MULTIPLIER, 0x2 jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_PursuitSwitchDmgSetMultihit setmultihit 0x1 goto BattleScript_PursuitSwitchDmgLoop BattleScript_PursuitSwitchDmgSetMultihit:: setmultihit 0x2 BattleScript_PursuitSwitchDmgLoop:: jumpifnopursuitswitchdmg BattleScript_DoSwitchOut atk5F trysetdestinybondtohappen call BattleScript_PursuitDmgOnSwitchOut atk5F BattleScript_DoSwitchOut:: decrementmultihit BattleScript_PursuitSwitchDmgLoop switchoutabilities ATTACKER waitstate returnatktoball waitstate drawpartystatussummary ATTACKER switchhandleorder ATTACKER, 0x1 getswitchedmondata ATTACKER switchindataupdate ATTACKER hpthresholds ATTACKER printstring STRINGID_SWITCHINMON atk62 ATTACKER switchinanim ATTACKER, FALSE waitstate switchineffects ATTACKER setbyte sMOVEEND_STATE, 0x4 moveend 0x1, 0x0 setbyte sMOVEEND_STATE, 0xF moveend 0x1, 0x0 end2 BattleScript_PursuitDmgOnSwitchOut:: pause 0x20 attackstring ppreduce critcalc damagecalc typecalc adjustnormaldamage attackanimation waitanimation effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET critmessage waitmessage 0x40 resultmessage waitmessage 0x40 tryfaintmon TARGET, FALSE, NULL setbyte sMOVEEND_STATE, 0x3 moveend 0x2, 0x6 various4 TARGET jumpifbyte EQUAL, gBattleCommunication, 0x0, BattleScript_PursuitDmgOnSwitchOutRet setbyte sGIVEEXP_STATE, 0x0 getexp TARGET BattleScript_PursuitDmgOnSwitchOutRet:: return BattleScript_Pausex20:: pause 0x20 return BattleScript_LevelUp:: fanfare MUS_FANFA1 printstring STRINGID_PKMNGREWTOLV setbyte sLVLBOX_STATE, 0x0 drawlvlupbox handlelearnnewmove BattleScript_LearnedNewMove, BattleScript_LearnMoveReturn, TRUE goto BattleScript_AskToLearnMove BattleScript_TryLearnMoveLoop:: handlelearnnewmove BattleScript_LearnedNewMove, BattleScript_LearnMoveReturn, FALSE BattleScript_AskToLearnMove:: buffermovetolearn printstring STRINGID_TRYTOLEARNMOVE1 printstring STRINGID_TRYTOLEARNMOVE2 printstring STRINGID_TRYTOLEARNMOVE3 waitstate setbyte sLEARNMOVE_STATE, 0x0 yesnoboxlearnmove BattleScript_ForgotAndLearnedNewMove printstring STRINGID_STOPLEARNINGMOVE waitstate setbyte sLEARNMOVE_STATE, 0x0 yesnoboxstoplearningmove BattleScript_AskToLearnMove printstring STRINGID_DIDNOTLEARNMOVE goto BattleScript_TryLearnMoveLoop BattleScript_ForgotAndLearnedNewMove:: printstring STRINGID_123POOF printstring STRINGID_PKMNFORGOTMOVE printstring STRINGID_ANDELLIPSIS BattleScript_LearnedNewMove:: buffermovetolearn fanfare MUS_FANFA1 printstring STRINGID_PKMNLEARNEDMOVE waitmessage 0x40 updatechoicemoveonlvlup ATTACKER goto BattleScript_TryLearnMoveLoop BattleScript_LearnMoveReturn:: return BattleScript_RainContinuesOrEnds:: printfromtable gRainContinuesStringIds waitmessage 0x40 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_RainContinuesOrEndsEnd playanimation ATTACKER, ANIM_RAIN_CONTINUES, NULL BattleScript_RainContinuesOrEndsEnd:: end2 BattleScript_DamagingWeatherContinues:: printfromtable gSandStormHailContinuesStringIds waitmessage 0x40 playanimation2 ATTACKER, sANIM_ARG1, NULL setbyte gBattleCommunication, 0x0 BattleScript_DamagingWeatherLoop:: copyarraywithindex gBankAttacker, gBanksByTurnOrder, gBattleCommunication, 0x1 weatherdamage jumpifword EQUAL, gBattleMoveDamage, 0x0, BattleScript_DamagingWeatherLoopIncrement printfromtable gSandStormHailDmgStringIds waitmessage 0x40 orword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE effectivenesssound hitanimation ATTACKER healthbarupdate ATTACKER datahpupdate ATTACKER tryfaintmon ATTACKER, FALSE, NULL atk24 BattleScript_DamagingWeatherLoopIncrement BattleScript_DamagingWeatherLoopIncrement:: jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd addbyte gBattleCommunication, 0x1 jumpifbytenotequal gBattleCommunication, gBattleBanksCount, BattleScript_DamagingWeatherLoop BattleScript_DamagingWeatherContinuesEnd:: bicword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE end2 BattleScript_SandStormHailEnds:: printfromtable gSandStormHailEndStringIds waitmessage 0x40 end2 BattleScript_SunlightContinues:: printstring STRINGID_SUNLIGHTSTRONG waitmessage 0x40 playanimation ATTACKER, ANIM_SUN_CONTINUES, NULL end2 BattleScript_SunlightFaded:: printstring STRINGID_SUNLIGHTFADED waitmessage 0x40 end2 BattleScript_OverworldWeatherStarts:: printfromtable gWeatherContinuesStringIds waitmessage 0x40 playanimation2 ATTACKER, sANIM_ARG1, NULL end3 BattleScript_SideStatusWoreOff:: printstring STRINGID_PKMNSXWOREOFF waitmessage 0x40 end2 BattleScript_SafeguardProtected:: pause 0x20 printstring STRINGID_PKMNUSEDSAFEGUARD waitmessage 0x40 end2 BattleScript_SafeguardEnds:: pause 0x20 printstring STRINGID_PKMNSAFEGUARDEXPIRED waitmessage 0x40 end2 BattleScript_LeechSeedTurnDrain:: playanimation ATTACKER, ANIM_LEECH_SEED_DRAIN, sANIM_ARG1 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate ATTACKER datahpupdate ATTACKER copyword gBattleMoveDamage, gHpDealt jumpifability ATTACKER, ABILITY_LIQUID_OOZE, BattleScript_LeechSeedTurnPrintLiquidOoze manipulatedamage ATK80_DMG_CHANGE_SIGN setbyte cMULTISTRING_CHOOSER, 0x3 goto BattleScript_LeechSeedTurnPrintAndUpdateHp BattleScript_LeechSeedTurnPrintLiquidOoze:: setbyte cMULTISTRING_CHOOSER, 0x4 BattleScript_LeechSeedTurnPrintAndUpdateHp:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate TARGET datahpupdate TARGET printfromtable gLeechSeedStringIds waitmessage 0x40 tryfaintmon ATTACKER, FALSE, NULL tryfaintmon TARGET, FALSE, NULL end2 BattleScript_BideStoringEnergy:: printstring STRINGID_PKMNSTORINGENERGY waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_BideAttack:: attackcanceler setmoveeffect EFFECT_CHARGING clearstatusfromeffect ATTACKER printstring STRINGID_PKMNUNLEASHEDENERGY waitmessage 0x40 accuracycheck BattleScript_MoveMissed, ACC_CURR_MOVE typecalc bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE copyword gBattleMoveDamage, sBIDE_DMG adjustsetdamage setbyte sANIM_TURN, 0x1 attackanimation waitanimation effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET resultmessage waitmessage 0x40 tryfaintmon TARGET, FALSE, NULL goto BattleScript_MoveEnd BattleScript_BideNoEnergyToAttack:: attackcanceler setmoveeffect EFFECT_CHARGING clearstatusfromeffect ATTACKER printstring STRINGID_PKMNUNLEASHEDENERGY waitmessage 0x40 goto BattleScript_ButItFailed BattleScript_SuccessForceOut:: attackanimation waitanimation switchoutabilities TARGET returntoball TARGET waitstate jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_TrainerBattleForceOut setoutcomeonteleport ATTACKER finishaction BattleScript_TrainerBattleForceOut:: getswitchedmondata TARGET switchindataupdate TARGET switchinanim TARGET, FALSE waitstate printstring STRINGID_PKMNWASDRAGGEDOUT switchineffects TARGET goto BattleScript_MoveEnd BattleScript_MistProtected:: pause 0x20 printstring STRINGID_PKMNPROTECTEDBYMIST waitmessage 0x40 return BattleScript_RageIsBuilding:: printstring STRINGID_PKMNRAGEBUILDING waitmessage 0x40 return BattleScript_MoveUsedIsDisabled:: printstring STRINGID_PKMNMOVEISDISABLED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_SelectingDisabledMove:: printselectionstring STRINGID_PKMNMOVEISDISABLED endselectionscript BattleScript_DisabledNoMore:: printstring STRINGID_PKMNMOVEDISABLEDNOMORE waitmessage 0x40 end2 BattleScript_SelectingDisabledMoveInPalace:: printstring STRINGID_PKMNMOVEISDISABLED BattleScript_SelectingUnusableMoveInPalace:: setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 end BattleScript_EncoredNoMore:: printstring STRINGID_PKMNENCOREENDED waitmessage 0x40 end2 BattleScript_DestinyBondTakesLife:: printstring STRINGID_PKMNTOOKFOE waitmessage 0x40 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate ATTACKER datahpupdate ATTACKER tryfaintmon ATTACKER, FALSE, NULL return BattleScript_SpikesOnAttacker:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate ATTACKER datahpupdate ATTACKER call BattleScript_PrintHurtBySpikes tryfaintmon ATTACKER, FALSE, NULL tryfaintmon ATTACKER, TRUE, BattleScript_SpikesOnAttackerFainted return BattleScript_SpikesOnAttackerFainted:: setbyte sGIVEEXP_STATE, 0x0 getexp ATTACKER setbyte sMOVEEND_STATE, 0x0 moveend 0x0, 0x0 goto BattleScript_HandleFaintedMon BattleScript_SpikesOnTarget:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate TARGET datahpupdate TARGET call BattleScript_PrintHurtBySpikes tryfaintmon TARGET, FALSE, NULL tryfaintmon TARGET, TRUE, BattleScript_SpikesOnTargetFainted return BattleScript_SpikesOnTargetFainted:: setbyte sGIVEEXP_STATE, 0x0 getexp TARGET setbyte sMOVEEND_STATE, 0x0 moveend 0x0, 0x0 goto BattleScript_HandleFaintedMon BattleScript_SpikesOngBank1:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate GBANK_1 datahpupdate GBANK_1 call BattleScript_PrintHurtBySpikes tryfaintmon GBANK_1, FALSE, NULL tryfaintmon GBANK_1, TRUE, BattleScript_SpikesOngBank1Fainted return BattleScript_SpikesOngBank1Fainted:: setbyte sGIVEEXP_STATE, 0x0 getexp GBANK_1 setbyte sMOVEEND_STATE, 0x0 moveend 0x0, 0x0 goto BattleScript_HandleFaintedMon BattleScript_PrintHurtBySpikes:: printstring STRINGID_PKMNHURTBYSPIKES waitmessage 0x40 return BattleScript_PerishSongTakesLife:: printstring STRINGID_PKMNPERISHCOUNTFELL waitmessage 0x40 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate ATTACKER datahpupdate ATTACKER tryfaintmon ATTACKER, FALSE, NULL end2 BattleScript_PerishSongCountGoesDown:: printstring STRINGID_PKMNPERISHCOUNTFELL waitmessage 0x40 end2 BattleScript_AllStatsUp:: jumpifstat ATTACKER, LESS_THAN, ATK, 0xC, BattleScript_AllStatsUpAtk jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_AllStatsUpAtk jumpifstat ATTACKER, LESS_THAN, SPEED, 0xC, BattleScript_AllStatsUpAtk jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_AllStatsUpAtk jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_AllStatsUpRet BattleScript_AllStatsUpAtk:: setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x3E, 0x0 setstatchanger ATK, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpDef printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_AllStatsUpDef:: setstatchanger DEF, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpeed printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_AllStatsUpSpeed:: setstatchanger SPEED, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpAtk printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_AllStatsUpSpAtk:: setstatchanger SPATK, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpSpDef printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_AllStatsUpSpDef:: setstatchanger SPDEF, 1, FALSE statbuffchange AFFECTS_USER | 0x1, BattleScript_AllStatsUpRet printfromtable gStatUpStringIds waitmessage 0x40 BattleScript_AllStatsUpRet:: return BattleScript_RapidSpinAway:: rapidspinfree return BattleScript_WrapFree:: printstring STRINGID_PKMNGOTFREE waitmessage 0x40 copybyte gBankDefender, sBANK return BattleScript_LeechSeedFree:: printstring STRINGID_PKMNSHEDLEECHSEED waitmessage 0x40 return BattleScript_SpikesFree:: printstring STRINGID_PKMNBLEWAWAYSPIKES waitmessage 0x40 return BattleScript_MonTookFutureAttack:: printstring STRINGID_PKMNTOOKATTACK waitmessage 0x40 jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_CheckDoomDesireMiss accuracycheck BattleScript_FutureAttackMiss, MOVE_FUTURE_SIGHT goto BattleScript_FutureAttackAnimate BattleScript_CheckDoomDesireMiss:: accuracycheck BattleScript_FutureAttackMiss, MOVE_DOOM_DESIRE BattleScript_FutureAttackAnimate:: adjustnormaldamage2 jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_FutureHitAnimDoomDesire playanimation ATTACKER, ANIM_FUTURE_SIGHT_HIT, NULL goto BattleScript_DoFutureAttackHit BattleScript_FutureHitAnimDoomDesire:: playanimation ATTACKER, ANIM_DOOM_DESIRE_HIT, NULL BattleScript_DoFutureAttackHit:: effectivenesssound hitanimation TARGET waitstate healthbarupdate TARGET datahpupdate TARGET resultmessage waitmessage 0x40 tryfaintmon TARGET, FALSE, NULL atk24 BattleScript_FutureAttackEnd BattleScript_FutureAttackEnd:: setbyte sMOVEEND_STATE, 0x0 moveend 0x1, 0x0 setbyte sMOVEEND_STATE, 0xB moveend 0x2, 0xE setbyte gMoveResultFlags, 0 end2 BattleScript_FutureAttackMiss:: pause 0x20 setbyte gMoveResultFlags, 0 orbyte gMoveResultFlags, MOVE_RESULT_FAILED resultmessage waitmessage 0x40 setbyte gMoveResultFlags, 0 end2 BattleScript_NoMovesLeft:: printselectionstring STRINGID_PKMNHASNOMOVESLEFT endselectionscript BattleScript_SelectingMoveWithNoPP:: printselectionstring STRINGID_NOPPLEFT endselectionscript BattleScript_NoPPForMove:: attackstring pause 0x20 printstring STRINGID_BUTNOPPLEFT waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_SelectingTormentedMove:: printselectionstring STRINGID_PKMNCANTUSEMOVETORMENT endselectionscript BattleScript_MoveUsedIsTormented:: printstring STRINGID_PKMNCANTUSEMOVETORMENT waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_SelectingTormentedMoveInPalace:: printstring STRINGID_PKMNCANTUSEMOVETORMENT goto BattleScript_SelectingUnusableMoveInPalace BattleScript_SelectingNotAllowedMoveTaunt:: printselectionstring STRINGID_PKMNCANTUSEMOVETAUNT endselectionscript BattleScript_MoveUsedIsTaunted:: printstring STRINGID_PKMNCANTUSEMOVETAUNT waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_SelectingNotAllowedMoveTauntInPalace:: printstring STRINGID_PKMNCANTUSEMOVETAUNT goto BattleScript_SelectingUnusableMoveInPalace BattleScript_WishComesTrue:: trywish 0x1, BattleScript_WishButFullHp playanimation TARGET, ANIM_WISH_HEAL, NULL printstring STRINGID_PKMNWISHCAMETRUE waitmessage 0x40 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate TARGET datahpupdate TARGET printstring STRINGID_PKMNREGAINEDHEALTH waitmessage 0x40 end2 BattleScript_WishButFullHp:: printstring STRINGID_PKMNWISHCAMETRUE waitmessage 0x40 pause 0x20 printstring STRINGID_PKMNHPFULL waitmessage 0x40 end2 BattleScript_IngrainTurnHeal:: playanimation ATTACKER, ANIM_INGRAIN_HEAL, NULL printstring STRINGID_PKMNABSORBEDNUTRIENTS waitmessage 0x40 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate ATTACKER datahpupdate ATTACKER end2 BattleScript_PrintMonIsRooted:: pause 0x20 printstring STRINGID_PKMNANCHOREDITSELF waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_AtkDefDown:: setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x6, 0xD playstatchangeanimation ATTACKER, 0x2, 0x9 setstatchanger ATK, 1, TRUE statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB144 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB144 printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DB144:: playstatchangeanimation ATTACKER, 0x4, 0x9 setstatchanger DEF, 1, TRUE statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB167 jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB167 printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DB167:: return BattleScript_KnockedOff:: playanimation TARGET, ANIM_ITEM_KNOCKOFF, NULL printstring STRINGID_PKMNKNOCKEDOFF waitmessage 0x40 return BattleScript_MoveUsedIsImprisoned:: printstring STRINGID_PKMNCANTUSEMOVESEALED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_SelectingImprisionedMove:: printselectionstring STRINGID_PKMNCANTUSEMOVESEALED endselectionscript BattleScript_SelectingImprisionedMoveInPalace:: printstring STRINGID_PKMNCANTUSEMOVESEALED goto BattleScript_SelectingUnusableMoveInPalace BattleScript_GrudgeTakesPp:: printstring STRINGID_PKMNLOSTPPGRUDGE waitmessage 0x40 return BattleScript_MagicCoatBounce:: attackstring ppreduce pause 0x20 printstring STRINGID_PKMNMOVEBOUNCED waitmessage 0x40 orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000 setmagiccoattarget ATTACKER return BattleScript_SnatchedMove:: attackstring ppreduce snatchsetbanks playanimation TARGET, ANIM_SNATCH_MOVE, NULL printstring STRINGID_PKMNSNATCHEDMOVE waitmessage 0x40 orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000 atk5F return BattleScript_EnduredMsg:: printstring STRINGID_PKMNENDUREDHIT waitmessage 0x40 return BattleScript_OneHitKOMsg:: printstring STRINGID_ONEHITKO waitmessage 0x40 return BattleScript_SAtkDown2:: setbyte sFIELD_1B, 0x0 playstatchangeanimation ATTACKER, 0x10, 0xB setstatchanger SPATK, 2, TRUE statbuffchange AFFECTS_USER | CERTAIN | 0x1, BattleScript_82DB1FE jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x2, BattleScript_82DB1FE printfromtable gStatDownStringIds waitmessage 0x40 BattleScript_82DB1FE:: return BattleScript_FocusPunchSetUp:: printstring STRINGID_EMPTYSTRING3 waitmessage 0x1 playanimation ATTACKER, ANIM_x14, NULL printstring STRINGID_PKMNTIGHTENINGFOCUS waitmessage 0x40 end2 BattleScript_MoveUsedIsAsleep:: printstring STRINGID_PKMNFASTASLEEP waitmessage 0x40 statusanimation ATTACKER goto BattleScript_MoveEnd BattleScript_MoveUsedWokeUp:: bicword gHitMarker, HITMARKER_x10 printfromtable gWokeUpStringIds waitmessage 0x40 updatestatusicon ATTACKER return BattleScript_MonWokeUpInUproar:: printstring STRINGID_PKMNWOKEUPINUPROAR waitmessage 0x40 updatestatusicon ATTACKER end2 BattleScript_PoisonTurnDmg:: printstring STRINGID_PKMNHURTBYPOISON waitmessage 0x40 BattleScript_DoStatusTurnDmg:: statusanimation ATTACKER BattleScript_DoTurnDmg:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate ATTACKER datahpupdate ATTACKER tryfaintmon ATTACKER, FALSE, NULL atk24 BattleScript_DoTurnDmgEnd BattleScript_DoTurnDmgEnd:: end2 BattleScript_BurnTurnDmg:: printstring STRINGID_PKMNHURTBYBURN waitmessage 0x40 goto BattleScript_DoStatusTurnDmg BattleScript_MoveUsedIsFrozen:: printstring STRINGID_PKMNISFROZEN waitmessage 0x40 statusanimation ATTACKER goto BattleScript_MoveEnd BattleScript_MoveUsedUnfroze:: printfromtable gGotDefrostedStringIds waitmessage 0x40 updatestatusicon ATTACKER return BattleScript_DefrostedViaFireMove:: printstring STRINGID_PKMNWASDEFROSTED waitmessage 0x40 updatestatusicon TARGET return BattleScript_MoveUsedIsParalyzed:: printstring STRINGID_PKMNISPARALYZED waitmessage 0x40 statusanimation ATTACKER cancelmultiturnmoves ATTACKER goto BattleScript_MoveEnd BattleScript_MoveUsedFlinched:: printstring STRINGID_PKMNFLINCHED waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_PrintUproarOverTurns:: printfromtable gUproarOverTurnStringIds waitmessage 0x40 end2 BattleScript_ThrashConfuses:: chosenstatus2animation ATTACKER, STATUS2_CONFUSION printstring STRINGID_PKMNFATIGUECONFUSION waitmessage 0x40 end2 BattleScript_MoveUsedIsConfused:: printstring STRINGID_PKMNISCONFUSED waitmessage 0x40 status2animation ATTACKER, STATUS2_CONFUSION jumpifbyte EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_MoveUsedIsConfusedRet BattleScript_DoSelfConfusionDmg:: cancelmultiturnmoves ATTACKER adjustnormaldamage2 printstring STRINGID_ITHURTCONFUSION waitmessage 0x40 effectivenesssound hitanimation ATTACKER waitstate orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate ATTACKER datahpupdate ATTACKER resultmessage waitmessage 0x40 tryfaintmon ATTACKER, FALSE, NULL goto BattleScript_MoveEnd BattleScript_MoveUsedIsConfusedRet:: return BattleScript_MoveUsedIsConfusedNoMore:: printstring STRINGID_PKMNHEALEDCONFUSION waitmessage 0x40 return BattleScript_PrintPayDayMoneyString:: printstring STRINGID_PKMNPICKEDUPITEM waitmessage 0x40 return BattleScript_WrapTurnDmg:: playanimation ATTACKER, ANIM_TURN_TRAP, sANIM_ARG1 printstring STRINGID_PKMNHURTBY waitmessage 0x40 goto BattleScript_DoTurnDmg BattleScript_WrapEnds:: printstring STRINGID_PKMNFREEDFROM waitmessage 0x40 end2 BattleScript_MoveUsedIsInLove:: printstring STRINGID_PKMNINLOVE waitmessage 0x40 status2animation ATTACKER, STATUS2_INFATUATION return BattleScript_MoveUsedIsParalyzedCantAttack:: printstring STRINGID_PKMNIMMOBILIZEDBYLOVE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_NightmareTurnDmg:: printstring STRINGID_PKMNLOCKEDINNIGHTMARE waitmessage 0x40 status2animation ATTACKER, STATUS2_NIGHTMARE goto BattleScript_DoTurnDmg BattleScript_CurseTurnDmg:: printstring STRINGID_PKMNAFFLICTEDBYCURSE waitmessage 0x40 status2animation ATTACKER, STATUS2_CURSED goto BattleScript_DoTurnDmg BattleScript_TargetPRLZHeal:: printstring STRINGID_PKMNHEALEDPARALYSIS waitmessage 0x40 updatestatusicon TARGET return BattleScript_MoveEffectSleep:: statusanimation EFFECT_BANK printfromtable gFellAsleepStringIds waitmessage 0x40 BattleScript_UpdateEffectStatusIconRet:: updatestatusicon EFFECT_BANK waitstate return BattleScript_YawnMakesAsleep:: statusanimation EFFECT_BANK printstring STRINGID_PKMNFELLASLEEP waitmessage 0x40 updatestatusicon EFFECT_BANK waitstate makevisible EFFECT_BANK end2 BattleScript_MoveEffectPoison:: statusanimation EFFECT_BANK printfromtable gGotPoisonedStringIds waitmessage 0x40 goto BattleScript_UpdateEffectStatusIconRet BattleScript_MoveEffectBurn:: statusanimation EFFECT_BANK printfromtable gGotBurnedStringIds waitmessage 0x40 goto BattleScript_UpdateEffectStatusIconRet BattleScript_MoveEffectFreeze:: statusanimation EFFECT_BANK printfromtable gGotFrozenStringIds waitmessage 0x40 goto BattleScript_UpdateEffectStatusIconRet BattleScript_MoveEffectParalysis:: statusanimation EFFECT_BANK printfromtable gGotParalyzedStringIds waitmessage 0x40 goto BattleScript_UpdateEffectStatusIconRet BattleScript_MoveEffectUproar:: printstring STRINGID_PKMNCAUSEDUPROAR waitmessage 0x40 return BattleScript_MoveEffectToxic:: statusanimation EFFECT_BANK printstring STRINGID_PKMNBADLYPOISONED waitmessage 0x40 goto BattleScript_UpdateEffectStatusIconRet BattleScript_MoveEffectPayDay:: printstring STRINGID_COINSSCATTERED waitmessage 0x40 return BattleScript_MoveEffectWrap:: printfromtable gWrappedStringIds waitmessage 0x40 return BattleScript_MoveEffectConfusion:: chosenstatus2animation EFFECT_BANK, STATUS2_CONFUSION printstring STRINGID_PKMNWASCONFUSED waitmessage 0x40 return BattleScript_MoveEffectRecoil33:: jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil33 jumpifability ATTACKER, ABILITY_ROCK_HEAD, BattleScript_Recoil33End BattleScript_DoRecoil33:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate ATTACKER datahpupdate ATTACKER printstring STRINGID_PKMNHITWITHRECOIL waitmessage 0x40 tryfaintmon ATTACKER, FALSE, NULL BattleScript_Recoil33End:: return BattleScript_ItemSteal:: playanimation TARGET, ANIM_ITEM_STEAL, NULL printstring STRINGID_PKMNSTOLEITEM waitmessage 0x40 return BattleScript_DrizzleActivates:: pause 0x20 printstring STRINGID_PKMNMADEITRAIN waitstate playanimation BANK0, ANIM_RAIN_CONTINUES, NULL call BattleScript_WeatherFormChanges end3 BattleScript_SpeedBoostActivates:: playanimation ATTACKER, ANIM_STATS_CHANGE, sANIM_ARG1 printstring STRINGID_PKMNRAISEDSPEED waitmessage 0x40 end3 BattleScript_TraceActivates:: pause 0x20 printstring STRINGID_PKMNTRACED waitmessage 0x40 end3 BattleScript_RainDishActivates:: printstring STRINGID_PKMNSXRESTOREDHPALITTLE2 waitmessage 0x40 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate ATTACKER datahpupdate ATTACKER end3 BattleScript_SandstreamActivates:: pause 0x20 printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM waitstate playanimation BANK0, ANIM_SANDSTORM_CONTINUES, NULL call BattleScript_WeatherFormChanges end3 BattleScript_ShedSkinActivates:: printstring STRINGID_PKMNSXCUREDYPROBLEM waitmessage 0x40 updatestatusicon ATTACKER end3 BattleScript_WeatherFormChanges:: setbyte sBANK, 0x0 BattleScript_WeatherFormChangesLoop:: trycastformdatachange addbyte sBANK, 0x1 jumpifbytenotequal sBANK, gBattleBanksCount, BattleScript_WeatherFormChangesLoop return BattleScript_CastformChange:: call BattleScript_82DB4AF end3 BattleScript_82DB4AF:: docastformchangeanimation waitstate printstring STRINGID_PKMNTRANSFORMED waitmessage 0x40 return BattleScript_82DB4B8:: call BattleScript_82DB4BE end3 BattleScript_82DB4BE:: pause 0x20 BattleScript_82DB4C1:: setbyte gBankDefender, 0x0 setstatchanger ATK, 1, TRUE BattleScript_82DB4CD:: trygetintimidatetarget BattleScript_82DB51B jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DB510 jumpifability TARGET, ABILITY_CLEAR_BODY, BattleScript_82DB51C jumpifability TARGET, ABILITY_HYPER_CUTTER, BattleScript_82DB51C jumpifability TARGET, ABILITY_WHITE_SMOKE, BattleScript_82DB51C statbuffchange 0x21, BattleScript_82DB510 jumpifbyte GREATER_THAN, cMULTISTRING_CHOOSER, 0x1, BattleScript_82DB510 setgraphicalstatchangevalues playanimation TARGET, ANIM_STATS_CHANGE, sANIM_ARG1 printstring STRINGID_PKMNCUTSATTACKWITH waitmessage 0x40 BattleScript_82DB510:: addbyte gBankDefender, 0x1 goto BattleScript_82DB4CD BattleScript_82DB51B:: return BattleScript_82DB51C:: pause 0x20 printstring STRINGID_PREVENTEDFROMWORKING waitmessage 0x40 goto BattleScript_82DB510 BattleScript_DroughtActivates:: pause 0x20 printstring STRINGID_PKMNSXINTENSIFIEDSUN waitstate playanimation BANK0, ANIM_SUN_CONTINUES, NULL call BattleScript_WeatherFormChanges end3 BattleScript_TookAttack:: attackstring pause 0x20 printstring STRINGID_PKMNSXTOOKATTACK waitmessage 0x40 orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED return BattleScript_SturdyPreventsOHKO:: pause 0x20 printstring STRINGID_PKMNPROTECTEDBY pause 0x40 goto BattleScript_MoveEnd BattleScript_DampStopsExplosion:: pause 0x20 printstring STRINGID_PKMNPREVENTSUSAGE pause 0x40 goto BattleScript_MoveEnd BattleScript_MoveHPDrain_PPLoss:: ppreduce BattleScript_MoveHPDrain:: attackstring pause 0x20 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate TARGET datahpupdate TARGET printstring STRINGID_PKMNRESTOREDHPUSING waitmessage 0x40 orbyte gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE goto BattleScript_MoveEnd BattleScript_MonMadeMoveUseless_PPLoss:: ppreduce BattleScript_MonMadeMoveUseless:: attackstring pause 0x20 printstring STRINGID_PKMNSXMADEYUSELESS waitmessage 0x40 orbyte gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE goto BattleScript_MoveEnd BattleScript_FlashFireBoost_PPLoss:: ppreduce BattleScript_FlashFireBoost:: attackstring pause 0x20 printfromtable gFlashFireStringIds waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_AbilityPreventsPhasingOut:: pause 0x20 printstring STRINGID_PKMNANCHORSITSELFWITH waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_AbilityNoStatLoss:: pause 0x20 printstring STRINGID_PKMNPREVENTSSTATLOSSWITH waitmessage 0x40 return BattleScript_BRNPrevention:: pause 0x20 printfromtable gBRNPreventionStringIds waitmessage 0x40 return BattleScript_PRLZPrevention:: pause 0x20 printfromtable gPRLZPreventionStringIds waitmessage 0x40 return BattleScript_PSNPrevention:: pause 0x20 printfromtable gPSNPreventionStringIds waitmessage 0x40 return BattleScript_ObliviousPreventsAttraction:: pause 0x20 printstring STRINGID_PKMNPREVENTSROMANCEWITH waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_FlinchPrevention:: pause 0x20 printstring STRINGID_PKMNSXPREVENTSFLINCHING waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_OwnTempoPrevents:: pause 0x20 printstring STRINGID_PKMNPREVENTSCONFUSIONWITH waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_SoundproofProtected:: attackstring ppreduce pause 0x20 printstring STRINGID_PKMNSXBLOCKSY waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_AbilityNoSpecificStatLoss:: pause 0x20 printstring STRINGID_PKMNSXPREVENTSYLOSS waitmessage 0x40 setbyte cMULTISTRING_CHOOSER, 0x3 return BattleScript_StickyHoldActivates:: pause 0x20 printstring STRINGID_PKMNSXMADEYINEFFECTIVE waitmessage 0x40 goto BattleScript_MoveEnd BattleScript_ColorChangeActivates:: printstring STRINGID_PKMNCHANGEDTYPEWITH waitmessage 0x40 return BattleScript_RoughSkinActivates:: orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 healthbarupdate ATTACKER datahpupdate ATTACKER printstring STRINGID_PKMNHURTSWITH waitmessage 0x40 tryfaintmon ATTACKER, FALSE, NULL return BattleScript_CuteCharmActivates:: status2animation ATTACKER, STATUS2_INFATUATION printstring STRINGID_PKMNSXINFATUATEDY waitmessage 0x40 return BattleScript_ApplySecondaryEffect:: waitstate seteffectsecondary return BattleScript_SynchronizeActivates:: waitstate seteffectprimary return BattleScript_NoItemSteal:: pause 0x20 printstring STRINGID_PKMNSXMADEYINEFFECTIVE waitmessage 0x40 return BattleScript_AbilityCuredStatus:: printstring STRINGID_PKMNSXCUREDITSYPROBLEM waitmessage 0x40 updatestatusicon SCRIPTING_BANK return BattleScript_82DB695:: printstring STRINGID_PKMNIGNORESASLEEP waitmessage 0x40 setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 end BattleScript_IgnoresAndUsesRandomMove:: printstring STRINGID_PKMNIGNOREDORDERS waitmessage 0x40 jumptorandomattack FALSE BattleScript_MoveUsedLoafingAround:: jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x4, BattleScript_82DB6C7 setbyte gBattleCommunication, 0x0 various24 ATTACKER setbyte cMULTISTRING_CHOOSER, 0x4 BattleScript_82DB6C7:: printfromtable gInobedientStringIds waitmessage 0x40 setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 end BattleScript_IgnoresAndFallsAsleep:: printstring STRINGID_PKMNBEGANTONAP waitmessage 0x40 setmoveeffect EFFECT_SLEEP | AFFECTS_USER seteffectprimary setbyte sMOVEEND_STATE, 0x0 moveend 0x2, 0x10 end BattleScript_82DB6F0:: printstring STRINGID_PKMNWONTOBEY waitmessage 0x40 goto BattleScript_DoSelfConfusionDmg BattleScript_SubstituteFade:: playanimation TARGET, ANIM_SUBSTITUTE_FADE, NULL printstring STRINGID_PKMNSUBSTITUTEFADED return BattleScript_BerryCurePrlzEnd2:: call BattleScript_BerryCureParRet end2 BattleScript_BerryCureParRet:: playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMCUREDPARALYSIS waitmessage 0x40 updatestatusicon SCRIPTING_BANK removeitem SCRIPTING_BANK return BattleScript_BerryCurePsnEnd2:: call BattleScript_BerryCurePsnRet end2 BattleScript_BerryCurePsnRet:: playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMCUREDPOISON waitmessage 0x40 updatestatusicon SCRIPTING_BANK removeitem SCRIPTING_BANK return BattleScript_BerryCureBrnEnd2:: call BattleScript_BerryCureBrnRet end2 BattleScript_BerryCureBrnRet:: playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMHEALEDBURN waitmessage 0x40 updatestatusicon SCRIPTING_BANK removeitem SCRIPTING_BANK return BattleScript_BerryCureFrzEnd2:: call BattleScript_BerryCureFrzRet end2 BattleScript_BerryCureFrzRet:: playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMDEFROSTEDIT waitmessage 0x40 updatestatusicon SCRIPTING_BANK removeitem SCRIPTING_BANK return BattleScript_BerryCureSlpEnd2:: call BattleScript_BerryCureSlpRet end2 BattleScript_BerryCureSlpRet:: playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMWOKEIT waitmessage 0x40 updatestatusicon SCRIPTING_BANK removeitem SCRIPTING_BANK return BattleScript_BerryCureConfusionEnd2:: call BattleScript_BerryCureConfusionRet end2 BattleScript_BerryCureConfusionRet:: playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMSNAPPEDOUT waitmessage 0x40 removeitem SCRIPTING_BANK return BattleScript_BerryCureChosenStatusEnd2:: call BattleScript_BerryCureChosenStatusRet end2 BattleScript_BerryCureChosenStatusRet:: playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL printfromtable gBerryEffectStringIds waitmessage 0x40 updatestatusicon SCRIPTING_BANK removeitem SCRIPTING_BANK return BattleScript_WhiteHerbEnd2:: call BattleScript_WhiteHerbRet end2 BattleScript_WhiteHerbRet:: playanimation SCRIPTING_BANK, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMRESTOREDSTATUS waitmessage 0x40 removeitem SCRIPTING_BANK return BattleScript_ItemHealHP_RemoveItem:: playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMRESTOREDHEALTH waitmessage 0x40 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate ATTACKER datahpupdate ATTACKER removeitem ATTACKER end2 BattleScript_BerryPPHealEnd2:: playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMRESTOREDPP waitmessage 0x40 removeitem ATTACKER end2 BattleScript_ItemHealHP_End2:: call BattleScript_ItemHealHP_Ret end2 BattleScript_ItemHealHP_Ret:: playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE waitmessage 0x40 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate ATTACKER datahpupdate ATTACKER return BattleScript_SelectingNotAllowedMoveChoiceItem:: printselectionstring STRINGID_ITEMALLOWSONLYYMOVE endselectionscript BattleScript_HangedOnMsg:: playanimation TARGET, ANIM_HANGED_ON, NULL printstring STRINGID_PKMNHUNGONWITHX waitmessage 0x40 return BattleScript_BerryConfuseHealEnd2:: playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNSITEMRESTOREDHEALTH waitmessage 0x40 orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE healthbarupdate ATTACKER datahpupdate ATTACKER printstring STRINGID_FORXCOMMAYZ waitmessage 0x40 setmoveeffect EFFECT_CONFUSION | AFFECTS_USER seteffectprimary removeitem ATTACKER end2 BattleScript_BerryStatRaiseEnd2:: playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL statbuffchange AFFECTS_USER | 0x1, BattleScript_82DB85B BattleScript_82DB85B:: setbyte cMULTISTRING_CHOOSER, 0x4 call BattleScript_StatUp removeitem ATTACKER end2 BattleScript_BerryFocusEnergyEnd2:: playanimation ATTACKER, ANIM_ITEM_EFFECT, NULL printstring STRINGID_PKMNUSEDXTOGETPUMPED waitmessage 0x40 removeitem ATTACKER end2 BattleScript_ActionSelectionItemsCantBeUsed:: printselectionstring STRINGID_ITEMSCANTBEUSEDNOW endselectionscript BattleScript_82DB87D:: printstring STRINGID_EMPTYSTRING3 return BattleScript_82DB881:: setbyte gBattleCommunication + 1, 0x0 BattleScript_82DB887:: various8 ATTACKER jumpifbyte NOT_EQUAL, gBattleCommunication, 0x1, BattleScript_82DB89D printfromtable gStringIds_85CCF0A waitmessage 0x40 BattleScript_82DB89D:: addbyte gBattleCommunication + 1, 0x1 jumpifbytenotequal gBattleCommunication + 1, gBattleBanksCount, BattleScript_82DB887 setbyte gBattleCommunication, 0x0 setbyte gBattleCommunication + 1, 0x0 end2 BattleScript_82DB8BE:: waitcry ATTACKER various21 ATTACKER playse 0x109 pause 0x8 playse 0x109 various14 ATTACKER various16 8 various17 8 pause 0x40 various15 ATTACKER various22 ATTACKER end2 BattleScript_82DB8E0:: playse SE_PINPON various14 ATTACKER various16 TARGET various17 TARGET pause 0x40 various15 ATTACKER end2 BattleScript_82DB8F3:: makevisible 11 waitstate makevisible OPPONENT1 waitstate various21 ATTACKER playse 0x109 pause 0x8 playse 0x109 pause 0x40 various14 ATTACKER various16 ATTACKER various17 ATTACKER pause 0x40 setbyte gBattleCommunication, 0x0 various9 ATTACKER pause 0x40 various9 ATTACKER various16 EFFECT_BANK various17 EFFECT_BANK various9 ATTACKER various16 GBANK_1 various17 GBANK_1 various9 ATTACKER various16 0x4 various17 0x4 various9 ATTACKER jumpifbyte EQUAL, gBattleCommunication + 1, 0x3, BattleScript_82DB973 jumpifbyte EQUAL, gBattleCommunication + 1, 0x4, BattleScript_82DB992 various16 0x5 various17 0x5 various9 ATTACKER various15 ATTACKER printstring STRINGID_DEFEATEDOPPONENTBYREFEREE waitmessage 0x40 playfaintcry OPPONENT1 waitcry ATTACKER dofaintanimation OPPONENT1 cleareffectsonfaint OPPONENT1 various10 ATTACKER end2 BattleScript_82DB973:: various16 0x6 various17 0x6 various9 ATTACKER various15 ATTACKER printstring STRINGID_LOSTTOOPPONENTBYREFEREE waitmessage 0x40 playfaintcry 11 waitcry ATTACKER dofaintanimation 11 cleareffectsonfaint 11 various11 ATTACKER end2 BattleScript_82DB992:: various16 BANK0 various17 BANK0 various9 ATTACKER various15 ATTACKER printstring STRINGID_TIEDOPPONENTBYREFEREE waitmessage 0x40 playfaintcry 11 waitcry ATTACKER dofaintanimation 11 cleareffectsonfaint 11 playfaintcry OPPONENT1 waitcry ATTACKER dofaintanimation OPPONENT1 cleareffectsonfaint OPPONENT1 various12 ATTACKER end2 BattleScript_AskIfWantsToForfeitMatch:: printselectionstring STRINGID_QUESTIONFORFEITMATCH forfeityesnobox ATTACKER endselectionscript BattleScript_PrintPlayerForfeited:: printstring STRINGID_FORFEITEDMATCH waitmessage 0x40 end2 BattleScript_PrintPlayerForfeitedLinkBattle:: printstring STRINGID_FORFEITEDMATCH waitmessage 0x40 atk57 waitmessage 0x40 end2