diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2017-11-27 14:00:29 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-27 14:00:29 -0600 |
commit | 6e317c64637fd3d041d3224e0bb0ca626454e8d4 (patch) | |
tree | 557205a64dd4f94941279b7d17dd3650f6318787 | |
parent | 64e648098870bbae6f28ede1e391d0bacab60ffa (diff) | |
parent | 77a6c30bd4511063e5a3e0a512583836e92c8293 (diff) |
Merge pull request #124 from DizzyEggg/dump_battlescripts
Dump Battle Scripts
29 files changed, 8580 insertions, 1796 deletions
diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc new file mode 100644 index 000000000..47e124a86 --- /dev/null +++ b/asm/macros/battle_script.inc @@ -0,0 +1,1389 @@ +@ commands + .macro attackcanceler + .byte 0x0 + .endm + + .macro accuracycheck param0, param1 + .byte 0x1 + .4byte \param0 + .2byte \param1 + .endm + + .macro attackstring + .byte 0x2 + .endm + + .macro ppreduce + .byte 0x3 + .endm + + .macro critcalc + .byte 0x4 + .endm + + .macro damagecalc + .byte 0x5 + .endm + + .macro typecalc + .byte 0x6 + .endm + + .macro adjustnormaldamage + .byte 0x7 + .endm + + .macro adjustnormaldamage2 + .byte 0x8 + .endm + + .macro attackanimation + .byte 0x9 + .endm + + .macro waitanimation + .byte 0xa + .endm + + .macro healthbarupdate bank + .byte 0xb + .byte \bank + .endm + + .macro datahpupdate bank + .byte 0xc + .byte \bank + .endm + + .macro critmessage + .byte 0xd + .endm + + .macro effectivenesssound + .byte 0xe + .endm + + .macro resultmessage + .byte 0xf + .endm + + .macro printstring param0 + .byte 0x10 + .2byte \param0 + .endm + + .macro printselectionstring param0 + .byte 0x11 + .2byte \param0 + .endm + + .macro waitmessage param0 + .byte 0x12 + .2byte \param0 + .endm + + .macro printfromtable param0 + .byte 0x13 + .4byte \param0 + .endm + + .macro printselectionstringfromtable param0 + .byte 0x14 + .4byte \param0 + .endm + + .macro seteffectwithchance + .byte 0x15 + .endm + + .macro seteffectprimary + .byte 0x16 + .endm + + .macro seteffectsecondary + .byte 0x17 + .endm + + .macro clearstatusfromeffect bank + .byte 0x18 + .byte \bank + .endm + + .macro tryfaintmon bank, param1, param2 + .byte 0x19 + .byte \bank + .byte \param1 + .4byte \param2 + .endm + + .macro dofaintanimation bank + .byte 0x1a + .byte \bank + .endm + + .macro cleareffectsonfaint bank + .byte 0x1b + .byte \bank + .endm + + .macro jumpifstatus bank, status1, param2 + .byte 0x1c + .byte \bank + .4byte \status1 + .4byte \param2 + .endm + + .macro jumpifstatus2 bank, status2, param2 + .byte 0x1d + .byte \bank + .4byte \status2 + .4byte \param2 + .endm + + .macro jumpifability param0, ability, param2 + .byte 0x1e + .byte \param0 + .byte \ability + .4byte \param2 + .endm + + .macro jumpifsideaffecting bank, sidestatus, param2 + .byte 0x1f + .byte \bank + .2byte \sidestatus + .4byte \param2 + .endm + + .macro jumpifstat bank, ifflag, stat, param3, param4 + .byte 0x20 + .byte \bank + .byte \ifflag + .byte \stat + .byte \param3 + .4byte \param4 + .endm + + .macro jumpifstatus3condition bank, status3, param2, param3 + .byte 0x21 + .byte \bank + .4byte \status3 + .byte \param2 + .4byte \param3 + .endm + + .macro jumpiftype bank, type, param2 + .byte 0x22 + .byte \bank + .byte \type + .4byte \param2 + .endm + + .macro getexp bank + .byte 0x23 + .byte \bank + .endm + + .macro atk24 param0 + .byte 0x24 + .4byte \param0 + .endm + + .macro movevaluescleanup + .byte 0x25 + .endm + + .macro setmultihit param0 + .byte 0x26 + .byte \param0 + .endm + + .macro decrementmultihit param0 + .byte 0x27 + .4byte \param0 + .endm + + .macro goto param0 + .byte 0x28 + .4byte \param0 + .endm + + .macro jumpifbyte ifflag, param1, param2, param3 + .byte 0x29 + .byte \ifflag + .4byte \param1 + .byte \param2 + .4byte \param3 + .endm + + .macro jumpifhalfword ifflag, param1, param2, param3 + .byte 0x2a + .byte \ifflag + .4byte \param1 + .2byte \param2 + .4byte \param3 + .endm + + .macro jumpifword ifflag, param1, param2, param3 + .byte 0x2b + .byte \ifflag + .4byte \param1 + .4byte \param2 + .4byte \param3 + .endm + + .macro jumpifarrayequal param0, param1, param2, param3 + .byte 0x2c + .4byte \param0 + .4byte \param1 + .byte \param2 + .4byte \param3 + .endm + + .macro jumpifarraynotequal param0, param1, param2, param3 + .byte 0x2d + .4byte \param0 + .4byte \param1 + .byte \param2 + .4byte \param3 + .endm + + .macro setbyte param0, param1 + .byte 0x2e + .4byte \param0 + .byte \param1 + .endm + + .macro addbyte param0, param1 + .byte 0x2f + .4byte \param0 + .byte \param1 + .endm + + .macro subbyte param0, param1 + .byte 0x30 + .4byte \param0 + .byte \param1 + .endm + + .macro copyarray param0, param1, param2 + .byte 0x31 + .4byte \param0 + .4byte \param1 + .byte \param2 + .endm + + .macro copyarraywithindex param0, param1, param2, param3 + .byte 0x32 + .4byte \param0 + .4byte \param1 + .4byte \param2 + .byte \param3 + .endm + + .macro orbyte param0, param1 + .byte 0x33 + .4byte \param0 + .byte \param1 + .endm + + .macro orhalfword param0, param1 + .byte 0x34 + .4byte \param0 + .2byte \param1 + .endm + + .macro orword param0, param1 + .byte 0x35 + .4byte \param0 + .4byte \param1 + .endm + + .macro bicbyte param0, param1 + .byte 0x36 + .4byte \param0 + .byte \param1 + .endm + + .macro bichalfword param0, param1 + .byte 0x37 + .4byte \param0 + .2byte \param1 + .endm + + .macro bicword param0, param1 + .byte 0x38 + .4byte \param0 + .4byte \param1 + .endm + + .macro pause param0 + .byte 0x39 + .2byte \param0 + .endm + + .macro waitstate + .byte 0x3a + .endm + + .macro healthbar_update bank + .byte 0x3b + .byte \bank + .endm + + .macro return + .byte 0x3c + .endm + + .macro end + .byte 0x3d + .endm + + .macro end2 + .byte 0x3e + .endm + + .macro end3 + .byte 0x3f + .endm + + .macro jumpifaffectedbyprotect param0 + .byte 0x40 + .4byte \param0 + .endm + + .macro call param0 + .byte 0x41 + .4byte \param0 + .endm + + .macro jumpiftype2 bank, type, param2 + .byte 0x42 + .byte \bank + .byte \type + .4byte \param2 + .endm + + .macro jumpifabilitypresent ability, param1 + .byte 0x43 + .byte \ability + .4byte \param1 + .endm + + .macro endselectionscript + .byte 0x44 + .endm + + .macro playanimation bank, param1, param2 + .byte 0x45 + .byte \bank + .byte \param1 + .4byte \param2 + .endm + + .macro playanimation2 bank, param1, param2 + .byte 0x46 + .byte \bank + .4byte \param1 + .4byte \param2 + .endm + + .macro setgraphicalstatchangevalues + .byte 0x47 + .endm + + .macro playstatchangeanimation bank, param1, param2 + .byte 0x48 + .byte \bank + .byte \param1 + .byte \param2 + .endm + + .macro moveend param0, param1 + .byte 0x49 + .byte \param0 + .byte \param1 + .endm + + .macro typecalc2 + .byte 0x4a + .endm + + .macro returnatktoball + .byte 0x4b + .endm + + .macro getswitchedmondata bank + .byte 0x4c + .byte \bank + .endm + + .macro switchindataupdate bank + .byte 0x4d + .byte \bank + .endm + + .macro switchinanim bank, param1 + .byte 0x4e + .byte \bank + .byte \param1 + .endm + + .macro jumpifcantswitch bank, param1 + .byte 0x4f + .byte \bank + .4byte \param1 + .endm + + .macro openpartyscreen param0, param1 + .byte 0x50 + .byte \param0 + .4byte \param1 + .endm + + .macro switchhandleorder bank, param1 + .byte 0x51 + .byte \bank + .byte \param1 + .endm + + .macro switchineffects bank + .byte 0x52 + .byte \bank + .endm + + .macro trainerslidein bank + .byte 0x53 + .byte \bank + .endm + + .macro playse param0 + .byte 0x54 + .2byte \param0 + .endm + + .macro fanfare param0 + .byte 0x55 + .2byte \param0 + .endm + + .macro playfaintcry bank + .byte 0x56 + .byte \bank + .endm + + .macro atk57 + .byte 0x57 + .endm + + .macro returntoball bank + .byte 0x58 + .byte \bank + .endm + + .macro handlelearnnewmove param0, param1, param2 + .byte 0x59 + .4byte \param0 + .4byte \param1 + .byte \param2 + .endm + + .macro yesnoboxlearnmove param0 + .byte 0x5a + .4byte \param0 + .endm + + .macro yesnoboxstoplearningmove param0 + .byte 0x5b + .4byte \param0 + .endm + + .macro hitanimation bank + .byte 0x5c + .byte \bank + .endm + + .macro getmoneyreward + .byte 0x5d + .endm + + .macro atk5E bank + .byte 0x5e + .byte \bank + .endm + + .macro atk5F + .byte 0x5f + .endm + + .macro incrementgamestat param0 + .byte 0x60 + .byte \param0 + .endm + + .macro drawpartystatussummary bank + .byte 0x61 + .byte \bank + .endm + + .macro atk62 bank + .byte 0x62 + .byte \bank + .endm + + .macro jumptorandomattack param0 + .byte 0x63 + .byte \param0 + .endm + + .macro statusanimation bank + .byte 0x64 + .byte \bank + .endm + + .macro status2animation bank, status2 + .byte 0x65 + .byte \bank + .4byte \status2 + .endm + + .macro chosenstatusanimation bank, param1, param2 + .byte 0x66 + .byte \bank + .byte \param1 + .4byte \param2 + .endm + + .macro yesnobox + .byte 0x67 + .endm + + .macro cancelallactions + .byte 0x68 + .endm + + .macro adjustsetdamage + .byte 0x69 + .endm + + .macro removeitem bank + .byte 0x6a + .byte \bank + .endm + + .macro atknameinbuff1 + .byte 0x6b + .endm + + .macro drawlvlupbox + .byte 0x6c + .endm + + .macro resetsentmonsvalue + .byte 0x6d + .endm + + .macro setatktoplayer0 + .byte 0x6e + .endm + + .macro makevisible bank + .byte 0x6f + .byte \bank + .endm + + .macro recordlastability bank + .byte 0x70 + .byte \bank + .endm + + .macro buffermovetolearn + .byte 0x71 + .endm + + .macro jumpifplayerran param0 + .byte 0x72 + .4byte \param0 + .endm + + .macro hpthresholds bank + .byte 0x73 + .byte \bank + .endm + + .macro hpthresholds2 bank + .byte 0x74 + .byte \bank + .endm + + .macro useitemonopponent + .byte 0x75 + .endm + + .macro various bank, param1 + .byte 0x76 + .byte \bank + .byte \param1 + .endm + + .macro setprotectlike + .byte 0x77 + .endm + + .macro faintifabilitynotdamp + .byte 0x78 + .endm + + .macro setatkhptozero + .byte 0x79 + .endm + + .macro jumpifnexttargetvalid param0 + .byte 0x7a + .4byte \param0 + .endm + + .macro tryhealhalfhealth param0, bank + .byte 0x7b + .4byte \param0 + .byte \bank + .endm + + .macro trymirrormove + .byte 0x7c + .endm + + .macro setrain + .byte 0x7d + .endm + + .macro setreflect + .byte 0x7e + .endm + + .macro setseeded + .byte 0x7f + .endm + + .macro manipulatedamage param0 + .byte 0x80 + .byte \param0 + .endm + + .macro trysetrest param0 + .byte 0x81 + .4byte \param0 + .endm + + .macro jumpifnotfirstturn param0 + .byte 0x82 + .4byte \param0 + .endm + + .macro nop + .byte 0x83 + .endm + + .macro jumpifcantmakeasleep param0 + .byte 0x84 + .4byte \param0 + .endm + + .macro stockpile + .byte 0x85 + .endm + + .macro stockpiletobasedamage param0 + .byte 0x86 + .4byte \param0 + .endm + + .macro stockpiletohpheal param0 + .byte 0x87 + .4byte \param0 + .endm + + .macro negativedamage + .byte 0x88 + .endm + + .macro statbuffchange param0, param1 + .byte 0x89 + .byte \param0 + .4byte \param1 + .endm + + .macro normalisebuffs + .byte 0x8a + .endm + + .macro setbide + .byte 0x8b + .endm + + .macro confuseifrepeatingattackends + .byte 0x8c + .endm + + .macro setmultihitcounter param0 + .byte 0x8d + .byte \param0 + .endm + + .macro initmultihitstring + .byte 0x8e + .endm + + .macro forcerandomswitch param0 + .byte 0x8f + .4byte \param0 + .endm + + .macro tryconversiontypechange param0 + .byte 0x90 + .4byte \param0 + .endm + + .macro givepaydaymoney + .byte 0x91 + .endm + + .macro setlightscreen + .byte 0x92 + .endm + + .macro tryKO param0 + .byte 0x93 + .4byte \param0 + .endm + + .macro damagetohalftargethp + .byte 0x94 + .endm + + .macro setsandstorm + .byte 0x95 + .endm + + .macro weatherdamage + .byte 0x96 + .endm + + .macro tryinfatuating param0 + .byte 0x97 + .4byte \param0 + .endm + + .macro updatestatusicon bank + .byte 0x98 + .byte \bank + .endm + + .macro setmist + .byte 0x99 + .endm + + .macro setfocusenergy + .byte 0x9a + .endm + + .macro transformdataexecution + .byte 0x9b + .endm + + .macro setsubstitute + .byte 0x9c + .endm + + .macro mimicattackcopy param0 + .byte 0x9d + .4byte \param0 + .endm + + .macro metronome + .byte 0x9e + .endm + + .macro dmgtolevel + .byte 0x9f + .endm + + .macro psywavedamageeffect + .byte 0xa0 + .endm + + .macro counterdamagecalculator param0 + .byte 0xa1 + .4byte \param0 + .endm + + .macro mirrorcoatdamagecalculator param0 + .byte 0xa2 + .4byte \param0 + .endm + + .macro disablelastusedattack param0 + .byte 0xa3 + .4byte \param0 + .endm + + .macro trysetencore param0 + .byte 0xa4 + .4byte \param0 + .endm + + .macro painsplitdmgcalc param0 + .byte 0xa5 + .4byte \param0 + .endm + + .macro settypetorandomresistance param0 + .byte 0xa6 + .4byte \param0 + .endm + + .macro setalwayshitflag + .byte 0xa7 + .endm + + .macro copymovepermanently param0 + .byte 0xa8 + .4byte \param0 + .endm + + .macro trychoosesleeptalkmove param0 + .byte 0xa9 + .4byte \param0 + .endm + + .macro setdestinybond + .byte 0xaa + .endm + + .macro trysetdestinybondtohappen + .byte 0xab + .endm + + .macro remaininghptopower + .byte 0xac + .endm + + .macro tryspiteppreduce param0 + .byte 0xad + .4byte \param0 + .endm + + .macro healpartystatus + .byte 0xae + .endm + + .macro cursetarget param0 + .byte 0xaf + .4byte \param0 + .endm + + .macro trysetspikes param0 + .byte 0xb0 + .4byte \param0 + .endm + + .macro setforesight + .byte 0xb1 + .endm + + .macro trysetperishsong param0 + .byte 0xb2 + .4byte \param0 + .endm + + .macro rolloutdamagecalculation + .byte 0xb3 + .endm + + .macro jumpifconfusedandstatmaxed stat, param1 + .byte 0xb4 + .byte \stat + .4byte \param1 + .endm + + .macro furycuttercalc + .byte 0xb5 + .endm + + .macro happinesstodamagecalculation + .byte 0xb6 + .endm + + .macro presentdamagecalculation + .byte 0xb7 + .endm + + .macro setsafeguard + .byte 0xb8 + .endm + + .macro magnitudedamagecalculation + .byte 0xb9 + .endm + + .macro jumpifnopursuitswitchdmg param0 + .byte 0xba + .4byte \param0 + .endm + + .macro setsunny + .byte 0xbb + .endm + + .macro maxattackhalvehp param0 + .byte 0xbc + .4byte \param0 + .endm + + .macro copyfoestats param0 + .byte 0xbd + .4byte \param0 + .endm + + .macro rapidspinfree + .byte 0xbe + .endm + + .macro setdefensecurlbit + .byte 0xbf + .endm + + .macro recoverbasedonsunlight param0 + .byte 0xc0 + .4byte \param0 + .endm + + .macro hiddenpowercalc + .byte 0xc1 + .endm + + .macro selectfirstvalidtarget + .byte 0xc2 + .endm + + .macro trysetfutureattack param0 + .byte 0xc3 + .4byte \param0 + .endm + + .macro trydobeatup param0, param1 + .byte 0xc4 + .4byte \param0 + .4byte \param1 + .endm + + .macro setsemiinvulnerablebit + .byte 0xc5 + .endm + + .macro clearsemiinvulnerablebit + .byte 0xc6 + .endm + + .macro setminimize + .byte 0xc7 + .endm + + .macro sethail + .byte 0xc8 + .endm + + .macro jumpifattackandspecialattackcannotfall param0 + .byte 0xc9 + .4byte \param0 + .endm + + .macro setforcedtarget + .byte 0xca + .endm + + .macro setcharge + .byte 0xcb + .endm + + .macro callterrainattack + .byte 0xcc + .endm + + .macro cureifburnedparalysedorpoisoned param0 + .byte 0xcd + .4byte \param0 + .endm + + .macro settorment param0 + .byte 0xce + .4byte \param0 + .endm + + .macro jumpifnodamage param0 + .byte 0xcf + .4byte \param0 + .endm + + .macro settaunt param0 + .byte 0xd0 + .4byte \param0 + .endm + + .macro trysethelpinghand param0 + .byte 0xd1 + .4byte \param0 + .endm + + .macro tryswapitems param0 + .byte 0xd2 + .4byte \param0 + .endm + + .macro trycopyability param0 + .byte 0xd3 + .4byte \param0 + .endm + + .macro trywish param0, param1 + .byte 0xd4 + .byte \param0 + .4byte \param1 + .endm + + .macro trysetroots param0 + .byte 0xd5 + .4byte \param0 + .endm + + .macro doubledamagedealtifdamaged + .byte 0xd6 + .endm + + .macro setyawn param0 + .byte 0xd7 + .4byte \param0 + .endm + + .macro setdamagetohealthdifference param0 + .byte 0xd8 + .4byte \param0 + .endm + + .macro scaledamagebyhealthratio + .byte 0xd9 + .endm + + .macro tryswapabilities param0 + .byte 0xda + .4byte \param0 + .endm + + .macro tryimprision param0 + .byte 0xdb + .4byte \param0 + .endm + + .macro trysetgrudge param0 + .byte 0xdc + .4byte \param0 + .endm + + .macro weightdamagecalculation + .byte 0xdd + .endm + + .macro asistattackselect param0 + .byte 0xde + .4byte \param0 + .endm + + .macro trysetmagiccoat param0 + .byte 0xdf + .4byte \param0 + .endm + + .macro trysetsnatch param0 + .byte 0xe0 + .4byte \param0 + .endm + + .macro trygetintimidatetarget param0 + .byte 0xe1 + .4byte \param0 + .endm + + .macro switchoutabilities bank + .byte 0xe2 + .byte \bank + .endm + + .macro jumpifhasnohp bank, param1 + .byte 0xe3 + .byte \bank + .4byte \param1 + .endm + + .macro getsecretpowereffect + .byte 0xe4 + .endm + + .macro pickup + .byte 0xe5 + .endm + + .macro docastformchangeanimation + .byte 0xe6 + .endm + + .macro trycastformdatachange + .byte 0xe7 + .endm + + .macro settypebasedhalvers param0 + .byte 0xe8 + .4byte \param0 + .endm + + .macro setweatherballtype + .byte 0xe9 + .endm + + .macro tryrecycleitem param0 + .byte 0xea + .4byte \param0 + .endm + + .macro settypetoterrain param0 + .byte 0xeb + .4byte \param0 + .endm + + .macro pursuitrelated param0 + .byte 0xec + .4byte \param0 + .endm + + .macro snatchsetbanks + .byte 0xed + .endm + + .macro removelightscreenreflect + .byte 0xee + .endm + + .macro handleballthrow + .byte 0xef + .endm + + .macro givecaughtmon + .byte 0xf0 + .endm + + .macro trysetcaughtmondexflags param0 + .byte 0xf1 + .4byte \param0 + .endm + + .macro displaydexinfo + .byte 0xf2 + .endm + + .macro trygivecaughtmonnick param0 + .byte 0xf3 + .4byte \param0 + .endm + + .macro subattackerhpbydmg + .byte 0xf4 + .endm + + .macro removeattackerstatus1 + .byte 0xf5 + .endm + + .macro finishaction + .byte 0xf6 + .endm + + .macro finishturn + .byte 0xf7 + .endm + + .macro trainerslideout param0 + .byte 0xf8 + .byte \param0 + .endm + +@ various command changed to more readable macros + .macro cancelmultiturnmoves bank + various \bank, VARIOUS_CANCEL_MULTI_TURN_MOVES + .endm + + .macro setmagiccoattarget bank + various \bank, VARIOUS_SET_MAGIC_COAT_TARGET + .endm + + .macro getifcantrunfrombattle bank + various \bank, VARIOUS_IS_RUNNING_IMPOSSIBLE + .endm + + .macro getmovetarget bank + various \bank, VARIOUS_GET_MOVE_TARGET + .endm + + .macro various4 bank + various \bank, 4 + .endm + + .macro resetintrimidatetracebits bank + various \bank, VARIOUS_RESET_INTIMIDATE_TRACE_BITS + .endm + + .macro updatechoicemoveonlvlup bank + various \bank, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP + .endm + + .macro various7 bank + various \bank, 7 + .endm + + .macro various8 bank + various \bank, 8 + .endm + + .macro various9 bank + various \bank, 9 + .endm + + .macro various10 bank + various \bank, 10 + .endm + + .macro various11 bank + various \bank, 11 + .endm + + .macro various12 bank + various \bank, 12 + .endm + + .macro forfeityesnobox bank + various \bank, VARIOUS_EMIT_YESNOBOX + .endm + + .macro various14 bank + various \bank, 14 + .endm + + .macro various15 bank + various \bank, 15 + .endm + + .macro various16 bank + various \bank, 16 + .endm + + .macro various17 bank + various \bank, 17 + .endm + + .macro waitcry bank + various \bank, VARIOUS_WAIT_CRY + .endm + + .macro returnopponentmon1toball bank + various \bank, VARIOUS_RETURN_OPPONENT_MON1 + .endm + + .macro returnopponentmon2toball bank + various \bank, VARIOUS_RETURN_OPPONENT_MON2 + .endm + + .macro various21 bank + various \bank, 21 + .endm + + .macro various22 bank + various \bank, 22 + .endm + + .macro various23 bank + various \bank, 23 + .endm + + .macro various24 bank + various \bank, 24 + .endm + + .macro setoutcomeonteleport bank + various \bank, VARIOUS_SET_TELEPORT_OUTCOME + .endm + + .macro playtrainerdefeatbgm bank + various \bank, VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC + .endm + +@ helpful macros + .macro setstatchanger stat, stages, down + setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7 + .endm + + .macro setmoveeffect effect + setbyte cEFFECT_CHOOSER \effect + .endm + + .macro chosenstatus1animation bank, status + chosenstatusanimation \bank 0x0 \status + .endm + + .macro chosenstatus2animation bank, status + chosenstatusanimation \bank 0x1 \status + .endm + + .macro sethword dst, value + setbyte \dst, \value & 0xFF + setbyte \dst + 1, (\value >> 8) & 0xFF + .endm + + .macro setword dst, value + setbyte \dst, \value & 0xFF + setbyte \dst + 1, (\value >> 8) & 0xFF + setbyte \dst + 2, (\value >> 16) & 0xFF + setbyte \dst + 3, (\value >> 24) & 0xFF + .endm + + .macro copybyte dst, src + copyarray \dst, \src, 0x1 + .endm + + .macro copyhword dst, src + copyarray \dst, \src, 0x2 + .endm + + .macro copyword dst, src + copyarray \dst, \src, 0x4 + .endm + + .macro jumpifbytenotequal byte1, byte2, jumpptr + jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr + .endm + + .macro jumpifbyteequal byte1, byte2, jumpptr + jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr + .endm + + .macro jumpifmove move, jumpptr + jumpifhalfword EQUAL, gCurrentMove, \move, \jumpptr + .endm + + .macro jumpifnotmove move, jumpptr + jumpifhalfword NOT_EQUAL, gCurrentMove, \move, \jumpptr + .endm + + .macro jumpifstatus3 bank, status, jumpptr + jumpifstatus3condition \bank, \status, 0x0, \jumpptr + .endm + + .macro jumpifnostatus3 bank, status, jumpptr + jumpifstatus3condition \bank, \status, 0x1, \jumpptr + .endm diff --git a/constants/battle_constants.inc b/constants/battle_constants.inc new file mode 100644 index 000000000..34f16a8c9 --- /dev/null +++ b/constants/battle_constants.inc @@ -0,0 +1,170 @@ +@ battle types + .set BATTLE_TYPE_DOUBLE , 0x0001 + .set BATTLE_TYPE_LINK, 0x0002 + .set BATTLE_TYPE_WILD, 0x0004 + .set BATTLE_TYPE_TRAINER, 0x0008 + .set BATTLE_TYPE_FIRST_BATTLE, 0x0010 + .set BATTLE_TYPE_20, 0x0020 + .set BATTLE_TYPE_MULTI, 0x0040 + .set BATTLE_TYPE_SAFARI, 0x0080 + .set BATTLE_TYPE_BATTLE_TOWER, 0x0100 + .set BATTLE_TYPE_WALLY_TUTORIAL, 0x0200 + .set BATTLE_TYPE_ROAMER, 0x0400 + .set BATTLE_TYPE_EREADER_TRAINER, 0x0800 + .set BATTLE_TYPE_KYOGRE_GROUDON, 0x1000 + .set BATTLE_TYPE_LEGENDARY, 0x2000 + .set BATTLE_TYPE_REGI, 0x4000 + .set BATTLE_TYPE_TWO_OPPONENTS, 0x8000 + .set BATTLE_TYPE_DOME, 0x10000 + .set BATTLE_TYPE_PALACE, 0x20000 + .set BATTLE_TYPE_ARENA, 0x40000 + .set BATTLE_TYPE_FACTORY, 0x80000 + .set BATTLE_TYPE_x100000, 0x100000 + .set BATTLE_TYPE_PYRAMID, 0x200000 + .set BATTLE_TYPE_INGAME_PARTNER, 0x400000 + .set BATTLE_TYPE_x800000, 0x800000 + .set BATTLE_TYPE_RECORDED, 0x1000000 + .set BATTLE_TYPE_x2000000, 0x2000000 + .set BATTLE_TYPE_x4000000, 0x4000000 + .set BATTLE_TYPE_SECRET_BASE, 0x8000000 + .set BATTLE_TYPE_GROUDON, 0x10000000 + .set BATTLE_TYPE_KYORGE, 0x20000000 + .set BATTLE_TYPE_RAYQUAZA, 0x40000000 + .set BATTLE_TYPE_x80000000, 0x80000000 + +@ battle outcomes + .set WON, 0x1 + .set LOST, 0x2 + .set DREW, 0x3 + .set RAN, 0x4 + .set PLAYER_TELEPORTED, 0x5 + .set MON_FLED, 0x6 + .set CAUGHT, 0x7 + .set OUT_OF_BALLS, 0x8 + .set FORFEITED, 0x9 + .set OPPONENT_TELEPORTED, 0xA + +@ identities + .set IDENTITY_PLAYER_MON1, 0 + .set IDENTITY_OPPONENT_MON1, 1 + .set IDENTITY_PLAYER_MON2, 2 + .set IDENTITY_OPPONENT_MON2, 3 + +@ status 1 + .set STATUS_SLEEP, 0x7 + .set STATUS_POISON, 0x8 + .set STATUS_BURN, 0x10 + .set STATUS_FREEZE, 0x20 + .set STATUS_PARALYSIS, 0x40 + .set STATUS_TOXIC_POISON, 0x80 + .set STATUS_TOXIC_COUNTER, 0xF00 + + .set STATUS_ANY, STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON + +@ status 2 + .set STATUS2_CONFUSION, 0x00000007 + .set STATUS2_FLINCHED, 0x00000008 + .set STATUS2_UPROAR, 0x00000070 + .set STATUS2_BIDE, 0x00000300 + .set STATUS2_LOCK_CONFUSE, 0x00000C00 + .set STATUS2_MULTIPLETURNS, 0x00001000 + .set STATUS2_WRAPPED, 0x0000E000 + .set STATUS2_INFATUATION, 0x000F0000 + .set STATUS2_FOCUS_ENERGY, 0x00100000 + .set STATUS2_TRANSFORMED, 0x00200000 + .set STATUS2_RECHARGE, 0x00400000 + .set STATUS2_RAGE, 0x00800000 + .set STATUS2_SUBSTITUTE, 0x01000000 + .set STATUS2_DESTINY_BOND, 0x02000000 + .set STATUS2_ESCAPE_PREVENTION, 0x04000000 + .set STATUS2_NIGHTMARE, 0x08000000 + .set STATUS2_CURSED, 0x10000000 + .set STATUS2_FORESIGHT, 0x20000000 + .set STATUS2_DEFENSE_CURL, 0x40000000 + .set STATUS2_TORMENT, 0x80000000 + +@ status 3 + .set STATUS3_LEECHSEED_BANK, 0x3 + .set STATUS3_LEECHSEED, 0x4 + .set STATUS3_ALWAYS_HITS, 0x18 + .set STATUS3_PERISH_SONG, 0x20 + .set STATUS3_ON_AIR, 0x40 + .set STATUS3_UNDERGROUND, 0x80 + .set STATUS3_MINIMIZED, 0x100 + .set STATUS3_ROOTED, 0x400 + .set STATUS3_CHARGED_UP, 0x200 + .set STATUS3_YAWN, 0x1800 + .set STATUS3_IMPRISONED_OTHERS, 0x2000 + .set STATUS3_GRUDGE, 0x4000 + .set STATUS3_CANT_SCORE_A_CRIT, 0x8000 + .set STATUS3_MUDSPORT, 0x10000 + .set STATUS3_WATERSPORT, 0x20000 + .set STATUS3_UNDERWATER, 0x40000 + .set STATUS3_INTIMIDATE_POKES, 0x80000 + .set STATUS3_TRACE, 0x100000 + +@ side status + .set SIDE_STATUS_REFLECT, 0x1 + .set SIDE_STATUS_LIGHTSCREEN, 0x2 + .set SIDE_STATUS_X4, 0x4 + .set SIDE_STATUS_SPIKES, 0x10 + .set SIDE_STATUS_SAFEGUARD, 0x20 + .set SIDE_STATUS_FUTUREATTACK, 0x40 + .set SIDE_STATUS_MIST, 0x100 + .set SIDE_STATUS_SPIKES_DAMAGED, 0x200 + +@ stats + .set HP, 0x0 + .set ATK, 0x1 + .set DEF, 0x2 + .set SPEED, 0x3 + .set SPATK, 0x4 + .set SPDEF, 0x5 + .set ACC, 0x6 + .set EVASION, 0x7 + +@ weather flags + .set WEATHER_RAIN_TEMPORARY, 0x01 + .set WEATHER_RAIN_DOWNPOUR, 0x02 + .set WEATHER_RAIN_PERMANENT, 0x04 + .set WEATHER_SANDSTORM_TEMPORARY, 0x08 + .set WEATHER_SANDSTORM_PERMANENT, 0x10 + .set WEATHER_SUN_TEMPORARY, 0x20 + .set WEATHER_SUN_PERMANENT, 0x40 + .set WEATHER_HAIL, 0x80 + +@ hitmarker + .set HITMARKER_x10, 0x00000010 + .set HITMARKER_x20, 0x00000020 + .set HITMARKER_DESTINYBOND, 0x00000040 + .set HITMARKER_NO_ANIMATIONS, 0x00000080 + .set HITMARKER_IGNORE_SUBSTITUTE, 0x00000100 + .set HITMARKER_NO_ATTACKSTRING, 0x00000200 + .set HITMARKER_ATTACKSTRING_PRINTED, 0x00000400 + .set HITMARKER_NO_PPDEDUCT, 0x00000800 + .set HITMARKER_PURSUIT_TRAP, 0x00001000 + .set HITMARKER_IGNORE_SAFEGUARD, 0x00002000 + .set HITMARKER_SYNCHRONISE_EFFECT, 0x00004000 + .set HITMARKER_RUN, 0x00008000 + .set HITMARKER_IGNORE_ON_AIR, 0x00010000 + .set HITMARKER_IGNORE_UNDERGROUND, 0x00020000 + .set HITMARKER_IGNORE_UNDERWATER, 0x00040000 + .set HITMARKER_UNABLE_TO_USE_MOVE, 0x00080000 + .set HITMARKER_x100000, 0x00100000 + .set HITMARKER_x200000, 0x00200000 + .set HITMARKER_x400000, 0x00400000 + .set HITMARKER_x800000, 0x00800000 + .set HITMARKER_GRUDGE, 0x01000000 + .set HITMARKER_OBEYS, 0x02000000 + .set HITMARKER_x4000000, 0x04000000 + .set HITMARKER_x8000000, 0x08000000 + +@ move flags + .set MOVESTATUS_MISSED, 0x1 + .set MOVESTATUS_SUPEREFFECTIVE, 0x2 + .set MOVESTATUS_NOTVERYEFFECTIVE, 0x4 + .set MOVESTATUS_NOTAFFECTED, 0x8 + .set MOVESTATUS_ONEHITKO, 0x10 + .set MOVESTATUS_FAILED, 0x20 + .set MOVESTATUS_ENDURED, 0x40 + .set MOVESTATUS_HUNGON, 0x80 diff --git a/constants/battle_script_constants.inc b/constants/battle_script_constants.inc new file mode 100644 index 000000000..fb0c39ab9 --- /dev/null +++ b/constants/battle_script_constants.inc @@ -0,0 +1,169 @@ +@ animation ids + .set ANIM_CASTFORM_CHANGE, 0x0 + .set ANIM_STATS_CHANGE, 0x1 + .set ANIM_SUBSTITUTE_FADE, 0x2 + .set ANIM_SUBSTITUTE_APPEAR, 0x3 + .set ANIM_x4, 0x4 + .set ANIM_ITEM_KNOCKOFF, 0x5 + .set ANIM_TURN_TRAP, 0x6 + .set ANIM_ITEM_EFFECT, 0x7 + .set ANIM_SMOKEBALL_ESCAPE, 0x8 + .set ANIM_HANGED_ON, 0x9 + .set ANIM_RAIN_CONTINUES, 0xA + .set ANIM_SUN_CONTINUES, 0xB + .set ANIM_SANDSTORM_CONTINUES, 0xC + .set ANIM_HAIL_CONTINUES, 0xD + .set ANIM_LEECH_SEED_DRAIN, 0xE + .set ANIM_MON_HIT, 0xF + .set ANIM_ITEM_STEAL, 0x10 + .set ANIM_SNATCH_MOVE, 0x11 + .set ANIM_FUTURE_SIGHT_HIT, 0x12 + .set ANIM_x13, 0x13 + .set ANIM_x14, 0x14 + .set ANIM_INGRAIN_HEAL, 0x15 + .set ANIM_WISH_HEAL, 0x16 + +@ atk 80 + .set ATK80_DMG_CHANGE_SIGN, 0x0 + .set ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP, 0x1 + .set ATK80_DMG_DOUBLED, 0x2 + +@ compare operands + .set EQUAL, 0x0 + .set NOT_EQUAL, 0x1 + .set GREATER_THAN, 0x2 + .set LESS_THAN, 0x3 + .set COMMON_BITS, 0x4 + .set NO_COMMON_BITS, 0x5 + +@ move effects + .set EFFECT_SLEEP, 0x1 + .set EFFECT_POISON, 0x2 + .set EFFECT_BURN, 0x3 + .set EFFECT_FREEZE, 0x4 + .set EFFECT_PARALYSIS, 0x5 + .set EFFECT_TOXIC, 0x6 + .set EFFECT_CONFUSION, 0x7 + .set EFFECT_FLINCH, 0x8 + .set EFFECT_TRI_ATTACK, 0x9 + .set EFFECT_UPROAR, 0xA + .set EFFECT_PAYDAY, 0xB + .set EFFECT_CHARGING, 0xC + .set EFFECT_WRAP, 0xD + .set EFFECT_RECOIL_25, 0xE + .set EFFECT_ATK_PLUS_1, 0xF + .set EFFECT_DEF_PLUS_1, 0x10 + .set EFFECT_SPD_PLUS_1, 0x11 + .set EFFECT_SP_ATK_PLUS_1, 0x12 + .set EFFECT_SP_DEF_PLUS_1, 0x13 + .set EFFECT_ACC_PLUS_1, 0x14 + .set EFFECT_EVS_PLUS_1, 0x15 + .set EFFECT_ATK_MINUS_1, 0x16 + .set EFFECT_DEF_MINUS_1, 0x17 + .set EFFECT_SPD_MINUS_1, 0x18 + .set EFFECT_SP_ATK_MINUS_1, 0x19 + .set EFFECT_SP_DEF_MINUS_1, 0x1A + .set EFFECT_ACC_MINUS_1, 0x1B + .set EFFECT_EVS_MINUS_1, 0x1C + .set EFFECT_RECHARGE, 0x1D + .set EFFECT_RAGE, 0x1E + .set EFFECT_STEAL_ITEM, 0x1F + .set EFFECT_PREVENT_ESCAPE, 0x20 + .set EFFECT_NIGHTMARE, 0x21 + .set EFFECT_ALL_STATS_UP, 0x22 + .set EFFECT_RAPIDSPIN, 0x23 + .set EFFECT_REMOVE_PARALYSIS, 0x24 + .set EFFECT_ATK_DEF_DOWN, 0x25 + .set EFFECT_RECOIL_33_PARALYSIS, 0x26 + .set EFFECT_ATK_PLUS_2, 0x27 + .set EFFECT_DEF_PLUS_2, 0x28 + .set EFFECT_SPD_PLUS_2, 0x29 + .set EFFECT_SP_ATK_PLUS_2, 0x2A + .set EFFECT_SP_DEF_PLUS_2, 0x2B + .set EFFECT_ACC_PLUS_2, 0x2C + .set EFFECT_EVS_PLUS_2, 0x2D + .set EFFECT_ATK_MINUS_2, 0x2E + .set EFFECT_DEF_MINUS_2, 0x2F + .set EFFECT_SPD_MINUS_2, 0x30 + .set EFFECT_SP_ATK_MINUS_2, 0x31 + .set EFFECT_SP_DEF_MINUS_2, 0x32 + .set EFFECT_ACC_MINUS_2, 0x33 + .set EFFECT_EVS_MINUS_2, 0x34 + .set EFFECT_THRASH, 0x35 + .set EFFECT_KNOCK_OFF, 0x36 + .set EFFECT_NOTHING_37, 0x37 + .set EFFECT_NOTHING_38, 0x38 + .set EFFECT_NOTHING_39, 0x39 + .set EFFECT_NOTHING_3A, 0x3A + .set EFFECT_SP_ATK_TWO_DOWN, 0x3B + .set EFFECT_NOTHING_3C, 0x3C + .set EFFECT_NOTHING_3D, 0x3D + .set EFFECT_NOTHING_3E, 0x3E + .set EFFECT_NOTHING_3F, 0x3F + + .set AFFECTS_USER, 0x40 + .set CERTAIN, 0x80 + +@ accuracy calc + .set NO_ACC_CALC, 0xFFFE + .set NO_ACC_CALC_CHECK_LOCK_ON, 0xFFFF + .set ACC_CURR_MOVE, 0x0 + +@ bank values + .set TARGET, 0x0 + .set ATTACKER, 0x1 + .set EFFECT_BANK, 0x2 + .set GBANK_1, 0x3 + .set ATTACKER_WITH_PARTNER, 0x4 @ only for cmd98 + .set BANK0, 0x7 + .set SCRIPTING_BANK, 0xA + .set OPPONENT1, 0xC + +@ various + .set VARIOUS_CANCEL_MULTI_TURN_MOVES, 0 + .set VARIOUS_SET_MAGIC_COAT_TARGET, 1 + .set VARIOUS_IS_RUNNING_IMPOSSIBLE, 2 + .set VARIOUS_GET_MOVE_TARGET, 3 + .set VARIOUS_RESET_INTIMIDATE_TRACE_BITS, 5 + .set VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP, 6 + .set VARIOUS_EMIT_YESNOBOX, 13 + .set VARIOUS_WAIT_CRY, 18 + .set VARIOUS_RETURN_OPPONENT_MON1, 19 + .set VARIOUS_RETURN_OPPONENT_MON2, 20 + .set VARIOUS_SET_TELEPORT_OUTCOME, 25 + .set VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC, 26 + +@ jumpifcant switch flag argument + .set ATK4F_DONT_CHECK_STATUSES, 0x80 + +@ battle scripting struct + .equiv sPAINSPLIT_HP, gBattleScripting + .equiv sBIDE_DMG, gBattleScripting + 4 + .equiv sMULTIHIT_STRING, gBattleScripting + 8 + .equiv sDMG_MULTIPLIER, gBattleScripting + 0xE + .equiv sTWOTURN_STRINGID, gBattleScripting + 0xF + .equiv sANIM_ARG1, gBattleScripting + 0x10 + .equiv sANIM_ARG2, gBattleScripting + 0x11 + .equiv sTRIPLE_KICK_POWER, gBattleScripting + 0x12 + .equiv sMOVEEND_STATE, gBattleScripting + 0x14 + .equiv sFIELD_15, gBattleScripting + 0x15 + .equiv sFIELD_16, gBattleScripting + 0x16 + .equiv sBANK, gBattleScripting + 0x17 + .equiv sANIM_TURN, gBattleScripting + 0x18 + .equiv sANIM_TARGETS_HIT, gBattleScripting + 0x19 + .equiv sSTATCHANGER, gBattleScripting + 0x1A + .equiv sFIELD_1B, gBattleScripting + 0x1B + .equiv sGIVEEXP_STATE, gBattleScripting + 0x1C + .equiv sBATTLE_STYLE, gBattleScripting + 0x1D + .equiv sLVLBOX_STATE, gBattleScripting + 0x1E + .equiv sLEARNMOVE_STATE, gBattleScripting + 0x1F + .equiv sFIELD_20, gBattleScripting + 0x20 + .equiv sRESHOW_MAIN_STATE, gBattleScripting + 0x21 + .equiv sRESHOW_HELPER_STATE, gBattleScripting + 0x22 + .equiv sFIELD_23, gBattleScripting + 0x23 + .equiv sFIELD_24, gBattleScripting + 0x24 + .equiv sMULTIPLAYER_ID, gBattleScripting + 0x25 + +@ battle communication struct + .equiv cEFFECT_CHOOSER, gBattleCommunication + 3 + .equiv cMULTISTRING_CHOOSER, gBattleCommunication + 5 diff --git a/constants/battle_text.inc b/constants/battle_text.inc new file mode 100644 index 000000000..1d3a5f346 --- /dev/null +++ b/constants/battle_text.inc @@ -0,0 +1,375 @@ + .set STRINGID_INTROMSG, 0 + .set STRINGID_INTROSENDOUT, 1 + .set STRINGID_RETURNMON, 2 + .set STRINGID_SWITCHINMON, 3 + .set STRINGID_USEDMOVE, 4 + .set STRINGID_BATTLEEND, 5 + .set STRINGID_TRAINER1LOSETEXT, 12 + .set STRINGID_PKMNGAINEDEXP, 13 + .set STRINGID_PKMNGREWTOLV, 14 + .set STRINGID_PKMNLEARNEDMOVE, 15 + .set STRINGID_TRYTOLEARNMOVE1, 16 + .set STRINGID_TRYTOLEARNMOVE2, 17 + .set STRINGID_TRYTOLEARNMOVE3, 18 + .set STRINGID_PKMNFORGOTMOVE, 19 + .set STRINGID_STOPLEARNINGMOVE, 20 + .set STRINGID_DIDNOTLEARNMOVE, 21 + .set STRINGID_PKMNLEARNEDMOVE2, 22 + .set STRINGID_ATTACKMISSED, 23 + .set STRINGID_PKMNPROTECTEDITSELF, 24 + .set STRINGID_STATSWONTINCREASE2, 25 + .set STRINGID_AVOIDEDDAMAGE, 26 + .set STRINGID_ITDOESNTAFFECT, 27 + .set STRINGID_ATTACKERFAINTED, 28 + .set STRINGID_TARGETFAINTED, 29 + .set STRINGID_PLAYERGOTMONEY, 30 + .set STRINGID_PLAYERWHITEOUT, 31 + .set STRINGID_PLAYERWHITEOUT2, 32 + .set STRINGID_PREVENTSESCAPE, 33 + .set STRINGID_HITXTIMES, 34 + .set STRINGID_PKMNFELLASLEEP, 35 + .set STRINGID_PKMNMADESLEEP, 36 + .set STRINGID_PKMNALREADYASLEEP, 37 + .set STRINGID_PKMNALREADYASLEEP2, 38 + .set STRINGID_PKMNWASNTAFFECTED, 39 + .set STRINGID_PKMNWASPOISONED, 40 + .set STRINGID_PKMNPOISONEDBY, 41 + .set STRINGID_PKMNHURTBYPOISON, 42 + .set STRINGID_PKMNALREADYPOISONED, 43 + .set STRINGID_PKMNBADLYPOISONED, 44 + .set STRINGID_PKMNENERGYDRAINED, 45 + .set STRINGID_PKMNWASBURNED, 46 + .set STRINGID_PKMNBURNEDBY, 47 + .set STRINGID_PKMNHURTBYBURN, 48 + .set STRINGID_PKMNWASFROZEN, 49 + .set STRINGID_PKMNFROZENBY, 50 + .set STRINGID_PKMNISFROZEN, 51 + .set STRINGID_PKMNWASDEFROSTED, 52 + .set STRINGID_PKMNWASDEFROSTED2, 53 + .set STRINGID_PKMNWASDEFROSTEDBY, 54 + .set STRINGID_PKMNWASPARALYZED, 55 + .set STRINGID_PKMNWASPARALYZEDBY, 56 + .set STRINGID_PKMNISPARALYZED, 57 + .set STRINGID_PKMNISALREADYPARALYZED, 58 + .set STRINGID_PKMNHEALEDPARALYSIS, 59 + .set STRINGID_PKMNDREAMEATEN, 60 + .set STRINGID_STATSWONTINCREASE, 61 + .set STRINGID_STATSWONTDECREASE, 62 + .set STRINGID_TEAMSTOPPEDWORKING, 63 + .set STRINGID_FOESTOPPEDWORKING, 64 + .set STRINGID_PKMNISCONFUSED, 65 + .set STRINGID_PKMNHEALEDCONFUSION, 66 + .set STRINGID_PKMNWASCONFUSED, 67 + .set STRINGID_PKMNALREADYCONFUSED, 68 + .set STRINGID_PKMNFELLINLOVE, 69 + .set STRINGID_PKMNINLOVE, 70 + .set STRINGID_PKMNIMMOBILIZEDBYLOVE, 71 + .set STRINGID_PKMNBLOWNAWAY, 72 + .set STRINGID_PKMNCHANGEDTYPE, 73 + .set STRINGID_PKMNFLINCHED, 74 + .set STRINGID_PKMNREGAINEDHEALTH, 75 + .set STRINGID_PKMNHPFULL, 76 + .set STRINGID_PKMNRAISEDSPDEF, 77 + .set STRINGID_PKMNRAISEDDEF, 78 + .set STRINGID_PKMNCOVEREDBYVEIL, 79 + .set STRINGID_PKMNUSEDSAFEGUARD, 80 + .set STRINGID_PKMNSAFEGUARDEXPIRED, 81 + .set STRINGID_PKMNWENTTOSLEEP, 82 + .set STRINGID_PKMNSLEPTHEALTHY, 83 + .set STRINGID_PKMNWHIPPEDWHIRLWIND, 84 + .set STRINGID_PKMNTOOKSUNLIGHT, 85 + .set STRINGID_PKMNLOWEREDHEAD, 86 + .set STRINGID_PKMNISGLOWING, 87 + .set STRINGID_PKMNFLEWHIGH, 88 + .set STRINGID_PKMNDUGHOLE, 89 + .set STRINGID_PKMNSQUEEZEDBYBIND, 90 + .set STRINGID_PKMNTRAPPEDINVORTEX, 91 + .set STRINGID_PKMNWRAPPEDBY, 92 + .set STRINGID_PKMNCLAMPED, 93 + .set STRINGID_PKMNHURTBY, 94 + .set STRINGID_PKMNFREEDFROM, 95 + .set STRINGID_PKMNCRASHED, 96 + .set STRINGID_PKMNSHROUDEDINMIST, 97 + .set STRINGID_PKMNPROTECTEDBYMIST, 98 + .set STRINGID_PKMNGETTINGPUMPED, 99 + .set STRINGID_PKMNHITWITHRECOIL, 100 + .set STRINGID_PKMNPROTECTEDITSELF2, 101 + .set STRINGID_PKMNBUFFETEDBYSANDSTORM, 102 + .set STRINGID_PKMNPELTEDBYHAIL, 103 + .set STRINGID_PKMNSEEDED, 104 + .set STRINGID_PKMNEVADEDATTACK, 105 + .set STRINGID_PKMNSAPPEDBYLEECHSEED, 106 + .set STRINGID_PKMNFASTASLEEP, 107 + .set STRINGID_PKMNWOKEUP, 108 + .set STRINGID_PKMNUPROARKEPTAWAKE, 109 + .set STRINGID_PKMNWOKEUPINUPROAR, 110 + .set STRINGID_PKMNCAUSEDUPROAR, 111 + .set STRINGID_PKMNMAKINGUPROAR, 112 + .set STRINGID_PKMNCALMEDDOWN, 113 + .set STRINGID_PKMNCANTSLEEPINUPROAR, 114 + .set STRINGID_PKMNSTOCKPILED, 115 + .set STRINGID_PKMNCANTSTOCKPILE, 116 + .set STRINGID_PKMNCANTSLEEPINUPROAR2, 117 + .set STRINGID_UPROARKEPTPKMNAWAKE, 118 + .set STRINGID_PKMNSTAYEDAWAKEUSING, 119 + .set STRINGID_PKMNSTORINGENERGY, 120 + .set STRINGID_PKMNUNLEASHEDENERGY, 121 + .set STRINGID_PKMNFATIGUECONFUSION, 122 + .set STRINGID_PKMNPICKEDUPITEM, 123 + .set STRINGID_PKMNUNAFFECTED, 124 + .set STRINGID_PKMNTRANSFORMEDINTO, 125 + .set STRINGID_PKMNMADESUBSTITUTE, 126 + .set STRINGID_PKMNHASSUBSTITUTE, 127 + .set STRINGID_SUBSTITUTEDAMAGED, 128 + .set STRINGID_PKMNSUBSTITUTEFADED, 129 + .set STRINGID_PKMNMUSTRECHARGE, 130 + .set STRINGID_PKMNRAGEBUILDING, 131 + .set STRINGID_PKMNMOVEWASDISABLED, 132 + .set STRINGID_PKMNMOVEISDISABLED, 133 + .set STRINGID_PKMNMOVEDISABLEDNOMORE, 134 + .set STRINGID_PKMNGOTENCORE, 135 + .set STRINGID_PKMNENCOREENDED, 136 + .set STRINGID_PKMNTOOKAIM, 137 + .set STRINGID_PKMNSKETCHEDMOVE, 138 + .set STRINGID_PKMNTRYINGTOTAKEFOE, 139 + .set STRINGID_PKMNTOOKFOE, 140 + .set STRINGID_PKMNREDUCEDPP, 141 + .set STRINGID_PKMNSTOLEITEM, 142 + .set STRINGID_TARGETCANTESCAPENOW, 143 + .set STRINGID_PKMNFELLINTONIGHTMARE, 144 + .set STRINGID_PKMNLOCKEDINNIGHTMARE, 145 + .set STRINGID_PKMNLAIDCURSE, 146 + .set STRINGID_PKMNAFFLICTEDBYCURSE, 147 + .set STRINGID_SPIKESSCATTERED, 148 + .set STRINGID_PKMNHURTBYSPIKES, 149 + .set STRINGID_PKMNIDENTIFIED, 150 + .set STRINGID_PKMNPERISHCOUNTFELL, 151 + .set STRINGID_PKMNBRACEDITSELF, 152 + .set STRINGID_PKMNENDUREDHIT, 153 + .set STRINGID_MAGNITUDESTRENGTH, 154 + .set STRINGID_PKMNCUTHPMAXEDATTACK, 155 + .set STRINGID_PKMNCOPIEDSTATCHANGES, 156 + .set STRINGID_PKMNGOTFREE, 157 + .set STRINGID_PKMNSHEDLEECHSEED, 158 + .set STRINGID_PKMNBLEWAWAYSPIKES, 159 + .set STRINGID_PKMNFLEDFROMBATTLE, 160 + .set STRINGID_PKMNFORESAWATTACK, 161 + .set STRINGID_PKMNTOOKATTACK, 162 + .set STRINGID_PKMNATTACK, 163 + .set STRINGID_PKMNCENTERATTENTION, 164 + .set STRINGID_PKMNCHARGINGPOWER, 165 + .set STRINGID_NATUREPOWERTURNEDINTO, 166 + .set STRINGID_PKMNSTATUSNORMAL, 167 + .set STRINGID_PKMNHASNOMOVESLEFT, 168 + .set STRINGID_PKMNSUBJECTEDTOTORMENT, 169 + .set STRINGID_PKMNCANTUSEMOVETORMENT, 170 + .set STRINGID_PKMNTIGHTENINGFOCUS, 171 + .set STRINGID_PKMNFELLFORTAUNT, 172 + .set STRINGID_PKMNCANTUSEMOVETAUNT, 173 + .set STRINGID_PKMNREADYTOHELP, 174 + .set STRINGID_PKMNSWITCHEDITEMS, 175 + .set STRINGID_PKMNCOPIEDFOE, 176 + .set STRINGID_PKMNMADEWISH, 177 + .set STRINGID_PKMNWISHCAMETRUE, 178 + .set STRINGID_PKMNPLANTEDROOTS, 179 + .set STRINGID_PKMNABSORBEDNUTRIENTS, 180 + .set STRINGID_PKMNANCHOREDITSELF, 181 + .set STRINGID_PKMNWASMADEDROWSY, 182 + .set STRINGID_PKMNKNOCKEDOFF, 183 + .set STRINGID_PKMNSWAPPEDABILITIES, 184 + .set STRINGID_PKMNSEALEDOPPONENTMOVE, 185 + .set STRINGID_PKMNCANTUSEMOVESEALED, 186 + .set STRINGID_PKMNWANTSGRUDGE, 187 + .set STRINGID_PKMNLOSTPPGRUDGE, 188 + .set STRINGID_PKMNSHROUDEDITSELF, 189 + .set STRINGID_PKMNMOVEBOUNCED, 190 + .set STRINGID_PKMNWAITSFORTARGET, 191 + .set STRINGID_PKMNSNATCHEDMOVE, 192 + .set STRINGID_PKMNMADEITRAIN, 193 + .set STRINGID_PKMNRAISEDSPEED, 194 + .set STRINGID_PKMNPROTECTEDBY, 195 + .set STRINGID_PKMNPREVENTSUSAGE, 196 + .set STRINGID_PKMNRESTOREDHPUSING, 197 + .set STRINGID_PKMNCHANGEDTYPEWITH, 198 + .set STRINGID_PKMNPREVENTSPARALYSISWITH, 199 + .set STRINGID_PKMNPREVENTSROMANCEWITH, 200 + .set STRINGID_PKMNPREVENTSPOISONINGWITH, 201 + .set STRINGID_PKMNPREVENTSCONFUSIONWITH, 202 + .set STRINGID_PKMNRAISEDFIREPOWERWITH, 203 + .set STRINGID_PKMNANCHORSITSELFWITH, 204 + .set STRINGID_PKMNCUTSATTACKWITH, 205 + .set STRINGID_PKMNPREVENTSSTATLOSSWITH, 206 + .set STRINGID_PKMNHURTSWITH, 207 + .set STRINGID_PKMNTRACED, 208 + .set STRINGID_STATSHARPLY, 209 + .set STRINGID_STATROSE, 210 + .set STRINGID_STATHARSHLY, 211 + .set STRINGID_STATFELL, 212 + .set STRINGID_PKMNSSTATCHANGED, 213 + .set STRINGID_PKMNSSTATCHANGED2, 214 + .set STRINGID_PKMNSSTATCHANGED3, 215 + .set STRINGID_PKMNSSTATCHANGED4, 216 + .set STRINGID_CRITICALHIT, 217 + .set STRINGID_ONEHITKO, 218 + .set STRINGID_123POOF, 219 + .set STRINGID_ANDELLIPSIS, 220 + .set STRINGID_NOTVERYEFFECTIVE, 221 + .set STRINGID_SUPEREFFECTIVE, 222 + .set STRINGID_GOTAWAYSAFELY, 223 + .set STRINGID_WILDPKMNFLED, 224 + .set STRINGID_NORUNNINGFROMTRAINERS, 225 + .set STRINGID_CANTESCAPE, 226 + .set STRINGID_DONTLEAVEBIRCH, 227 + .set STRINGID_BUTNOTHINGHAPPENED, 228 + .set STRINGID_BUTITFAILED, 229 + .set STRINGID_ITHURTCONFUSION, 230 + .set STRINGID_MIRRORMOVEFAILED, 231 + .set STRINGID_STARTEDTORAIN, 232 + .set STRINGID_DOWNPOURSTARTED, 233 + .set STRINGID_RAINCONTINUES, 234 + .set STRINGID_DOWNPOURCONTINUES, 235 + .set STRINGID_RAINSTOPPED, 236 + .set STRINGID_SANDSTORMBREWED, 237 + .set STRINGID_SANDSTORMRAGES, 238 + .set STRINGID_SANDSTORMSUBSIDED, 239 + .set STRINGID_SUNLIGHTGOTBRIGHT, 240 + .set STRINGID_SUNLIGHTSTRONG, 241 + .set STRINGID_SUNLIGHTFADED, 242 + .set STRINGID_STARTEDHAIL, 243 + .set STRINGID_HAILCONTINUES, 244 + .set STRINGID_HAILSTOPPED, 245 + .set STRINGID_FAILEDTOSPITUP, 246 + .set STRINGID_FAILEDTOSWALLOW, 247 + .set STRINGID_WINDBECAMEHEATWAVE, 248 + .set STRINGID_STATCHANGESGONE, 249 + .set STRINGID_COINSSCATTERED, 250 + .set STRINGID_TOOWEAKFORSUBSTITUTE, 251 + .set STRINGID_SHAREDPAIN, 252 + .set STRINGID_BELLCHIMED, 253 + .set STRINGID_FAINTINTHREE, 254 + .set STRINGID_NOPPLEFT, 255 + .set STRINGID_BUTNOPPLEFT, 256 + .set STRINGID_PLAYERUSEDITEM, 257 + .set STRINGID_WALLYUSEDITEM, 258 + .set STRINGID_TRAINERBLOCKEDBALL, 259 + .set STRINGID_DONTBEATHIEF, 260 + .set STRINGID_ITDODGEDBALL, 261 + .set STRINGID_YOUMISSEDPKMN, 262 + .set STRINGID_PKMNBROKEFREE, 263 + .set STRINGID_ITAPPEAREDCAUGHT, 264 + .set STRINGID_AARGHALMOSTHADIT, 265 + .set STRINGID_SHOOTSOCLOSE, 266 + .set STRINGID_GOTCHAPKMNCAUGHT, 267 + .set STRINGID_GOTCHAPKMNCAUGHT2, 268 + .set STRINGID_GIVENICKNAMECAPTURED, 269 + .set STRINGID_PKMNSENTTOPC, 270 + .set STRINGID_PKMNDATAADDEDTODEX, 271 + .set STRINGID_ITISRAINING, 272 + .set STRINGID_SANDSTORMISRAGING, 273 + .set STRINGID_CANTESCAPE2, 274 + .set STRINGID_PKMNIGNORESASLEEP, 275 + .set STRINGID_PKMNIGNOREDORDERS, 276 + .set STRINGID_PKMNBEGANTONAP, 277 + .set STRINGID_PKMNLOAFING, 278 + .set STRINGID_PKMNWONTOBEY, 279 + .set STRINGID_PKMNTURNEDAWAY, 280 + .set STRINGID_PKMNPRETENDNOTNOTICE, 281 + .set STRINGID_ENEMYABOUTTOSWITCHPKMN, 282 + .set STRINGID_CREPTCLOSER, 283 + .set STRINGID_CANTGETCLOSER, 284 + .set STRINGID_PKMNWATCHINGCAREFULLY, 285 + .set STRINGID_PKMNCURIOUSABOUTX, 286 + .set STRINGID_PKMNENTHRALLEDBYX, 287 + .set STRINGID_PKMNIGNOREDX, 288 + .set STRINGID_THREWPOKEBLOCKATPKMN, 289 + .set STRINGID_OUTOFSAFARIBALLS, 290 + .set STRINGID_PKMNSITEMCUREDPARALYSIS, 291 + .set STRINGID_PKMNSITEMCUREDPOISON, 292 + .set STRINGID_PKMNSITEMHEALEDBURN, 293 + .set STRINGID_PKMNSITEMDEFROSTEDIT, 294 + .set STRINGID_PKMNSITEMWOKEIT, 295 + .set STRINGID_PKMNSITEMSNAPPEDOUT, 296 + .set STRINGID_PKMNSITEMCUREDPROBLEM, 297 + .set STRINGID_PKMNSITEMRESTOREDHEALTH, 298 + .set STRINGID_PKMNSITEMRESTOREDPP, 299 + .set STRINGID_PKMNSITEMRESTOREDSTATUS, 300 + .set STRINGID_PKMNSITEMRESTOREDHPALITTLE, 301 + .set STRINGID_ITEMALLOWSONLYYMOVE, 302 + .set STRINGID_PKMNHUNGONWITHX, 303 + .set STRINGID_EMPTYSTRING3, 304 + .set STRINGID_PKMNSXPREVENTSBURNS, 305 + .set STRINGID_PKMNSXBLOCKSY, 306 + .set STRINGID_PKMNSXRESTOREDHPALITTLE2, 307 + .set STRINGID_PKMNSXWHIPPEDUPSANDSTORM, 308 + .set STRINGID_PKMNSXPREVENTSYLOSS, 309 + .set STRINGID_PKMNSXINFATUATEDY, 310 + .set STRINGID_PKMNSXMADEYINEFFECTIVE, 311 + .set STRINGID_PKMNSXCUREDYPROBLEM, 312 + .set STRINGID_ITSUCKEDLIQUIDOOZE, 313 + .set STRINGID_PKMNTRANSFORMED, 314 + .set STRINGID_ELECTRICITYWEAKENED, 315 + .set STRINGID_FIREWEAKENED, 316 + .set STRINGID_PKMNHIDUNDERWATER, 317 + .set STRINGID_PKMNSPRANGUP, 318 + .set STRINGID_HMMOVESCANTBEFORGOTTEN, 319 + .set STRINGID_XFOUNDONEY, 320 + .set STRINGID_PLAYERDEFEATEDTRAINER1, 321 + .set STRINGID_SOOTHINGAROMA, 322 + .set STRINGID_ITEMSCANTBEUSEDNOW, 323 + .set STRINGID_FORXCOMMAYZ, 324 + .set STRINGID_USINGXTHEYOFZN, 325 + .set STRINGID_PKMNUSEDXTOGETPUMPED, 326 + .set STRINGID_PKMNSXMADEYUSELESS, 327 + .set STRINGID_PKMNTRAPPEDBYSANDTOMB, 328 + .set STRINGID_EMPTYSTRING4, 329 + .set STRINGID_ABOOSTED, 330 + .set STRINGID_PKMNSXINTENSIFIEDSUN, 331 + .set STRINGID_PKMNMAKESGROUNDMISS, 332 + .set STRINGID_YOUTHROWABALLNOWRIGHT, 333 + .set STRINGID_PKMNSXTOOKATTACK, 334 + .set STRINGID_PKMNCHOSEXASDESTINY, 335 + .set STRINGID_PKMNLOSTFOCUS, 336 + .set STRINGID_USENEXTPKMN, 337 + .set STRINGID_PKMNFLEDUSINGITS, 338 + .set STRINGID_PKMNFLEDUSING, 339 + .set STRINGID_PKMNWASDRAGGEDOUT, 340 + .set STRINGID_PREVENTEDFROMWORKING, 341 + .set STRINGID_PKMNSITEMNORMALIZEDSTATUS, 342 + .set STRINGID_TRAINER1USEDITEM, 343 + .set STRINGID_BOXISFULL, 344 + .set STRINGID_PKMNAVOIDEDATTACK, 345 + .set STRINGID_PKMNSXMADEITINEFFECTIVE, 346 + .set STRINGID_PKMNSXPREVENTSFLINCHING, 347 + .set STRINGID_PKMNALREADYHASBURN, 348 + .set STRINGID_STATSWONTDECREASE2, 349 + .set STRINGID_PKMNSXBLOCKSY2, 350 + .set STRINGID_PKMNSXWOREOFF, 351 + .set STRINGID_PKMNRAISEDDEFALITTLE, 352 + .set STRINGID_PKMNRAISEDSPDEFALITTLE, 353 + .set STRINGID_THEWALLSHATTERED, 354 + .set STRINGID_PKMNSXPREVENTSYSZ, 355 + .set STRINGID_PKMNSXCUREDITSYPROBLEM, 356 + .set STRINGID_ATTACKERCANTESCAPE, 357 + .set STRINGID_PKMNOBTAINEDX, 358 + .set STRINGID_PKMNOBTAINEDX2, 359 + .set STRINGID_PKMNOBTAINEDXYOBTAINEDZ, 360 + .set STRINGID_BUTNOEFFECT, 361 + .set STRINGID_PKMNSXHADNOEFFECTONY, 362 + .set STRINGID_TWOENEMIESDEFEATED, 363 + .set STRINGID_TRAINER2LOSETEXT, 364 + .set STRINGID_PKMNINCAPABLEOFPOWER, 365 + .set STRINGID_GLINTAPPEARSINEYE, 366 + .set STRINGID_PKMNGETTINGINTOPOSITION, 367 + .set STRINGID_PKMNBEGANGROWLINGDEEPLY, 368 + .set STRINGID_PKMNEAGERFORMORE, 369 + .set STRINGID_DEFEATEDOPPONENTBYREFEREE, 370 + .set STRINGID_LOSTTOOPPONENTBYREFEREE, 371 + .set STRINGID_TIEDOPPONENTBYREFEREE, 372 + .set STRINGID_QUESTIONFORFEITMATCH, 373 + .set STRINGID_FORFEITEDMATCH, 374 + .set STRINGID_PKMNTRANSFERREDSOMEONESPC, 375 + .set STRINGID_PKMNTRANSFERREDLANETTESPC, 376 + .set STRINGID_PKMNBOXSOMEONESPCFULL, 377 + .set STRINGID_PKMNBOXLANETTESPCFULL, 378 + .set STRINGID_TRAINER1WINTEXT, 379 + .set STRINGID_TRAINER2WINTEXT, 380 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index b2dfec5d8..0be60d109 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1,586 +1,4592 @@ .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 gBattleScriptsForMoveEffects:: @ 82D86A8 - .incbin "baserom.gba", 0x2d86a8, 0x388 - -BattleScript_PresentDamageTarget:: @ 82D8A30 - .incbin "baserom.gba", 0x2d8a30, 0x1e - -BattleScript_MoveEnd:: @ 82D8A4E - .incbin "baserom.gba", 0x2d8a4e, 0x12 - -BattleScript_PauseEffectivenessSoundResultMsgEndMove:: @ 82D8A60 - .incbin "baserom.gba", 0x2d8a60, 0x274 - -BattleScript_StatUp:: @ 82D8CD4 - .incbin "baserom.gba", 0x2d8cd4, 0x91 - -BattleScript_StatDown:: @ 82D8D65 - .incbin "baserom.gba", 0x2d8d65, 0x6fd - -BattleScript_MoveUsedMustRecharge:: @ 82D9462 - .incbin "baserom.gba", 0x2d9462, 0xa7f - -BattleScript_PresentHealTarget:: @ 82D9EE1 - .incbin "baserom.gba", 0x2d9ee1, 0x1a - -BattleScript_AlreadyAtFullHp:: @ 82D9EFB - .incbin "baserom.gba", 0x2d9efb, 0x21 - -BattleScript_ButItFailed:: @ 82D9F1C - .incbin "baserom.gba", 0x2d9f1c, 0x88e - -BattleScript_FaintAttacker:: @ 82DA7AA - .incbin "baserom.gba", 0x2da7aa, 0xd - -BattleScript_FaintTarget:: @ 82DA7B7 - .incbin "baserom.gba", 0x2da7b7, 0xd - -gUnknown_082DA7C4:: @ 82DA7C4 - .incbin "baserom.gba", 0x2da7c4, 0x9 - -gUnknown_082DA7CD:: @ 82DA7CD - .incbin "baserom.gba", 0x2da7cd, 0x160 - -BattleScript_LocalTrainerBattleWon:: @ 82DA92D - .incbin "baserom.gba", 0x2da92d, 0x3d - -BattleScript_PayDayMoneyAndPickUpItems:: @ 82DA96A - .incbin "baserom.gba", 0x2da96a, 0x3 - -BattleScript_LocalBattleLost:: @ 82DA96D - .incbin "baserom.gba", 0x2da96d, 0x9e - -gUnknown_082DAA0B:: @ 82DAA0B - .incbin "baserom.gba", 0x2daa0b, 0x2a - -BattleScript_LinkBattleWonOrLost:: @ 82DAA35 - .incbin "baserom.gba", 0x2daa35, 0x52 - -BattleScript_FrontierTrainerBattleWon:: @ 82DAA87 - .incbin "baserom.gba", 0x2daa87, 0x54 - -BattleScript_SmokeBallEscape:: @ 82DAADB - .incbin "baserom.gba", 0x2daadb, 0xe - -BattleScript_RanAwayUsingMonAbility:: @ 82DAAE9 - .incbin "baserom.gba", 0x2daae9, 0x7 - -BattleScript_GotAwaySafely:: @ 82DAAF0 - .incbin "baserom.gba", 0x2daaf0, 0x7 - -BattleScript_WildMonFled:: @ 82DAAF7 - .incbin "baserom.gba", 0x2daaf7, 0x7 - -gUnknown_082DAAFE:: @ 82DAAFE - .incbin "baserom.gba", 0x2daafe, 0x4 - -BattleScript_PrintFailedToRunString:: @ 82DAB02 - .incbin "baserom.gba", 0x2dab02, 0x9 - -gUnknown_082DAB0B:: @ 82DAB0B - .incbin "baserom.gba", 0x2dab0b, 0x6 - -gUnknown_082DAB11:: @ 82DAB11 - .incbin "baserom.gba", 0x2dab11, 0x4 - -BattleScript_ActionSwitch:: @ 82DAB15 - .incbin "baserom.gba", 0x2dab15, 0xa4 - -BattleScript_Pausex20:: @ 82DABB9 - .incbin "baserom.gba", 0x2dabb9, 0x4 - -BattleScript_LevelUp:: @ 82DABBD - .incbin "baserom.gba", 0x2dabbd, 0x6f - -gUnknown_082DAC2C:: @ 82DAC2C - .incbin "baserom.gba", 0x2dac2c, 0x1b - -gUnknown_082DAC47:: @ 82DAC47 - .incbin "baserom.gba", 0x2dac47, 0x82 - -gUnknown_082DACC9:: @ 82DACC9 - .incbin "baserom.gba", 0x2dacc9, 0x9 - -gUnknown_082DACD2:: @ 82DACD2 - .incbin "baserom.gba", 0x2dacd2, 0xe - -gUnknown_082DACE0:: @ 82DACE0 - .incbin "baserom.gba", 0x2dace0, 0x7 - -gUnknown_082DACE7:: @ 82DACE7 - .incbin "baserom.gba", 0x2dace7, 0x13 - -gUnknown_082DACFA:: @ 82DACFA - .incbin "baserom.gba", 0x2dacfa, 0x11 - -gUnknown_082DAD0B:: @ 82DAD0B - .incbin "baserom.gba", 0x2dad0b, 0xa - -BattleScript_LeechSeedTurnDrain:: @ 82DAD15 - .incbin "baserom.gba", 0x2dad15, 0x5c - -BattleScript_BideStoringEnergy:: @ 82DAD71 - .incbin "baserom.gba", 0x2dad71, 0xb - -BattleScript_BideAttack:: @ 82DAD7C - .incbin "baserom.gba", 0x2dad7c, 0x48 - -BattleScript_BideNoEnergyToAttack:: @ 82DADC4 - .incbin "baserom.gba", 0x2dadc4, 0x14 - -gUnknown_082DADD8:: @ 82DADD8 - .incbin "baserom.gba", 0x2dadd8, 0x2b - -BattleScript_MistProtected:: @ 82DAE03 - .incbin "baserom.gba", 0x2dae03, 0xa - -BattleScript_RageIsBuilding:: @ 82DAE0D - .incbin "baserom.gba", 0x2dae0d, 0x7 - -BattleScript_MoveUsedIsDisabled:: @ 82DAE14 - .incbin "baserom.gba", 0x2dae14, 0xb - -gUnknown_082DAE1F:: @ 82DAE1F - .incbin "baserom.gba", 0x2dae1f, 0x4 - -BattleScript_DisabledNoMore:: @ 82DAE23 - .incbin "baserom.gba", 0x2dae23, 0x7 - -gUnknown_082DAE2A:: @ 82DAE2A - .incbin "baserom.gba", 0x2dae2a, 0xd - -BattleScript_EncoredNoMore:: @ 82DAE37 - .incbin "baserom.gba", 0x2dae37, 0x7 - -BattleScript_DestinyBondTakesLife:: @ 82DAE3E - .incbin "baserom.gba", 0x2dae3e, 0x1b - -gUnknown_082DAE59:: @ 82DAE59 - .incbin "baserom.gba", 0x2dae59, 0x37 - -gUnknown_082DAE90:: @ 82DAE90 - .incbin "baserom.gba", 0x2dae90, 0x37 - -gUnknown_082DAEC7:: @ 82DAEC7 - .incbin "baserom.gba", 0x2daec7, 0x3e - -gUnknown_082DAF05:: @ 82DAF05 - .incbin "baserom.gba", 0x2daf05, 0x1b - -gUnknown_082DAF20:: @ 82DAF20 - .incbin "baserom.gba", 0x2daf20, 0x7 - -BattleScript_AllStatsUp:: @ 82DAF27 - .incbin "baserom.gba", 0x2daf27, 0x9c - -BattleScript_RapidSpinAway:: @ 82DAFC3 - .incbin "baserom.gba", 0x2dafc3, 0x2 - -BattleScript_WrapFree:: @ 82DAFC5 - .incbin "baserom.gba", 0x2dafc5, 0x11 - -BattleScript_LeechSeedFree:: @ 82DAFD6 - .incbin "baserom.gba", 0x2dafd6, 0x7 - -BattleScript_SpikesFree:: @ 82DAFDD - .incbin "baserom.gba", 0x2dafdd, 0x7 - -gUnknown_082DAFE4:: @ 82DAFE4 - .incbin "baserom.gba", 0x2dafe4, 0x8e - -BattleScript_NoMovesLeft:: @ 82DB072 - .incbin "baserom.gba", 0x2db072, 0x4 - -gUnknown_082DB076:: @ 82DB076 - .incbin "baserom.gba", 0x2db076, 0x4 - -BattleScript_NoPPForMove:: @ 82DB07A - .incbin "baserom.gba", 0x2db07a, 0xf - -gUnknown_082DB089:: @ 82DB089 - .incbin "baserom.gba", 0x2db089, 0xf - -gUnknown_082DB098:: @ 82DB098 - .incbin "baserom.gba", 0x2db098, 0x8 - -gUnknown_082DB0A0:: @ 82DB0A0 - .incbin "baserom.gba", 0x2db0a0, 0x4 - -BattleScript_MoveUsedIsTaunted:: @ 82DB0A4 - .incbin "baserom.gba", 0x2db0a4, 0xb - -gUnknown_082DB0AF:: @ 82DB0AF - .incbin "baserom.gba", 0x2db0af, 0x8 - -BattleScript_WishComesTrue:: @ 82DB0B7 - .incbin "baserom.gba", 0x2db0b7, 0x37 - -BattleScript_IngrainTurnHeal:: @ 82DB0EE - .incbin "baserom.gba", 0x2db0ee, 0x29 - -BattleScript_AtkDefDown:: @ 82DB117 - .incbin "baserom.gba", 0x2db117, 0x51 - -BattleScript_KnockedOff:: @ 82DB168 - .incbin "baserom.gba", 0x2db168, 0xe - -BattleScript_MoveUsedIsImprisoned:: @ 82DB176 - .incbin "baserom.gba", 0x2db176, 0xb - -gUnknown_082DB181:: @ 82DB181 - .incbin "baserom.gba", 0x2db181, 0x4 - -gUnknown_082DB185:: @ 82DB185 - .incbin "baserom.gba", 0x2db185, 0x8 - -BattleScript_GrudgeTakesPp:: @ 82DB18D - .incbin "baserom.gba", 0x2db18d, 0x7 - -BattleScript_MagicCoatBounce:: @ 82DB194 - .incbin "baserom.gba", 0x2db194, 0x18 - -BattleScript_SnatchedMove:: @ 82DB1AC - .incbin "baserom.gba", 0x2db1ac, 0x1b - -BattleScript_EnduredMsg:: @ 82DB1C7 - .incbin "baserom.gba", 0x2db1c7, 0x7 - -BattleScript_OneHitKOMsg:: @ 82DB1CE - .incbin "baserom.gba", 0x2db1ce, 0x7 - -BattleScript_SAtkDown2:: @ 82DB1D5 - .incbin "baserom.gba", 0x2db1d5, 0x2a - -BattleScript_FocusPunchSetUp:: @ 82DB1FF - .incbin "baserom.gba", 0x2db1ff, 0x14 - -BattleScript_MoveUsedIsAsleep:: @ 82DB213 - .incbin "baserom.gba", 0x2db213, 0xd - -BattleScript_MoveUsedWokeUp:: @ 82DB220 - .incbin "baserom.gba", 0x2db220, 0x14 - -gUnknown_082DB234:: @ 82DB234 - .incbin "baserom.gba", 0x2db234, 0x9 - -BattleScript_PoisonTurnDmg:: @ 82DB23D - .incbin "baserom.gba", 0x2db23d, 0x22 - -BattleScript_BurnTurnDmg:: @ 82DB25F - .incbin "baserom.gba", 0x2db25f, 0xb - -BattleScript_MoveUsedIsFrozen:: @ 82DB26A - .incbin "baserom.gba", 0x2db26a, 0xd - -BattleScript_MoveUsedUnfroze:: @ 82DB277 - .incbin "baserom.gba", 0x2db277, 0xb - -BattleScript_DefrostedViaFireMove:: @ 82DB282 - .incbin "baserom.gba", 0x2db282, 0x9 - -BattleScript_MoveUsedIsParalyzed:: @ 82DB28B - .incbin "baserom.gba", 0x2db28b, 0x10 - -BattleScript_MoveUsedFlinched:: @ 82DB29B - .incbin "baserom.gba", 0x2db29b, 0xb - -gUnknown_082DB2A6:: @ 82DB2A6 - .incbin "baserom.gba", 0x2db2a6, 0x9 - -BattleScript_ThrashConfuses:: @ 82DB2AF - .incbin "baserom.gba", 0x2db2af, 0xe - -BattleScript_MoveUsedIsConfused:: @ 82DB2BD - .incbin "baserom.gba", 0x2db2bd, 0x43 - -BattleScript_MoveUsedIsConfusedNoMore:: @ 82DB300 - .incbin "baserom.gba", 0x2db300, 0x7 - -BattleScript_PrintPayDayMoneyString:: @ 82DB307 - .incbin "baserom.gba", 0x2db307, 0x7 - -BattleScript_WrapTurnDmg:: @ 82DB30E - .incbin "baserom.gba", 0x2db30e, 0x12 - -BattleScript_WrapEnds:: @ 82DB320 - .incbin "baserom.gba", 0x2db320, 0x7 - -BattleScript_MoveUsedIsInLove:: @ 82DB327 - .incbin "baserom.gba", 0x2db327, 0xd - -BattleScript_MoveUsedIsParalyzedCantAttack:: @ 82DB334 - .incbin "baserom.gba", 0x2db334, 0xb - -BattleScript_NightmareTurnDmg:: @ 82DB33F - .incbin "baserom.gba", 0x2db33f, 0x11 - -BattleScript_CurseTurnDmg:: @ 82DB350 - .incbin "baserom.gba", 0x2db350, 0x11 - -BattleScript_TargetPRLZHeal:: @ 82DB361 - .incbin "baserom.gba", 0x2db361, 0x9 - -BattleScript_MoveEffectSleep:: @ 82DB36A - .incbin "baserom.gba", 0x2db36A, 0xE - -BattleScript_YawnMakesAsleep:: @ 82DB378 - .incbin "baserom.gba", 0x2db378, 0xE - -BattleScript_MoveEffectPoison:: @ 82DB386 - .incbin "baserom.gba", 0x2db386, 0xF - -BattleScript_MoveEffectBurn:: @ 82DB395 - .incbin "baserom.gba", 0x2db395, 0xF - -BattleScript_MoveEffectFreeze:: @ 82DB3A4 - .incbin "baserom.gba", 0x2db3A4, 0xF - -BattleScript_MoveEffectParalysis:: @ 82DB3B3 - .incbin "baserom.gba", 0x2db3B3, 0xF - -BattleScript_MoveEffectUproar:: @ 82DB3C2 - .incbin "baserom.gba", 0x2db3C2, 0x7 - -BattleScript_MoveEffectToxic:: @ 82DB3C9 - .incbin "baserom.gba", 0x2db3C9, 0xD - -BattleScript_MoveEffectPayDay:: @ 82DB3D6 - .incbin "baserom.gba", 0x2db3D6, 0x7 - -BattleScript_MoveEffectWrap:: @ 82DB3DD - .incbin "baserom.gba", 0x2db3DD, 0x9 - -BattleScript_MoveEffectConfusion:: @ 82DB3E6 - .incbin "baserom.gba", 0x2db3E6, 0xE - -BattleScript_MoveEffectRecoil33:: @ 82DB3F4 - .incbin "baserom.gba", 0x2db3F4, 0x2e - -BattleScript_ItemSteal:: @ 82DB422 - .incbin "baserom.gba", 0x2db422, 0xe - -BattleScript_DrizzleActivates:: @ 82DB430 - .incbin "baserom.gba", 0x2db430, 0x14 - -BattleScript_SpeedBoostActivates:: @ 82DB444 - .incbin "baserom.gba", 0x2db444, 0xe - -BattleScript_TraceActivates:: @ 82DB452 - .incbin "baserom.gba", 0x2db452, 0xa - -BattleScript_RainDishActivates:: @ 82DB45C - .incbin "baserom.gba", 0x2db45c, 0x14 - -BattleScript_SandstreamActivates:: @ 82DB470 - .incbin "baserom.gba", 0x2db470, 0x14 - -BattleScript_ShedSkinActivates:: @ 82DB484 - .incbin "baserom.gba", 0x2db484, 0x25 - -BattleScript_CastformChange:: @ 82DB4A9 - .incbin "baserom.gba", 0x2db4a9, 0xf - -gUnknown_082DB4B8:: @ 82DB4B8 - .incbin "baserom.gba", 0x2db4b8, 0x9 - -gUnknown_082DB4C1:: @ 82DB4C1 - .incbin "baserom.gba", 0x2db4c1, 0x69 - -BattleScript_DroughtActivates:: @ 82DB52A - .incbin "baserom.gba", 0x2db52a, 0x14 - -BattleScript_TookAttack:: @ 82DB53E - .incbin "baserom.gba", 0x2db53e, 0x14 - -BattleScript_SturdyPreventsOHKO:: @ 82DB552 - .incbin "baserom.gba", 0x2db552, 0xe - -BattleScript_DampStopsExplosion:: @ 82DB560 - .incbin "baserom.gba", 0x2db560, 0xe - -BattleScript_MoveHPDrain_PPLoss:: @ 82DB56E - .incbin "baserom.gba", 0x2db56e, 0x1 - -BattleScript_MoveHPDrain:: @ 82DB56F - .incbin "baserom.gba", 0x2db56f, 0x22 - -gUnknown_082DB591:: @ 82DB591 - .incbin "baserom.gba", 0x2db591, 0x1 - -gUnknown_082DB592:: @ 82DB592 - .incbin "baserom.gba", 0x2db592, 0x15 - -BattleScript_FlashFireBoost_PPLoss:: @ 82DB5A7 - .incbin "baserom.gba", 0x2db5a7, 0x1 - -BattleScript_FlashFireBoost:: @ 82DB5A8 - .incbin "baserom.gba", 0x2db5a8, 0x1f - -BattleScript_AbilityNoStatLoss:: @ 82DB5C7 - .incbin "baserom.gba", 0x2db5c7, 0xa - -BattleScript_BRNPrevention:: @ 82DB5D1 - .incbin "baserom.gba", 0x2db5d1, 0xc - -BattleScript_PRLZPrevention:: @ 82DB5DD - .incbin "baserom.gba", 0x2db5dd, 0xc - -BattleScript_PSNPrevention:: @ 82DB5E9 - .incbin "baserom.gba", 0x2db5e9, 0xc - -BattleScript_ObliviousPreventsAttraction:: @ 82DB5F5 - .incbin "baserom.gba", 0x2db5f5, 0xe - -BattleScript_FlinchPrevention:: @ 82DB603 - .incbin "baserom.gba", 0x2db603, 0x1c - -BattleScript_SoundproofProtected:: @ 82DB61F - .incbin "baserom.gba", 0x2db61f, 0x10 - -BattleScript_AbilityNoSpecificStatLoss:: @ 82DB62F - .incbin "baserom.gba", 0x2db62f, 0x10 - -BattleScript_StickyHoldActivates:: @ 82DB63F - .incbin "baserom.gba", 0x2db63f, 0xe - -BattleScript_ColorChangeActivates:: @ 82DB64D - .incbin "baserom.gba", 0x2db64d, 0x7 - -BattleScript_RoughSkinActivates:: @ 82DB654 - .incbin "baserom.gba", 0x2db654, 0x1b - -BattleScript_CuteCharmActivates:: @ 82DB66F - .incbin "baserom.gba", 0x2db66f, 0xd - -BattleScript_ApplySecondaryEffect:: @ 82DB67C - .incbin "baserom.gba", 0x2db67c, 0x3 - -BattleScript_SynchronizeActivates:: @ 82DB67F - .incbin "baserom.gba", 0x2db67f, 0x3 - -BattleScript_NoItemSteal:: @ 82DB682 - .incbin "baserom.gba", 0x2db682, 0xa - -gUnknown_082DB68C:: @ 82DB68C - .incbin "baserom.gba", 0x2db68c, 0x9 - -gUnknown_082DB695:: @ 82DB695 - .incbin "baserom.gba", 0x2db695, 0x10 - -gUnknown_082DB6A5:: @ 82DB6A5 - .incbin "baserom.gba", 0x2db6a5, 0x8 - -BattleScript_MoveUsedLoafingAround:: @ 82DB6AD - .incbin "baserom.gba", 0x2db6ad, 0x2c - -gUnknown_082DB6D9:: @ 82DB6D9 - .incbin "baserom.gba", 0x2db6d9, 0x17 - -gUnknown_082DB6F0:: @ 82DB6F0 - .incbin "baserom.gba", 0x2db6f0, 0xb - -BattleScript_SubstituteFade:: @ 82DB6FB - .incbin "baserom.gba", 0x2db6fb, 0xb - -BattleScript_BerryCurePrlzEnd2:: @ 82DB706 - .incbin "baserom.gba", 0x2db706, 0x6 - -BattleScript_BerryCureParRet:: @ 82DB70C - .incbin "baserom.gba", 0x2db70c, 0x12 - -BattleScript_BerryCurePsnEnd2:: @ 82DB71E - .incbin "baserom.gba", 0x2db71e, 0x6 - -BattleScript_BerryCurePsnRet:: @ 82DB724 - .incbin "baserom.gba", 0x2db724, 0x12 - -BattleScript_BerryCureBrnEnd2:: @ 82DB736 - .incbin "baserom.gba", 0x2db736, 0x6 - -BattleScript_BerryCureBrnRet:: @ 82DB73C - .incbin "baserom.gba", 0x2db73c, 0x12 - -BattleScript_BerryCureFrzEnd2:: @ 82DB74E - .incbin "baserom.gba", 0x2db74e, 0x6 - -BattleScript_BerryCureFrzRet:: @ 82DB754 - .incbin "baserom.gba", 0x2db754, 0x12 - -BattleScript_BerryCureSlpEnd2:: @ 82DB766 - .incbin "baserom.gba", 0x2db766, 0x6 - -BattleScript_BerryCureSlpRet:: @ 82DB76C - .incbin "baserom.gba", 0x2db76c, 0x12 - -BattleScript_BerryCureConfusionEnd2:: @ 82DB77E - .incbin "baserom.gba", 0x2db77e, 0x6 - -BattleScript_BerryCureConfusionRet:: @ 82DB784 - .incbin "baserom.gba", 0x2db784, 0x10 - -BattleScript_BerryCureChosenStatusEnd2:: @ 82DB794 - .incbin "baserom.gba", 0x2db794, 0x6 - -BattleScript_BerryCureChosenStatusRet:: @ 82DB79A - .incbin "baserom.gba", 0x2db79a, 0x14 - -BattleScript_WhiteHerbEnd2:: @ 82DB7AE - .incbin "baserom.gba", 0x2db7ae, 0x6 - -BattleScript_WhiteHerbRet:: @ 82DB7B4 - .incbin "baserom.gba", 0x2db7b4, 0x10 - -BattleScript_ItemHealHP_RemoveItem:: @ 82DB7C4 - .incbin "baserom.gba", 0x2db7c4, 0x1d - -BattleScript_BerryPPHealEnd2:: @ 82DB7E1 - .incbin "baserom.gba", 0x2db7e1, 0x10 - -BattleScript_ItemHealHP_End2:: @ 82DB7F1 - .incbin "baserom.gba", 0x2db7f1, 0x6 - -BattleScript_ItemHealHP_Ret:: @ 82DB7F7 - .incbin "baserom.gba", 0x2db7f7, 0x1b - -gUnknown_082DB812:: @ 82DB812 - .incbin "baserom.gba", 0x2db812, 0x4 - -BattleScript_HangedOnMsg:: @ 82DB816 - .incbin "baserom.gba", 0x2db816, 0xe - -BattleScript_BerryConfuseHealEnd2:: @ 82DB824 - .incbin "baserom.gba", 0x2db824, 0x2a - -BattleScript_BerryStatRaiseEnd2:: @ 82DB84E - .incbin "baserom.gba", 0x2db84e, 0x1b - -BattleScript_BerryFocusEnergyEnd2:: @ 82DB869 - .incbin "baserom.gba", 0x2db869, 0x10 - -BattleScript_ActionSelectionItemsCantBeUsed:: @ 82DB879 - .incbin "baserom.gba", 0x2db879, 0x4 - -gUnknown_082DB87D:: @ 82DB87D - .incbin "baserom.gba", 0x2db87d, 0x4 - -gUnknown_082DB881:: @ 82DB881 - .incbin "baserom.gba", 0x2db881, 0x3d - -gUnknown_082DB8BE:: @ 82DB8BE - .incbin "baserom.gba", 0x2db8be, 0x35 - -gUnknown_082DB8F3:: @ 82DB8F3 - .incbin "baserom.gba", 0x2db8f3, 0xc7 - -gUnknown_082DB9BA:: @ 82DB9BA - .incbin "baserom.gba", 0x2db9ba, 0x7 - -gUnknown_082DB9C1:: @ 82DB9C1 - .incbin "baserom.gba", 0x2db9c1, 0x7 - -gUnknown_082DB9C8:: @ 82DB9C8 - .incbin "baserom.gba", 0x2db9c8, 0xc + .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 gBattleMoveFlags, MOVESTATUS_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, STATUS_SLEEP, BattleScript_AlreadyAsleep + jumpifcantmakeasleep BattleScript_CantMakeAsleep + jumpifstatus TARGET, STATUS_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_82D8B26 + setbyte cMULTISTRING_CHOOSER, 0x0 + goto BattleScript_82D8B2E +BattleScript_82D8B26:: + manipulatedamage ATK80_DMG_CHANGE_SIGN + setbyte cMULTISTRING_CHOOSER, 0x1 +BattleScript_82D8B2E:: + healthbarupdate ATTACKER + datahpupdate ATTACKER + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D8B45 + printfromtable gLeechSeedDrainStringIds + waitmessage 0x40 +BattleScript_82D8B45:: + 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, gBattleMoveFlags, MOVESTATUS_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 gBattleMoveFlags, MOVESTATUS_MISSED + attackanimation + waitanimation + orbyte gBattleMoveFlags, MOVESTATUS_MISSED + return + +BattleScript_EffectDreamEater:: + attackcanceler + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82D8C0E + jumpifstatus TARGET, STATUS_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 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D8C56 + printstring STRINGID_PKMNDREAMEATEN + waitmessage 0x40 +BattleScript_82D8C56:: + tryfaintmon TARGET, FALSE, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectMirrorMove:: + attackcanceler + attackstring + pause 0x40 + trymirrormove + ppreduce + orbyte gBattleMoveFlags, MOVESTATUS_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_82DB5B9 + jumpifstatus3 TARGET, STATUS3_ROOTED, BattleScript_82DB109 + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_ARENA, BattleScript_ButItFailed + forcerandomswitch BattleScript_ButItFailed + +BattleScript_EffectMultiHit:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + setmultihitcounter 0x0 + initmultihitstring + setbyte sFIELD_16, 0x0 +BattleScript_82D8DFD:: + jumpifhasnohp ATTACKER, BattleScript_82D8E93 + jumpifhasnohp TARGET, BattleScript_82D8E74 + jumpifhalfword EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_82D8E1F + jumpifstatus ATTACKER, STATUS_SLEEP, BattleScript_82D8E74 +BattleScript_82D8E1F:: + movevaluescleanup + copybyte cEFFECT_CHOOSER, sFIELD_16 + critcalc + damagecalc + typecalc + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D8E71 + 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, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_82D8E74 + decrementmultihit BattleScript_82D8DFD + goto BattleScript_82D8E74 +BattleScript_82D8E71:: + pause 0x20 +BattleScript_82D8E74:: + resultmessage + waitmessage 0x40 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_82D8E93 + copyarray gBattleTextBuff1, sMULTIHIT_STRING, 0x6 + printstring STRINGID_HITXTIMES + waitmessage 0x40 +BattleScript_82D8E93:: + 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, STATUS_POISON, BattleScript_AlreadyPoisoned + jumpifstatus TARGET, STATUS_TOXIC_POISON, BattleScript_AlreadyPoisoned + jumpifstatus TARGET, STATUS_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, gBankTarget + 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, STATUS_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 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, 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 gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + damagetohalftargethp + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectDragonRage:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + 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 sFIELD_16, 0x0 + goto BattleScript_82D8DFD + +BattleScript_EffectRecoilIfMiss:: + attackcanceler + accuracycheck BattleScript_82D9135, ACC_CURR_MOVE + goto BattleScript_HitFromAtkString + +BattleScript_82D9135:: + attackstring + ppreduce + pause 0x40 + resultmessage + waitmessage 0x40 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, BattleScript_MoveEnd + printstring STRINGID_PKMNCRASHED + waitmessage 0x40 + damagecalc + typecalc + adjustnormaldamage + manipulatedamage ATK80_DMG_HALF_BY_TWO_NOT_MORE_THAN_HALF_MAX_HP + bicbyte gBattleMoveFlags, MOVESTATUS_MISSED + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + tryfaintmon ATTACKER, FALSE, NULL + orbyte gBattleMoveFlags, MOVESTATUS_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, STATUS_POISON, BattleScript_AlreadyPoisoned + jumpifstatus TARGET, STATUS_TOXIC_POISON, BattleScript_AlreadyPoisoned + jumpiftype TARGET, TYPE_POISON, BattleScript_NotAffected + jumpiftype TARGET, TYPE_STEEL, BattleScript_NotAffected + jumpifstatus TARGET, STATUS_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 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_ButItFailed + jumpifstatus TARGET, STATUS_PARALYSIS, BattleScript_AlreadyParalyzed + jumpifstatus TARGET, STATUS_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, gBankTarget + 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 sFIELD_16, 0x2 + attackstring + ppreduce + setmultihitcounter 0x2 + initmultihitstring + goto BattleScript_82D8DFD + +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 gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + dmgtolevel + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectPsywave:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + 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, STATUS_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, STATUS_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 0x1 + +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, STATUS_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 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, 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, gBattleMoveFlags, MOVESTATUS_ENDURED, BattleScript_TripleKickPrintStrings + decrementmultihit BattleScript_TripleKickLoop + goto BattleScript_TripleKickPrintStrings +BattleScript_TripleKickNoMoreHits:: + pause 0x20 + jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickPrintStrings + bicbyte gBattleMoveFlags, MOVESTATUS_MISSED +BattleScript_TripleKickPrintStrings:: + resultmessage + waitmessage 0x40 + jumpifbyte EQUAL, sMULTIHIT_STRING + 4, 0x0, BattleScript_TripleKickEnd + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_NOTAFFECTED, 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, STATUS_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 gBankTarget, 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, gBankTarget, 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, gNoOfAllBanks, 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 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, 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_82D9C44 + +BattleScript_EffectBatonPass:: + attackcanceler + attackstring + ppreduce + jumpifword COMMON_BITS, gBattleTypeFlags, 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, 0x1 + 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 gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + 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_82D9C44:: + movevaluescleanup + jumpifnostatus3 TARGET, STATUS3_UNDERGROUND, BattleScript_82D9C64 + orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND + setbyte sDMG_MULTIPLIER, 0x2 + goto BattleScript_82D9C73 +BattleScript_82D9C64:: + bicword gHitMarker, HITMARKER_IGNORE_UNDERGROUND + setbyte sDMG_MULTIPLIER, 0x1 +BattleScript_82D9C73:: + accuracycheck BattleScript_82D9CAC, 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_82D9C44 + end +BattleScript_82D9CAC:: + pause 0x20 + typecalc + effectivenesssound + resultmessage + waitmessage 0x40 + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 + jumpifnexttargetvalid BattleScript_82D9C44 + 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 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_ButItFailed + getifcantrunfrombattle ATTACKER + jumpifbyte EQUAL, gBattleCommunication, 0x1, BattleScript_ButItFailed + jumpifbyte EQUAL, gBattleCommunication, 0x2, BattleScript_82DA382 + 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 gBattleMoveFlags, MOVESTATUS_FAILED + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_NotAffected:: + pause 0x20 + orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED + 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, STATUS_BURN, BattleScript_AlreadyBurned + jumpiftype TARGET, TYPE_FIRE, BattleScript_NotAffected + jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents + jumpifstatus TARGET, STATUS_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, gBankTarget + 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, STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_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, STATUS_PARALYSIS, BattleScript_82DA1BA + goto BattleScript_EffectHit + +BattleScript_82DA1BA:: + 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 0x1 + +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_82DA306 + bicbyte gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED +BattleScript_82DA306:: + attackanimation + waitanimation + jumpifbyte LESS_THAN, sANIM_TURN, 0x2, BattleScript_82DA319 + printstring STRINGID_THEWALLSHATTERED + waitmessage 0x40 +BattleScript_82DA319:: + 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_82DA378 + jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_82DA378 + 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_82DA378:: + copybyte sBANK, sFIELD_15 +BattleScript_82DA382:: + 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 + jumpifbyte COMMON_BITS, gBattleMoveFlags, MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED, BattleScript_HitFromAtkAnimation + bicbyte gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + 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 gBankTarget, 0x0 +BattleScript_82DA47B:: + movevaluescleanup + setmoveeffect EFFECT_CONFUSION + jumpifbyteequal gBankAttacker, gBankTarget, BattleScript_82DA4D0 + jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_82DA4E5 + jumpifstatus2 TARGET, STATUS2_SUBSTITUTE, BattleScript_82DA501 + jumpifstatus2 TARGET, STATUS2_CONFUSION, BattleScript_82DA50F + jumpifhasnohp TARGET, BattleScript_82DA4D0 + accuracycheck BattleScript_82DA520, ACC_CURR_MOVE + jumpifsideaffecting TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_82DA4F3 + attackanimation + waitanimation + seteffectprimary + resultmessage + waitmessage 0x40 +BattleScript_82DA4C7:: + setbyte sMOVEEND_STATE, 0x0 + moveend 0x2, 0x10 +BattleScript_82DA4D0:: + addbyte gBankTarget, 0x1 + jumpifbytenotequal gBankTarget, gNoOfAllBanks, BattleScript_82DA47B + end + +BattleScript_82DA4E5:: + pause 0x20 + printstring STRINGID_PKMNPREVENTSCONFUSIONWITH + waitmessage 0x40 + goto BattleScript_82DA4C7 + +BattleScript_82DA4F3:: + pause 0x20 + printstring STRINGID_PKMNUSEDSAFEGUARD + waitmessage 0x40 + goto BattleScript_82DA4C7 + +BattleScript_82DA501:: + pause 0x20 + printstring STRINGID_BUTITFAILED + waitmessage 0x40 + goto BattleScript_82DA4C7 + +BattleScript_82DA50F:: + various23 ATTACKER + pause 0x20 + printstring STRINGID_PKMNALREADYCONFUSED + waitmessage 0x40 + goto BattleScript_82DA4C7 + +BattleScript_82DA520:: + resultmessage + waitmessage 0x40 + goto BattleScript_82DA4C7 + +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 gBattleMoveFlags, MOVESTATUS_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 gBattleMoveFlags, MOVESTATUS_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_82DA7C4:: + setbyte sGIVEEXP_STATE, 0x0 + getexp TARGET + end2 + +BattleScript_82DA7CD:: + atk24 BattleScript_82DA8F6 + jumpifbyte NOT_EQUAL, gBattleOutcome, 0, BattleScript_82DA8F5 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_82DA816 + jumpifword NO_COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_82DA816 + printstring STRINGID_USENEXTPKMN + setbyte gBattleCommunication, 0x0 + yesnobox + jumpifbyte EQUAL, gBattleCommunication + 1, 0x0, BattleScript_82DA816 + jumpifplayerran BattleScript_82DA8F5 + printstring STRINGID_CANTESCAPE2 +BattleScript_82DA816:: + openpartyscreen 0x3, BattleScript_82DA8F5 + switchhandleorder GBANK_1, 0x2 + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_82DA8D0 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_LINK, BattleScript_82DA8D0 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x2000000, BattleScript_82DA8D0 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID, BattleScript_82DA8D0 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOUBLE, BattleScript_82DA8D0 + jumpifword COMMON_BITS, gHitMarker, HITMARKER_x400000, BattleScript_82DA8D0 + jumpifbyte EQUAL, sBATTLE_STYLE, 0x1, BattleScript_82DA8D0 + jumpifcantswitch 11, BattleScript_82DA8D0 + printstring STRINGID_ENEMYABOUTTOSWITCHPKMN + setbyte gBattleCommunication, 0x0 + yesnobox + jumpifbyte EQUAL, gBattleCommunication + 1, 0x1, BattleScript_82DA8D0 + setatktoplayer0 + openpartyscreen 0x81, BattleScript_82DA8D0 + switchhandleorder ATTACKER, 0x2 + jumpifbyte EQUAL, gBattleCommunication, 0x6, BattleScript_82DA8D0 + 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_82DA8D0:: + drawpartystatussummary GBANK_1 + getswitchedmondata GBANK_1 + switchindataupdate GBANK_1 + hpthresholds GBANK_1 + printstring STRINGID_SWITCHINMON + atk62 GBANK_1 + switchinanim GBANK_1, 0x0 + waitstate + various7 ATTACKER + switchineffects GBANK_1 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOUBLE, BattleScript_82DA8F5 + cancelallactions +BattleScript_82DA8F5:: + 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, 0x0 + waitstate + switchineffects 5 + jumpifbytenotequal gBank1, gNoOfAllBanks, BattleScript_82DA908 +BattleScript_82DA92C:: + end2 + +BattleScript_LocalTrainerBattleWon:: + jumpifword COMMON_BITS, gBattleTypeFlags, 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 + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleWonReward + trainerslideout IDENTITY_OPPONENT_MON1 + waitstate + trainerslidein GBANK_1 + waitstate + printstring STRINGID_TRAINER2LOSETEXT +BattleScript_LocalBattleWonReward:: + getmoneyreward + printstring STRINGID_PLAYERGOTMONEY + waitmessage 0x40 +BattleScript_PayDayMoneyAndPickUpItems:: + givepaydaymoney + pickup + end2 + +BattleScript_LocalBattleLost:: + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOME, BattleScript_CheckDomeDrew + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOME | BATTLE_TYPE_PALACE | BATTLE_TYPE_ARENA | BATTLE_TYPE_FACTORY | BATTLE_TYPE_x100000 | BATTLE_TYPE_PYRAMID, BattleScript_LocalBattleLostPrintTrainersWinText + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x4000000, BattleScript_LocalBattleLostPrintTrainersWinText + jumpifword COMMON_BITS, gBattleTypeFlags, 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:: + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_LocalBattleLostPrintWhiteOut + returnopponentmon1toball ATTACKER + waitstate + returnopponentmon2toball ATTACKER + waitstate + trainerslidein ATTACKER + waitstate + printstring STRINGID_TRAINER1WINTEXT + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_x800000, BattleScript_LocalBattleLostDoTrainer2WinText + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_LocalBattleLostEnd_ +BattleScript_LocalBattleLostDoTrainer2WinText:: + trainerslideout IDENTITY_OPPONENT_MON1 + 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 IDENTITY_OPPONENT_MON1 + waitstate + trainerslidein GBANK_1 + waitstate + printstring STRINGID_TRAINER2WINTEXT + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_RECORDED, BattleScript_82DAA31 + atk57 +BattleScript_82DAA31:: + waitmessage 0x40 + end2 + +BattleScript_LinkBattleWonOrLost:: + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_BATTLE_TOWER, BattleScript_82DAA5C + printstring STRINGID_BATTLEEND + waitmessage 0x40 + jumpifword COMMON_BITS, gBattleTypeFlags, 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 IDENTITY_OPPONENT_MON1 + waitstate + trainerslidein GBANK_1 + waitstate + printstring STRINGID_TRAINER2LOSETEXT + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_RECORDED, BattleScript_82DAA83 + atk57 +BattleScript_82DAA83:: + waitmessage 0x40 + end2 + +BattleScript_FrontierTrainerBattleWon:: + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_PayDayMoneyAndPickUpItems + jumpifword COMMON_BITS, gBattleTypeFlags, 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 + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TWO_OPPONENTS, BattleScript_82DAACB + trainerslideout IDENTITY_OPPONENT_MON1 + waitstate + trainerslidein GBANK_1 + waitstate + printstring STRINGID_TRAINER2LOSETEXT +BattleScript_82DAACB:: + jumpifword NO_COMMON_BITS, gBattleTypeFlags, 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 + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_DOUBLE, BattleScript_82DAB35 + setmultihit 0x1 + goto BattleScript_82DAB37 + +BattleScript_82DAB35:: + setmultihit 0x2 +BattleScript_82DAB37:: + jumpifnopursuitswitchdmg BattleScript_82DAB44 + atk5F + trysetdestinybondtohappen + call BattleScript_82DAB77 + atk5F +BattleScript_82DAB44:: + decrementmultihit BattleScript_82DAB37 + switchoutabilities ATTACKER + waitstate + returnatktoball + waitstate + drawpartystatussummary ATTACKER + switchhandleorder ATTACKER, 0x1 + getswitchedmondata ATTACKER + switchindataupdate ATTACKER + hpthresholds ATTACKER + printstring STRINGID_SWITCHINMON + atk62 ATTACKER + switchinanim ATTACKER, 0x0 + waitstate + switchineffects ATTACKER + setbyte sMOVEEND_STATE, 0x4 + moveend 0x1, 0x0 + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + end2 + +BattleScript_82DAB77:: + 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_82DABB8 + setbyte sGIVEEXP_STATE, 0x0 + getexp TARGET +BattleScript_82DABB8:: + return + +BattleScript_Pausex20:: + pause 0x20 + return + +BattleScript_LevelUp:: + fanfare BGM_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 BGM_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, gNoOfAllBanks, 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_82DAD47 + manipulatedamage ATK80_DMG_CHANGE_SIGN + setbyte cMULTISTRING_CHOOSER, 0x3 + goto BattleScript_82DAD4D + +BattleScript_82DAD47:: + setbyte cMULTISTRING_CHOOSER, 0x4 +BattleScript_82DAD4D:: + 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 gBattleMoveFlags, MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE + 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_82DADD8:: + attackanimation + waitanimation + switchoutabilities TARGET + returntoball TARGET + waitstate + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_TRAINER, BattleScript_82DADF1 + setoutcomeonteleport ATTACKER + finishaction + +BattleScript_82DADF1:: + getswitchedmondata TARGET + switchindataupdate TARGET + switchinanim TARGET, 0x0 + 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_82DAE2A:: + printstring STRINGID_PKMNMOVEISDISABLED +BattleScript_82DAE2D:: + 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_82DAEFE + tryfaintmon ATTACKER, FALSE, NULL + tryfaintmon ATTACKER, TRUE, BattleScript_82DAE7A + return + +BattleScript_82DAE7A:: + setbyte sGIVEEXP_STATE, 0x0 + getexp ATTACKER + setbyte sMOVEEND_STATE, 0x0 + moveend 0x0, 0x0 + goto BattleScript_82DA7CD + +BattleScript_SpikesOnTarget:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate TARGET + datahpupdate TARGET + call BattleScript_82DAEFE + tryfaintmon TARGET, FALSE, NULL + tryfaintmon TARGET, TRUE, BattleScript_82DAEB1 + return + +BattleScript_82DAEB1:: + setbyte sGIVEEXP_STATE, 0x0 + getexp TARGET + setbyte sMOVEEND_STATE, 0x0 + moveend 0x0, 0x0 + goto BattleScript_82DA7CD + +BattleScript_SpikesOngBank1:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate GBANK_1 + datahpupdate GBANK_1 + call BattleScript_82DAEFE + tryfaintmon GBANK_1, FALSE, NULL + tryfaintmon GBANK_1, TRUE, BattleScript_82DAEE8 + return + +BattleScript_82DAEE8:: + setbyte sGIVEEXP_STATE, 0x0 + getexp GBANK_1 + setbyte sMOVEEND_STATE, 0x0 + moveend 0x0, 0x0 + goto BattleScript_82DA7CD + +BattleScript_82DAEFE:: + 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_82DAF54 + jumpifstat ATTACKER, LESS_THAN, DEF, 0xC, BattleScript_82DAF54 + jumpifstat ATTACKER, LESS_THAN, SPEED, 0xC, BattleScript_82DAF54 + jumpifstat ATTACKER, LESS_THAN, SPATK, 0xC, BattleScript_82DAF54 + jumpifstat ATTACKER, EQUAL, SPDEF, 0xC, BattleScript_82DAFC2 +BattleScript_82DAF54:: + setbyte sFIELD_1B, 0x0 + playstatchangeanimation ATTACKER, 0x3E, 0x0 + setstatchanger ATK, 1, FALSE + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAF72 + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_82DAF72:: + setstatchanger DEF, 1, FALSE + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAF86 + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_82DAF86:: + setstatchanger SPEED, 1, FALSE + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAF9A + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_82DAF9A:: + setstatchanger SPATK, 1, FALSE + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAFAE + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_82DAFAE:: + setstatchanger SPDEF, 1, FALSE + statbuffchange AFFECTS_USER | 0x1, BattleScript_82DAFC2 + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_82DAFC2:: + return + +BattleScript_RapidSpinAway:: + rapidspinfree + return + +BattleScript_WrapFree:: + printstring STRINGID_PKMNGOTFREE + waitmessage 0x40 + copybyte gBankTarget, 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_82DB001 + accuracycheck BattleScript_82DB058, MOVE_FUTURE_SIGHT + goto BattleScript_82DB008 +BattleScript_82DB001:: + accuracycheck BattleScript_82DB058, MOVE_DOOM_DESIRE +BattleScript_82DB008:: + adjustnormaldamage2 + jumpifbyte NOT_EQUAL, cMULTISTRING_CHOOSER, 0x0, BattleScript_82DB020 + playanimation ATTACKER, ANIM_FUTURE_SIGHT_HIT, NULL + goto BattleScript_82DB027 +BattleScript_82DB020:: + playanimation ATTACKER, ANIM_x13, NULL +BattleScript_82DB027:: + effectivenesssound + hitanimation TARGET + waitstate + healthbarupdate TARGET + datahpupdate TARGET + resultmessage + waitmessage 0x40 + tryfaintmon TARGET, FALSE, NULL + atk24 BattleScript_82DB03F +BattleScript_82DB03F:: + setbyte sMOVEEND_STATE, 0x0 + moveend 0x1, 0x0 + setbyte sMOVEEND_STATE, 0xB + moveend 0x2, 0xE + setbyte gBattleMoveFlags, 0 + end2 +BattleScript_82DB058:: + pause 0x20 + setbyte gBattleMoveFlags, 0 + orbyte gBattleMoveFlags, MOVESTATUS_FAILED + resultmessage + waitmessage 0x40 + setbyte gBattleMoveFlags, 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_82DB08D:: + printstring STRINGID_PKMNCANTUSEMOVETORMENT + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DB098:: + printstring STRINGID_PKMNCANTUSEMOVETORMENT + goto BattleScript_82DAE2D + +BattleScript_SelectingNotAllowedMoveTaunt:: + printselectionstring STRINGID_PKMNCANTUSEMOVETAUNT + endselectionscript + +BattleScript_MoveUsedIsTaunted:: + printstring STRINGID_PKMNCANTUSEMOVETAUNT + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DB0AF:: + printstring STRINGID_PKMNCANTUSEMOVETAUNT + goto BattleScript_82DAE2D + +BattleScript_WishComesTrue:: + trywish 0x1, BattleScript_82DB0DE + 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_82DB0DE:: + 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_82DB109:: + 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_82DB185:: + printstring STRINGID_PKMNCANTUSEMOVESEALED + goto BattleScript_82DAE2D + +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_82DB243:: + statusanimation ATTACKER +BattleScript_82DB245:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate ATTACKER + datahpupdate ATTACKER + tryfaintmon ATTACKER, FALSE, NULL + atk24 BattleScript_82DB25E +BattleScript_82DB25E:: + end2 + +BattleScript_BurnTurnDmg:: + printstring STRINGID_PKMNHURTBYBURN + waitmessage 0x40 + goto BattleScript_82DB243 + +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_82DB2FF +BattleScript_82DB2D4:: + 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_82DB2FF:: + 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_82DB245 + +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_82DB245 + +BattleScript_CurseTurnDmg:: + printstring STRINGID_PKMNAFFLICTEDBYCURSE + waitmessage 0x40 + status2animation ATTACKER, STATUS2_CURSED + goto BattleScript_82DB245 + +BattleScript_TargetPRLZHeal:: + printstring STRINGID_PKMNHEALEDPARALYSIS + waitmessage 0x40 + updatestatusicon TARGET + return + +BattleScript_MoveEffectSleep:: + statusanimation EFFECT_BANK + printfromtable gFellAsleepStringIds + waitmessage 0x40 +BattleScript_82DB374:: + 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_82DB374 + +BattleScript_MoveEffectBurn:: + statusanimation EFFECT_BANK + printfromtable gGotBurnedStringIds + waitmessage 0x40 + goto BattleScript_82DB374 + +BattleScript_MoveEffectFreeze:: + statusanimation EFFECT_BANK + printfromtable gGotFrozenStringIds + waitmessage 0x40 + goto BattleScript_82DB374 + +BattleScript_MoveEffectParalysis:: + statusanimation EFFECT_BANK + printfromtable gGotParalyzedStringIds + waitmessage 0x40 + goto BattleScript_82DB374 + +BattleScript_MoveEffectUproar:: + printstring STRINGID_PKMNCAUSEDUPROAR + waitmessage 0x40 + return + +BattleScript_MoveEffectToxic:: + statusanimation EFFECT_BANK + printstring STRINGID_PKMNBADLYPOISONED + waitmessage 0x40 + goto BattleScript_82DB374 + +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, gNoOfAllBanks, 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 gBankTarget, 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 gBankTarget, 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 gBattleMoveFlags, MOVESTATUS_NOTAFFECTED + goto BattleScript_MoveEnd + +BattleScript_MonMadeMoveUseless_PPLoss:: + ppreduce +BattleScript_MonMadeMoveUseless:: + attackstring + pause 0x20 + printstring STRINGID_PKMNSXMADEYUSELESS + waitmessage 0x40 + orbyte gBattleMoveFlags, MOVESTATUS_NOTAFFECTED + goto BattleScript_MoveEnd + +BattleScript_FlashFireBoost_PPLoss:: + ppreduce +BattleScript_FlashFireBoost:: + attackstring + pause 0x20 + printfromtable gFlashFireStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_82DB5B9:: + 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 0x0 + +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_82DB2D4 + +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, gNoOfAllBanks, 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_82DB9C1:: + printstring STRINGID_FORFEITEDMATCH + waitmessage 0x40 + end2 + +BattleScript_82DB9C8:: + printstring STRINGID_FORFEITEDMATCH + waitmessage 0x40 + atk57 + waitmessage 0x40 + end2 diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 4a4dc4665..88991ccd0 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -1,32 +1,36 @@ .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 gBattlescriptsForBallThrow:: @ 82DBD08 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD7E - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 - .4byte gUnknown_082DBD68 + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_SafariBallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow + .4byte BattleScript_BallThrow .align 2 gUnknown_082DBD3C:: @ 82DBD3C - .4byte gUnknown_082DBE12 - .4byte gUnknown_082DBE1C - .4byte gUnknown_082DBE1C - .4byte gUnknown_082DBE4B - .4byte gUnknown_082DBE6F - .4byte gUnknown_082DBE91 + .4byte BattleScript_82DBE12 + .4byte BattleScript_82DBE1C + .4byte BattleScript_82DBE1C + .4byte BattleScript_82DBE4B + .4byte BattleScript_82DBE6F + .4byte BattleScript_82DBE91 .align 2 gBattlescriptsForRunningByItem:: @ 82DBD54 @@ -34,55 +38,166 @@ gBattlescriptsForRunningByItem:: @ 82DBD54 .align 2 gBattlescriptsForSafariActions:: @ 82DBD58 - .4byte gUnknown_082DBEBD - .4byte gUnknown_082DBEC4 - .4byte gUnknown_082DBECD - .4byte gUnknown_082DBEE3 - -gUnknown_082DBD68:: @ 82DBD68 - .incbin "baserom.gba", 0x2dbd68, 0x16 - -gUnknown_082DBD7E:: @ 82DBD7E - .incbin "baserom.gba", 0x2dbd7e, 0x6 - -BattleScript_SuccessBallThrow:: @ 82DBD84 - .incbin "baserom.gba", 0x2dbd84, 0x46 - -BattleScript_WallyBallThrow:: @ 82DBDCA - .incbin "baserom.gba", 0x2dbdca, 0xa - -BattleScript_ShakeBallThrow:: @ 82DBDD4 - .incbin "baserom.gba", 0x2dbdd4, 0x2e - -BattleScript_TrainerBallBlock:: @ 82DBE02 - .incbin "baserom.gba", 0x2dbe02, 0x10 - -gUnknown_082DBE12:: @ 82DBE12 - .incbin "baserom.gba", 0x2dbe12, 0xa - -gUnknown_082DBE1C:: @ 82DBE1C - .incbin "baserom.gba", 0x2dbe1c, 0x2f - -gUnknown_082DBE4B:: @ 82DBE4B - .incbin "baserom.gba", 0x2dbe4b, 0x24 - -gUnknown_082DBE6F:: @ 82DBE6F - .incbin "baserom.gba", 0x2dbe6f, 0x22 - -gUnknown_082DBE91:: @ 82DBE91 - .incbin "baserom.gba", 0x2dbe91, 0x22 - -BattleScript_RunByUsingItem:: @ 82DBEB3 - .incbin "baserom.gba", 0x2dbeb3, 0xA - -gUnknown_082DBEBD:: @ 82DBEBD - .incbin "baserom.gba", 0x2dbebd, 0x7 - -gUnknown_082DBEC4:: @ 82DBEC4 - .incbin "baserom.gba", 0x2dbec4, 0x9 - -gUnknown_082DBECD:: @ 82DBECD - .incbin "baserom.gba", 0x2dbecd, 0x16 - -gUnknown_082DBEE3:: @ 82DBEE3 - .incbin "baserom.gba", 0x2dbee3, 0x15 + .4byte BattleScript_ActionWatchesCarefully + .4byte BattleScript_ActionGetNear + .4byte BattleScript_ActionThrowPokeblock + .4byte BattleScript_82DBEE3 + +BattleScript_BallThrow:: + jumpifword COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_WALLY_TUTORIAL, BattleScript_BallThrowByWally + printstring STRINGID_PLAYERUSEDITEM + handleballthrow + +BattleScript_BallThrowByWally:: + printstring STRINGID_WALLYUSEDITEM + handleballthrow + +BattleScript_SafariBallThrow:: + printstring STRINGID_PLAYERUSEDITEM + updatestatusicon ATTACKER + handleballthrow + +BattleScript_SuccessBallThrow:: + jumpifhalfword EQUAL, gLastUsedItem, ITEM_SAFARI_BALL, BattleScript_82DBD92 + incrementgamestat 0xB +BattleScript_82DBD92:: + printstring STRINGID_GOTCHAPKMNCAUGHT + trysetcaughtmondexflags BattleScript_82DBDA5 + printstring STRINGID_PKMNDATAADDEDTODEX + waitstate + setbyte gBattleCommunication, 0x0 + displaydexinfo +BattleScript_82DBDA5:: + printstring STRINGID_GIVENICKNAMECAPTURED + waitstate + setbyte gBattleCommunication, 0x0 + trygivecaughtmonnick BattleScript_82DBDC2 + givecaughtmon + printfromtable gCaughtMonStringIds + waitmessage 0x40 + goto BattleScript_82DBDC3 +BattleScript_82DBDC2:: + givecaughtmon +BattleScript_82DBDC3:: + setbyte gBattleOutcome, CAUGHT + finishturn + +BattleScript_WallyBallThrow:: + printstring STRINGID_GOTCHAPKMNCAUGHT2 + setbyte gBattleOutcome, CAUGHT + finishturn + +BattleScript_ShakeBallThrow:: + printfromtable gBallEscapeStringIds + waitmessage 0x40 + jumpifword NO_COMMON_BITS, gBattleTypeFlags, BATTLE_TYPE_SAFARI, BattleScript_82DBE01 + jumpifbyte NOT_EQUAL, gNumSafariBalls, 0x0, BattleScript_82DBE01 + printstring STRINGID_OUTOFSAFARIBALLS + waitmessage 0x40 + setbyte gBattleOutcome, OUT_OF_BALLS +BattleScript_82DBE01:: + finishaction + +BattleScript_TrainerBallBlock:: + waitmessage 0x40 + printstring STRINGID_TRAINERBLOCKEDBALL + waitmessage 0x40 + printstring STRINGID_DONTBEATHIEF + waitmessage 0x40 + finishaction + +BattleScript_82DBE12:: + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + end + +BattleScript_82DBE1C:: + printstring STRINGID_EMPTYSTRING3 + pause 0x30 + playse SE_KAIFUKU + printstring STRINGID_TRAINER1USEDITEM + waitmessage 0x40 + useitemonopponent + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate ATTACKER + datahpupdate ATTACKER + printstring STRINGID_PKMNSITEMRESTOREDHEALTH + waitmessage 0x40 + updatestatusicon ATTACKER + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + finishaction + +BattleScript_82DBE4B:: + printstring STRINGID_EMPTYSTRING3 + pause 0x30 + playse SE_KAIFUKU + printstring STRINGID_TRAINER1USEDITEM + waitmessage 0x40 + useitemonopponent + printfromtable gTrainerItemCuredStatusStringIds + waitmessage 0x40 + updatestatusicon ATTACKER + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + finishaction + +BattleScript_82DBE6F:: + printstring STRINGID_EMPTYSTRING3 + pause 0x30 + playse SE_KAIFUKU + printstring STRINGID_TRAINER1USEDITEM + waitmessage 0x40 + useitemonopponent + printfromtable gStatUpStringIds + waitmessage 0x40 + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + finishaction + +BattleScript_82DBE91:: + printstring STRINGID_EMPTYSTRING3 + pause 0x30 + playse SE_KAIFUKU + printstring STRINGID_TRAINER1USEDITEM + waitmessage 0x40 + useitemonopponent + printfromtable gMistUsedStringIds + waitmessage 0x40 + setbyte sMOVEEND_STATE, 0xF + moveend 0x1, 0x0 + finishaction + +BattleScript_RunByUsingItem:: + playse SE_NIGERU + setbyte gBattleOutcome, RAN + finishturn + +BattleScript_ActionWatchesCarefully:: + printstring STRINGID_PKMNWATCHINGCAREFULLY + waitmessage 0x40 + end2 + +BattleScript_ActionGetNear:: + printfromtable gSafariGetNearStringIds + waitmessage 0x40 + end2 + +BattleScript_ActionThrowPokeblock:: + printstring STRINGID_THREWPOKEBLOCKATPKMN + waitmessage 0x40 + playanimation ATTACKER, ANIM_x4, NULL + printfromtable gSafariPokeblockResultStringIds + waitmessage 0x40 + end2 + +BattleScript_82DBEE3:: + printstring STRINGID_RETURNMON + waitmessage 0x40 + returnatktoball + waitstate + trainerslidein TARGET + waitstate + printstring STRINGID_YOUTHROWABALLNOWRIGHT + waitmessage 0x40 + end2 diff --git a/include/battle.h b/include/battle.h index 0939c92b6..c172cb0f6 100644 --- a/include/battle.h +++ b/include/battle.h @@ -272,6 +272,8 @@ #define BS_GET_TARGET 0 #define BS_GET_ATTACKER 1 #define BS_GET_EFFECT_BANK 2 +#define BS_GET_gBank1 3 +#define BS_GET_BANK_0 7 #define BS_ATTACKER_WITH_PARTNER 4 // for atk98_status_icon_update #define BS_GET_ATTACKER_SIDE 8 // for atk1E_jumpifability #define BS_GET_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability @@ -704,13 +706,6 @@ struct BattleStruct extern struct BattleStruct* gBattleStruct; -#define MEME_ACCESS_U8(structName, structPtr, arrayId, offsetField, value) \ -{ \ - u8* var2 = (u8*)((u32)(arrayId)); \ - var2 = (u32)(structPtr) + var2; \ - var2[offsetof(struct structName, offsetField)] = value; \ -} - #define GET_MOVE_TYPE(move, typeArg) \ { \ if (gBattleStruct->dynamicMoveType) \ @@ -835,20 +830,20 @@ extern struct BattleStruct* gBattleStruct; #define GET_STAT_BUFF_VALUE(n)(((n >> 4) & 7)) // 0x10, 0x20, 0x40 #define STAT_BUFF_NEGATIVE 0x80 // 0x80, the sign bit -#define SET_STAT_BUFF_ID(n)((n & 0xF)) #define SET_STAT_BUFF_VALUE(n)(((s8)(((s8)(n) << 4)) & 0xF0)) +#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7)) + struct BattleScripting { s32 painSplitHp; s32 bideDmg; u8 multihitString[6]; u8 dmgMultiplier; - u8 field_F; + u8 twoTurnsMoveStringId; u8 animArg1; u8 animArg2; - u8 field_12; - u8 field_13; + u16 tripleKickPower; u8 atk49_state; u8 field_15; u8 field_16; diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 973a723e0..c69cb1017 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -198,7 +198,7 @@ void EmitBallThrowAnim(u8 bufferId, u8 caseId); void EmitPause(u8 bufferId, u8 toWait, void *data); // unused void EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit); void EmitPrintString(u8 bufferId, u16 stringId); -void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringId); +void EmitPrintSelectionString(u8 bufferId, u16 stringId); void EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2); void EmitUnknownYesNoBox(u8 bufferId); void EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData); @@ -224,7 +224,7 @@ void EmitCmd39(u8 bufferId); // unused void EmitCmd40(u8 bufferId); // unused void EmitHitAnimation(u8 bufferId); void EmitCmd42(u8 bufferId); -void EmitEffectivenessSound(u8 bufferId, u16 songId); +void EmitPlaySE(u8 bufferId, u16 songId); void EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM); void EmitFaintingCry(u8 bufferId); void EmitIntroSlide(u8 bufferId, u8 terrainId); diff --git a/include/battle_message.h b/include/battle_message.h index c1ee8baa2..a820ff287 100644 --- a/include/battle_message.h +++ b/include/battle_message.h @@ -74,6 +74,14 @@ #define B_BUFF_PLACEHOLDER_BEGIN 0xFD #define B_BUFF_EOS 0xFF +#define PREPARE_FLAVOUR_BUFFER(textVar, flavourId) \ +{ \ + textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ + textVar[1] = B_BUFF_NEGATIVE_FLAVOUR; \ + textVar[2] = flavourId; \ + textVar[3] = B_BUFF_EOS; \ +} + #define PREPARE_STAT_BUFFER(textVar, statId) \ { \ textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \ @@ -189,7 +197,7 @@ struct StringInfoBattle { u16 currentMove; - u16 lastMove; + u16 originallyUsedMove; u16 lastItem; u8 lastAbility; u8 scrActive; diff --git a/include/battle_move_effects.h b/include/battle_move_effects.h index 4a9415379..23c19ded7 100644 --- a/include/battle_move_effects.h +++ b/include/battle_move_effects.h @@ -153,12 +153,12 @@ enum EFFECT_EARTHQUAKE, EFFECT_FUTURE_SIGHT, EFFECT_GUST, - EFFECT_FLINCH_HIT_2, // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM + EFFECT_STOMP, // STOMP ASTONISH EXTRASENSORY NEEDLE_ARM EFFECT_SOLARBEAM, EFFECT_THUNDER, EFFECT_TELEPORT, EFFECT_BEAT_UP, - EFFECT_FLY, + EFFECT_SEMI_INVULNERABLE, EFFECT_DEFENSE_CURL, EFFECT_SOFTBOILED, EFFECT_FAKE_OUT, diff --git a/include/battle_script_commands.h b/include/battle_script_commands.h index ebfeabccc..80fabaa64 100644 --- a/include/battle_script_commands.h +++ b/include/battle_script_commands.h @@ -1,6 +1,10 @@ #ifndef GUARD_BATTLE_SCRIPT_COMMANDS_H #define GUARD_BATTLE_SCRIPT_COMMANDS_H +#define NO_ACC_CALC 0xFFFE +#define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF +#define ACC_CURR_MOVE 0 + #define CMP_EQUAL 0x0 #define CMP_NOT_EQUAL 0x1 #define CMP_GREATER_THAN 0x2 @@ -21,7 +25,7 @@ #define VARIOUS_CANCEL_MULTI_TURN_MOVES 0 #define VARIOUS_SET_MAGIC_COAT_TARGET 1 -#define VARIOUS_CAN_RUN_FROM_BATTLE 2 +#define VARIOUS_IS_RUNNING_IMPOSSIBLE 2 #define VARIOUS_GET_MOVE_TARGET 3 #define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 diff --git a/include/battle_scripts.h b/include/battle_scripts.h new file mode 100644 index 000000000..5131778a8 --- /dev/null +++ b/include/battle_scripts.h @@ -0,0 +1,640 @@ +#ifndef GUARD_BATTLE_SCRIPTS_H +#define GUARD_BATTLE_SCRIPTS_H + +extern const u8 BattleScript_EffectHit[]; +extern const u8 BattleScript_HitFromAtkCanceler[]; +extern const u8 BattleScript_HitFromAccCheck[]; +extern const u8 BattleScript_HitFromAtkString[]; +extern const u8 BattleScript_HitFromCritCalc[]; +extern const u8 BattleScript_HitFromAtkAnimation[]; +extern const u8 BattleScript_MoveEnd[]; +extern const u8 BattleScript_MakeMoveMissed[]; +extern const u8 BattleScript_PrintMoveMissed[]; +extern const u8 BattleScript_MoveMissedPause[]; +extern const u8 BattleScript_MoveMissed[]; +extern const u8 BattleScript_EffectSleep[]; +extern const u8 BattleScript_AlreadyAsleep[]; +extern const u8 BattleScript_WasntAffected[]; +extern const u8 BattleScript_CantMakeAsleep[]; +extern const u8 BattleScript_EffectPoisonHit[]; +extern const u8 BattleScript_EffectAbsorb[]; +extern const u8 BattleScript_82D8B26[]; +extern const u8 BattleScript_82D8B2E[]; +extern const u8 BattleScript_82D8B45[]; +extern const u8 BattleScript_EffectBurnHit[]; +extern const u8 BattleScript_EffectFreezeHit[]; +extern const u8 BattleScript_EffectParalyzeHit[]; +extern const u8 BattleScript_EffectExplosion[]; +extern const u8 BattleScript_82D8B94[]; +extern const u8 BattleScript_82D8B96[]; +extern const u8 BattleScript_82D8BCF[]; +extern const u8 BattleScript_82D8BEA[]; +extern const u8 BattleScript_EffectDreamEater[]; +extern const u8 BattleScript_82D8C0E[]; +extern const u8 BattleScript_82D8C18[]; +extern const u8 BattleScript_82D8C56[]; +extern const u8 BattleScript_EffectMirrorMove[]; +extern const u8 BattleScript_EffectAttackUp[]; +extern const u8 BattleScript_EffectDefenseUp[]; +extern const u8 BattleScript_EffectSpecialAttackUp[]; +extern const u8 BattleScript_EffectEvasionUp[]; +extern const u8 BattleScript_EffectStatUp[]; +extern const u8 BattleScript_EffectStatUpAfterAtkCanceler[]; +extern const u8 BattleScript_StatUpAttackAnim[]; +extern const u8 BattleScript_StatUpDoAnim[]; +extern const u8 BattleScript_StatUpPrintString[]; +extern const u8 BattleScript_StatUpEnd[]; +extern const u8 BattleScript_StatUp[]; +extern const u8 BattleScript_EffectAttackDown[]; +extern const u8 BattleScript_EffectDefenseDown[]; +extern const u8 BattleScript_EffectSpeedDown[]; +extern const u8 BattleScript_EffectAccuracyDown[]; +extern const u8 BattleScript_EffectEvasionDown[]; +extern const u8 BattleScript_EffectStatDown[]; +extern const u8 BattleScript_StatDownDoAnim[]; +extern const u8 BattleScript_StatDownPrintString[]; +extern const u8 BattleScript_82D8D60[]; +extern const u8 BattleScript_StatDown[]; +extern const u8 BattleScript_EffectHaze[]; +extern const u8 BattleScript_EffectBide[]; +extern const u8 BattleScript_EffectRampage[]; +extern const u8 BattleScript_82D8DAE[]; +extern const u8 BattleScript_EffectRoar[]; +extern const u8 BattleScript_EffectMultiHit[]; +extern const u8 BattleScript_82D8DFD[]; +extern const u8 BattleScript_82D8E1F[]; +extern const u8 BattleScript_82D8E71[]; +extern const u8 BattleScript_82D8E74[]; +extern const u8 BattleScript_82D8E93[]; +extern const u8 BattleScript_EffectConversion[]; +extern const u8 BattleScript_EffectFlinchHit[]; +extern const u8 BattleScript_EffectRestoreHp[]; +extern const u8 BattleScript_EffectToxic[]; +extern const u8 BattleScript_AlreadyPoisoned[]; +extern const u8 BattleScript_ImmunityProtected[]; +extern const u8 BattleScript_EffectPayDay[]; +extern const u8 BattleScript_EffectLightScreen[]; +extern const u8 BattleScript_EffectTriAttack[]; +extern const u8 BattleScript_EffectRest[]; +extern const u8 BattleScript_RestCantSleep[]; +extern const u8 BattleScript_RestIsAlreadyAsleep[]; +extern const u8 BattleScript_EffectOHKO[]; +extern const u8 BattleScript_KOFail[]; +extern const u8 BattleScript_EffectRazorWind[]; +extern const u8 BattleScript_TwoTurnMovesSecondTurn[]; +extern const u8 BattleScriptFirstChargingTurn[]; +extern const u8 BattleScript_EffectSuperFang[]; +extern const u8 BattleScript_EffectDragonRage[]; +extern const u8 BattleScript_EffectTrap[]; +extern const u8 BattleScript_DoWrapEffect[]; +extern const u8 BattleScript_EffectDoubleHit[]; +extern const u8 BattleScript_EffectRecoilIfMiss[]; +extern const u8 BattleScript_82D9135[]; +extern const u8 BattleScript_EffectMist[]; +extern const u8 BattleScript_EffectFocusEnergy[]; +extern const u8 BattleScript_EffectRecoil[]; +extern const u8 BattleScript_EffectConfuse[]; +extern const u8 BattleScript_AlreadyConfused[]; +extern const u8 BattleScript_EffectAttackUp2[]; +extern const u8 BattleScript_EffectDefenseUp2[]; +extern const u8 BattleScript_EffectSpeedUp2[]; +extern const u8 BattleScript_EffectSpecialAttackUp2[]; +extern const u8 BattleScript_EffectSpecialDefenseUp2[]; +extern const u8 BattleScript_EffectTransform[]; +extern const u8 BattleScript_EffectAttackDown2[]; +extern const u8 BattleScript_EffectDefenseDown2[]; +extern const u8 BattleScript_EffectSpeedDown2[]; +extern const u8 BattleScript_EffectSpecialDefenseDown2[]; +extern const u8 BattleScript_EffectReflect[]; +extern const u8 BattleScript_PrintReflectLightScreenSafeguardString[]; +extern const u8 BattleScript_EffectPoison[]; +extern const u8 BattleScript_EffectParalyze[]; +extern const u8 BattleScript_AlreadyParalyzed[]; +extern const u8 BattleScript_LimberProtected[]; +extern const u8 BattleScript_EffectAttackDownHit[]; +extern const u8 BattleScript_EffectDefenseDownHit[]; +extern const u8 BattleScript_EffectSpeedDownHit[]; +extern const u8 BattleScript_EffectSpecialAttackDownHit[]; +extern const u8 BattleScript_EffectSpecialDefenseDownHit[]; +extern const u8 BattleScript_EffectAccuracyDownHit[]; +extern const u8 BattleScript_EffectSkyAttack[]; +extern const u8 BattleScript_EffectConfuseHit[]; +extern const u8 BattleScript_EffectTwineedle[]; +extern const u8 BattleScript_EffectSubstitute[]; +extern const u8 BattleScript_SubstituteAnim[]; +extern const u8 BattleScript_SubstituteString[]; +extern const u8 BattleScript_AlreadyHasSubstitute[]; +extern const u8 BattleScript_EffectRecharge[]; +extern const u8 BattleScript_MoveUsedMustRecharge[]; +extern const u8 BattleScript_EffectRage[]; +extern const u8 BattleScript_RageMiss[]; +extern const u8 BattleScript_EffectMimic[]; +extern const u8 BattleScript_EffectMetronome[]; +extern const u8 BattleScript_EffectLeechSeed[]; +extern const u8 BattleScript_DoLeechSeed[]; +extern const u8 BattleScript_EffectSplash[]; +extern const u8 BattleScript_EffectDisable[]; +extern const u8 BattleScript_EffectLevelDamage[]; +extern const u8 BattleScript_EffectPsywave[]; +extern const u8 BattleScript_EffectCounter[]; +extern const u8 BattleScript_EffectEncore[]; +extern const u8 BattleScript_EffectPainSplit[]; +extern const u8 BattleScript_EffectSnore[]; +extern const u8 BattleScript_SnoreIsAsleep[]; +extern const u8 BattleScript_DoSnore[]; +extern const u8 BattleScript_EffectConversion2[]; +extern const u8 BattleScript_EffectLockOn[]; +extern const u8 BattleScript_EffectSketch[]; +extern const u8 BattleScript_EffectSleepTalk[]; +extern const u8 BattleScript_SleepTalkIsAsleep[]; +extern const u8 BattleScript_SleepTalkUsingMove[]; +extern const u8 BattleScript_EffectDestinyBond[]; +extern const u8 BattleScript_EffectFlail[]; +extern const u8 BattleScript_EffectSpite[]; +extern const u8 BattleScript_EffectHealBell[]; +extern const u8 BattleScript_CheckHealBellMon2Unaffected[]; +extern const u8 BattleScript_PartyHealEnd[]; +extern const u8 BattleScript_EffectTripleKick[]; +extern const u8 BattleScript_TripleKickLoop[]; +extern const u8 BattleScript_DoTripleKickAttack[]; +extern const u8 BattleScript_TripleKickNoMoreHits[]; +extern const u8 BattleScript_TripleKickPrintStrings[]; +extern const u8 BattleScript_TripleKickEnd[]; +extern const u8 BattleScript_EffectThief[]; +extern const u8 BattleScript_EffectMeanLook[]; +extern const u8 BattleScript_EffectNightmare[]; +extern const u8 BattleScript_NightmareWorked[]; +extern const u8 BattleScript_EffectMinimize[]; +extern const u8 BattleScript_EffectCurse[]; +extern const u8 BattleScript_CurseTrySpeed[]; +extern const u8 BattleScript_CurseTryAttack[]; +extern const u8 BattleScript_CurseTryDefence[]; +extern const u8 BattleScript_CurseEnd[]; +extern const u8 BattleScript_GhostCurse[]; +extern const u8 BattleScript_DoGhostCurse[]; +extern const u8 BattleScript_EffectProtect[]; +extern const u8 BattleScript_EffectSpikes[]; +extern const u8 BattleScript_EffectForesight[]; +extern const u8 BattleScript_EffectPerishSong[]; +extern const u8 BattleScript_PerishSongLoop[]; +extern const u8 BattleScript_PerishSongLoopIncrement[]; +extern const u8 BattleScript_PerishSongNotAffected[]; +extern const u8 BattleScript_EffectSandstorm[]; +extern const u8 BattleScript_EffectRollout[]; +extern const u8 BattleScript_RolloutCheckAccuracy[]; +extern const u8 BattleScript_RolloutHit[]; +extern const u8 BattleScript_EffectSwagger[]; +extern const u8 BattleScript_SwaggerTryConfuse[]; +extern const u8 BattleScript_EffectFuryCutter[]; +extern const u8 BattleScript_FuryCutterHit[]; +extern const u8 BattleScript_EffectAttract[]; +extern const u8 BattleScript_EffectReturn[]; +extern const u8 BattleScript_EffectPresent[]; +extern const u8 BattleScript_EffectSafeguard[]; +extern const u8 BattleScript_EffectThawHit[]; +extern const u8 BattleScript_EffectMagnitude[]; +extern const u8 BattleScript_EffectBatonPass[]; +extern const u8 BattleScript_EffectRapidSpin[]; +extern const u8 BattleScript_EffectSonicboom[]; +extern const u8 BattleScript_EffectMorningSun[]; +extern const u8 BattleScript_EffectHiddenPower[]; +extern const u8 BattleScript_EffectRainDance[]; +extern const u8 BattleScript_MoveWeatherChange[]; +extern const u8 BattleScript_EffectSunnyDay[]; +extern const u8 BattleScript_EffectDefenseUpHit[]; +extern const u8 BattleScript_EffectAttackUpHit[]; +extern const u8 BattleScript_EffectAllStatsUpHit[]; +extern const u8 BattleScript_EffectBellyDrum[]; +extern const u8 BattleScript_EffectPsychUp[]; +extern const u8 BattleScript_EffectMirrorCoat[]; +extern const u8 BattleScript_EffectSkullBash[]; +extern const u8 BattleScript_SkullBashEnd[]; +extern const u8 BattleScript_EffectTwister[]; +extern const u8 BattleScript_FlinchEffect[]; +extern const u8 BattleScript_EffectEarthquake[]; +extern const u8 BattleScript_82D9C44[]; +extern const u8 BattleScript_82D9C64[]; +extern const u8 BattleScript_82D9C73[]; +extern const u8 BattleScript_82D9CAC[]; +extern const u8 BattleScript_EffectFutureSight[]; +extern const u8 BattleScript_EffectGust[]; +extern const u8 BattleScript_EffectStomp[]; +extern const u8 BattleScript_EffectSolarbeam[]; +extern const u8 BattleScript_SolarbeamDecideTurn[]; +extern const u8 BattleScript_SolarbeamOnFirstTurn[]; +extern const u8 BattleScript_EffectThunder[]; +extern const u8 BattleScript_EffectTeleport[]; +extern const u8 BattleScript_EffectBeatUp[]; +extern const u8 BattleScript_BeatUpLoop[]; +extern const u8 BattleScript_BeatUpAttack[]; +extern const u8 BattleScript_BeatUpEnd[]; +extern const u8 BattleScript_EffectSemiInvulnerable[]; +extern const u8 BattleScript_FirstTurnBounce[]; +extern const u8 BattleScript_FirstTurnDive[]; +extern const u8 BattleScript_FirstTurnFly[]; +extern const u8 BattleScript_FirstTurnSemiInvulnerable[]; +extern const u8 BattleScript_SecondTurnSemiInvulnerable[]; +extern const u8 BattleScript_SemiInvulnerableTryHit[]; +extern const u8 BattleScript_SemiInvulnerableMiss[]; +extern const u8 BattleScript_EffectDefenseCurl[]; +extern const u8 BattleScript_DefenseCurlDoStatUpAnim[]; +extern const u8 BattleScript_EffectSoftboiled[]; +extern const u8 BattleScript_PresentHealTarget[]; +extern const u8 BattleScript_AlreadyAtFullHp[]; +extern const u8 BattleScript_EffectFakeOut[]; +extern const u8 BattleScript_ButItFailedAtkStringPpReduce[]; +extern const u8 BattleScript_ButItFailedPpReduce[]; +extern const u8 BattleScript_ButItFailed[]; +extern const u8 BattleScript_NotAffected[]; +extern const u8 BattleScript_EffectUproar[]; +extern const u8 BattleScript_UproarHit[]; +extern const u8 BattleScript_EffectStockpile[]; +extern const u8 BattleScript_EffectSpitUp[]; +extern const u8 BattleScript_SpitUpFail[]; +extern const u8 BattleScript_82D9FA2[]; +extern const u8 BattleScript_EffectSwallow[]; +extern const u8 BattleScript_SwallowFail[]; +extern const u8 BattleScript_EffectHail[]; +extern const u8 BattleScript_EffectTorment[]; +extern const u8 BattleScript_EffectFlatter[]; +extern const u8 BattleScript_FlatterTryConfuse[]; +extern const u8 BattleScript_EffectWillOWisp[]; +extern const u8 BattleScript_WaterVeilPrevents[]; +extern const u8 BattleScript_AlreadyBurned[]; +extern const u8 BattleScript_EffectMemento[]; +extern const u8 BattleScript_82DA119[]; +extern const u8 BattleScript_82DA13C[]; +extern const u8 BattleScript_82DA148[]; +extern const u8 BattleScript_82DA153[]; +extern const u8 BattleScript_82DA15A[]; +extern const u8 BattleScript_EffectFacade[]; +extern const u8 BattleScript_FacadeDoubleDmg[]; +extern const u8 BattleScript_EffectFocusPunch[]; +extern const u8 BattleScript_EffectSmellingsalt[]; +extern const u8 BattleScript_82DA1BA[]; +extern const u8 BattleScript_EffectFollowMe[]; +extern const u8 BattleScript_EffectNaturePower[]; +extern const u8 BattleScript_EffectCharge[]; +extern const u8 BattleScript_EffectTaunt[]; +extern const u8 BattleScript_EffectHelpingHand[]; +extern const u8 BattleScript_EffectTrick[]; +extern const u8 BattleScript_EffectRolePlay[]; +extern const u8 BattleScript_EffectWish[]; +extern const u8 BattleScript_EffectAssist[]; +extern const u8 BattleScript_EffectIngrain[]; +extern const u8 BattleScript_EffectSuperpower[]; +extern const u8 BattleScript_EffectMagicCoat[]; +extern const u8 BattleScript_EffectRecycle[]; +extern const u8 BattleScript_EffectRevenge[]; +extern const u8 BattleScript_EffectBrickBreak[]; +extern const u8 BattleScript_82DA306[]; +extern const u8 BattleScript_82DA319[]; +extern const u8 BattleScript_EffectYawn[]; +extern const u8 BattleScript_82DA378[]; +extern const u8 BattleScript_82DA382[]; +extern const u8 BattleScript_EffectKnockOff[]; +extern const u8 BattleScript_EffectEndeavor[]; +extern const u8 BattleScript_EffectEruption[]; +extern const u8 BattleScript_EffectSkillSwap[]; +extern const u8 BattleScript_EffectImprison[]; +extern const u8 BattleScript_EffectRefresh[]; +extern const u8 BattleScript_EffectGrudge[]; +extern const u8 BattleScript_EffectSnatch[]; +extern const u8 BattleScript_EffectLowKick[]; +extern const u8 BattleScript_EffectSecretPower[]; +extern const u8 BattleScript_EffectDoubleEdge[]; +extern const u8 BattleScript_EffectTeeterDance[]; +extern const u8 BattleScript_82DA47B[]; +extern const u8 BattleScript_82DA4C7[]; +extern const u8 BattleScript_82DA4D0[]; +extern const u8 BattleScript_82DA4E5[]; +extern const u8 BattleScript_82DA4F3[]; +extern const u8 BattleScript_82DA501[]; +extern const u8 BattleScript_82DA50F[]; +extern const u8 BattleScript_82DA520[]; +extern const u8 BattleScript_EffectMudSport[]; +extern const u8 BattleScript_EffectPoisonFang[]; +extern const u8 BattleScript_EffectWeatherBall[]; +extern const u8 BattleScript_EffectOverheat[]; +extern const u8 BattleScript_EffectTickle[]; +extern const u8 BattleScript_TickleDoMoveAnim[]; +extern const u8 BattleScript_TickleTryLowerDef[]; +extern const u8 BattleScript_TickleEnd[]; +extern const u8 BattleScript_CantLowerMultipleStats[]; +extern const u8 BattleScript_EffectCosmicPower[]; +extern const u8 BattleScript_CosmicPowerDoMoveAnim[]; +extern const u8 BattleScript_CosmicPowerTrySpDef[]; +extern const u8 BattleScript_CosmicPowerEnd[]; +extern const u8 BattleScript_EffectSkyUppercut[]; +extern const u8 BattleScript_EffectBulkUp[]; +extern const u8 BattleScript_BulkUpDoMoveAnim[]; +extern const u8 BattleScript_BulkUpTryDef[]; +extern const u8 BattleScript_BulkUpEnd[]; +extern const u8 BattleScript_EffectCalmMind[]; +extern const u8 BattleScript_CalmMindDoMoveAnim[]; +extern const u8 BattleScript_CalmMindTrySpDef[]; +extern const u8 BattleScript_CalmMindEnd[]; +extern const u8 BattleScript_CantRaiseMultipleStats[]; +extern const u8 BattleScript_EffectDragonDance[]; +extern const u8 BattleScript_DragonDanceDoMoveAnim[]; +extern const u8 BattleScript_DragonDanceTrySpeed[]; +extern const u8 BattleScript_DragonDanceEnd[]; +extern const u8 BattleScript_EffectCamouflage[]; +extern const u8 BattleScript_FaintAttacker[]; +extern const u8 BattleScript_FaintTarget[]; +extern const u8 BattleScript_82DA7C4[]; +extern const u8 BattleScript_82DA7CD[]; +extern const u8 BattleScript_82DA816[]; +extern const u8 BattleScript_82DA8D0[]; +extern const u8 BattleScript_82DA8F5[]; +extern const u8 BattleScript_82DA8F6[]; +extern const u8 BattleScript_82DA8FC[]; +extern const u8 BattleScript_82DA908[]; +extern const u8 BattleScript_82DA92C[]; +extern const u8 BattleScript_LocalTrainerBattleWon[]; +extern const u8 BattleScript_LocalTwoTrainersDefeated[]; +extern const u8 BattleScript_LocalBattleWonLoseTexts[]; +extern const u8 BattleScript_LocalBattleWonReward[]; +extern const u8 BattleScript_PayDayMoneyAndPickUpItems[]; +extern const u8 BattleScript_LocalBattleLost[]; +extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[]; +extern const u8 BattleScript_LocalBattleLostEnd[]; +extern const u8 BattleScript_CheckDomeDrew[]; +extern const u8 BattleScript_LocalBattleLostPrintTrainersWinText[]; +extern const u8 BattleScript_LocalBattleLostDoTrainer2WinText[]; +extern const u8 BattleScript_LocalBattleLostEnd_[]; +extern const u8 BattleScript_82DAA0B[]; +extern const u8 BattleScript_82DAA31[]; +extern const u8 BattleScript_LinkBattleWonOrLost[]; +extern const u8 BattleScript_LinkBattleWonOrLostWaitEnd[]; +extern const u8 BattleScript_82DAA5C[]; +extern const u8 BattleScript_82DAA83[]; +extern const u8 BattleScript_FrontierTrainerBattleWon[]; +extern const u8 BattleScript_82DAAAB[]; +extern const u8 BattleScript_82DAAAE[]; +extern const u8 BattleScript_82DAACB[]; +extern const u8 BattleScript_82DAADA[]; +extern const u8 BattleScript_SmokeBallEscape[]; +extern const u8 BattleScript_RanAwayUsingMonAbility[]; +extern const u8 BattleScript_GotAwaySafely[]; +extern const u8 BattleScript_WildMonFled[]; +extern const u8 BattleScript_PrintCantRunFromTrainer[]; +extern const u8 BattleScript_PrintFailedToRunString[]; +extern const u8 BattleScript_PrintCantEscapeFromBattle[]; +extern const u8 BattleScript_PrintFullBox[]; +extern const u8 BattleScript_ActionSwitch[]; +extern const u8 BattleScript_82DAB35[]; +extern const u8 BattleScript_82DAB37[]; +extern const u8 BattleScript_82DAB44[]; +extern const u8 BattleScript_82DAB77[]; +extern const u8 BattleScript_82DABB8[]; +extern const u8 BattleScript_Pausex20[]; +extern const u8 BattleScript_LevelUp[]; +extern const u8 BattleScript_TryLearnMoveLoop[]; +extern const u8 BattleScript_AskToLearnMove[]; +extern const u8 BattleScript_ForgotAndLearnedNewMove[]; +extern const u8 BattleScript_LearnedNewMove[]; +extern const u8 BattleScript_LearnMoveReturn[]; +extern const u8 BattleScript_RainContinuesOrEnds[]; +extern const u8 BattleScript_RainContinuesOrEndsEnd[]; +extern const u8 BattleScript_DamagingWeatherContinues[]; +extern const u8 BattleScript_DamagingWeatherLoop[]; +extern const u8 BattleScript_DamagingWeatherLoopIncrement[]; +extern const u8 BattleScript_DamagingWeatherContinuesEnd[]; +extern const u8 BattleScript_SandStormHailEnds[]; +extern const u8 BattleScript_SunlightContinues[]; +extern const u8 BattleScript_SunlightFaded[]; +extern const u8 BattleScript_OverworldWeatherStarts[]; +extern const u8 BattleScript_SideStatusWoreOff[]; +extern const u8 BattleScript_SafeguardProtected[]; +extern const u8 BattleScript_SafeguardEnds[]; +extern const u8 BattleScript_LeechSeedTurnDrain[]; +extern const u8 BattleScript_82DAD47[]; +extern const u8 BattleScript_82DAD4D[]; +extern const u8 BattleScript_BideStoringEnergy[]; +extern const u8 BattleScript_BideAttack[]; +extern const u8 BattleScript_BideNoEnergyToAttack[]; +extern const u8 BattleScript_82DADD8[]; +extern const u8 BattleScript_82DADF1[]; +extern const u8 BattleScript_MistProtected[]; +extern const u8 BattleScript_RageIsBuilding[]; +extern const u8 BattleScript_MoveUsedIsDisabled[]; +extern const u8 BattleScript_SelectingDisabledMove[]; +extern const u8 BattleScript_DisabledNoMore[]; +extern const u8 BattleScript_82DAE2A[]; +extern const u8 BattleScript_82DAE2D[]; +extern const u8 BattleScript_EncoredNoMore[]; +extern const u8 BattleScript_DestinyBondTakesLife[]; +extern const u8 BattleScript_SpikesOnAttacker[]; +extern const u8 BattleScript_82DAE7A[]; +extern const u8 BattleScript_SpikesOnTarget[]; +extern const u8 BattleScript_82DAEB1[]; +extern const u8 BattleScript_SpikesOngBank1[]; +extern const u8 BattleScript_82DAEE8[]; +extern const u8 BattleScript_82DAEFE[]; +extern const u8 BattleScript_PerishSongTakesLife[]; +extern const u8 BattleScript_PerishSongCountGoesDown[]; +extern const u8 BattleScript_AllStatsUp[]; +extern const u8 BattleScript_82DAF54[]; +extern const u8 BattleScript_82DAF72[]; +extern const u8 BattleScript_82DAF86[]; +extern const u8 BattleScript_82DAF9A[]; +extern const u8 BattleScript_82DAFAE[]; +extern const u8 BattleScript_82DAFC2[]; +extern const u8 BattleScript_RapidSpinAway[]; +extern const u8 BattleScript_WrapFree[]; +extern const u8 BattleScript_LeechSeedFree[]; +extern const u8 BattleScript_SpikesFree[]; +extern const u8 BattleScript_MonTookFutureAttack[]; +extern const u8 BattleScript_82DB001[]; +extern const u8 BattleScript_82DB008[]; +extern const u8 BattleScript_82DB020[]; +extern const u8 BattleScript_82DB027[]; +extern const u8 BattleScript_82DB03F[]; +extern const u8 BattleScript_82DB058[]; +extern const u8 BattleScript_NoMovesLeft[]; +extern const u8 BattleScript_SelectingMoveWithNoPP[]; +extern const u8 BattleScript_NoPPForMove[]; +extern const u8 BattleScript_SelectingTormentedMove[]; +extern const u8 BattleScript_82DB08D[]; +extern const u8 BattleScript_82DB098[]; +extern const u8 BattleScript_SelectingNotAllowedMoveTaunt[]; +extern const u8 BattleScript_MoveUsedIsTaunted[]; +extern const u8 BattleScript_82DB0AF[]; +extern const u8 BattleScript_WishComesTrue[]; +extern const u8 BattleScript_82DB0DE[]; +extern const u8 BattleScript_IngrainTurnHeal[]; +extern const u8 BattleScript_82DB109[]; +extern const u8 BattleScript_AtkDefDown[]; +extern const u8 BattleScript_82DB144[]; +extern const u8 BattleScript_82DB167[]; +extern const u8 BattleScript_KnockedOff[]; +extern const u8 BattleScript_MoveUsedIsImprisoned[]; +extern const u8 BattleScript_SelectingImprisionedMove[]; +extern const u8 BattleScript_82DB185[]; +extern const u8 BattleScript_GrudgeTakesPp[]; +extern const u8 BattleScript_MagicCoatBounce[]; +extern const u8 BattleScript_SnatchedMove[]; +extern const u8 BattleScript_EnduredMsg[]; +extern const u8 BattleScript_OneHitKOMsg[]; +extern const u8 BattleScript_SAtkDown2[]; +extern const u8 BattleScript_82DB1FE[]; +extern const u8 BattleScript_FocusPunchSetUp[]; +extern const u8 BattleScript_MoveUsedIsAsleep[]; +extern const u8 BattleScript_MoveUsedWokeUp[]; +extern const u8 BattleScript_MonWokeUpInUproar[]; +extern const u8 BattleScript_PoisonTurnDmg[]; +extern const u8 BattleScript_82DB243[]; +extern const u8 BattleScript_82DB245[]; +extern const u8 BattleScript_82DB25E[]; +extern const u8 BattleScript_BurnTurnDmg[]; +extern const u8 BattleScript_MoveUsedIsFrozen[]; +extern const u8 BattleScript_MoveUsedUnfroze[]; +extern const u8 BattleScript_DefrostedViaFireMove[]; +extern const u8 BattleScript_MoveUsedIsParalyzed[]; +extern const u8 BattleScript_MoveUsedFlinched[]; +extern const u8 BattleScript_PrintUproarOverTurns[]; +extern const u8 BattleScript_ThrashConfuses[]; +extern const u8 BattleScript_MoveUsedIsConfused[]; +extern const u8 BattleScript_82DB2D4[]; +extern const u8 BattleScript_82DB2FF[]; +extern const u8 BattleScript_MoveUsedIsConfusedNoMore[]; +extern const u8 BattleScript_PrintPayDayMoneyString[]; +extern const u8 BattleScript_WrapTurnDmg[]; +extern const u8 BattleScript_WrapEnds[]; +extern const u8 BattleScript_MoveUsedIsInLove[]; +extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; +extern const u8 BattleScript_NightmareTurnDmg[]; +extern const u8 BattleScript_CurseTurnDmg[]; +extern const u8 BattleScript_TargetPRLZHeal[]; +extern const u8 BattleScript_MoveEffectSleep[]; +extern const u8 BattleScript_82DB374[]; +extern const u8 BattleScript_YawnMakesAsleep[]; +extern const u8 BattleScript_MoveEffectPoison[]; +extern const u8 BattleScript_MoveEffectBurn[]; +extern const u8 BattleScript_MoveEffectFreeze[]; +extern const u8 BattleScript_MoveEffectParalysis[]; +extern const u8 BattleScript_MoveEffectUproar[]; +extern const u8 BattleScript_MoveEffectToxic[]; +extern const u8 BattleScript_MoveEffectPayDay[]; +extern const u8 BattleScript_MoveEffectWrap[]; +extern const u8 BattleScript_MoveEffectConfusion[]; +extern const u8 BattleScript_MoveEffectRecoil33[]; +extern const u8 BattleScript_DoRecoil33[]; +extern const u8 BattleScript_Recoil33End[]; +extern const u8 BattleScript_ItemSteal[]; +extern const u8 BattleScript_DrizzleActivates[]; +extern const u8 BattleScript_SpeedBoostActivates[]; +extern const u8 BattleScript_TraceActivates[]; +extern const u8 BattleScript_RainDishActivates[]; +extern const u8 BattleScript_SandstreamActivates[]; +extern const u8 BattleScript_ShedSkinActivates[]; +extern const u8 BattleScript_WeatherFormChanges[]; +extern const u8 BattleScript_WeatherFormChangesLoop[]; +extern const u8 BattleScript_CastformChange[]; +extern const u8 BattleScript_82DB4AF[]; +extern const u8 BattleScript_82DB4B8[]; +extern const u8 BattleScript_82DB4BE[]; +extern const u8 BattleScript_82DB4C1[]; +extern const u8 BattleScript_82DB4CD[]; +extern const u8 BattleScript_82DB510[]; +extern const u8 BattleScript_82DB51B[]; +extern const u8 BattleScript_82DB51C[]; +extern const u8 BattleScript_DroughtActivates[]; +extern const u8 BattleScript_TookAttack[]; +extern const u8 BattleScript_SturdyPreventsOHKO[]; +extern const u8 BattleScript_DampStopsExplosion[]; +extern const u8 BattleScript_MoveHPDrain_PPLoss[]; +extern const u8 BattleScript_MoveHPDrain[]; +extern const u8 BattleScript_MonMadeMoveUseless_PPLoss[]; +extern const u8 BattleScript_MonMadeMoveUseless[]; +extern const u8 BattleScript_FlashFireBoost_PPLoss[]; +extern const u8 BattleScript_FlashFireBoost[]; +extern const u8 BattleScript_82DB5B9[]; +extern const u8 BattleScript_AbilityNoStatLoss[]; +extern const u8 BattleScript_BRNPrevention[]; +extern const u8 BattleScript_PRLZPrevention[]; +extern const u8 BattleScript_PSNPrevention[]; +extern const u8 BattleScript_ObliviousPreventsAttraction[]; +extern const u8 BattleScript_FlinchPrevention[]; +extern const u8 BattleScript_OwnTempoPrevents[]; +extern const u8 BattleScript_SoundproofProtected[]; +extern const u8 BattleScript_AbilityNoSpecificStatLoss[]; +extern const u8 BattleScript_StickyHoldActivates[]; +extern const u8 BattleScript_ColorChangeActivates[]; +extern const u8 BattleScript_RoughSkinActivates[]; +extern const u8 BattleScript_CuteCharmActivates[]; +extern const u8 BattleScript_ApplySecondaryEffect[]; +extern const u8 BattleScript_SynchronizeActivates[]; +extern const u8 BattleScript_NoItemSteal[]; +extern const u8 BattleScript_AbilityCuredStatus[]; +extern const u8 BattleScript_82DB695[]; +extern const u8 BattleScript_IgnoresAndUsesRandomMove[]; +extern const u8 BattleScript_MoveUsedLoafingAround[]; +extern const u8 BattleScript_82DB6C7[]; +extern const u8 BattleScript_IgnoresAndFallsAsleep[]; +extern const u8 BattleScript_82DB6F0[]; +extern const u8 BattleScript_SubstituteFade[]; +extern const u8 BattleScript_BerryCurePrlzEnd2[]; +extern const u8 BattleScript_BerryCureParRet[]; +extern const u8 BattleScript_BerryCurePsnEnd2[]; +extern const u8 BattleScript_BerryCurePsnRet[]; +extern const u8 BattleScript_BerryCureBrnEnd2[]; +extern const u8 BattleScript_BerryCureBrnRet[]; +extern const u8 BattleScript_BerryCureFrzEnd2[]; +extern const u8 BattleScript_BerryCureFrzRet[]; +extern const u8 BattleScript_BerryCureSlpEnd2[]; +extern const u8 BattleScript_BerryCureSlpRet[]; +extern const u8 BattleScript_BerryCureConfusionEnd2[]; +extern const u8 BattleScript_BerryCureConfusionRet[]; +extern const u8 BattleScript_BerryCureChosenStatusEnd2[]; +extern const u8 BattleScript_BerryCureChosenStatusRet[]; +extern const u8 BattleScript_WhiteHerbEnd2[]; +extern const u8 BattleScript_WhiteHerbRet[]; +extern const u8 BattleScript_ItemHealHP_RemoveItem[]; +extern const u8 BattleScript_BerryPPHealEnd2[]; +extern const u8 BattleScript_ItemHealHP_End2[]; +extern const u8 BattleScript_ItemHealHP_Ret[]; +extern const u8 BattleScript_SelectingNotAllowedMoveChoiceItem[]; +extern const u8 BattleScript_HangedOnMsg[]; +extern const u8 BattleScript_BerryConfuseHealEnd2[]; +extern const u8 BattleScript_BerryStatRaiseEnd2[]; +extern const u8 BattleScript_82DB85B[]; +extern const u8 BattleScript_BerryFocusEnergyEnd2[]; +extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; +extern const u8 BattleScript_82DB87D[]; +extern const u8 BattleScript_82DB881[]; +extern const u8 BattleScript_82DB887[]; +extern const u8 BattleScript_82DB89D[]; +extern const u8 BattleScript_82DB8BE[]; +extern const u8 BattleScript_82DB8E0[]; +extern const u8 BattleScript_82DB8F3[]; +extern const u8 BattleScript_82DB973[]; +extern const u8 BattleScript_82DB992[]; +extern const u8 BattleScript_AskIfWantsToForfeitMatch[]; +extern const u8 BattleScript_82DB9C1[]; +extern const u8 BattleScript_82DB9C8[]; +extern const u8 BattleScript_BallThrow[]; +extern const u8 BattleScript_BallThrowByWally[]; +extern const u8 BattleScript_SafariBallThrow[]; +extern const u8 BattleScript_SuccessBallThrow[]; +extern const u8 BattleScript_82DBD92[]; +extern const u8 BattleScript_82DBDA5[]; +extern const u8 BattleScript_82DBDC2[]; +extern const u8 BattleScript_82DBDC3[]; +extern const u8 BattleScript_WallyBallThrow[]; +extern const u8 BattleScript_ShakeBallThrow[]; +extern const u8 BattleScript_82DBE01[]; +extern const u8 BattleScript_TrainerBallBlock[]; +extern const u8 BattleScript_82DBE12[]; +extern const u8 BattleScript_82DBE1C[]; +extern const u8 BattleScript_82DBE4B[]; +extern const u8 BattleScript_82DBE6F[]; +extern const u8 BattleScript_82DBE91[]; +extern const u8 BattleScript_RunByUsingItem[]; +extern const u8 BattleScript_ActionWatchesCarefully[]; +extern const u8 BattleScript_ActionGetNear[]; +extern const u8 BattleScript_ActionThrowPokeblock[]; +extern const u8 BattleScript_82DBEE3[]; + +#endif // GUARD_BATTLE_SCRIPTS_H diff --git a/src/battle_2.c b/src/battle_2.c index 2be6f9d77..eead4d7a9 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -6,6 +6,7 @@ #include "gpu_regs.h" #include "unknown_task.h" #include "battle_setup.h" +#include "battle_scripts.h" #include "pokemon.h" #include "palette.h" #include "task.h" @@ -119,14 +120,14 @@ extern u32 gBattleExecBuffer; extern u8 gMultiHitCounter; extern u8 gBattleMoveFlags; extern s32 gBattleMoveDamage; -extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT]; -extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; -extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; -extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT]; -extern u16 gUnknown_02024258[BATTLE_BANKS_COUNT]; -extern u16 gUnknown_02024260[BATTLE_BANKS_COUNT]; +extern const u8* gPalaceSelectionBattleScripts[BATTLE_BANKS_COUNT]; +extern u16 gLastPrintedMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastLandedMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastHitByType[BATTLE_BANKS_COUNT]; +extern u16 gLastResultingMoves[BATTLE_BANKS_COUNT]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; -extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT]; +extern u8 gLastHitBy[BATTLE_BANKS_COUNT]; extern u8 gUnknown_02024284[BATTLE_BANKS_COUNT]; extern u32 gStatuses3[BATTLE_BANKS_COUNT]; extern u16 gSideAffecting[2]; @@ -140,7 +141,7 @@ extern u16 gChosenMovesByBanks[BATTLE_BANKS_COUNT]; extern u8 gCurrentActionFuncId; extern u8 gLastUsedAbility; extern u8 gUnknown_0203CF00[]; -extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; +extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT]; extern const u8* gBattlescriptCurrInstr; extern u8 gActionsByTurnOrder[BATTLE_BANKS_COUNT]; extern u8 gCurrentTurnActionNumber; @@ -148,7 +149,7 @@ extern u16 gDynamicBasePower; extern u8 gCritMultiplier; extern u8 gCurrMovePos; extern u8 gUnknown_020241E9; -extern u16 gLastUsedMove; +extern u16 gChosenMove; extern const struct BattleMove gBattleMoves[]; extern const u16 gUnknown_08C004E0[]; // battle textbox palette @@ -178,31 +179,6 @@ extern const u8 gText_Ice[]; extern const u8 gText_Confusion[]; extern const u8 gText_Love[]; -// battlescripts -extern const u8 gUnknown_082DB8BE[]; -extern const u8 gUnknown_082DB881[]; -extern const u8 BattleScript_ActionSelectionItemsCantBeUsed[]; -extern const u8 gUnknown_082DAB11[]; -extern const u8 gUnknown_082DB9BA[]; -extern const u8 gUnknown_082DAAFE[]; -extern const u8 gUnknown_082DAB0B[]; -extern const u8 BattleScript_FocusPunchSetUp[]; -extern const u8 BattleScript_LinkBattleWonOrLost[]; -extern const u8 BattleScript_FrontierTrainerBattleWon[]; -extern const u8 BattleScript_LocalTrainerBattleWon[]; -extern const u8 BattleScript_PayDayMoneyAndPickUpItems[]; -extern const u8 BattleScript_LocalBattleLost[]; -extern const u8 gUnknown_082DB9C8[]; -extern const u8 gUnknown_082DAA0B[]; -extern const u8 gUnknown_082DB9C1[]; -extern const u8 BattleScript_RanAwayUsingMonAbility[]; -extern const u8 BattleScript_SmokeBallEscape[]; -extern const u8 BattleScript_GotAwaySafely[]; -extern const u8 BattleScript_WildMonFled[]; -extern const u8 BattleScript_MoveUsedLoafingAround[]; -extern const u8 BattleScript_ActionSwitch[]; -extern const u8 BattleScript_PrintFailedToRunString[]; - // functions extern void dp12_8087EA4(void); extern void sub_80356D0(void); @@ -485,7 +461,7 @@ static void sub_8036A5C(void) u32 status = 0; s32 i; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); @@ -1902,7 +1878,7 @@ static void sub_8038B94(u8 taskId) } r7 = 0; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { u16 species = GetMonData(&sp4[i], MON_DATA_SPECIES2); u16 hp = GetMonData(&sp4[i], MON_DATA_HP); @@ -1926,7 +1902,7 @@ static void sub_8038B94(u8 taskId) gTasks[taskId].data[3] = r7; r7 = 0; - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { u16 species = GetMonData(&sp8[i], MON_DATA_SPECIES2); u16 hp = GetMonData(&sp8[i], MON_DATA_HP); @@ -2765,17 +2741,17 @@ static void BattleStartClearSetData(void) for (j = 0; j < sizeof(struct DisableStruct); j++) dataPtr[j] = 0; - gDisableStructs[i].isFirstTurn= 2; + gDisableStructs[i].isFirstTurn = 2; gUnknown_02024284[i] = 0; - gLastUsedMovesByBanks[i] = 0; - gUnknown_02024250[i] = 0; - gUnknown_02024258[i] = 0; - gUnknown_02024260[i] = 0; - gUnknown_02024270[i] = 0xFF; + gLastMoves[i] = 0; + gLastLandedMoves[i] = 0; + gLastHitByType[i] = 0; + gLastResultingMoves[i] = 0; + gLastHitBy[i] = 0xFF; gLockedMoves[i] = 0; - gUnknownMovesUsedByBanks[i] = 0; + gLastPrintedMoves[i] = 0; gBattleResources->flags->flags[i] = 0; - gUnknown_02024230[i] = 0; + gPalaceSelectionBattleScripts[i] = 0; } for (i = 0; i < 2; i++) @@ -2932,14 +2908,14 @@ void SwitchInClearSetData(void) } gBattleMoveFlags = 0; - gDisableStructs[gActiveBank].isFirstTurn= 2; + gDisableStructs[gActiveBank].isFirstTurn = 2; gDisableStructs[gActiveBank].truantUnknownBit = disableStructCopy.truantUnknownBit; - gLastUsedMovesByBanks[gActiveBank] = 0; - gUnknown_02024250[gActiveBank] = 0; - gUnknown_02024258[gActiveBank] = 0; - gUnknown_02024260[gActiveBank] = 0; - gUnknownMovesUsedByBanks[gActiveBank] = 0; - gUnknown_02024270[gActiveBank] = 0xFF; + gLastMoves[gActiveBank] = 0; + gLastLandedMoves[gActiveBank] = 0; + gLastHitByType[gActiveBank] = 0; + gLastResultingMoves[gActiveBank] = 0; + gLastPrintedMoves[gActiveBank] = 0; + gLastHitBy[gActiveBank] = 0xFF; *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 0) = 0; *(gBattleStruct->mirrorMoves + gActiveBank * 2 + 1) = 0; @@ -3026,12 +3002,12 @@ void FaintClearSetData(void) gDisableStructs[gActiveBank].isFirstTurn = 2; - gLastUsedMovesByBanks[gActiveBank] = 0; - gUnknown_02024250[gActiveBank] = 0; - gUnknown_02024258[gActiveBank] = 0; - gUnknown_02024260[gActiveBank] = 0; - gUnknownMovesUsedByBanks[gActiveBank] = 0; - gUnknown_02024270[gActiveBank] = 0xFF; + gLastMoves[gActiveBank] = 0; + gLastLandedMoves[gActiveBank] = 0; + gLastHitByType[gActiveBank] = 0; + gLastResultingMoves[gActiveBank] = 0; + gLastPrintedMoves[gActiveBank] = 0; + gLastHitBy[gActiveBank] = 0xFF; *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 0) = 0; *(u8*)((u8*)(&gBattleStruct->choicedMove[gActiveBank]) + 1) = 0; @@ -3213,7 +3189,7 @@ static void BattleIntroDrawPartySummaryScreens(void) if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) @@ -3231,7 +3207,7 @@ static void BattleIntroDrawPartySummaryScreens(void) EmitDrawPartyStatusSummary(0, hpStatus, 0x80); MarkBufferBankForExecution(gActiveBank); - for (i = 0; i < 6; i++) + for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) @@ -3704,7 +3680,7 @@ static void TryDoEventsBeforeFirstTurn(void) if (gBattleTypeFlags & BATTLE_TYPE_ARENA) { StopCryAndClearCrySongs(); - BattleScriptExecute(gUnknown_082DB8BE); + BattleScriptExecute(BattleScript_82DB8BE); } } @@ -3792,9 +3768,9 @@ void BattleTurnPassed(void) gRandomTurnNumber = Random(); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) - BattleScriptExecute(gUnknown_082DB881); + BattleScriptExecute(BattleScript_82DB881); else if (gBattleTypeFlags & BATTLE_TYPE_ARENA && gBattleStruct->field_DA == 0) - BattleScriptExecute(gUnknown_082DB8BE); + BattleScriptExecute(BattleScript_82DB8BE); } u8 IsRunningFromBattleImpossible(void) @@ -4007,7 +3983,7 @@ static void HandleTurnActionSelectionState(void) | BATTLE_TYPE_x2000000)) { RecordedBattle_ClearBankAction(gActiveBank, 1); - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_ActionSelectionItemsCantBeUsed; + gSelectionBattleScripts[gActiveBank] = BattleScript_ActionSelectionItemsCantBeUsed; gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4052,7 +4028,7 @@ static void HandleTurnActionSelectionState(void) case ACTION_SAFARI_ZONE_BALL: if (IsPlayerPartyAndPokemonStorageFull()) { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB11; + gSelectionBattleScripts[gActiveBank] = BattleScript_PrintFullBox; gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4107,7 +4083,7 @@ static void HandleTurnActionSelectionState(void) && gBattleTypeFlags & (BATTLE_TYPE_FRONTIER | BATTLE_TYPE_x4000000) && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB9BA; + gSelectionBattleScripts[gActiveBank] = BattleScript_AskIfWantsToForfeitMatch; gBattleCommunication[gActiveBank] = 8; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4117,13 +4093,13 @@ static void HandleTurnActionSelectionState(void) && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - BattleScriptExecute(gUnknown_082DAAFE); + BattleScriptExecute(BattleScript_PrintCantRunFromTrainer); gBattleCommunication[gActiveBank] = 1; } - else if (IsRunningFromBattleImpossible() != 0 + else if (IsRunningFromBattleImpossible() && gBattleBufferB[gActiveBank][1] == ACTION_RUN) { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAB0B; + gSelectionBattleScripts[gActiveBank] = BattleScript_PrintCantEscapeFromBattle; gBattleCommunication[gActiveBank] = STATE_SELECTION_SCRIPT; *(gBattleStruct->selectionScriptFinished + gActiveBank) = FALSE; *(gBattleStruct->stateIdAfterSelScript + gActiveBank) = STATE_BEFORE_ACTION_CHOSEN; @@ -4276,12 +4252,12 @@ static void HandleTurnActionSelectionState(void) else { gBankAttacker = gActiveBank; - gBattlescriptCurrInstr = gBattlescriptPtrsForSelection[gActiveBank]; + gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBank]; if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) { gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); } - gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr; + gSelectionBattleScripts[gActiveBank] = gBattlescriptCurrInstr; } break; case STATE_WAIT_SET_BEFORE_ACTION: @@ -4308,12 +4284,12 @@ static void HandleTurnActionSelectionState(void) else { gBankAttacker = gActiveBank; - gBattlescriptCurrInstr = gBattlescriptPtrsForSelection[gActiveBank]; + gBattlescriptCurrInstr = gSelectionBattleScripts[gActiveBank]; if (!(gBattleExecBuffer & ((gBitTable[gActiveBank]) | (0xF0000000) | (gBitTable[gActiveBank] << 4) | (gBitTable[gActiveBank] << 8) | (gBitTable[gActiveBank] << 0xC)))) { gBattleScriptingCommandsTable[gBattlescriptCurrInstr[0]](); } - gBattlescriptPtrsForSelection[gActiveBank] = gBattlescriptCurrInstr; + gSelectionBattleScripts[gActiveBank] = gBattlescriptCurrInstr; } break; } @@ -4811,13 +4787,13 @@ static void HandleEndTurn_BattleLost(void) { if (gBattleOutcome & BATTLE_OUTCOME_BIT_x80) { - gBattlescriptCurrInstr = gUnknown_082DB9C8; + gBattlescriptCurrInstr = BattleScript_82DB9C8; gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80); gSaveBlock2Ptr->field_CA9_b = 1; } else { - gBattlescriptCurrInstr = gUnknown_082DAA0B; + gBattlescriptCurrInstr = BattleScript_82DAA0B; gBattleOutcome &= ~(BATTLE_OUTCOME_BIT_x80); } } @@ -4843,13 +4819,13 @@ static void HandleEndTurn_RanFromBattle(void) if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER && gBattleTypeFlags & BATTLE_TYPE_TRAINER) { - gBattlescriptCurrInstr = gUnknown_082DB9C1; + gBattlescriptCurrInstr = BattleScript_82DB9C1; gBattleOutcome = BATTLE_FORFEITED; gSaveBlock2Ptr->field_CA9_b = 1; } else if (gBattleTypeFlags & BATTLE_TYPE_x4000000) { - gBattlescriptCurrInstr = gUnknown_082DB9C1; + gBattlescriptCurrInstr = BattleScript_82DB9C1; gBattleOutcome = BATTLE_FORFEITED; } else @@ -5072,19 +5048,19 @@ static void HandleAction_UseMove(void) if (gProtectStructs[gBankAttacker].onlyStruggle) { gProtectStructs[gBankAttacker].onlyStruggle = 0; - gCurrentMove = gLastUsedMove = MOVE_STRUGGLE; + gCurrentMove = gChosenMove = MOVE_STRUGGLE; gHitMarker |= HITMARKER_NO_PPDEDUCT; *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0); } else if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE) { - gCurrentMove = gLastUsedMove = gLockedMoves[gBankAttacker]; + gCurrentMove = gChosenMove = gLockedMoves[gBankAttacker]; } // encore forces you to use the same move else if (gDisableStructs[gBankAttacker].encoredMove != MOVE_NONE && gDisableStructs[gBankAttacker].encoredMove == gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos]) { - gCurrentMove = gLastUsedMove = gDisableStructs[gBankAttacker].encoredMove; + gCurrentMove = gChosenMove = gDisableStructs[gBankAttacker].encoredMove; gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos; *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0); } @@ -5093,7 +5069,7 @@ static void HandleAction_UseMove(void) && gDisableStructs[gBankAttacker].encoredMove != gBattleMons[gBankAttacker].moves[gDisableStructs[gBankAttacker].encoredMovePos]) { gCurrMovePos = gUnknown_020241E9 = gDisableStructs[gBankAttacker].encoredMovePos; - gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; gDisableStructs[gBankAttacker].encoredMove = MOVE_NONE; gDisableStructs[gBankAttacker].encoredMovePos = 0; gDisableStructs[gBankAttacker].encoreTimer1 = 0; @@ -5101,12 +5077,12 @@ static void HandleAction_UseMove(void) } else if (gBattleMons[gBankAttacker].moves[gCurrMovePos] != gChosenMovesByBanks[gBankAttacker]) { - gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; *(gBattleStruct->moveTarget + gBankAttacker) = GetMoveTarget(gCurrentMove, 0); } else { - gCurrentMove = gLastUsedMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; + gCurrentMove = gChosenMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; } if (gBattleMons[gBankAttacker].hp != 0) @@ -5146,7 +5122,7 @@ static void HandleAction_UseMove(void) } if (var == 4) { - if (gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM) + if (gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM) { if (GetBankSide(gBankAttacker) == SIDE_PLAYER) { @@ -5191,7 +5167,7 @@ static void HandleAction_UseMove(void) } } else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE - && gBattleMoves[gLastUsedMove].target & MOVE_TARGET_RANDOM) + && gBattleMoves[gChosenMove].target & MOVE_TARGET_RANDOM) { if (GetBankSide(gBankAttacker) == SIDE_PLAYER) { @@ -5241,11 +5217,11 @@ static void HandleAction_UseMove(void) gCurrentActionFuncId = 12; return; } - else if (gUnknown_02024230[gBankAttacker] != NULL) + else if (gPalaceSelectionBattleScripts[gBankAttacker] != NULL) { gBattleCommunication[MULTISTRING_CHOOSER] = 4; - gBattlescriptCurrInstr = gUnknown_02024230[gBankAttacker]; - gUnknown_02024230[gBankAttacker] = NULL; + gBattlescriptCurrInstr = gPalaceSelectionBattleScripts[gBankAttacker]; + gPalaceSelectionBattleScripts[gBankAttacker] = NULL; } else { @@ -5624,8 +5600,8 @@ static void HandleAction_ActionFinished(void) gBattleMoveFlags = 0; gBattleScripting.animTurn = 0; gBattleScripting.animTargetsHit = 0; - gUnknown_02024250[gBankAttacker] = 0; - gUnknown_02024258[gBankAttacker] = 0; + gLastLandedMoves[gBankAttacker] = 0; + gLastHitByType[gBankAttacker] = 0; gBattleStruct->dynamicMoveType = 0; gDynamicBasePower = 0; gBattleScripting.atk49_state = 0; diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c index 24377eacc..97226f5c9 100644 --- a/src/battle_ai_script_commands.c +++ b/src/battle_ai_script_commands.c @@ -58,7 +58,7 @@ extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gCurrentMove; extern u8 gBankTarget; extern u8 gAbsentBankFlags; -extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; +extern u16 gLastMoves[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; extern u32 gStatuses3[BATTLE_BANKS_COUNT]; @@ -633,12 +633,12 @@ static void RecordLastUsedMoveByTarget(void) for (i = 0; i < 4; i++) { - if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == gLastMoves[gBankTarget]) break; - if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastUsedMovesByBanks[gBankTarget] // HACK: This redundant condition is a hack to make the asm match. + if (gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] != gLastMoves[gBankTarget] // HACK: This redundant condition is a hack to make the asm match. && gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] == 0) { - gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastUsedMovesByBanks[gBankTarget]; + gBattleResources->battleHistory->usedMoves[gBankTarget].moves[i] = gLastMoves[gBankTarget]; break; } } @@ -1252,9 +1252,9 @@ static void BattleAICmd_is_most_powerful_move(void) static void BattleAICmd_get_last_used_bank_move(void) { if (gAIScriptPtr[1] == AI_USER) - AI_THINKING_STRUCT->funcResult = gLastUsedMovesByBanks[sBank_AI]; + AI_THINKING_STRUCT->funcResult = gLastMoves[sBank_AI]; else - AI_THINKING_STRUCT->funcResult = gLastUsedMovesByBanks[gBankTarget]; + AI_THINKING_STRUCT->funcResult = gLastMoves[gBankTarget]; gAIScriptPtr += 2; } diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index 75d144c3d..f5b6c7fe4 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -16,8 +16,8 @@ extern u32 gBattleTypeFlags; extern u32 gStatuses3[BATTLE_BANKS_COUNT]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; -extern u16 gUnknown_02024250[BATTLE_BANKS_COUNT]; -extern u8 gUnknown_02024270[BATTLE_BANKS_COUNT]; +extern u16 gLastLandedMoves[BATTLE_BANKS_COUNT]; +extern u8 gLastHitBy[BATTLE_BANKS_COUNT]; extern u16 gDynamicBasePower; extern u8 gBattleMoveFlags; extern u8 gCritMultiplier; @@ -141,11 +141,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) if (HasSuperEffectiveMoveAgainstOpponents(TRUE) && Random() % 3 != 0) return FALSE; - if (gUnknown_02024250[gActiveBank] == 0) + if (gLastLandedMoves[gActiveBank] == 0) return FALSE; - if (gUnknown_02024250[gActiveBank] == 0xFFFF) + if (gLastLandedMoves[gActiveBank] == 0xFFFF) return FALSE; - if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0) + if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0) return FALSE; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -162,11 +162,11 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) bankIn2 = gActiveBank; } - if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_FIRE) + if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_FIRE) absorbingTypeAbility = ABILITY_FLASH_FIRE; - else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_WATER) + else if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_WATER) absorbingTypeAbility = ABILITY_WATER_ABSORB; - else if (gBattleMoves[gUnknown_02024250[gActiveBank]].type == TYPE_ELECTRIC) + else if (gBattleMoves[gLastLandedMoves[gActiveBank]].type == TYPE_ELECTRIC) absorbingTypeAbility = ABILITY_VOLT_ABSORB; else return FALSE; @@ -238,13 +238,13 @@ static bool8 ShouldSwitchIfNaturalCure(void) if (gBattleMons[gActiveBank].hp < gBattleMons[gActiveBank].maxHP / 2) return FALSE; - if ((gUnknown_02024250[gActiveBank] == 0 || gUnknown_02024250[gActiveBank] == 0xFFFF) && Random() & 1) + if ((gLastLandedMoves[gActiveBank] == 0 || gLastLandedMoves[gActiveBank] == 0xFFFF) && Random() & 1) { *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); return TRUE; } - else if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0 && Random() & 1) + else if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0 && Random() & 1) { *(gBattleStruct->AI_monToSwitchIntoId + gActiveBank) = 6; EmitTwoReturnValues(1, ACTION_SWITCH, 0); @@ -345,13 +345,13 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) u16 move; u8 moveFlags; - if (gUnknown_02024250[gActiveBank] == 0) + if (gLastLandedMoves[gActiveBank] == 0) return FALSE; - if (gUnknown_02024250[gActiveBank] == 0xFFFF) + if (gLastLandedMoves[gActiveBank] == 0xFFFF) return FALSE; - if (gUnknown_02024270[gActiveBank] == 0xFF) + if (gLastHitBy[gActiveBank] == 0xFF) return FALSE; - if (gBattleMoves[gUnknown_02024250[gActiveBank]].power == 0) + if (gBattleMoves[gLastLandedMoves[gActiveBank]].power == 0) return FALSE; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -411,10 +411,10 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) else monAbility = gBaseStats[species].ability1; - moveFlags = AI_TypeCalc(gUnknown_02024250[gActiveBank], species, monAbility); + moveFlags = AI_TypeCalc(gLastLandedMoves[gActiveBank], species, monAbility); if (moveFlags & flags) { - bankIn1 = gUnknown_02024270[gActiveBank]; + bankIn1 = gLastHitBy[gActiveBank]; for (j = 0; j < 4; j++) { diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 423d34d45..5758aba87 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -82,7 +82,7 @@ static void LinkOpponentHandleBallThrowAnim(void); static void LinkOpponentHandlePause(void); static void LinkOpponentHandleMoveAnimation(void); static void LinkOpponentHandlePrintString(void); -static void LinkOpponentHandlePrintStringPlayerOnly(void); +static void LinkOpponentHandlePrintSelectionString(void); static void LinkOpponentHandleChooseAction(void); static void LinkOpponentHandleUnknownYesNoBox(void); static void LinkOpponentHandleChooseMove(void); @@ -108,7 +108,7 @@ static void LinkOpponentHandleCmd39(void); static void LinkOpponentHandleCmd40(void); static void LinkOpponentHandleHitAnimation(void); static void LinkOpponentHandleCmd42(void); -static void LinkOpponentHandleEffectivenessSound(void); +static void LinkOpponentHandlePlaySE(void); static void LinkOpponentHandlePlayFanfareOrBGM(void); static void LinkOpponentHandleFaintingCry(void); static void LinkOpponentHandleIntroSlide(void); @@ -154,7 +154,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = LinkOpponentHandlePause, LinkOpponentHandleMoveAnimation, LinkOpponentHandlePrintString, - LinkOpponentHandlePrintStringPlayerOnly, + LinkOpponentHandlePrintSelectionString, LinkOpponentHandleChooseAction, LinkOpponentHandleUnknownYesNoBox, LinkOpponentHandleChooseMove, @@ -180,7 +180,7 @@ static void (*const sLinkOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = LinkOpponentHandleCmd40, LinkOpponentHandleHitAnimation, LinkOpponentHandleCmd42, - LinkOpponentHandleEffectivenessSound, + LinkOpponentHandlePlaySE, LinkOpponentHandlePlayFanfareOrBGM, LinkOpponentHandleFaintingCry, LinkOpponentHandleIntroSlide, @@ -1505,7 +1505,7 @@ static void LinkOpponentHandlePrintString(void) sub_817C95C(*stringId); } -static void LinkOpponentHandlePrintStringPlayerOnly(void) +static void LinkOpponentHandlePrintSelectionString(void) { LinkOpponentBufferExecCompleted(); } @@ -1681,7 +1681,7 @@ static void LinkOpponentHandleCmd42(void) LinkOpponentBufferExecCompleted(); } -static void LinkOpponentHandleEffectivenessSound(void) +static void LinkOpponentHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index e3bee98d9..1af6da1cd 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -78,7 +78,7 @@ static void LinkPartnerHandleBallThrowAnim(void); static void LinkPartnerHandlePause(void); static void LinkPartnerHandleMoveAnimation(void); static void LinkPartnerHandlePrintString(void); -static void LinkPartnerHandlePrintStringPlayerOnly(void); +static void LinkPartnerHandlePrintSelectionString(void); static void LinkPartnerHandleChooseAction(void); static void LinkPartnerHandleUnknownYesNoBox(void); static void LinkPartnerHandleChooseMove(void); @@ -104,7 +104,7 @@ static void LinkPartnerHandleCmd39(void); static void LinkPartnerHandleCmd40(void); static void LinkPartnerHandleHitAnimation(void); static void LinkPartnerHandleCmd42(void); -static void LinkPartnerHandleEffectivenessSound(void); +static void LinkPartnerHandlePlaySE(void); static void LinkPartnerHandlePlayFanfareOrBGM(void); static void LinkPartnerHandleFaintingCry(void); static void LinkPartnerHandleIntroSlide(void); @@ -149,7 +149,7 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = LinkPartnerHandlePause, LinkPartnerHandleMoveAnimation, LinkPartnerHandlePrintString, - LinkPartnerHandlePrintStringPlayerOnly, + LinkPartnerHandlePrintSelectionString, LinkPartnerHandleChooseAction, LinkPartnerHandleUnknownYesNoBox, LinkPartnerHandleChooseMove, @@ -175,7 +175,7 @@ static void (*const sLinkPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = LinkPartnerHandleCmd40, LinkPartnerHandleHitAnimation, LinkPartnerHandleCmd42, - LinkPartnerHandleEffectivenessSound, + LinkPartnerHandlePlaySE, LinkPartnerHandlePlayFanfareOrBGM, LinkPartnerHandleFaintingCry, LinkPartnerHandleIntroSlide, @@ -1327,7 +1327,7 @@ static void LinkPartnerHandlePrintString(void) sub_817C95C(*stringId); } -static void LinkPartnerHandlePrintStringPlayerOnly(void) +static void LinkPartnerHandlePrintSelectionString(void) { LinkPartnerBufferExecCompleted(); } @@ -1503,7 +1503,7 @@ static void LinkPartnerHandleCmd42(void) LinkPartnerBufferExecCompleted(); } -static void LinkPartnerHandleEffectivenessSound(void) +static void LinkPartnerHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 0aac4cbe4..d69de8c29 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -83,7 +83,7 @@ static void OpponentHandleBallThrow(void); static void OpponentHandlePause(void); static void OpponentHandleMoveAnimation(void); static void OpponentHandlePrintString(void); -static void OpponentHandlePrintStringPlayerOnly(void); +static void OpponentHandlePrintSelectionString(void); static void OpponentHandleChooseAction(void); static void OpponentHandleUnknownYesNoBox(void); static void OpponentHandleChooseMove(void); @@ -109,7 +109,7 @@ static void OpponentHandleCmd39(void); static void OpponentHandleCmd40(void); static void OpponentHandleHitAnimation(void); static void OpponentHandleCmd42(void); -static void OpponentHandleEffectivenessSound(void); +static void OpponentHandlePlaySE(void); static void OpponentHandlePlayFanfareOrBGM(void); static void OpponentHandleFaintingCry(void); static void OpponentHandleIntroSlide(void); @@ -155,7 +155,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = OpponentHandlePause, OpponentHandleMoveAnimation, OpponentHandlePrintString, - OpponentHandlePrintStringPlayerOnly, + OpponentHandlePrintSelectionString, OpponentHandleChooseAction, OpponentHandleUnknownYesNoBox, OpponentHandleChooseMove, @@ -181,7 +181,7 @@ static void (*const sOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void) = OpponentHandleCmd40, OpponentHandleHitAnimation, OpponentHandleCmd42, - OpponentHandleEffectivenessSound, + OpponentHandlePlaySE, OpponentHandlePlayFanfareOrBGM, OpponentHandleFaintingCry, OpponentHandleIntroSlide, @@ -1537,7 +1537,7 @@ static void OpponentHandlePrintString(void) sub_81A57E4(gActiveBank, *stringId); } -static void OpponentHandlePrintStringPlayerOnly(void) +static void OpponentHandlePrintSelectionString(void) { OpponentBufferExecCompleted(); } @@ -1826,7 +1826,7 @@ static void OpponentHandleCmd42(void) OpponentBufferExecCompleted(); } -static void OpponentHandleEffectivenessSound(void) +static void OpponentHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 16c62c53b..7ea2abccf 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -102,7 +102,7 @@ static void PlayerHandleBallThrowAnim(void); static void PlayerHandlePause(void); static void PlayerHandleMoveAnimation(void); static void PlayerHandlePrintString(void); -static void PlayerHandlePrintStringPlayerOnly(void); +static void PlayerHandlePrintSelectionString(void); static void PlayerHandleChooseAction(void); static void PlayerHandleUnknownYesNoBox(void); static void PlayerHandleChooseMove(void); @@ -128,7 +128,7 @@ static void PlayerHandleCmd39(void); static void PlayerHandleCmd40(void); static void PlayerHandleHitAnimation(void); static void PlayerHandleCmd42(void); -static void PlayerHandleEffectivenessSound(void); +static void PlayerHandlePlaySE(void); static void PlayerHandlePlayFanfareOrBGM(void); static void PlayerHandleFaintingCry(void); static void PlayerHandleIntroSlide(void); @@ -189,7 +189,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = PlayerHandlePause, PlayerHandleMoveAnimation, PlayerHandlePrintString, - PlayerHandlePrintStringPlayerOnly, + PlayerHandlePrintSelectionString, PlayerHandleChooseAction, PlayerHandleUnknownYesNoBox, PlayerHandleChooseMove, @@ -215,7 +215,7 @@ static void (*const sPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = PlayerHandleCmd40, PlayerHandleHitAnimation, PlayerHandleCmd42, - PlayerHandleEffectivenessSound, + PlayerHandlePlaySE, PlayerHandlePlayFanfareOrBGM, PlayerHandleFaintingCry, PlayerHandleIntroSlide, @@ -2576,7 +2576,7 @@ static void PlayerHandlePrintString(void) sub_81A57E4(gActiveBank, *stringId); } -static void PlayerHandlePrintStringPlayerOnly(void) +static void PlayerHandlePrintSelectionString(void) { if (GetBankSide(gActiveBank) == SIDE_PLAYER) PlayerHandlePrintString(); @@ -2913,7 +2913,7 @@ static void PlayerHandleCmd42(void) PlayerBufferExecCompleted(); } -static void PlayerHandleEffectivenessSound(void) +static void PlayerHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 0cd34442a..4cca5c002 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -78,7 +78,7 @@ static void PlayerPartnerHandleBallThrowAnim(void); static void PlayerPartnerHandlePause(void); static void PlayerPartnerHandleMoveAnimation(void); static void PlayerPartnerHandlePrintString(void); -static void PlayerPartnerHandlePrintStringPlayerOnly(void); +static void PlayerPartnerHandlePrintSelectionString(void); static void PlayerPartnerHandleChooseAction(void); static void PlayerPartnerHandleUnknownYesNoBox(void); static void PlayerPartnerHandleChooseMove(void); @@ -104,7 +104,7 @@ static void PlayerPartnerHandleCmd39(void); static void PlayerPartnerHandleCmd40(void); static void PlayerPartnerHandleHitAnimation(void); static void PlayerPartnerHandleCmd42(void); -static void PlayerPartnerHandleEffectivenessSound(void); +static void PlayerPartnerHandlePlaySE(void); static void PlayerPartnerHandlePlayFanfareOrBGM(void); static void PlayerPartnerHandleFaintingCry(void); static void PlayerPartnerHandleIntroSlide(void); @@ -155,7 +155,7 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = PlayerPartnerHandlePause, PlayerPartnerHandleMoveAnimation, PlayerPartnerHandlePrintString, - PlayerPartnerHandlePrintStringPlayerOnly, + PlayerPartnerHandlePrintSelectionString, PlayerPartnerHandleChooseAction, PlayerPartnerHandleUnknownYesNoBox, PlayerPartnerHandleChooseMove, @@ -181,7 +181,7 @@ static void (*const sPlayerPartnerBufferCommands[CONTROLLER_CMDS_COUNT])(void) = PlayerPartnerHandleCmd40, PlayerPartnerHandleHitAnimation, PlayerPartnerHandleCmd42, - PlayerPartnerHandleEffectivenessSound, + PlayerPartnerHandlePlaySE, PlayerPartnerHandlePlayFanfareOrBGM, PlayerPartnerHandleFaintingCry, PlayerPartnerHandleIntroSlide, @@ -1519,7 +1519,7 @@ static void PlayerPartnerHandlePrintString(void) gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter2; } -static void PlayerPartnerHandlePrintStringPlayerOnly(void) +static void PlayerPartnerHandlePrintSelectionString(void) { PlayerPartnerBufferExecCompleted(); } @@ -1756,7 +1756,7 @@ static void PlayerPartnerHandleCmd42(void) PlayerPartnerBufferExecCompleted(); } -static void PlayerPartnerHandleEffectivenessSound(void) +static void PlayerPartnerHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index b55d644ac..027230be4 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -81,7 +81,7 @@ static void RecordedOpponentHandleBallThrowAnim(void); static void RecordedOpponentHandlePause(void); static void RecordedOpponentHandleMoveAnimation(void); static void RecordedOpponentHandlePrintString(void); -static void RecordedOpponentHandlePrintStringPlayerOnly(void); +static void RecordedOpponentHandlePrintSelectionString(void); static void RecordedOpponentHandleChooseAction(void); static void RecordedOpponentHandleUnknownYesNoBox(void); static void RecordedOpponentHandleChooseMove(void); @@ -107,7 +107,7 @@ static void RecordedOpponentHandleCmd39(void); static void RecordedOpponentHandleCmd40(void); static void RecordedOpponentHandleHitAnimation(void); static void RecordedOpponentHandleCmd42(void); -static void RecordedOpponentHandleEffectivenessSound(void); +static void RecordedOpponentHandlePlaySE(void); static void RecordedOpponentHandlePlayFanfareOrBGM(void); static void RecordedOpponentHandleFaintingCry(void); static void RecordedOpponentHandleIntroSlide(void); @@ -153,7 +153,7 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void RecordedOpponentHandlePause, RecordedOpponentHandleMoveAnimation, RecordedOpponentHandlePrintString, - RecordedOpponentHandlePrintStringPlayerOnly, + RecordedOpponentHandlePrintSelectionString, RecordedOpponentHandleChooseAction, RecordedOpponentHandleUnknownYesNoBox, RecordedOpponentHandleChooseMove, @@ -179,7 +179,7 @@ static void (*const sRecordedOpponentBufferCommands[CONTROLLER_CMDS_COUNT])(void RecordedOpponentHandleCmd40, RecordedOpponentHandleHitAnimation, RecordedOpponentHandleCmd42, - RecordedOpponentHandleEffectivenessSound, + RecordedOpponentHandlePlaySE, RecordedOpponentHandlePlayFanfareOrBGM, RecordedOpponentHandleFaintingCry, RecordedOpponentHandleIntroSlide, @@ -1435,7 +1435,7 @@ static void RecordedOpponentHandlePrintString(void) gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter; } -static void RecordedOpponentHandlePrintStringPlayerOnly(void) +static void RecordedOpponentHandlePrintSelectionString(void) { RecordedOpponentBufferExecCompleted(); } @@ -1625,7 +1625,7 @@ static void RecordedOpponentHandleCmd42(void) RecordedOpponentBufferExecCompleted(); } -static void RecordedOpponentHandleEffectivenessSound(void) +static void RecordedOpponentHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index 78e7497a5..f5f3ab3c0 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -81,7 +81,7 @@ static void RecordedPlayerHandleBallThrowAnim(void); static void RecordedPlayerHandlePause(void); static void RecordedPlayerHandleMoveAnimation(void); static void RecordedPlayerHandlePrintString(void); -static void RecordedPlayerHandlePrintStringPlayerOnly(void); +static void RecordedPlayerHandlePrintSelectionString(void); static void RecordedPlayerHandleChooseAction(void); static void RecordedPlayerHandleUnknownYesNoBox(void); static void RecordedPlayerHandleChooseMove(void); @@ -107,7 +107,7 @@ static void RecordedPlayerHandleCmd39(void); static void RecordedPlayerHandleCmd40(void); static void RecordedPlayerHandleHitAnimation(void); static void RecordedPlayerHandleCmd42(void); -static void RecordedPlayerHandleEffectivenessSound(void); +static void RecordedPlayerHandlePlaySE(void); static void RecordedPlayerHandlePlayFanfareOrBGM(void); static void RecordedPlayerHandleFaintingCry(void); static void RecordedPlayerHandleIntroSlide(void); @@ -152,7 +152,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) RecordedPlayerHandlePause, RecordedPlayerHandleMoveAnimation, RecordedPlayerHandlePrintString, - RecordedPlayerHandlePrintStringPlayerOnly, + RecordedPlayerHandlePrintSelectionString, RecordedPlayerHandleChooseAction, RecordedPlayerHandleUnknownYesNoBox, RecordedPlayerHandleChooseMove, @@ -178,7 +178,7 @@ static void (*const sRecordedPlayerBufferCommands[CONTROLLER_CMDS_COUNT])(void) RecordedPlayerHandleCmd40, RecordedPlayerHandleHitAnimation, RecordedPlayerHandleCmd42, - RecordedPlayerHandleEffectivenessSound, + RecordedPlayerHandlePlaySE, RecordedPlayerHandlePlayFanfareOrBGM, RecordedPlayerHandleFaintingCry, RecordedPlayerHandleIntroSlide, @@ -1437,7 +1437,7 @@ static void RecordedPlayerHandlePrintString(void) gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter; } -static void RecordedPlayerHandlePrintStringPlayerOnly(void) +static void RecordedPlayerHandlePrintSelectionString(void) { RecordedPlayerBufferExecCompleted(); } @@ -1644,7 +1644,7 @@ static void RecordedPlayerHandleCmd42(void) RecordedPlayerBufferExecCompleted(); } -static void RecordedPlayerHandleEffectivenessSound(void) +static void RecordedPlayerHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index a4f35bed1..635f5fef1 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -66,7 +66,7 @@ static void SafariHandleBallThrowAnim(void); static void SafariHandlePause(void); static void SafariHandleMoveAnimation(void); static void SafariHandlePrintString(void); -static void SafariHandlePrintStringPlayerOnly(void); +static void SafariHandlePrintSelectionString(void); static void SafariHandleChooseAction(void); static void SafariHandleUnknownYesNoBox(void); static void SafariHandleChooseMove(void); @@ -92,7 +92,7 @@ static void SafariHandleCmd39(void); static void SafariHandleCmd40(void); static void SafariHandleHitAnimation(void); static void SafariHandleCmd42(void); -static void SafariHandleEffectivenessSound(void); +static void SafariHandlePlaySE(void); static void SafariHandlePlayFanfareOrBGM(void); static void SafariHandleFaintingCry(void); static void SafariHandleIntroSlide(void); @@ -130,7 +130,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) = SafariHandlePause, SafariHandleMoveAnimation, SafariHandlePrintString, - SafariHandlePrintStringPlayerOnly, + SafariHandlePrintSelectionString, SafariHandleChooseAction, SafariHandleUnknownYesNoBox, SafariHandleChooseMove, @@ -156,7 +156,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(void) = SafariHandleCmd40, SafariHandleHitAnimation, SafariHandleCmd42, - SafariHandleEffectivenessSound, + SafariHandlePlaySE, SafariHandlePlayFanfareOrBGM, SafariHandleFaintingCry, SafariHandleIntroSlide, @@ -449,7 +449,7 @@ static void SafariHandlePrintString(void) gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter; } -static void SafariHandlePrintStringPlayerOnly(void) +static void SafariHandlePrintSelectionString(void) { if (GetBankSide(gActiveBank) == SIDE_PLAYER) SafariHandlePrintString(); @@ -607,7 +607,7 @@ static void SafariHandleCmd42(void) SafariBufferExecCompleted(); } -static void SafariHandleEffectivenessSound(void) +static void SafariHandlePlaySE(void) { s8 pan; diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index 4dac1d264..442e32cca 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -86,7 +86,7 @@ static void WallyHandleBallThrowAnim(void); static void WallyHandlePause(void); static void WallyHandleMoveAnimation(void); static void WallyHandlePrintString(void); -static void WallyHandlePrintStringPlayerOnly(void); +static void WallyHandlePrintSelectionString(void); static void WallyHandleChooseAction(void); static void WallyHandleUnknownYesNoBox(void); static void WallyHandleChooseMove(void); @@ -112,7 +112,7 @@ static void WallyHandleCmd39(void); static void WallyHandleCmd40(void); static void WallyHandleHitAnimation(void); static void WallyHandleCmd42(void); -static void WallyHandleEffectivenessSound(void); +static void WallyHandlePlaySE(void); static void WallyHandlePlayFanfareOrBGM(void); static void WallyHandleFaintingCry(void); static void WallyHandleIntroSlide(void); @@ -155,7 +155,7 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) = WallyHandlePause, WallyHandleMoveAnimation, WallyHandlePrintString, - WallyHandlePrintStringPlayerOnly, + WallyHandlePrintSelectionString, WallyHandleChooseAction, WallyHandleUnknownYesNoBox, WallyHandleChooseMove, @@ -181,7 +181,7 @@ static void (*const sWallyBufferCommands[CONTROLLER_CMDS_COUNT])(void) = WallyHandleCmd40, WallyHandleHitAnimation, WallyHandleCmd42, - WallyHandleEffectivenessSound, + WallyHandlePlaySE, WallyHandlePlayFanfareOrBGM, WallyHandleFaintingCry, WallyHandleIntroSlide, @@ -1211,7 +1211,7 @@ static void WallyHandlePrintString(void) gBattleBankFunc[gActiveBank] = CompleteOnInactiveTextPrinter; } -static void WallyHandlePrintStringPlayerOnly(void) +static void WallyHandlePrintSelectionString(void) { if (GetBankSide(gActiveBank) == SIDE_PLAYER) WallyHandlePrintString(); @@ -1419,7 +1419,7 @@ static void WallyHandleCmd42(void) WallyBufferExecCompleted(); } -static void WallyHandleEffectivenessSound(void) +static void WallyHandlePlaySE(void) { PlaySE(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8)); WallyBufferExecCompleted(); diff --git a/src/battle_controllers.c b/src/battle_controllers.c index 858540a9f..2d373e876 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -38,7 +38,7 @@ extern u8 gEffectBank; extern u16 gBattleWeather; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u16 gCurrentMove; -extern u16 gLastUsedMove; +extern u16 gChosenMove; extern u16 gLastUsedItem; extern u8 gBattleOutcome; extern u8 gLastUsedAbility; @@ -1120,7 +1120,7 @@ void EmitPrintString(u8 bufferId, u16 stringID) stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); stringInfo->currentMove = gCurrentMove; - stringInfo->lastMove = gLastUsedMove; + stringInfo->originallyUsedMove = gChosenMove; stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.bank; @@ -1140,10 +1140,10 @@ void EmitPrintString(u8 bufferId, u16 stringID) PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4); } -void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID) +void EmitPrintSelectionString(u8 bufferId, u16 stringID) { s32 i; - struct StringInfoBattle* stringInfo; + struct StringInfoBattle *stringInfo; gBattleBuffersTransferData[0] = CONTROLLER_PRINTSTRINGPLAYERONLY; gBattleBuffersTransferData[1] = CONTROLLER_PRINTSTRINGPLAYERONLY; @@ -1152,7 +1152,7 @@ void EmitPrintStringPlayerOnly(u8 bufferId, u16 stringID) stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]); stringInfo->currentMove = gCurrentMove; - stringInfo->lastMove = gLastUsedMove; + stringInfo->originallyUsedMove = gChosenMove; stringInfo->lastItem = gLastUsedItem; stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.bank; @@ -1427,7 +1427,7 @@ void EmitCmd42(u8 bufferId) PrepareBufferDataTransfer(bufferId, gBattleBuffersTransferData, 4); } -void EmitEffectivenessSound(u8 bufferId, u16 songId) +void EmitPlaySE(u8 bufferId, u16 songId) { gBattleBuffersTransferData[0] = CONTROLLER_EFFECTIVENESSSOUND; gBattleBuffersTransferData[1] = songId; diff --git a/src/battle_message.c b/src/battle_message.c index 65ff19741..77f7cc722 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -932,58 +932,237 @@ const u16 gSandStormHailDmgStringIds[] = STRINGID_PKMNBUFFETEDBYSANDSTORM, STRINGID_PKMNPELTEDBYHAIL }; -// todo once battlescripts are dumped -const u16 gTooLazyToSplitThemStringIds[] = -{ - STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED, STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES, - STRINGID_RAINSTOPPED, STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF, - STRINGID_BUTITFAILED, STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF, - STRINGID_PKMNRAISEDDEFALITTLE, STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE, - STRINGID_PKMNCOVEREDBYVEIL, STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK, +const u16 gSandStormHailEndStringIds[] = +{ + STRINGID_SANDSTORMSUBSIDED, STRINGID_HAILSTOPPED +}; + +const u16 gRainContinuesStringIds[] = +{ + STRINGID_RAINCONTINUES, STRINGID_DOWNPOURCONTINUES, STRINGID_RAINSTOPPED +}; + +const u16 gProtectLikeUsedStringIds[] = +{ + STRINGID_PKMNPROTECTEDITSELF2, STRINGID_PKMNBRACEDITSELF, STRINGID_BUTITFAILED +}; + +const u16 gReflectLightScreenSafeguardStringIds[] = +{ + STRINGID_BUTITFAILED, STRINGID_PKMNRAISEDDEF, STRINGID_PKMNRAISEDDEFALITTLE, + STRINGID_PKMNRAISEDSPDEF, STRINGID_PKMNRAISEDSPDEFALITTLE, STRINGID_PKMNCOVEREDBYVEIL +}; + +const u16 gLeechSeedStringIds[] = +{ + STRINGID_PKMNSEEDED, STRINGID_PKMNEVADEDATTACK, STRINGID_ITDOESNTAFFECT, STRINGID_PKMNSAPPEDBYLEECHSEED, STRINGID_ITSUCKEDLIQUIDOOZE, - STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY, STRINGID_PKMNMAKINGUPROAR, - STRINGID_PKMNCALMEDDOWN, STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE, - STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR, STRINGID_FAILEDTOSWALLOW, - STRINGID_PKMNHPFULL, STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE, - STRINGID_PKMNSTAYEDAWAKEUSING, STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2, - STRINGID_STATSWONTINCREASE, STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN, - STRINGID_PKMNUSEDXTOGETPUMPED, STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4, - STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3, STRINGID_PKMNWHIPPEDWHIRLWIND, - STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING, - STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER, - STRINGID_PKMNSPRANGUP, STRINGID_PKMNSQUEEZEDBYBIND, STRINGID_PKMNWRAPPEDBY, - STRINGID_PKMNTRAPPEDINVORTEX, STRINGID_PKMNCLAMPED, STRINGID_PKMNTRAPPEDINVORTEX, - STRINGID_PKMNTRAPPEDBYSANDTOMB, STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED, - STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED, STRINGID_PKMNTRANSFORMEDINTO, - STRINGID_BUTITFAILED, STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE, - STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY, STRINGID_PKMNWASPARALYZED, - STRINGID_PKMNWASPARALYZEDBY, STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP, - STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY, STRINGID_PKMNWASFROZEN, - STRINGID_PKMNFROZENBY, STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY, - STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED, STRINGID_PKMNFELLINLOVE, - STRINGID_PKMNSXINFATUATEDY, STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE, - STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED, STRINGID_BELLCHIMED, - STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, - STRINGID_SOOTHINGAROMA, STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY, - STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT, - STRINGID_SHOOTSOCLOSE, STRINGID_ITISRAINING, STRINGID_ITISRAINING, +}; + +const u16 gRestUsedStringIds[] = +{ + STRINGID_PKMNWENTTOSLEEP, STRINGID_PKMNSLEPTHEALTHY +}; + +const u16 gUproarOverTurnStringIds[] = +{ + STRINGID_PKMNMAKINGUPROAR, STRINGID_PKMNCALMEDDOWN +}; + +const u16 gStockpileUsedStringIds[] = +{ + STRINGID_PKMNSTOCKPILED, STRINGID_PKMNCANTSTOCKPILE, +}; + +const u16 gWokeUpStringIds[] = +{ + STRINGID_PKMNWOKEUP, STRINGID_PKMNWOKEUPINUPROAR +}; + +const u16 gSwallowFailStringIds[] = +{ + STRINGID_FAILEDTOSWALLOW, STRINGID_PKMNHPFULL +}; + +const u16 gUproarAwakeStringIds[] = +{ + STRINGID_PKMNCANTSLEEPINUPROAR2, STRINGID_UPROARKEPTPKMNAWAKE, STRINGID_PKMNSTAYEDAWAKEUSING +}; + +const u16 gStatUpStringIds[] = +{ + STRINGID_PKMNSSTATCHANGED, STRINGID_PKMNSSTATCHANGED2, STRINGID_STATSWONTINCREASE, + STRINGID_EMPTYSTRING3, STRINGID_USINGXTHEYOFZN, STRINGID_PKMNUSEDXTOGETPUMPED +}; + +const u16 gStatDownStringIds[] = +{ + STRINGID_PKMNSSTATCHANGED3, STRINGID_PKMNSSTATCHANGED4, STRINGID_STATSWONTDECREASE, STRINGID_EMPTYSTRING3 +}; + +const u16 gFirstTurnOfTwoStringIds[] = +{ + STRINGID_PKMNWHIPPEDWHIRLWIND, STRINGID_PKMNTOOKSUNLIGHT, STRINGID_PKMNLOWEREDHEAD, STRINGID_PKMNISGLOWING, + STRINGID_PKMNFLEWHIGH, STRINGID_PKMNDUGHOLE, STRINGID_PKMNHIDUNDERWATER, STRINGID_PKMNSPRANGUP +}; + +const u16 gWrappedStringIds[] = +{ + STRINGID_PKMNSQUEEZEDBYBIND, STRINGID_PKMNWRAPPEDBY, STRINGID_PKMNTRAPPEDINVORTEX, + STRINGID_PKMNCLAMPED, STRINGID_PKMNTRAPPEDINVORTEX, STRINGID_PKMNTRAPPEDBYSANDTOMB +}; + +const u16 gMistUsedStringIds[] = +{ + STRINGID_PKMNSHROUDEDINMIST, STRINGID_BUTITFAILED +}; + +const u16 gFocusEnergyUsedStringIds[] = +{ + STRINGID_PKMNGETTINGPUMPED, STRINGID_BUTITFAILED +}; + +const u16 gTransformUsedStringIds[] = +{ + STRINGID_PKMNTRANSFORMEDINTO, STRINGID_BUTITFAILED +}; + +const u16 gSubsituteUsedStringIds[] = +{ + STRINGID_PKMNMADESUBSTITUTE, STRINGID_TOOWEAKFORSUBSTITUTE +}; + +const u16 gGotPoisonedStringIds[] = +{ + STRINGID_PKMNWASPOISONED, STRINGID_PKMNPOISONEDBY +}; + +const u16 gGotParalyzedStringIds[] = +{ + STRINGID_PKMNWASPARALYZED, STRINGID_PKMNWASPARALYZEDBY +}; + +const u16 gFellAsleepStringIds[] = +{ + STRINGID_PKMNFELLASLEEP, STRINGID_PKMNMADESLEEP, +}; + +const u16 gGotBurnedStringIds[] = +{ + STRINGID_PKMNWASBURNED, STRINGID_PKMNBURNEDBY +}; + +const u16 gGotFrozenStringIds[] = +{ + STRINGID_PKMNWASFROZEN, STRINGID_PKMNFROZENBY +}; + +const u16 gGotDefrostedStringIds[] = +{ + STRINGID_PKMNWASDEFROSTED2, STRINGID_PKMNWASDEFROSTEDBY +}; + +const u16 gKOFailedStringIds[] = +{ + STRINGID_ATTACKMISSED, STRINGID_PKMNUNAFFECTED +}; + +const u16 gAttractUsedStringIds[] = +{ + STRINGID_PKMNFELLINLOVE, STRINGID_PKMNSXINFATUATEDY +}; + +const u16 gLeechSeedDrainStringIds[] = +{ + STRINGID_PKMNENERGYDRAINED, STRINGID_ITSUCKEDLIQUIDOOZE +}; + +const u16 gSportsUsedStringIds[] = +{ + STRINGID_ELECTRICITYWEAKENED, STRINGID_FIREWEAKENED +}; + +const u16 gPartyStatusHealStringIds[] = +{ + STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, STRINGID_BELLCHIMED, + // interesting how there are four instances of the same string + STRINGID_SOOTHINGAROMA +}; + +const u16 gFutureMoveUsedStringIds[] = +{ + STRINGID_PKMNFORESAWATTACK, STRINGID_PKMNCHOSEXASDESTINY +}; + +const u16 gBallEscapeStringIds[] = +{ + STRINGID_PKMNBROKEFREE, STRINGID_ITAPPEAREDCAUGHT, STRINGID_AARGHALMOSTHADIT, STRINGID_SHOOTSOCLOSE +}; + +const u16 gWeatherContinuesStringIds[] = +{ STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, - STRINGID_SANDSTORMISRAGING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, - STRINGID_ITISRAINING, STRINGID_SUNLIGHTSTRONG, STRINGID_ITISRAINING, - STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_PKMNLOAFING, - STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY, STRINGID_PKMNPRETENDNOTNOTICE, - STRINGID_PKMNINCAPABLEOFPOWER, STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER, - STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX, + STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_SANDSTORMISRAGING, + STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING, + STRINGID_SUNLIGHTSTRONG, STRINGID_ITISRAINING, STRINGID_ITISRAINING, STRINGID_ITISRAINING +}; + +const u16 gInobedientStringIds[] = +{ + STRINGID_PKMNLOAFING, STRINGID_PKMNWONTOBEY, STRINGID_PKMNTURNEDAWAY, + STRINGID_PKMNPRETENDNOTNOTICE, STRINGID_PKMNINCAPABLEOFPOWER +}; + +const u16 gSafariGetNearStringIds[] = +{ + STRINGID_CREPTCLOSER, STRINGID_CANTGETCLOSER +}; + +const u16 gSafariPokeblockResultStringIds[] = +{ + STRINGID_PKMNCURIOUSABOUTX, STRINGID_PKMNENTHRALLEDBYX, STRINGID_PKMNIGNOREDX +}; + +const u16 gTrainerItemCuredStatusStringIds[] = +{ STRINGID_PKMNSITEMSNAPPEDOUT, STRINGID_PKMNSITEMCUREDPARALYSIS, STRINGID_PKMNSITEMDEFROSTEDIT, - STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT, - STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS, STRINGID_PKMNSXPREVENTSBURNS, - STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPARALYSISWITH, - STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNPREVENTSPOISONINGWITH, - STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY, STRINGID_PKMNOBTAINEDX, - STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ, STRINGID_PKMNRAISEDFIREPOWERWITH, - STRINGID_PKMNSXMADEYINEFFECTIVE, STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC, - STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL, + STRINGID_PKMNSITEMHEALEDBURN, STRINGID_PKMNSITEMCUREDPOISON, STRINGID_PKMNSITEMWOKEIT +}; + +const u16 gBerryEffectStringIds[] = +{ + STRINGID_PKMNSITEMCUREDPROBLEM, STRINGID_PKMNSITEMNORMALIZEDSTATUS +}; + +const u16 gBRNPreventionStringIds[] = +{ + STRINGID_PKMNSXPREVENTSBURNS, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY +}; + +const u16 gPRLZPreventionStringIds[] = +{ + STRINGID_PKMNPREVENTSPARALYSISWITH, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY +}; + +const u16 gPSNPreventionStringIds[] = +{ + STRINGID_PKMNPREVENTSPOISONINGWITH, STRINGID_PKMNSXPREVENTSYSZ, STRINGID_PKMNSXHADNOEFFECTONY +}; + +const u16 gItemSwapStringIds[] = +{ + STRINGID_PKMNOBTAINEDX, STRINGID_PKMNOBTAINEDX2, STRINGID_PKMNOBTAINEDXYOBTAINEDZ +}; + +const u16 gFlashFireStringIds[] = +{ + STRINGID_PKMNRAISEDFIREPOWERWITH, STRINGID_PKMNSXMADEYINEFFECTIVE +}; + +const u16 gCaughtMonStringIds[] = +{ + STRINGID_PKMNTRANSFERREDSOMEONESPC, STRINGID_PKMNTRANSFERREDLANETTESPC, STRINGID_PKMNBOXSOMEONESPCFULL, STRINGID_PKMNBOXLANETTESPCFULL, }; const u16 gTrappingMoves[] = @@ -1102,9 +1281,10 @@ const u8 gText_PkmnGettingIntoPosition[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is const u8 gText_PkmnBeganGrowlingDeeply[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} began growling deeply!"); const u8 gText_PkmnEagerForMore[] = _("{B_SCR_ACTIVE_NAME_WITH_PREFIX} is eager for more!"); -const u16 gUnknown_085CCF0A[] = +const u16 gStringIds_85CCF0A[] = { - 0x016E, 0x016F, 0x0170, 0x0171 + STRINGID_GLINTAPPEARSINEYE, STRINGID_PKMNGETTINGINTOPOSITION, + STRINGID_PKMNBEGANGROWLINGDEEPLY, STRINGID_PKMNEAGERFORMORE }; const u8 gText_RefIfNothingIsDecided[] = _("REFEREE: If nothing is decided in\n3 turns, we will go to judging!"); @@ -1736,11 +1916,11 @@ u32 BattleStringExpandPlaceholders(const u8* src, u8* dst) else toCpy = gMoveNames[gStringInfo->currentMove]; break; - case B_TXT_LAST_MOVE: // last used move name - if (gStringInfo->lastMove > LAST_MOVE_INDEX) + case B_TXT_LAST_MOVE: // originally used move name + if (gStringInfo->originallyUsedMove > LAST_MOVE_INDEX) toCpy = gText_UnknownMoveTypes[gBattleStruct->stringMoveType]; else - toCpy = gMoveNames[gStringInfo->lastMove]; + toCpy = gMoveNames[gStringInfo->originallyUsedMove]; break; case B_TXT_LAST_ITEM: // last used item if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 6409ff56e..d9b35c053 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3,6 +3,7 @@ #include "battle_move_effects.h" #include "battle_message.h" #include "battle_ai_script_commands.h" +#include "battle_scripts.h" #include "moves.h" #include "abilities.h" #include "item.h" @@ -73,10 +74,10 @@ extern u8 gCurrentActionFuncId; extern u32 gHitMarker; extern u8 gBattleMoveFlags; extern u8 gBattleCommunication[]; -extern u16 gUnknown_02024250[4]; -extern u16 gUnknown_02024258[4]; -extern u16 gUnknown_02024260[4]; -extern u8 gUnknown_02024270[4]; +extern u16 gLastLandedMoves[4]; +extern u16 gLastHitByType[4]; +extern u16 gLastResultingMoves[4]; +extern u8 gLastHitBy[4]; extern u8 gStringBank; extern u16 gDynamicBasePower; extern u16 gLastUsedItem; @@ -98,9 +99,9 @@ extern u8 gCurrentTurnActionNumber; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u16 gLockedMoves[BATTLE_BANKS_COUNT]; extern u16 gPartnerTrainerId; -extern u16 gLastUsedMove; -extern u16 gUnknownMovesUsedByBanks[BATTLE_BANKS_COUNT]; -extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; +extern u16 gChosenMove; +extern u16 gLastPrintedMoves[BATTLE_BANKS_COUNT]; +extern u16 gLastMoves[BATTLE_BANKS_COUNT]; extern u16 gTrainerBattleOpponent_A; extern u16 gTrainerBattleOpponent_B; extern u8 gUnknown_020241E9; @@ -146,88 +147,6 @@ extern u8 sub_813B21C(void); extern u16 get_unknown_box_id(void); extern void sub_80356D0(void); -// BattleScripts -extern const u8 BattleScript_MoveEnd[]; -extern const u8 BattleScript_NoPPForMove[]; -extern const u8 BattleScript_MagicCoatBounce[]; -extern const u8 BattleScript_TookAttack[]; -extern const u8 BattleScript_SnatchedMove[]; -extern const u8 BattleScript_Pausex20[]; -extern const u8 BattleScript_SubstituteFade[]; -extern const u8 BattleScript_HangedOnMsg[]; -extern const u8 BattleScript_OneHitKOMsg[]; -extern const u8 BattleScript_EnduredMsg[]; -extern const u8 BattleScript_PSNPrevention[]; -extern const u8 BattleScript_BRNPrevention[]; -extern const u8 BattleScript_PRLZPrevention[]; -extern const u8 BattleScript_FlinchPrevention[]; -extern const u8 BattleScript_StatUp[]; -extern const u8 BattleScript_StatDown[]; -extern const u8 BattleScript_NoItemSteal[]; -extern const u8 BattleScript_ItemSteal[]; -extern const u8 BattleScript_RapidSpinAway[]; -extern const u8 BattleScript_TargetPRLZHeal[]; -extern const u8 BattleScript_KnockedOff[]; -extern const u8 BattleScript_StickyHoldActivates[]; -extern const u8 BattleScript_AllStatsUp[]; -extern const u8 BattleScript_AtkDefDown[]; -extern const u8 BattleScript_SAtkDown2[]; -extern const u8 BattleScript_LevelUp[]; -extern const u8 BattleScript_WrapFree[]; -extern const u8 BattleScript_LeechSeedFree[]; -extern const u8 BattleScript_SpikesFree[]; -extern const u8 BattleScript_ButItFailed[]; -extern const u8 BattleScript_ObliviousPreventsAttraction[]; -extern const u8 BattleScript_MistProtected[]; -extern const u8 BattleScript_AbilityNoStatLoss[]; -extern const u8 BattleScript_AbilityNoSpecificStatLoss[]; -extern const u8 BattleScript_TrainerBallBlock[]; -extern const u8 BattleScript_WallyBallThrow[]; -extern const u8 BattleScript_SuccessBallThrow[]; -extern const u8 BattleScript_ShakeBallThrow[]; -extern const u8 BattleScript_FaintAttacker[]; -extern const u8 BattleScript_FaintTarget[]; -extern const u8 BattleScript_DestinyBondTakesLife[]; -extern const u8 BattleScript_GrudgeTakesPp[]; -extern const u8 BattleScript_RageIsBuilding[]; -extern const u8 BattleScript_DefrostedViaFireMove[]; -extern const u8 gUnknown_082DB87D[]; -extern const u8 gUnknown_082DAE90[]; -extern const u8 gUnknown_082DAE59[]; -extern const u8 gUnknown_082DAEC7[]; -extern const u8 BattleScript_MoveEffectSleep[]; -extern const u8 BattleScript_MoveEffectPoison[]; -extern const u8 BattleScript_MoveEffectBurn[]; -extern const u8 BattleScript_MoveEffectFreeze[]; -extern const u8 BattleScript_MoveEffectParalysis[]; -extern const u8 BattleScript_MoveEffectToxic[]; -extern const u8 BattleScript_MoveEffectConfusion[]; -extern const u8 BattleScript_MoveEffectUproar[]; -extern const u8 BattleScript_MoveEffectPayDay[]; -extern const u8 BattleScript_MoveEffectWrap[]; -extern const u8 BattleScript_MoveEffectRecoil33[]; -extern const u8 BattleScript_DampStopsExplosion[]; -extern const u8 BattleScript_MistProtected[]; -extern const u8 BattleScript_AbilityNoStatLoss[]; -extern const u8 BattleScript_AbilityNoSpecificStatLoss[]; -extern const u8 BattleScript_ButItFailed[]; -extern const u8 gUnknown_082DADD8[]; -extern const u8 BattleScript_PrintPayDayMoneyString[]; -extern const u8 BattleScript_SturdyPreventsOHKO[]; -extern const u8 BattleScript_ObliviousPreventsAttraction[]; -extern const u8 BattleScript_PauseEffectivenessSoundResultMsgEndMove[]; -extern const u8 BattleScript_CastformChange[]; -extern const u8 BattleScript_TrainerBallBlock[]; -extern const u8 BattleScript_WallyBallThrow[]; -extern const u8 BattleScript_SuccessBallThrow[]; -extern const u8 BattleScript_ShakeBallThrow[]; -extern const u8 BattleScript_PresentDamageTarget[]; -extern const u8 BattleScript_AlreadyAtFullHp[]; -extern const u8 BattleScript_PresentHealTarget[]; -extern const u8 BattleScript_WrapFree[]; -extern const u8 BattleScript_LeechSeedFree[]; -extern const u8 BattleScript_SpikesFree[]; - // strings extern const u8 gText_BattleYesNoChoice[]; @@ -247,7 +166,7 @@ extern const u8 gText_BattleYesNoChoice[]; // this file's functions static bool8 IsTwoTurnsMove(u16 move); -static void DestinyBondFlagUpdate(void); +static void TrySetDestinyBondToHappen(void); static u8 AttacksThisTurn(u8 bank, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2. static void CheckWonderGuardAndLevitate(void); static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr); @@ -267,41 +186,41 @@ static void atk01_accuracycheck(void); static void atk02_attackstring(void); static void atk03_ppreduce(void); static void atk04_critcalc(void); -static void atk05_damagecalc1(void); +static void atk05_damagecalc(void); static void atk06_typecalc(void); -static void atk07_dmg_adjustment(void); -static void atk08_dmg_adjustment2(void); +static void atk07_adjustnormaldamage(void); +static void atk08_adjustnormaldamage2(void); static void atk09_attackanimation(void); static void atk0A_waitanimation(void); static void atk0B_healthbarupdate(void); static void atk0C_datahpupdate(void); static void atk0D_critmessage(void); -static void atk0E_effectiveness_sound(void); +static void atk0E_effectivenesssound(void); static void atk0F_resultmessage(void); static void atk10_printstring(void); -static void atk11_printstring_playeronly(void); +static void atk11_printselectionstring(void); static void atk12_waitmessage(void); static void atk13_printfromtable(void); -static void atk14_printfromtable_playeronly(void); +static void atk14_printselectionstringfromtable(void); static void atk15_seteffectwithchance(void); static void atk16_seteffectprimary(void); static void atk17_seteffectsecondary(void); -static void atk18_status_effect_clear(void); -static void atk19_faint_pokemon(void); -static void atk1A_faint_animation(void); -static void atk1B_faint_effects_clear(void); +static void atk18_clearstatusfromeffect(void); +static void atk19_tryfaintmon(void); +static void atk1A_dofaintanimation(void); +static void atk1B_cleareffectsonfaint(void); static void atk1C_jumpifstatus(void); static void atk1D_jumpifstatus2(void); static void atk1E_jumpifability(void); static void atk1F_jumpifsideaffecting(void); static void atk20_jumpifstat(void); -static void atk21_jumpifstatus3(void); +static void atk21_jumpifstatus3condition(void); static void atk22_jumpiftype(void); static void atk23_getexp(void); static void atk24(void); -static void atk25_move_values_cleanup(void); -static void atk26_set_multihit(void); -static void atk27_decrement_multihit(void); +static void atk25_movevaluescleanup(void); +static void atk26_setmultihit(void); +static void atk27_decrementmultihit(void); static void atk28_goto(void); static void atk29_jumpifbyte(void); static void atk2A_jumpifhalfword(void); @@ -312,7 +231,7 @@ static void atk2E_setbyte(void); static void atk2F_addbyte(void); static void atk30_subbyte(void); static void atk31_copyarray(void); -static void atk32_copyarray_withindex(void); +static void atk32_copyarraywithindex(void); static void atk33_orbyte(void); static void atk34_orhalfword(void); static void atk35_orword(void); @@ -326,75 +245,75 @@ static void atk3C_return(void); static void atk3D_end(void); static void atk3E_end2(void); static void atk3F_end3(void); -static void atk40_jump_if_move_affected_by_protect(void); +static void atk40_jumpifaffectedbyprotect(void); static void atk41_call(void); static void atk42_jumpiftype2(void); static void atk43_jumpifabilitypresent(void); -static void atk44_end_selection_script(void); +static void atk44_endselectionscript(void); static void atk45_playanimation(void); static void atk46_playanimation2(void); static void atk47_setgraphicalstatchangevalues(void); static void atk48_playstatchangeanimation(void); static void atk49_moveend(void); static void atk4A_typecalc2(void); -static void atk4B_return_atk_to_ball(void); -static void atk4C_get_switched_mon_data(void); -static void atk4D_switch_data_update(void); -static void atk4E_switchin_anim(void); -static void atk4F_jump_if_cannot_switch(void); +static void atk4B_returnatktoball(void); +static void atk4C_getswitchedmondata(void); +static void atk4D_switchindataupdate(void); +static void atk4E_switchinanim(void); +static void atk4F_jumpifcantswitch(void); static void atk50_openpartyscreen(void); -static void atk51_switch_handle_order(void); -static void atk52_switch_in_effects(void); -static void atk53_trainer_slide(void); -static void atk54_effectiveness_sound(void); -static void atk55_play_fanfare(void); -static void atk56_fainting_cry(void); +static void atk51_switchhandleorder(void); +static void atk52_switchineffects(void); +static void atk53_trainerslidein(void); +static void atk54_playse(void); +static void atk55_fanfare(void); +static void atk56_playfaintcry(void); static void atk57(void); -static void atk58_return_to_ball(void); -static void atk59_learnmove_inbattle(void); +static void atk58_returntoball(void); +static void atk59_handlelearnnewmove(void); static void atk5A_yesnoboxlearnmove(void); static void atk5B_yesnoboxstoplearningmove(void); static void atk5C_hitanimation(void); static void atk5D_getmoneyreward(void); -static void atk5E_8025A70(void); -static void atk5F_8025B24(void); -static void atk60_increment_gamestat(void); -static void atk61_draw_party_status_summary(void); -static void atk62_08025C6C(void); +static void atk5E(void); +static void atk5F(void); +static void atk60_incrementgamestat(void); +static void atk61_drawpartystatussummary(void); +static void atk62(void); static void atk63_jumptorandomattack(void); static void atk64_statusanimation(void); static void atk65_status2animation(void); static void atk66_chosenstatusanimation(void); static void atk67_yesnobox(void); -static void atk68_cancel_everyones_actions(void); -static void atk69_dmg_adjustment3(void); +static void atk68_cancelallactions(void); +static void atk69_adjustsetdamage(void); static void atk6A_removeitem(void); static void atk6B_atknameinbuff1(void); -static void atk6C_draw_lvlupbox(void); -static void atk6D_reset_sentpokes_value(void); -static void atk6E_set_atk_to_player0(void); -static void atk6F_set_visible(void); -static void atk70_record_last_used_ability(void); -static void atk71_buffer_move_to_learn(void); -static void atk72_jump_if_run_attempt_success(void); -static void atk73_hp_thresholds(void); -static void atk74_hp_thresholds2(void); -static void atk75_item_effect_on_opponent(void); +static void atk6C_drawlvlupbox(void); +static void atk6D_resetsentmonsvalue(void); +static void atk6E_setatktoplayer0(void); +static void atk6F_makevisible(void); +static void atk70_recordlastability(void); +static void atk71_buffermovetolearn(void); +static void atk72_jumpifplayerran(void); +static void atk73_hpthresholds(void); +static void atk74_hpthresholds2(void); +static void atk75_useitemonopponent(void); static void atk76_various(void); -static void atk77_set_protect_like(void); +static void atk77_setprotectlike(void); static void atk78_faintifabilitynotdamp(void); static void atk79_setatkhptozero(void); -static void atk7A_jumpwhiletargetvalid(void); -static void atk7B_healhalfHP_if_possible(void); +static void atk7A_jumpifnexttargetvalid(void); +static void atk7B_tryhealhalfhealth(void); static void atk7C_trymirrormove(void); -static void atk7D_set_rain(void); +static void atk7D_setrain(void); static void atk7E_setreflect(void); static void atk7F_setseeded(void); static void atk80_manipulatedamage(void); -static void atk81_setrest(void); +static void atk81_trysetrest(void); static void atk82_jumpifnotfirstturn(void); static void atk83_nop(void); -static void atk84_jump_if_cant_sleep(void); +static void atk84_jumpifcantmakeasleep(void); static void atk85_stockpile(void); static void atk86_stockpiletobasedamage(void); static void atk87_stockpiletohpheal(void); @@ -403,22 +322,22 @@ static void atk89_statbuffchange(void); static void atk8A_normalisebuffs(void); static void atk8B_setbide(void); static void atk8C_confuseifrepeatingattackends(void); -static void atk8D_setmultihit_counter(void); -static void atk8E_init_multihit_string(void); +static void atk8D_setmultihitcounter(void); +static void atk8E_initmultihitstring(void); static void atk8F_forcerandomswitch(void); -static void atk90_conversion_type_change(void); +static void atk90_tryconversiontypechange(void); static void atk91_givepaydaymoney(void); static void atk92_setlightscreen(void); -static void atk93_ko_move(void); +static void atk93_tryKO(void); static void atk94_damagetohalftargethp(void); static void atk95_setsandstorm(void); static void atk96_weatherdamage(void); -static void atk97_try_infatuation(void); -static void atk98_status_icon_update(void); +static void atk97_tryinfatuating(void); +static void atk98_updatestatusicon(void); static void atk99_setmist(void); -static void atk9A_set_focusenergy(void); +static void atk9A_setfocusenergy(void); static void atk9B_transformdataexecution(void); -static void atk9C_set_substitute(void); +static void atk9C_setsubstitute(void); static void atk9D_mimicattackcopy(void); static void atk9E_metronome(void); static void atk9F_dmgtolevel(void); @@ -426,39 +345,39 @@ static void atkA0_psywavedamageeffect(void); static void atkA1_counterdamagecalculator(void); static void atkA2_mirrorcoatdamagecalculator(void); static void atkA3_disablelastusedattack(void); -static void atkA4_setencore(void); +static void atkA4_trysetencore(void); static void atkA5_painsplitdmgcalc(void); static void atkA6_settypetorandomresistance(void); static void atkA7_setalwayshitflag(void); static void atkA8_copymovepermanently(void); -static void atkA9_sleeptalk_choose_move(void); -static void atkAA_set_destinybond(void); -static void atkAB_DestinyBondFlagUpdate(void); +static void atkA9_trychoosesleeptalkmove(void); +static void atkAA_setdestinybond(void); +static void atkAB_trysetdestinybondtohappen(void); static void atkAC_remaininghptopower(void); -static void atkAD_spite_ppreduce(void); -static void atkAE_heal_party_status(void); +static void atkAD_tryspiteppreduce(void); +static void atkAE_healpartystatus(void); static void atkAF_cursetarget(void); -static void atkB0_set_spikes(void); -static void atkB1_set_foresight(void); -static void atkB2_setperishsong(void); +static void atkB0_trysetspikes(void); +static void atkB1_setforesight(void); +static void atkB2_trysetperishsong(void); static void atkB3_rolloutdamagecalculation(void); static void atkB4_jumpifconfusedandstatmaxed(void); static void atkB5_furycuttercalc(void); static void atkB6_happinesstodamagecalculation(void); static void atkB7_presentdamagecalculation(void); -static void atkB8_set_safeguard(void); +static void atkB8_setsafeguard(void); static void atkB9_magnitudedamagecalculation(void); static void atkBA_jumpifnopursuitswitchdmg(void); static void atkBB_setsunny(void); static void atkBC_maxattackhalvehp(void); static void atkBD_copyfoestats(void); static void atkBE_rapidspinfree(void); -static void atkBF_set_defense_curl(void); +static void atkBF_setdefensecurlbit(void); static void atkC0_recoverbasedonsunlight(void); -static void atkC1_hidden_power_calc(void); -static void atkC2_selectnexttarget(void); -static void atkC3_setfutureattack(void); -static void atkC4_beat_up(void); +static void atkC1_hiddenpowercalc(void); +static void atkC2_selectfirstvalidtarget(void); +static void atkC3_trysetfutureattack(void); +static void atkC4_trydobeatup(void); static void atkC5_setsemiinvulnerablebit(void); static void atkC6_clearsemiinvulnerablebit(void); static void atkC7_setminimize(void); @@ -471,46 +390,46 @@ static void atkCD_cureifburnedparalysedorpoisoned(void); static void atkCE_settorment(void); static void atkCF_jumpifnodamage(void); static void atkD0_settaunt(void); -static void atkD1_set_helpinghand(void); -static void atkD2_swap_items(void); -static void atkD3_copy_ability(void); -static void atkD4_wish_effect(void); -static void atkD5_setroots(void); +static void atkD1_trysethelpinghand(void); +static void atkD2_tryswapitems(void); +static void atkD3_trycopyability(void); +static void atkD4_trywish(void); +static void atkD5_trysetroots(void); static void atkD6_doubledamagedealtifdamaged(void); static void atkD7_setyawn(void); static void atkD8_setdamagetohealthdifference(void); static void atkD9_scaledamagebyhealthratio(void); -static void atkDA_abilityswap(void); -static void atkDB_imprisoneffect(void); -static void atkDC_setgrudge(void); +static void atkDA_tryswapabilities(void); +static void atkDB_tryimprision(void); +static void atkDC_trysetgrudge(void); static void atkDD_weightdamagecalculation(void); static void atkDE_asistattackselect(void); -static void atkDF_setmagiccoat(void); -static void atkE0_setstealstatchange(void); -static void atkE1_intimidate_string_loader(void); -static void atkE2_switchout_abilities(void); +static void atkDF_trysetmagiccoat(void); +static void atkE0_trysetsnatch(void); +static void atkE1_trygetintimidatetarget(void); +static void atkE2_switchoutabilities(void); static void atkE3_jumpifhasnohp(void); static void atkE4_getsecretpowereffect(void); static void atkE5_pickup(void); -static void atkE6_castform_change_animation(void); -static void atkE7_castform_data_change(void); +static void atkE6_docastformchangeanimation(void); +static void atkE7_trycastformdatachange(void); static void atkE8_settypebasedhalvers(void); static void atkE9_setweatherballtype(void); -static void atkEA_recycleitem(void); +static void atkEA_tryrecycleitem(void); static void atkEB_settypetoterrain(void); -static void atkEC_pursuit_sth(void); -static void atkED_802B4B4(void); +static void atkEC_pursuitrelated(void); +static void atkEF_snatchsetbanks(void); static void atkEE_removelightscreenreflect(void); -static void atkEF_pokeball_catch_calculation(void); -static void atkF0_give_caught_mon(void); -static void atkF1_set_caught_mon_dex_flags(void); -static void atkF2_display_dex_info(void); -static void atkF3_nickname_caught_poke(void); +static void atkEF_handleballthrow(void); +static void atkF0_givecaughtmon(void); +static void atkF1_trysetcaughtmondexflags(void); +static void atkF2_displaydexinfo(void); +static void atkF3_trygivecaughtmonnick(void); static void atkF4_subattackerhpbydmg(void); static void atkF5_removeattackerstatus1(void); -static void atkF6_action_finished(void); -static void atkF7_turn_finished(void); -static void atkF8_trainer_slide_back(void); +static void atkF6_finishaction(void); +static void atkF7_finishturn(void); +static void atkF8_trainerslideout(void); void (* const gBattleScriptingCommandsTable[])(void) = { @@ -519,41 +438,41 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk02_attackstring, atk03_ppreduce, atk04_critcalc, - atk05_damagecalc1, + atk05_damagecalc, atk06_typecalc, - atk07_dmg_adjustment, - atk08_dmg_adjustment2, + atk07_adjustnormaldamage, + atk08_adjustnormaldamage2, atk09_attackanimation, atk0A_waitanimation, atk0B_healthbarupdate, atk0C_datahpupdate, atk0D_critmessage, - atk0E_effectiveness_sound, + atk0E_effectivenesssound, atk0F_resultmessage, atk10_printstring, - atk11_printstring_playeronly, + atk11_printselectionstring, atk12_waitmessage, atk13_printfromtable, - atk14_printfromtable_playeronly, + atk14_printselectionstringfromtable, atk15_seteffectwithchance, atk16_seteffectprimary, atk17_seteffectsecondary, - atk18_status_effect_clear, - atk19_faint_pokemon, - atk1A_faint_animation, - atk1B_faint_effects_clear, + atk18_clearstatusfromeffect, + atk19_tryfaintmon, + atk1A_dofaintanimation, + atk1B_cleareffectsonfaint, atk1C_jumpifstatus, atk1D_jumpifstatus2, atk1E_jumpifability, atk1F_jumpifsideaffecting, atk20_jumpifstat, - atk21_jumpifstatus3, + atk21_jumpifstatus3condition, atk22_jumpiftype, atk23_getexp, atk24, - atk25_move_values_cleanup, - atk26_set_multihit, - atk27_decrement_multihit, + atk25_movevaluescleanup, + atk26_setmultihit, + atk27_decrementmultihit, atk28_goto, atk29_jumpifbyte, atk2A_jumpifhalfword, @@ -564,7 +483,7 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk2F_addbyte, atk30_subbyte, atk31_copyarray, - atk32_copyarray_withindex, + atk32_copyarraywithindex, atk33_orbyte, atk34_orhalfword, atk35_orword, @@ -578,75 +497,75 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk3D_end, atk3E_end2, atk3F_end3, - atk40_jump_if_move_affected_by_protect, + atk40_jumpifaffectedbyprotect, atk41_call, atk42_jumpiftype2, atk43_jumpifabilitypresent, - atk44_end_selection_script, + atk44_endselectionscript, atk45_playanimation, atk46_playanimation2, atk47_setgraphicalstatchangevalues, atk48_playstatchangeanimation, atk49_moveend, atk4A_typecalc2, - atk4B_return_atk_to_ball, - atk4C_get_switched_mon_data, - atk4D_switch_data_update, - atk4E_switchin_anim, - atk4F_jump_if_cannot_switch, + atk4B_returnatktoball, + atk4C_getswitchedmondata, + atk4D_switchindataupdate, + atk4E_switchinanim, + atk4F_jumpifcantswitch, atk50_openpartyscreen, - atk51_switch_handle_order, - atk52_switch_in_effects, - atk53_trainer_slide, - atk54_effectiveness_sound, - atk55_play_fanfare, - atk56_fainting_cry, + atk51_switchhandleorder, + atk52_switchineffects, + atk53_trainerslidein, + atk54_playse, + atk55_fanfare, + atk56_playfaintcry, atk57, - atk58_return_to_ball, - atk59_learnmove_inbattle, + atk58_returntoball, + atk59_handlelearnnewmove, atk5A_yesnoboxlearnmove, atk5B_yesnoboxstoplearningmove, atk5C_hitanimation, atk5D_getmoneyreward, - atk5E_8025A70, - atk5F_8025B24, - atk60_increment_gamestat, - atk61_draw_party_status_summary, - atk62_08025C6C, + atk5E, + atk5F, + atk60_incrementgamestat, + atk61_drawpartystatussummary, + atk62, atk63_jumptorandomattack, atk64_statusanimation, atk65_status2animation, atk66_chosenstatusanimation, atk67_yesnobox, - atk68_cancel_everyones_actions, - atk69_dmg_adjustment3, + atk68_cancelallactions, + atk69_adjustsetdamage, atk6A_removeitem, atk6B_atknameinbuff1, - atk6C_draw_lvlupbox, - atk6D_reset_sentpokes_value, - atk6E_set_atk_to_player0, - atk6F_set_visible, - atk70_record_last_used_ability, - atk71_buffer_move_to_learn, - atk72_jump_if_run_attempt_success, - atk73_hp_thresholds, - atk74_hp_thresholds2, - atk75_item_effect_on_opponent, + atk6C_drawlvlupbox, + atk6D_resetsentmonsvalue, + atk6E_setatktoplayer0, + atk6F_makevisible, + atk70_recordlastability, + atk71_buffermovetolearn, + atk72_jumpifplayerran, + atk73_hpthresholds, + atk74_hpthresholds2, + atk75_useitemonopponent, atk76_various, - atk77_set_protect_like, + atk77_setprotectlike, atk78_faintifabilitynotdamp, atk79_setatkhptozero, - atk7A_jumpwhiletargetvalid, - atk7B_healhalfHP_if_possible, + atk7A_jumpifnexttargetvalid, + atk7B_tryhealhalfhealth, atk7C_trymirrormove, - atk7D_set_rain, + atk7D_setrain, atk7E_setreflect, atk7F_setseeded, atk80_manipulatedamage, - atk81_setrest, + atk81_trysetrest, atk82_jumpifnotfirstturn, atk83_nop, - atk84_jump_if_cant_sleep, + atk84_jumpifcantmakeasleep, atk85_stockpile, atk86_stockpiletobasedamage, atk87_stockpiletohpheal, @@ -655,22 +574,22 @@ void (* const gBattleScriptingCommandsTable[])(void) = atk8A_normalisebuffs, atk8B_setbide, atk8C_confuseifrepeatingattackends, - atk8D_setmultihit_counter, - atk8E_init_multihit_string, + atk8D_setmultihitcounter, + atk8E_initmultihitstring, atk8F_forcerandomswitch, - atk90_conversion_type_change, + atk90_tryconversiontypechange, atk91_givepaydaymoney, atk92_setlightscreen, - atk93_ko_move, + atk93_tryKO, atk94_damagetohalftargethp, atk95_setsandstorm, atk96_weatherdamage, - atk97_try_infatuation, - atk98_status_icon_update, + atk97_tryinfatuating, + atk98_updatestatusicon, atk99_setmist, - atk9A_set_focusenergy, + atk9A_setfocusenergy, atk9B_transformdataexecution, - atk9C_set_substitute, + atk9C_setsubstitute, atk9D_mimicattackcopy, atk9E_metronome, atk9F_dmgtolevel, @@ -678,39 +597,39 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkA1_counterdamagecalculator, atkA2_mirrorcoatdamagecalculator, atkA3_disablelastusedattack, - atkA4_setencore, + atkA4_trysetencore, atkA5_painsplitdmgcalc, atkA6_settypetorandomresistance, atkA7_setalwayshitflag, atkA8_copymovepermanently, - atkA9_sleeptalk_choose_move, - atkAA_set_destinybond, - atkAB_DestinyBondFlagUpdate, + atkA9_trychoosesleeptalkmove, + atkAA_setdestinybond, + atkAB_trysetdestinybondtohappen, atkAC_remaininghptopower, - atkAD_spite_ppreduce, - atkAE_heal_party_status, + atkAD_tryspiteppreduce, + atkAE_healpartystatus, atkAF_cursetarget, - atkB0_set_spikes, - atkB1_set_foresight, - atkB2_setperishsong, + atkB0_trysetspikes, + atkB1_setforesight, + atkB2_trysetperishsong, atkB3_rolloutdamagecalculation, atkB4_jumpifconfusedandstatmaxed, atkB5_furycuttercalc, atkB6_happinesstodamagecalculation, atkB7_presentdamagecalculation, - atkB8_set_safeguard, + atkB8_setsafeguard, atkB9_magnitudedamagecalculation, atkBA_jumpifnopursuitswitchdmg, atkBB_setsunny, atkBC_maxattackhalvehp, atkBD_copyfoestats, atkBE_rapidspinfree, - atkBF_set_defense_curl, + atkBF_setdefensecurlbit, atkC0_recoverbasedonsunlight, - atkC1_hidden_power_calc, - atkC2_selectnexttarget, - atkC3_setfutureattack, - atkC4_beat_up, + atkC1_hiddenpowercalc, + atkC2_selectfirstvalidtarget, + atkC3_trysetfutureattack, + atkC4_trydobeatup, atkC5_setsemiinvulnerablebit, atkC6_clearsemiinvulnerablebit, atkC7_setminimize, @@ -723,46 +642,46 @@ void (* const gBattleScriptingCommandsTable[])(void) = atkCE_settorment, atkCF_jumpifnodamage, atkD0_settaunt, - atkD1_set_helpinghand, - atkD2_swap_items, - atkD3_copy_ability, - atkD4_wish_effect, - atkD5_setroots, + atkD1_trysethelpinghand, + atkD2_tryswapitems, + atkD3_trycopyability, + atkD4_trywish, + atkD5_trysetroots, atkD6_doubledamagedealtifdamaged, atkD7_setyawn, atkD8_setdamagetohealthdifference, atkD9_scaledamagebyhealthratio, - atkDA_abilityswap, - atkDB_imprisoneffect, - atkDC_setgrudge, + atkDA_tryswapabilities, + atkDB_tryimprision, + atkDC_trysetgrudge, atkDD_weightdamagecalculation, atkDE_asistattackselect, - atkDF_setmagiccoat, - atkE0_setstealstatchange, - atkE1_intimidate_string_loader, - atkE2_switchout_abilities, + atkDF_trysetmagiccoat, + atkE0_trysetsnatch, + atkE1_trygetintimidatetarget, + atkE2_switchoutabilities, atkE3_jumpifhasnohp, atkE4_getsecretpowereffect, atkE5_pickup, - atkE6_castform_change_animation, - atkE7_castform_data_change, + atkE6_docastformchangeanimation, + atkE7_trycastformdatachange, atkE8_settypebasedhalvers, atkE9_setweatherballtype, - atkEA_recycleitem, + atkEA_tryrecycleitem, atkEB_settypetoterrain, - atkEC_pursuit_sth, - atkED_802B4B4, + atkEC_pursuitrelated, + atkEF_snatchsetbanks, atkEE_removelightscreenreflect, - atkEF_pokeball_catch_calculation, - atkF0_give_caught_mon, - atkF1_set_caught_mon_dex_flags, - atkF2_display_dex_info, - atkF3_nickname_caught_poke, + atkEF_handleballthrow, + atkF0_givecaughtmon, + atkF1_trysetcaughtmondexflags, + atkF2_displaydexinfo, + atkF3_trygivecaughtmonnick, atkF4_subattackerhpbydmg, atkF5_removeattackerstatus1, - atkF6_action_finished, - atkF7_turn_finished, - atkF8_trainer_slide_back + atkF6_finishaction, + atkF7_finishturn, + atkF8_trainerslideout }; struct StatFractions @@ -1186,8 +1105,8 @@ static void atk00_attackcanceler(void) { CancelMultiTurnMoves(gBankAttacker); gBattleMoveFlags |= MOVESTATUS_MISSED; - gUnknown_02024250[gBankTarget] = 0; - gUnknown_02024258[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; gBattleCommunication[6] = 1; gBattlescriptCurrInstr++; } @@ -1199,23 +1118,23 @@ static void atk00_attackcanceler(void) static void JumpIfMoveFailed(u8 adder, u16 move) { - const void* BS_ptr = gBattlescriptCurrInstr + adder; + const u8 *BS_ptr = gBattlescriptCurrInstr + adder; if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { - gUnknown_02024250[gBankTarget] = 0; - gUnknown_02024258[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; BS_ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } else { - DestinyBondFlagUpdate(); + TrySetDestinyBondToHappen(); if (AbilityBattleEffects(ABILITYEFFECT_ABSORBING, gBankTarget, 0, 0, move)) return; } gBattlescriptCurrInstr = BS_ptr; } -static void atk40_jump_if_move_affected_by_protect(void) +static void atk40_jumpifaffectedbyprotect(void) { if (TARGET_PROTECT_AFFECTED) { @@ -1476,7 +1395,7 @@ static void atk04_critcalc(void) gBattlescriptCurrInstr++; } -static void atk05_damagecalc1(void) +static void atk05_damagecalc(void) { u16 sideStatus = gSideAffecting[GET_BANK_SIDE(gBankTarget)]; gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove, @@ -1565,8 +1484,8 @@ static void atk06_typecalc(void) { gLastUsedAbility = gBattleMons[gBankTarget].ability; gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); - gUnknown_02024250[gBankTarget] = 0; - gUnknown_02024258[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; gBattleCommunication[6] = moveType; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -1601,8 +1520,8 @@ static void atk06_typecalc(void) { gLastUsedAbility = ABILITY_WONDER_GUARD; gBattleMoveFlags |= MOVESTATUS_MISSED; - gUnknown_02024250[gBankTarget] = 0; - gUnknown_02024258[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; + gLastHitByType[gBankTarget] = 0; gBattleCommunication[6] = 3; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -1843,7 +1762,7 @@ static void Unused_ApplyRandomDmgMultiplier(void) ApplyRandomDmgMultiplier(); } -static void atk07_dmg_adjustment(void) +static void atk07_adjustnormaldamage(void) { u8 holdEffect, quality; @@ -1891,7 +1810,7 @@ static void atk07_dmg_adjustment(void) gBattlescriptCurrInstr++; } -static void atk08_dmg_adjustment2(void) // The same as 0x7 except it doesn't check for false swipe move effect. +static void atk08_adjustnormaldamage2(void) // The same as 0x7 except it doesn't check for false swipe move effect. { u8 holdEffect, quality; @@ -2172,7 +2091,7 @@ static void atk0D_critmessage(void) } } -static void atk0E_effectiveness_sound(void) +static void atk0E_effectivenesssound(void) { if (gBattleExecBuffer) return; @@ -2183,11 +2102,11 @@ static void atk0E_effectiveness_sound(void) switch (gBattleMoveFlags & (u8)(~(MOVESTATUS_MISSED))) { case MOVESTATUS_SUPEREFFECTIVE: - EmitEffectivenessSound(0, SE_KOUKA_H); + EmitPlaySE(0, SE_KOUKA_H); MarkBufferBankForExecution(gActiveBank); break; case MOVESTATUS_NOTVERYEFFECTIVE: - EmitEffectivenessSound(0, SE_KOUKA_L); + EmitPlaySE(0, SE_KOUKA_L); MarkBufferBankForExecution(gActiveBank); break; case MOVESTATUS_NOTAFFECTED: @@ -2200,17 +2119,17 @@ static void atk0E_effectiveness_sound(void) default: if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE) { - EmitEffectivenessSound(0, SE_KOUKA_H); + EmitPlaySE(0, SE_KOUKA_H); MarkBufferBankForExecution(gActiveBank); } else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE) { - EmitEffectivenessSound(0, SE_KOUKA_L); + EmitPlaySE(0, SE_KOUKA_L); MarkBufferBankForExecution(gActiveBank); } else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED))) { - EmitEffectivenessSound(0, SE_KOUKA_M); + EmitPlaySE(0, SE_KOUKA_M); MarkBufferBankForExecution(gActiveBank); } break; @@ -2319,11 +2238,11 @@ static void atk10_printstring(void) } } -static void atk11_printstring_playeronly(void) +static void atk11_printselectionstring(void) { gActiveBank = gBankAttacker; - EmitPrintStringPlayerOnly(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + EmitPrintSelectionString(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 3; @@ -2365,7 +2284,7 @@ static void atk13_printfromtable(void) } } -static void atk14_printfromtable_playeronly(void) +static void atk14_printselectionstringfromtable(void) { if (gBattleExecBuffer == 0) { @@ -2373,7 +2292,7 @@ static void atk14_printfromtable_playeronly(void) ptr += gBattleCommunication[MULTISTRING_CHOOSER]; gActiveBank = gBankAttacker; - EmitPrintStringPlayerOnly(0, *ptr); + EmitPrintSelectionString(0, *ptr); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 5; @@ -3134,7 +3053,7 @@ static void atk17_seteffectsecondary(void) SetMoveEffect(FALSE, 0); } -static void atk18_status_effect_clear(void) +static void atk18_clearstatusfromeffect(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); @@ -3148,7 +3067,7 @@ static void atk18_status_effect_clear(void) gBattleScripting.field_16 = 0; } -static void atk19_faint_pokemon(void) +static void atk19_tryfaintmon(void) { const u8 *BS_ptr; @@ -3235,7 +3154,7 @@ static void atk19_faint_pokemon(void) } } -static void atk1A_faint_animation(void) +static void atk1A_dofaintanimation(void) { if (gBattleExecBuffer == 0) { @@ -3246,7 +3165,7 @@ static void atk1A_faint_animation(void) } } -static void atk1B_faint_effects_clear(void) +static void atk1B_cleareffectsonfaint(void) { if (gBattleExecBuffer == 0) { @@ -3395,10 +3314,10 @@ static void atk20_jumpifstat(void) gBattlescriptCurrInstr += 9; } -static void atk21_jumpifstatus3(void) +static void atk21_jumpifstatus3condition(void) { u32 flags; - const u8* jumpPtr; + const u8 *jumpPtr; gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2); @@ -4098,19 +4017,19 @@ static void MoveValuesCleanUp(void) gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); } -static void atk25_move_values_cleanup(void) +static void atk25_movevaluescleanup(void) { MoveValuesCleanUp(); gBattlescriptCurrInstr += 1; } -static void atk26_set_multihit(void) +static void atk26_setmultihit(void) { gMultiHitCounter = gBattlescriptCurrInstr[1]; gBattlescriptCurrInstr += 2; } -static void atk27_decrement_multihit(void) +static void atk27_decrementmultihit(void) { if (--gMultiHitCounter == 0) gBattlescriptCurrInstr += 5; @@ -4320,7 +4239,7 @@ static void atk31_copyarray(void) gBattlescriptCurrInstr += 10; } -static void atk32_copyarray_withindex(void) +static void atk32_copyarraywithindex(void) { u8* dest = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1); const u8* src = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5); @@ -4470,7 +4389,7 @@ static void atk43_jumpifabilitypresent(void) gBattlescriptCurrInstr += 6; } -static void atk44_end_selection_script(void) +static void atk44_endselectionscript(void) { *(gBankAttacker + gBattleStruct->selectionScriptFinished) = TRUE; } @@ -4937,14 +4856,14 @@ static void atk49_moveend(void) u8 holdEffectAtk; u16 *choicedMoveAtk; u8 arg1, arg2; - u16 lastMove; + u16 originallyUsedMove; effect = FALSE; - if (gLastUsedMove == 0xFFFF) - lastMove = 0; + if (gChosenMove == 0xFFFF) + originallyUsedMove = 0; else - lastMove = gLastUsedMove; + originallyUsedMove = gChosenMove; arg1 = gBattlescriptCurrInstr[1]; arg2 = gBattlescriptCurrInstr[2]; @@ -5015,14 +4934,14 @@ static void atk49_moveend(void) break; case 6: // update choice band move if (!(gHitMarker & HITMARKER_OBEYS) || holdEffectAtk != HOLD_EFFECT_CHOICE_BAND - || gLastUsedMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF)) + || gChosenMove == MOVE_STRUGGLE || (*choicedMoveAtk != 0 && *choicedMoveAtk != 0xFFFF)) goto LOOP; - if (gLastUsedMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED)) + if (gChosenMove == MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_FAILED)) { gBattleScripting.atk49_state++; break; } - *choicedMoveAtk = gLastUsedMove; + *choicedMoveAtk = gChosenMove; LOOP: { for (i = 0; i < 4; i++) @@ -5117,63 +5036,63 @@ static void atk49_moveend(void) } if (gHitMarker & HITMARKER_ATTACKSTRING_PRINTED) { - gUnknownMovesUsedByBanks[gBankAttacker] = gLastUsedMove; + gLastPrintedMoves[gBankAttacker] = gChosenMove; } if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBankAttacker]) - && gBattleMoves[lastMove].effect != EFFECT_BATON_PASS) + && gBattleMoves[originallyUsedMove].effect != EFFECT_BATON_PASS) { if (gHitMarker & HITMARKER_OBEYS) { - gLastUsedMovesByBanks[gBankAttacker] = gLastUsedMove; - gUnknown_02024260[gBankAttacker] = gCurrentMove; + gLastMoves[gBankAttacker] = gChosenMove; + gLastResultingMoves[gBankAttacker] = gCurrentMove; } else { - gLastUsedMovesByBanks[gBankAttacker] = 0xFFFF; - gUnknown_02024260[gBankAttacker] = 0xFFFF; + gLastMoves[gBankAttacker] = 0xFFFF; + gLastResultingMoves[gBankAttacker] = 0xFFFF; } if (!(gHitMarker & HITMARKER_FAINTED(gBankTarget))) - gUnknown_02024270[gBankTarget] = gBankAttacker; + gLastHitBy[gBankTarget] = gBankAttacker; if (gHitMarker & HITMARKER_OBEYS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { - if (gLastUsedMove == 0xFFFF) + if (gChosenMove == 0xFFFF) { - gUnknown_02024250[gBankTarget] = gLastUsedMove; + gLastLandedMoves[gBankTarget] = gChosenMove; } else { - gUnknown_02024250[gBankTarget] = gCurrentMove; - GET_MOVE_TYPE(gCurrentMove, gUnknown_02024258[gBankTarget]); + gLastLandedMoves[gBankTarget] = gCurrentMove; + GET_MOVE_TYPE(gCurrentMove, gLastHitByType[gBankTarget]); } } else { - gUnknown_02024250[gBankTarget] = 0xFFFF; + gLastLandedMoves[gBankTarget] = 0xFFFF; } } gBattleScripting.atk49_state++; break; case 15: // mirror move if (!(gAbsentBankFlags & gBitTable[gBankAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBankAttacker]) - && gBattleMoves[lastMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS + && gBattleMoves[originallyUsedMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS && gBankAttacker != gBankTarget && !(gHitMarker & HITMARKER_FAINTED(gBankTarget)) && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT)) { u8 target, attacker; - *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gLastUsedMove; - *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gLastUsedMove >> 8; + *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 0) = gChosenMove; + *(gBattleStruct->mirrorMoves + gBankTarget * 2 + 1) = gChosenMove >> 8; target = gBankTarget; attacker = gBankAttacker; - *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gLastUsedMove; + *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 0) = gChosenMove; target = gBankTarget; attacker = gBankAttacker; - *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gLastUsedMove >> 8; + *(attacker * 2 + target * 8 + (u8*)(gBattleStruct->mirrorMoveArrays) + 1) = gChosenMove >> 8; } gBattleScripting.atk49_state++; break; @@ -5190,7 +5109,7 @@ static void atk49_moveend(void) gBattleScripting.atk49_state = 0; MoveValuesCleanUp(); BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]); - gBattlescriptCurrInstr = gUnknown_082DB87D; + gBattlescriptCurrInstr = BattleScript_82DB87D; return; } else @@ -5225,7 +5144,7 @@ static void atk4A_typecalc2(void) { gLastUsedAbility = gBattleMons[gBankTarget].ability; gBattleMoveFlags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED); - gUnknown_02024250[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; gBattleCommunication[6] = moveType; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -5300,7 +5219,7 @@ static void atk4A_typecalc2(void) { gLastUsedAbility = ABILITY_WONDER_GUARD; gBattleMoveFlags |= MOVESTATUS_MISSED; - gUnknown_02024250[gBankTarget] = 0; + gLastLandedMoves[gBankTarget] = 0; gBattleCommunication[6] = 3; RecordAbilityBattle(gBankTarget, gLastUsedAbility); } @@ -5310,7 +5229,7 @@ static void atk4A_typecalc2(void) gBattlescriptCurrInstr++; } -static void atk4B_return_atk_to_ball(void) +static void atk4B_returnatktoball(void) { gActiveBank = gBankAttacker; if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank))) @@ -5321,7 +5240,7 @@ static void atk4B_return_atk_to_ball(void) gBattlescriptCurrInstr++; } -static void atk4C_get_switched_mon_data(void) +static void atk4C_getswitchedmondata(void) { if (gBattleExecBuffer) return; @@ -5336,7 +5255,7 @@ static void atk4C_get_switched_mon_data(void) gBattlescriptCurrInstr += 2; } -static void atk4D_switch_data_update(void) +static void atk4D_switchindataupdate(void) { struct BattlePokemon oldData; s32 i; @@ -5389,7 +5308,7 @@ static void atk4D_switch_data_update(void) gBattlescriptCurrInstr += 2; } -static void atk4E_switchin_anim(void) +static void atk4E_switchinanim(void) { if (gBattleExecBuffer) return; @@ -5415,7 +5334,7 @@ static void atk4E_switchin_anim(void) sub_81A56B4(); } -static void atk4F_jump_if_cannot_switch(void) +static void atk4F_jumpifcantswitch(void) { s32 val = 0; s32 compareVar = 0; @@ -5533,10 +5452,10 @@ static void atk4F_jump_if_cannot_switch(void) { if (GetBankSide(gActiveBank) == SIDE_OPPONENT) { - r7 = GetBankByIdentity(1); + r7 = GetBankByIdentity(IDENTITY_OPPONENT_MON1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - compareVar = GetBankByIdentity(3); + compareVar = GetBankByIdentity(IDENTITY_OPPONENT_MON2); else compareVar = r7; @@ -5544,10 +5463,10 @@ static void atk4F_jump_if_cannot_switch(void) } else { - r7 = GetBankByIdentity(0); + r7 = GetBankByIdentity(IDENTITY_PLAYER_MON1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) - compareVar = GetBankByIdentity(2); + compareVar = GetBankByIdentity(IDENTITY_PLAYER_MON2); else compareVar = r7; @@ -5869,7 +5788,7 @@ static void atk50_openpartyscreen(void) } } -static void atk51_switch_handle_order(void) +static void atk51_switchhandleorder(void) { s32 i; if (gBattleExecBuffer) @@ -5936,7 +5855,7 @@ static void atk51_switch_handle_order(void) gBattlescriptCurrInstr += 3; } -static void atk52_switch_in_effects(void) +static void atk52_switchineffects(void) { s32 i; @@ -5967,12 +5886,12 @@ static void atk52_switch_in_effects(void) gBattleScripting.bank = gActiveBank; BattleScriptPushCursor(); - if (gBattlescriptCurrInstr[1] == 0) - gBattlescriptCurrInstr = gUnknown_082DAE90; - else if (gBattlescriptCurrInstr[1] == 1) - gBattlescriptCurrInstr = gUnknown_082DAE59; + if (gBattlescriptCurrInstr[1] == BS_GET_TARGET) + gBattlescriptCurrInstr = BattleScript_SpikesOnTarget; + else if (gBattlescriptCurrInstr[1] == BS_GET_ATTACKER) + gBattlescriptCurrInstr = BattleScript_SpikesOnAttacker; else - gBattlescriptCurrInstr = gUnknown_082DAEC7; + gBattlescriptCurrInstr = BattleScript_SpikesOngBank1; } else { @@ -6017,7 +5936,7 @@ static void atk52_switch_in_effects(void) } } -static void atk53_trainer_slide(void) +static void atk53_trainerslidein(void) { gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]); EmitTrainerSlide(0); @@ -6026,16 +5945,16 @@ static void atk53_trainer_slide(void) gBattlescriptCurrInstr += 2; } -static void atk54_effectiveness_sound(void) +static void atk54_playse(void) { gActiveBank = gBankAttacker; - EmitEffectivenessSound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); + EmitPlaySE(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1)); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 3; } -static void atk55_play_fanfare(void) +static void atk55_fanfare(void) { gActiveBank = gBankAttacker; EmitPlayFanfareOrBGM(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1), FALSE); @@ -6044,7 +5963,7 @@ static void atk55_play_fanfare(void) gBattlescriptCurrInstr += 3; } -static void atk56_fainting_cry(void) +static void atk56_playfaintcry(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitFaintingCry(0); @@ -6055,14 +5974,14 @@ static void atk56_fainting_cry(void) static void atk57(void) { - gActiveBank = GetBankByIdentity(0); + gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1); EmitCmd55(0, gBattleOutcome); MarkBufferBankForExecution(gActiveBank); gBattlescriptCurrInstr += 1; } -static void atk58_return_to_ball(void) +static void atk58_returntoball(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitReturnMonToBall(0, 1); @@ -6071,10 +5990,10 @@ static void atk58_return_to_ball(void) gBattlescriptCurrInstr += 2; } -static void atk59_learnmove_inbattle(void) +static void atk59_handlelearnnewmove(void) { - const u8* jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1); - const u8* jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5); + const u8 *jumpPtr1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8 *jumpPtr2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5); u16 ret = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterId], gBattlescriptCurrInstr[9]); while (ret == 0xFFFE) @@ -6090,7 +6009,7 @@ static void atk59_learnmove_inbattle(void) } else { - gActiveBank = GetBankByIdentity(0); + gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON1); if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) @@ -6099,7 +6018,7 @@ static void atk59_learnmove_inbattle(void) } if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - gActiveBank = GetBankByIdentity(2); + gActiveBank = GetBankByIdentity(IDENTITY_PLAYER_MON2); if (gBattlePartyID[gActiveBank] == gBattleStruct->expGetterId && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED)) { @@ -6367,7 +6286,7 @@ static void atk5D_getmoneyreward(void) gBattlescriptCurrInstr++; } -static void atk5E_8025A70(void) +static void atk5E(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); @@ -6394,7 +6313,7 @@ static void atk5E_8025A70(void) } } -static void atk5F_8025B24(void) +static void atk5F(void) { gActiveBank = gBankAttacker; gBankAttacker = gBankTarget; @@ -6408,7 +6327,7 @@ static void atk5F_8025B24(void) gBattlescriptCurrInstr++; } -static void atk60_increment_gamestat(void) +static void atk60_incrementgamestat(void) { if (GetBankSide(gBankAttacker) == SIDE_PLAYER) IncrementGameStat(gBattlescriptCurrInstr[1]); @@ -6416,7 +6335,7 @@ static void atk60_increment_gamestat(void) gBattlescriptCurrInstr += 2; } -static void atk61_draw_party_status_summary(void) +static void atk61_drawpartystatussummary(void) { s32 i; struct Pokemon* party; @@ -6453,7 +6372,7 @@ static void atk61_draw_party_status_summary(void) gBattlescriptCurrInstr += 2; } -static void atk62_08025C6C(void) +static void atk62(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitCmd49(0); @@ -6467,7 +6386,7 @@ static void atk63_jumptorandomattack(void) if (gBattlescriptCurrInstr[1] != 0) gCurrentMove = gRandomMove; else - gLastUsedMove = gCurrentMove = gRandomMove; + gChosenMove = gCurrentMove = gRandomMove; gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]; } @@ -6569,7 +6488,7 @@ static void atk67_yesnobox(void) } } -static void atk68_cancel_everyones_actions(void) +static void atk68_cancelallactions(void) { s32 i; @@ -6579,7 +6498,7 @@ static void atk68_cancel_everyones_actions(void) gBattlescriptCurrInstr++; } -static void atk69_dmg_adjustment3(void) // The same as 0x7, except there's no random damage multiplier. +static void atk69_adjustsetdamage(void) // The same as 0x7, except there's no random damage multiplier. { u8 holdEffect, quality; @@ -6648,7 +6567,7 @@ static void atk6B_atknameinbuff1(void) gBattlescriptCurrInstr++; } -static void atk6C_draw_lvlupbox(void) +static void atk6C_drawlvlupbox(void) { if (gBattleScripting.atk6C_state == 0) { @@ -6922,19 +6841,19 @@ static bool32 IsMonGettingExpSentOut(void) return FALSE; } -static void atk6D_reset_sentpokes_value(void) +static void atk6D_resetsentmonsvalue(void) { ResetSentPokesToOpponentValue(); gBattlescriptCurrInstr++; } -static void atk6E_set_atk_to_player0(void) +static void atk6E_setatktoplayer0(void) { - gBankAttacker = GetBankByIdentity(0); + gBankAttacker = GetBankByIdentity(IDENTITY_PLAYER_MON1); gBattlescriptCurrInstr++; } -static void atk6F_set_visible(void) +static void atk6F_makevisible(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); EmitSpriteInvisibility(0, FALSE); @@ -6943,7 +6862,7 @@ static void atk6F_set_visible(void) gBattlescriptCurrInstr += 2; } -static void atk70_record_last_used_ability(void) +static void atk70_recordlastability(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); RecordAbilityBattle(gActiveBank, gLastUsedAbility); @@ -6955,13 +6874,13 @@ void BufferMoveToLearnIntoBattleTextBuff2(void) PREPARE_MOVE_BUFFER(gBattleTextBuff2, gMoveToLearn); } -static void atk71_buffer_move_to_learn(void) +static void atk71_buffermovetolearn(void) { BufferMoveToLearnIntoBattleTextBuff2(); gBattlescriptCurrInstr++; } -static void atk72_jump_if_run_attempt_success(void) +static void atk72_jumpifplayerran(void) { if (TryRunFromBattle(gBank1)) gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); @@ -6969,7 +6888,7 @@ static void atk72_jump_if_run_attempt_success(void) gBattlescriptCurrInstr += 5; } -static void atk73_hp_thresholds(void) +static void atk73_hpthresholds(void) { u8 opposingBank; s32 result; @@ -6996,7 +6915,7 @@ static void atk73_hp_thresholds(void) gBattlescriptCurrInstr += 2; } -static void atk74_hp_thresholds2(void) +static void atk74_hpthresholds2(void) { u8 opposingBank; s32 result; @@ -7022,7 +6941,7 @@ static void atk74_hp_thresholds2(void) gBattlescriptCurrInstr += 2; } -static void atk75_item_effect_on_opponent(void) +static void atk75_useitemonopponent(void) { gBankInMenu = gBankAttacker; ExecuteTableBasedItemEffect(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1); @@ -7044,13 +6963,13 @@ static void atk76_various(void) break; case VARIOUS_SET_MAGIC_COAT_TARGET: gBankAttacker = gBankTarget; - side = GetBankSide(gBankAttacker) ^ 1; + side = GetBankSide(gBankAttacker) ^ BIT_SIDE; if (gSideTimers[side].followmeTimer != 0 && gBattleMons[gSideTimers[side].followmeTarget].hp != 0) gBankTarget = gSideTimers[side].followmeTarget; else gBankTarget = gActiveBank; break; - case VARIOUS_CAN_RUN_FROM_BATTLE: + case VARIOUS_IS_RUNNING_IMPOSSIBLE: gBattleCommunication[0] = IsRunningFromBattleImpossible(); break; case VARIOUS_GET_MOVE_TARGET: @@ -7209,10 +7128,10 @@ static void atk76_various(void) gBattlescriptCurrInstr += 3; } -static void atk77_set_protect_like(void) // protect and endure +static void atk77_setprotectlike(void) // protect and endure { bool8 notLastTurn = TRUE; - u16 lastMove = gUnknown_02024260[gBankAttacker]; + u16 lastMove = gLastResultingMoves[gBankAttacker]; if (lastMove != MOVE_PROTECT && lastMove != MOVE_DETECT && lastMove != MOVE_ENDURE) gDisableStructs[gBankAttacker].protectUses = 0; @@ -7292,9 +7211,9 @@ static void atk79_setatkhptozero(void) gBattlescriptCurrInstr++; } -static void atk7A_jumpwhiletargetvalid(void) // Used by intimidate to loop through all targets. +static void atk7A_jumpifnexttargetvalid(void) { - const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8 *jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { @@ -7312,10 +7231,12 @@ static void atk7A_jumpwhiletargetvalid(void) // Used by intimidate to loop throu gBattlescriptCurrInstr = jumpPtr; } else + { gBattlescriptCurrInstr += 5; + } } -static void atk7B_healhalfHP_if_possible(void) +static void atk7B_tryhealhalfhealth(void) { const u8* failPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); @@ -7383,7 +7304,7 @@ static void atk7C_trymirrormove(void) } } -static void atk7D_set_rain(void) +static void atk7D_setrain(void) { if (gBattleWeather & WEATHER_RAIN_ANY) { @@ -7464,9 +7385,9 @@ static void atk80_manipulatedamage(void) gBattlescriptCurrInstr += 2; } -static void atk81_setrest(void) +static void atk81_trysetrest(void) { - const u8* failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8 *failJump = BSScriptReadPtr(gBattlescriptCurrInstr + 1); gActiveBank = gBankTarget = gBankAttacker; gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1); @@ -7530,9 +7451,9 @@ bool8 UproarWakeUpCheck(u8 bank) return TRUE; } -static void atk84_jump_if_cant_sleep(void) +static void atk84_jumpifcantmakeasleep(void) { - const u8* jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); + const u8 *jumpPtr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); if (UproarWakeUpCheck(gBankTarget)) { @@ -7636,9 +7557,9 @@ static void atk88_negativedamage(void) gBattlescriptCurrInstr++; } -static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) +static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8 *BS_ptr) { - bool8 certain = 0; + bool8 certain = FALSE; bool8 notProtectAffected = FALSE; u32 index; @@ -7746,15 +7667,15 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) if (statValue == -2) { gBattleTextBuff2[1] = B_BUFF_STRING; - gBattleTextBuff2[2] = 0xD3; // harshly - gBattleTextBuff2[3] = 0xD3 >> 8; + gBattleTextBuff2[2] = STRINGID_STATHARSHLY; + gBattleTextBuff2[3] = STRINGID_STATHARSHLY >> 8; index = 4; } gBattleTextBuff2[index] = B_BUFF_STRING; index++; - gBattleTextBuff2[index] = 0xD4; // fell + gBattleTextBuff2[index] = STRINGID_STATFELL; index++; - gBattleTextBuff2[index] = 0xD4 >> 8; + gBattleTextBuff2[index] = STRINGID_STATFELL >> 8; index++; gBattleTextBuff2[index] = B_BUFF_EOS; @@ -7773,15 +7694,15 @@ static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8 flags, const u8* BS_ptr) if (statValue == 2) { gBattleTextBuff2[1] = B_BUFF_STRING; - gBattleTextBuff2[2] = 0xD1; // sharply - gBattleTextBuff2[3] = 0xD1 >> 8; + gBattleTextBuff2[2] = STRINGID_STATSHARPLY; + gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8; index = 4; } gBattleTextBuff2[index] = B_BUFF_STRING; index++; - gBattleTextBuff2[index] = 0xD2; // rose + gBattleTextBuff2[index] = STRINGID_STATROSE; index++; - gBattleTextBuff2[index] = 0xD2 >> 8; + gBattleTextBuff2[index] = STRINGID_STATROSE >> 8; index++; gBattleTextBuff2[index] = B_BUFF_EOS; @@ -7844,7 +7765,7 @@ static void atk8C_confuseifrepeatingattackends(void) gBattlescriptCurrInstr++; } -static void atk8D_setmultihit_counter(void) +static void atk8D_setmultihitcounter(void) { if (gBattlescriptCurrInstr[1]) { @@ -7862,7 +7783,7 @@ static void atk8D_setmultihit_counter(void) gBattlescriptCurrInstr += 2; } -static void atk8E_init_multihit_string(void) +static void atk8E_initmultihitstring(void) { PREPARE_BYTE_NUMBER_BUFFER(gBattleScripting.multihitString, 1, 0) @@ -7886,7 +7807,7 @@ static bool8 sub_8051064(void) *(gBattleStruct->field_58 + gBankTarget) = gBattlePartyID[gBankTarget]; } - gBattlescriptCurrInstr = gUnknown_082DADD8; + gBattlescriptCurrInstr = BattleScript_82DADD8; return TRUE; } @@ -8051,7 +7972,7 @@ static void atk8F_forcerandomswitch(void) } } -static void atk90_conversion_type_change(void) // randomly changes user's type to one of its moves' type +static void atk90_tryconversiontypechange(void) // randomly changes user's type to one of its moves' type { u8 validMoves = 0; u8 moveChecked; @@ -8155,7 +8076,7 @@ static void atk92_setlightscreen(void) gBattlescriptCurrInstr++; } -static void atk93_ko_move(void) +static void atk93_tryKO(void) { u8 holdEffect, param; @@ -8319,7 +8240,7 @@ static void atk96_weatherdamage(void) gBattlescriptCurrInstr++; } -static void atk97_try_infatuation(void) +static void atk97_tryinfatuating(void) { struct Pokemon *monAttacker, *monTarget; u16 speciesAttacker, speciesTarget; @@ -8364,7 +8285,7 @@ static void atk97_try_infatuation(void) } } -static void atk98_status_icon_update(void) +static void atk98_updatestatusicon(void) { if (gBattleExecBuffer) return; @@ -8414,7 +8335,7 @@ static void atk99_setmist(void) gBattlescriptCurrInstr++; } -static void atk9A_set_focusenergy(void) +static void atk9A_setfocusenergy(void) { if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY) { @@ -8431,7 +8352,7 @@ static void atk9A_set_focusenergy(void) static void atk9B_transformdataexecution(void) { - gLastUsedMove = 0xFFFF; + gChosenMove = 0xFFFF; gBattlescriptCurrInstr++; if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE) @@ -8473,7 +8394,7 @@ static void atk9B_transformdataexecution(void) } } -static void atk9C_set_substitute(void) +static void atk9C_setsubstitute(void) { u32 hp = gBattleMons[gBankAttacker].maxHP / 4; if (gBattleMons[gBankAttacker].maxHP / 4 == 0) @@ -8511,12 +8432,12 @@ static bool8 IsMoveUncopyableByMimic(u16 move) static void atk9D_mimicattackcopy(void) { - gLastUsedMove = 0xFFFF; + gChosenMove = 0xFFFF; - if (IsMoveUncopyableByMimic(gLastUsedMovesByBanks[gBankTarget]) + if (IsMoveUncopyableByMimic(gLastMoves[gBankTarget]) || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED - || gLastUsedMovesByBanks[gBankTarget] == 0 - || gLastUsedMovesByBanks[gBankTarget] == 0xFFFF) + || gLastMoves[gBankTarget] == 0 + || gLastMoves[gBankTarget] == 0xFFFF) { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } @@ -8526,20 +8447,20 @@ static void atk9D_mimicattackcopy(void) for (i = 0; i < 4; i++) { - if (gBattleMons[gBankAttacker].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + if (gBattleMons[gBankAttacker].moves[i] == gLastMoves[gBankTarget]) break; } if (i == 4) { - gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastUsedMovesByBanks[gBankTarget]; - if (gBattleMoves[gLastUsedMovesByBanks[gBankTarget]].pp < 5) - gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMovesByBanks[gBankTarget]].pp; + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastMoves[gBankTarget]; + if (gBattleMoves[gLastMoves[gBankTarget]].pp < 5) + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastMoves[gBankTarget]].pp; else gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastUsedMovesByBanks[gBankTarget]) + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBankTarget]) gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos]; gBattlescriptCurrInstr += 5; @@ -8654,7 +8575,7 @@ static void atkA3_disablelastusedattack(void) for (i = 0; i < 4; i++) { - if (gBattleMons[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + if (gBattleMons[gBankTarget].moves[i] == gLastMoves[gBankTarget]) break; } if (gDisableStructs[gBankTarget].disabledMove == 0 @@ -8673,19 +8594,19 @@ static void atkA3_disablelastusedattack(void) } } -static void atkA4_setencore(void) +static void atkA4_trysetencore(void) { s32 i; for (i = 0; i < 4; i++) { - if (gBattleMons[gBankTarget].moves[i] == gLastUsedMovesByBanks[gBankTarget]) + if (gBattleMons[gBankTarget].moves[i] == gLastMoves[gBankTarget]) break; } - if (gLastUsedMovesByBanks[gBankTarget] == MOVE_STRUGGLE - || gLastUsedMovesByBanks[gBankTarget] == MOVE_ENCORE - || gLastUsedMovesByBanks[gBankTarget] == MOVE_MIRROR_MOVE) + if (gLastMoves[gBankTarget] == MOVE_STRUGGLE + || gLastMoves[gBankTarget] == MOVE_ENCORE + || gLastMoves[gBankTarget] == MOVE_MIRROR_MOVE) { i = 4; } @@ -8731,13 +8652,13 @@ static void atkA5_painsplitdmgcalc(void) static void atkA6_settypetorandomresistance(void) // conversion 2 { - if (gUnknown_02024250[gBankAttacker] == 0 - || gUnknown_02024250[gBankAttacker] == 0xFFFF) + if (gLastLandedMoves[gBankAttacker] == 0 + || gLastLandedMoves[gBankAttacker] == 0xFFFF) { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } - else if (IsTwoTurnsMove(gUnknown_02024250[gBankAttacker]) - && gBattleMons[gUnknown_02024270[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS) + else if (IsTwoTurnsMove(gLastLandedMoves[gBankAttacker]) + && gBattleMons[gLastHitBy[gBankAttacker]].status2 & STATUS2_MULTIPLETURNS) { gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1); } @@ -8751,7 +8672,7 @@ static void atkA6_settypetorandomresistance(void) // conversion 2 i *= 3; - if (TYPE_EFFECT_ATK_TYPE(i) == gUnknown_02024258[gBankAttacker] + if (TYPE_EFFECT_ATK_TYPE(i) == gLastHitByType[gBankAttacker] && TYPE_EFFECT_MULTIPLIER(i) <= TYPE_MUL_NOT_EFFECTIVE && gBattleMons[gBankAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i) && gBattleMons[gBankAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i)) @@ -8774,7 +8695,7 @@ static void atkA6_settypetorandomresistance(void) // conversion 2 case TYPE_FORESIGHT: break; default: - if (TYPE_EFFECT_ATK_TYPE(j) == gUnknown_02024258[gBankAttacker] + if (TYPE_EFFECT_ATK_TYPE(j) == gLastHitByType[gBankAttacker] && TYPE_EFFECT_MULTIPLIER(j) <= 5 && gBattleMons[gBankAttacker].type1 != TYPE_EFFECT_DEF_TYPE(i) && gBattleMons[gBankAttacker].type2 != TYPE_EFFECT_DEF_TYPE(i)) @@ -8805,13 +8726,13 @@ static void atkA7_setalwayshitflag(void) static void atkA8_copymovepermanently(void) // sketch { - gLastUsedMove = 0xFFFF; + gChosenMove = 0xFFFF; if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) - && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_STRUGGLE - && gUnknownMovesUsedByBanks[gBankTarget] != 0 - && gUnknownMovesUsedByBanks[gBankTarget] != 0xFFFF - && gUnknownMovesUsedByBanks[gBankTarget] != MOVE_SKETCH) + && gLastPrintedMoves[gBankTarget] != MOVE_STRUGGLE + && gLastPrintedMoves[gBankTarget] != 0 + && gLastPrintedMoves[gBankTarget] != 0xFFFF + && gLastPrintedMoves[gBankTarget] != MOVE_SKETCH) { s32 i; @@ -8819,7 +8740,7 @@ static void atkA8_copymovepermanently(void) // sketch { if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH) continue; - if (gBattleMons[gBankAttacker].moves[i] == gUnknownMovesUsedByBanks[gBankTarget]) + if (gBattleMons[gBankAttacker].moves[i] == gLastPrintedMoves[gBankTarget]) break; } @@ -8831,8 +8752,8 @@ static void atkA8_copymovepermanently(void) // sketch { struct MovePpInfo movePpData; - gBattleMons[gBankAttacker].moves[gCurrMovePos] = gUnknownMovesUsedByBanks[gBankTarget]; - gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknownMovesUsedByBanks[gBankTarget]].pp; + gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastPrintedMoves[gBankTarget]; + gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastPrintedMoves[gBankTarget]].pp; gActiveBank = gBankAttacker; for (i = 0; i < 4; i++) @@ -8845,7 +8766,7 @@ static void atkA8_copymovepermanently(void) // sketch EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData); MarkBufferBankForExecution(gActiveBank); - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gUnknownMovesUsedByBanks[gBankTarget]) + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastPrintedMoves[gBankTarget]) gBattlescriptCurrInstr += 5; } @@ -8862,7 +8783,7 @@ static bool8 IsTwoTurnsMove(u16 move) || gBattleMoves[move].effect == EFFECT_RAZOR_WIND || gBattleMoves[move].effect == EFFECT_SKY_ATTACK || gBattleMoves[move].effect == EFFECT_SOLARBEAM - || gBattleMoves[move].effect == EFFECT_FLY + || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE || gBattleMoves[move].effect == EFFECT_BIDE) return TRUE; else @@ -8889,7 +8810,7 @@ static u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a chargi || gBattleMoves[move].effect == EFFECT_RAZOR_WIND || gBattleMoves[move].effect == EFFECT_SKY_ATTACK || gBattleMoves[move].effect == EFFECT_SOLARBEAM - || gBattleMoves[move].effect == EFFECT_FLY + || gBattleMoves[move].effect == EFFECT_SEMI_INVULNERABLE || gBattleMoves[move].effect == EFFECT_BIDE) { if ((gHitMarker & HITMARKER_x8000000)) @@ -8898,7 +8819,7 @@ static u8 AttacksThisTurn(u8 bank, u16 move) // Note: returns 1 if it's a chargi return 2; } -static void atkA9_sleeptalk_choose_move(void) +static void atkA9_trychoosesleeptalkmove(void) { s32 i; u8 unusableMovesBits = 0; @@ -8937,13 +8858,13 @@ static void atkA9_sleeptalk_choose_move(void) } } -static void atkAA_set_destinybond(void) +static void atkAA_setdestinybond(void) { gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND; gBattlescriptCurrInstr++; } -static void DestinyBondFlagUpdate(void) +static void TrySetDestinyBondToHappen(void) { u8 sideAttacker = GetBankSide(gBankAttacker); u8 sideTarget = GetBankSide(gBankTarget); @@ -8955,9 +8876,9 @@ static void DestinyBondFlagUpdate(void) } } -static void atkAB_DestinyBondFlagUpdate(void) +static void atkAB_trysetdestinybondtohappen(void) { - DestinyBondFlagUpdate(); + TrySetDestinyBondToHappen(); gBattlescriptCurrInstr++; } @@ -8976,16 +8897,16 @@ static void atkAC_remaininghptopower(void) gBattlescriptCurrInstr++; } -static void atkAD_spite_ppreduce(void) +static void atkAD_tryspiteppreduce(void) { - if (gLastUsedMovesByBanks[gBankTarget] != 0 - && gLastUsedMovesByBanks[gBankTarget] != 0xFFFF) + if (gLastMoves[gBankTarget] != 0 + && gLastMoves[gBankTarget] != 0xFFFF) { s32 i; for (i = 0; i < 4; i++) { - if (gLastUsedMovesByBanks[gBankTarget] == gBattleMons[gBankTarget].moves[i]) + if (gLastMoves[gBankTarget] == gBattleMons[gBankTarget].moves[i]) break; } @@ -8995,7 +8916,7 @@ static void atkAD_spite_ppreduce(void) if (gBattleMons[gBankTarget].pp[i] < ppToDeduct) ppToDeduct = gBattleMons[gBankTarget].pp[i]; - PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastUsedMovesByBanks[gBankTarget]) + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastMoves[gBankTarget]) ConvertIntToDecimalStringN(gBattleTextBuff2, ppToDeduct, 0, 1); @@ -9027,7 +8948,7 @@ static void atkAD_spite_ppreduce(void) } } -static void atkAE_heal_party_status(void) +static void atkAE_healpartystatus(void) { u32 zero = 0; u8 toHeal = 0; @@ -9103,7 +9024,7 @@ static void atkAE_heal_party_status(void) gBattleMons[gBankAttacker].status1 = 0; gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); - gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ 2); + gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank])) { @@ -9140,7 +9061,7 @@ static void atkAF_cursetarget(void) } } -static void atkB0_set_spikes(void) +static void atkB0_trysetspikes(void) { u8 targetSide = GetBankSide(gBankAttacker) ^ BIT_SIDE; @@ -9157,13 +9078,13 @@ static void atkB0_set_spikes(void) } } -static void atkB1_set_foresight(void) +static void atkB1_setforesight(void) { gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT; gBattlescriptCurrInstr++; } -static void atkB2_setperishsong(void) +static void atkB2_trysetperishsong(void) { s32 i; s32 notAffectedCount = 0; @@ -9196,7 +9117,7 @@ static void atkB3_rolloutdamagecalculation(void) if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { CancelMultiTurnMoves(gBankAttacker); - gBattlescriptCurrInstr = BattleScript_PauseEffectivenessSoundResultMsgEndMove; + gBattlescriptCurrInstr = BattleScript_MoveMissedPause; } else { @@ -9240,7 +9161,7 @@ static void atkB5_furycuttercalc(void) if (gBattleMoveFlags & MOVESTATUS_NOEFFECT) { gDisableStructs[gBankAttacker].furyCutterCounter = 0; - gBattlescriptCurrInstr = BattleScript_PauseEffectivenessSoundResultMsgEndMove; + gBattlescriptCurrInstr = BattleScript_MoveMissedPause; } else { @@ -9286,7 +9207,7 @@ static void atkB7_presentdamagecalculation(void) gBattleMoveDamage *= -1; } if (rand < 204) - gBattlescriptCurrInstr = BattleScript_PresentDamageTarget; + gBattlescriptCurrInstr = BattleScript_HitFromCritCalc; else if (gBattleMons[gBankTarget].maxHP == gBattleMons[gBankTarget].hp) gBattlescriptCurrInstr = BattleScript_AlreadyAtFullHp; else @@ -9296,7 +9217,7 @@ static void atkB7_presentdamagecalculation(void) } } -static void atkB8_set_safeguard(void) +static void atkB8_setsafeguard(void) { if (gSideAffecting[GET_BANK_SIDE(gBankAttacker)] & SIDE_STATUS_SAFEGUARD) { @@ -9501,7 +9422,7 @@ static void atkBE_rapidspinfree(void) } } -static void atkBF_set_defense_curl(void) +static void atkBF_setdefensecurlbit(void) { gBattleMons[gBankAttacker].status2 |= STATUS2_DEFENSE_CURL; gBattlescriptCurrInstr++; @@ -9533,7 +9454,7 @@ static void atkC0_recoverbasedonsunlight(void) } #ifdef NONMATCHING -static void atkC1_hidden_power_calc(void) +static void atkC1_hiddenpowercalc(void) { u32 powerBits = 0; u32 typeBits = 0; @@ -9564,7 +9485,7 @@ static void atkC1_hidden_power_calc(void) #else __attribute__((naked)) -static void atkC1_hidden_power_calc(void) +static void atkC1_hiddenpowercalc(void) { asm(".syntax unified\n\ push {r4-r7,lr}\n\ @@ -9707,7 +9628,7 @@ _080544F0:\n\ } #endif // NONMATCHING -static void atkC2_selectnexttarget(void) +static void atkC2_selectfirstvalidtarget(void) { for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++) { @@ -9719,7 +9640,7 @@ static void atkC2_selectnexttarget(void) gBattlescriptCurrInstr++; } -static void atkC3_setfutureattack(void) +static void atkC3_trysetfutureattack(void) { if (gWishFutureKnock.futureSightCounter[gBankTarget] != 0) { @@ -9747,9 +9668,9 @@ static void atkC3_setfutureattack(void) } } -static void atkC4_beat_up(void) +static void atkC4_trydobeatup(void) { - struct Pokemon* party; + struct Pokemon *party; if (GetBankSide(gBankAttacker) == SIDE_PLAYER) party = gPlayerParty; @@ -9950,7 +9871,7 @@ static void atkD0_settaunt(void) } } -static void atkD1_set_helpinghand(void) +static void atkD1_trysethelpinghand(void) { gBankTarget = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); @@ -9968,7 +9889,7 @@ static void atkD1_set_helpinghand(void) } } -static void atkD2_swap_items(void) // trick +static void atkD2_tryswapitems(void) // trick { // opponent can't swap items with player in regular battles if (gBattleTypeFlags & BATTLE_TYPE_x4000000 @@ -10055,7 +9976,7 @@ static void atkD2_swap_items(void) // trick } } -static void atkD3_copy_ability(void) // role play +static void atkD3_trycopyability(void) // role play { if (gBattleMons[gBankTarget].ability != 0 && gBattleMons[gBankTarget].ability != ABILITY_WONDER_GUARD) @@ -10070,7 +9991,7 @@ static void atkD3_copy_ability(void) // role play } } -static void atkD4_wish_effect(void) +static void atkD4_trywish(void) { switch (gBattlescriptCurrInstr[1]) { @@ -10103,7 +10024,7 @@ static void atkD4_wish_effect(void) } } -static void atkD5_setroots(void) // ingrain +static void atkD5_trysetroots(void) // ingrain { if (gStatuses3[gBankAttacker] & STATUS3_ROOTED) { @@ -10168,7 +10089,7 @@ static void atkD9_scaledamagebyhealthratio(void) gBattlescriptCurrInstr++; } -static void atkDA_abilityswap(void) // skill swap +static void atkDA_tryswapabilities(void) // skill swap { if ((gBattleMons[gBankAttacker].ability == 0 && gBattleMons[gBankTarget].ability == 0) @@ -10188,7 +10109,7 @@ static void atkDA_abilityswap(void) // skill swap } } -static void atkDB_imprisoneffect(void) +static void atkDB_tryimprision(void) { if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISONED_OTHERS)) { @@ -10230,7 +10151,7 @@ static void atkDB_imprisoneffect(void) } } -static void atkDC_setgrudge(void) +static void atkDC_trysetgrudge(void) { if (gStatuses3[gBankAttacker] & STATUS3_GRUDGE) { @@ -10313,7 +10234,7 @@ static void atkDE_asistattackselect(void) } } -static void atkDF_setmagiccoat(void) +static void atkDF_trysetmagiccoat(void) { gBankTarget = gBankAttacker; gSpecialStatuses[gBankAttacker].flag20 = 1; @@ -10328,7 +10249,7 @@ static void atkDF_setmagiccoat(void) } } -static void atkE0_setstealstatchange(void) // snatch +static void atkE0_trysetsnatch(void) // snatch { gSpecialStatuses[gBankAttacker].flag20 = 1; if (gCurrentTurnActionNumber == gNoOfAllBanks - 1) // moves last turn @@ -10342,7 +10263,7 @@ static void atkE0_setstealstatchange(void) // snatch } } -static void atkE1_intimidate_string_loader(void) +static void atkE1_trygetintimidatetarget(void) { u8 side; @@ -10365,7 +10286,7 @@ static void atkE1_intimidate_string_loader(void) gBattlescriptCurrInstr += 5; } -static void atkE2_switchout_abilities(void) +static void atkE2_switchoutabilities(void) { gActiveBank = GetBattleBank(gBattlescriptCurrInstr[1]); @@ -10502,7 +10423,7 @@ static void atkE5_pickup(void) gBattlescriptCurrInstr++; } -static void atkE6_castform_change_animation(void) +static void atkE6_docastformchangeanimation(void) { gActiveBank = gBattleScripting.bank; @@ -10515,7 +10436,7 @@ static void atkE6_castform_change_animation(void) gBattlescriptCurrInstr++; } -static void atkE7_castform_data_change(void) +static void atkE7_trycastformdatachange(void) { u8 form; @@ -10578,7 +10499,7 @@ static void atkE9_setweatherballtype(void) gBattlescriptCurrInstr++; } -static void atkEA_recycleitem(void) +static void atkEA_tryrecycleitem(void) { u16 *usedHeldItem; @@ -10619,7 +10540,7 @@ static void atkEB_settypetoterrain(void) } } -static void atkEC_pursuit_sth(void) +static void atkEC_pursuitrelated(void) { gActiveBank = GetBankByIdentity(GetBankIdentity(gBankAttacker) ^ BIT_MON); @@ -10641,7 +10562,7 @@ static void atkEC_pursuit_sth(void) } } -static void atkED_802B4B4(void) +static void atkEF_snatchsetbanks(void) { gEffectBank = gBankAttacker; @@ -10676,7 +10597,7 @@ static void atkEE_removelightscreenreflect(void) // brick break gBattlescriptCurrInstr++; } -static void atkEF_pokeball_catch_calculation(void) +static void atkEF_handleballthrow(void) { u8 ballMultiplier = 0; @@ -10827,7 +10748,7 @@ static void atkEF_pokeball_catch_calculation(void) } } -static void atkF0_give_caught_mon(void) +static void atkF0_givecaughtmon(void) { if (GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ BIT_SIDE]]) != MON_GIVEN_TO_PARTY) { @@ -10856,7 +10777,7 @@ static void atkF0_give_caught_mon(void) gBattlescriptCurrInstr++; } -static void atkF1_set_caught_mon_dex_flags(void) +static void atkF1_trysetcaughtmondexflags(void) { u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL); u32 personality = GetMonData(&gEnemyParty[0], MON_DATA_PERSONALITY, NULL); @@ -10872,7 +10793,7 @@ static void atkF1_set_caught_mon_dex_flags(void) } } -static void atkF2_display_dex_info(void) +static void atkF2_displaydexinfo(void) { u16 species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES, NULL); @@ -10991,7 +10912,7 @@ void BattleDestroyYesNoCursorAt(u8 cursorPosition) CopyBgTilemapBufferToVram(0); } -static void atkF3_nickname_caught_poke(void) +static void atkF3_trygivecaughtmonnick(void) { switch (gBattleCommunication[MULTIUSE_STATE]) { @@ -11079,18 +11000,18 @@ static void atkF5_removeattackerstatus1(void) gBattlescriptCurrInstr++; } -static void atkF6_action_finished(void) +static void atkF6_finishaction(void) { gCurrentActionFuncId = ACTION_FINISHED; } -static void atkF7_turn_finished(void) +static void atkF7_finishturn(void) { gCurrentActionFuncId = ACTION_FINISHED; gCurrentTurnActionNumber = gNoOfAllBanks; } -static void atkF8_trainer_slide_back(void) +static void atkF8_trainerslideout(void) { gActiveBank = GetBankByIdentity(gBattlescriptCurrInstr[1]); EmitTrainerSlideBack(0); diff --git a/src/battle_util.c b/src/battle_util.c index 07e6ff654..a24688bde 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -9,10 +9,12 @@ #include "items.h" #include "util.h" #include "battle_move_effects.h" +#include "battle_scripts.h" #include "rng.h" #include "text.h" #include "string_util.h" #include "battle_message.h" +#include "battle_string_ids.h" #include "battle_ai_script_commands.h" #include "battle_controllers.h" #include "event_data.h" @@ -20,8 +22,8 @@ #include "link.h" extern const u8* gBattlescriptCurrInstr; -extern const u8* gBattlescriptPtrsForSelection[BATTLE_BANKS_COUNT]; -extern const u8* gUnknown_02024230[BATTLE_BANKS_COUNT]; +extern const u8* gSelectionBattleScripts[BATTLE_BANKS_COUNT]; +extern const u8* gPalaceSelectionBattleScripts[BATTLE_BANKS_COUNT]; extern struct BattlePokemon gBattleMons[BATTLE_BANKS_COUNT]; extern u8 gActiveBank; extern u8 gStringBank; @@ -41,7 +43,7 @@ extern s32 gBattleMoveDamage; extern struct BattleEnigmaBerry gEnigmaBerries[BATTLE_BANKS_COUNT]; extern u8 gBattleBufferB[BATTLE_BANKS_COUNT][0x200]; extern u32 gBattleTypeFlags; -extern u16 gLastUsedMovesByBanks[BATTLE_BANKS_COUNT]; +extern u16 gLastMoves[BATTLE_BANKS_COUNT]; extern u32 gHitMarker; extern u8 gEffectBank; extern u16 gBattlePartyID[BATTLE_BANKS_COUNT]; @@ -60,119 +62,6 @@ extern u8 gSentPokesToOpponent[2]; extern const struct BattleMove gBattleMoves[]; -// scripts -extern const u8 gUnknown_082DAE2A[]; -extern const u8 gUnknown_082DAE1F[]; -extern const u8 gUnknown_082DB089[]; -extern const u8 gUnknown_082DB098[]; -extern const u8 gUnknown_082DB0AF[]; -extern const u8 gUnknown_082DB0A0[]; -extern const u8 gUnknown_082DB185[]; -extern const u8 gUnknown_082DB181[]; -extern const u8 gUnknown_082DB812[]; -extern const u8 gUnknown_082DB076[]; -extern const u8 BattleScript_NoMovesLeft[]; -extern const u8 gUnknown_082DACFA[]; -extern const u8 gUnknown_082DAD0B[]; -extern const u8 gUnknown_082DACC9[]; -extern const u8 gUnknown_082DAC47[]; -extern const u8 gUnknown_082DACE0[]; -extern const u8 gUnknown_082DACD2[]; -extern const u8 BattleScript_WishComesTrue[]; -extern const u8 gUnknown_082DACC9[]; -extern const u8 gUnknown_082DAC2C[]; -extern const u8 BattleScript_IngrainTurnHeal[]; -extern const u8 BattleScript_LeechSeedTurnDrain[]; -extern const u8 BattleScript_PoisonTurnDmg[]; -extern const u8 BattleScript_BurnTurnDmg[]; -extern const u8 BattleScript_NightmareTurnDmg[]; -extern const u8 BattleScript_CurseTurnDmg[]; -extern const u8 BattleScript_WrapTurnDmg[]; -extern const u8 BattleScript_WrapEnds[]; -extern const u8 gUnknown_082DB234[]; -extern const u8 gUnknown_082DB2A6[]; -extern const u8 BattleScript_ThrashConfuses[]; -extern const u8 BattleScript_DisabledNoMore[]; -extern const u8 BattleScript_EncoredNoMore[]; -extern const u8 BattleScript_YawnMakesAsleep[]; -extern const u8 gUnknown_082DAFE4[]; -extern const u8 gUnknown_082DB8F3[]; -extern const u8 gUnknown_082DAF05[]; -extern const u8 gUnknown_082DAF20[]; -extern const u8 gUnknown_082DA7C4[]; -extern const u8 gUnknown_082DA7CD[]; -extern const u8 BattleScript_MoveUsedWokeUp[]; -extern const u8 BattleScript_MoveUsedIsAsleep[]; -extern const u8 BattleScript_MoveUsedIsFrozen[]; -extern const u8 BattleScript_MoveUsedUnfroze[]; -extern const u8 BattleScript_MoveUsedLoafingAround[]; -extern const u8 BattleScript_MoveUsedMustRecharge[]; -extern const u8 BattleScript_MoveUsedFlinched[]; -extern const u8 BattleScript_MoveUsedIsDisabled[]; -extern const u8 BattleScript_MoveUsedIsTaunted[]; -extern const u8 BattleScript_MoveUsedIsImprisoned[]; -extern const u8 BattleScript_MoveUsedIsConfused[]; -extern const u8 BattleScript_MoveUsedIsConfusedNoMore[]; -extern const u8 BattleScript_MoveUsedIsParalyzed[]; -extern const u8 BattleScript_MoveUsedIsParalyzedCantAttack[]; -extern const u8 BattleScript_MoveUsedIsInLove[]; -extern const u8 BattleScript_BideStoringEnergy[]; -extern const u8 BattleScript_BideAttack[]; -extern const u8 BattleScript_BideNoEnergyToAttack[]; -extern const u8 gUnknown_082DACE7[]; -extern const u8 BattleScript_DrizzleActivates[]; -extern const u8 BattleScript_SandstreamActivates[]; -extern const u8 BattleScript_DroughtActivates[]; -extern const u8 BattleScript_CastformChange[]; -extern const u8 BattleScript_RainDishActivates[]; -extern const u8 BattleScript_ShedSkinActivates[]; -extern const u8 BattleScript_SpeedBoostActivates[]; -extern const u8 BattleScript_SoundproofProtected[]; -extern const u8 BattleScript_MoveHPDrain[]; -extern const u8 BattleScript_MoveHPDrain_PPLoss[]; -extern const u8 BattleScript_FlashFireBoost[]; -extern const u8 BattleScript_FlashFireBoost_PPLoss[]; -extern const u8 gUnknown_082DB592[]; -extern const u8 gUnknown_082DB591[]; -extern const u8 BattleScript_ColorChangeActivates[]; -extern const u8 BattleScript_RoughSkinActivates[]; -extern const u8 BattleScript_ApplySecondaryEffect[]; -extern const u8 BattleScript_CuteCharmActivates[]; -extern const u8 gUnknown_082DB68C[]; -extern const u8 BattleScript_SynchronizeActivates[]; -extern const u8 gUnknown_082DB4B8[]; -extern const u8 gUnknown_082DB4C1[]; -extern const u8 BattleScript_TraceActivates[]; - -extern const u8 BattleScript_WhiteHerbEnd2[]; -extern const u8 BattleScript_WhiteHerbRet[]; -extern const u8 BattleScript_ItemHealHP_RemoveItem[]; -extern const u8 BattleScript_BerryPPHealEnd2[]; -extern const u8 BattleScript_ItemHealHP_End2[]; -extern const u8 BattleScript_BerryConfuseHealEnd2[]; -extern const u8 BattleScript_BerryStatRaiseEnd2[]; -extern const u8 BattleScript_BerryFocusEnergyEnd2[]; -extern const u8 BattleScript_BerryCurePrlzEnd2[]; -extern const u8 BattleScript_BerryCurePsnEnd2[]; -extern const u8 BattleScript_BerryCureBrnEnd2[]; -extern const u8 BattleScript_BerryCureFrzEnd2[]; -extern const u8 BattleScript_BerryCureSlpEnd2[]; -extern const u8 BattleScript_BerryCureConfusionEnd2[]; -extern const u8 BattleScript_BerryCureChosenStatusEnd2[]; -extern const u8 BattleScript_BerryCureParRet[]; -extern const u8 BattleScript_BerryCurePsnRet[]; -extern const u8 BattleScript_BerryCureBrnRet[]; -extern const u8 BattleScript_BerryCureFrzRet[]; -extern const u8 BattleScript_BerryCureSlpRet[]; -extern const u8 BattleScript_BerryCureConfusionRet[]; -extern const u8 BattleScript_BerryCureChosenStatusRet[]; -extern const u8 BattleScript_ItemHealHP_Ret[]; - -extern const u8 gUnknown_082DB695[]; //disobedient while asleep -extern const u8 gUnknown_082DB6A5[]; //disobedient, uses a random move -extern const u8 gUnknown_082DB6D9[]; //disobedient, went to sleep -extern const u8 gUnknown_082DB6F0[]; //disobedient, hits itself - extern u8 weather_get_current(void); // rom const data @@ -196,13 +85,13 @@ u8 GetBattleBank(u8 caseId) case BS_GET_EFFECT_BANK: ret = gEffectBank; break; - case 7: + case BS_GET_BANK_0: ret = 0; break; case BS_GET_SCRIPTING_BANK: ret = gBattleScripting.bank; break; - case 3: + case BS_GET_gBank1: ret = gBank1; break; case 5: @@ -474,27 +363,27 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = gUnknown_082DAE2A; + gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_82DAE2A; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DAE1F; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingDisabledMove; limitations = 1; } } - if (move == gLastUsedMovesByBanks[gActiveBank] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBank].status2 & STATUS2_TORMENT)) + if (move == gLastMoves[gActiveBank] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBank].status2 & STATUS2_TORMENT)) { CancelMultiTurnMoves(gActiveBank); if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = gUnknown_082DB098; + gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_82DB098; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB089; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingTormentedMove; limitations++; } } @@ -504,12 +393,12 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = gUnknown_082DB0AF; + gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_82DB0AF; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB0A0; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingNotAllowedMoveTaunt; limitations++; } } @@ -519,12 +408,12 @@ u8 TrySetCantSelectMoveBattleScript(void) gCurrentMove = move; if (gBattleTypeFlags & BATTLE_TYPE_PALACE) { - gUnknown_02024230[gActiveBank] = gUnknown_082DB185; + gPalaceSelectionBattleScripts[gActiveBank] = BattleScript_82DB185; gProtectStructs[gActiveBank].flag_x10 = 1; } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB181; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingImprisionedMove; limitations++; } } @@ -546,7 +435,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB812; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingNotAllowedMoveChoiceItem; limitations++; } } @@ -559,7 +448,7 @@ u8 TrySetCantSelectMoveBattleScript(void) } else { - gBattlescriptPtrsForSelection[gActiveBank] = gUnknown_082DB076; + gSelectionBattleScripts[gActiveBank] = BattleScript_SelectingMoveWithNoPP; limitations++; } } @@ -570,7 +459,7 @@ u8 TrySetCantSelectMoveBattleScript(void) u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) { u8 holdEffect; - u16* choicedMove = &gBattleStruct->choicedMove[bank]; + u16 *choicedMove = &gBattleStruct->choicedMove[bank]; s32 i; if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY) @@ -588,7 +477,7 @@ u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check) unusableMoves |= gBitTable[i]; if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED) unusableMoves |= gBitTable[i]; - if (gBattleMons[bank].moves[i] == gLastUsedMovesByBanks[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) + if (gBattleMons[bank].moves[i] == gLastMoves[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT) unusableMoves |= gBitTable[i]; if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0) unusableMoves |= gBitTable[i]; @@ -610,7 +499,7 @@ bool8 AreAllMovesUnusable(void) if (unusable == 0xF) // all moves are unusable { gProtectStructs[gActiveBank].onlyStruggle = 1; - gBattlescriptPtrsForSelection[gActiveBank] = BattleScript_NoMovesLeft; + gSelectionBattleScripts[gActiveBank] = BattleScript_NoMovesLeft; } else { @@ -694,12 +583,8 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].reflectTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT; - BattleScriptExecute(gUnknown_082DACFA); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_REFLECT; - gBattleTextBuff1[3] = MOVE_REFLECT >> 8; - gBattleTextBuff1[4] = EOS; + BattleScriptExecute(BattleScript_SideStatusWoreOff); + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT); effect++; } } @@ -723,13 +608,9 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].lightscreenTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN; - BattleScriptExecute(gUnknown_082DACFA); + BattleScriptExecute(BattleScript_SideStatusWoreOff); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN; - gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8; - gBattleTextBuff1[4] = EOS; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN); effect++; } } @@ -752,13 +633,9 @@ u8 UpdateTurnCounters(void) && --gSideTimers[sideBank].mistTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST; - BattleScriptExecute(gUnknown_082DACFA); + BattleScriptExecute(BattleScript_SideStatusWoreOff); gBattleCommunication[MULTISTRING_CHOOSER] = sideBank; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = MOVE_MIST; - gBattleTextBuff1[3] = MOVE_MIST >> 8; - gBattleTextBuff1[4] = EOS; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST); effect++; } gBattleStruct->turnSideTracker++; @@ -781,7 +658,7 @@ u8 UpdateTurnCounters(void) if (--gSideTimers[sideBank].safeguardTimer == 0) { gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD; - BattleScriptExecute(gUnknown_082DAD0B); + BattleScriptExecute(BattleScript_SafeguardEnds); effect++; } } @@ -833,10 +710,15 @@ u8 UpdateTurnCounters(void) gBattleCommunication[MULTISTRING_CHOOSER] = 0; } else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR) + { gBattleCommunication[MULTISTRING_CHOOSER] = 1; + } else + { gBattleCommunication[MULTISTRING_CHOOSER] = 0; - BattleScriptExecute(gUnknown_082DAC2C); + } + + BattleScriptExecute(BattleScript_RainContinuesOrEnds); effect++; } gBattleStruct->turncountersTracker++; @@ -847,12 +729,14 @@ u8 UpdateTurnCounters(void) if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~WEATHER_SANDSTORM_TEMPORARY; - gBattlescriptCurrInstr = gUnknown_082DACC9; + gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; } else - gBattlescriptCurrInstr = gUnknown_082DAC47; + { + gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } - gBattleScripting.animArg1 = 0xC; + gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 0; BattleScriptExecute(gBattlescriptCurrInstr); effect++; @@ -865,10 +749,12 @@ u8 UpdateTurnCounters(void) if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~WEATHER_SUN_TEMPORARY; - gBattlescriptCurrInstr = gUnknown_082DACE0; + gBattlescriptCurrInstr = BattleScript_SunlightFaded; } else - gBattlescriptCurrInstr = gUnknown_082DACD2; + { + gBattlescriptCurrInstr = BattleScript_SunlightContinues; + } BattleScriptExecute(gBattlescriptCurrInstr); effect++; @@ -881,12 +767,14 @@ u8 UpdateTurnCounters(void) if (--gWishFutureKnock.weatherDuration == 0) { gBattleWeather &= ~WEATHER_HAIL; - gBattlescriptCurrInstr = gUnknown_082DACC9; + gBattlescriptCurrInstr = BattleScript_SandStormHailEnds; } else - gBattlescriptCurrInstr = gUnknown_082DAC47; + { + gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; + } - gBattleScripting.animArg1 = 0xD; + gBattleScripting.animArg1 = B_ANIM_HAIL_CONTINUES; gBattleCommunication[MULTISTRING_CHOOSER] = 1; BattleScriptExecute(gBattlescriptCurrInstr); effect++; @@ -981,7 +869,7 @@ u8 TurnBasedEffects(void) gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns + if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) // not 16 turns gBattleMons[gActiveBank].status1 += 0x100; gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8; BattleScriptExecute(BattleScript_PoisonTurnDmg); @@ -1040,8 +928,8 @@ u8 TurnBasedEffects(void) // This is the only way I could get this array access to match. gBattleScripting.animArg1 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0); gBattleScripting.animArg2 = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MOVE; gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0); gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1); gBattleTextBuff1[4] = EOS; @@ -1052,8 +940,8 @@ u8 TurnBasedEffects(void) } else // broke free { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; + gBattleTextBuff1[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff1[1] = B_BUFF_MOVE; gBattleTextBuff1[2] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 0); gBattleTextBuff1[3] = *(gBattleStruct->wrappedMove + gActiveBank * 2 + 1); gBattleTextBuff1[4] = EOS; @@ -1075,7 +963,7 @@ u8 TurnBasedEffects(void) gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP); gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE); gBattleCommunication[MULTISTRING_CHOOSER] = 1; - BattleScriptExecute(gUnknown_082DB234); + BattleScriptExecute(BattleScript_MonWokeUpInUproar); gActiveBank = gBankAttacker; EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); MarkBufferBankForExecution(gActiveBank); @@ -1106,7 +994,7 @@ u8 TurnBasedEffects(void) gBattleCommunication[MULTISTRING_CHOOSER] = 1; CancelMultiTurnMoves(gActiveBank); } - BattleScriptExecute(gUnknown_082DB2A6); + BattleScriptExecute(BattleScript_PrintUproarOverTurns); effect = 1; } } @@ -1125,7 +1013,7 @@ u8 TurnBasedEffects(void) gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS); if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)) { - gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47; + gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER; SetMoveEffect(1, 0); if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION) BattleScriptExecute(BattleScript_ThrashConfuses); @@ -1250,23 +1138,20 @@ bool8 sub_8041364(void) else gBattleCommunication[MULTISTRING_CHOOSER] = 1; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBank]; - gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBank] >> 8; - gBattleTextBuff1[4] = EOS; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[gActiveBank]); + gBankTarget = gActiveBank; gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank]; gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank]; gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF; - BattleScriptExecute(gUnknown_082DAFE4); + BattleScriptExecute(BattleScript_MonTookFutureAttack); if (gWishFutureKnock.futureSightCounter[gActiveBank] == 0 - && gWishFutureKnock.futureSightCounter[gActiveBank ^ 2] == 0) + && gWishFutureKnock.futureSightCounter[gActiveBank ^ BIT_MON] == 0) { - gSideAffecting[GetBankIdentity(gBankTarget) & 1] &= ~SIDE_STATUS_FUTUREATTACK; + gSideAffecting[GET_BANK_SIDE(gBankTarget)] &= ~(SIDE_STATUS_FUTUREATTACK); } - return 1; + return TRUE; } } // Why do I have to keep doing this to match? @@ -1288,25 +1173,20 @@ bool8 sub_8041364(void) gBattleStruct->field_1A1++; if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 1; - gBattleTextBuff1[2] = 1; - gBattleTextBuff1[3] = 1; - gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSongTimer1; - gBattleTextBuff1[5] = EOS; + PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gActiveBank].perishSongTimer1); if (gDisableStructs[gActiveBank].perishSongTimer1 == 0) { gStatuses3[gActiveBank] &= ~STATUS3_PERISH_SONG; gBattleMoveDamage = gBattleMons[gActiveBank].hp; - gBattlescriptCurrInstr = gUnknown_082DAF05; + gBattlescriptCurrInstr = BattleScript_PerishSongTakesLife; } else { gDisableStructs[gActiveBank].perishSongTimer1--; - gBattlescriptCurrInstr = gUnknown_082DAF20; + gBattlescriptCurrInstr = BattleScript_PerishSongCountGoesDown; } BattleScriptExecute(gBattlescriptCurrInstr); - return 1; + return TRUE; } } // Hm... @@ -1326,17 +1206,17 @@ bool8 sub_8041364(void) for (i = 0; i < 2; i++) CancelMultiTurnMoves(i); - gBattlescriptCurrInstr = gUnknown_082DB8F3; - BattleScriptExecute(gUnknown_082DB8F3); + gBattlescriptCurrInstr = BattleScript_82DB8F3; + BattleScriptExecute(BattleScript_82DB8F3); gBattleStruct->field_1A0++; - return 1; + return TRUE; } break; } gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20); - return 0; + return FALSE; } #define sub_8041728_MAX_CASE 7 @@ -1367,7 +1247,7 @@ bool8 sub_8041728(void) && !(gBattleStruct->field_DF & gBitTable[gBattlePartyID[gBattleStruct->field_4E]]) && !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E])) { - BattleScriptExecute(gUnknown_082DA7C4); + BattleScriptExecute(BattleScript_82DA7C4); gBattleStruct->field_4D = 2; return TRUE; } @@ -1392,7 +1272,7 @@ bool8 sub_8041728(void) if (gBattleMons[gBattleStruct->field_4E].hp == 0 && !(gAbsentBankFlags & gBitTable[gBattleStruct->field_4E])) { - BattleScriptExecute(gUnknown_082DA7CD); + BattleScriptExecute(BattleScript_82DA7CD); gBattleStruct->field_4D = 5; return TRUE; } @@ -1683,7 +1563,7 @@ u8 AtkCanceller_UnableToUseMove(void) } gBattleStruct->atkCancellerTracker++; break; - case 14: // last case + case ATKCANCELLER_MAX_CASE: break; } @@ -1785,14 +1665,14 @@ bool8 sub_80423F4(u8 bank, u8 r1, u8 r2) { if (GetBankSide(bank) == SIDE_OPPONENT) { - r7 = GetBankByIdentity(1); - r6 = GetBankByIdentity(3); + r7 = GetBankByIdentity(IDENTITY_OPPONENT_MON1); + r6 = GetBankByIdentity(IDENTITY_OPPONENT_MON2); party = gEnemyParty; } else { - r7 = GetBankByIdentity(0); - r6 = GetBankByIdentity(2); + r7 = GetBankByIdentity(IDENTITY_PLAYER_MON1); + r6 = GetBankByIdentity(IDENTITY_PLAYER_MON2); party = gPlayerParty; } if (r1 == 6) @@ -1910,10 +1790,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) else move = gCurrentMove; - if (gBattleStruct->dynamicMoveType) - moveType = gBattleStruct->dynamicMoveType & 0x3F; - else - moveType = gBattleMoves[move].type; + GET_MOVE_TYPE(move, moveType); switch (caseID) { @@ -1961,7 +1838,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (effect) { gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current(); - BattleScriptPushCursorAndCallback(gUnknown_082DACE7); + BattleScriptPushCursorAndCallback(BattleScript_OverworldWeatherStarts); } break; case ABILITY_DRIZZLE: @@ -2167,9 +2044,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) if (gBattleMons[bank].maxHP == gBattleMons[bank].hp) { if ((gProtectStructs[gBankAttacker].notFirstStrike)) - gBattlescriptCurrInstr = gUnknown_082DB592; + gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless; else - gBattlescriptCurrInstr = gUnknown_082DB591; + gBattlescriptCurrInstr = BattleScript_MonMadeMoveUseless_PPLoss; } else { @@ -2307,86 +2184,84 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) } break; case ABILITYEFFECT_IMMUNITY: // 5 + for (bank = 0; bank < gNoOfAllBanks; bank++) { - for (bank = 0; bank < gNoOfAllBanks; bank++) + switch (gBattleMons[bank].ability) { - switch (gBattleMons[bank].ability) + case ABILITY_IMMUNITY: + if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | STATUS_TOXIC_COUNTER)) { - case ABILITY_IMMUNITY: - if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | STATUS_TOXIC_COUNTER)) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); - effect = 1; - } - break; - case ABILITY_OWN_TEMPO: - if (gBattleMons[bank].status2 & STATUS2_CONFUSION) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); - effect = 2; - } - break; - case ABILITY_LIMBER: - if (gBattleMons[bank].status1 & STATUS_PARALYSIS) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); - effect = 1; - } - break; - case ABILITY_INSOMNIA: - case ABILITY_VITAL_SPIRIT: - if (gBattleMons[bank].status1 & STATUS_SLEEP) - { - gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); - StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); - effect = 1; - } - break; - case ABILITY_WATER_VEIL: - if (gBattleMons[bank].status1 & STATUS_BURN) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - effect = 1; - } + StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); + effect = 1; + } + break; + case ABILITY_OWN_TEMPO: + if (gBattleMons[bank].status2 & STATUS2_CONFUSION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); + effect = 2; + } + break; + case ABILITY_LIMBER: + if (gBattleMons[bank].status1 & STATUS_PARALYSIS) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); + effect = 1; + } + break; + case ABILITY_INSOMNIA: + case ABILITY_VITAL_SPIRIT: + if (gBattleMons[bank].status1 & STATUS_SLEEP) + { + gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); + StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); + effect = 1; + } + break; + case ABILITY_WATER_VEIL: + if (gBattleMons[bank].status1 & STATUS_BURN) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); + effect = 1; + } + break; + case ABILITY_MAGMA_ARMOR: + if (gBattleMons[bank].status1 & STATUS_FREEZE) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); + effect = 1; + } + break; + case ABILITY_OBLIVIOUS: + if (gBattleMons[bank].status2 & STATUS2_INFATUATION) + { + StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); + effect = 3; + } + break; + } + if (effect) + { + switch (effect) + { + case 1: // status cleared + gBattleMons[bank].status1 = 0; break; - case ABILITY_MAGMA_ARMOR: - if (gBattleMons[bank].status1 & STATUS_FREEZE) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); - effect = 1; - } + case 2: // get rid of confusion + gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); break; - case ABILITY_OBLIVIOUS: - if (gBattleMons[bank].status2 & STATUS2_INFATUATION) - { - StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); - effect = 3; - } + case 3: // get rid of infatuation + gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); break; } - if (effect) - { - switch (effect) - { - case 1: // status cleared - gBattleMons[bank].status1 = 0; - break; - case 2: // get rid of confusion - gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION); - break; - case 3: // get rid of infatuation - gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION); - break; - } - BattleScriptPushCursor(); - gBattlescriptCurrInstr = gUnknown_082DB68C; - gBattleScripting.bank = bank; - gActiveBank = bank; - EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); - MarkBufferBankForExecution(gActiveBank); - return effect; - } + BattleScriptPushCursor(); + gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; + gBattleScripting.bank = bank; + gActiveBank = bank; + EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1); + MarkBufferBankForExecution(gActiveBank); + return effect; } } break; @@ -2445,7 +2320,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) { gLastUsedAbility = ABILITY_INTIMIDATE; gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); - BattleScriptPushCursorAndCallback(gUnknown_082DB4B8); + BattleScriptPushCursorAndCallback(BattleScript_82DB4B8); gBattleStruct->intimidateBank = i; effect++; break; @@ -2517,7 +2392,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) gLastUsedAbility = ABILITY_INTIMIDATE; gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); BattleScriptPushCursor(); - gBattlescriptCurrInstr = gUnknown_082DB4C1; + gBattlescriptCurrInstr = BattleScript_82DB4C1; gBattleStruct->intimidateBank = i; effect++; break; @@ -2636,7 +2511,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg) return effect; } -void BattleScriptExecute(const u8* BS_ptr) +void BattleScriptExecute(const u8 *BS_ptr) { gBattlescriptCurrInstr = BS_ptr; BATTLE_CALLBACKS_STACK->function[BATTLE_CALLBACKS_STACK->size++] = gBattleMainFunc; @@ -2644,7 +2519,7 @@ void BattleScriptExecute(const u8* BS_ptr) gCurrentActionFuncId = 0; } -void BattleScriptPushCursorAndCallback(const u8* BS_ptr) +void BattleScriptPushCursorAndCallback(const u8 *BS_ptr) { BattleScriptPushCursor(); gBattlescriptCurrInstr = BS_ptr; @@ -2727,7 +2602,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) gBattleStruct->moneyMultiplier = 2; break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < 8; i++) + for (i = 0; i < BATTLE_STATS_NO; i++) { if (gBattleMons[bank].statStages[i] < 6) { @@ -2764,19 +2639,19 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_RESTORE_PP: if (!moveTurn) { - struct Pokemon* poke; + struct Pokemon *mon; u8 ppBonuses; u16 move; if (GetBankSide(bank) == SIDE_PLAYER) - poke = &gPlayerParty[gBattlePartyID[bank]]; + mon = &gPlayerParty[gBattlePartyID[bank]]; else - poke = &gEnemyParty[gBattlePartyID[bank]]; + mon = &gEnemyParty[gBattlePartyID[bank]]; for (i = 0; i < 4; i++) { - move = GetMonData(poke, MON_DATA_MOVE1 + i); - changedPP = GetMonData(poke, MON_DATA_PP1 + i); - ppBonuses = GetMonData(poke, MON_DATA_PP_BONUSES); + move = GetMonData(mon, MON_DATA_MOVE1 + i); + changedPP = GetMonData(mon, MON_DATA_PP1 + i); + ppBonuses = GetMonData(mon, MON_DATA_PP_BONUSES); if (move && changedPP == 0) break; } @@ -2787,11 +2662,9 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) changedPP = maxPP; else changedPP = changedPP + bankQuality; - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 2; - gBattleTextBuff1[2] = move; - gBattleTextBuff1[3] = move >> 8; - gBattleTextBuff1[4] = 0xFF; + + PREPARE_MOVE_BUFFER(gBattleTextBuff1, move); + BattleScriptExecute(BattleScript_BerryPPHealEnd2); EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); MarkBufferBankForExecution(gActiveBank); @@ -2800,7 +2673,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < 8; i++) + for (i = 0; i < BATTLE_STATS_NO; i++) { if (gBattleMons[bank].statStages[i] < 6) { @@ -2834,10 +2707,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_SPICY: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_SPICY; - gBattleTextBuff1[3] = EOS; + PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY); + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2854,10 +2725,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_DRY: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_DRY; - gBattleTextBuff1[3] = EOS; + PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_DRY); + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2874,10 +2743,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_SWEET: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_SWEET; - gBattleTextBuff1[3] = EOS; + PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET); + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2894,10 +2761,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_BITTER: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_BITTER; - gBattleTextBuff1[3] = EOS; + PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER); + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2914,10 +2779,8 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_CONFUSE_SOUR: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 8; - gBattleTextBuff1[2] = FLAVOR_SOUR; - gBattleTextBuff1[3] = EOS; + PREPARE_FLAVOUR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR); + gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; @@ -2935,19 +2798,11 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_ATTACK_UP: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_ATK; - gBattleTextBuff1[3] = EOS; - - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = 0xD2; - gBattleTextBuff2[3] = 0xD2 >> 8; - gBattleTextBuff2[4] = EOS; + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_ATK); + PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE); gEffectBank = bank; - gBattleScripting.statChanger = 0x10 + STAT_STAGE_ATK; + SET_STATCHANGER(STAT_STAGE_ATK, 1, FALSE); gBattleScripting.animArg1 = 0xE + STAT_STAGE_ATK; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -2957,13 +2812,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_DEFENSE_UP: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_DEF; - gBattleTextBuff1[3] = EOS; + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_DEF); gEffectBank = bank; - gBattleScripting.statChanger = 0x10 + STAT_STAGE_DEF; + SET_STATCHANGER(STAT_STAGE_DEF, 1, FALSE); gBattleScripting.animArg1 = 0xE + STAT_STAGE_DEF; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -2973,13 +2825,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_SPEED_UP: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_SPEED; - gBattleTextBuff1[3] = EOS; + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPEED); gEffectBank = bank; - gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPEED; + SET_STATCHANGER(STAT_STAGE_SPEED, 1, FALSE); gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPEED; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -2989,13 +2838,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_SP_ATTACK_UP: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_SPATK; - gBattleTextBuff1[3] = EOS; + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPATK); gEffectBank = bank; - gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPATK; + SET_STATCHANGER(STAT_STAGE_SPATK, 1, FALSE); gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPATK; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -3005,13 +2851,10 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) case HOLD_EFFECT_SP_DEFENSE_UP: if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC) { - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = STAT_STAGE_SPDEF; - gBattleTextBuff1[3] = EOS; + PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_STAGE_SPDEF); gEffectBank = bank; - gBattleScripting.statChanger = 0x10 + STAT_STAGE_SPDEF; + SET_STATCHANGER(STAT_STAGE_SPDEF, 1, FALSE); gBattleScripting.animArg1 = 0xE + STAT_STAGE_SPDEF; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -3041,22 +2884,19 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) i = Random() % 5; } while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC); - gBattleTextBuff1[0] = 0xFD; - gBattleTextBuff1[1] = 5; - gBattleTextBuff1[2] = i + 1; - gBattleTextBuff1[3] = EOS; - - gBattleTextBuff2[0] = 0xFD; - gBattleTextBuff2[1] = 0; - gBattleTextBuff2[2] = 0xD1; - gBattleTextBuff2[3] = 0xD1 >> 8; - gBattleTextBuff2[4] = 0; - gBattleTextBuff2[5] = 0xD2; - gBattleTextBuff2[6] = 0xD2 >> 8; + PREPARE_STAT_BUFFER(gBattleTextBuff1, i + 1); + + gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; + gBattleTextBuff2[1] = B_BUFF_STRING; + gBattleTextBuff2[2] = STRINGID_STATSHARPLY; + gBattleTextBuff2[3] = STRINGID_STATSHARPLY >> 8; + gBattleTextBuff2[4] = B_BUFF_STRING; + gBattleTextBuff2[5] = STRINGID_STATROSE; + gBattleTextBuff2[6] = STRINGID_STATROSE >> 8; gBattleTextBuff2[7] = EOS; gEffectBank = bank; - gBattleScripting.statChanger = 0x21 + i; + SET_STATCHANGER(i + 1, 2, FALSE); gBattleScripting.animArg1 = 0x21 + i + 6; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); @@ -3309,7 +3149,7 @@ u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn) } break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < 8; i++) + for (i = 0; i < BATTLE_STATS_NO; i++) { if (gBattleMons[bank].statStages[i] < 6) { @@ -3411,7 +3251,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) switch (moveTarget) { case MOVE_TARGET_SELECTED: - side = GetBankSide(gBankAttacker) ^ 1; + side = GetBankSide(gBankAttacker) ^ BIT_SIDE; if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) targetBank = gSideTimers[side].followmeTarget; else @@ -3425,7 +3265,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0) && gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD) { - targetBank ^= 2; + targetBank ^= BIT_MON; RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability); gSpecialStatuses[targetBank].lightningRodRedirected = 1; } @@ -3435,12 +3275,12 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) case MOVE_TARGET_BOTH: case MOVE_TARGET_FOES_AND_ALLY: case MOVE_TARGET_OPPONENTS_FIELD: - targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); + targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & BIT_SIDE) ^ BIT_SIDE); if (gAbsentBankFlags & gBitTable[targetBank]) - targetBank ^= 2; + targetBank ^= BIT_MON; break; case MOVE_TARGET_RANDOM: - side = GetBankSide(gBankAttacker) ^ 1; + side = GetBankSide(gBankAttacker) ^ BIT_SIDE; if (gSideTimers[side].followmeTimer && gBattleMons[gSideTimers[side].followmeTarget].hp) targetBank = gSideTimers[side].followmeTarget; else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & MOVE_TARGET_RANDOM) @@ -3448,22 +3288,22 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) if (GetBankSide(gBankAttacker) == SIDE_PLAYER) { if (Random() & 1) - targetBank = GetBankByIdentity(1); + targetBank = GetBankByIdentity(IDENTITY_OPPONENT_MON1); else - targetBank = GetBankByIdentity(3); + targetBank = GetBankByIdentity(IDENTITY_OPPONENT_MON2); } else { if (Random() & 1) - targetBank = GetBankByIdentity(0); + targetBank = GetBankByIdentity(IDENTITY_PLAYER_MON1); else - targetBank = GetBankByIdentity(2); + targetBank = GetBankByIdentity(IDENTITY_PLAYER_MON2); } if (gAbsentBankFlags & gBitTable[targetBank]) - targetBank ^= 2; + targetBank ^= BIT_MON; } else - targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & 1) ^ 1); + targetBank = GetBankByIdentity((GetBankIdentity(gBankAttacker) & BIT_SIDE) ^ BIT_SIDE); break; case MOVE_TARGET_USER: case MOVE_TARGET_x10: @@ -3471,11 +3311,7 @@ u8 GetMoveTarget(u16 move, u8 useMoveTarget) break; } - #ifndef NONMATCHING - MEME_ACCESS_U8(BattleStruct, gBattleStruct, gBankAttacker, moveTarget, targetBank); - #else - gBattleStruct->moveTarget[gBankAttacker] = targetBank; - #endif // NONMATCHING + *(gBattleStruct->moveTarget + gBankAttacker) = targetBank; return targetBank; } @@ -3536,7 +3372,7 @@ u8 IsPokeDisobedient(void) gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RAGE); if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) { - gBattlescriptCurrInstr = gUnknown_082DB695; + gBattlescriptCurrInstr = BattleScript_82DB695; return 1; } @@ -3559,7 +3395,7 @@ u8 IsPokeDisobedient(void) } while (gBitTable[gCurrMovePos] & calc); gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos]; - gBattlescriptCurrInstr = gUnknown_082DB6A5; + gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove; gBankTarget = GetMoveTarget(gRandomMove, 0); gHitMarker |= HITMARKER_x200000; return 2; @@ -3581,7 +3417,7 @@ u8 IsPokeDisobedient(void) } if (i == gNoOfAllBanks) { - gBattlescriptCurrInstr = gUnknown_082DB6D9; + gBattlescriptCurrInstr = BattleScript_IgnoresAndFallsAsleep; return 1; } } @@ -3590,7 +3426,7 @@ u8 IsPokeDisobedient(void) { gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker); gBankTarget = gBankAttacker; - gBattlescriptCurrInstr = gUnknown_082DB6F0; + gBattlescriptCurrInstr = BattleScript_82DB6F0; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; return 2; } diff --git a/sym_ewram.txt b/sym_ewram.txt index 5ccbb3f19..989548ed6 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -312,7 +312,7 @@ gUnknown_020241E9: @ 20241E9 gCurrentMove: @ 20241EA .space 0x2 -gLastUsedMove: @ 20241EC +gChosenMove: @ 20241EC .space 0x2 gRandomMove: @ 20241EE @@ -363,31 +363,31 @@ gBattlescriptCurrInstr: @ 2024214 gActionForBanks: @ 202421C .space 0x4 -gBattlescriptPtrsForSelection: @ 2024220 +gSelectionBattleScripts: @ 2024220 .space 0x10 -gUnknown_02024230: @ 2024230 +gPalaceSelectionBattleScripts: @ 2024230 .space 0x10 -gUnknownMovesUsedByBanks: @ 2024240 +gLastPrintedMoves: @ 2024240 .space 0x8 -gLastUsedMovesByBanks: @ 2024248 +gLastMoves: @ 2024248 .space 0x8 -gUnknown_02024250: @ 2024250 +gLastLandedMoves: @ 2024250 .space 0x8 -gUnknown_02024258: @ 2024258 +gLastHitByType: @ 2024258 .space 0x8 -gUnknown_02024260: @ 2024260 +gLastResultingMoves: @ 2024260 .space 0x8 gLockedMoves: @ 2024268 .space 0x8 -gUnknown_02024270: @ 2024270 +gLastHitBy: @ 2024270 .space 0x4 gChosenMovesByBanks: @ 2024274 |