diff options
-rw-r--r-- | .travis/calcrom/calcrom.pl | 4 | ||||
-rw-r--r-- | asm/macros/battle_script.inc | 1035 | ||||
-rw-r--r-- | baserom.ips | bin | 448532 -> 424717 bytes | |||
-rw-r--r-- | constants/battle.inc | 2 | ||||
-rw-r--r-- | data/battle_anim.s | 665 | ||||
-rw-r--r-- | data/battle_message.s | 309 | ||||
-rw-r--r-- | data/battle_scripts_1.s | 4946 | ||||
-rw-r--r-- | data/battle_scripts_2.s | 246 | ||||
-rw-r--r-- | data/link_rfu_3.s | 573 | ||||
-rw-r--r-- | include/battle_scripts.h | 12 | ||||
-rw-r--r-- | include/battle_string_ids.h | 749 | ||||
-rw-r--r-- | include/constants/battle.h | 5 | ||||
-rw-r--r-- | include/constants/battle_anim.h | 8 | ||||
-rw-r--r-- | include/constants/battle_script_commands.h | 13 | ||||
-rw-r--r-- | include/constants/trainers.h | 1 | ||||
-rw-r--r-- | src/battle_main.c | 18 | ||||
-rw-r--r-- | src/battle_script_commands.c | 24 | ||||
-rw-r--r-- | src/battle_util.c | 4 |
18 files changed, 7085 insertions, 1529 deletions
diff --git a/.travis/calcrom/calcrom.pl b/.travis/calcrom/calcrom.pl index 1ad3e214d..d252be996 100644 --- a/.travis/calcrom/calcrom.pl +++ b/.travis/calcrom/calcrom.pl @@ -18,6 +18,10 @@ while (my $line = <$file>) my $section = $1; my $size = hex($2); my $dir = $3; + if ($size & 3) + { + $size += 4 - ($size % 3); + } if ($section =~ /text/) { diff --git a/asm/macros/battle_script.inc b/asm/macros/battle_script.inc index 223f191c5..ca0ea59bd 100644 --- a/asm/macros/battle_script.inc +++ b/asm/macros/battle_script.inc @@ -1,346 +1,333 @@ -@ 0 == -@ 1 != -@ 2 < -@ 3 > -@ 4 &= - - .macro calculatedamage - critical - atk5 - atk6 - atk7 - .endm - - +@ commands .macro attackcanceler - .byte 0x00 + .byte 0x0 .endm - .macro accuracycheck address, param1 - .byte 0x01 - .4byte \address + .macro accuracycheck param0:req, param1:req + .byte 0x1 + .4byte \param0 .2byte \param1 .endm .macro attackstring - .byte 0x02 + .byte 0x2 .endm .macro ppreduce - .byte 0x03 + .byte 0x3 .endm .macro critcalc - .byte 0x04 + .byte 0x4 .endm - .macro atk5 - .byte 0x05 + .macro damagecalc + .byte 0x5 .endm - .macro atk6 - .byte 0x06 + .macro typecalc + .byte 0x6 .endm - .macro atk7 - .byte 0x07 + .macro adjustnormaldamage + .byte 0x7 .endm - .macro atk8 - .byte 0x08 + .macro adjustnormaldamage2 + .byte 0x8 .endm .macro attackanimation - .byte 0x09 + .byte 0x9 .endm .macro waitanimation - .byte 0x0a + .byte 0xa .endm - .macro graphicalhpupdate bank - .byte 0x0b - .byte \bank + .macro healthbarupdate battler:req + .byte 0xb + .byte \battler .endm - .macro datahpupdate bank - .byte 0x0c - .byte \bank + .macro datahpupdate battler:req + .byte 0xc + .byte \battler .endm .macro critmessage - .byte 0x0d + .byte 0xd .endm - .macro missmessage - .byte 0x0e + .macro effectivenesssound + .byte 0xe .endm .macro resultmessage - .byte 0x0f + .byte 0xf .endm - .macro printstring string + .macro printstring id:req .byte 0x10 - .2byte \string + .2byte \id .endm - .macro printstring2 string + .macro printselectionstring id:req .byte 0x11 - .2byte \string + .2byte \id .endm - .macro waitmessage delay + .macro waitmessage param0:req .byte 0x12 - .2byte \delay + .2byte \param0 .endm - .macro printfromtable table + .macro printfromtable ptr:req .byte 0x13 - .4byte \table + .4byte \ptr .endm - .macro printfromtable2 table + .macro printselectionstringfromtable ptr:req .byte 0x14 - .4byte \table + .4byte \ptr .endm - .macro seteffectwithchancetarget + .macro seteffectwithchance .byte 0x15 .endm - .macro seteffecttarget + .macro seteffectprimary .byte 0x16 .endm - .macro seteffectuser + .macro seteffectsecondary .byte 0x17 .endm - .macro clearstatus bank + .macro clearstatusfromeffect battler:req .byte 0x18 - .byte \bank + .byte \battler .endm - .macro faintpokemon bank, param2, param3 + .macro tryfaintmon battler:req, fromMove:req, ptr:req .byte 0x19 - .byte \bank - .byte \param2 - .4byte \param3 + .byte \battler + .byte \fromMove + .4byte \ptr .endm - .macro atk1a param1 + .macro dofaintanimation battler:req .byte 0x1a - .byte \param1 + .byte \battler .endm - .macro atk1b bank + .macro cleareffectsonfaint battler:req .byte 0x1b - .byte \bank + .byte \battler .endm - .macro jumpifstatus bank, status, address + .macro jumpifstatus battler:req, status1:req, ptr:req .byte 0x1c - .byte \bank - .4byte \status - .4byte \address + .byte \battler + .4byte \status1 + .4byte \ptr .endm - .macro jumpifsecondarytstatus bank, status, address + .macro jumpifstatus2 battler:req, status2:req, ptr:req .byte 0x1d - .byte \bank - .4byte \status - .4byte \address + .byte \battler + .4byte \status2 + .4byte \ptr .endm - .macro jumpifability bank, ability, address + .macro jumpifability param0:req, ability:req, ptr:req .byte 0x1e - .byte \bank + .byte \param0 .byte \ability - .4byte \address + .4byte \ptr .endm - .macro jumpifhalverset bank, status, address + .macro jumpifsideaffecting battler:req, sidestatus:req, ptr:req .byte 0x1f - .byte \bank - .2byte \status - .4byte \address + .byte \battler + .2byte \sidestatus + .4byte \ptr .endm - .macro jumpifstat bank, flag, quantity, statid, address + .macro jumpifstat battler:req, ifflag:req, stat:req, value:req, ptr .byte 0x20 - .byte \bank - .byte \flag - .byte \quantity - .byte \statid - .4byte \address + .byte \battler + .byte \ifflag + .byte \stat + .byte \value + .4byte \ptr .endm - .macro jumpifspecialstatusflag bank, mask, status, address + .macro jumpifstatus3condition battler:req, status3:req, param2:req, ptr:req .byte 0x21 - .byte \bank - .4byte \mask - .byte \status - .4byte \address + .byte \battler + .4byte \status3 + .byte \param2 + .4byte \ptr .endm - .macro jumpiftype bank, type, address + .macro jumpiftype battler:req, type:req, ptr:req .byte 0x22 - .byte \bank + .byte \battler .byte \type - .4byte \address + .4byte \ptr .endm - .macro atk23 bank + .macro getexp battler:req .byte 0x23 - .byte \bank + .byte \battler .endm - .macro atk24 address + .macro atk24 ptr:req .byte 0x24 - .4byte \address + .4byte \ptr .endm - .macro atk25 + .macro movevaluescleanup .byte 0x25 .endm - .macro atk26 param1 + .macro setmultihit value:req .byte 0x26 - .byte \param1 + .byte \value .endm - .macro atk27 address + .macro decrementmultihit value:req .byte 0x27 - .4byte \address + .4byte \value .endm - .macro jump address + .macro goto ptr:req .byte 0x28 - .4byte \address + .4byte \ptr .endm - .macro jumpifbyte ifflag, checkaddr, compare, address + .macro jumpifbyte ifflag:req, param1:req, param2:req, param3:req .byte 0x29 .byte \ifflag - .4byte \checkaddr - .byte \compare - .4byte \address + .4byte \param1 + .byte \param2 + .4byte \param3 .endm - .macro jumpifhalfword ifflag, checkaddr, compare, address + .macro jumpifhalfword ifflag:req, param1:req, param2:req, param3:req .byte 0x2a .byte \ifflag - .4byte \checkaddr - .2byte \compare - .4byte \address + .4byte \param1 + .2byte \param2 + .4byte \param3 .endm - .macro jumpifword ifflag, checkaddr, compare, address + .macro jumpifword ifflag:req, param1:req, param2:req, param3:req .byte 0x2b .byte \ifflag - .4byte \checkaddr - .4byte \compare - .4byte \address + .4byte \param1 + .4byte \param2 + .4byte \param3 .endm - .macro jumpifarrayequal mem1, mem2, size, address + .macro jumpifarrayequal param0:req, param1:req, param2:req, param3:req .byte 0x2c - .4byte \mem1 - .4byte \mem2 - .byte \size - .4byte \address + .4byte \param0 + .4byte \param1 + .byte \param2 + .4byte \param3 .endm - .macro jumpifarraynotequal mem1, mem2, size, address + .macro jumpifarraynotequal param0:req, param1:req, param2:req, param3:req .byte 0x2d - .4byte \mem1 - .4byte \mem2 - .byte \size - .4byte \address + .4byte \param0 + .4byte \param1 + .byte \param2 + .4byte \param3 .endm - .macro setbyte pointer, value + .macro setbyte ptr:req, param1:req .byte 0x2e - .4byte \pointer - .byte \value + .4byte \ptr + .byte \param1 .endm - .macro addbyte pointer, value + .macro addbyte ptr:req, param1:req .byte 0x2f - .4byte \pointer - .byte \value + .4byte \ptr + .byte \param1 .endm - .macro subtractbyte pointer, value + .macro subbyte ptr:req, param1:req .byte 0x30 - .4byte \pointer - .byte \value + .4byte \ptr + .byte \param1 .endm - .macro copyarray destination, source, size + .macro copyarray param0:req, param1:req, param2:req .byte 0x31 - .4byte \destination - .4byte \source - .byte \size + .4byte \param0 + .4byte \param1 + .byte \param2 .endm - .macro atk32 param1, param2, param3, byte + .macro copyarraywithindex param0:req, param1:req, param2:req, param3:req .byte 0x32 + .4byte \param0 .4byte \param1 .4byte \param2 - .4byte \param3 - .byte \byte + .byte \param3 .endm - .macro orbyte pointer, value + .macro orbyte ptr:req, param1:req .byte 0x33 - .4byte \pointer - .byte \value + .4byte \ptr + .byte \param1 .endm - .macro orhalfword pointer, value + .macro orhalfword ptr:req, param1:req .byte 0x34 - .4byte \pointer - .2byte \value + .4byte \ptr + .2byte \param1 .endm - .macro orword pointer, value + .macro orword ptr:req, param1:req .byte 0x35 - .4byte \pointer - .4byte \value + .4byte \ptr + .4byte \param1 .endm - .macro bicbyte pointer, value + .macro bicbyte ptr:req, param1:req .byte 0x36 - .4byte \pointer - .byte \value + .4byte \ptr + .byte \param1 .endm - .macro bichalfword pointer, value + .macro bichalfword ptr:req, param1:req .byte 0x37 - .4byte \pointer - .2byte \value + .4byte \ptr + .2byte \param1 .endm - .macro bicword pointer, value + .macro bicword ptr:req, param1:req .byte 0x38 - .4byte \pointer - .4byte \value + .4byte \ptr + .4byte \param1 .endm - .macro pause pause_duration + .macro pause param0:req .byte 0x39 - .2byte \pause_duration + .2byte \param0 .endm - .macro waitstateatk + .macro waitstate .byte 0x3a .endm - .macro somethinghealatk3b bank + .macro healthbar_update battler:req .byte 0x3b - .byte \bank + .byte \battler .endm .macro return @@ -359,286 +346,319 @@ .byte 0x3f .endm - .macro atk40 address + .macro jumpifaffectedbyprotect ptr:req .byte 0x40 - .4byte \address + .4byte \ptr .endm - .macro callatk address + .macro call ptr:req .byte 0x41 - .4byte \address + .4byte \ptr .endm - .macro jumpiftype2 bank, type, address + .macro jumpiftype2 battler:req, type:req, ptr:req .byte 0x42 - .byte \bank + .byte \battler .byte \type - .4byte \address + .4byte \ptr .endm - .macro jumpifabilitypresent ability, address + .macro jumpifabilitypresent ability:req, ptr:req .byte 0x43 .byte \ability - .4byte \address + .4byte \ptr .endm - .macro atk44 + .macro endselectionscript .byte 0x44 .endm - .macro playanimation bank, animation, var_address + .macro playanimation battler:req, param1:req, param2:req .byte 0x45 - .byte \bank - .byte \animation - .4byte \var_address + .byte \battler + .byte \param1 + .4byte \param2 .endm - .macro atk46 bank, address, int + .macro playanimation2 battler:req, param1:req, param2:req .byte 0x46 - .byte \bank - .4byte \address - .4byte \int + .byte \battler + .4byte \param1 + .4byte \param2 .endm - .macro atk47 + .macro setgraphicalstatchangevalues .byte 0x47 .endm - .macro playstatchangeanimation bank, color, byte + .macro playstatchangeanimation battler:req, param1:req, param2:req .byte 0x48 - .byte \bank - .byte \color - .byte \byte + .byte \battler + .byte \param1 + .byte \param2 .endm - .macro atk49 byte1, byte2 + .macro moveend param0:req, param1:req .byte 0x49 - .byte \byte1 - .byte \byte2 + .byte \param0 + .byte \param1 + .endm + + @ Help macros for 5 uses of moveend command + + @ All cases + .macro moveendall + setbyte sMOVEEND_STATE, 0 + moveend 0, 0 + .endm + + @ Chosen case + .macro moveendcase case:req + setbyte sMOVEEND_STATE, \case + moveend 1, 0 + .endm + + @ All cases from (inclusive) + .macro moveendfrom from:req + setbyte sMOVEEND_STATE, \from + moveend 0, 0 .endm - .macro damagecalc2 + @ All cases from 0 to (not inclusive) + .macro moveendto to:req + setbyte sMOVEEND_STATE, 0 + moveend 2, \to + .endm + + @ Cases from (inclusive) to (not inclusive) + .macro moveendfromto from:req, to:req + setbyte sMOVEEND_STATE, \from + moveend 2, \to + .endm + + .macro typecalc2 .byte 0x4a .endm - .macro atk4b + .macro returnatktoball .byte 0x4b .endm - .macro switch1 bank + .macro getswitchedmondata battler:req .byte 0x4c - .byte \bank + .byte \battler .endm - .macro switch2 bank + .macro switchindataupdate battler:req .byte 0x4d - .byte \bank + .byte \battler .endm - .macro switch3 bank, byte + .macro switchinanim battler:req, dontclearsubstitutebit:req .byte 0x4e - .byte \bank - .byte \byte + .byte \battler + .byte \dontclearsubstitutebit .endm - .macro jumpifcannotswitch bank, address + .macro jumpifcantswitch battler:req, ptr:req .byte 0x4f - .byte \bank - .4byte \address + .byte \battler + .4byte \ptr .endm - .macro openpartyscreen bank, address + .macro openpartyscreen param0:req, param1:req .byte 0x50 - .byte \bank - .4byte \address + .byte \param0 + .4byte \param1 .endm - .macro atk51 bank, param2 + .macro switchhandleorder battler:req, param1:req .byte 0x51 - .byte \bank - .byte \param2 + .byte \battler + .byte \param1 .endm - .macro atk52 bank + .macro switchineffects battler:req .byte 0x52 - .byte \bank + .byte \battler .endm - .macro atk53 bank + .macro trainerslidein battler:req .byte 0x53 - .byte \bank + .byte \battler .endm - .macro atk54 word + .macro playse song:req .byte 0x54 - .2byte \word + .2byte \song .endm - .macro atk55 int + .macro fanfare song:req .byte 0x55 - .4byte \int + .2byte \song .endm - .macro atk56 bank_or_side + .macro playfaintcry battler:req .byte 0x56 - .byte \bank_or_side + .byte \battler .endm .macro atk57 .byte 0x57 .endm - .macro atk58 bank + .macro returntoball battler:req .byte 0x58 - .byte \bank + .byte \battler .endm - .macro checkiflearnmoveinbattle param1, param2, bank_maybe + .macro handlelearnnewmove param0:req, param1:req, param2:req .byte 0x59 + .4byte \param0 .4byte \param1 - .4byte \param2 - .byte \bank_maybe + .byte \param2 .endm - .macro atk5a address + .macro yesnoboxlearnmove param0:req .byte 0x5a - .4byte \address + .4byte \param0 .endm - .macro atk5b address + .macro yesnoboxstoplearningmove param0:req .byte 0x5b - .4byte \address + .4byte \param0 .endm - .macro atk5c bank + .macro hitanimation battler:req .byte 0x5c - .byte \bank + .byte \battler .endm - .macro atk5d + .macro getmoneyreward addr .byte 0x5d + .4byte \addr .endm - .macro atk5e bank + .macro atk5E battler:req .byte 0x5e - .byte \bank + .byte \battler .endm - .macro atk5f + .macro swapattackerwithtarget .byte 0x5f .endm - .macro atk60 byte + .macro incrementgamestat param0:req .byte 0x60 - .byte \byte + .byte \param0 .endm - .macro atk61 bank_or_side + .macro drawpartystatussummary battler:req .byte 0x61 - .byte \bank_or_side + .byte \battler .endm - .macro atk62_hidepartystatussummary bank_or_side + .macro hidepartystatussummary battler:req .byte 0x62 - .byte \bank_or_side + .byte \battler .endm - .macro jumptoattack bank + .macro jumptocalledmove param0:req .byte 0x63 - .byte \bank + .byte \param0 .endm - .macro statusanimation bank + .macro statusanimation battler:req .byte 0x64 - .byte \bank + .byte \battler .endm - .macro atk65 bank_or_side, address + .macro status2animation battler:req, status2:req .byte 0x65 - .byte \bank_or_side - .4byte \address + .byte \battler + .4byte \status2 .endm - .macro atk66 bank_or_side, bank_or_side2, address + .macro chosenstatusanimation battler:req, param1:req, param2:req .byte 0x66 - .byte \bank_or_side - .byte \bank_or_side2 - .4byte \address + .byte \battler + .byte \param1 + .4byte \param2 .endm - .macro atk67 + .macro yesnobox .byte 0x67 .endm - .macro atk68 + .macro cancelallactions .byte 0x68 .endm - .macro atk69 + .macro adjustsetdamage .byte 0x69 .endm - .macro removeitem bank + .macro removeitem battler:req .byte 0x6a - .byte \bank + .byte \battler .endm - .macro atk6b + .macro atknameinbuff1 .byte 0x6b .endm - .macro atk6c + .macro drawlvlupbox .byte 0x6c .endm - .macro atk6d + .macro resetsentmonsvalue .byte 0x6d .endm - .macro atk6e + .macro setatktoplayer0 .byte 0x6e .endm - .macro atk6f bank + .macro makevisible battler:req .byte 0x6f - .byte \bank + .byte \battler .endm - .macro atk70 bank + .macro recordlastability battler:req .byte 0x70 - .byte \bank + .byte \battler .endm - .macro atk71 + .macro buffermovetolearn .byte 0x71 .endm - .macro atk72 address + .macro jumpifplayerran ptr:req .byte 0x72 - .4byte \address + .4byte \ptr .endm - .macro atk73 bank + .macro hpthresholds battler:req .byte 0x73 - .byte \bank + .byte \battler .endm - .macro atk74 bank + .macro hpthresholds2 battler:req .byte 0x74 - .byte \bank + .byte \battler .endm - .macro atk75 + .macro useitemonopponent .byte 0x75 .endm - .macro atk76 bank, byte + .macro various battler:req, param1:req .byte 0x76 - .byte \bank - .byte \byte + .byte \battler + .byte \param1 .endm - .macro setprotect + .macro setprotectlike .byte 0x77 .endm @@ -646,22 +666,22 @@ .byte 0x78 .endm - .macro setuserhptozero + .macro setatkhptozero .byte 0x79 .endm - .macro jumpwhiletargetvalid address + .macro jumpifnexttargetvalid ptr:req .byte 0x7a - .4byte \address + .4byte \ptr .endm - .macro setdamageasrestorehalfmaxhp address, byte + .macro tryhealhalfhealth param0:req, battler:req .byte 0x7b - .4byte \address - .byte \byte + .4byte \param0 + .byte \battler .endm - .macro jumptolastusedattack + .macro trymirrormove .byte 0x7c .endm @@ -673,56 +693,56 @@ .byte 0x7e .endm - .macro setleechseed + .macro setseeded .byte 0x7f .endm - .macro manipulatedamage id + .macro manipulatedamage param0:req .byte 0x80 - .byte \id + .byte \param0 .endm - .macro setrest address + .macro trysetrest param0:req .byte 0x81 - .4byte \address + .4byte \param0 .endm - .macro jumpifnotfirstturn address + .macro jumpifnotfirstturn ptr:req .byte 0x82 - .4byte \address + .4byte \ptr .endm - .macro nop3 + .macro nop .byte 0x83 .endm - .macro jumpifcannotsleep address + .macro jumpifcantmakeasleep param0:req .byte 0x84 - .4byte \address + .4byte \param0 .endm .macro stockpile .byte 0x85 .endm - .macro stockpiletobasedamage address + .macro stockpiletobasedamage param0:req .byte 0x86 - .4byte \address + .4byte \param0 .endm - .macro stockpiletohprecovery address + .macro stockpiletohpheal param0:req .byte 0x87 - .4byte \address + .4byte \param0 .endm .macro negativedamage .byte 0x88 .endm - .macro statbuffchange target, address + .macro statbuffchange param0:req, param1:req .byte 0x89 - .byte \target - .4byte \address + .byte \param0 + .4byte \param1 .endm .macro normalisebuffs @@ -737,26 +757,26 @@ .byte 0x8c .endm - .macro setloopcounter count + .macro setmultihitcounter param0:req .byte 0x8d - .byte \count + .byte \param0 .endm - .macro atk8e + .macro initmultihitstring .byte 0x8e .endm - .macro forcerandomswitch address + .macro forcerandomswitch param0:req .byte 0x8f - .4byte \address + .4byte \param0 .endm - .macro changetypestoenemyattacktype address + .macro tryconversiontypechange param0:req .byte 0x90 - .4byte \address + .4byte \param0 .endm - .macro givemoney + .macro givepaydaymoney .byte 0x91 .endm @@ -764,12 +784,12 @@ .byte 0x92 .endm - .macro koplussomethings address + .macro tryKO param0:req .byte 0x93 - .4byte \address + .4byte \param0 .endm - .macro gethalfcurrentenemyhp + .macro damagetohalftargethp .byte 0x94 .endm @@ -781,21 +801,21 @@ .byte 0x96 .endm - .macro tryinfatuatetarget address + .macro tryinfatuating param0:req .byte 0x97 - .4byte \address + .4byte \param0 .endm - .macro atk98 byte + .macro updatestatusicon battler:req .byte 0x98 - .byte \byte + .byte \battler .endm - .macro setmisteffect + .macro setmist .byte 0x99 .endm - .macro setincreasedcriticalchance + .macro setfocusenergy .byte 0x9a .endm @@ -803,20 +823,20 @@ .byte 0x9b .endm - .macro setsubstituteeffect + .macro setsubstitute .byte 0x9c .endm - .macro copyattack address + .macro mimicattackcopy param0:req .byte 0x9d - .4byte \address + .4byte \param0 .endm - .macro metronomeeffect + .macro metronome .byte 0x9e .endm - .macro nightshadedamageeffect + .macro dmgtolevel .byte 0x9f .endm @@ -824,55 +844,55 @@ .byte 0xa0 .endm - .macro counterdamagecalculator address + .macro counterdamagecalculator param0:req .byte 0xa1 - .4byte \address + .4byte \param0 .endm - .macro mirrorcoatdamagecalculator address + .macro mirrorcoatdamagecalculator param0:req .byte 0xa2 - .4byte \address + .4byte \param0 .endm - .macro disablelastusedattack address + .macro disablelastusedattack param0:req .byte 0xa3 - .4byte \address + .4byte \param0 .endm - .macro setencore address + .macro trysetencore param0:req .byte 0xa4 - .4byte \address + .4byte \param0 .endm - .macro painsplitdamagecalculator address + .macro painsplitdmgcalc param0:req .byte 0xa5 - .4byte \address + .4byte \param0 .endm - .macro settypetorandomresistance address + .macro settypetorandomresistance param0:req .byte 0xa6 - .4byte \address + .4byte \param0 .endm .macro setalwayshitflag .byte 0xa7 .endm - .macro copymovepermanently address + .macro copymovepermanently param0:req .byte 0xa8 - .4byte \address + .4byte \param0 .endm - .macro selectrandommovefromusermoves address + .macro trychoosesleeptalkmove param0:req .byte 0xa9 - .4byte \address + .4byte \param0 .endm - .macro destinybondeffect + .macro setdestinybond .byte 0xaa .endm - .macro atkab + .macro trysetdestinybondtohappen .byte 0xab .endm @@ -880,45 +900,45 @@ .byte 0xac .endm - .macro reducepprandom address + .macro tryspiteppreduce param0:req .byte 0xad - .4byte \address + .4byte \param0 .endm - .macro clearstatusifnotsoundproofed + .macro healpartystatus .byte 0xae .endm - .macro cursetarget address + .macro cursetarget param0:req .byte 0xaf - .4byte \address + .4byte \param0 .endm - .macro setspikes address + .macro trysetspikes param0:req .byte 0xb0 - .4byte \address + .4byte \param0 .endm .macro setforesight .byte 0xb1 .endm - .macro setperishsong address + .macro trysetperishsong param0:req .byte 0xb2 - .4byte \address + .4byte \param0 .endm .macro rolloutdamagecalculation .byte 0xb3 .endm - .macro jumpifconfusedandattackmaxed bank, address + .macro jumpifconfusedandstatmaxed stat:req, ptr:req .byte 0xb4 - .byte \bank - .4byte \address + .byte \stat + .4byte \ptr .endm - .macro furycutterdamagecalculation + .macro furycuttercalc .byte 0xb5 .endm @@ -938,62 +958,62 @@ .byte 0xb9 .endm - .macro atkba address + .macro jumpifnopursuitswitchdmg param0:req .byte 0xba - .4byte \address + .4byte \param0 .endm .macro setsunny .byte 0xbb .endm - .macro maxattackhalvehp address + .macro maxattackhalvehp param0:req .byte 0xbc - .4byte \address + .4byte \param0 .endm - .macro copyfoestats address + .macro copyfoestats param0:req .byte 0xbd - .4byte \address + .4byte \param0 .endm - .macro breakfree + .macro rapidspinfree .byte 0xbe .endm - .macro setcurled + .macro setdefensecurlbit .byte 0xbf .endm - .macro recoverbasedonsunlight address + .macro recoverbasedonsunlight param0:req .byte 0xc0 - .4byte \address + .4byte \param0 .endm - .macro hiddenpowerdamagecalculation + .macro hiddenpowercalc .byte 0xc1 .endm - .macro selectnexttarget + .macro selectfirstvalidtarget .byte 0xc2 .endm - .macro setfutureattack address + .macro trysetfutureattack param0:req .byte 0xc3 - .4byte \address + .4byte \param0 .endm - .macro beatupcalculation address1, address2 + .macro trydobeatup param0:req, param1:req .byte 0xc4 - .4byte \address1 - .4byte \address2 + .4byte \param0 + .4byte \param1 .endm - .macro hidepreattack + .macro setsemiinvulnerablebit .byte 0xc5 .endm - .macro unhidepostattack + .macro clearsemiinvulnerablebit .byte 0xc6 .endm @@ -1005,9 +1025,9 @@ .byte 0xc8 .endm - .macro jumpifattackandspecialattackcannotfall address + .macro jumpifattackandspecialattackcannotfall ptr:req .byte 0xc9 - .4byte \address + .4byte \ptr .endm .macro setforcedtarget @@ -1022,207 +1042,332 @@ .byte 0xcc .endm - .macro cureifburnedparalysedorpoisoned address + .macro cureifburnedparalysedorpoisoned param0:req .byte 0xcd - .4byte \address + .4byte \param0 .endm - .macro settorment address + .macro settorment param0:req .byte 0xce - .4byte \address + .4byte \param0 .endm - .macro jumpifnodamage address + .macro jumpifnodamage param0:req .byte 0xcf - .4byte \address + .4byte \param0 .endm - .macro settaunt address + .macro settaunt param0:req .byte 0xd0 - .4byte \address + .4byte \param0 .endm - .macro sethelpinghand address + .macro trysethelpinghand param0:req .byte 0xd1 - .4byte \address + .4byte \param0 .endm - .macro itemswap address + .macro tryswapitems param0:req .byte 0xd2 - .4byte \address + .4byte \param0 .endm - .macro copyability address + .macro trycopyability param0:req .byte 0xd3 - .4byte \address + .4byte \param0 .endm - .macro atkd4 byte, address + .macro trywish param0:req, param1:req .byte 0xd4 - .byte \byte - .4byte \address + .byte \param0 + .4byte \param1 .endm - .macro setroots address + .macro trysetroots param0:req .byte 0xd5 - .4byte \address + .4byte \param0 .endm .macro doubledamagedealtifdamaged .byte 0xd6 .endm - .macro setyawn address + .macro setyawn param0:req .byte 0xd7 - .4byte \address + .4byte \param0 .endm - .macro setdamagetohealthdifference address + .macro setdamagetohealthdifference param0:req .byte 0xd8 - .4byte \address + .4byte \param0 .endm .macro scaledamagebyhealthratio .byte 0xd9 .endm - .macro abilityswap address + .macro tryswapabilities param0:req .byte 0xda - .4byte \address + .4byte \param0 .endm - .macro imprisoneffect address + .macro tryimprison param0:req .byte 0xdb - .4byte \address + .4byte \param0 .endm - .macro setgrudge address + .macro trysetgrudge param0:req .byte 0xdc - .4byte \address + .4byte \param0 .endm .macro weightdamagecalculation .byte 0xdd .endm - .macro assistattackselect address + .macro assistattackselect param0:req .byte 0xde - .4byte \address + .4byte \param0 .endm - .macro setmagiccoat address + .macro trysetmagiccoat param0:req .byte 0xdf - .4byte \address + .4byte \param0 .endm - .macro setstealstatchange address + .macro trysetsnatch param0:req .byte 0xe0 - .4byte \address + .4byte \param0 .endm - .macro atke1 address + .macro trygetintimidatetarget param0:req .byte 0xe1 - .4byte \address + .4byte \param0 .endm - .macro atke2 bank + .macro switchoutabilities battler:req .byte 0xe2 - .byte \bank + .byte \battler .endm - .macro jumpiffainted bank, address + .macro jumpifhasnohp battler:req, param1:req .byte 0xe3 - .byte \bank - .4byte \address + .byte \battler + .4byte \param1 .endm - .macro naturepowereffect + .macro getsecretpowereffect .byte 0xe4 .endm - .macro pickupitemcalculation + .macro pickup .byte 0xe5 .endm - .macro actualcastformswitch + .macro docastformchangeanimation .byte 0xe6 .endm - .macro castformswitch + .macro trycastformdatachange .byte 0xe7 .endm - .macro settypebasedhalvers address + .macro settypebasedhalvers param0:req .byte 0xe8 - .4byte \address + .4byte \param0 .endm - .macro seteffectbyweather + .macro setweatherballtype .byte 0xe9 .endm - .macro recycleitem address + .macro tryrecycleitem param0:req .byte 0xea - .4byte \address + .4byte \param0 .endm - .macro settypetoterrain address + .macro settypetoterrain param0:req .byte 0xeb - .4byte \address + .4byte \param0 .endm - .macro pursuitwhenswitched address + .macro pursuitrelated param0:req .byte 0xec - .4byte \address + .4byte \param0 .endm - .macro snatchmove + .macro snatchsetbattlers .byte 0xed .endm - .macro removereflectlightscreen + .macro removelightscreenreflect .byte 0xee .endm - .macro pokemoncatchfunction + .macro handleballthrow .byte 0xef .endm - .macro catchpoke + .macro givecaughtmon .byte 0xf0 .endm - .macro capturesomethingf1 address + .macro trysetcaughtmondexflags param0:req .byte 0xf1 - .4byte \address + .4byte \param0 .endm - .macro capturesomethingf2 + .macro displaydexinfo .byte 0xf2 .endm - .macro capturesomethingf3 address + .macro trygivecaughtmonnick param0:req .byte 0xf3 - .4byte \address + .4byte \param0 .endm - .macro removehp + .macro subattackerhpbydmg .byte 0xf4 .endm - .macro curestatusfirstword + .macro removeattackerstatus1 .byte 0xf5 .endm - .macro atkf6 + .macro finishaction .byte 0xf6 .endm - .macro activesidesomething + .macro finishturn .byte 0xf7 .endm - .macro atkf8 bank - .byte 0xf8 - .byte \bank +@ various command changed to more readable macros + .macro cancelmultiturnmoves battler:req + various \battler, VARIOUS_CANCEL_MULTI_TURN_MOVES + .endm + + .macro setmagiccoattarget battler:req + various \battler, VARIOUS_SET_MAGIC_COAT_TARGET + .endm + + .macro getifcantrunfrombattle battler:req + various \battler, VARIOUS_IS_RUNNING_IMPOSSIBLE + .endm + + .macro getmovetarget battler:req + various \battler, VARIOUS_GET_MOVE_TARGET + .endm + + .macro various4 battler:req + various \battler, 4 + .endm + + .macro resetintimidatetracebits battler:req + various \battler, VARIOUS_RESET_INTIMIDATE_TRACE_BITS + .endm + + .macro updatechoicemoveonlvlup battler:req + various \battler, VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP + .endm + + .macro various7 battler:req + various \battler, 7 + .endm + + .macro various8 battler:req + various \battler, 8 + .endm + + .macro returnopponentmon1toball battler:req + various \battler, VARIOUS_RETURN_OPPONENT_MON1 + .endm + + .macro returnopponentmon2toball battler:req + various \battler, VARIOUS_RETURN_OPPONENT_MON2 + .endm + + .macro checkpokeflute battler:req + various \battler, 11 + .endm + + .macro waitfanfare battler:req + various \battler, 12 + .endm + +@ helpful macros + .macro setstatchanger stat:req, stages:req, down:req + setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7 + .endm + + .macro setmoveeffect effect:req + setbyte cEFFECT_CHOOSER \effect + .endm + + .macro chosenstatus1animation battler:req, status:req + chosenstatusanimation \battler 0x0 \status + .endm + + .macro chosenstatus2animation battler:req, status:req + chosenstatusanimation \battler 0x1 \status + .endm + + .macro sethword dst:req, value:req + setbyte \dst, (\value) & 0xFF + setbyte \dst + 1, ((\value) >> 8) & 0xFF + .endm + + .macro setword dst:req, value:req + 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:req, src:req + copyarray \dst, \src, 0x1 + .endm + + .macro copyhword dst:req, src:req + copyarray \dst, \src, 0x2 + .endm + + .macro copyword dst:req, src:req + copyarray \dst, \src, 0x4 + .endm + + .macro jumpifbytenotequal byte1:req, byte2:req, jumpptr:req + jumpifarraynotequal \byte1, \byte2, 0x1, \jumpptr + .endm + + .macro jumpifbyteequal byte1:req, byte2:req, jumpptr:req + jumpifarrayequal \byte1, \byte2, 0x1, \jumpptr + .endm + + .macro jumpifmove move:req, jumpptr:req + jumpifhalfword CMP_EQUAL, gCurrentMove, \move, \jumpptr + .endm + + .macro jumpifnotmove move:req, jumpptr:req + jumpifhalfword CMP_NOT_EQUAL, gCurrentMove, \move, \jumpptr + .endm + + .macro jumpifstatus3 battler:req, status:req, jumpptr:req + jumpifstatus3condition \battler, \status, 0x0, \jumpptr + .endm + + .macro jumpifnostatus3 battler:req, status:req, jumpptr:req + jumpifstatus3condition \battler, \status, 0x1, \jumpptr + .endm + + .macro jumpifmovehadnoeffect jumpptr:req + jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_NO_EFFECT, \jumpptr + .endm + + .macro jumpifbattletype flags:req, jumpptr:req + jumpifword CMP_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr + .endm + + .macro jumpifnotbattletype flags:req, jumpptr:req + jumpifword CMP_NO_COMMON_BITS, gBattleTypeFlags, \flags, \jumpptr .endm diff --git a/baserom.ips b/baserom.ips Binary files differindex d8b086947..2b8ba6bea 100644 --- a/baserom.ips +++ b/baserom.ips diff --git a/constants/battle.inc b/constants/battle.inc index 744399469..d3a7c6d58 100644 --- a/constants/battle.inc +++ b/constants/battle.inc @@ -71,7 +71,7 @@ .equiv B_ANIM_STATS_CHANGE, 0x1 .equiv B_ANIM_SUBSTITUTE_FADE, 0x2 .equiv B_ANIM_SUBSTITUTE_APPEAR, 0x3 -.equiv B_ANIM_POKEBLOCK_THROW, 0x4 +.equiv B_ANIM_BAIT_THROW, 0x4 .equiv B_ANIM_ITEM_KNOCKOFF, 0x5 .equiv B_ANIM_TURN_TRAP, 0x6 .equiv B_ANIM_ITEM_EFFECT, 0x7 diff --git a/data/battle_anim.s b/data/battle_anim.s index c166708a2..472ea2710 100644 --- a/data/battle_anim.s +++ b/data/battle_anim.s @@ -1,3 +1,5 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" .section .rodata .align 2 gOamData_83AC9C8:: @@ -217,28 +219,673 @@ gOamData_83ACC00:: .4byte 0xc0008700, 0x00000800 gUnknown_83ACC08:: @ 83ACC08 - .incbin "baserom.gba", 0x3ACC08, 0x440 + obj_tiles gFile_graphics_battle_anims_sprites_000_sheet, 0x0200, 10000 + obj_tiles gFile_graphics_battle_anims_sprites_001_sheet, 0x0300, 10001 + obj_tiles gFile_graphics_battle_anims_sprites_002_sheet, 0x0200, 10002 + obj_tiles gFile_graphics_battle_anims_sprites_003_sheet, 0x0100, 10003 + obj_tiles gFile_graphics_battle_anims_sprites_004_sheet, 0x0200, 10004 + obj_tiles gFile_graphics_battle_anims_sprites_005_sheet, 0x0400, 10005 + obj_tiles gFile_graphics_battle_anims_sprites_006_sheet, 0x0180, 10006 + obj_tiles gFile_graphics_battle_anims_sprites_007_sheet, 0x0800, 10007 + obj_tiles gFile_graphics_battle_anims_sprites_008_sheet, 0x0020, 10008 + obj_tiles gFile_graphics_battle_anims_sprites_009_sheet, 0x0400, 10009 + obj_tiles gFile_graphics_battle_anims_sprites_010_sheet, 0x1200, 10010 + obj_tiles gFile_graphics_battle_anims_sprites_011_sheet, 0x0180, 10011 + obj_tiles gFile_graphics_battle_anims_sprites_012_sheet, 0x0080, 10012 + obj_tiles gFile_graphics_battle_anims_sprites_013_sheet, 0x0080, 10013 + obj_tiles gFile_graphics_battle_anims_sprites_014_sheet, 0x0280, 10014 + obj_tiles gFile_graphics_battle_anims_sprites_015_sheet, 0x0080, 10015 + obj_tiles gFile_graphics_battle_anims_sprites_016_sheet, 0x0100, 10016 + obj_tiles gFile_graphics_battle_anims_sprites_017_sheet, 0x0020, 10017 + obj_tiles gFile_graphics_battle_anims_sprites_018_sheet, 0x0080, 10018 + obj_tiles gFile_graphics_battle_anims_sprites_019_sheet, 0x0400, 10019 + obj_tiles gFile_graphics_battle_anims_sprites_020_sheet, 0x0200, 10020 + obj_tiles gFile_graphics_battle_anims_sprites_021_sheet, 0x0a00, 10021 + obj_tiles gFile_graphics_battle_anims_sprites_021_sheet, 0x0a00, 10022 + obj_tiles gFile_graphics_battle_anims_sprites_023_sheet, 0x0380, 10023 + obj_tiles gFile_graphics_battle_anims_sprites_024_sheet, 0x0300, 10024 + obj_tiles gFile_graphics_battle_anims_sprites_025_sheet, 0x0a00, 10025 + obj_tiles gFile_graphics_battle_anims_sprites_026_sheet, 0x0a00, 10026 + obj_tiles gFile_graphics_battle_anims_sprites_027_sheet, 0x0a00, 10027 + obj_tiles gFile_graphics_battle_anims_sprites_028_sheet, 0x0a00, 10028 + obj_tiles gFile_graphics_battle_anims_sprites_029_sheet, 0x0a00, 10029 + obj_tiles gFile_graphics_battle_anims_sprites_030_sheet, 0x0a00, 10030 + obj_tiles gFile_graphics_battle_anims_sprites_031_sheet, 0x0e00, 10031 + obj_tiles gFile_graphics_battle_anims_sprites_032_sheet, 0x0380, 10032 + obj_tiles gFile_graphics_battle_anims_sprites_033_sheet, 0x1000, 10033 + obj_tiles gFile_graphics_battle_anims_sprites_034_sheet, 0x0800, 10034 + obj_tiles gFile_graphics_battle_anims_sprites_035_sheet, 0x0a00, 10035 + obj_tiles gFile_graphics_battle_anims_sprites_036_sheet, 0x0800, 10036 + obj_tiles gFile_graphics_battle_anims_sprites_037_sheet, 0x0a00, 10037 + obj_tiles gFile_graphics_battle_anims_sprites_038_sheet, 0x0a00, 10038 + obj_tiles gFile_graphics_battle_anims_sprites_039_sheet, 0x0a00, 10039 + obj_tiles gFile_graphics_battle_anims_sprites_040_sheet, 0x0a00, 10040 + obj_tiles gFile_graphics_battle_anims_sprites_041_sheet, 0x0a00, 10041 + obj_tiles gFile_graphics_battle_anims_sprites_042_sheet, 0x0a00, 10042 + obj_tiles gFile_graphics_battle_anims_sprites_043_sheet, 0x0a00, 10043 + obj_tiles gFile_graphics_battle_anims_sprites_044_sheet, 0x0a00, 10044 + obj_tiles gFile_graphics_battle_anims_sprites_045_sheet, 0x0a00, 10045 + obj_tiles gFile_graphics_battle_anims_sprites_046, 0x1000, 10046 + obj_tiles gFile_graphics_battle_anims_sprites_046, 0x1000, 10047 + obj_tiles gFile_graphics_battle_anims_sprites_048_sheet, 0x1000, 10048 + obj_tiles gFile_graphics_battle_anims_sprites_048_sheet, 0x1000, 10049 + obj_tiles gFile_graphics_battle_anims_sprites_050_sheet, 0x0200, 10050 + obj_tiles gFile_graphics_battle_anims_sprites_051_sheet, 0x0200, 10051 + obj_tiles gFile_graphics_battle_anims_sprites_052_sheet, 0x0200, 10052 + obj_tiles gFile_graphics_battle_anims_sprites_053_sheet, 0x0800, 10053 + obj_tiles gFile_graphics_battle_anims_sprites_054_sheet, 0x0080, 10054 + obj_tiles gFile_graphics_battle_anims_sprites_055_sheet, 0x0200, 10055 + obj_tiles gFile_graphics_battle_anims_sprites_056_sheet, 0x1000, 10056 + obj_tiles gFile_graphics_battle_anims_sprites_057_sheet, 0x0180, 10057 + obj_tiles gFile_graphics_battle_anims_sprites_058_sheet, 0x0c00, 10058 + obj_tiles gFile_graphics_battle_anims_sprites_059_sheet, 0x0100, 10059 + obj_tiles gFile_graphics_battle_anims_sprites_060_sheet, 0x0040, 10060 + obj_tiles gFile_graphics_battle_anims_sprites_061_sheet, 0x0180, 10061 + obj_tiles gFile_graphics_battle_anims_sprites_062_sheet, 0x0800, 10062 + obj_tiles gFile_graphics_battle_anims_sprites_063_sheet, 0x0480, 10063 + obj_tiles gFile_graphics_battle_anims_sprites_064_sheet, 0x0200, 10064 + obj_tiles gFile_graphics_battle_anims_sprites_065_sheet, 0x0200, 10065 + obj_tiles gFile_graphics_battle_anims_sprites_066_sheet, 0x0100, 10066 + obj_tiles gFile_graphics_battle_anims_sprites_065_sheet, 0x0200, 10067 + obj_tiles gFile_graphics_battle_anims_sprites_065_sheet, 0x0200, 10068 + obj_tiles gFile_graphics_battle_anims_sprites_065_sheet, 0x0200, 10069 + obj_tiles gFile_graphics_battle_anims_sprites_070_sheet, 0x0200, 10070 + obj_tiles gFile_graphics_battle_anims_sprites_071_sheet, 0x0a00, 10071 + obj_tiles gFile_graphics_battle_anims_sprites_072_sheet, 0x0300, 10072 + obj_tiles gFile_graphics_battle_anims_sprites_073_sheet, 0x0180, 10073 + obj_tiles gFile_graphics_battle_anims_sprites_074_sheet, 0x00a0, 10074 + obj_tiles gFile_graphics_battle_anims_sprites_075_sheet, 0x0700, 10075 + obj_tiles gFile_graphics_battle_anims_sprites_076_sheet, 0x0400, 10076 + obj_tiles gFile_graphics_battle_anims_sprites_077_sheet, 0x0200, 10077 + obj_tiles gFile_graphics_battle_anims_sprites_078_sheet, 0x0300, 10078 + obj_tiles gFile_graphics_battle_anims_sprites_079_sheet, 0x0c00, 10079 + obj_tiles gFile_graphics_battle_anims_sprites_080_sheet, 0x0a00, 10080 + obj_tiles gFile_graphics_battle_anims_sprites_081_sheet, 0x0080, 10081 + obj_tiles gFile_graphics_battle_anims_sprites_082_sheet, 0x0040, 10082 + obj_tiles gFile_graphics_battle_anims_sprites_083_sheet, 0x0e00, 10083 + obj_tiles gFile_graphics_battle_anims_sprites_084_sheet, 0x0e00, 10084 + obj_tiles gFile_graphics_battle_anims_sprites_085_sheet, 0x0280, 10085 + obj_tiles gFile_graphics_battle_anims_sprites_086_sheet, 0x0200, 10086 + obj_tiles gFile_graphics_battle_anims_sprites_087_sheet, 0x0080, 10087 + obj_tiles gFile_graphics_battle_anims_sprites_088_sheet, 0x00c0, 10088 + obj_tiles gFile_graphics_battle_anims_sprites_089_sheet, 0x0a00, 10089 + obj_tiles gFile_graphics_battle_anims_sprites_090_sheet, 0x0200, 10090 + obj_tiles gFile_graphics_battle_anims_sprites_091_sheet, 0x0180, 10091 + obj_tiles gFile_graphics_battle_anims_sprites_092_sheet, 0x0080, 10092 + obj_tiles gFile_graphics_battle_anims_sprites_093_sheet, 0x1000, 10093 + obj_tiles gFile_graphics_battle_anims_sprites_094_sheet, 0x0a00, 10094 + obj_tiles gFile_graphics_battle_anims_sprites_095_sheet, 0x0180, 10095 + obj_tiles gFile_graphics_battle_anims_sprites_096_sheet, 0x0380, 10096 + obj_tiles gFile_graphics_battle_anims_sprites_097_sheet, 0x0c00, 10097 + obj_tiles gFile_graphics_battle_anims_sprites_098_sheet, 0x0200, 10098 + obj_tiles gFile_graphics_battle_anims_sprites_099_sheet, 0x0200, 10099 + obj_tiles gFile_graphics_battle_anims_sprites_100_sheet, 0x0200, 10100 + obj_tiles gFile_graphics_battle_anims_sprites_101_sheet, 0x0200, 10101 + obj_tiles gFile_graphics_battle_anims_sprites_102_sheet, 0x0400, 10102 + obj_tiles gFile_graphics_battle_anims_sprites_103_sheet, 0x0080, 10103 + obj_tiles gFile_graphics_battle_anims_sprites_104_sheet, 0x0400, 10104 + obj_tiles gFile_graphics_battle_anims_sprites_105_sheet, 0x0c00, 10105 + obj_tiles gFile_graphics_battle_anims_sprites_106_sheet, 0x0200, 10106 + obj_tiles gFile_graphics_battle_anims_sprites_107_sheet, 0x1000, 10107 + obj_tiles gFile_graphics_battle_anims_sprites_108_sheet, 0x0a00, 10108 + obj_tiles gFile_graphics_battle_anims_sprites_109_sheet, 0x0020, 10109 + obj_tiles gFile_graphics_battle_anims_sprites_110_sheet, 0x0e00, 10110 + obj_tiles gFile_graphics_battle_anims_sprites_111_sheet, 0x0080, 10111 + obj_tiles gFile_graphics_battle_anims_sprites_112_sheet, 0x0a00, 10112 + obj_tiles gFile_graphics_battle_anims_sprites_113_sheet, 0x0400, 10113 + obj_tiles gFile_graphics_battle_anims_sprites_114_sheet, 0x0200, 10114 + obj_tiles gFile_graphics_battle_anims_sprites_115_sheet, 0x0700, 10115 + obj_tiles gFile_graphics_battle_anims_sprites_116_sheet, 0x0800, 10116 + obj_tiles gFile_graphics_battle_anims_sprites_117_sheet, 0x0a00, 10117 + obj_tiles gFile_graphics_battle_anims_sprites_118_sheet, 0x0600, 10118 + obj_tiles gFile_graphics_battle_anims_sprites_119_sheet, 0x0800, 10119 + obj_tiles gFile_graphics_battle_anims_sprites_120_sheet, 0x0200, 10120 + obj_tiles gFile_graphics_battle_anims_sprites_121_sheet, 0x0040, 10121 + obj_tiles gFile_graphics_battle_anims_sprites_122_sheet, 0x0180, 10122 + obj_tiles gFile_graphics_battle_anims_sprites_123_sheet, 0x0600, 10123 + obj_tiles gFile_graphics_battle_anims_sprites_124_sheet, 0x0600, 10124 + obj_tiles gFile_graphics_battle_anims_sprites_125_sheet, 0x0200, 10125 + obj_tiles gFile_graphics_battle_anims_sprites_126_sheet, 0x0080, 10126 + obj_tiles gFile_graphics_battle_anims_sprites_127_sheet, 0x0200, 10127 + obj_tiles gFile_graphics_battle_anims_sprites_128_sheet, 0x0800, 10128 + obj_tiles gFile_graphics_battle_anims_sprites_129_sheet, 0x0080, 10129 + obj_tiles gFile_graphics_battle_anims_sprites_130_sheet, 0x0a00, 10130 + obj_tiles gFile_graphics_battle_anims_sprites_131_sheet, 0x0280, 10131 + obj_tiles gFile_graphics_battle_anims_sprites_132_sheet, 0x0280, 10132 + obj_tiles gFile_graphics_battle_anims_sprites_133_sheet, 0x0100, 10133 + obj_tiles gFile_graphics_battle_anims_sprites_134_sheet, 0x0200, 10134 + obj_tiles gFile_graphics_battle_anims_sprites_135_sheet, 0x0200, 10135 gUnknown_83AD048:: @ 83AD048 - .incbin "baserom.gba", 0x3AD048, 0x308 + obj_tiles gFile_graphics_battle_anims_sprites_136_sheet, 0x0020, 10136 + obj_tiles gFile_graphics_battle_anims_sprites_137_sheet, 0x0a00, 10137 + obj_tiles gFile_graphics_battle_anims_sprites_138_sheet, 0x0800, 10138 + obj_tiles gFile_graphics_battle_anims_sprites_139_sheet, 0x0800, 10139 + obj_tiles gFile_graphics_battle_anims_sprites_140_sheet, 0x00c0, 10140 + obj_tiles gFile_graphics_battle_anims_sprites_141_sheet, 0x01c0, 10141 + obj_tiles gFile_graphics_battle_anims_sprites_142_sheet, 0x0100, 10142 + obj_tiles gFile_graphics_battle_anims_sprites_143_sheet, 0x0800, 10143 + obj_tiles gFile_graphics_battle_anims_sprites_144_sheet, 0x0200, 10144 + obj_tiles gFile_graphics_battle_anims_sprites_145_sheet, 0x0800, 10145 + obj_tiles gFile_graphics_battle_anims_sprites_146_sheet, 0x0180, 10146 + obj_tiles gFile_graphics_battle_anims_sprites_147_sheet, 0x0180, 10147 + obj_tiles gFile_graphics_battle_anims_sprites_148_sheet, 0x0200, 10148 + obj_tiles gFile_graphics_battle_anims_sprites_149_sheet, 0x0200, 10149 + obj_tiles gFile_graphics_battle_anims_sprites_150_sheet, 0x0180, 10150 + obj_tiles gFile_graphics_battle_anims_sprites_151_sheet, 0x0400, 10151 + obj_tiles gFile_graphics_battle_anims_sprites_152_sheet, 0x0080, 10152 + obj_tiles gFile_graphics_battle_anims_sprites_153_sheet, 0x0100, 10153 + obj_tiles gFile_graphics_battle_anims_sprites_154_sheet, 0x0100, 10154 + obj_tiles gFile_graphics_battle_anims_sprites_155_sheet, 0x0140, 10155 + obj_tiles gFile_graphics_battle_anims_sprites_156_sheet, 0x0800, 10156 + obj_tiles gFile_graphics_battle_anims_sprites_157_sheet, 0x0200, 10157 + obj_tiles gFile_graphics_battle_anims_sprites_158_sheet, 0x0100, 10158 + obj_tiles gFile_graphics_battle_anims_sprites_159_sheet, 0x00a0, 10159 + obj_tiles gFile_graphics_battle_anims_sprites_160_sheet, 0x0100, 10160 + obj_tiles gFile_graphics_battle_anims_sprites_161_sheet, 0x0080, 10161 + obj_tiles gFile_graphics_battle_anims_sprites_162_sheet, 0x0300, 10162 + obj_tiles gFile_graphics_battle_anims_sprites_163_sheet, 0x0100, 10163 + obj_tiles gFile_graphics_battle_anims_sprites_163_sheet, 0x0100, 10164 + obj_tiles gFile_graphics_battle_anims_sprites_163_sheet, 0x0100, 10165 + obj_tiles gFile_graphics_battle_anims_sprites_166_sheet, 0x0800, 10166 + obj_tiles gFile_graphics_battle_anims_sprites_166_sheet, 0x0800, 10167 + obj_tiles gFile_graphics_battle_anims_sprites_166_sheet, 0x0800, 10168 + obj_tiles gFile_graphics_battle_anims_sprites_166_sheet, 0x0800, 10169 + obj_tiles gFile_graphics_battle_anims_sprites_166_sheet, 0x0800, 10170 + obj_tiles gFile_graphics_battle_anims_sprites_171_sheet, 0x0080, 10171 + obj_tiles gFile_graphics_battle_anims_sprites_144_sheet, 0x0200, 10172 + obj_tiles gFile_graphics_battle_anims_sprites_173_sheet, 0x0200, 10173 + obj_tiles gFile_graphics_battle_anims_sprites_174_sheet, 0x0200, 10174 + obj_tiles gFile_graphics_battle_anims_sprites_175_sheet, 0x0080, 10175 + obj_tiles gFile_graphics_battle_anims_sprites_176_sheet, 0x0200, 10176 + obj_tiles gFile_graphics_battle_anims_sprites_177_sheet, 0x0500, 10177 + obj_tiles gFile_graphics_battle_anims_sprites_178_sheet, 0x0800, 10178 + obj_tiles gFile_graphics_battle_anims_sprites_179_sheet, 0x0400, 10179 + obj_tiles gFile_graphics_battle_anims_sprites_180_sheet, 0x0020, 10180 + obj_tiles gFile_graphics_battle_anims_sprites_181_sheet, 0x0800, 10181 + obj_tiles gFile_graphics_battle_anims_sprites_182_sheet, 0x0100, 10182 + obj_tiles gFile_graphics_battle_anims_sprites_183_sheet, 0x0800, 10183 + obj_tiles gFile_graphics_battle_anims_sprites_184_sheet, 0x0400, 10184 + obj_tiles gFile_graphics_battle_anims_sprites_185_sheet, 0x0a00, 10185 + obj_tiles gFile_graphics_battle_anims_sprites_186_sheet, 0x1000, 10186 + obj_tiles gFile_graphics_battle_anims_sprites_187_sheet, 0x0800, 10187 + obj_tiles gFile_graphics_battle_anims_sprites_188_sheet, 0x0400, 10188 + obj_tiles gFile_graphics_battle_anims_sprites_189_sheet, 0x0200, 10189 + obj_tiles gFile_graphics_battle_anims_sprites_190_sheet, 0x0800, 10190 + obj_tiles gFile_graphics_battle_anims_sprites_191_sheet, 0x0800, 10191 + obj_tiles gFile_graphics_battle_anims_sprites_192_sheet, 0x0800, 10192 + obj_tiles gFile_graphics_battle_anims_sprites_193_sheet, 0x0200, 10193 + obj_tiles gFile_graphics_battle_anims_sprites_194_sheet, 0x0800, 10194 + obj_tiles gFile_graphics_battle_anims_sprites_195_sheet, 0x0200, 10195 + obj_tiles gFile_graphics_battle_anims_sprites_196_sheet, 0x0800, 10196 + obj_tiles gFile_graphics_battle_anims_sprites_197_sheet, 0x0200, 10197 + obj_tiles gFile_graphics_battle_anims_sprites_198_sheet, 0x0800, 10198 + obj_tiles gFile_graphics_battle_anims_sprites_199_sheet, 0x0400, 10199 + obj_tiles gFile_graphics_battle_anims_sprites_200_sheet, 0x0200, 10200 + obj_tiles gFile_graphics_battle_anims_sprites_201_sheet, 0x0a80, 10201 + obj_tiles gFile_graphics_battle_anims_sprites_202_sheet, 0x0600, 10202 + obj_tiles gFile_graphics_battle_anims_sprites_203_sheet, 0x0800, 10203 + obj_tiles gFile_graphics_battle_anims_sprites_204_sheet, 0x0200, 10204 + obj_tiles gFile_graphics_battle_anims_sprites_205_sheet, 0x0600, 10205 + obj_tiles gFile_graphics_battle_anims_sprites_206_sheet, 0x0800, 10206 + obj_tiles gFile_graphics_battle_anims_sprites_207_sheet, 0x0180, 10207 + obj_tiles gFile_graphics_battle_anims_sprites_208_sheet, 0x0800, 10208 + obj_tiles gFile_graphics_battle_anims_sprites_209_sheet, 0x0800, 10209 + obj_tiles gFile_graphics_battle_anims_sprites_210_sheet, 0x0080, 10210 + obj_tiles gFile_graphics_battle_anims_sprites_211_sheet, 0x0080, 10211 + obj_tiles gFile_graphics_battle_anims_sprites_212_sheet, 0x0800, 10212 + obj_tiles gFile_graphics_battle_anims_sprites_213_sheet, 0x0800, 10213 + obj_tiles gFile_graphics_battle_anims_sprites_214_sheet, 0x0600, 10214 + obj_tiles gFile_graphics_battle_anims_sprites_215_sheet, 0x0600, 10215 + obj_tiles gFile_graphics_battle_anims_sprites_210_sheet, 0x0080, 10216 + obj_tiles gFile_graphics_battle_anims_sprites_217_sheet, 0x0080, 10217 + obj_tiles gFile_graphics_battle_anims_sprites_218_sheet, 0x0180, 10218 + obj_tiles gFile_graphics_battle_anims_sprites_210_sheet, 0x0080, 10219 + obj_tiles gFile_graphics_battle_anims_sprites_220_sheet, 0x0200, 10220 + obj_tiles gFile_graphics_battle_anims_sprites_221_sheet, 0x0400, 10221 + obj_tiles gFile_graphics_battle_anims_sprites_222_sheet, 0x0a00, 10222 + obj_tiles gFile_graphics_battle_anims_sprites_223_sheet, 0x0800, 10223 + obj_tiles gFile_graphics_battle_anims_sprites_224_sheet, 0x0200, 10224 + obj_tiles gFile_graphics_battle_anims_sprites_225_sheet, 0x0400, 10225 + obj_tiles gFile_graphics_battle_anims_sprites_226_sheet, 0x0080, 10226 + obj_tiles gFile_graphics_battle_anims_sprites_227_sheet, 0x0800, 10227 + obj_tiles gFile_graphics_battle_anims_sprites_228_sheet, 0x0200, 10228 + obj_tiles gFile_graphics_battle_anims_sprites_229_sheet, 0x0300, 10229 + obj_tiles gFile_graphics_battle_anims_sprites_230_sheet, 0x0800, 10230 + obj_tiles gFile_graphics_battle_anims_sprites_231_sheet, 0x0380, 10231 + obj_tiles gFile_graphics_battle_anims_sprites_232_sheet, 0x0800, 10232 gUnknown_83AD350:: @ 83AD350 - .incbin "baserom.gba", 0x3AD350, 0x120 + obj_tiles gFile_graphics_battle_anims_sprites_233_sheet, 0x00c0, 10233 + obj_tiles gFile_graphics_battle_anims_sprites_234_sheet, 0x0800, 10234 + obj_tiles gFile_graphics_battle_anims_sprites_235_sheet, 0x0060, 10235 + obj_tiles gFile_graphics_battle_anims_sprites_235_sheet, 0x0060, 10236 + obj_tiles gFile_graphics_battle_anims_sprites_235_sheet, 0x0060, 10237 + obj_tiles gFile_graphics_battle_anims_sprites_238_sheet, 0x0080, 10238 + obj_tiles gFile_graphics_battle_anims_sprites_239_sheet, 0x0180, 10239 + obj_tiles gFile_graphics_battle_anims_sprites_240_sheet, 0x0180, 10240 + obj_tiles gFile_graphics_battle_anims_sprites_241_sheet, 0x0200, 10241 + obj_tiles gFile_graphics_battle_anims_sprites_242_sheet, 0x0200, 10242 + obj_tiles gFile_graphics_battle_anims_sprites_243_sheet, 0x0020, 10243 + obj_tiles gFile_graphics_battle_anims_sprites_244_sheet, 0x0400, 10244 + obj_tiles gFile_graphics_battle_anims_sprites_245_sheet, 0x0600, 10245 + obj_tiles gFile_graphics_battle_anims_sprites_246_sheet, 0x1000, 10246 + obj_tiles gFile_graphics_battle_anims_sprites_247_sheet, 0x0400, 10247 + obj_tiles gFile_graphics_battle_anims_sprites_248_sheet, 0x0020, 10248 + obj_tiles gFile_graphics_battle_anims_sprites_249_sheet, 0x0080, 10249 + obj_tiles gFile_graphics_battle_anims_sprites_250_sheet, 0x0800, 10250 + obj_tiles gFile_graphics_battle_anims_sprites_251_sheet, 0x0080, 10251 + obj_tiles gFile_graphics_battle_anims_sprites_252_sheet, 0x0200, 10252 + obj_tiles gFile_graphics_battle_anims_sprites_253_sheet, 0x0400, 10253 + obj_tiles gFile_graphics_battle_anims_sprites_254_sheet, 0x0200, 10254 + obj_tiles gFile_graphics_battle_anims_sprites_255_sheet, 0x0200, 10255 + obj_tiles gFile_graphics_battle_anims_sprites_256_sheet, 0x0800, 10256 + obj_tiles gFile_graphics_battle_anims_sprites_257_sheet, 0x0280, 10257 + obj_tiles gFile_graphics_battle_anims_sprites_258_sheet, 0x0200, 10258 + obj_tiles gFile_graphics_battle_anims_sprites_149_sheet, 0x0200, 10259 + obj_tiles gFile_graphics_battle_anims_sprites_260_sheet, 0x0400, 10260 + obj_tiles gFile_graphics_battle_anims_sprites_261_sheet, 0x0200, 10261 + obj_tiles gFile_graphics_battle_anims_sprites_262_sheet, 0x0200, 10262 + obj_tiles gFile_graphics_battle_anims_sprites_263_sheet, 0x0080, 10263 + obj_tiles gFile_graphics_battle_anims_sprites_264_sheet, 0x0020, 10264 + obj_tiles gFile_graphics_battle_anims_sprites_264_sheet, 0x0020, 10265 + obj_tiles gFile_graphics_battle_anims_sprites_266_sheet, 0x0080, 10266 + obj_tiles gFile_graphics_battle_anims_sprites_212_sheet, 0x0800, 10267 + obj_tiles gFile_graphics_battle_anims_sprites_264_sheet, 0x0020, 10268 gUnknown_83AD470:: @ 83AD470 - .incbin "baserom.gba", 0x3AD470, 0x4E0 + obj_tiles gFile_graphics_battle_anims_sprites_269_sheet, 0x0080, 10269 + obj_tiles gFile_graphics_battle_anims_sprites_270_sheet, 0x0400, 10270 + obj_tiles gFile_graphics_battle_anims_sprites_271_sheet, 0x0080, 10271 + obj_tiles gFile_graphics_battle_anims_sprites_272_sheet, 0x0800, 10272 + obj_tiles gFile_graphics_battle_anims_sprites_273_sheet, 0x0020, 10273 + obj_tiles gFile_graphics_battle_anims_sprites_274_sheet, 0x0800, 10274 + obj_tiles gFile_graphics_battle_anims_sprites_275_sheet, 0x0800, 10275 + obj_tiles gFile_graphics_battle_anims_sprites_276_sheet, 0x0800, 10276 + obj_tiles gFile_graphics_battle_anims_sprites_277_sheet, 0x1000, 10277 + obj_tiles gFile_graphics_battle_anims_sprites_278_sheet, 0x0800, 10278 + obj_tiles gFile_graphics_battle_anims_sprites_279_sheet, 0x00a0, 10279 + obj_tiles gFile_graphics_battle_anims_sprites_280_sheet, 0x0800, 10280 + obj_tiles gFile_graphics_battle_anims_sprites_281_sheet, 0x0200, 10281 + obj_tiles gFile_graphics_battle_anims_sprites_282_sheet, 0x0600, 10282 + obj_tiles gFile_graphics_battle_anims_sprites_283_sheet, 0x0200, 10283 + obj_tiles gFile_graphics_battle_anims_sprites_284_sheet, 0x0800, 10284 + obj_tiles gFile_graphics_battle_anims_sprites_285_sheet, 0x0200, 10285 + obj_tiles gFile_graphics_battle_anims_sprites_183_sheet, 0x0800, 10286 + obj_tiles gFile_graphics_battle_anims_sprites_056_sheet, 0x1000, 10287 + obj_tiles gFile_graphics_battle_anims_sprites_163_sheet, 0x0100, 10288 + + obj_pal gFile_graphics_battle_anims_sprites_000_palette, 10000 + obj_pal gFile_graphics_battle_anims_sprites_001_palette, 10001 + obj_pal gFile_graphics_battle_anims_sprites_002_palette, 10002 + obj_pal gFile_graphics_battle_anims_sprites_003_palette, 10003 + obj_pal gFile_graphics_battle_anims_sprites_004_palette, 10004 + obj_pal gFile_graphics_battle_anims_sprites_005_palette, 10005 + obj_pal gFile_graphics_battle_anims_sprites_006_palette, 10006 + obj_pal gFile_graphics_battle_anims_sprites_007_palette, 10007 + obj_pal gFile_graphics_battle_anims_sprites_008_palette, 10008 + obj_pal gFile_graphics_battle_anims_sprites_009_palette, 10009 + obj_pal gFile_graphics_battle_anims_sprites_010_palette, 10010 + obj_pal gFile_graphics_battle_anims_sprites_011_palette, 10011 + obj_pal gFile_graphics_battle_anims_sprites_012_palette, 10012 + obj_pal gFile_graphics_battle_anims_sprites_013_palette, 10013 + obj_pal gFile_graphics_battle_anims_sprites_014_palette, 10014 + obj_pal gFile_graphics_battle_anims_sprites_015_palette, 10015 + obj_pal gFile_graphics_battle_anims_sprites_016_palette, 10016 + obj_pal gFile_graphics_battle_anims_sprites_016_palette, 10017 + obj_pal gFile_graphics_battle_anims_sprites_018_palette, 10018 + obj_pal gFile_graphics_battle_anims_sprites_019_palette, 10019 + obj_pal gFile_graphics_battle_anims_sprites_020_palette, 10020 + obj_pal gFile_graphics_battle_anims_sprites_021_palette, 10021 + obj_pal gFile_graphics_battle_anims_sprites_022_palette, 10022 + obj_pal gFile_graphics_battle_anims_sprites_023_palette, 10023 + obj_pal gFile_graphics_battle_anims_sprites_024_palette, 10024 + obj_pal gFile_graphics_battle_anims_sprites_025_palette, 10025 + obj_pal gFile_graphics_battle_anims_sprites_026_palette, 10026 + obj_pal gFile_graphics_battle_anims_sprites_027_palette, 10027 + obj_pal gFile_graphics_battle_anims_sprites_028_palette, 10028 + obj_pal gFile_graphics_battle_anims_sprites_029_palette, 10029 + obj_pal gFile_graphics_battle_anims_sprites_030_palette, 10030 + obj_pal gFile_graphics_battle_anims_sprites_031_palette, 10031 + obj_pal gFile_graphics_battle_anims_sprites_032_palette, 10032 + obj_pal gFile_graphics_battle_anims_sprites_033_palette, 10033 + obj_pal gFile_graphics_battle_anims_sprites_033_palette, 10034 + obj_pal gFile_graphics_battle_anims_sprites_033_palette, 10035 + obj_pal gFile_graphics_battle_anims_sprites_036_palette, 10036 + obj_pal gFile_graphics_battle_anims_sprites_036_palette, 10037 + obj_pal gFile_graphics_battle_anims_sprites_038_palette, 10038 + obj_pal gFile_graphics_battle_anims_sprites_039_palette, 10039 + obj_pal gFile_graphics_battle_anims_sprites_038_palette, 10040 + obj_pal gFile_graphics_battle_anims_sprites_038_palette, 10041 + obj_pal gFile_graphics_battle_anims_sprites_042_palette, 10042 + obj_pal gFile_graphics_battle_anims_sprites_043_palette, 10043 + obj_pal gFile_graphics_battle_anims_sprites_044_palette, 10044 + obj_pal gFile_graphics_battle_anims_sprites_045_palette, 10045 + obj_pal gFile_graphics_battle_anims_sprites_046_palette, 10046 + obj_pal gFile_graphics_battle_anims_sprites_047_palette, 10046 + obj_pal gFile_graphics_battle_anims_sprites_048_palette, 10048 + obj_pal gFile_graphics_battle_anims_sprites_049_palette, 10049 + obj_pal gFile_graphics_battle_anims_sprites_050_palette, 10050 + obj_pal gFile_graphics_battle_anims_sprites_050_palette, 10051 + obj_pal gFile_graphics_battle_anims_sprites_050_palette, 10052 + obj_pal gFile_graphics_battle_anims_sprites_026_palette, 10053 + obj_pal gFile_graphics_battle_anims_sprites_054_palette, 10054 + obj_pal gFile_graphics_battle_anims_sprites_050_palette, 10055 + obj_pal gFile_graphics_battle_anims_sprites_056_palette, 10056 + obj_pal gFile_graphics_battle_anims_sprites_057_palette, 10057 + obj_pal gFile_graphics_battle_anims_sprites_058_palette, 10058 + obj_pal gFile_graphics_battle_anims_sprites_059_palette, 10059 + obj_pal gFile_graphics_battle_anims_sprites_060_palette, 10060 + obj_pal gFile_graphics_battle_anims_sprites_061_palette, 10061 + obj_pal gFile_graphics_battle_anims_sprites_062_palette, 10062 + obj_pal gFile_graphics_battle_anims_sprites_063_palette, 10063 + obj_pal gFile_graphics_battle_anims_sprites_064_palette, 10064 + obj_pal gFile_graphics_battle_anims_sprites_065_palette, 10065 + obj_pal gFile_graphics_battle_anims_sprites_066_palette, 10066 + obj_pal gFile_graphics_battle_anims_sprites_067_palette, 10067 + obj_pal gFile_graphics_battle_anims_sprites_068_palette, 10068 + obj_pal gFile_graphics_battle_anims_sprites_065_palette, 10069 + obj_pal gFile_graphics_battle_anims_sprites_070_palette, 10070 + obj_pal gFile_graphics_battle_anims_sprites_070_palette, 10071 + obj_pal gFile_graphics_battle_anims_sprites_072_palette, 10072 + obj_pal gFile_graphics_battle_anims_sprites_073_palette, 10073 + obj_pal gFile_graphics_battle_anims_sprites_074_palette, 10074 + obj_pal gFile_graphics_battle_anims_sprites_075_palette, 10075 + obj_pal gFile_graphics_battle_anims_sprites_076_palette, 10076 + obj_pal gFile_graphics_battle_anims_sprites_076_palette, 10077 + obj_pal gFile_graphics_battle_anims_sprites_078_palette, 10078 + obj_pal gFile_graphics_battle_anims_sprites_078_palette, 10079 + obj_pal gFile_graphics_battle_anims_sprites_080_palette, 10080 + obj_pal gFile_graphics_battle_anims_sprites_081_palette, 10081 + obj_pal gFile_graphics_battle_anims_sprites_082_palette, 10082 + obj_pal gFile_graphics_battle_anims_sprites_083_palette, 10083 + obj_pal gFile_graphics_battle_anims_sprites_084_palette, 10084 + obj_pal gFile_graphics_battle_anims_sprites_085_palette, 10085 + obj_pal gFile_graphics_battle_anims_sprites_086_palette, 10086 + obj_pal gFile_graphics_battle_anims_sprites_087_palette, 10087 + obj_pal gFile_graphics_battle_anims_sprites_088_palette, 10088 + obj_pal gFile_graphics_battle_anims_sprites_089_palette, 10089 + obj_pal gFile_graphics_battle_anims_sprites_090_palette, 10090 + obj_pal gFile_graphics_battle_anims_sprites_091_palette, 10091 + obj_pal gFile_graphics_battle_anims_sprites_092_palette, 10092 + obj_pal gFile_graphics_battle_anims_sprites_093_palette, 10093 + obj_pal gFile_graphics_battle_anims_sprites_094_palette, 10094 + obj_pal gFile_graphics_battle_anims_sprites_095_palette, 10095 + obj_pal gFile_graphics_battle_anims_sprites_096_palette, 10096 + obj_pal gFile_graphics_battle_anims_sprites_097_palette, 10097 + obj_pal gFile_graphics_battle_anims_sprites_094_palette, 10098 + obj_pal gFile_graphics_battle_anims_sprites_099_palette, 10099 + obj_pal gFile_graphics_battle_anims_sprites_100_palette, 10100 + obj_pal gFile_graphics_battle_anims_sprites_101_palette, 10101 + obj_pal gFile_graphics_battle_anims_sprites_101_palette, 10102 + obj_pal gFile_graphics_battle_anims_sprites_103_palette, 10103 + obj_pal gFile_graphics_battle_anims_sprites_104_palette, 10104 + obj_pal gFile_graphics_battle_anims_sprites_105_palette, 10105 + obj_pal gFile_graphics_battle_anims_sprites_105_palette, 10106 + obj_pal gFile_graphics_battle_anims_sprites_107_palette, 10107 + obj_pal gFile_graphics_battle_anims_sprites_107_palette, 10108 + obj_pal gFile_graphics_battle_anims_sprites_109_palette, 10109 + obj_pal gFile_graphics_battle_anims_sprites_109_palette, 10110 + obj_pal gFile_graphics_battle_anims_sprites_111_palette, 10111 + obj_pal gFile_graphics_battle_anims_sprites_112_palette, 10112 + obj_pal gFile_graphics_battle_anims_sprites_113_palette, 10113 + obj_pal gFile_graphics_battle_anims_sprites_114_palette, 10114 + obj_pal gFile_graphics_battle_anims_sprites_115_palette, 10115 + obj_pal gFile_graphics_battle_anims_sprites_116_palette, 10116 + obj_pal gFile_graphics_battle_anims_sprites_117_palette, 10117 + obj_pal gFile_graphics_battle_anims_sprites_118_palette, 10118 + obj_pal gFile_graphics_battle_anims_sprites_119_palette, 10119 + obj_pal gFile_graphics_battle_anims_sprites_120_palette, 10120 + obj_pal gFile_graphics_battle_anims_sprites_121_palette, 10121 + obj_pal gFile_graphics_battle_anims_sprites_122_palette, 10122 + obj_pal gFile_graphics_battle_anims_sprites_122_palette, 10123 + obj_pal gFile_graphics_battle_anims_sprites_124_palette, 10124 + obj_pal gFile_graphics_battle_anims_sprites_125_palette, 10125 + obj_pal gFile_graphics_battle_anims_sprites_126_palette, 10126 + obj_pal gFile_graphics_battle_anims_sprites_127_palette, 10127 + obj_pal gFile_graphics_battle_anims_sprites_128_palette, 10128 + obj_pal gFile_graphics_battle_anims_sprites_128_palette, 10129 + obj_pal gFile_graphics_battle_anims_sprites_130_palette, 10130 + obj_pal gFile_graphics_battle_anims_sprites_130_palette, 10131 + obj_pal gFile_graphics_battle_anims_sprites_132_palette, 10132 + obj_pal gFile_graphics_battle_anims_sprites_133_palette, 10133 + obj_pal gFile_graphics_battle_anims_sprites_133_palette, 10134 + obj_pal gFile_graphics_battle_anims_sprites_135_palette, 10135 gUnknown_83AD950:: @ 83AD950 - .incbin "baserom.gba", 0x3AD950, 0x308 + obj_pal gFile_graphics_battle_anims_sprites_136_palette, 10136 + obj_pal gFile_graphics_battle_anims_sprites_135_palette, 10137 + obj_pal gFile_graphics_battle_anims_sprites_135_palette, 10138 + obj_pal gFile_graphics_battle_anims_sprites_139_palette, 10139 + obj_pal gFile_graphics_battle_anims_sprites_140_palette, 10140 + obj_pal gFile_graphics_battle_anims_sprites_141_palette, 10141 + obj_pal gFile_graphics_battle_anims_sprites_141_palette, 10142 + obj_pal gFile_graphics_battle_anims_sprites_143_palette, 10143 + obj_pal gFile_graphics_battle_anims_sprites_144_palette, 10144 + obj_pal gFile_graphics_battle_anims_sprites_139_palette, 10145 + obj_pal gFile_graphics_battle_anims_sprites_115_palette, 10146 + obj_pal gFile_graphics_battle_anims_sprites_147_palette, 10147 + obj_pal gFile_graphics_battle_anims_sprites_148_palette, 10148 + obj_pal gFile_graphics_battle_anims_sprites_148_palette, 10149 + obj_pal gFile_graphics_battle_anims_sprites_150_palette, 10150 + obj_pal gFile_graphics_battle_anims_sprites_150_palette, 10151 + obj_pal gFile_graphics_battle_anims_sprites_152_palette, 10152 + obj_pal gFile_graphics_battle_anims_sprites_153_palette, 10153 + obj_pal gFile_graphics_battle_anims_sprites_154_palette, 10154 + obj_pal gFile_graphics_battle_anims_sprites_155_palette, 10155 + obj_pal gFile_graphics_battle_anims_sprites_156_palette, 10156 + obj_pal gFile_graphics_battle_anims_sprites_157_palette, 10157 + obj_pal gFile_graphics_battle_anims_sprites_158_palette, 10158 + obj_pal gFile_graphics_battle_anims_sprites_159_palette, 10159 + obj_pal gFile_graphics_battle_anims_sprites_160_palette, 10160 + obj_pal gFile_graphics_battle_anims_sprites_161_palette, 10161 + obj_pal gFile_graphics_battle_anims_sprites_162_palette, 10162 + obj_pal gFile_graphics_battle_anims_sprites_163_palette, 10163 + obj_pal gFile_graphics_battle_anims_sprites_164_palette, 10164 + obj_pal gFile_graphics_battle_anims_sprites_165_palette, 10165 + obj_pal gFile_graphics_battle_anims_sprites_166_palette, 10166 + obj_pal gFile_graphics_battle_anims_sprites_167_palette, 10167 + obj_pal gFile_graphics_battle_anims_sprites_168_palette, 10168 + obj_pal gFile_graphics_battle_anims_sprites_169_palette, 10169 + obj_pal gFile_graphics_battle_anims_sprites_170_palette, 10170 + obj_pal gFile_graphics_battle_anims_sprites_171_palette, 10171 + obj_pal gFile_graphics_battle_anims_sprites_172_palette, 10172 + obj_pal gFile_graphics_battle_anims_sprites_001_palette, 10173 + obj_pal gFile_graphics_battle_anims_sprites_174_palette, 10174 + obj_pal gFile_graphics_battle_anims_sprites_175_palette, 10175 + obj_pal gFile_graphics_battle_anims_sprites_176_palette, 10176 + obj_pal gFile_graphics_battle_anims_sprites_177_palette, 10177 + obj_pal gFile_graphics_battle_anims_sprites_178_palette, 10178 + obj_pal gFile_graphics_battle_anims_sprites_179_palette, 10179 + obj_pal gFile_graphics_battle_anims_sprites_179_palette, 10180 + obj_pal gFile_graphics_battle_anims_sprites_179_palette, 10181 + obj_pal gFile_graphics_battle_anims_sprites_182_palette, 10182 + obj_pal gFile_graphics_battle_anims_sprites_183_palette, 10183 + obj_pal gFile_graphics_battle_anims_sprites_184_palette, 10184 + obj_pal gFile_graphics_battle_anims_sprites_185_palette, 10185 + obj_pal gFile_graphics_battle_anims_sprites_186_palette, 10186 + obj_pal gFile_graphics_battle_anims_sprites_187_palette, 10187 + obj_pal gFile_graphics_battle_anims_sprites_188_palette, 10188 + obj_pal gFile_graphics_battle_anims_sprites_189_palette, 10189 + obj_pal gFile_graphics_battle_anims_sprites_190_palette, 10190 + obj_pal gFile_graphics_battle_anims_sprites_191_palette, 10191 + obj_pal gFile_graphics_battle_anims_sprites_192_palette, 10192 + obj_pal gFile_graphics_battle_anims_sprites_193_palette, 10193 + obj_pal gFile_graphics_battle_anims_sprites_194_palette, 10194 + obj_pal gFile_graphics_battle_anims_sprites_195_palette, 10195 + obj_pal gFile_graphics_battle_anims_sprites_196_palette, 10196 + obj_pal gFile_graphics_battle_anims_sprites_197_palette, 10197 + obj_pal gFile_graphics_battle_anims_sprites_198_palette, 10198 + obj_pal gFile_graphics_battle_anims_sprites_199_palette, 10199 + obj_pal gFile_graphics_battle_anims_sprites_200_palette, 10200 + obj_pal gFile_graphics_battle_anims_sprites_201_palette, 10201 + obj_pal gFile_graphics_battle_anims_sprites_202_palette, 10202 + obj_pal gFile_graphics_battle_anims_sprites_203_palette, 10203 + obj_pal gFile_graphics_battle_anims_sprites_204_palette, 10204 + obj_pal gFile_graphics_battle_anims_sprites_205_palette, 10205 + obj_pal gFile_graphics_battle_anims_sprites_206_palette, 10206 + obj_pal gFile_graphics_battle_anims_sprites_207_palette, 10207 + obj_pal gFile_graphics_battle_anims_sprites_167_palette, 10208 + obj_pal gFile_graphics_battle_anims_sprites_209_palette, 10209 + obj_pal gFile_graphics_battle_anims_sprites_210_palette, 10210 + obj_pal gFile_graphics_battle_anims_sprites_211_palette, 10211 + obj_pal gFile_graphics_battle_anims_sprites_211_palette, 10212 + obj_pal gFile_graphics_battle_anims_sprites_211_palette, 10213 + obj_pal gFile_graphics_battle_anims_sprites_064_palette, 10214 + obj_pal gFile_graphics_battle_anims_sprites_215_palette, 10215 + obj_pal gFile_graphics_battle_anims_sprites_216_palette, 10216 + obj_pal gFile_graphics_battle_anims_sprites_217_palette, 10217 + obj_pal gFile_graphics_battle_anims_sprites_218_palette, 10218 + obj_pal gFile_graphics_battle_anims_sprites_219_palette, 10219 + obj_pal gFile_graphics_battle_anims_sprites_220_palette, 10220 + obj_pal gFile_graphics_battle_anims_sprites_221_palette, 10221 + obj_pal gFile_graphics_battle_anims_sprites_222_palette, 10222 + obj_pal gFile_graphics_battle_anims_sprites_223_palette, 10223 + obj_pal gFile_graphics_battle_anims_sprites_224_palette, 10224 + obj_pal gFile_graphics_battle_anims_sprites_225_palette, 10225 + obj_pal gFile_graphics_battle_anims_sprites_226_palette, 10226 + obj_pal gFile_graphics_battle_anims_sprites_226_palette, 10227 + obj_pal gFile_graphics_battle_anims_sprites_228_palette, 10228 + obj_pal gFile_graphics_battle_anims_sprites_229_palette, 10229 + obj_pal gFile_graphics_battle_anims_sprites_230_palette, 10230 + obj_pal gFile_graphics_battle_anims_sprites_231_palette, 10231 + obj_pal gFile_graphics_battle_anims_sprites_231_palette, 10232 gUnknown_83ADC58:: @ 83ADC58 - .incbin "baserom.gba", 0x3ADC58, 0x120 + obj_pal gFile_graphics_battle_anims_sprites_233_palette, 10233 + obj_pal gFile_graphics_battle_anims_sprites_234_palette, 10234 + obj_pal gFile_graphics_battle_anims_sprites_235_palette, 10235 + obj_pal gFile_graphics_battle_anims_sprites_236_palette, 10236 + obj_pal gFile_graphics_battle_anims_sprites_237_palette, 10237 + obj_pal gFile_graphics_battle_anims_sprites_238_palette, 10238 + obj_pal gFile_graphics_battle_anims_sprites_239_palette, 10239 + obj_pal gFile_graphics_battle_anims_sprites_240_palette, 10240 + obj_pal gFile_graphics_battle_anims_sprites_241_palette, 10241 + obj_pal gFile_graphics_battle_anims_sprites_242_palette, 10242 + obj_pal gFile_graphics_battle_anims_sprites_243_palette, 10243 + obj_pal gFile_graphics_battle_anims_sprites_244_palette, 10244 + obj_pal gFile_graphics_battle_anims_sprites_245_palette, 10245 + obj_pal gFile_graphics_battle_anims_sprites_245_palette, 10246 + obj_pal gFile_graphics_battle_anims_sprites_064_palette, 10247 + obj_pal gFile_graphics_battle_anims_sprites_248_palette, 10248 + obj_pal gFile_graphics_battle_anims_sprites_249_palette, 10249 + obj_pal gFile_graphics_battle_anims_sprites_249_palette, 10250 + obj_pal gFile_graphics_battle_anims_sprites_251_palette, 10251 + obj_pal gFile_graphics_battle_anims_sprites_252_palette, 10252 + obj_pal gFile_graphics_battle_anims_sprites_253_palette, 10253 + obj_pal gFile_graphics_battle_anims_sprites_254_palette, 10254 + obj_pal gFile_graphics_battle_anims_sprites_255_palette, 10255 + obj_pal gFile_graphics_battle_anims_sprites_256_palette, 10256 + obj_pal gFile_graphics_battle_anims_sprites_257_palette, 10257 + obj_pal gFile_graphics_battle_anims_sprites_258_palette, 10258 + obj_pal gFile_graphics_battle_anims_sprites_259_palette, 10259 + obj_pal gFile_graphics_battle_anims_sprites_260_palette, 10260 + obj_pal gBattleAnimSpritePal_FlyingDirt, 10261 + obj_pal gFile_graphics_battle_anims_sprites_262_palette, 10262 + obj_pal gFile_graphics_battle_anims_sprites_263_palette, 10263 + obj_pal gFile_graphics_battle_anims_sprites_264_palette, 10264 + obj_pal gFile_graphics_battle_anims_sprites_265_palette, 10265 + obj_pal gFile_graphics_battle_anims_sprites_266_palette, 10266 + obj_pal gFile_graphics_battle_anims_sprites_267_palette, 10267 + obj_pal gFile_graphics_battle_anims_sprites_268_palette, 10268 gUnknown_83ADD78:: @ 83ADD78 - .incbin "baserom.gba", 0x3ADD78, 0xA0 + obj_pal gFile_graphics_battle_anims_sprites_269_palette, 10269 + obj_pal gFile_graphics_battle_anims_sprites_270_palette, 10270 + obj_pal gFile_graphics_battle_anims_sprites_271_palette, 10271 + obj_pal gFile_graphics_battle_anims_sprites_272_palette, 10272 + obj_pal gFile_graphics_battle_anims_sprites_272_palette, 10273 + obj_pal gFile_graphics_battle_anims_sprites_274_palette, 10274 + obj_pal gFile_graphics_battle_anims_sprites_274_palette, 10275 + obj_pal gFile_graphics_battle_anims_sprites_274_palette, 10276 + obj_pal gFile_graphics_battle_anims_sprites_277_palette, 10277 + obj_pal gFile_graphics_battle_anims_sprites_278_palette, 10278 + obj_pal gFile_graphics_battle_anims_sprites_279_palette, 10279 + obj_pal gFile_graphics_battle_anims_sprites_280_palette, 10280 + obj_pal gFile_graphics_battle_anims_sprites_281_palette, 10281 + obj_pal gFile_graphics_battle_anims_sprites_282_palette, 10282 + obj_pal gFile_graphics_battle_anims_sprites_283_palette, 10283 + obj_pal gFile_graphics_battle_anims_sprites_284_palette, 10284 + obj_pal gFile_graphics_battle_anims_sprites_285_palette, 10285 + obj_pal gFile_graphics_battle_anims_sprites_286_palette, 10286 + obj_pal gFile_graphics_battle_anims_sprites_287_palette, 10287 + obj_pal gFile_graphics_battle_anims_sprites_288_palette, 10288 gUnknown_83ADE18:: @ 83ADE18 - .incbin "baserom.gba", 0x3ADE18, 0x144 + .4byte gFile_graphics_battle_anims_backgrounds_00_sheet, gFile_graphics_battle_anims_backgrounds_00_palette, gFile_graphics_battle_anims_backgrounds_00_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_00_sheet, gFile_graphics_battle_anims_backgrounds_00_palette, gFile_graphics_battle_anims_backgrounds_00_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_02_sheet, gFile_graphics_battle_anims_backgrounds_02_palette, gFile_graphics_battle_anims_backgrounds_02_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_03_sheet, gFile_graphics_battle_anims_backgrounds_03_palette, gFile_graphics_battle_anims_backgrounds_03_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_04_palette, gFile_graphics_battle_anims_backgrounds_04_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_04_palette, gFile_graphics_battle_anims_backgrounds_05_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_04_palette, gFile_graphics_battle_anims_backgrounds_06_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_07_sheet, gFile_graphics_battle_anims_backgrounds_07_palette, gFile_graphics_battle_anims_backgrounds_07_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_07_sheet, gFile_graphics_battle_anims_backgrounds_07_palette, gFile_graphics_battle_anims_backgrounds_08_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_09_sheet, gFile_graphics_battle_anims_backgrounds_09_palette, gFile_graphics_battle_anims_backgrounds_09_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_09_sheet, gFile_graphics_battle_anims_backgrounds_09_palette, gFile_graphics_battle_anims_backgrounds_10_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_11_sheet, gFile_graphics_battle_anims_backgrounds_11_palette, gFile_graphics_battle_anims_backgrounds_11_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_12_sheet, gFile_graphics_battle_anims_backgrounds_12_palette, gFile_graphics_battle_anims_backgrounds_12_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_12_sheet, gFile_graphics_battle_anims_backgrounds_12_palette, gFile_graphics_battle_anims_backgrounds_13_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_12_sheet, gFile_graphics_battle_anims_backgrounds_12_palette, gFile_graphics_battle_anims_backgrounds_14_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_15_sheet, gFile_graphics_battle_anims_backgrounds_15_palette, gFile_graphics_battle_anims_backgrounds_15_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_16_sheet, gFile_graphics_battle_anims_backgrounds_16_palette, gFile_graphics_battle_anims_backgrounds_16_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_17_sheet, gFile_graphics_battle_anims_backgrounds_17_palette, gFile_graphics_battle_anims_backgrounds_17_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_07_sheet, gFile_graphics_battle_anims_backgrounds_18_palette, gFile_graphics_battle_anims_backgrounds_07_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_07_sheet, gFile_graphics_battle_anims_backgrounds_18_palette, gFile_graphics_battle_anims_backgrounds_08_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_20_sheet, gFile_graphics_battle_anims_backgrounds_20_palette, gFile_graphics_battle_anims_backgrounds_20_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_21_sheet, gFile_graphics_battle_anims_backgrounds_21_palette, gFile_graphics_battle_anims_backgrounds_21_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_09_sheet, gFile_graphics_battle_anims_backgrounds_22_palette, gFile_graphics_battle_anims_backgrounds_09_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_09_sheet, gFile_graphics_battle_anims_backgrounds_22_palette, gFile_graphics_battle_anims_backgrounds_10_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_24_palette, gFile_graphics_battle_anims_backgrounds_04_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_24_palette, gFile_graphics_battle_anims_backgrounds_05_tilemap + .4byte gFile_graphics_battle_anims_backgrounds_04_sheet, gFile_graphics_battle_anims_backgrounds_24_palette, gFile_graphics_battle_anims_backgrounds_06_tilemap gUnknown_83ADF5C:: @ 83ADF5C - .incbin "baserom.gba", 0x3ADF5C, 0xC0 + .4byte ScriptCmd_loadspritegfx + .4byte ScriptCmd_unloadspritegfx + .4byte ScriptCmd_createsprite + .4byte ScriptCmd_createvisualtask + .4byte ScriptCmd_delay + .4byte sub_8072ACC + .4byte nullsub_41 + .4byte nullsub_42 + .4byte sub_8072B08 + .4byte sub_8072C08 + .4byte sub_8072C30 + .4byte ScriptCmd_clearmonbg + .4byte ScriptCmd_setalpha + .4byte ScriptCmd_blendoff + .4byte ScriptCmd_call + .4byte sub_8073698 + .4byte ScriptCmd_setarg + .4byte ScriptCmd_choosetwoturnanim + .4byte ScriptCmd_jumpifmoveturn + .4byte ScriptCmd_jump + .4byte sub_80737A0 + .4byte ScriptCmd_restorebg + .4byte ScriptCmd_waitbgfadeout + .4byte sub_80739F0 + .4byte ScriptCmd_changebg + .4byte ScriptCmd_playsewithpan + .4byte ScriptCmd_setpan + .4byte ScriptCmd_panse_1B + .4byte ScriptCmd_loopsewithpan + .4byte ScriptCmd_waitplaysewithpan + .4byte ScriptCmd_setbldcnt + .4byte ScriptCmd_createsoundtask + .4byte ScriptCmd_waitsound + .4byte ScriptCmd_jumpargeq + .4byte sub_807339C + .4byte sub_8073484 + .4byte sub_80741B8 + .4byte sub_80737E4 + .4byte ScriptCmd_panse_26 + .4byte ScriptCmd_panse_27 + .4byte sub_80741C8 + .4byte sub_8074214 + .4byte sub_807423C + .4byte ScriptCmd_invisible + .4byte ScriptCmd_visible + .4byte sub_8074320 + .4byte sub_80743C8 + .4byte sub_8074458 diff --git a/data/battle_message.s b/data/battle_message.s index b60eee4f0..e6ec14116 100644 --- a/data/battle_message.s +++ b/data/battle_message.s @@ -1,5 +1,6 @@ #include "constants/moves.h" #include "constants/battle.h" +#include "battle_string_ids.h" .include "asm/macros.inc" .include "constants/constants.inc" .section .rodata @@ -159,7 +160,7 @@ gUnknown_83FB534:: @ 83FB534 .string "{B_ATK_NAME_WITH_PREFIX} can't escape!$" gUnknown_83FB545:: @ 83FB545 - .string "Hit {B_BUFF1} timeシsス!$" + .string "Hit {B_BUFF1} time(s)!$" gUnknown_83FB555:: @ 83FB555 .string "{B_EFF_NAME_WITH_PREFIX}\n" @@ -2173,48 +2174,270 @@ gUnknown_83FDF3C:: @ 83FDF3C .4byte gUnknown_83FB248 gMissStringIds:: @ 83FE514 - .2byte 0x0017, 0x0018, 0x0159, 0x001a - .2byte 0x014c, 0x00e2, 0x00e3, 0x0021 - .2byte 0x0112, 0x0165, 0x00e8, 0x00e9 - .2byte 0x00e5, 0x00ed, 0x00f0, 0x00f3 - .2byte 0x00ee, 0x00f4, 0x0066, 0x0067 - .2byte 0x00ef, 0x00f5, 0x00ea, 0x00eb - .2byte 0x00ec, 0x0065, 0x0098, 0x00e5 - .2byte 0x00e5, 0x004e, 0x0160, 0x004d - .2byte 0x0161, 0x004f, 0x0068, 0x0069 - .2byte 0x001b, 0x006a, 0x0139, 0x0052 - .2byte 0x0053, 0x0070, 0x0071, 0x0073 - .2byte 0x0074, 0x006c, 0x006e, 0x00f7 - .2byte 0x004c, 0x0075, 0x0076, 0x0077 - .2byte 0x00d5, 0x00d6, 0x003d, 0x0130 - .2byte 0x0145, 0x0146, 0x00d7, 0x00d8 - .2byte 0x003e, 0x0130, 0x0054, 0x0055 - .2byte 0x0056, 0x0057, 0x0058, 0x0059 - .2byte 0x013d, 0x013e, 0x005a, 0x005c - .2byte 0x005b, 0x005d, 0x005b, 0x0148 - .2byte 0x0061, 0x00e5, 0x0063, 0x00e5 - .2byte 0x007d, 0x00e5, 0x007e, 0x00fb - .2byte 0x0028, 0x0029, 0x0037, 0x0038 - .2byte 0x0023, 0x0024, 0x002e, 0x002f - .2byte 0x0031, 0x0032, 0x0035, 0x0036 - .2byte 0x0017, 0x007c, 0x0045, 0x0136 - .2byte 0x002d, 0x0139, 0x013b, 0x013c - .2byte 0x00fd, 0x00fd, 0x00fd, 0x00fd - .2byte 0x0142, 0x00a1, 0x014f, 0x0107 - .2byte 0x0108, 0x0109, 0x010a, 0x0110 - .2byte 0x0110, 0x0110, 0x0110, 0x0110 - .2byte 0x0110, 0x0110, 0x0110, 0x0111 - .2byte 0x0110, 0x0110, 0x0110, 0x00f1 - .2byte 0x0110, 0x0110, 0x0110, 0x0116 - .2byte 0x0117, 0x0118, 0x0119, 0x011d - .2byte 0x011e, 0x011f, 0x0128, 0x0123 - .2byte 0x0126, 0x0125, 0x0124, 0x0127 - .2byte 0x0129, 0x0156, 0x0131, 0x0163 - .2byte 0x016a, 0x00c7, 0x0163, 0x016a - .2byte 0x00c9, 0x0163, 0x016a, 0x0166 - .2byte 0x0167, 0x0168, 0x00cb, 0x0137 - .2byte 0x016f, 0x0170, 0x0171, 0x0172 - .2byte 0x017e, 0x017e, 0x0180, 0x0181 + .2byte STRINGID_ATTACKMISSED + .2byte STRINGID_PKMNPROTECTEDITSELF + .2byte STRINGID_PKMNAVOIDEDATTACK + .2byte STRINGID_AVOIDEDDAMAGE + .2byte STRINGID_PKMNMAKESGROUNDMISS + +gNoEscapeStringIds:: + .2byte STRINGID_CANTESCAPE + .2byte STRINGID_DONTLEAVEBIRCH + .2byte STRINGID_PREVENTSESCAPE + .2byte STRINGID_CANTESCAPE2 + .2byte STRINGID_ATTACKERCANTESCAPE + +gMoveWeatherChangeStringIds:: + .2byte STRINGID_STARTEDTORAIN + .2byte STRINGID_DOWNPOURSTARTED + .2byte STRINGID_BUTITFAILED + .2byte STRINGID_SANDSTORMBREWED + .2byte STRINGID_SUNLIGHTGOTBRIGHT + .2byte STRINGID_STARTEDHAIL + +gSandStormHailContinuesStringIds:: + .2byte STRINGID_SANDSTORMRAGES + .2byte STRINGID_HAILCONTINUES + +gSandStormHailDmgStringIds:: + .2byte STRINGID_PKMNBUFFETEDBYSANDSTORM + .2byte STRINGID_PKMNPELTEDBYHAIL + +gSandStormHailEndStringIds:: + .2byte STRINGID_SANDSTORMSUBSIDED + .2byte STRINGID_HAILSTOPPED + +gRainContinuesStringIds:: + .2byte STRINGID_RAINCONTINUES + .2byte STRINGID_DOWNPOURCONTINUES + .2byte STRINGID_RAINSTOPPED + +gProtectLikeUsedStringIds:: + .2byte STRINGID_PKMNPROTECTEDITSELF2 + .2byte STRINGID_PKMNBRACEDITSELF + .2byte STRINGID_BUTITFAILED + +gReflectLightScreenSafeguardStringIds:: + .2byte STRINGID_BUTITFAILED + .2byte STRINGID_PKMNRAISEDDEF + .2byte STRINGID_PKMNRAISEDDEFALITTLE + .2byte STRINGID_PKMNRAISEDSPDEF + .2byte STRINGID_PKMNRAISEDSPDEFALITTLE + .2byte STRINGID_PKMNCOVEREDBYVEIL + +gLeechSeedStringIds:: + .2byte STRINGID_PKMNSEEDED + .2byte STRINGID_PKMNEVADEDATTACK + .2byte STRINGID_ITDOESNTAFFECT + .2byte STRINGID_PKMNSAPPEDBYLEECHSEED + .2byte STRINGID_ITSUCKEDLIQUIDOOZE + +gRestUsedStringIds:: + .2byte STRINGID_PKMNWENTTOSLEEP + .2byte STRINGID_PKMNSLEPTHEALTHY + +gUproarOverTurnStringIds:: + .2byte STRINGID_PKMNMAKINGUPROAR + .2byte STRINGID_PKMNCALMEDDOWN + +gStockpileUsedStringIds:: + .2byte STRINGID_PKMNSTOCKPILED + .2byte STRINGID_PKMNCANTSTOCKPILE + +gWokeUpStringIds:: + .2byte STRINGID_PKMNWOKEUP + .2byte STRINGID_PKMNWOKEUPINUPROAR + +gSwallowFailStringIds:: + .2byte STRINGID_FAILEDTOSWALLOW + .2byte STRINGID_PKMNHPFULL + +gUproarAwakeStringIds:: + .2byte STRINGID_PKMNCANTSLEEPINUPROAR2 + .2byte STRINGID_UPROARKEPTPKMNAWAKE + .2byte STRINGID_PKMNSTAYEDAWAKEUSING + +gStatUpStringIds:: + .2byte STRINGID_PKMNSSTATCHANGED + .2byte STRINGID_PKMNSSTATCHANGED2 + .2byte STRINGID_STATSWONTINCREASE + .2byte STRINGID_EMPTYSTRING3 + .2byte STRINGID_USINGXTHEYOFZN + .2byte STRINGID_PKMNUSEDXTOGETPUMPED + +gStatDownStringIds:: + .2byte STRINGID_PKMNSSTATCHANGED3 + .2byte STRINGID_PKMNSSTATCHANGED4 + .2byte STRINGID_STATSWONTDECREASE + .2byte STRINGID_EMPTYSTRING3 + +gFirstTurnOfTwoStringIds:: + .2byte STRINGID_PKMNWHIPPEDWHIRLWIND + .2byte STRINGID_PKMNTOOKSUNLIGHT + .2byte STRINGID_PKMNLOWEREDHEAD + .2byte STRINGID_PKMNISGLOWING + .2byte STRINGID_PKMNFLEWHIGH + .2byte STRINGID_PKMNDUGHOLE + .2byte STRINGID_PKMNHIDUNDERWATER + .2byte STRINGID_PKMNSPRANGUP + +gWrappedStringIds:: + .2byte STRINGID_PKMNSQUEEZEDBYBIND + .2byte STRINGID_PKMNWRAPPEDBY + .2byte STRINGID_PKMNTRAPPEDINVORTEX + .2byte STRINGID_PKMNCLAMPED + .2byte STRINGID_PKMNTRAPPEDINVORTEX + .2byte STRINGID_PKMNTRAPPEDBYSANDTOMB + +gMistUsedStringIds:: + .2byte STRINGID_PKMNSHROUDEDINMIST + .2byte STRINGID_BUTITFAILED + +gFocusEnergyUsedStringIds:: + .2byte STRINGID_PKMNGETTINGPUMPED + .2byte STRINGID_BUTITFAILED + +gTransformUsedStringIds:: + .2byte STRINGID_PKMNTRANSFORMEDINTO + .2byte STRINGID_BUTITFAILED + +gSubsituteUsedStringIds:: + .2byte STRINGID_PKMNMADESUBSTITUTE + .2byte STRINGID_TOOWEAKFORSUBSTITUTE + +gGotPoisonedStringIds:: + .2byte STRINGID_PKMNWASPOISONED + .2byte STRINGID_PKMNPOISONEDBY + +gGotParalyzedStringIds:: + .2byte STRINGID_PKMNWASPARALYZED + .2byte STRINGID_PKMNWASPARALYZEDBY + +gFellAsleepStringIds:: + .2byte STRINGID_PKMNFELLASLEEP + .2byte STRINGID_PKMNMADESLEEP + +gGotBurnedStringIds:: + .2byte STRINGID_PKMNWASBURNED + .2byte STRINGID_PKMNBURNEDBY + +gGotFrozenStringIds:: + .2byte STRINGID_PKMNWASFROZEN + .2byte STRINGID_PKMNFROZENBY + +gGotDefrostedStringIds:: + .2byte STRINGID_PKMNWASDEFROSTED2 + .2byte STRINGID_PKMNWASDEFROSTEDBY + +gKOFailedStringIds:: + .2byte STRINGID_ATTACKMISSED + .2byte STRINGID_PKMNUNAFFECTED + +gAttractUsedStringIds:: + .2byte STRINGID_PKMNFELLINLOVE + .2byte STRINGID_PKMNSXINFATUATEDY + +gLeechSeedDrainStringIds:: + .2byte STRINGID_PKMNENERGYDRAINED + .2byte STRINGID_ITSUCKEDLIQUIDOOZE + +gSportsUsedStringIds:: + .2byte STRINGID_ELECTRICITYWEAKENED + .2byte STRINGID_FIREWEAKENED + +gPartyStatusHealStringIds:: + .2byte STRINGID_BELLCHIMED + .2byte STRINGID_BELLCHIMED + .2byte STRINGID_BELLCHIMED + .2byte STRINGID_BELLCHIMED + .2byte STRINGID_SOOTHINGAROMA + +gFutureMoveUsedStringIds:: + .2byte STRINGID_PKMNFORESAWATTACK + .2byte STRINGID_PKMNCHOSEXASDESTINY + +gBallEscapeStringIds:: + .2byte STRINGID_PKMNBROKEFREE + .2byte STRINGID_ITAPPEAREDCAUGHT + .2byte STRINGID_AARGHALMOSTHADIT + .2byte STRINGID_SHOOTSOCLOSE + +gWeatherContinuesStringIds:: + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_SANDSTORMISRAGING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_SUNLIGHTSTRONG + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + .2byte STRINGID_ITISRAINING + +gInobedientStringIds:: + .2byte STRINGID_PKMNLOAFING + .2byte STRINGID_PKMNWONTOBEY + .2byte STRINGID_PKMNTURNEDAWAY + .2byte STRINGID_PKMNPRETENDNOTNOTICE + +gSafariPokeblockResultStringIds:: + .2byte STRINGID_PKMNWATCHINGCAREFULLY + .2byte STRINGID_PKMNANGRY + .2byte STRINGID_PKMNEATING + +gTrainerItemCuredStatusStringIds:: + .2byte STRINGID_PKMNSITEMSNAPPEDOUT + .2byte STRINGID_PKMNSITEMCUREDPARALYSIS + .2byte STRINGID_PKMNSITEMDEFROSTEDIT + .2byte STRINGID_PKMNSITEMHEALEDBURN + .2byte STRINGID_PKMNSITEMCUREDPOISON + .2byte STRINGID_PKMNSITEMWOKEIT + +gBerryEffectStringIds:: + .2byte STRINGID_PKMNSITEMCUREDPROBLEM + .2byte STRINGID_PKMNSITEMNORMALIZEDSTATUS + +gBRNPreventionStringIds:: + .2byte STRINGID_PKMNSXPREVENTSBURNS + .2byte STRINGID_PKMNSXPREVENTSYSZ + .2byte STRINGID_PKMNSXHADNOEFFECTONY + +gPRLZPreventionStringIds:: + .2byte STRINGID_PKMNPREVENTSPARALYSISWITH + .2byte STRINGID_PKMNSXPREVENTSYSZ + .2byte STRINGID_PKMNSXHADNOEFFECTONY + +gPSNPreventionStringIds:: + .2byte STRINGID_PKMNPREVENTSPOISONINGWITH + .2byte STRINGID_PKMNSXPREVENTSYSZ + .2byte STRINGID_PKMNSXHADNOEFFECTONY + +gItemSwapStringIds:: + .2byte STRINGID_PKMNOBTAINEDX + .2byte STRINGID_PKMNOBTAINEDX2 + .2byte STRINGID_PKMNOBTAINEDXYOBTAINEDZ + +gFlashFireStringIds:: + .2byte STRINGID_PKMNRAISEDFIREPOWERWITH + .2byte STRINGID_PKMNSXMADEYINEFFECTIVE + +gCaughtMonStringIds:: + .2byte STRINGID_PKMNTRANSFERREDSOMEONESPC + .2byte STRINGID_PKMNTRANSFERREDBILLSPC + .2byte STRINGID_PKMNBOXSOMEONESPCFULL + .2byte STRINGID_PKMNBOXBILLSPCFULL + +gDoubleBattleRecallStrings:: + .2byte STRINGID_TRAINER1MON1COMEBACK + .2byte STRINGID_TRAINER1MON1COMEBACK + .2byte STRINGID_TRAINER1MON2COMEBACK + .2byte STRINGID_TRAINER1MON1AND2COMEBACK gTrappingMoves:: @ 83FE664 .2byte MOVE_BIND diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 8c049f4e0..b802723b7 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -1,556 +1,4392 @@ +#include "constants/moves.h" +#include "constants/battle.h" +#include "constants/battle_move_effects.h" +#include "constants/battle_script_commands.h" +#include "constants/battle_anim.h" +#include "constants/items.h" +#include "constants/abilities.h" +#include "constants/species.h" +#include "constants/pokemon.h" +#include "constants/songs.h" +#include "constants/trainers.h" +#include "constants/game_stat.h" +#include "battle_string_ids.h" + .include "asm/macros/battle_script.inc" +@ Define these here since misc_constants.inc conflicts with the C headers + .set NULL, 0 + .set FALSE, 0 + .set TRUE, 1 .section script_data, "aw", %progbits - -gBattleScriptsForMoveEffects:: @ 81D65A8 - .incbin "baserom.gba", 0x1D65A8, 0x388 - -BattleScript_HitFromCritCalc:: @ 81D6930 - .incbin "baserom.gba", 0x1D6930, 0x1E - -BattleScript_MoveEnd:: @ 81D694E - .incbin "baserom.gba", 0x1D694E, 0x12 - -BattleScript_MoveMissedPause:: @ 81D6960 - .incbin "baserom.gba", 0x1D6960, 0x271 - -BattleScript_StatUp:: @ 81D6BD1 - .incbin "baserom.gba", 0x1D6BD1, 0x91 - -BattleScript_StatDown:: @ 81D6C62 - .incbin "baserom.gba", 0x1D6C62, 0x6E0 - -BattleScript_MoveUsedMustRecharge:: @ 81D7342 - .incbin "baserom.gba", 0x1D7342, 0xA75 - -BattleScript_PresentHealTarget:: @ 81D7DB7 - .incbin "baserom.gba", 0x1D7DB7, 0x1A - -BattleScript_AlreadyAtFullHp:: @ 81D7DD1 - .incbin "baserom.gba", 0x1D7DD1, 0x21 - -BattleScript_ButItFailed:: @ 81D7DF2 - .incbin "baserom.gba", 0x1D7DF2, 0x882 - -BattleScript_FaintAttacker:: @ 81D8674 - .incbin "baserom.gba", 0x1D8674, 0x10 - -BattleScript_FaintTarget:: @ 81D8684 - .incbin "baserom.gba", 0x1D8684, 0x10 - -BattleScript_GiveExp:: @ 81D8694 - .incbin "baserom.gba", 0x1D8694, 0x9 - -BattleScript_HandleFaintedMon:: @ 81D869D - .incbin "baserom.gba", 0x1D869D, 0x152 - -BattleScript_LocalTrainerBattleWon:: @ 81D87EF - .incbin "baserom.gba", 0x1D87EF, 0x14 - -BattleScript_PayDayMoneyAndPickUpItems:: @ 81D8803 - .incbin "baserom.gba", 0x1D8803, 0x3 - -BattleScript_LocalBattleLost:: @ 81D8806 - .incbin "baserom.gba", 0x1D8806, 0xC6 - -BattleScript_LinkBattleWonOrLost:: @ 81D88CC - .incbin "baserom.gba", 0x1D88CC, 0xB - -gUnknown_81D88D7:: @ 81D88D7 - .incbin "baserom.gba", 0x1D88D7, 0x2A - -BattleScript_SmokeBallEscape:: @ 81D8901 - .incbin "baserom.gba", 0x1D8901, 0xE - -BattleScript_RanAwayUsingMonAbility:: @ 81D890F - .incbin "baserom.gba", 0x1D890F, 0x7 - -BattleScript_GotAwaySafely:: @ 81D8916 - .incbin "baserom.gba", 0x1D8916, 0x7 - -BattleScript_WildMonFled:: @ 81D891D - .incbin "baserom.gba", 0x1D891D, 0x7 - -BattleScript_PrintCantRunFromTrainer:: @ 81D8924 - .incbin "baserom.gba", 0x1D8924, 0x16 - -BattleScript_PrintFailedToRunString:: @ 81D893A - .incbin "baserom.gba", 0x1D893A, 0x9 - -BattleScript_PrintCantEscapeFromBattle:: @ 81D8943 - .incbin "baserom.gba", 0x1D8943, 0x6 - -BattleScript_PrintFullBox:: @ 81D8949 - .incbin "baserom.gba", 0x1D8949, 0x4 - -BattleScript_ActionSwitch:: @ 81D894D - .incbin "baserom.gba", 0x1D894D, 0xA4 - -BattleScript_Pausex20:: @ 81D89F1 - .incbin "baserom.gba", 0x1D89F1, 0x4 - -BattleScript_LevelUp:: @ 81D89F5 - .incbin "baserom.gba", 0x1D89F5, 0x6F - -BattleScript_RainContinuesOrEnds:: @ 81D8A64 - .incbin "baserom.gba", 0x1D8A64, 0x1B - -BattleScript_DamagingWeatherContinues:: @ 81D8A7F - .incbin "baserom.gba", 0x1D8A7F, 0x82 - -BattleScript_SandStormHailEnds:: @ 81D8B01 - .incbin "baserom.gba", 0x1D8B01, 0x9 - -BattleScript_SunlightContinues:: @ 81D8B0A - .incbin "baserom.gba", 0x1D8B0A, 0xE - -BattleScript_SunlightFaded:: @ 81D8B18 - .incbin "baserom.gba", 0x1D8B18, 0x7 - -BattleScript_OverworldWeatherStarts:: @ 81D8B1F - .incbin "baserom.gba", 0x1D8B1F, 0x13 - -BattleScript_SideStatusWoreOff:: @ 81D8B32 - .incbin "baserom.gba", 0x1D8B32, 0x11 - -BattleScript_SafeguardEnds:: @ 81D8B43 - .incbin "baserom.gba", 0x1D8B43, 0xA - -BattleScript_LeechSeedTurnDrain:: @ 81D8B4D - .incbin "baserom.gba", 0x1D8B4D, 0x5C - -BattleScript_BideStoringEnergy:: @ 81D8BA9 - .incbin "baserom.gba", 0x1D8BA9, 0xB - -BattleScript_BideAttack:: @ 81D8BB4 - .incbin "baserom.gba", 0x1D8BB4, 0x48 - -BattleScript_BideNoEnergyToAttack:: @ 81D8BFC - .incbin "baserom.gba", 0x1D8BFC, 0x14 - -BattleScript_SuccessForceOut:: @ 81D8C10 - .incbin "baserom.gba", 0x1D8C10, 0x2E - -BattleScript_MistProtected:: @ 81D8C3E - .incbin "baserom.gba", 0x1D8C3E, 0xA - -BattleScript_RageIsBuilding:: @ 81D8C48 - .incbin "baserom.gba", 0x1D8C48, 0x7 - -BattleScript_MoveUsedIsDisabled:: @ 81D8C4F - .incbin "baserom.gba", 0x1D8C4F, 0xB - -BattleScript_SelectingDisabledMove:: @ 81D8C5A - .incbin "baserom.gba", 0x1D8C5A, 0x4 - -BattleScript_DisabledNoMore:: @ 81D8C5E - .incbin "baserom.gba", 0x1D8C5E, 0x7 - -BattleScript_EncoredNoMore:: @ 81D8C65 - .incbin "baserom.gba", 0x1D8C65, 0x7 - -BattleScript_DestinyBondTakesLife:: @ 81D8C6C - .incbin "baserom.gba", 0x1D8C6C, 0x1B - -BattleScript_SpikesOnAttacker:: @ 81D8C87 - .incbin "baserom.gba", 0x1D8C87, 0x37 - -BattleScript_SpikesOnTarget:: @ 81D8CBE - .incbin "baserom.gba", 0x1D8CBE, 0x37 - -BattleScript_SpikesOnFaintedBattler:: @ 81D8CF5 - .incbin "baserom.gba", 0x1D8CF5, 0x3E - -BattleScript_PerishSongTakesLife:: @ 81D8D33 - .incbin "baserom.gba", 0x1D8D33, 0x1B - -BattleScript_PerishSongCountGoesDown:: @ 81D8D4E - .incbin "baserom.gba", 0x1D8D4E, 0x7 - -BattleScript_AllStatsUp:: @ 81D8D55 - .incbin "baserom.gba", 0x1D8D55, 0x9C - -BattleScript_RapidSpinAway:: @ 81D8DF1 - .incbin "baserom.gba", 0x1D8DF1, 0x2 - -BattleScript_WrapFree:: @ 81D8DF3 - .incbin "baserom.gba", 0x1D8DF3, 0x11 - -BattleScript_LeechSeedFree:: @ 81D8E04 - .incbin "baserom.gba", 0x1D8E04, 0x7 - -BattleScript_SpikesFree:: @ 81D8E0B - .incbin "baserom.gba", 0x1D8E0B, 0x7 - -BattleScript_MonTookFutureAttack:: @ 81D8E12 - .incbin "baserom.gba", 0x1D8E12, 0x8E - -BattleScript_NoMovesLeft:: @ 81D8EA0 - .incbin "baserom.gba", 0x1D8EA0, 0x4 - -BattleScript_SelectingMoveWithNoPP:: @ 81D8EA4 - .incbin "baserom.gba", 0x1D8EA4, 0x4 - -BattleScript_NoPPForMove:: @ 81D8EA8 - .incbin "baserom.gba", 0x1D8EA8, 0xF - -BattleScript_SelectingTormentedMove:: @ 81D8EB7 - .incbin "baserom.gba", 0x1D8EB7, 0xF - -BattleScript_SelectingNotAllowedMoveTaunt:: @ 81D8EC6 - .incbin "baserom.gba", 0x1D8EC6, 0x4 - -BattleScript_MoveUsedIsTaunted:: @ 81D8ECA - .incbin "baserom.gba", 0x1D8ECA, 0xB - -BattleScript_WishComesTrue:: @ 81D8ED5 - .incbin "baserom.gba", 0x1D8ED5, 0x37 - -BattleScript_IngrainTurnHeal:: @ 81D8F0C - .incbin "baserom.gba", 0x1D8F0C, 0x29 - -BattleScript_AtkDefDown:: @ 81D8F35 - .incbin "baserom.gba", 0x1D8F35, 0x51 - -BattleScript_KnockedOff:: @ 81D8F86 - .incbin "baserom.gba", 0x1D8F86, 0xE - -BattleScript_MoveUsedIsImprisoned:: @ 81D8F94 - .incbin "baserom.gba", 0x1D8F94, 0xB - -BattleScript_SelectingImprisonedMove:: @ 81D8F9F - .incbin "baserom.gba", 0x1D8F9F, 0x4 - -BattleScript_GrudgeTakesPp:: @ 81D8FA3 - .incbin "baserom.gba", 0x1D8FA3, 0x7 - -BattleScript_MagicCoatBounce:: @ 81D8FAA - .incbin "baserom.gba", 0x1D8FAA, 0x18 - -BattleScript_SnatchedMove:: @ 81D8FC2 - .incbin "baserom.gba", 0x1D8FC2, 0x1B - -BattleScript_EnduredMsg:: @ 81D8FDD - .incbin "baserom.gba", 0x1D8FDD, 0x7 - -BattleScript_OneHitKOMsg:: @ 81D8FE4 - .incbin "baserom.gba", 0x1D8FE4, 0x7 - -BattleScript_SAtkDown2:: @ 81D8FEB - .incbin "baserom.gba", 0x1D8FEB, 0x2A - -BattleScript_FocusPunchSetUp:: @ 81D9015 - .incbin "baserom.gba", 0x1D9015, 0x14 - -BattleScript_MoveUsedIsAsleep:: @ 81D9029 - .incbin "baserom.gba", 0x1D9029, 0xD - -BattleScript_MoveUsedWokeUp:: @ 81D9036 - .incbin "baserom.gba", 0x1D9036, 0x14 - -BattleScript_MonWokeUpInUproar:: @ 81D904A - .incbin "baserom.gba", 0x1D904A, 0x9 - -BattleScript_PoisonTurnDmg:: @ 81D9053 - .incbin "baserom.gba", 0x1D9053, 0x22 - -BattleScript_BurnTurnDmg:: @ 81D9075 - .incbin "baserom.gba", 0x1D9075, 0xB - -BattleScript_MoveUsedIsFrozen:: @ 81D9080 - .incbin "baserom.gba", 0x1D9080, 0xD - -BattleScript_MoveUsedUnfroze:: @ 81D908D - .incbin "baserom.gba", 0x1D908D, 0xB - -BattleScript_DefrostedViaFireMove:: @ 81D9098 - .incbin "baserom.gba", 0x1D9098, 0x9 - -BattleScript_MoveUsedIsParalyzed:: @ 81D90A1 - .incbin "baserom.gba", 0x1D90A1, 0x10 - -BattleScript_MoveUsedFlinched:: @ 81D90B1 - .incbin "baserom.gba", 0x1D90B1, 0xB - -BattleScript_PrintUproarOverTurns:: @ 81D90BC - .incbin "baserom.gba", 0x1D90BC, 0x9 - -BattleScript_ThrashConfuses:: @ 81D90C5 - .incbin "baserom.gba", 0x1D90C5, 0xE - -BattleScript_MoveUsedIsConfused:: @ 81D90D3 - .incbin "baserom.gba", 0x1D90D3, 0x43 - -BattleScript_MoveUsedIsConfusedNoMore:: @ 81D9116 - .incbin "baserom.gba", 0x1D9116, 0x7 - -BattleScript_PrintPayDayMoneyString:: @ 81D911D - .incbin "baserom.gba", 0x1D911D, 0x7 - -BattleScript_WrapTurnDmg:: @ 81D9124 - .incbin "baserom.gba", 0x1D9124, 0x12 - -BattleScript_WrapEnds:: @ 81D9136 - .incbin "baserom.gba", 0x1D9136, 0x7 - -BattleScript_MoveUsedIsInLove:: @ 81D913D - .incbin "baserom.gba", 0x1D913D, 0xD - -BattleScript_MoveUsedIsInLoveCantAttack:: @ 81D914A - .incbin "baserom.gba", 0x1D914A, 0xB - -BattleScript_NightmareTurnDmg:: @ 81D9155 - .incbin "baserom.gba", 0x1D9155, 0x11 - -BattleScript_CurseTurnDmg:: @ 81D9166 - .incbin "baserom.gba", 0x1D9166, 0x11 - -BattleScript_TargetPRLZHeal:: @ 81D9177 - .incbin "baserom.gba", 0x1D9177, 0x9 - -gUnknown_81D9180:: @ 81D9180 - .incbin "baserom.gba", 0x1D9180, 0x12 - -gUnknown_81D9192:: @ 81D9192 - .incbin "baserom.gba", 0x1D9192, 0xF - -gUnknown_81D91A1:: @ 81D91A1 - .incbin "baserom.gba", 0x1D91A1, 0x18 - -BattleScript_MoveEffectSleep:: @ 81D91B9 - .incbin "baserom.gba", 0x1D91B9, 0xE - -BattleScript_YawnMakesAsleep:: @ 81D91C7 - .incbin "baserom.gba", 0x1D91C7, 0xE - -BattleScript_MoveEffectPoison:: @ 81D91D5 - .incbin "baserom.gba", 0x1D91D5, 0xF - -BattleScript_MoveEffectBurn:: @ 81D91E4 - .incbin "baserom.gba", 0x1D91E4, 0xF - -BattleScript_MoveEffectFreeze:: @ 81D91F3 - .incbin "baserom.gba", 0x1D91F3, 0xF - -BattleScript_MoveEffectParalysis:: @ 81D9202 - .incbin "baserom.gba", 0x1D9202, 0xF - -BattleScript_MoveEffectUproar:: @ 81D9211 - .incbin "baserom.gba", 0x1D9211, 0x7 - -BattleScript_MoveEffectToxic:: @ 81D9218 - .incbin "baserom.gba", 0x1D9218, 0xD - -BattleScript_MoveEffectPayDay:: @ 81D9225 - .incbin "baserom.gba", 0x1D9225, 0x7 - -BattleScript_MoveEffectWrap:: @ 81D922C - .incbin "baserom.gba", 0x1D922C, 0x9 - -BattleScript_MoveEffectConfusion:: @ 81D9235 - .incbin "baserom.gba", 0x1D9235, 0xE - -BattleScript_MoveEffectRecoil:: @ 81D9243 - .incbin "baserom.gba", 0x1D9243, 0x2E - -BattleScript_ItemSteal:: @ 81D9271 - .incbin "baserom.gba", 0x1D9271, 0xE - -BattleScript_DrizzleActivates:: @ 81D927F - .incbin "baserom.gba", 0x1D927F, 0x14 - -BattleScript_SpeedBoostActivates:: @ 81D9293 - .incbin "baserom.gba", 0x1D9293, 0xE - -BattleScript_TraceActivates:: @ 81D92A1 - .incbin "baserom.gba", 0x1D92A1, 0xA - -BattleScript_RainDishActivates:: @ 81D92AB - .incbin "baserom.gba", 0x1D92AB, 0x14 - -BattleScript_SandstreamActivates:: @ 81D92BF - .incbin "baserom.gba", 0x1D92BF, 0x14 - -BattleScript_ShedSkinActivates:: @ 81D92D3 - .incbin "baserom.gba", 0x1D92D3, 0x25 - -BattleScript_CastformChange:: @ 81D92F8 - .incbin "baserom.gba", 0x1D92F8, 0xF - -BattleScript_IntimidateActivatesEnd3:: @ 81D9307 - .incbin "baserom.gba", 0x1D9307, 0x9 - -BattleScript_IntimidateActivates:: @ 81D9310 - .incbin "baserom.gba", 0x1D9310, 0x69 - -BattleScript_DroughtActivates:: @ 81D9379 - .incbin "baserom.gba", 0x1D9379, 0x14 - -BattleScript_TookAttack:: @ 81D938D - .incbin "baserom.gba", 0x1D938D, 0x14 - -BattleScript_SturdyPreventsOHKO:: @ 81D93A1 - .incbin "baserom.gba", 0x1D93A1, 0xE - -BattleScript_DampStopsExplosion:: @ 81D93AF - .incbin "baserom.gba", 0x1D93AF, 0xE - -BattleScript_MoveHPDrain_PPLoss:: @ 81D93BD - .incbin "baserom.gba", 0x1D93BD, 0x1 - -BattleScript_MoveHPDrain:: @ 81D93BE - .incbin "baserom.gba", 0x1D93BE, 0x22 - -BattleScript_MonMadeMoveUseless_PPLoss:: @ 81D93E0 - .incbin "baserom.gba", 0x1D93E0, 0x1 - -BattleScript_MonMadeMoveUseless:: @ 81D93E1 - .incbin "baserom.gba", 0x1D93E1, 0x15 - -BattleScript_FlashFireBoost_PPLoss:: @ 81D93F6 - .incbin "baserom.gba", 0x1D93F6, 0x1 - -BattleScript_FlashFireBoost:: @ 81D93F7 - .incbin "baserom.gba", 0x1D93F7, 0x1F - -BattleScript_AbilityNoStatLoss:: @ 81D9416 - .incbin "baserom.gba", 0x1D9416, 0xA - -BattleScript_BRNPrevention:: @ 81D9420 - .incbin "baserom.gba", 0x1D9420, 0xC - -BattleScript_PRLZPrevention:: @ 81D942C - .incbin "baserom.gba", 0x1D942C, 0xC - -BattleScript_PSNPrevention:: @ 81D9438 - .incbin "baserom.gba", 0x1D9438, 0xC - -BattleScript_ObliviousPreventsAttraction:: @ 81D9444 - .incbin "baserom.gba", 0x1D9444, 0xE - -BattleScript_FlinchPrevention:: @ 81D9452 - .incbin "baserom.gba", 0x1D9452, 0x1C - -BattleScript_SoundproofProtected:: @ 81D946E - .incbin "baserom.gba", 0x1D946E, 0x10 - -BattleScript_AbilityNoSpecificStatLoss:: @ 81D947E - .incbin "baserom.gba", 0x1D947E, 0x10 - -BattleScript_StickyHoldActivates:: @ 81D948E - .incbin "baserom.gba", 0x1D948E, 0xE - -BattleScript_ColorChangeActivates:: @ 81D949C - .incbin "baserom.gba", 0x1D949C, 0x7 - -BattleScript_RoughSkinActivates:: @ 81D94A3 - .incbin "baserom.gba", 0x1D94A3, 0x1B - -BattleScript_CuteCharmActivates:: @ 81D94BE - .incbin "baserom.gba", 0x1D94BE, 0xD - -BattleScript_ApplySecondaryEffect:: @ 81D94CB - .incbin "baserom.gba", 0x1D94CB, 0x3 - -BattleScript_SynchronizeActivates:: @ 81D94CE - .incbin "baserom.gba", 0x1D94CE, 0x3 - -BattleScript_AbilityCuredStatus:: @ 81D94D1 - .incbin "baserom.gba", 0x1D94D1, 0x9 - -BattleScript_IgnoresWhileAsleep:: @ 81D94DA - .incbin "baserom.gba", 0x1D94DA, 0x10 - -BattleScript_IgnoresAndUsesRandomMove:: @ 81D94EA - .incbin "baserom.gba", 0x1D94EA, 0x8 - -BattleScript_MoveUsedLoafingAround:: @ 81D94F2 - .incbin "baserom.gba", 0x1D94F2, 0x12 - -BattleScript_IgnoresAndFallsAsleep:: @ 81D9504 - .incbin "baserom.gba", 0x1D9504, 0x17 - -BattleScript_IgnoresAndHitsItself:: @ 81D951B - .incbin "baserom.gba", 0x1D951B, 0xB - -BattleScript_SubstituteFade:: @ 81D9526 - .incbin "baserom.gba", 0x1D9526, 0xB - -BattleScript_BerryCurePrlzEnd2:: @ 81D9531 - .incbin "baserom.gba", 0x1D9531, 0x6 - -BattleScript_BerryCureParRet:: @ 81D9537 - .incbin "baserom.gba", 0x1D9537, 0x12 - -BattleScript_BerryCurePsnEnd2:: @ 81D9549 - .incbin "baserom.gba", 0x1D9549, 0x6 - -BattleScript_BerryCurePsnRet:: @ 81D954F - .incbin "baserom.gba", 0x1D954F, 0x12 - -BattleScript_BerryCureBrnEnd2:: @ 81D9561 - .incbin "baserom.gba", 0x1D9561, 0x6 - -BattleScript_BerryCureBrnRet:: @ 81D9567 - .incbin "baserom.gba", 0x1D9567, 0x12 - -BattleScript_BerryCureFrzEnd2:: @ 81D9579 - .incbin "baserom.gba", 0x1D9579, 0x6 - -BattleScript_BerryCureFrzRet:: @ 81D957F - .incbin "baserom.gba", 0x1D957F, 0x12 - -BattleScript_BerryCureSlpEnd2:: @ 81D9591 - .incbin "baserom.gba", 0x1D9591, 0x6 - -BattleScript_BerryCureSlpRet:: @ 81D9597 - .incbin "baserom.gba", 0x1D9597, 0x12 - -BattleScript_BerryCureConfusionEnd2:: @ 81D95A9 - .incbin "baserom.gba", 0x1D95A9, 0x6 - -BattleScript_BerryCureConfusionRet:: @ 81D95AF - .incbin "baserom.gba", 0x1D95AF, 0x10 - -BattleScript_BerryCureChosenStatusEnd2:: @ 81D95BF - .incbin "baserom.gba", 0x1D95BF, 0x6 - -BattleScript_BerryCureChosenStatusRet:: @ 81D95C5 - .incbin "baserom.gba", 0x1D95C5, 0x14 - -BattleScript_WhiteHerbEnd2:: @ 81D95D9 - .incbin "baserom.gba", 0x1D95D9, 0x6 - -BattleScript_WhiteHerbRet:: @ 81D95DF - .incbin "baserom.gba", 0x1D95DF, 0x10 - -BattleScript_ItemHealHP_RemoveItem:: @ 81D95EF - .incbin "baserom.gba", 0x1D95EF, 0x1D - -BattleScript_BerryPPHealEnd2:: @ 81D960C - .incbin "baserom.gba", 0x1D960C, 0x10 - -BattleScript_ItemHealHP_End2:: @ 81D961C - .incbin "baserom.gba", 0x1D961C, 0x6 - -BattleScript_ItemHealHP_Ret:: @ 81D9622 - .incbin "baserom.gba", 0x1D9622, 0x1B - -BattleScript_SelectingNotAllowedMoveChoiceItem:: @ 81D963D - .incbin "baserom.gba", 0x1D963D, 0x4 - -BattleScript_HangedOnMsg:: @ 81D9641 - .incbin "baserom.gba", 0x1D9641, 0xE - -BattleScript_BerryConfuseHealEnd2:: @ 81D964F - .incbin "baserom.gba", 0x1D964F, 0x2A - -BattleScript_BerryStatRaiseEnd2:: @ 81D9679 - .incbin "baserom.gba", 0x1D9679, 0x1B - -BattleScript_BerryFocusEnergyEnd2:: @ 81D9694 - .incbin "baserom.gba", 0x1D9694, 0x10 - -BattleScript_ActionSelectionItemsCantBeUsed:: @ 81D96A4 - .incbin "baserom.gba", 0x1D96A4, 0x4 - -BattleScript_FlushMessageBox:: @ 81D96A8 - .incbin "baserom.gba", 0x1D96A8, 0x4 + .align 2 + +gBattleScriptsForMoveEffects:: + .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_EffectHit + .4byte BattleScript_EffectSpecialAttackUp + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectEvasionUp + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectAttackDown + .4byte BattleScript_EffectDefenseDown + .4byte BattleScript_EffectSpeedDown + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHit + .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_EffectHit + .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_EffectHit + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectTransform + .4byte BattleScript_EffectAttackDown2 + .4byte BattleScript_EffectDefenseDown2 + .4byte BattleScript_EffectSpeedDown2 + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectSpecialDefenseDown2 + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHit + .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_EffectHit + .4byte BattleScript_EffectSkyAttack + .4byte BattleScript_EffectConfuseHit + .4byte BattleScript_EffectTwineedle + .4byte BattleScript_EffectHit + .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_EffectHit + .4byte BattleScript_EffectSleepTalk + .4byte BattleScript_EffectDestinyBond + .4byte BattleScript_EffectFlail + .4byte BattleScript_EffectSpite + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectHealBell + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectTripleKick + .4byte BattleScript_EffectThief + .4byte BattleScript_EffectMeanLook + .4byte BattleScript_EffectNightmare + .4byte BattleScript_EffectMinimize + .4byte BattleScript_EffectCurse + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectProtect + .4byte BattleScript_EffectSpikes + .4byte BattleScript_EffectForesight + .4byte BattleScript_EffectPerishSong + .4byte BattleScript_EffectSandstorm + .4byte BattleScript_EffectProtect + .4byte BattleScript_EffectRollout + .4byte BattleScript_EffectSwagger + .4byte BattleScript_EffectFuryCutter + .4byte BattleScript_EffectAttract + .4byte BattleScript_EffectReturn + .4byte BattleScript_EffectPresent + .4byte BattleScript_EffectReturn + .4byte BattleScript_EffectSafeguard + .4byte BattleScript_EffectThawHit + .4byte BattleScript_EffectMagnitude + .4byte BattleScript_EffectBatonPass + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectRapidSpin + .4byte BattleScript_EffectSonicboom + .4byte BattleScript_EffectHit + .4byte BattleScript_EffectMorningSun + .4byte BattleScript_EffectMorningSun + .4byte BattleScript_EffectMorningSun + .4byte BattleScript_EffectHiddenPower + .4byte BattleScript_EffectRainDance + .4byte BattleScript_EffectSunnyDay + .4byte BattleScript_EffectDefenseUpHit + .4byte BattleScript_EffectAttackUpHit + .4byte BattleScript_EffectAllStatsUpHit + .4byte BattleScript_EffectHit + .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_EffectFlinchMinimizeHit + .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_EffectHit + .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_EffectBurnHit + .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_EffectPoisonHit + .4byte BattleScript_EffectMudSport + .4byte BattleScript_EffectCalmMind + .4byte BattleScript_EffectDragonDance + .4byte BattleScript_EffectCamouflage + +BattleScript_EffectHit:: + jumpifnotmove MOVE_SURF, BattleScript_HitFromAtkCanceler + jumpifnostatus3 BS_TARGET, STATUS3_UNDERWATER, BattleScript_HitFromAtkCanceler + orword gHitMarker, HITMARKER_IGNORE_UNDERWATER + setbyte sDMG_MULTIPLIER, 2 +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 BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + seteffectwithchance + tryfaintmon BS_TARGET, 0, NULL +BattleScript_MoveEnd:: + moveendall + end + +BattleScript_MakeMoveMissed:: + orbyte gMoveResultFlags, MOVE_RESULT_MISSED +BattleScript_PrintMoveMissed:: + attackstring + ppreduce +BattleScript_MoveMissedPause:: + pause 0x20 +BattleScript_MoveMissed:: + effectivenesssound + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSleep:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_AlreadyAsleep + jumpifcantmakeasleep BattleScript_CantMakeAsleep + jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected + attackanimation + waitanimation + setmoveeffect MOVE_EFFECT_SLEEP + seteffectprimary + goto BattleScript_MoveEnd + +BattleScript_AlreadyAsleep:: + 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:: + setmoveeffect MOVE_EFFECT_POISON + goto BattleScript_EffectHit + +BattleScript_EffectAbsorb:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + critcalc + damagecalc + typecalc + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + negativedamage + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + jumpifability BS_TARGET, ABILITY_LIQUID_OOZE, BattleScript_AbsorbLiquidOoze + setbyte cMULTISTRING_CHOOSER, 0 + goto BattleScript_AbsorbUpdateHp + +BattleScript_AbsorbLiquidOoze:: + manipulatedamage 0 + setbyte cMULTISTRING_CHOOSER, 1 +BattleScript_AbsorbUpdateHp:: + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + jumpifmovehadnoeffect BattleScript_AbsorbTryFainting + printfromtable gLeechSeedDrainStringIds + waitmessage 0x40 +BattleScript_AbsorbTryFainting:: + tryfaintmon BS_ATTACKER, 0, NULL + tryfaintmon BS_TARGET, 0, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectBurnHit:: + setmoveeffect MOVE_EFFECT_BURN + goto BattleScript_EffectHit + +BattleScript_EffectFreezeHit:: + setmoveeffect MOVE_EFFECT_FREEZE + goto BattleScript_EffectHit + +BattleScript_EffectParalyzeHit:: + setmoveeffect MOVE_EFFECT_PARALYSIS + goto BattleScript_EffectHit + +BattleScript_EffectExplosion:: + attackcanceler + attackstring + ppreduce + faintifabilitynotdamp + setatkhptozero + waitstate + jumpifbyte CMP_NO_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_MISSED, BattleScript_ExplosionDoAnimStartLoop + call BattleScript_PreserveMissedBitDoMoveAnim + goto BattleScript_ExplosionLoop + +BattleScript_ExplosionDoAnimStartLoop:: + attackanimation + waitanimation +BattleScript_ExplosionLoop:: + movevaluescleanup + critcalc + damagecalc + typecalc + adjustnormaldamage + accuracycheck BattleScript_ExplosionMissed, ACC_CURR_MOVE + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + tryfaintmon BS_TARGET, 0, NULL + moveendto 16 + jumpifnexttargetvalid BattleScript_ExplosionLoop + tryfaintmon BS_ATTACKER, 0, NULL + end + +BattleScript_ExplosionMissed:: + effectivenesssound + resultmessage + waitmessage 0x40 + moveendto 16 + jumpifnexttargetvalid BattleScript_ExplosionLoop + tryfaintmon BS_ATTACKER, 0, NULL + end + +BattleScript_PreserveMissedBitDoMoveAnim:: + bicbyte gMoveResultFlags, MOVE_RESULT_MISSED + attackanimation + waitanimation + orbyte gMoveResultFlags, MOVE_RESULT_MISSED + return + +BattleScript_EffectDreamEater:: + attackcanceler + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_DreamEaterNoEffect + jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_DreamEaterWorked +BattleScript_DreamEaterNoEffect:: + attackstring + ppreduce + waitmessage 0x40 + goto BattleScript_WasntAffected + +BattleScript_DreamEaterWorked:: + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + critcalc + damagecalc + typecalc + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + negativedamage + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + jumpifmovehadnoeffect BattleScript_DreamEaterTryFaintEnd + printstring STRINGID_PKMNDREAMEATEN + waitmessage 0x40 +BattleScript_DreamEaterTryFaintEnd:: + tryfaintmon BS_TARGET, 0, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectMirrorMove:: + attackcanceler + attackstring + pause 0x40 + trymirrormove + ppreduce + orbyte gMoveResultFlags, MOVE_RESULT_FAILED + printstring STRINGID_MIRRORMOVEFAILED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectAttackUp:: + setstatchanger STAT_ATK, 1, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectDefenseUp:: + setstatchanger STAT_DEF, 1, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectSpecialAttackUp:: + setstatchanger STAT_SPATK, 1, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectEvasionUp:: + setstatchanger STAT_EVASION, 1, FALSE +BattleScript_EffectStatUp:: + attackcanceler +BattleScript_EffectStatUpAfterAtkCanceler:: + attackstring + ppreduce + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_StatUpEnd + jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_StatUpAttackAnim + pause 0x20 + goto BattleScript_StatUpPrintString + +BattleScript_StatUpAttackAnim:: + attackanimation + waitanimation +BattleScript_StatUpDoAnim:: + setgraphicalstatchangevalues + playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 +BattleScript_StatUpPrintString:: + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_StatUpEnd:: + goto BattleScript_MoveEnd + +BattleScript_StatUp:: + playanimation BS_EFFECT_BATTLER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatUpStringIds + waitmessage 0x40 + return + +BattleScript_EffectAttackDown:: + setstatchanger STAT_ATK, 1, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectDefenseDown:: + setstatchanger STAT_DEF, 1, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectSpeedDown:: + setstatchanger STAT_SPEED, 1, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectAccuracyDown:: + setstatchanger STAT_ACC, 1, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectEvasionDown:: + setstatchanger STAT_EVASION, 1, TRUE +BattleScript_EffectStatDown:: + attackcanceler + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailedAtkStringPpReduce + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + statbuffchange STAT_CHANGE_BS_PTR, BattleScript_StatDownEnd + jumpifbyte CMP_LESS_THAN, cMULTISTRING_CHOOSER, 2, BattleScript_StatDownDoAnim + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 3, BattleScript_StatDownEnd + pause 0x20 + goto BattleScript_StatDownPrintString + +BattleScript_StatDownDoAnim:: + attackanimation + waitanimation + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 +BattleScript_StatDownPrintString:: + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_StatDownEnd:: + goto BattleScript_MoveEnd + +BattleScript_StatDown:: + playanimation BS_EFFECT_BATTLER, B_ANIM_STATS_CHANGE, sB_ANIM_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_CHARGING + setbide + goto BattleScript_MoveEnd + +BattleScript_EffectRampage:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_EffectRampage2 + ppreduce +BattleScript_EffectRampage2:: + confuseifrepeatingattackends + goto BattleScript_HitFromCritCalc + +BattleScript_EffectRoar:: + attackcanceler + attackstring + ppreduce + jumpifability BS_TARGET, ABILITY_SUCTION_CUPS, BattleScript_AbilityPreventsPhasingOut + jumpifstatus3 BS_TARGET, STATUS3_ROOTED, BattleScript_PrintMonIsRooted + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE + forcerandomswitch BattleScript_ButItFailed + +BattleScript_EffectMultiHit:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + setmultihitcounter 0 + initmultihitstring + setbyte sMULTIHIT_EFFECT, 0 +BattleScript_MultiHitLoop:: + jumpifhasnohp BS_ATTACKER, BattleScript_MultiHitEnd + jumpifhasnohp BS_TARGET, BattleScript_MultiHitPrintStrings + jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoMultiHit + jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_MultiHitPrintStrings +BattleScript_DoMultiHit:: + movevaluescleanup + copybyte cEFFECT_CHOOSER, sMULTIHIT_EFFECT + critcalc + damagecalc + typecalc + jumpifmovehadnoeffect BattleScript_MultiHitNoMoreHits + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage 0x40 + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + addbyte gBattleScripting + 12, 1 + moveendto 16 + jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_MultiHitPrintStrings + decrementmultihit BattleScript_MultiHitLoop + goto BattleScript_MultiHitPrintStrings + +BattleScript_MultiHitNoMoreHits:: + pause 0x20 +BattleScript_MultiHitPrintStrings:: + resultmessage + waitmessage 0x40 + jumpifmovehadnoeffect BattleScript_MultiHitEnd + copyarray gBattleTextBuff1, sMULTIHIT_STRING, 6 + printstring STRINGID_HITXTIMES + waitmessage 0x40 +BattleScript_MultiHitEnd:: + seteffectwithchance + tryfaintmon BS_TARGET, 0, NULL + moveendcase 2 + moveendfrom 4 + end + +BattleScript_EffectConversion:: + attackcanceler + attackstring + ppreduce + tryconversiontypechange BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNCHANGEDTYPE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectFlinchHit:: + setmoveeffect MOVE_EFFECT_FLINCH + goto BattleScript_EffectHit + +BattleScript_EffectRestoreHp:: + attackcanceler + attackstring + ppreduce + tryhealhalfhealth BattleScript_AlreadyAtFullHp, BS_ATTACKER + attackanimation + waitanimation + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + printstring STRINGID_PKMNREGAINEDHEALTH + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectToxic:: + attackcanceler + attackstring + ppreduce + jumpifability BS_TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus BS_TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned + jumpifstatus BS_TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned + jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed + jumpiftype BS_TARGET, TYPE_POISON, BattleScript_NotAffected + jumpiftype BS_TARGET, TYPE_STEEL, BattleScript_NotAffected + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected + attackanimation + waitanimation + setmoveeffect MOVE_EFFECT_TOXIC + seteffectprimary + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AlreadyPoisoned:: + pause 0x40 + printstring STRINGID_PKMNALREADYPOISONED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_ImmunityProtected:: + copybyte gEffectBattler, gBattlerTarget + setbyte cMULTISTRING_CHOOSER, 0 + call BattleScript_PSNPrevention + goto BattleScript_MoveEnd + +BattleScript_EffectPayDay:: + setmoveeffect MOVE_EFFECT_PAYDAY + goto BattleScript_EffectHit + +BattleScript_EffectLightScreen:: + attackcanceler + attackstring + ppreduce + setlightscreen + goto BattleScript_PrintReflectLightScreenSafeguardString + +BattleScript_EffectTriAttack:: + setmoveeffect MOVE_EFFECT_TRI_ATTACK + goto BattleScript_EffectHit + +BattleScript_EffectRest:: + attackcanceler + attackstring + ppreduce + jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_RestIsAlreadyAsleep + jumpifcantmakeasleep BattleScript_RestCantSleep + trysetrest BattleScript_AlreadyAtFullHp + pause 0x20 + printfromtable gRestUsedStringIds + waitmessage 0x40 + updatestatusicon BS_ATTACKER + waitstate + goto BattleScript_PresentHealTarget + +BattleScript_RestCantSleep:: + pause 0x40 + printfromtable gUproarAwakeStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_RestIsAlreadyAsleep:: + pause 0x20 + printstring STRINGID_PKMNALREADYASLEEP2 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectOHKO:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + typecalc + jumpifmovehadnoeffect BattleScript_HitFromAtkAnimation + tryKO BattleScript_KOFail + trysetdestinybondtohappen + goto BattleScript_HitFromAtkAnimation + +BattleScript_KOFail:: + pause 0x40 + printfromtable gKOFailedStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRazorWind:: + jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn + jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn + setbyte sTWOTURN_STRINGID, 0 + call BattleScriptFirstChargingTurn + goto BattleScript_MoveEnd + +BattleScript_TwoTurnMovesSecondTurn:: + attackcanceler + setmoveeffect MOVE_EFFECT_CHARGING + setbyte sB_ANIM_TURN, 1 + clearstatusfromeffect BS_ATTACKER + orword gHitMarker, HITMARKER_NO_PPDEDUCT + jumpifnotmove MOVE_SKY_ATTACK, BattleScript_HitFromAccCheck + setmoveeffect MOVE_EFFECT_FLINCH + goto BattleScript_HitFromAccCheck + +BattleScriptFirstChargingTurn:: + attackcanceler + printstring STRINGID_EMPTYSTRING3 + ppreduce + attackanimation + waitanimation + orword gHitMarker, HITMARKER_CHARGING + setmoveeffect MOVE_EFFECT_CHARGING | MOVE_EFFECT_AFFECTS_USER + seteffectprimary + copybyte cMULTISTRING_CHOOSER, sTWOTURN_STRINGID + printfromtable gFirstTurnOfTwoStringIds + waitmessage 0x40 + return + +BattleScript_EffectSuperFang:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE + damagetohalftargethp + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectDragonRage:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE + setword gBattleMoveDamage, 40 + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectTrap:: + jumpifnotmove MOVE_WHIRLPOOL, BattleScript_DoWrapEffect + jumpifnostatus3 BS_TARGET, STATUS3_UNDERWATER, BattleScript_DoWrapEffect + orword gHitMarker, HITMARKER_IGNORE_UNDERWATER + setbyte sDMG_MULTIPLIER, 2 +BattleScript_DoWrapEffect:: + setmoveeffect MOVE_EFFECT_WRAP + goto BattleScript_EffectHit + +BattleScript_EffectDoubleHit:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + setmultihitcounter 2 + initmultihitstring + setbyte sMULTIHIT_EFFECT, 0 + goto BattleScript_MultiHitLoop + +BattleScript_EffectRecoilIfMiss:: + attackcanceler + accuracycheck BattleScript_MoveMissedDoDamage, ACC_CURR_MOVE + goto BattleScript_HitFromAtkString + +BattleScript_MoveMissedDoDamage:: + attackstring + ppreduce + pause 0x40 + resultmessage + waitmessage 0x40 + jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_MoveEnd + printstring STRINGID_PKMNCRASHED + waitmessage 0x40 + damagecalc + typecalc + adjustnormaldamage + manipulatedamage 1 + bicbyte gMoveResultFlags, MOVE_RESULT_MISSED + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + tryfaintmon BS_ATTACKER, 0, NULL + orbyte gMoveResultFlags, MOVE_RESULT_MISSED + goto BattleScript_MoveEnd + +BattleScript_EffectMist:: + attackcanceler + attackstring + ppreduce + setmist + attackanimation + waitanimation + printfromtable gMistUsedStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectFocusEnergy:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 BS_ATTACKER, STATUS2_FOCUS_ENERGY, BattleScript_ButItFailed + setfocusenergy + attackanimation + waitanimation + printfromtable gFocusEnergyUsedStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRecoil:: + setmoveeffect MOVE_EFFECT_RECOIL_25 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN + jumpifnotmove MOVE_STRUGGLE, BattleScript_EffectHit + incrementgamestat GAME_STAT_USED_STRUGGLE + goto BattleScript_EffectHit + +BattleScript_EffectConfuse:: + attackcanceler + attackstring + ppreduce + jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus2 BS_TARGET, STATUS2_CONFUSION, BattleScript_AlreadyConfused + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected + attackanimation + waitanimation + setmoveeffect MOVE_EFFECT_CONFUSION + seteffectprimary + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AlreadyConfused:: + pause 0x20 + printstring STRINGID_PKMNALREADYCONFUSED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectAttackUp2:: + setstatchanger STAT_ATK, 2, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectDefenseUp2:: + setstatchanger STAT_DEF, 2, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectSpeedUp2:: + setstatchanger STAT_SPEED, 2, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectSpecialAttackUp2:: + setstatchanger STAT_SPATK, 2, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectSpecialDefenseUp2:: + setstatchanger STAT_SPDEF, 2, FALSE + goto BattleScript_EffectStatUp + +BattleScript_EffectTransform:: + attackcanceler + attackstring + ppreduce + transformdataexecution + attackanimation + waitanimation + printfromtable gTransformUsedStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectAttackDown2:: + setstatchanger STAT_ATK, 2, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectDefenseDown2:: + setstatchanger STAT_DEF, 2, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectSpeedDown2:: + setstatchanger STAT_SPEED, 2, TRUE + goto BattleScript_EffectStatDown + +BattleScript_EffectSpecialDefenseDown2:: + setstatchanger STAT_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 BS_TARGET, ABILITY_IMMUNITY, BattleScript_ImmunityProtected + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus BS_TARGET, STATUS1_POISON, BattleScript_AlreadyPoisoned + jumpifstatus BS_TARGET, STATUS1_TOXIC_POISON, BattleScript_AlreadyPoisoned + jumpiftype BS_TARGET, TYPE_POISON, BattleScript_NotAffected + jumpiftype BS_TARGET, TYPE_STEEL, BattleScript_NotAffected + jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected + attackanimation + waitanimation + setmoveeffect MOVE_EFFECT_POISON + seteffectprimary + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectParalyze:: + attackcanceler + attackstring + ppreduce + jumpifability BS_TARGET, ABILITY_LIMBER, BattleScript_LimberProtected + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + typecalc + jumpifmovehadnoeffect BattleScript_ButItFailed + jumpifstatus BS_TARGET, STATUS1_PARALYSIS, BattleScript_AlreadyParalyzed + jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected + attackanimation + waitanimation + setmoveeffect MOVE_EFFECT_PARALYSIS + seteffectprimary + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AlreadyParalyzed:: + pause 0x20 + printstring STRINGID_PKMNISALREADYPARALYZED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_LimberProtected:: + copybyte gEffectBattler, gBattlerTarget + setbyte cMULTISTRING_CHOOSER, 0 + call BattleScript_PRLZPrevention + goto BattleScript_MoveEnd + +BattleScript_EffectAttackDownHit:: + setmoveeffect MOVE_EFFECT_ATK_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectDefenseDownHit:: + setmoveeffect MOVE_EFFECT_DEF_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectSpeedDownHit:: + setmoveeffect MOVE_EFFECT_SPD_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectSpecialAttackDownHit:: + setmoveeffect MOVE_EFFECT_SP_ATK_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectSpecialDefenseDownHit:: + setmoveeffect MOVE_EFFECT_SP_DEF_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectAccuracyDownHit:: + setmoveeffect MOVE_EFFECT_ACC_MINUS_1 + goto BattleScript_EffectHit + +BattleScript_EffectSkyAttack:: + jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn + jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn + setbyte sTWOTURN_STRINGID, 3 + call BattleScriptFirstChargingTurn + goto BattleScript_MoveEnd + +BattleScript_EffectConfuseHit:: + setmoveeffect MOVE_EFFECT_CONFUSION + goto BattleScript_EffectHit + +BattleScript_EffectTwineedle:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + setbyte sMULTIHIT_EFFECT, MOVE_EFFECT_POISON + attackstring + ppreduce + setmultihitcounter 2 + initmultihitstring + goto BattleScript_MultiHitLoop + +BattleScript_EffectSubstitute:: + attackcanceler + ppreduce + attackstring + waitstate + jumpifstatus2 BS_ATTACKER, STATUS2_SUBSTITUTE, BattleScript_AlreadyHasSubstitute + setsubstitute + jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 1, BattleScript_SubstituteAnim + pause 0x20 + goto BattleScript_SubstituteString + +BattleScript_SubstituteAnim:: + attackanimation + waitanimation + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER +BattleScript_SubstituteString:: + printfromtable gSubsituteUsedStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AlreadyHasSubstitute:: + pause 0x20 + printstring STRINGID_PKMNHASSUBSTITUTE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRecharge:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + setmoveeffect MOVE_EFFECT_RECHARGE | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN + goto BattleScript_HitFromAtkString + +BattleScript_MoveUsedMustRecharge:: + printstring STRINGID_PKMNMUSTRECHARGE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectRage:: + attackcanceler + accuracycheck BattleScript_RageMiss, ACC_CURR_MOVE + setmoveeffect MOVE_EFFECT_RAGE + seteffectprimary + setmoveeffect 0 + goto BattleScript_HitFromAtkString + +BattleScript_RageMiss:: + setmoveeffect MOVE_EFFECT_RAGE + clearstatusfromeffect BS_ATTACKER + goto BattleScript_PrintMoveMissed + +BattleScript_EffectMimic:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 BS_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 sB_ANIM_TURN, 0 + setbyte sB_ANIM_TARGETS_HIT, 0 + metronome +BattleScript_EffectLeechSeed:: + attackcanceler + attackstring + pause 0x20 + ppreduce + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck .+6, ACC_CURR_MOVE + setseeded + attackanimation + waitanimation + printfromtable gLeechSeedStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSplash:: + attackcanceler + attackstring + ppreduce + attackanimation + waitanimation + incrementgamestat GAME_STAT_USED_SPLASH + printstring STRINGID_BUTNOTHINGHAPPENED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectDisable:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + disablelastusedattack BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNMOVEWASDISABLED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectLevelDamage:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE + dmgtolevel + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectPsywave:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE + psywavedamageeffect + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectCounter:: + attackcanceler + counterdamagecalculator BattleScript_ButItFailedAtkStringPpReduce + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc2 + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectEncore:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + trysetencore BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNGOTENCORE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectPainSplit:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + painsplitdmgcalc BattleScript_ButItFailed + attackanimation + waitanimation + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + copyword gBattleMoveDamage, sPAINSPLIT_HP + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + printstring STRINGID_SHAREDPAIN + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSnore:: + attackcanceler + jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_SnoreIsAsleep + attackstring + ppreduce + goto BattleScript_ButItFailed + +BattleScript_SnoreIsAsleep:: + jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoSnore + printstring STRINGID_PKMNFASTASLEEP + waitmessage 0x40 + statusanimation BS_ATTACKER +BattleScript_DoSnore:: + attackstring + ppreduce + accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE + setmoveeffect MOVE_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 BS_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 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + copymovepermanently BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNSKETCHEDMOVE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSleepTalk:: + attackcanceler + jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_SleepTalkIsAsleep + attackstring + ppreduce + goto BattleScript_ButItFailed + +BattleScript_SleepTalkIsAsleep:: + printstring STRINGID_PKMNFASTASLEEP + waitmessage 0x40 + statusanimation BS_ATTACKER + attackstring + ppreduce + orword gHitMarker, HITMARKER_NO_PPDEDUCT + trychoosesleeptalkmove BattleScript_SleepTalkUsingMove + pause 0x40 + goto BattleScript_ButItFailed + +BattleScript_SleepTalkUsingMove:: + attackanimation + waitanimation + setbyte sB_ANIM_TURN, 0 + setbyte sB_ANIM_TARGETS_HIT, 0 + jumptocalledmove 1 +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 CMP_NO_COMMON_BITS, cMULTISTRING_CHOOSER, 1, BattleScript_CheckHealBellMon2Unaffected + printstring STRINGID_PKMNSXBLOCKSY + waitmessage 0x40 +BattleScript_CheckHealBellMon2Unaffected:: + jumpifbyte CMP_NO_COMMON_BITS, cMULTISTRING_CHOOSER, 2, BattleScript_PartyHealEnd + printstring STRINGID_PKMNSXBLOCKSY2 + waitmessage 0x40 +BattleScript_PartyHealEnd:: + updatestatusicon BS_ATTACKER_WITH_PARTNER + waitstate + goto BattleScript_MoveEnd + +BattleScript_EffectTripleKick:: + attackcanceler + attackstring + ppreduce + setbyte sTRIPLE_KICK_POWER, 0 + setbyte gBattleScripting + 19, 0 + initmultihitstring + setmultihit 3 +BattleScript_TripleKickLoop:: + jumpifhasnohp BS_ATTACKER, BattleScript_TripleKickEnd + jumpifhasnohp BS_TARGET, BattleScript_TripleKickNoMoreHits + jumpifhalfword CMP_EQUAL, gChosenMove, MOVE_SLEEP_TALK, BattleScript_DoTripleKickAttack + jumpifstatus BS_ATTACKER, STATUS1_SLEEP, BattleScript_TripleKickNoMoreHits +BattleScript_DoTripleKickAttack:: + accuracycheck BattleScript_TripleKickNoMoreHits, ACC_CURR_MOVE + movevaluescleanup + addbyte sTRIPLE_KICK_POWER, 10 + addbyte gBattleScripting + 12, 1 + copyhword gDynamicBasePower, sTRIPLE_KICK_POWER + critcalc + damagecalc + typecalc + adjustnormaldamage + jumpifmovehadnoeffect BattleScript_TripleKickNoMoreHits + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage 0x40 + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + moveendto 16 + jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_FOE_ENDURED, BattleScript_TripleKickPrintStrings + decrementmultihit BattleScript_TripleKickLoop + goto BattleScript_TripleKickPrintStrings + +BattleScript_TripleKickNoMoreHits:: + pause 0x20 + jumpifbyte CMP_EQUAL, gBattleScripting + 12, 0, BattleScript_TripleKickPrintStrings + bicbyte gMoveResultFlags, MOVE_RESULT_MISSED +BattleScript_TripleKickPrintStrings:: + resultmessage + waitmessage 0x40 + jumpifbyte CMP_EQUAL, gBattleScripting + 12, 0, BattleScript_TripleKickEnd + jumpifbyte CMP_COMMON_BITS, gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE, BattleScript_TripleKickEnd + copyarray gBattleTextBuff1, sMULTIHIT_STRING, 6 + printstring STRINGID_HITXTIMES + waitmessage 0x40 +BattleScript_TripleKickEnd:: + seteffectwithchance + tryfaintmon BS_TARGET, 0, NULL + moveendfrom 14 + end + +BattleScript_EffectThief:: + setmoveeffect MOVE_EFFECT_STEAL_ITEM + goto BattleScript_EffectHit + +BattleScript_EffectMeanLook:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC + jumpifstatus2 BS_TARGET, STATUS2_ESCAPE_PREVENTION, BattleScript_ButItFailed + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + attackanimation + waitanimation + setmoveeffect MOVE_EFFECT_PREVENT_ESCAPE + seteffectprimary + printstring STRINGID_TARGETCANTESCAPENOW + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectNightmare:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus2 BS_TARGET, STATUS2_NIGHTMARE, BattleScript_ButItFailed + jumpifstatus BS_TARGET, STATUS1_SLEEP, BattleScript_NightmareWorked + goto BattleScript_ButItFailed + +BattleScript_NightmareWorked:: + attackanimation + waitanimation + setmoveeffect MOVE_EFFECT_NIGHTMARE + seteffectprimary + printstring STRINGID_PKMNFELLINTONIGHTMARE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectMinimize:: + attackcanceler + setminimize + setstatchanger STAT_EVASION, 1, FALSE + goto BattleScript_EffectStatUpAfterAtkCanceler + +BattleScript_EffectCurse:: + jumpiftype2 BS_ATTACKER, TYPE_GHOST, BattleScript_GhostCurse + attackcanceler + attackstring + ppreduce + jumpifstat BS_ATTACKER, CMP_GREATER_THAN, STAT_SPEED, 0, BattleScript_CurseTrySpeed + jumpifstat BS_ATTACKER, CMP_NOT_EQUAL, STAT_ATK, 12, BattleScript_CurseTrySpeed + jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_DEF, 12, BattleScript_ButItFailed +BattleScript_CurseTrySpeed:: + copybyte gBattlerTarget, gBattlerAttacker + setbyte sB_ANIM_TURN, 1 + attackanimation + waitanimation + setstatchanger STAT_SPEED, 1, TRUE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_CurseTryAttack + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_CurseTryAttack:: + setstatchanger STAT_ATK, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_CurseTryDefence + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_CurseTryDefence:: + setstatchanger STAT_DEF, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_CurseEnd + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_CurseEnd:: + goto BattleScript_MoveEnd + +BattleScript_GhostCurse:: + jumpifbytenotequal gBattlerAttacker, gBattlerTarget, BattleScript_DoGhostCurse + getmovetarget BS_ATTACKER +BattleScript_DoGhostCurse:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + cursetarget BattleScript_ButItFailed + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + setbyte sB_ANIM_TURN, 0 + attackanimation + waitanimation + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + printstring STRINGID_PKMNLAIDCURSE + waitmessage 0x40 + tryfaintmon BS_ATTACKER, 0, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectProtect:: + 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 sBATTLER, 0 +BattleScript_PerishSongLoop:: + jumpifability BS_SCRIPTING, ABILITY_SOUNDPROOF, BattleScript_PerishSongNotAffected +BattleScript_PerishSongLoopIncrement:: + addbyte sBATTLER, 1 + jumpifbytenotequal sBATTLER, gBattlersCount, 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 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_RolloutHit + ppreduce +BattleScript_RolloutHit:: + accuracycheck .+6, ACC_CURR_MOVE + typecalc2 + rolloutdamagecalculation + goto BattleScript_HitFromCritCalc + +BattleScript_EffectSwagger:: + attackcanceler + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + jumpifconfusedandstatmaxed 1, BattleScript_ButItFailed + attackanimation + waitanimation + setstatchanger STAT_ATK, 2, FALSE + statbuffchange STAT_CHANGE_BS_PTR, BattleScript_SwaggerTryConfuse + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_SwaggerTryConfuse + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_SwaggerTryConfuse:: + jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents + jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected + setmoveeffect MOVE_EFFECT_CONFUSION + seteffectprimary + goto BattleScript_MoveEnd + +BattleScript_EffectFuryCutter:: + attackcanceler + attackstring + ppreduce + accuracycheck .+6, ACC_CURR_MOVE +BattleScript_FuryCutterHit:: + furycuttercalc + critcalc + damagecalc + typecalc + jumpifmovehadnoeffect BattleScript_FuryCutterHit + adjustnormaldamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectAttract:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + tryinfatuating BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNFELLINLOVE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectReturn:: + 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 MOVE_EFFECT_BURN + goto BattleScript_EffectHit + +BattleScript_EffectMagnitude:: + attackcanceler + attackstring + ppreduce + selectfirstvalidtarget + magnitudedamagecalculation + pause 0x20 + printstring STRINGID_MAGNITUDESTRENGTH + waitmessage 0x40 + goto BattleScript_HitsAllWithUndergroundBonusLoop + +BattleScript_EffectBatonPass:: + attackcanceler + attackstring + ppreduce + jumpifcantswitch BS_ATTACKER | ATK4F_DONT_CHECK_STATUSES, BattleScript_ButItFailed + attackanimation + waitanimation + openpartyscreen BS_ATTACKER, BattleScript_ButItFailed + switchoutabilities BS_ATTACKER + waitstate + switchhandleorder BS_ATTACKER, 2 + returntoball BS_ATTACKER + getswitchedmondata BS_ATTACKER + switchindataupdate BS_ATTACKER + hpthresholds BS_ATTACKER + printstring STRINGID_SWITCHINMON + switchinanim BS_ATTACKER, 1 + waitstate + switchineffects BS_ATTACKER + goto BattleScript_MoveEnd + +BattleScript_EffectRapidSpin:: + setmoveeffect MOVE_EFFECT_RAPIDSPIN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN + goto BattleScript_EffectHit + +BattleScript_EffectSonicboom:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + typecalc + bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE + setword gBattleMoveDamage, 20 + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectMorningSun:: + attackcanceler + attackstring + ppreduce + recoverbasedonsunlight BattleScript_AlreadyAtFullHp + goto BattleScript_PresentHealTarget + +BattleScript_EffectHiddenPower:: + attackcanceler + hiddenpowercalc + goto BattleScript_HitFromAccCheck + +BattleScript_EffectRainDance:: + attackcanceler + attackstring + ppreduce + setrain +BattleScript_MoveWeatherChange:: + attackanimation + waitanimation + printfromtable gMoveWeatherChangeStringIds + waitmessage 0x40 + call BattleScript_HandleWeatherFormChanges + goto BattleScript_MoveEnd + +BattleScript_EffectSunnyDay:: + attackcanceler + attackstring + ppreduce + setsunny + goto BattleScript_MoveWeatherChange + +BattleScript_EffectDefenseUpHit:: + setmoveeffect MOVE_EFFECT_DEF_PLUS_1 | MOVE_EFFECT_AFFECTS_USER + goto BattleScript_EffectHit + +BattleScript_EffectAttackUpHit:: + setmoveeffect MOVE_EFFECT_ATK_PLUS_1 | MOVE_EFFECT_AFFECTS_USER + goto BattleScript_EffectHit + +BattleScript_EffectAllStatsUpHit:: + setmoveeffect MOVE_EFFECT_ALL_STATS_UP | MOVE_EFFECT_AFFECTS_USER + goto BattleScript_EffectHit + +BattleScript_EffectBellyDrum:: + attackcanceler + attackstring + ppreduce + maxattackhalvehp BattleScript_ButItFailed + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + attackanimation + waitanimation + healthbarupdate BS_ATTACKER + datahpupdate BS_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 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn + jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn + setbyte sTWOTURN_STRINGID, 2 + call BattleScriptFirstChargingTurn + setstatchanger STAT_DEF, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_SkullBashEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_SkullBashEnd + setgraphicalstatchangevalues + playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_SkullBashEnd:: + goto BattleScript_MoveEnd + +BattleScript_EffectTwister:: + jumpifnostatus3 BS_TARGET, STATUS3_ON_AIR, BattleScript_FlinchEffect + orword gHitMarker, HITMARKER_IGNORE_ON_AIR + setbyte sDMG_MULTIPLIER, 2 +BattleScript_FlinchEffect:: + setmoveeffect MOVE_EFFECT_FLINCH + goto BattleScript_EffectHit + +BattleScript_EffectEarthquake:: + attackcanceler + attackstring + ppreduce + selectfirstvalidtarget +BattleScript_HitsAllWithUndergroundBonusLoop:: + movevaluescleanup + jumpifnostatus3 BS_TARGET, STATUS3_UNDERGROUND, BattleScript_HitsAllNoUndergroundBonus + orword gHitMarker, HITMARKER_IGNORE_UNDERGROUND + setbyte sDMG_MULTIPLIER, 2 + goto BattleScript_DoHitAllWithUndergroundBonus + +BattleScript_HitsAllNoUndergroundBonus:: + bicword gHitMarker, HITMARKER_IGNORE_UNDERGROUND + setbyte sDMG_MULTIPLIER, 1 +BattleScript_DoHitAllWithUndergroundBonus:: + accuracycheck BattleScript_HitAllWithUndergroundBonusMissed, ACC_CURR_MOVE + critcalc + damagecalc + typecalc + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + tryfaintmon BS_TARGET, 0, NULL + moveendto 16 + jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop + end + +BattleScript_HitAllWithUndergroundBonusMissed:: + pause 0x20 + typecalc + effectivenesssound + resultmessage + waitmessage 0x40 + moveendto 16 + jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop + end + +BattleScript_EffectFutureSight:: + attackcanceler + attackstring + ppreduce + trysetfutureattack BattleScript_ButItFailed + attackanimation + waitanimation + printfromtable gFutureMoveUsedStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectGust:: + jumpifnostatus3 BS_TARGET, STATUS3_ON_AIR, BattleScript_EffectHit + orword gHitMarker, HITMARKER_IGNORE_ON_AIR + setbyte sDMG_MULTIPLIER, 2 + goto BattleScript_EffectHit + +BattleScript_EffectFlinchMinimizeHit:: + jumpifnostatus3 BS_TARGET, STATUS3_MINIMIZED, BattleScript_FlinchEffect + setbyte sDMG_MULTIPLIER, 2 + goto BattleScript_FlinchEffect + +BattleScript_EffectSolarbeam:: + jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_SolarbeamDecideTurn + jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_SolarbeamDecideTurn + jumpifhalfword CMP_COMMON_BITS, gBattleWeather, 96, BattleScript_SolarbeamOnFirstTurn +BattleScript_SolarbeamDecideTurn:: + jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn + jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn + setbyte sTWOTURN_STRINGID, 1 + call BattleScriptFirstChargingTurn + goto BattleScript_MoveEnd + +BattleScript_SolarbeamOnFirstTurn:: + orword gHitMarker, HITMARKER_CHARGING + setmoveeffect MOVE_EFFECT_CHARGING | MOVE_EFFECT_AFFECTS_USER + seteffectprimary + ppreduce + goto BattleScript_TwoTurnMovesSecondTurn + +BattleScript_EffectThunder:: + setmoveeffect MOVE_EFFECT_PARALYSIS + orword gHitMarker, HITMARKER_IGNORE_ON_AIR + goto BattleScript_EffectHit + +BattleScript_EffectTeleport:: + attackcanceler + attackstring + ppreduce + jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_ButItFailed + getifcantrunfrombattle BS_ATTACKER + jumpifbyte CMP_EQUAL, gBattleCommunication, 1, BattleScript_ButItFailed + jumpifbyte CMP_EQUAL, gBattleCommunication, 2, BattleScript_PrintAbilityMadeIneffective + attackanimation + waitanimation + printstring STRINGID_PKMNFLEDFROMBATTLE + waitmessage 0x40 + setbyte gBattleOutcome, B_OUTCOME_PLAYER_TELEPORTED + goto BattleScript_MoveEnd + +BattleScript_EffectBeatUp:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + pause 0x20 + ppreduce + setbyte gBattleCommunication, 0 +BattleScript_BeatUpLoop:: + movevaluescleanup + trydobeatup BattleScript_BeatUpEnd, BattleScript_ButItFailed + printstring STRINGID_PKMNATTACK + critcalc + jumpifbyte CMP_NOT_EQUAL, gCritMultiplier, 2, BattleScript_BeatUpAttack + manipulatedamage 2 +BattleScript_BeatUpAttack:: + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + tryfaintmon BS_TARGET, 0, NULL + moveendto 16 + goto BattleScript_BeatUpLoop + +BattleScript_BeatUpEnd:: + end + +BattleScript_EffectSemiInvulnerable:: + jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_SecondTurnSemiInvulnerable + jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_SecondTurnSemiInvulnerable + jumpifmove MOVE_FLY, BattleScript_FlyFirstTurn + jumpifmove MOVE_DIVE, BattleScript_DiveFirstTurn + jumpifmove MOVE_BOUNCE, BattleScript_BounceFirstTurn + @ MOVE_DIG + setbyte sTWOTURN_STRINGID, 5 + goto BattleScript_FirstTurnSemiInvulnerable + +BattleScript_BounceFirstTurn:: + setbyte sTWOTURN_STRINGID, 7 + goto BattleScript_FirstTurnSemiInvulnerable + +BattleScript_DiveFirstTurn:: + setbyte sTWOTURN_STRINGID, 6 + goto BattleScript_FirstTurnSemiInvulnerable + +BattleScript_FlyFirstTurn:: + setbyte sTWOTURN_STRINGID, 4 +BattleScript_FirstTurnSemiInvulnerable:: + call BattleScriptFirstChargingTurn + setsemiinvulnerablebit + goto BattleScript_MoveEnd + +BattleScript_SecondTurnSemiInvulnerable:: + attackcanceler + setmoveeffect MOVE_EFFECT_CHARGING + setbyte sB_ANIM_TURN, 1 + clearstatusfromeffect BS_ATTACKER + orword gHitMarker, HITMARKER_NO_PPDEDUCT + jumpifnotmove MOVE_BOUNCE, BattleScript_SemiInvulnerableTryHit + setmoveeffect MOVE_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 STAT_DEF, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_DefenseCurlDoStatUpAnim + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_StatUpPrintString + attackanimation + waitanimation +BattleScript_DefenseCurlDoStatUpAnim:: + goto BattleScript_StatUpDoAnim + +BattleScript_EffectSoftboiled:: + attackcanceler + attackstring + ppreduce + tryhealhalfhealth BattleScript_AlreadyAtFullHp, BS_TARGET +BattleScript_PresentHealTarget:: + attackanimation + waitanimation + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_TARGET + datahpupdate BS_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 MOVE_EFFECT_FLINCH | MOVE_EFFECT_CERTAIN + goto BattleScript_EffectHit + +BattleScript_ButItFailedAtkStringPpReduce:: + attackstring +BattleScript_ButItFailedPpReduce:: + ppreduce +BattleScript_ButItFailed:: + pause 0x20 + orbyte gMoveResultFlags, MOVE_RESULT_FAILED + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_NotAffected:: + pause 0x20 + orbyte gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE + resultmessage + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectUproar:: + attackcanceler + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + setmoveeffect MOVE_EFFECT_UPROAR | MOVE_EFFECT_AFFECTS_USER + attackstring + jumpifstatus2 BS_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 CMP_EQUAL, gBattleCommunication + 6, 1, BattleScript_SpitUpNoDamage + 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_SpitUpNoDamage:: + 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 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_MakeMoveMissed + accuracycheck BattleScript_PrintMoveMissed, ACC_CURR_MOVE + attackstring + ppreduce + jumpifconfusedandstatmaxed 4, BattleScript_ButItFailed + attackanimation + waitanimation + setstatchanger STAT_SPATK, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR, BattleScript_FlatterTryConfuse + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_FlatterTryConfuse + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_FlatterTryConfuse:: + jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_OwnTempoPrevents + jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected + setmoveeffect MOVE_EFFECT_CONFUSION + seteffectprimary + goto BattleScript_MoveEnd + +BattleScript_EffectWillOWisp:: + attackcanceler + attackstring + ppreduce + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifstatus BS_TARGET, STATUS1_BURN, BattleScript_AlreadyBurned + jumpiftype BS_TARGET, TYPE_FIRE, BattleScript_NotAffected + jumpifability BS_TARGET, ABILITY_WATER_VEIL, BattleScript_WaterVeilPrevents + jumpifstatus BS_TARGET, STATUS1_ANY, BattleScript_ButItFailed + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected + attackanimation + waitanimation + setmoveeffect MOVE_EFFECT_BURN + seteffectprimary + goto BattleScript_MoveEnd + +BattleScript_WaterVeilPrevents:: + copybyte gEffectBattler, gBattlerTarget + setbyte cMULTISTRING_CHOOSER, 0 + call BattleScript_BRNPrevention + goto BattleScript_MoveEnd + +BattleScript_AlreadyBurned:: + pause 0x20 + printstring STRINGID_PKMNALREADYHASBURN + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectMemento:: + attackcanceler + jumpifbyte CMP_EQUAL, gBattleCommunication + 6, 1, BattleScript_MementoNoReduceStats + attackstring + ppreduce + jumpifattackandspecialattackcannotfall BattleScript_ButItFailed + setatkhptozero + attackanimation + waitanimation + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_MementoSubstituteInvulnerable + setbyte sSTAT_ANIM_PLAYED, 0 + playstatchangeanimation BS_TARGET, BIT_ATK | BIT_SPATK, ATK48_STAT_NEGATIVE | ATK48_STAT_BY_TWO | ATK48_ONLY_MULTIPLE + playstatchangeanimation BS_TARGET, BIT_ATK, ATK48_STAT_NEGATIVE | ATK48_STAT_BY_TWO + setstatchanger STAT_ATK, 2, TRUE + statbuffchange STAT_CHANGE_BS_PTR, BattleScript_MementoSkipStatDown1 + jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 1, BattleScript_MementoSkipStatDown1 + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_MementoSkipStatDown1:: + playstatchangeanimation BS_TARGET, BIT_SPATK, ATK48_STAT_NEGATIVE | ATK48_STAT_BY_TWO + setstatchanger STAT_SPATK, 2, TRUE + statbuffchange STAT_CHANGE_BS_PTR, BattleScript_MementoSkipStatDown2 + jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 1, BattleScript_MementoSkipStatDown2 + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_MementoSkipStatDown2:: + tryfaintmon BS_ATTACKER, 0, NULL + goto BattleScript_MoveEnd + +BattleScript_MementoSubstituteInvulnerable:: + printstring STRINGID_BUTNOEFFECT + waitmessage 0x40 + goto BattleScript_MementoSkipStatDown2 + +BattleScript_MementoNoReduceStats:: + attackstring + ppreduce + jumpifattackandspecialattackcannotfall .+4 + setatkhptozero + pause 0x40 + effectivenesssound + resultmessage + waitmessage 0x40 + tryfaintmon BS_ATTACKER, 0, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectFacade:: + jumpifstatus BS_ATTACKER, STATUS1_POISON | STATUS1_PARALYSIS | STATUS1_BURN | STATUS1_TOXIC_POISON, BattleScript_FacadeDoubleDmg + goto BattleScript_EffectHit + +BattleScript_FacadeDoubleDmg:: + setbyte sDMG_MULTIPLIER, 2 + goto BattleScript_EffectHit + +BattleScript_EffectFocusPunch:: + attackcanceler + jumpifnodamage BattleScript_HitFromAccCheck + ppreduce + printstring STRINGID_PKMNLOSTFOCUS + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSmellingsalt:: + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_EffectHit + setmoveeffect MOVE_EFFECT_REMOVE_PARALYSIS | MOVE_EFFECT_CERTAIN + jumpifstatus BS_TARGET, STATUS1_PARALYSIS, BattleScript_SmellingSaltBuff + goto BattleScript_EffectHit + +BattleScript_SmellingSaltBuff:: + setbyte sDMG_MULTIPLIER, 2 + 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 BS_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 0, BattleScript_ButItFailed + attackanimation + waitanimation + goto BattleScript_MoveEnd + +BattleScript_EffectAssist:: + attackcanceler + attackstring + assistattackselect BattleScript_ButItFailedPpReduce + attackanimation + waitanimation + setbyte sB_ANIM_TURN, 0 + setbyte sB_ANIM_TARGETS_HIT, 0 + jumptocalledmove 1 +BattleScript_EffectIngrain:: + attackcanceler + attackstring + ppreduce + trysetroots BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNPLANTEDROOTS + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectSuperpower:: + setmoveeffect MOVE_EFFECT_ATK_DEF_DOWN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_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 CMP_EQUAL, sB_ANIM_TURN, 0, BattleScript_BrickBreakAnim + bicbyte gMoveResultFlags, MOVE_RESULT_MISSED | MOVE_RESULT_DOESNT_AFFECT_FOE +BattleScript_BrickBreakAnim:: + attackanimation + waitanimation + jumpifbyte CMP_LESS_THAN, sB_ANIM_TURN, 2, BattleScript_BrickBreakDoHit + printstring STRINGID_THEWALLSHATTERED + waitmessage 0x40 +BattleScript_BrickBreakDoHit:: + typecalc2 + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + seteffectwithchance + tryfaintmon BS_TARGET, 0, NULL + goto BattleScript_MoveEnd + +BattleScript_EffectYawn:: + attackcanceler + attackstring + ppreduce + jumpifability BS_TARGET, ABILITY_VITAL_SPIRIT, BattleScript_PrintBankAbilityMadeIneffective + jumpifability BS_TARGET, ABILITY_INSOMNIA, BattleScript_PrintBankAbilityMadeIneffective + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_ButItFailed + jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_SafeguardProtected + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + jumpifcantmakeasleep BattleScript_ButItFailed + setyawn BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNWASMADEDROWSY + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_PrintBankAbilityMadeIneffective:: + copybyte sBATTLER, sBATTLER_WITH_ABILITY +BattleScript_PrintAbilityMadeIneffective:: + pause 0x20 + printstring STRINGID_PKMNSXMADEITINEFFECTIVE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectKnockOff:: + setmoveeffect MOVE_EFFECT_KNOCK_OFF + goto BattleScript_EffectHit + +BattleScript_EffectEndeavor:: + attackcanceler + attackstring + ppreduce + setdamagetohealthdifference BattleScript_ButItFailed + copyword gHpDealt, gBattleMoveDamage + accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE + typecalc + jumpifmovehadnoeffect BattleScript_HitFromAtkAnimation + bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE + copyword gBattleMoveDamage, gHpDealt + adjustsetdamage + goto BattleScript_HitFromAtkAnimation + +BattleScript_EffectEruption:: + scaledamagebyhealthratio + goto BattleScript_EffectHit + +BattleScript_EffectSkillSwap:: + attackcanceler + attackstring + ppreduce + accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON + tryswapabilities BattleScript_ButItFailed + attackanimation + waitanimation + printstring STRINGID_PKMNSWAPPEDABILITIES + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectImprison:: + attackcanceler + attackstring + ppreduce + tryimprison 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 BS_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 MOVE_EFFECT_RECOIL_33 | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN + goto BattleScript_EffectHit + +BattleScript_EffectTeeterDance:: + attackcanceler + attackstring + ppreduce + setbyte gBattlerTarget, 0 +BattleScript_TeeterDanceLoop:: + movevaluescleanup + setmoveeffect MOVE_EFFECT_CONFUSION + jumpifbyteequal gBattlerAttacker, gBattlerTarget, BattleScript_TeeterDanceLoopIncrement + jumpifability BS_TARGET, ABILITY_OWN_TEMPO, BattleScript_TeeterDanceOwnTempoPrevents + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_TeeterDanceSubstitutePrevents + jumpifstatus2 BS_TARGET, STATUS2_CONFUSION, BattleScript_TeeterDanceAlreadyConfused + accuracycheck BattleScript_TeeterDanceMissed, ACC_CURR_MOVE + jumpifsideaffecting BS_TARGET, SIDE_STATUS_SAFEGUARD, BattleScript_TeeterDanceSafeguardProtected + attackanimation + waitanimation + seteffectprimary + resultmessage + waitmessage 0x40 +BattleScript_TeeterDanceLoopIncrement:: + moveendto 16 + addbyte gBattlerTarget, 1 + jumpifbytenotequal gBattlerTarget, gBattlersCount, BattleScript_TeeterDanceLoop + end + +BattleScript_TeeterDanceOwnTempoPrevents:: + pause 0x20 + printstring STRINGID_PKMNPREVENTSCONFUSIONWITH + waitmessage 0x40 + goto BattleScript_TeeterDanceLoopIncrement + +BattleScript_TeeterDanceSafeguardProtected:: + pause 0x20 + printstring STRINGID_PKMNUSEDSAFEGUARD + waitmessage 0x40 + goto BattleScript_TeeterDanceLoopIncrement + +BattleScript_TeeterDanceSubstitutePrevents:: + pause 0x20 + printstring STRINGID_BUTITFAILED + waitmessage 0x40 + goto BattleScript_TeeterDanceLoopIncrement + +BattleScript_TeeterDanceAlreadyConfused:: + pause 0x20 + printstring STRINGID_PKMNALREADYCONFUSED + waitmessage 0x40 + goto BattleScript_TeeterDanceLoopIncrement + +BattleScript_TeeterDanceMissed:: + resultmessage + waitmessage 0x40 + goto BattleScript_TeeterDanceLoopIncrement + +BattleScript_EffectMudSport:: + attackcanceler + attackstring + ppreduce + settypebasedhalvers BattleScript_ButItFailed + attackanimation + waitanimation + printfromtable gSportsUsedStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectPoisonFang:: + setmoveeffect MOVE_EFFECT_TOXIC + goto BattleScript_EffectHit + +BattleScript_EffectWeatherBall:: + setweatherballtype + goto BattleScript_EffectHit + +BattleScript_EffectOverheat:: + setmoveeffect MOVE_EFFECT_SP_ATK_TWO_DOWN | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN + goto BattleScript_EffectHit + +BattleScript_EffectTickle:: + attackcanceler + attackstring + ppreduce + jumpifstat BS_TARGET, CMP_GREATER_THAN, STAT_ATK, 0, BattleScript_TickleDoMoveAnim + jumpifstat BS_TARGET, CMP_EQUAL, STAT_DEF, 0, BattleScript_CantLowerMultipleStats +BattleScript_TickleDoMoveAnim:: + accuracycheck BattleScript_ButItFailed, ACC_CURR_MOVE + attackanimation + waitanimation + setbyte sSTAT_ANIM_PLAYED, 0 + playstatchangeanimation BS_TARGET, BIT_ATK | BIT_DEF, ATK48_STAT_NEGATIVE | ATK48_ONLY_MULTIPLE + playstatchangeanimation BS_TARGET, BIT_ATK, ATK48_STAT_NEGATIVE + setstatchanger STAT_ATK, 1, TRUE + statbuffchange STAT_CHANGE_BS_PTR, BattleScript_TickleTryLowerDef + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_TickleTryLowerDef + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_TickleTryLowerDef:: + playstatchangeanimation BS_TARGET, BIT_DEF, ATK48_STAT_NEGATIVE + setstatchanger STAT_DEF, 1, TRUE + statbuffchange STAT_CHANGE_BS_PTR, BattleScript_TickleEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_TickleEnd + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_TickleEnd:: + goto BattleScript_MoveEnd + +BattleScript_CantLowerMultipleStats:: + pause 0x20 + orbyte gMoveResultFlags, MOVE_RESULT_FAILED + printstring STRINGID_STATSWONTDECREASE2 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectCosmicPower:: + attackcanceler + attackstring + ppreduce + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, 12, BattleScript_CosmicPowerDoMoveAnim + jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, 12, BattleScript_CantRaiseMultipleStats +BattleScript_CosmicPowerDoMoveAnim:: + attackanimation + waitanimation + setbyte sSTAT_ANIM_PLAYED, 0 + playstatchangeanimation BS_ATTACKER, BIT_DEF | BIT_SPDEF, 0 + setstatchanger STAT_DEF, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_CosmicPowerTrySpDef + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_CosmicPowerTrySpDef + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_CosmicPowerTrySpDef:: + setstatchanger STAT_SPDEF, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_CosmicPowerEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, 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 BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, 12, BattleScript_BulkUpDoMoveAnim + jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_DEF, 12, BattleScript_CantRaiseMultipleStats +BattleScript_BulkUpDoMoveAnim:: + attackanimation + waitanimation + setbyte sSTAT_ANIM_PLAYED, 0 + playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_DEF, 0 + setstatchanger STAT_ATK, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_BulkUpTryDef + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_BulkUpTryDef + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_BulkUpTryDef:: + setstatchanger STAT_DEF, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_BulkUpEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_BulkUpEnd + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_BulkUpEnd:: + goto BattleScript_MoveEnd + +BattleScript_EffectCalmMind:: + attackcanceler + attackstring + ppreduce + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPATK, 12, BattleScript_CalmMindDoMoveAnim + jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, 12, BattleScript_CantRaiseMultipleStats +BattleScript_CalmMindDoMoveAnim:: + attackanimation + waitanimation + setbyte sSTAT_ANIM_PLAYED, 0 + playstatchangeanimation BS_ATTACKER, BIT_SPATK | BIT_SPDEF, 0 + setstatchanger STAT_SPATK, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_CalmMindTrySpDef + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_CalmMindTrySpDef + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_CalmMindTrySpDef:: + setstatchanger STAT_SPDEF, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_CalmMindEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_CalmMindEnd + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_CalmMindEnd:: + goto BattleScript_MoveEnd + +BattleScript_CantRaiseMultipleStats:: + pause 0x20 + orbyte gMoveResultFlags, MOVE_RESULT_FAILED + printstring STRINGID_STATSWONTINCREASE2 + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_EffectDragonDance:: + attackcanceler + attackstring + ppreduce + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, 12, BattleScript_DragonDanceDoMoveAnim + jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPEED, 12, BattleScript_CantRaiseMultipleStats +BattleScript_DragonDanceDoMoveAnim:: + attackanimation + waitanimation + setbyte sSTAT_ANIM_PLAYED, 0 + playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_SPEED, 0 + setstatchanger STAT_ATK, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_DragonDanceTrySpeed + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_DragonDanceTrySpeed + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_DragonDanceTrySpeed:: + setstatchanger STAT_SPEED, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_DragonDanceEnd + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, 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 BS_ATTACKER + pause 0x40 + dofaintanimation BS_ATTACKER + cleareffectsonfaint BS_ATTACKER + printstring STRINGID_ATTACKERFAINTED + printstring STRINGID_EMPTYSTRING3 + return + +BattleScript_FaintTarget:: + playfaintcry BS_TARGET + pause 0x40 + dofaintanimation BS_TARGET + cleareffectsonfaint BS_TARGET + printstring STRINGID_TARGETFAINTED + printstring STRINGID_EMPTYSTRING3 + return + +BattleScript_GiveExp:: + setbyte sGIVEEXP_STATE, 0 + getexp BS_TARGET + end2 + +BattleScript_HandleFaintedMon:: + atk24 BattleScript_LinkBattleHandleFaint + jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_FaintedMonEnd + jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonTryChooseAnother + jumpifword CMP_NO_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonTryChooseAnother + printstring STRINGID_USENEXTPKMN + setbyte gBattleCommunication, 0 + yesnobox + jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0, BattleScript_FaintedMonTryChooseAnother + jumpifplayerran BattleScript_FaintedMonEnd + printstring STRINGID_CANTESCAPE2 +BattleScript_FaintedMonTryChooseAnother:: + openpartyscreen BS_FAINTED, BattleScript_FaintedMonEnd + switchhandleorder BS_FAINTED, 2 + jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonChooseAnother + jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonChooseAnother + jumpifbattletype BATTLE_TYPE_BATTLE_TOWER, BattleScript_FaintedMonChooseAnother + jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonChooseAnother + jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonChooseAnother + jumpifbyte CMP_EQUAL, sBATTLE_STYLE, 1, BattleScript_FaintedMonChooseAnother + jumpifcantswitch BS_PLAYER1, BattleScript_FaintedMonChooseAnother + printstring STRINGID_ENEMYABOUTTOSWITCHPKMN + setbyte gBattleCommunication, 0 + yesnobox + jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_FaintedMonChooseAnother + setatktoplayer0 + openpartyscreen BS_ATTACKER | OPEN_PARTY_ALLOW_CANCEL, BattleScript_FaintedMonChooseAnother + switchhandleorder BS_ATTACKER, 2 + jumpifbyte CMP_EQUAL, gBattleCommunication, 6, BattleScript_FaintedMonChooseAnother + atknameinbuff1 + resetintimidatetracebits BS_ATTACKER + hpthresholds2 BS_ATTACKER + printstring STRINGID_RETURNMON + switchoutabilities BS_ATTACKER + waitstate + returnatktoball + waitstate + drawpartystatussummary BS_ATTACKER + getswitchedmondata BS_ATTACKER + switchindataupdate BS_ATTACKER + hpthresholds BS_ATTACKER + printstring STRINGID_SWITCHINMON + hidepartystatussummary BS_ATTACKER + switchinanim BS_ATTACKER, 0 + waitstate + switchineffects BS_ATTACKER + resetsentmonsvalue +BattleScript_FaintedMonChooseAnother:: + drawpartystatussummary BS_FAINTED + getswitchedmondata BS_FAINTED + switchindataupdate BS_FAINTED + hpthresholds BS_FAINTED + printstring STRINGID_SWITCHINMON + hidepartystatussummary BS_FAINTED + switchinanim BS_FAINTED, 0 + waitstate + various7 BS_ATTACKER + switchineffects BS_FAINTED + jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonEnd + cancelallactions +BattleScript_FaintedMonEnd:: + end2 + +BattleScript_LinkBattleHandleFaint:: + openpartyscreen BS_UNKNOWN_5, .+4 + switchhandleorder BS_FAINTED, 0 + openpartyscreen BS_UNKNOWN_6, BattleScript_LinkBattleFaintedMonEnd + switchhandleorder BS_FAINTED, 0 +BattleScript_LinkBattleFaintedMonLoop:: + switchhandleorder BS_FAINTED, 2 + drawpartystatussummary BS_FAINTED + getswitchedmondata BS_FAINTED + switchindataupdate BS_FAINTED + hpthresholds BS_FAINTED + printstring STRINGID_SWITCHINMON + hidepartystatussummary BS_FAINTED + switchinanim BS_FAINTED, 0 + waitstate + switchineffects 5 + jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_LinkBattleFaintedMonLoop +BattleScript_LinkBattleFaintedMonEnd:: + end2 + +BattleScript_LocalTrainerBattleWon:: + printstring STRINGID_PLAYERDEFEATEDTRAINER1 + trainerslidein BS_ATTACKER + waitstate + printstring STRINGID_TRAINER1LOSETEXT + getmoneyreward .+4 + printstring STRINGID_PLAYERGOTMONEY + waitmessage 0x40 +BattleScript_PayDayMoneyAndPickUpItems:: + givepaydaymoney + pickup + end2 + +BattleScript_LocalBattleLost:: + jumpifbattletype BATTLE_TYPE_TRAINER_TOWER, BattleScript_BattleTowerLost + jumpifbattletype BATTLE_TYPE_EREADER_TRAINER, BattleScript_EReaderOrSecretBaseTrainerEnd + jumpifhalfword CMP_EQUAL, gTrainerBattleOpponent_A, TRAINER_SECRET_BASE, BattleScript_EReaderOrSecretBaseTrainerEnd + jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0, BattleScript_RivalBattleLost +BattleScript_LocalBattleLostPrintWhiteOut:: + jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_LocalBattleLostEnd + printstring STRINGID_PLAYERWHITEOUT + waitmessage 0x40 + getmoneyreward BattleScript_LocalBattleLostPrintTrainersWinText + printstring STRINGID_PLAYERWHITEOUT2 + waitmessage 0x40 + goto BattleScript_EReaderOrSecretBaseTrainerEnd + +BattleScript_LocalBattleLostEnd:: + printstring STRINGID_PLAYERLOSTAGAINSTENEMYTRAINER + waitmessage 0x40 + getmoneyreward BattleScript_LocalBattleLostPrintTrainersWinText + printstring STRINGID_PLAYERPAIDPRIZEMONEY + waitmessage 0x40 +BattleScript_EReaderOrSecretBaseTrainerEnd:: + end2 + +BattleScript_LocalBattleLostPrintTrainersWinText:: + printstring STRINGID_PLAYERWHITEDOUT + waitmessage 0x40 + end2 + +BattleScript_RivalBattleLost:: + jumpifhasnohp BS_ATTACKER, BattleScript_RivalBattleLostSkipMonRecall + printstring STRINGID_TRAINER1MON1COMEBACK + waitmessage 0x40 + returnatktoball + waitstate +BattleScript_RivalBattleLostSkipMonRecall:: + trainerslidein BS_ATTACKER + waitstate + printstring STRINGID_TRAINER1WINTEXT + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_LocalBattleLostPrintWhiteOut + end2 + +BattleScript_BattleTowerLost:: + various8 BS_ATTACKER + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0, BattleScript_BattleTowerLostLostSkipMonRecall + printfromtable gDoubleBattleRecallStrings + waitmessage 0x40 + returnopponentmon1toball BS_ATTACKER + waitstate + returnopponentmon2toball BS_ATTACKER + waitstate +BattleScript_BattleTowerLostLostSkipMonRecall:: + trainerslidein BS_ATTACKER + waitstate + printstring STRINGID_TRAINER1WINTEXT + jumpifnotbattletype BATTLE_TYPE_DOUBLE, BattleScript_BattleTowerLostLostSkipDouble + printstring STRINGID_TRAINER2NAME +BattleScript_BattleTowerLostLostSkipDouble:: + end2 + +BattleScript_LinkBattleWonOrLost:: + printstring STRINGID_BATTLEEND + waitmessage 0x40 + atk57 + waitmessage 0x40 + end2 + +BattleScript_BattleTowerTrainerBattleWon:: + printstring STRINGID_PLAYERDEFEATEDTRAINER1 + trainerslidein BS_ATTACKER + waitstate + jumpifnotbattletype BATTLE_TYPE_TRAINER_TOWER, BattleScript_BattleTowerEtcTrainerBattleWonSkipText + printstring STRINGID_TRAINER1LOSETEXT + jumpifnotbattletype BATTLE_TYPE_DOUBLE, BattleScript_BattleTowerEtcTrainerBattleWonSkipText + printstring STRINGID_TRAINER2CLASS +BattleScript_BattleTowerEtcTrainerBattleWonSkipText:: + pickup + end2 + +BattleScript_SmokeBallEscape:: + playanimation BS_ATTACKER, B_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:: + jumpifbattletype BATTLE_TYPE_FIRST_BATTLE, BattleScript_LeftoverBirchString + printstring STRINGID_NORUNNINGFROMTRAINERS + end2 + +BattleScript_LeftoverBirchString:: + printstring STRINGID_DONTLEAVEBIRCH + end2 + +BattleScript_PrintFailedToRunString:: + printfromtable gNoEscapeStringIds + waitmessage 0x40 + end2 + +BattleScript_PrintCantEscapeFromBattle:: + printselectionstringfromtable gNoEscapeStringIds + endselectionscript + +BattleScript_PrintFullBox:: + printselectionstring STRINGID_BOXISFULL + endselectionscript + +BattleScript_ActionSwitch:: + hpthresholds2 BS_ATTACKER + printstring STRINGID_RETURNMON + setbyte sDMG_MULTIPLIER, 2 + jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_PursuitSwitchCheckTwice + setmultihit 1 + goto BattleScript_PursuitSwitchLoop + +BattleScript_PursuitSwitchCheckTwice:: + setmultihit 2 +BattleScript_PursuitSwitchLoop:: + jumpifnopursuitswitchdmg BattleScript_DoSwitchOut + swapattackerwithtarget + trysetdestinybondtohappen + call BattleScript_PursuitDmgOnSwitchOut + swapattackerwithtarget +BattleScript_DoSwitchOut:: + decrementmultihit BattleScript_PursuitSwitchLoop + switchoutabilities BS_ATTACKER + waitstate + returnatktoball + waitstate + drawpartystatussummary BS_ATTACKER + switchhandleorder BS_ATTACKER, 1 + getswitchedmondata BS_ATTACKER + switchindataupdate BS_ATTACKER + hpthresholds BS_ATTACKER + printstring STRINGID_SWITCHINMON + hidepartystatussummary BS_ATTACKER + switchinanim BS_ATTACKER, 0 + waitstate + switchineffects BS_ATTACKER + moveendcase 4 + moveendcase 15 + end2 + +BattleScript_PursuitDmgOnSwitchOut:: + pause 0x20 + attackstring + ppreduce + critcalc + damagecalc + typecalc + adjustnormaldamage + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + critmessage + waitmessage 0x40 + resultmessage + waitmessage 0x40 + tryfaintmon BS_TARGET, 0, NULL + moveendfromto 3, 6 + various4 BS_TARGET + jumpifbyte CMP_EQUAL, gBattleCommunication, 0, BattleScript_PursuitSwitchRivalSkip + setbyte sGIVEEXP_STATE, 0 + getexp BS_TARGET +BattleScript_PursuitSwitchRivalSkip:: + return + +BattleScript_Pausex20:: + pause 0x20 + return + +BattleScript_LevelUp:: + fanfare MUS_FANFA1 + printstring STRINGID_PKMNGREWTOLV + setbyte sLVLBOX_STATE, 0 + drawlvlupbox + handlelearnnewmove BattleScript_LearnedNewMove, BattleScript_LearnMoveReturn, 1 + goto BattleScript_AskToLearnMove + +BattleScript_LearnMoveLoop:: + handlelearnnewmove BattleScript_LearnedNewMove, BattleScript_LearnMoveReturn, 0 +BattleScript_AskToLearnMove:: + buffermovetolearn + printstring STRINGID_TRYTOLEARNMOVE1 + printstring STRINGID_TRYTOLEARNMOVE2 + printstring STRINGID_TRYTOLEARNMOVE3 + waitstate + setbyte sLEARNMOVE_STATE, 0 + yesnoboxlearnmove BattleScript_ForgotAndLearnedNewMove + printstring STRINGID_STOPLEARNINGMOVE + waitstate + setbyte sLEARNMOVE_STATE, 0 + yesnoboxstoplearningmove BattleScript_AskToLearnMove + printstring STRINGID_DIDNOTLEARNMOVE + goto BattleScript_LearnMoveLoop + +BattleScript_ForgotAndLearnedNewMove:: + printstring STRINGID_123POOF + printstring STRINGID_PKMNFORGOTMOVE + printstring STRINGID_ANDELLIPSIS +BattleScript_LearnedNewMove:: + buffermovetolearn + fanfare MUS_FANFA1 + printstring STRINGID_PKMNLEARNEDMOVE + waitmessage 0x40 + updatechoicemoveonlvlup BS_ATTACKER + goto BattleScript_LearnMoveLoop + +BattleScript_LearnMoveReturn:: + return + +BattleScript_RainContinuesOrEnds:: + printfromtable gRainContinuesStringIds + waitmessage 0x40 + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_RainContinuesOrEndsEnd + playanimation BS_ATTACKER, B_ANIM_RAIN_CONTINUES, NULL +BattleScript_RainContinuesOrEndsEnd:: + end2 + +BattleScript_DamagingWeatherContinues:: + printfromtable gSandStormHailContinuesStringIds + waitmessage 0x40 + playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL + setbyte gBattleCommunication, 0 +BattleScript_DamagingWeatherLoop:: + copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1 + weatherdamage + jumpifword CMP_EQUAL, gBattleMoveDamage, NULL, BattleScript_DamagingWeatherContinuesEnd + printfromtable gSandStormHailDmgStringIds + waitmessage 0x40 + orword gHitMarker, HITMARKER_x20 | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 | HITMARKER_GRUDGE + effectivenesssound + hitanimation BS_ATTACKER + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + tryfaintmon BS_ATTACKER, 0, NULL + atk24 .+4 +BattleScript_DamagingWeatherContinuesEnd:: + jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_WeatherDamageEndedBattle + addbyte gBattleCommunication, 1 + jumpifbytenotequal gBattleCommunication, gBattlersCount, BattleScript_DamagingWeatherLoop +BattleScript_WeatherDamageEndedBattle:: + 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 BS_ATTACKER, B_ANIM_SUN_CONTINUES, NULL + end2 + +BattleScript_SunlightFaded:: + printstring STRINGID_SUNLIGHTFADED + waitmessage 0x40 + end2 + +BattleScript_OverworldWeatherStarts:: + printfromtable gWeatherContinuesStringIds + waitmessage 0x40 + playanimation2 BS_ATTACKER, sB_ANIM_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 BS_ATTACKER, B_ANIM_LEECH_SEED_DRAIN, sB_ANIM_ARG1 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + copyword gBattleMoveDamage, gHpDealt + jumpifability BS_ATTACKER, ABILITY_LIQUID_OOZE, BattleScript_LeechSeedLiquidOoze + manipulatedamage 0 + setbyte cMULTISTRING_CHOOSER, 3 + goto BattleScript_LeechSeedTurnPrintAndUpdateHp + +BattleScript_LeechSeedLiquidOoze:: + setbyte cMULTISTRING_CHOOSER, 4 +BattleScript_LeechSeedTurnPrintAndUpdateHp:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + printfromtable gLeechSeedStringIds + waitmessage 0x40 + tryfaintmon BS_ATTACKER, 0, NULL + tryfaintmon BS_TARGET, 0, NULL + end2 + +BattleScript_BideStoringEnergy:: + printstring STRINGID_PKMNSTORINGENERGY + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_BideAttack:: + attackcanceler + setmoveeffect MOVE_EFFECT_CHARGING + clearstatusfromeffect BS_ATTACKER + printstring STRINGID_PKMNUNLEASHEDENERGY + waitmessage 0x40 + accuracycheck BattleScript_MoveMissed, ACC_CURR_MOVE + typecalc + bicbyte gMoveResultFlags, MOVE_RESULT_SUPER_EFFECTIVE | MOVE_RESULT_NOT_VERY_EFFECTIVE + copyword gBattleMoveDamage, sBIDE_DMG + adjustsetdamage + setbyte sB_ANIM_TURN, 1 + attackanimation + waitanimation + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + resultmessage + waitmessage 0x40 + tryfaintmon BS_TARGET, 0, NULL + goto BattleScript_MoveEnd + +BattleScript_BideNoEnergyToAttack:: + attackcanceler + setmoveeffect MOVE_EFFECT_CHARGING + clearstatusfromeffect BS_ATTACKER + printstring STRINGID_PKMNUNLEASHEDENERGY + waitmessage 0x40 + goto BattleScript_ButItFailed + +BattleScript_SuccessForceOut:: + attackanimation + waitanimation + switchoutabilities BS_TARGET + returntoball BS_TARGET + waitstate + jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_TrainerBattleForceOut + setbyte gBattleOutcome, B_OUTCOME_PLAYER_TELEPORTED + finishaction +BattleScript_TrainerBattleForceOut:: + getswitchedmondata BS_TARGET + switchindataupdate BS_TARGET + switchinanim BS_TARGET, 0 + waitstate + printstring STRINGID_PKMNWASDRAGGEDOUT + switchineffects BS_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_EncoredNoMore:: + printstring STRINGID_PKMNENCOREENDED + waitmessage 0x40 + end2 + +BattleScript_DestinyBondTakesLife:: + printstring STRINGID_PKMNTOOKFOE + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + tryfaintmon BS_ATTACKER, 0, NULL + return + +BattleScript_SpikesOnAttacker:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + call BattleScript_PrintHurtBySpikes + tryfaintmon BS_ATTACKER, 0, NULL + tryfaintmon BS_ATTACKER, 1, BattleScript_SpikesOnAttackerFainted + return + +BattleScript_SpikesOnAttackerFainted:: + setbyte sGIVEEXP_STATE, 0 + getexp BS_ATTACKER + moveendall + goto BattleScript_HandleFaintedMon + +BattleScript_SpikesOnTarget:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + call BattleScript_PrintHurtBySpikes + tryfaintmon BS_TARGET, 0, NULL + tryfaintmon BS_TARGET, 1, BattleScript_SpikesOnTargetFainted + return + +BattleScript_SpikesOnTargetFainted:: + setbyte sGIVEEXP_STATE, 0 + getexp BS_TARGET + moveendall + goto BattleScript_HandleFaintedMon + +BattleScript_SpikesOnFaintedBattler:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate BS_FAINTED + datahpupdate BS_FAINTED + call BattleScript_PrintHurtBySpikes + tryfaintmon BS_FAINTED, 0, NULL + tryfaintmon BS_FAINTED, 1, BattleScript_SpikesOnFaintedBattlerFainted + return + +BattleScript_SpikesOnFaintedBattlerFainted:: + setbyte sGIVEEXP_STATE, 0 + getexp BS_FAINTED + moveendall + goto BattleScript_HandleFaintedMon + +BattleScript_PrintHurtBySpikes:: + printstring STRINGID_PKMNHURTBYSPIKES + waitmessage 0x40 + return + +BattleScript_PerishSongTakesLife:: + printstring STRINGID_PKMNPERISHCOUNTFELL + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + tryfaintmon BS_ATTACKER, 0, NULL + end2 + +BattleScript_PerishSongCountGoesDown:: + printstring STRINGID_PKMNPERISHCOUNTFELL + waitmessage 0x40 + end2 + +BattleScript_AllStatsUp:: + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_ATK, 12, BattleScript_AllStatsUpAtk + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_DEF, 12, BattleScript_AllStatsUpAtk + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPEED, 12, BattleScript_AllStatsUpAtk + jumpifstat BS_ATTACKER, CMP_LESS_THAN, STAT_SPATK, 12, BattleScript_AllStatsUpAtk + jumpifstat BS_ATTACKER, CMP_EQUAL, STAT_SPDEF, 12, BattleScript_AllStatsUpRet +BattleScript_AllStatsUpAtk:: + setbyte sSTAT_ANIM_PLAYED, 0 + playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_DEF | BIT_SPEED | BIT_SPATK | BIT_SPDEF, 0 + setstatchanger STAT_ATK, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_AllStatsUpDef + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_AllStatsUpDef:: + setstatchanger STAT_DEF, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_AllStatsUpSpeed + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_AllStatsUpSpeed:: + setstatchanger STAT_SPEED, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_AllStatsUpSpAtk + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_AllStatsUpSpAtk:: + setstatchanger STAT_SPATK, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_AllStatsUpSpDef + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_AllStatsUpSpDef:: + setstatchanger STAT_SPDEF, 1, FALSE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, BattleScript_AllStatsUpRet + printfromtable gStatUpStringIds + waitmessage 0x40 +BattleScript_AllStatsUpRet:: + return + +BattleScript_RapidSpinAway:: + rapidspinfree + return + +BattleScript_WrapFree:: + printstring STRINGID_PKMNGOTFREE + waitmessage 0x40 + copybyte gBattlerTarget, sBATTLER + 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 CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0, BattleScript_CheckDoomDesireMiss + accuracycheck BattleScript_FutureAttackMiss, MOVE_FUTURE_SIGHT + goto BattleScript_FutureAttackAnimate + +BattleScript_CheckDoomDesireMiss:: + accuracycheck BattleScript_FutureAttackMiss, MOVE_DOOM_DESIRE +BattleScript_FutureAttackAnimate:: + adjustnormaldamage2 + jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, 0, BattleScript_FutureHitAnimDoomDesire + playanimation BS_ATTACKER, B_ANIM_FUTURE_SIGHT_HIT, NULL + goto BattleScript_DoFutureAttackHit + +BattleScript_FutureHitAnimDoomDesire:: + playanimation BS_ATTACKER, B_ANIM_DOOM_DESIRE_HIT, NULL +BattleScript_DoFutureAttackHit:: + effectivenesssound + hitanimation BS_TARGET + waitstate + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + resultmessage + waitmessage 0x40 + tryfaintmon BS_TARGET, 0, NULL + atk24 .+4 + moveendcase 0 + moveendfromto 11, 14 + setbyte gMoveResultFlags, 0 + end2 + +BattleScript_FutureAttackMiss:: + pause 0x20 + setbyte gMoveResultFlags, 0 + orbyte gMoveResultFlags, MOVE_RESULT_FAILED + resultmessage + waitmessage 0x40 + setbyte gMoveResultFlags, 0 + end2 + +BattleScript_NoMovesLeft:: + printselectionstring STRINGID_PKMNHASNOMOVESLEFT + endselectionscript + +BattleScript_SelectingMoveWithNoPP:: + printselectionstring STRINGID_NOPPLEFT + endselectionscript + +BattleScript_NoPPForMove:: + attackstring + pause 0x20 + printstring STRINGID_BUTNOPPLEFT + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_SelectingTormentedMove:: + printselectionstring STRINGID_PKMNCANTUSEMOVETORMENT + endselectionscript + + printstring STRINGID_PKMNCANTUSEMOVETORMENT + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_SelectingNotAllowedMoveTaunt:: + printselectionstring STRINGID_PKMNCANTUSEMOVETAUNT + endselectionscript + +BattleScript_MoveUsedIsTaunted:: + printstring STRINGID_PKMNCANTUSEMOVETAUNT + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_WishComesTrue:: + trywish 1, BattleScript_WishButFullHp + playanimation BS_TARGET, B_ANIM_WISH_HEAL, NULL + printstring STRINGID_PKMNWISHCAMETRUE + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_TARGET + datahpupdate BS_TARGET + printstring STRINGID_PKMNREGAINEDHEALTH + waitmessage 0x40 + end2 + +BattleScript_WishButFullHp:: + printstring STRINGID_PKMNWISHCAMETRUE + waitmessage 0x40 + pause 0x20 + printstring STRINGID_PKMNHPFULL + waitmessage 0x40 + end2 + +BattleScript_IngrainTurnHeal:: + playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL, NULL + printstring STRINGID_PKMNABSORBEDNUTRIENTS + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + end2 + +BattleScript_PrintMonIsRooted:: + pause 0x20 + printstring STRINGID_PKMNANCHOREDITSELF + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AtkDefDown:: + setbyte sSTAT_ANIM_PLAYED, 0 + playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_DEF, ATK48_STAT_NEGATIVE | ATK48_ONLY_MULTIPLE | ATK48_DONT_CHECK_LOWER + playstatchangeanimation BS_ATTACKER, BIT_ATK, ATK48_STAT_NEGATIVE | ATK48_DONT_CHECK_LOWER + setstatchanger STAT_ATK, 1, TRUE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN, BattleScript_AtkDefDownAtkFail + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_AtkDefDownAtkFail + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_AtkDefDownAtkFail:: + playstatchangeanimation BS_ATTACKER, BIT_DEF, ATK48_STAT_NEGATIVE | ATK48_DONT_CHECK_LOWER + setstatchanger STAT_DEF, 1, TRUE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN, BattleScript_AtkDefDownDefFail + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_AtkDefDownDefFail + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_AtkDefDownDefFail:: + return + +BattleScript_KnockedOff:: + playanimation BS_TARGET, B_ANIM_ITEM_KNOCKOFF, NULL + printstring STRINGID_PKMNKNOCKEDOFF + waitmessage 0x40 + return + +BattleScript_MoveUsedIsImprisoned:: + printstring STRINGID_PKMNCANTUSEMOVESEALED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_SelectingImprisonedMove:: + printselectionstring STRINGID_PKMNCANTUSEMOVESEALED + endselectionscript + +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 BS_ATTACKER + return + +BattleScript_SnatchedMove:: + attackstring + ppreduce + snatchsetbattlers + playanimation BS_TARGET, B_ANIM_SNATCH_MOVE, NULL + printstring STRINGID_PKMNSNATCHEDMOVE + waitmessage 0x40 + orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_x800000 + swapattackerwithtarget + return + +BattleScript_EnduredMsg:: + printstring STRINGID_PKMNENDUREDHIT + waitmessage 0x40 + return + +BattleScript_OneHitKOMsg:: + printstring STRINGID_ONEHITKO + waitmessage 0x40 + return + +BattleScript_SAtkDown2:: + setbyte sSTAT_ANIM_PLAYED, 0 + playstatchangeanimation BS_ATTACKER, BIT_SPATK, ATK48_STAT_NEGATIVE | ATK48_STAT_BY_TWO | ATK48_DONT_CHECK_LOWER + setstatchanger STAT_SPATK, 2, TRUE + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN, BattleScript_SAtkDown2End + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 2, BattleScript_SAtkDown2End + printfromtable gStatDownStringIds + waitmessage 0x40 +BattleScript_SAtkDown2End:: + return + +BattleScript_FocusPunchSetUp:: + printstring STRINGID_EMPTYSTRING3 + waitmessage 1 + playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP, NULL + printstring STRINGID_PKMNTIGHTENINGFOCUS + waitmessage 0x40 + end2 + +BattleScript_MoveUsedIsAsleep:: + printstring STRINGID_PKMNFASTASLEEP + waitmessage 0x40 + statusanimation BS_ATTACKER + goto BattleScript_MoveEnd + +BattleScript_MoveUsedWokeUp:: + bicword gHitMarker, HITMARKER_x10 + printfromtable gWokeUpStringIds + waitmessage 0x40 + updatestatusicon BS_ATTACKER + return + +BattleScript_MonWokeUpInUproar:: + printstring STRINGID_PKMNWOKEUPINUPROAR + waitmessage 0x40 + updatestatusicon BS_ATTACKER + end2 + +BattleScript_PoisonTurnDmg:: + printstring STRINGID_PKMNHURTBYPOISON + waitmessage 0x40 +BattleScript_DoStatusTurnDmg:: + statusanimation BS_ATTACKER +BattleScript_DoTurnDmg:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + tryfaintmon BS_ATTACKER, 0, NULL + atk24 .+4 + end2 + +BattleScript_BurnTurnDmg:: + printstring STRINGID_PKMNHURTBYBURN + waitmessage 0x40 + goto BattleScript_DoStatusTurnDmg + +BattleScript_MoveUsedIsFrozen:: + printstring STRINGID_PKMNISFROZEN + waitmessage 0x40 + statusanimation BS_ATTACKER + goto BattleScript_MoveEnd + +BattleScript_MoveUsedUnfroze:: + printfromtable gGotDefrostedStringIds + waitmessage 0x40 + updatestatusicon BS_ATTACKER + return + +BattleScript_DefrostedViaFireMove:: + printstring STRINGID_PKMNWASDEFROSTED + waitmessage 0x40 + updatestatusicon BS_TARGET + return + +BattleScript_MoveUsedIsParalyzed:: + printstring STRINGID_PKMNISPARALYZED + waitmessage 0x40 + statusanimation BS_ATTACKER + cancelmultiturnmoves BS_ATTACKER + goto BattleScript_MoveEnd + +BattleScript_MoveUsedFlinched:: + printstring STRINGID_PKMNFLINCHED + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_PrintUproarOverTurns:: + printfromtable gUproarOverTurnStringIds + waitmessage 0x40 + end2 + +BattleScript_ThrashConfuses:: + chosenstatusanimation BS_ATTACKER, 1, STATUS2_CONFUSION + printstring STRINGID_PKMNFATIGUECONFUSION + waitmessage 0x40 + end2 + +BattleScript_MoveUsedIsConfused:: + printstring STRINGID_PKMNISCONFUSED + waitmessage 0x40 + status2animation BS_ATTACKER, STATUS2_CONFUSION + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 0, BattleScript_MoveUsedIsConfusedRet +BattleScript_DoSelfConfusionDmg:: + cancelmultiturnmoves BS_ATTACKER + adjustnormaldamage2 + printstring STRINGID_ITHURTCONFUSION + waitmessage 0x40 + effectivenesssound + hitanimation BS_ATTACKER + waitstate + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + resultmessage + waitmessage 0x40 + tryfaintmon BS_ATTACKER, 0, NULL + goto BattleScript_MoveEnd + +BattleScript_MoveUsedIsConfusedRet:: + return + +BattleScript_MoveUsedIsConfusedNoMore:: + printstring STRINGID_PKMNHEALEDCONFUSION + waitmessage 0x40 + return + +BattleScript_PrintPayDayMoneyString:: + printstring STRINGID_PKMNPICKEDUPITEM + waitmessage 0x40 + return + +BattleScript_WrapTurnDmg:: + playanimation BS_ATTACKER, B_ANIM_TURN_TRAP, sB_ANIM_ARG1 + printstring STRINGID_PKMNHURTBY + waitmessage 0x40 + goto BattleScript_DoTurnDmg + +BattleScript_WrapEnds:: + printstring STRINGID_PKMNFREEDFROM + waitmessage 0x40 + end2 + +BattleScript_MoveUsedIsInLove:: + printstring STRINGID_PKMNINLOVE + waitmessage 0x40 + status2animation BS_ATTACKER, STATUS2_INFATUATION + return + +BattleScript_MoveUsedIsInLoveCantAttack:: + printstring STRINGID_PKMNIMMOBILIZEDBYLOVE + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_NightmareTurnDmg:: + printstring STRINGID_PKMNLOCKEDINNIGHTMARE + waitmessage 0x40 + status2animation BS_ATTACKER, STATUS2_NIGHTMARE + goto BattleScript_DoTurnDmg + +BattleScript_CurseTurnDmg:: + printstring STRINGID_PKMNAFFLICTEDBYCURSE + waitmessage 0x40 + status2animation BS_ATTACKER, STATUS2_CURSED + goto BattleScript_DoTurnDmg + +BattleScript_TargetPRLZHeal:: + printstring STRINGID_PKMNHEALEDPARALYSIS + waitmessage 0x40 + updatestatusicon BS_TARGET + return + +BattleScript_TooScaredToMove:: + printstring STRINGID_MONTOOSCAREDTOMOVE + waitmessage 0x40 + playanimation BS_ATTACKER, B_ANIM_MON_SCARED, NULL + goto BattleScript_MoveEnd + +BattleScript_GhostGetOutGetOut:: + printstring STRINGID_GHOSTGETOUTGETOUT + playanimation BS_ATTACKER, B_ANIM_GHOST_GET_OUT, NULL + goto BattleScript_MoveEnd + +BattleScript_SilphScopeUnveiled:: + pause 0x20 + printstring STRINGID_SILPHSCOPEUNVEILED + waitstate + playanimation BS_OPPONENT1, B_ANIM_SILPH_SCOPED, NULL + pause 0x20 + printstring STRINGID_GHOSTWASMAROWAK + waitmessage 0x40 + end2 + +BattleScript_MoveEffectSleep:: + statusanimation BS_EFFECT_BATTLER + printfromtable gFellAsleepStringIds + waitmessage 0x40 +BattleScript_UpdateEffectStatusIconRet:: + updatestatusicon BS_EFFECT_BATTLER + waitstate + return + +BattleScript_YawnMakesAsleep:: + statusanimation BS_EFFECT_BATTLER + printstring STRINGID_PKMNFELLASLEEP + waitmessage 0x40 + updatestatusicon BS_EFFECT_BATTLER + waitstate + makevisible BS_EFFECT_BATTLER + end2 + +BattleScript_MoveEffectPoison:: + statusanimation BS_EFFECT_BATTLER + printfromtable gGotPoisonedStringIds + waitmessage 0x40 + goto BattleScript_UpdateEffectStatusIconRet + +BattleScript_MoveEffectBurn:: + statusanimation BS_EFFECT_BATTLER + printfromtable gGotBurnedStringIds + waitmessage 0x40 + goto BattleScript_UpdateEffectStatusIconRet + +BattleScript_MoveEffectFreeze:: + statusanimation BS_EFFECT_BATTLER + printfromtable gGotFrozenStringIds + waitmessage 0x40 + goto BattleScript_UpdateEffectStatusIconRet + +BattleScript_MoveEffectParalysis:: + statusanimation BS_EFFECT_BATTLER + printfromtable gGotParalyzedStringIds + waitmessage 0x40 + goto BattleScript_UpdateEffectStatusIconRet + +BattleScript_MoveEffectUproar:: + printstring STRINGID_PKMNCAUSEDUPROAR + waitmessage 0x40 + return + +BattleScript_MoveEffectToxic:: + statusanimation BS_EFFECT_BATTLER + printstring STRINGID_PKMNBADLYPOISONED + waitmessage 0x40 + goto BattleScript_UpdateEffectStatusIconRet + +BattleScript_MoveEffectPayDay:: + printstring STRINGID_COINSSCATTERED + waitmessage 0x40 + return + +BattleScript_MoveEffectWrap:: + printfromtable gWrappedStringIds + waitmessage 0x40 + return + +BattleScript_MoveEffectConfusion:: + chosenstatusanimation BS_EFFECT_BATTLER, 1, STATUS2_CONFUSION + printstring STRINGID_PKMNWASCONFUSED + waitmessage 0x40 + return + +BattleScript_MoveEffectRecoil:: + jumpifmove MOVE_STRUGGLE, BattleScript_DoRecoil + jumpifability BS_ATTACKER, ABILITY_ROCK_HEAD, BattleScript_RecoilEnd +BattleScript_DoRecoil:: + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_x100000 + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + printstring STRINGID_PKMNHITWITHRECOIL + waitmessage 0x40 + tryfaintmon BS_ATTACKER, 0, NULL +BattleScript_RecoilEnd:: + return + +BattleScript_ItemSteal:: + playanimation BS_TARGET, B_ANIM_ITEM_STEAL, NULL + printstring STRINGID_PKMNSTOLEITEM + waitmessage 0x40 + return + +BattleScript_DrizzleActivates:: + pause 0x20 + printstring STRINGID_PKMNMADEITRAIN + waitstate + playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES, NULL + call BattleScript_HandleWeatherFormChanges + end3 + +BattleScript_SpeedBoostActivates:: + playanimation BS_ATTACKER, B_ANIM_STATS_CHANGE, sB_ANIM_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 BS_ATTACKER + datahpupdate BS_ATTACKER + end3 + +BattleScript_SandstreamActivates:: + pause 0x20 + printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM + waitstate + playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES, NULL + call BattleScript_HandleWeatherFormChanges + end3 + +BattleScript_ShedSkinActivates:: + printstring STRINGID_PKMNSXCUREDYPROBLEM + waitmessage 0x40 + updatestatusicon BS_ATTACKER + end3 + +BattleScript_HandleWeatherFormChanges:: + setbyte sBATTLER, 0 +BattleScript_WeatherFormChangesLoop:: + trycastformdatachange + addbyte sBATTLER, 1 + jumpifbytenotequal sBATTLER, gBattlersCount, BattleScript_WeatherFormChangesLoop + return + +BattleScript_CastformChange:: + call BattleScript_DoCastformChangeAnim + end3 + +BattleScript_DoCastformChangeAnim:: + docastformchangeanimation + waitstate + printstring STRINGID_PKMNTRANSFORMED + waitmessage 0x40 + return + +BattleScript_IntimidateActivatesEnd3:: + call BattleScript_DoIntimidateActivationAnim + end3 + +BattleScript_DoIntimidateActivationAnim:: + pause 0x20 +BattleScript_IntimidateActivates:: + setbyte gBattlerTarget, 0 + setstatchanger STAT_ATK, 1, TRUE +BattleScript_IntimidateActivationAnimLoop:: + trygetintimidatetarget BattleScript_IntimidateEnd + jumpifstatus2 BS_TARGET, STATUS2_SUBSTITUTE, BattleScript_IntimidateFail + jumpifability BS_TARGET, ABILITY_CLEAR_BODY, BattleScript_IntimidateAbilityFail + jumpifability BS_TARGET, ABILITY_HYPER_CUTTER, BattleScript_IntimidateAbilityFail + jumpifability BS_TARGET, ABILITY_WHITE_SMOKE, BattleScript_IntimidateAbilityFail + statbuffchange STAT_CHANGE_BS_PTR | STAT_CHANGE_NOT_PROTECT_AFFECTED, BattleScript_IntimidateFail + jumpifbyte CMP_GREATER_THAN, cMULTISTRING_CHOOSER, 1, BattleScript_IntimidateFail + setgraphicalstatchangevalues + playanimation BS_TARGET, B_ANIM_STATS_CHANGE, sB_ANIM_ARG1 + printstring STRINGID_PKMNCUTSATTACKWITH + waitmessage 0x40 +BattleScript_IntimidateFail:: + addbyte gBattlerTarget, 1 + goto BattleScript_IntimidateActivationAnimLoop + +BattleScript_IntimidateEnd:: + return + +BattleScript_IntimidateAbilityFail:: + pause 0x20 + printstring STRINGID_PREVENTEDFROMWORKING + waitmessage 0x40 + goto BattleScript_IntimidateFail + +BattleScript_DroughtActivates:: + pause 0x20 + printstring STRINGID_PKMNSXINTENSIFIEDSUN + waitstate + playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES, NULL + call BattleScript_HandleWeatherFormChanges + 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 BS_TARGET + datahpupdate BS_TARGET + printstring STRINGID_PKMNRESTOREDHPUSING + waitmessage 0x40 + orbyte gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE + goto BattleScript_MoveEnd + +BattleScript_MonMadeMoveUseless_PPLoss:: + ppreduce +BattleScript_MonMadeMoveUseless:: + attackstring + pause 0x20 + printstring STRINGID_PKMNSXMADEYUSELESS + waitmessage 0x40 + orbyte gMoveResultFlags, MOVE_RESULT_DOESNT_AFFECT_FOE + goto BattleScript_MoveEnd + +BattleScript_FlashFireBoost_PPLoss:: + ppreduce +BattleScript_FlashFireBoost:: + attackstring + pause 0x20 + printfromtable gFlashFireStringIds + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AbilityPreventsPhasingOut:: + pause 0x20 + printstring STRINGID_PKMNANCHORSITSELFWITH + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AbilityNoStatLoss:: + pause 0x20 + printstring STRINGID_PKMNPREVENTSSTATLOSSWITH + waitmessage 0x40 + return + +BattleScript_BRNPrevention:: + pause 0x20 + printfromtable gBRNPreventionStringIds + waitmessage 0x40 + return + +BattleScript_PRLZPrevention:: + pause 0x20 + printfromtable gPRLZPreventionStringIds + waitmessage 0x40 + return + +BattleScript_PSNPrevention:: + pause 0x20 + printfromtable gPSNPreventionStringIds + waitmessage 0x40 + return + +BattleScript_ObliviousPreventsAttraction:: + pause 0x20 + printstring STRINGID_PKMNPREVENTSROMANCEWITH + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_FlinchPrevention:: + pause 0x20 + printstring STRINGID_PKMNSXPREVENTSFLINCHING + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_OwnTempoPrevents:: + pause 0x20 + printstring STRINGID_PKMNPREVENTSCONFUSIONWITH + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_SoundproofProtected:: + attackstring + ppreduce + pause 0x20 + printstring STRINGID_PKMNSXBLOCKSY + waitmessage 0x40 + goto BattleScript_MoveEnd + +BattleScript_AbilityNoSpecificStatLoss:: + pause 0x20 + printstring STRINGID_PKMNSXPREVENTSYLOSS + waitmessage 0x40 + setbyte cMULTISTRING_CHOOSER, 3 + 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 BS_ATTACKER + datahpupdate BS_ATTACKER + printstring STRINGID_PKMNHURTSWITH + waitmessage 0x40 + tryfaintmon BS_ATTACKER, 0, NULL + return + +BattleScript_CuteCharmActivates:: + status2animation BS_ATTACKER, STATUS2_INFATUATION + printstring STRINGID_PKMNSXINFATUATEDY + waitmessage 0x40 + return + +BattleScript_ApplySecondaryEffect:: + waitstate + seteffectsecondary + return + +BattleScript_SynchronizeActivates:: + waitstate + seteffectprimary + return + +BattleScript_AbilityCuredStatus:: + printstring STRINGID_PKMNSXCUREDITSYPROBLEM + waitmessage 0x40 + updatestatusicon BS_SCRIPTING + return + +BattleScript_IgnoresWhileAsleep:: + printstring STRINGID_PKMNIGNORESASLEEP + waitmessage 0x40 + moveendto 16 + end + +BattleScript_IgnoresAndUsesRandomMove:: + printstring STRINGID_PKMNIGNOREDORDERS + waitmessage 0x40 + jumptocalledmove 0 +BattleScript_MoveUsedLoafingAround:: + printfromtable gInobedientStringIds + waitmessage 0x40 + moveendto 16 + end + +BattleScript_IgnoresAndFallsAsleep:: + printstring STRINGID_PKMNBEGANTONAP + waitmessage 0x40 + setmoveeffect MOVE_EFFECT_SLEEP | MOVE_EFFECT_AFFECTS_USER + seteffectprimary + moveendto 16 + end + +BattleScript_IgnoresAndHitsItself:: + printstring STRINGID_PKMNWONTOBEY + waitmessage 0x40 + goto BattleScript_DoSelfConfusionDmg + +BattleScript_SubstituteFade:: + playanimation BS_TARGET, B_ANIM_SUBSTITUTE_FADE, NULL + printstring STRINGID_PKMNSUBSTITUTEFADED + return + +BattleScript_BerryCurePrlzEnd2:: + call BattleScript_BerryCureParRet + end2 + +BattleScript_BerryCureParRet:: + playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMCUREDPARALYSIS + waitmessage 0x40 + updatestatusicon BS_SCRIPTING + removeitem BS_SCRIPTING + return + +BattleScript_BerryCurePsnEnd2:: + call BattleScript_BerryCurePsnRet + end2 + +BattleScript_BerryCurePsnRet:: + playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMCUREDPOISON + waitmessage 0x40 + updatestatusicon BS_SCRIPTING + removeitem BS_SCRIPTING + return + +BattleScript_BerryCureBrnEnd2:: + call BattleScript_BerryCureBrnRet + end2 + +BattleScript_BerryCureBrnRet:: + playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMHEALEDBURN + waitmessage 0x40 + updatestatusicon BS_SCRIPTING + removeitem BS_SCRIPTING + return + +BattleScript_BerryCureFrzEnd2:: + call BattleScript_BerryCureFrzRet + end2 + +BattleScript_BerryCureFrzRet:: + playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMDEFROSTEDIT + waitmessage 0x40 + updatestatusicon BS_SCRIPTING + removeitem BS_SCRIPTING + return + +BattleScript_BerryCureSlpEnd2:: + call BattleScript_BerryCureSlpRet + end2 + +BattleScript_BerryCureSlpRet:: + playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMWOKEIT + waitmessage 0x40 + updatestatusicon BS_SCRIPTING + removeitem BS_SCRIPTING + return + +BattleScript_BerryCureConfusionEnd2:: + call BattleScript_BerryCureConfusionRet + end2 + +BattleScript_BerryCureConfusionRet:: + playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMSNAPPEDOUT + waitmessage 0x40 + removeitem BS_SCRIPTING + return + +BattleScript_BerryCureChosenStatusEnd2:: + call BattleScript_BerryCureChosenStatusRet + end2 + +BattleScript_BerryCureChosenStatusRet:: + playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL + printfromtable gBerryEffectStringIds + waitmessage 0x40 + updatestatusicon BS_SCRIPTING + removeitem BS_SCRIPTING + return + +BattleScript_WhiteHerbEnd2:: + call BattleScript_WhiteHerbRet + end2 + +BattleScript_WhiteHerbRet:: + playanimation BS_SCRIPTING, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMRESTOREDSTATUS + waitmessage 0x40 + removeitem BS_SCRIPTING + return + +BattleScript_ItemHealHP_RemoveItem:: + playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMRESTOREDHEALTH + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + removeitem BS_ATTACKER + end2 + +BattleScript_BerryPPHealEnd2:: + playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMRESTOREDPP + waitmessage 0x40 + removeitem BS_ATTACKER + end2 + +BattleScript_ItemHealHP_End2:: + call BattleScript_ItemHealHP_Ret + end2 + +BattleScript_ItemHealHP_Ret:: + playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + return + +BattleScript_SelectingNotAllowedMoveChoiceItem:: + printselectionstring STRINGID_ITEMALLOWSONLYYMOVE + endselectionscript + +BattleScript_HangedOnMsg:: + playanimation BS_TARGET, B_ANIM_HANGED_ON, NULL + printstring STRINGID_PKMNHUNGONWITHX + waitmessage 0x40 + return + +BattleScript_BerryConfuseHealEnd2:: + playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNSITEMRESTOREDHEALTH + waitmessage 0x40 + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + printstring STRINGID_FORXCOMMAYZ + waitmessage 0x40 + setmoveeffect MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER + seteffectprimary + removeitem BS_ATTACKER + end2 + +BattleScript_BerryStatRaiseEnd2:: + playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL + statbuffchange STAT_CHANGE_BS_PTR | MOVE_EFFECT_AFFECTS_USER, .+4 + setbyte cMULTISTRING_CHOOSER, 4 + call BattleScript_StatUp + removeitem BS_ATTACKER + end2 + +BattleScript_BerryFocusEnergyEnd2:: + playanimation BS_ATTACKER, B_ANIM_ITEM_EFFECT, NULL + printstring STRINGID_PKMNUSEDXTOGETPUMPED + waitmessage 0x40 + removeitem BS_ATTACKER + end2 + +BattleScript_ActionSelectionItemsCantBeUsed:: + printselectionstring STRINGID_ITEMSCANTBEUSEDNOW + endselectionscript + +BattleScript_FlushMessageBox:: + printstring STRINGID_EMPTYSTRING3 + return diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s index 199fd0c78..288b0438d 100644 --- a/data/battle_scripts_2.s +++ b/data/battle_scripts_2.s @@ -1,28 +1,238 @@ +#include "constants/moves.h" +#include "constants/battle.h" +#include "constants/battle_move_effects.h" +#include "constants/battle_script_commands.h" +#include "constants/battle_anim.h" +#include "constants/items.h" +#include "constants/abilities.h" +#include "constants/species.h" +#include "constants/pokemon.h" +#include "constants/songs.h" +#include "constants/game_stat.h" +#include "battle_string_ids.h" + .include "asm/macros/battle_script.inc" +@ Define these here since misc_constants.inc conflicts with the C headers + .set NULL, 0 + .set FALSE, 0 + .set TRUE, 1 .section script_data, "aw", %progbits + .align 2 -gBattlescriptsForBallThrow:: @ 81D99B0 - .incbin "baserom.gba", 0x1D99B0, 0x34 +gBattlescriptsForBallThrow:: + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowSafariBall + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowBall + .4byte BattleScript_ThrowBall -gBattlescriptsForUsingItem:: @ 81D99E4 - .incbin "baserom.gba", 0x1D99E4, 0x18 +gBattlescriptsForUsingItem:: + .4byte BattleScript_PlayerUseItem + .4byte BattleScript_AIUseFullRestoreOrHpHeal + .4byte BattleScript_AIUseFullRestoreOrHpHeal + .4byte BattleScript_AIUseStatRestore + .4byte BattleScript_AIUseXstat + .4byte BattleScript_AIUseGuardSpec -gBattlescriptsForRunningByItem:: @ 81D99FC - .incbin "baserom.gba", 0x1D99FC, 0x8 +gBattlescriptsForRunningByItem:: + .4byte BattleScript_UseFluffyTail + .4byte BattleScript_UsePokeFlute -gBattlescriptsForSafariActions:: @ 81D9A04 - .incbin "baserom.gba", 0x1D9A04, 0x3E +gBattlescriptsForSafariActions:: + .4byte BattleScript_WatchesCarefully + .4byte BattleScript_ThrowRock + .4byte BattleScript_ThrowBait + .4byte BattleScript_LeftoverWallyPrepToThrow -BattleScript_SuccessBallThrow:: @ 81D9A42 - .incbin "baserom.gba", 0x1D9A42, 0x46 +BattleScript_ThrowBall:: + jumpifbattletype BATTLE_TYPE_OLD_MAN_TUTORIAL, BattleScript_OldManThrowBall + jumpifbattletype BATTLE_TYPE_POKEDUDE, BattleScript_PokedudeThrowBall + printstring STRINGID_PLAYERUSEDITEM + handleballthrow -gUnknown_81D9A88:: @ 81D9A88 - .incbin "baserom.gba", 0x1D9A88, 0xB +BattleScript_OldManThrowBall:: + printstring STRINGID_OLDMANUSEDITEM + handleballthrow -BattleScript_ShakeBallThrow:: @ 81D9A93 - .incbin "baserom.gba", 0x1D9A93, 0x2E +BattleScript_PokedudeThrowBall:: + printstring STRINGID_POKEDUDEUSED + handleballthrow -BattleScript_TrainerBallBlock:: @ 81D9AC1 - .incbin "baserom.gba", 0x1D9AC1, 0x10 +BattleScript_ThrowSafariBall:: + printstring STRINGID_PLAYERUSEDITEM + updatestatusicon BS_ATTACKER + handleballthrow -BattleScript_GhostBallDodge:: @ 81D9AD1 - .incbin "baserom.gba", 0x1D9AD1, 0x123 +BattleScript_SuccessBallThrow:: + jumpifhalfword CMP_EQUAL, gLastUsedItem, ITEM_SAFARI_BALL, BattleScript_SafariNoIncGameStat + incrementgamestat GAME_STAT_POKEMON_CAPTURES +BattleScript_SafariNoIncGameStat:: + printstring STRINGID_GOTCHAPKMNCAUGHT + trysetcaughtmondexflags BattleScript_CaughtPokemonSkipNewDex + printstring STRINGID_PKMNDATAADDEDTODEX + waitstate + setbyte gBattleCommunication, 0 + displaydexinfo +BattleScript_CaughtPokemonSkipNewDex:: + printstring STRINGID_GIVENICKNAMECAPTURED + waitstate + setbyte gBattleCommunication, 0 + trygivecaughtmonnick BattleScript_CaughtPokemonSkipNickname + givecaughtmon + printfromtable gCaughtMonStringIds + waitmessage 64 + goto BattleScript_CaughtPokemonDone + +BattleScript_CaughtPokemonSkipNickname:: + givecaughtmon +BattleScript_CaughtPokemonDone:: + setbyte gBattleOutcome, B_OUTCOME_CAUGHT + finishturn + +BattleScript_OldMan_Pokedude_CaughtMessage:: + printstring STRINGID_GOTCHAPKMNCAUGHT2 + setbyte gBattleOutcome, B_OUTCOME_CAUGHT + atk57 + finishturn + +BattleScript_ShakeBallThrow:: + printfromtable gBallEscapeStringIds + waitmessage 64 + jumpifnotbattletype BATTLE_TYPE_SAFARI, BattleScript_CatchFailEnd + jumpifbyte CMP_NOT_EQUAL, gNumSafariBalls, 0, BattleScript_CatchFailEnd + printstring STRINGID_OUTOFSAFARIBALLS + waitmessage 64 + setbyte gBattleOutcome, B_OUTCOME_NO_SAFARI_BALLS +BattleScript_CatchFailEnd:: + finishaction + +BattleScript_TrainerBallBlock:: + waitmessage 64 + printstring STRINGID_TRAINERBLOCKEDBALL + waitmessage 64 + printstring STRINGID_DONTBEATHIEF + waitmessage 64 + finishaction + +BattleScript_GhostBallDodge:: + waitmessage 64 + printstring STRINGID_ITDODGEDBALL + waitmessage 64 + finishaction + +BattleScript_PlayerUseItem:: + moveendcase 15 + end + +BattleScript_AIUseFullRestoreOrHpHeal:: + printstring STRINGID_EMPTYSTRING3 + pause 48 + playse SE_KAIFUKU + printstring STRINGID_TRAINER1USEDITEM + waitmessage 64 + useitemonopponent + orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE + healthbarupdate BS_ATTACKER + datahpupdate BS_ATTACKER + printstring STRINGID_PKMNSITEMRESTOREDHEALTH + waitmessage 64 + updatestatusicon BS_ATTACKER + moveendcase 15 + finishaction + +BattleScript_AIUseStatRestore:: + printstring STRINGID_EMPTYSTRING3 + pause 48 + playse SE_KAIFUKU + printstring STRINGID_TRAINER1USEDITEM + waitmessage 64 + useitemonopponent + printfromtable gTrainerItemCuredStatusStringIds + waitmessage 64 + updatestatusicon BS_ATTACKER + moveendcase 15 + finishaction + +BattleScript_AIUseXstat:: + printstring STRINGID_EMPTYSTRING3 + pause 48 + playse SE_KAIFUKU + printstring STRINGID_TRAINER1USEDITEM + waitmessage 64 + useitemonopponent + printfromtable gStatUpStringIds + waitmessage 64 + moveendcase 15 + finishaction + +BattleScript_AIUseGuardSpec:: + printstring STRINGID_EMPTYSTRING3 + pause 48 + playse SE_KAIFUKU + printstring STRINGID_TRAINER1USEDITEM + waitmessage 64 + useitemonopponent + printfromtable gMistUsedStringIds + waitmessage 64 + moveendcase 15 + finishaction + +BattleScript_UseFluffyTail:: + playse SE_NIGERU + setbyte gBattleOutcome, B_OUTCOME_RAN + finishturn + +BattleScript_UsePokeFlute:: + checkpokeflute BS_ATTACKER + jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, 1, BattleScript_PokeFluteWakeUp + printstring STRINGID_POKEFLUTECATCHY + waitmessage 64 + goto BattleScript_PokeFluteEnd + +BattleScript_PokeFluteWakeUp:: + printstring STRINGID_POKEFLUTE + waitmessage 64 + fanfare MUS_POKEFUE + waitfanfare BS_ATTACKER + printstring STRINGID_MONHEARINGFLUTEAWOKE + waitmessage 64 + updatestatusicon BS_PLAYER2 + waitstate +BattleScript_PokeFluteEnd:: + finishaction + +BattleScript_WatchesCarefully:: + printfromtable gSafariPokeblockResultStringIds + waitmessage 64 + playanimation BS_OPPONENT1, B_ANIM_SAFARI_REACTION, NULL + end2 + +BattleScript_ThrowRock:: + printstring STRINGID_THREWROCK + waitmessage 64 + playanimation BS_ATTACKER, B_ANIM_ROCK_THROW, NULL + end2 + +BattleScript_ThrowBait:: + printstring STRINGID_THREWBAIT + waitmessage 64 + playanimation BS_ATTACKER, B_ANIM_BAIT_THROW, NULL + end2 + +BattleScript_LeftoverWallyPrepToThrow:: + printstring STRINGID_RETURNMON + waitmessage 64 + returnatktoball + waitstate + trainerslidein BS_TARGET + waitstate + printstring STRINGID_YOUTHROWABALLNOWRIGHT + waitmessage 64 + end2 diff --git a/data/link_rfu_3.s b/data/link_rfu_3.s index 9235d4b62..88a72d660 100644 --- a/data/link_rfu_3.s +++ b/data/link_rfu_3.s @@ -208,148 +208,625 @@ gUnknown_8457C20:: @ 8457C20 .incbin "baserom.gba", 0x457C20, 0x28 gUnknown_8457C48:: @ 8457C48 - .incbin "baserom.gba", 0x457C48, 0x5C + .string "The other TRAINER showed\n" + .string "you their TRAINER CARD.\p" + .string "Would you like to show your\n" + .string "TRAINER CARD?$" + .align 2 gUnknown_8457CA4:: @ 8457CA4 - .incbin "baserom.gba", 0x457CA4, 0x54 + .string "The other TRAINER challenges you\n" + .string "to battle.\p" + .string "Will you accept the battle\n" + .string "challenge?$" + .align 2 gUnknown_8457CF8:: @ 8457CF8 - .incbin "baserom.gba", 0x457CF8, 0x4C + .string "The other TRAINER invites you\n" + .string "to chat.\p" + .string "Will you accept the chat\n" + .string "invitation?$" + .align 2 gUnknown_8457D44:: @ 8457D44 - .incbin "baserom.gba", 0x457D44, 0x74 + .string "There is an offer to trade your\n" + .string "registered Lv. {DYNAMIC 0} {DYNAMIC 1}\p" + .string "in exchange for a\n" + .string "Lv. {DYNAMIC 2} {DYNAMIC 3}.\p" + .string "Will you accept this trade\n" + .string "offer?$" + .align 2 gUnknown_8457DB8:: @ 8457DB8 - .incbin "baserom.gba", 0x457DB8, 0x54 + .string "There is an offer to trade your\n" + .string "registered EGG.\l" + .string "Will you accept this trade offer?$" + .align 2 gUnknown_8457E0C:: @ 8457E0C - .incbin "baserom.gba", 0x457E0C, 0x1C + .string "The chat has been dropped.\p$" gUnknown_8457E28:: @ 8457E28 - .incbin "baserom.gba", 0x457E28, 0x1C + .string "You declined the offer.\p$" + .align 2 gUnknown_8457E44:: @ 8457E44 - .incbin "baserom.gba", 0x457E44, 0x1C + .string "You declined the offer.\p$" + .align 2 gUnknown_8457E60:: @ 8457E60 - .incbin "baserom.gba", 0x457E60, 0x120 + .string "The chat was ended.\p$" + .align 2 + +gUnknown_8457E78:: + .4byte gUnknown_8457C48 + .4byte gUnknown_8457CA4 + .4byte gUnknown_8457CF8 + .4byte gUnknown_8457D44 + + .align 2 +gUnknown_8457E88:: + .string "Oh, hey! We're in a chat right now.\n" + .string "Want to join us?$" + .align 2 +gUnknown_8457EC0:: + .string "{STR_VAR_1}: Hey, {PLAYER}!\n" + .string "We're having a chat right now.\l" + .string "Want to join us?$" + + .align 2 +gUnknown_8457F00:: + .string "Oh, hi! We're having a chat now.\n" + .string "Would you like to join us?$" + + .align 2 +gUnknown_8457F3C:: + .string "{STR_VAR_1}: Oh, hi, {PLAYER}!\n" + .string "We're having a chat now.\l" + .string "Would you like to join us?$" + + .align 2 gUnknown_8457F80:: @ 8457F80 - .incbin "baserom.gba", 0x457F80, 0x10 + .4byte gUnknown_8457E88 + .4byte gUnknown_8457F00 + .4byte gUnknown_8457EC0 + .4byte gUnknown_8457F3C gUnknown_8457F90:: @ 8457F90 - .incbin "baserom.gba", 0x457F90, 0x164 + .string "……\n" + .string "The TRAINER appears to be busy…\p$" + + .align 2 +gUnknown_8457FB4:: + .string "A battle, huh?\n" + .string "All right, just give me some time.$" + + .align 2 +gUnknown_8457FE8:: + .string "You want to chat, huh?\n" + .string "Sure, just wait a little.$" + + .align 2 +gUnknown_845801C:: + .string "Sure thing! As my “Greetings,”\n" + .string "here's my TRAINER CARD.$" + .align 2 +gUnknown_8458054:: + .string "A battle? Of course, but I need\n" + .string "time to get ready.$" + + .align 2 +gUnknown_8458088:: + .string "Did you want to chat?\n" + .string "Okay, but please wait a moment.$" + + .align 2 +gUnknown_84580C0:: + .string "As my introduction, I'll show you\n" + .string "my TRAINER CARD.$" + + .align 2 gUnknown_84580F4:: @ 84580F4 - .incbin "baserom.gba", 0x4580F4, 0x13C + .4byte gUnknown_8457FB4 + .4byte gUnknown_8457FE8 + .4byte 0 + .4byte gUnknown_845801C + .4byte gUnknown_8458054 + .4byte gUnknown_8458088 + .4byte 0 + .4byte gUnknown_84580C0 + .align 2 + .incbin "baserom.gba", 0x458114, 0x18 + + .align 2 +gUnknown_845812C:: + .string "Thanks for waiting!\n" + .string "Let's get our battle started!{PAUSE 60}$" + + .align 2 +gUnknown_8458164:: + .string "All right!\n" + .string "Let's chat!{PAUSE 60}$" + + .align 2 +gUnknown_8458180:: + .string "Sorry I made you wait!\n" + .string "Let's get started!{PAUSE 60}$" + + .align 2 +gUnknown_84581B0:: + .string "Sorry I made you wait!\n" + .string "Let's chat.{PAUSE 60}$" + + .align 2 +gUnknown_84581D8:: + .string "The trade will be started.{PAUSE 60}$" + + .align 2 +gUnknown_84581F8:: + .string "The battle will be started.{PAUSE 60}$" + + .align 2 +gUnknown_8458218:: + .string "Entering the chat…{PAUSE 60}$" + + .align 2 gUnknown_8458230:: @ 8458230 - .incbin "baserom.gba", 0x458230, 0xE4 + .4byte gUnknown_84581F8 + .4byte gUnknown_8458218 + .4byte gUnknown_84581D8 + .4byte gUnknown_84581F8 + .4byte gUnknown_8458218 + .4byte gUnknown_84581D8 + .4byte gUnknown_845812C + .4byte gUnknown_8458164 + .4byte gUnknown_84581D8 + .4byte gUnknown_8458180 + .4byte gUnknown_84581B0 + .4byte gUnknown_84581D8 + +gUnknown_8458260:: + .string "Sorry! My POKéMON don't seem to\n" + .string "be feeling too well right now.\l" + .string "Let me battle you another time.\p$" + +gUnknown_84582C0:: + .string "I'm terribly sorry, but my POKéMON\n" + .string "aren't feeling well…\p" + .string "Let's battle another time.\p$" gUnknown_8458314:: @ 8458314 - .incbin "baserom.gba", 0x458314, 0xA0 + .4byte gUnknown_8458260 + .4byte gUnknown_84582C0 + .align 2 +gUnknown_845831C:: + .string "Huh? My TRAINER CARD…\n" + .string "Where'd it go now?\l" + .string "Sorry! I'll show you another time!\p$" + + .align 2 +gUnknown_845836C:: + .string "Oh? Now where did I put my\n" + .string "TRAINER CARD?…\l" + .string "Sorry! I'll show you later!\p$" + + .align 2 gUnknown_84583B4:: @ 84583B4 - .incbin "baserom.gba", 0x4583B4, 0x78 + .4byte gUnknown_845831C + .4byte gUnknown_845836C + .align 2 +gUnknown_84583BC:: + .string "If you want to do something with\n" + .string "me, just give me a shout!\p$" + .align 2 +gUnknown_84583F8:: + .string "If you want to do something with\n" + .string "me, don't be shy.\p$" + + .align 2 gUnknown_845842C:: @ 845842C - .incbin "baserom.gba", 0x45842C, 0x8 + .4byte gUnknown_84583BC + .4byte gUnknown_84583F8 gUnknown_8458434:: @ 8458434 - .incbin "baserom.gba", 0x458434, 0x48 + .string "Whoops! Sorry, but I have to do\n" + .string "something else.\l" + .string "Another time, okay?\p$" + .align 2 gUnknown_845847C:: @ 845847C - .incbin "baserom.gba", 0x45847C, 0x44 + .string "If you want to battle, you need\n" + .string "two POKéMON that are below\l" + .string "Lv. 30.\p$" gUnknown_84584C0:: @ 84584C0 - .incbin "baserom.gba", 0x4584C0, 0x88 + .string "For a battle, you need two\n" + .string "POKéMON that are below Lv. 30.\p$" + .align 2 +gUnknown_84584FC:: + .string "Oh, all right.\n" + .string "Come see me anytime, okay?\p$" + + .align 2 +gUnknown_8458528:: + .string "Oh…\n" + .string "Please come by anytime.\p$" + + .align 2 gUnknown_8458548:: @ 8458548 - .incbin "baserom.gba", 0x458548, 0xA0 + .4byte gUnknown_84584FC + .4byte gUnknown_8458528 + .align 2 +gUnknown_8458550:: + .string "Oh, sorry!\n" + .string "I just can't right this instant.\l" + .string "Let's chat another time.\p$" + + .align 2 +gUnknown_8458598:: + .string "Oh, I'm sorry.\n" + .string "I have too much to do right now.\l" + .string "Let's chat some other time.\p$" + + .align 2 gUnknown_84585E8:: @ 84585E8 - .incbin "baserom.gba", 0x4585E8, 0x170 + .4byte gUnknown_8458550 + .4byte gUnknown_8458598 + + .align 2 +gUnknown_84585F0:: + .string "Whoa!\n" + .string "I can tell you're pretty tough!\p$" + + .align 2 +gUnknown_8458618:: + .string "You used that move?\n" + .string "That's good strategy!\p$" + + .align 2 +gUnknown_8458644:: + .string "Way to go!\n" + .string "That was an eye-opener!\p$" + + .align 2 +gUnknown_8458668:: + .string "Oh! How could you use that\n" + .string "POKéMON in that situation?\p$" + + .align 2 +gUnknown_84586A0:: + .string "That POKéMON…\n" + .string "It's been raised really well!\p$" + + .align 2 +gUnknown_84586D0:: + .string "That's it!\n" + .string "This is the right move now!\p$" + + .align 2 +gUnknown_84586F8:: + .string "That's awesome!\n" + .string "You can battle that way?\p$" + + .align 2 +gUnknown_8458724:: + .string "You have exquisite timing for\n" + .string "switching POKéMON!\p$" + .align 2 gUnknown_8458758:: @ 8458758 - .incbin "baserom.gba", 0x458758, 0x164 + .4byte gUnknown_84585F0 + .4byte gUnknown_8458618 + .4byte gUnknown_8458644 + .4byte gUnknown_8458668 + .4byte gUnknown_84586A0 + .4byte gUnknown_84586D0 + .4byte gUnknown_84586F8 + .4byte gUnknown_8458724 + + .align 2 +gUnknown_8458778:: + .string "Oh, I see!\n" + .string "This is educational!\p$" + + .align 2 +gUnknown_845879C:: + .string "Don't say anything funny anymore!\n" + .string "I'm sore from laughing!\p$" + .align 2 +gUnknown_84587D8:: + .string "Oh?\n" + .string "Something like that happened.\p$" + + .align 2 +gUnknown_84587FC:: + .string "Hmhm… What?\n" + .string "So is this what you're saying?\p$" + + .align 2 +gUnknown_8458828:: + .string "Is that right?\n" + .string "I didn't know that.\p$" + + .align 2 +gUnknown_845884C:: + .string "Ahaha!\n" + .string "What is that about?\p$" + + .align 2 +gUnknown_8458868:: + .string "Yes, that's exactly it!\n" + .string "That's what I meant.\p$" + + .align 2 +gUnknown_8458898:: + .string "In other words…\n" + .string "Yes! That's right!\p$" + + .align 2 gUnknown_84588BC:: @ 84588BC - .incbin "baserom.gba", 0x4588BC, 0xF0 + .4byte gUnknown_8458778 + .4byte gUnknown_845879C + .4byte gUnknown_84587D8 + .4byte gUnknown_84587FC + .4byte gUnknown_8458828 + .4byte gUnknown_845884C + .4byte gUnknown_8458868 + .4byte gUnknown_8458898 + + .align 2 +gUnknown_84588DC:: + .string "I'm just showing my TRAINER CARD\n" + .string "as my way of greeting.\p$" + .align 2 +gUnknown_8458918:: + .string "I hope I get to know you better!\p$" + + .align 2 +gUnknown_845893C:: + .string "We're showing each other our\n" + .string "TRAINER CARDS to get acquainted.\p$" + + .align 2 +gUnknown_845897C:: + .string "Glad to meet you.\n" + .string "Please don't be a stranger!\p$" + + .align 2 gUnknown_84589AC:: @ 84589AC - .incbin "baserom.gba", 0x4589AC, 0xCC + .4byte gUnknown_84588DC + .4byte gUnknown_8458918 + .4byte gUnknown_845893C + .4byte gUnknown_845897C + + .align 2 +gUnknown_84589BC:: + .string "Yeahah!\n" + .string "I really wanted this POKéMON!\p$" + + .align 2 +gUnknown_84589E4:: + .string "Finally, a trade got me that\n" + .string "POKéMON I'd wanted a long time.\p$" + .align 2 +gUnknown_8458A24:: + .string "I'm trading POKéMON right now.\p$" + + .align 2 +gUnknown_8458A44:: + .string "I finally got that POKéMON I\n" + .string "wanted in a trade!\p$" + + .align 2 gUnknown_8458A78:: @ 8458A78 - .incbin "baserom.gba", 0x458A78, 0x20 + .4byte gUnknown_84589BC + .4byte gUnknown_84589E4 + .4byte NULL + .4byte NULL + .4byte gUnknown_8458A24 + .4byte gUnknown_8458A44 + .4byte NULL + .4byte NULL gUnknown_8458A98:: @ 8458A98 - .incbin "baserom.gba", 0x458A98, 0x20 + .string "{STR_VAR_1} checked the\n" + .string "TRADING BOARD.\p$" + .align 2 gUnknown_8458AB8:: @ 8458AB8 - .incbin "baserom.gba", 0x458AB8, 0x8C + .string "Welcome to the TRADING BOARD.\p" + .string "You may register your POKéMON\n" + .string "and offer it up for a trade.\p" + .string "Would you like to register one of\n" + .string "your POKéMON?$" + .align 2 gUnknown_8458B44:: @ 8458B44 - .incbin "baserom.gba", 0x458B44, 0x190 + .string "This TRADING BOARD is used for\n" + .string "offering a POKéMON for a trade.\p" + .string "All you need to do is register a\n" + .string "POKéMON for a trade.\p" + .string "Another TRAINER may offer a party\n" + .string "POKéMON in return for the trade.\p" + .string "We hope you will register POKéMON\n" + .string "and trade them with many, many\l" + .string "other TRAINERS.\p" + .string "Would you like to register one of\n" + .string "your POKéMON?$" + .align 2 + .incbin "baserom.gba", 0x00458c80, 0x31 + + .align 2 + .incbin "baserom.gba", 0x00458cb4, 0x20 + + .align 2 gUnknown_8458CD4:: @ 8458CD4 - .incbin "baserom.gba", 0x458CD4, 0x48 + .string "Please choose the type of POKéMON\n" + .string "that you would like in the trade.\n$" + .align 2 gUnknown_8458D1C:: @ 8458D1C - .incbin "baserom.gba", 0x458D1C, 0x38 + .string "Which of your party POKéMON will\n" + .string "you offer in trade?\p$" + .align 2 gUnknown_8458D54:: @ 8458D54 - .incbin "baserom.gba", 0x458D54, 0x24 + .string "Registration has been canceled.\p$" + .align 2 gUnknown_8458D78:: @ 8458D78 - .incbin "baserom.gba", 0x458D78, 0x24 + .string "Registration has been completed.\p$" + .align 2 gUnknown_8458D9C:: @ 8458D9C - .incbin "baserom.gba", 0x458D9C, 0x20 + .string "The trade has been canceled.\p$" + .align 2 gUnknown_8458DBC:: @ 8458DBC - .incbin "baserom.gba", 0x458DBC, 0x2C + .string "Cancel the registration of your\n" + .string "Lv. {STR_VAR_2} {STR_VAR_1}?$" + .align 2 gUnknown_8458DE8:: @ 8458DE8 - .incbin "baserom.gba", 0x458DE8, 0x28 + .string "Cancel the registration of your\n" + .string "EGG?$" + .align 2 gUnknown_8458E10:: @ 8458E10 - .incbin "baserom.gba", 0x458E10, 0x60 + .string "The registration has been canceled.\p$" + + .align 2 + .incbin "baserom.gba", 0x00458e38, 0x38 gUnknown_8458E70:: @ 8458E70 - .incbin "baserom.gba", 0x458E70, 0x60 + .string "Would you like to ask {STR_VAR_1} to\n" + .string "make a trade?$" + + .align 2 + .incbin "baserom.gba", 0x00458e9c, 0x34 gUnknown_8458ED0:: @ 8458ED0 - .incbin "baserom.gba", 0x458ED0, 0x34 + .string "You don't have a {STR_VAR_2}-type\n" + .string "POKéMON that {STR_VAR_1} wants.\p$" + .align 2 gUnknown_8458F04:: @ 8458F04 - .incbin "baserom.gba", 0x458F04, 0x98 + .string "You don't have an EGG that\n" + .string "{STR_VAR_1} wants.\p$" + .align 2 + .string "{STR_VAR_1} can't make a trade for\n" + .string "your POKéMON right now.\p$" + .align 2 + .string "You can't make a trade for\n" + .string "{STR_VAR_1}'s POKéMON right now.\p$" + .incbin "baserom.gba", 0x00458f94, 0x8 gUnknown_8458F9C:: @ 8458F9C - .incbin "baserom.gba", 0x458F9C, 0x20 + .string "Your trade offer was rejected.\p$" gUnknown_8458FBC:: @ 8458FBC - .incbin "baserom.gba", 0x458FBC, 0xC + .string "EGG TRADE$" + .align 2 gUnknown_8458FC8:: @ 8458FC8 - .incbin "baserom.gba", 0x458FC8, 0x1C + .string "{DPAD_UPDOWN}CHOOSE {A_BUTTON}JOIN {B_BUTTON}CANCEL$" + .align 2 gUnknown_8458FE4:: @ 8458FE4 - .incbin "baserom.gba", 0x458FE4, 0x1D4 + .string "Please choose a TRAINER.$" + .align 2 +gUnknown_8459000:: + .string "Please choose a TRAINER for\n" + .string "a SINGLE BATTLE.$" + + .align 2 +gUnknown_8459030:: + .string "Please choose a TRAINER for\n" + .string "a DOUBLE BATTLE.$" + + .align 2 +gUnknown_8459060:: + .string "Please choose the LEADER\n" + .string "for a MULTI BATTLE.$" + + .align 2 +gUnknown_8459090:: + .string "Please choose the TRAINER to\n" + .string "trade with.$" + + .align 2 +gUnknown_84590BC:: + .string "Please choose the TRAINER who is\n" + .string "sharing WONDER CARDS.$" + + .align 2 +gUnknown_84590F4:: + .string "Please choose the TRAINER who is\n" + .string "sharing WONDER NEWS.$" + + .align 2 +gUnknown_845912C:: + .string "Jump with mini POKéMON!\n" + .string "Please choose the LEADER.$" + + .align 2 +gUnknown_8459160:: + .string "BERRY CRUSH!\n" + .string "Please choose the LEADER.$" + + .align 2 +gUnknown_8459188:: + .string "DODRIO BERRY-PICKING!\n" + .string "Please choose the LEADER.$" + + .align 2 gUnknown_84591B8:: @ 84591B8 - .incbin "baserom.gba", 0x4591B8, 0x24 + .4byte gUnknown_8459000 + .4byte gUnknown_8459030 + .4byte gUnknown_8459060 + .4byte gUnknown_8459090 + .4byte gUnknown_845912C + .4byte gUnknown_8459160 + .4byte gUnknown_8459188 + .4byte gUnknown_84590BC + .4byte gUnknown_84590F4 + .align 2 gUnknown_84591DC:: @ 84591DC - .incbin "baserom.gba", 0x4591DC, 0x5C + .string "Searching for a WIRELESS\n" + .string "COMMUNICATION SYSTEM. Wait...$" + + .align 2 + .incbin "baserom.gba", 0x00459214, 0x24 gUnknown_8459238:: @ 8459238 - .incbin "baserom.gba", 0x459238, 0x18 + .string "Awaiting {STR_VAR_1}'s response…$" gUnknown_8459250:: @ 8459250 - .incbin "baserom.gba", 0x459250, 0x3C + .string "{STR_VAR_1} has been asked to register\n" + .string "you as a member. Please wait.$" gUnknown_845928C:: @ 845928C - .incbin "baserom.gba", 0x45928C, 0xB0 + .string "Awaiting a response from the\n" + .string "WIRELESS COMMUNICATION SYSTEM.$" + .incbin "baserom.gba", 0x004592c8, 0x20 + .string "No CARDS appear to be shared \n" + .string "right now.$" + .align 2 + .string "No NEWS appears to be shared\n" + .string "right now.$" gUnknown_845933C:: @ 845933C .incbin "baserom.gba", 0x45933C, 0x3C diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 184527587..080922775 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -29,7 +29,7 @@ extern const u8 BattleScript_LocalBattleLostPrintWhiteOut[]; extern const u8 BattleScript_LocalBattleLostEnd[]; extern const u8 BattleScript_CheckDomeDrew[]; extern const u8 BattleScript_LinkBattleWonOrLost[]; -extern const u8 BattleScript_FrontierTrainerBattleWon[]; +extern const u8 BattleScript_BattleTowerTrainerBattleWon[]; extern const u8 BattleScript_SmokeBallEscape[]; extern const u8 BattleScript_RanAwayUsingMonAbility[]; extern const u8 BattleScript_GotAwaySafely[]; @@ -216,8 +216,8 @@ extern const u8 BattleScript_RunByUsingItem[]; extern const u8 BattleScript_ActionWatchesCarefully[]; extern const u8 BattleScript_ActionGetNear[]; extern const u8 BattleScript_ActionThrowPokeblock[]; -extern const u8 gUnknown_81D9192[]; -extern const u8 gUnknown_81D9180[]; +extern const u8 BattleScript_GhostGetOutGetOut[]; +extern const u8 BattleScript_TooScaredToMove[]; extern const u8 BattleScript_IntimidateActivates[]; extern const u8 BattleScript_IntimidateActivatesEnd3[]; extern const u8 BattleScript_IgnoresWhileAsleep[]; @@ -226,9 +226,9 @@ extern const u8 BattleScript_MoveEffectRecoil[]; extern const u8 BattleScript_FlushMessageBox[]; extern const u8 BattleScript_SpikesOnFaintedBattler[]; extern const u8 BattleScript_GhostBallDodge[]; -extern const u8 gUnknown_81D9A88[]; -extern const u8 gUnknown_81D91A1[]; // knizz: silph scope unveil -extern const u8 gUnknown_81D88D7[]; +extern const u8 BattleScript_OldMan_Pokedude_CaughtMessage[]; +extern const u8 BattleScript_SilphScopeUnveiled[]; +extern const u8 BattleScript_BattleTowerTrainerBattleWon[]; extern const u8 *const gBattleScriptsForMoveEffects[]; extern const u8 *const gBattlescriptsForBallThrow[]; diff --git a/include/battle_string_ids.h b/include/battle_string_ids.h index a030a7b48..155e9f7bf 100644 --- a/include/battle_string_ids.h +++ b/include/battle_string_ids.h @@ -1,10 +1,6 @@ #ifndef GUARD_BATTLE_STRING_IDS_H #define GUARD_BATTLE_STRING_IDS_H -#include "global.h" - -#define BATTLESTRINGS_COUNT 369 - #define BATTLESTRINGS_ID_ADDER 12 // all battlestrings have its ID + 12, because first 5 are reserved #define STRINGID_INTROMSG 0 @@ -16,374 +12,381 @@ // todo: make some of those names less vague: attacker/target vs pkmn, etc. -#define STRINGID_TRAINER1LOSETEXT 12 -#define STRINGID_PKMNGAINEDEXP 13 -#define STRINGID_PKMNGREWTOLV 14 -#define STRINGID_PKMNLEARNEDMOVE 15 -#define STRINGID_TRYTOLEARNMOVE1 16 -#define STRINGID_TRYTOLEARNMOVE2 17 -#define STRINGID_TRYTOLEARNMOVE3 18 -#define STRINGID_PKMNFORGOTMOVE 19 -#define STRINGID_STOPLEARNINGMOVE 20 -#define STRINGID_DIDNOTLEARNMOVE 21 -#define STRINGID_PKMNLEARNEDMOVE2 22 -#define STRINGID_ATTACKMISSED 23 -#define STRINGID_PKMNPROTECTEDITSELF 24 -#define STRINGID_STATSWONTINCREASE2 25 -#define STRINGID_AVOIDEDDAMAGE 26 -#define STRINGID_ITDOESNTAFFECT 27 -#define STRINGID_ATTACKERFAINTED 28 -#define STRINGID_TARGETFAINTED 29 -#define STRINGID_PLAYERGOTMONEY 30 -#define STRINGID_PLAYERWHITEOUT 31 -#define STRINGID_PLAYERWHITEOUT2 32 -#define STRINGID_PREVENTSESCAPE 33 -#define STRINGID_HITXTIMES 34 -#define STRINGID_PKMNFELLASLEEP 35 -#define STRINGID_PKMNMADESLEEP 36 -#define STRINGID_PKMNALREADYASLEEP 37 -#define STRINGID_PKMNALREADYASLEEP2 38 -#define STRINGID_PKMNWASNTAFFECTED 39 -#define STRINGID_PKMNWASPOISONED 40 -#define STRINGID_PKMNPOISONEDBY 41 -#define STRINGID_PKMNHURTBYPOISON 42 -#define STRINGID_PKMNALREADYPOISONED 43 -#define STRINGID_PKMNBADLYPOISONED 44 -#define STRINGID_PKMNENERGYDRAINED 45 -#define STRINGID_PKMNWASBURNED 46 -#define STRINGID_PKMNBURNEDBY 47 -#define STRINGID_PKMNHURTBYBURN 48 -#define STRINGID_PKMNWASFROZEN 49 -#define STRINGID_PKMNFROZENBY 50 -#define STRINGID_PKMNISFROZEN 51 -#define STRINGID_PKMNWASDEFROSTED 52 -#define STRINGID_PKMNWASDEFROSTED2 53 -#define STRINGID_PKMNWASDEFROSTEDBY 54 -#define STRINGID_PKMNWASPARALYZED 55 -#define STRINGID_PKMNWASPARALYZEDBY 56 -#define STRINGID_PKMNISPARALYZED 57 -#define STRINGID_PKMNISALREADYPARALYZED 58 -#define STRINGID_PKMNHEALEDPARALYSIS 59 -#define STRINGID_PKMNDREAMEATEN 60 -#define STRINGID_STATSWONTINCREASE 61 -#define STRINGID_STATSWONTDECREASE 62 -#define STRINGID_TEAMSTOPPEDWORKING 63 -#define STRINGID_FOESTOPPEDWORKING 64 -#define STRINGID_PKMNISCONFUSED 65 -#define STRINGID_PKMNHEALEDCONFUSION 66 -#define STRINGID_PKMNWASCONFUSED 67 -#define STRINGID_PKMNALREADYCONFUSED 68 -#define STRINGID_PKMNFELLINLOVE 69 -#define STRINGID_PKMNINLOVE 70 -#define STRINGID_PKMNIMMOBILIZEDBYLOVE 71 -#define STRINGID_PKMNBLOWNAWAY 72 -#define STRINGID_PKMNCHANGEDTYPE 73 -#define STRINGID_PKMNFLINCHED 74 -#define STRINGID_PKMNREGAINEDHEALTH 75 -#define STRINGID_PKMNHPFULL 76 -#define STRINGID_PKMNRAISEDSPDEF 77 -#define STRINGID_PKMNRAISEDDEF 78 -#define STRINGID_PKMNCOVEREDBYVEIL 79 -#define STRINGID_PKMNUSEDSAFEGUARD 80 -#define STRINGID_PKMNSAFEGUARDEXPIRED 81 -#define STRINGID_PKMNWENTTOSLEEP 82 -#define STRINGID_PKMNSLEPTHEALTHY 83 -#define STRINGID_PKMNWHIPPEDWHIRLWIND 84 -#define STRINGID_PKMNTOOKSUNLIGHT 85 -#define STRINGID_PKMNLOWEREDHEAD 86 -#define STRINGID_PKMNISGLOWING 87 -#define STRINGID_PKMNFLEWHIGH 88 -#define STRINGID_PKMNDUGHOLE 89 -#define STRINGID_PKMNSQUEEZEDBYBIND 90 -#define STRINGID_PKMNTRAPPEDINVORTEX 91 -#define STRINGID_PKMNWRAPPEDBY 92 -#define STRINGID_PKMNCLAMPED 93 -#define STRINGID_PKMNHURTBY 94 -#define STRINGID_PKMNFREEDFROM 95 -#define STRINGID_PKMNCRASHED 96 -#define STRINGID_PKMNSHROUDEDINMIST 97 -#define STRINGID_PKMNPROTECTEDBYMIST 98 -#define STRINGID_PKMNGETTINGPUMPED 99 -#define STRINGID_PKMNHITWITHRECOIL 100 -#define STRINGID_PKMNPROTECTEDITSELF2 101 -#define STRINGID_PKMNBUFFETEDBYSANDSTORM 102 -#define STRINGID_PKMNPELTEDBYHAIL 103 -#define STRINGID_PKMNSEEDED 104 -#define STRINGID_PKMNEVADEDATTACK 105 -#define STRINGID_PKMNSAPPEDBYLEECHSEED 106 -#define STRINGID_PKMNFASTASLEEP 107 -#define STRINGID_PKMNWOKEUP 108 -#define STRINGID_PKMNUPROARKEPTAWAKE 109 -#define STRINGID_PKMNWOKEUPINUPROAR 110 -#define STRINGID_PKMNCAUSEDUPROAR 111 -#define STRINGID_PKMNMAKINGUPROAR 112 -#define STRINGID_PKMNCALMEDDOWN 113 -#define STRINGID_PKMNCANTSLEEPINUPROAR 114 -#define STRINGID_PKMNSTOCKPILED 115 -#define STRINGID_PKMNCANTSTOCKPILE 116 -#define STRINGID_PKMNCANTSLEEPINUPROAR2 117 -#define STRINGID_UPROARKEPTPKMNAWAKE 118 -#define STRINGID_PKMNSTAYEDAWAKEUSING 119 -#define STRINGID_PKMNSTORINGENERGY 120 -#define STRINGID_PKMNUNLEASHEDENERGY 121 -#define STRINGID_PKMNFATIGUECONFUSION 122 -#define STRINGID_PKMNPICKEDUPITEM 123 -#define STRINGID_PKMNUNAFFECTED 124 -#define STRINGID_PKMNTRANSFORMEDINTO 125 -#define STRINGID_PKMNMADESUBSTITUTE 126 -#define STRINGID_PKMNHASSUBSTITUTE 127 -#define STRINGID_SUBSTITUTEDAMAGED 128 -#define STRINGID_PKMNSUBSTITUTEFADED 129 -#define STRINGID_PKMNMUSTRECHARGE 130 -#define STRINGID_PKMNRAGEBUILDING 131 -#define STRINGID_PKMNMOVEWASDISABLED 132 -#define STRINGID_PKMNMOVEISDISABLED 133 -#define STRINGID_PKMNMOVEDISABLEDNOMORE 134 -#define STRINGID_PKMNGOTENCORE 135 -#define STRINGID_PKMNENCOREENDED 136 -#define STRINGID_PKMNTOOKAIM 137 -#define STRINGID_PKMNSKETCHEDMOVE 138 -#define STRINGID_PKMNTRYINGTOTAKEFOE 139 -#define STRINGID_PKMNTOOKFOE 140 -#define STRINGID_PKMNREDUCEDPP 141 -#define STRINGID_PKMNSTOLEITEM 142 -#define STRINGID_TARGETCANTESCAPENOW 143 -#define STRINGID_PKMNFELLINTONIGHTMARE 144 -#define STRINGID_PKMNLOCKEDINNIGHTMARE 145 -#define STRINGID_PKMNLAIDCURSE 146 -#define STRINGID_PKMNAFFLICTEDBYCURSE 147 -#define STRINGID_SPIKESSCATTERED 148 -#define STRINGID_PKMNHURTBYSPIKES 149 -#define STRINGID_PKMNIDENTIFIED 150 -#define STRINGID_PKMNPERISHCOUNTFELL 151 -#define STRINGID_PKMNBRACEDITSELF 152 -#define STRINGID_PKMNENDUREDHIT 153 -#define STRINGID_MAGNITUDESTRENGTH 154 -#define STRINGID_PKMNCUTHPMAXEDATTACK 155 -#define STRINGID_PKMNCOPIEDSTATCHANGES 156 -#define STRINGID_PKMNGOTFREE 157 -#define STRINGID_PKMNSHEDLEECHSEED 158 -#define STRINGID_PKMNBLEWAWAYSPIKES 159 -#define STRINGID_PKMNFLEDFROMBATTLE 160 -#define STRINGID_PKMNFORESAWATTACK 161 -#define STRINGID_PKMNTOOKATTACK 162 -#define STRINGID_PKMNATTACK 163 -#define STRINGID_PKMNCENTERATTENTION 164 -#define STRINGID_PKMNCHARGINGPOWER 165 -#define STRINGID_NATUREPOWERTURNEDINTO 166 -#define STRINGID_PKMNSTATUSNORMAL 167 -#define STRINGID_PKMNHASNOMOVESLEFT 168 -#define STRINGID_PKMNSUBJECTEDTOTORMENT 169 -#define STRINGID_PKMNCANTUSEMOVETORMENT 170 -#define STRINGID_PKMNTIGHTENINGFOCUS 171 -#define STRINGID_PKMNFELLFORTAUNT 172 -#define STRINGID_PKMNCANTUSEMOVETAUNT 173 -#define STRINGID_PKMNREADYTOHELP 174 -#define STRINGID_PKMNSWITCHEDITEMS 175 -#define STRINGID_PKMNCOPIEDFOE 176 -#define STRINGID_PKMNMADEWISH 177 -#define STRINGID_PKMNWISHCAMETRUE 178 -#define STRINGID_PKMNPLANTEDROOTS 179 -#define STRINGID_PKMNABSORBEDNUTRIENTS 180 -#define STRINGID_PKMNANCHOREDITSELF 181 -#define STRINGID_PKMNWASMADEDROWSY 182 -#define STRINGID_PKMNKNOCKEDOFF 183 -#define STRINGID_PKMNSWAPPEDABILITIES 184 -#define STRINGID_PKMNSEALEDOPPONENTMOVE 185 -#define STRINGID_PKMNCANTUSEMOVESEALED 186 -#define STRINGID_PKMNWANTSGRUDGE 187 -#define STRINGID_PKMNLOSTPPGRUDGE 188 -#define STRINGID_PKMNSHROUDEDITSELF 189 -#define STRINGID_PKMNMOVEBOUNCED 190 -#define STRINGID_PKMNWAITSFORTARGET 191 -#define STRINGID_PKMNSNATCHEDMOVE 192 -#define STRINGID_PKMNMADEITRAIN 193 -#define STRINGID_PKMNRAISEDSPEED 194 -#define STRINGID_PKMNPROTECTEDBY 195 -#define STRINGID_PKMNPREVENTSUSAGE 196 -#define STRINGID_PKMNRESTOREDHPUSING 197 -#define STRINGID_PKMNCHANGEDTYPEWITH 198 -#define STRINGID_PKMNPREVENTSPARALYSISWITH 199 -#define STRINGID_PKMNPREVENTSROMANCEWITH 200 -#define STRINGID_PKMNPREVENTSPOISONINGWITH 201 -#define STRINGID_PKMNPREVENTSCONFUSIONWITH 202 -#define STRINGID_PKMNRAISEDFIREPOWERWITH 203 -#define STRINGID_PKMNANCHORSITSELFWITH 204 -#define STRINGID_PKMNCUTSATTACKWITH 205 -#define STRINGID_PKMNPREVENTSSTATLOSSWITH 206 -#define STRINGID_PKMNHURTSWITH 207 -#define STRINGID_PKMNTRACED 208 -#define STRINGID_STATSHARPLY 209 -#define STRINGID_STATROSE 210 -#define STRINGID_STATHARSHLY 211 -#define STRINGID_STATFELL 212 -#define STRINGID_PKMNSSTATCHANGED 213 -#define STRINGID_PKMNSSTATCHANGED2 214 -#define STRINGID_PKMNSSTATCHANGED3 215 -#define STRINGID_PKMNSSTATCHANGED4 216 -#define STRINGID_CRITICALHIT 217 -#define STRINGID_ONEHITKO 218 -#define STRINGID_123POOF 219 -#define STRINGID_ANDELLIPSIS 220 -#define STRINGID_NOTVERYEFFECTIVE 221 -#define STRINGID_SUPEREFFECTIVE 222 -#define STRINGID_GOTAWAYSAFELY 223 -#define STRINGID_WILDPKMNFLED 224 -#define STRINGID_NORUNNINGFROMTRAINERS 225 -#define STRINGID_CANTESCAPE 226 -#define STRINGID_DONTLEAVEBIRCH 227 -#define STRINGID_BUTNOTHINGHAPPENED 228 -#define STRINGID_BUTITFAILED 229 -#define STRINGID_ITHURTCONFUSION 230 -#define STRINGID_MIRRORMOVEFAILED 231 -#define STRINGID_STARTEDTORAIN 232 -#define STRINGID_DOWNPOURSTARTED 233 -#define STRINGID_RAINCONTINUES 234 -#define STRINGID_DOWNPOURCONTINUES 235 -#define STRINGID_RAINSTOPPED 236 -#define STRINGID_SANDSTORMBREWED 237 -#define STRINGID_SANDSTORMRAGES 238 -#define STRINGID_SANDSTORMSUBSIDED 239 -#define STRINGID_SUNLIGHTGOTBRIGHT 240 -#define STRINGID_SUNLIGHTSTRONG 241 -#define STRINGID_SUNLIGHTFADED 242 -#define STRINGID_STARTEDHAIL 243 -#define STRINGID_HAILCONTINUES 244 -#define STRINGID_HAILSTOPPED 245 -#define STRINGID_FAILEDTOSPITUP 246 -#define STRINGID_FAILEDTOSWALLOW 247 -#define STRINGID_WINDBECAMEHEATWAVE 248 -#define STRINGID_STATCHANGESGONE 249 -#define STRINGID_COINSSCATTERED 250 -#define STRINGID_TOOWEAKFORSUBSTITUTE 251 -#define STRINGID_SHAREDPAIN 252 -#define STRINGID_BELLCHIMED 253 -#define STRINGID_FAINTINTHREE 254 -#define STRINGID_NOPPLEFT 255 -#define STRINGID_BUTNOPPLEFT 256 -#define STRINGID_PLAYERUSEDITEM 257 -#define STRINGID_WALLYUSEDITEM 258 -#define STRINGID_TRAINERBLOCKEDBALL 259 -#define STRINGID_DONTBEATHIEF 260 -#define STRINGID_ITDODGEDBALL 261 -#define STRINGID_YOUMISSEDPKMN 262 -#define STRINGID_PKMNBROKEFREE 263 -#define STRINGID_ITAPPEAREDCAUGHT 264 -#define STRINGID_AARGHALMOSTHADIT 265 -#define STRINGID_SHOOTSOCLOSE 266 -#define STRINGID_GOTCHAPKMNCAUGHT 267 -#define STRINGID_GOTCHAPKMNCAUGHT2 268 -#define STRINGID_GIVENICKNAMECAPTURED 269 -#define STRINGID_PKMNSENTTOPC 270 -#define STRINGID_PKMNDATAADDEDTODEX 271 -#define STRINGID_ITISRAINING 272 -#define STRINGID_SANDSTORMISRAGING 273 -#define STRINGID_CANTESCAPE2 274 -#define STRINGID_PKMNIGNORESASLEEP 275 -#define STRINGID_PKMNIGNOREDORDERS 276 -#define STRINGID_PKMNBEGANTONAP 277 -#define STRINGID_PKMNLOAFING 278 -#define STRINGID_PKMNWONTOBEY 279 -#define STRINGID_PKMNTURNEDAWAY 280 -#define STRINGID_PKMNPRETENDNOTNOTICE 281 -#define STRINGID_ENEMYABOUTTOSWITCHPKMN 282 -#define STRINGID_CREPTCLOSER 283 -#define STRINGID_CANTGETCLOSER 284 -#define STRINGID_PKMNWATCHINGCAREFULLY 285 -#define STRINGID_PKMNCURIOUSABOUTX 286 -#define STRINGID_PKMNENTHRALLEDBYX 287 -#define STRINGID_PKMNIGNOREDX 288 -#define STRINGID_THREWPOKEBLOCKATPKMN 289 -#define STRINGID_OUTOFSAFARIBALLS 290 -#define STRINGID_PKMNSITEMCUREDPARALYSIS 291 -#define STRINGID_PKMNSITEMCUREDPOISON 292 -#define STRINGID_PKMNSITEMHEALEDBURN 293 -#define STRINGID_PKMNSITEMDEFROSTEDIT 294 -#define STRINGID_PKMNSITEMWOKEIT 295 -#define STRINGID_PKMNSITEMSNAPPEDOUT 296 -#define STRINGID_PKMNSITEMCUREDPROBLEM 297 -#define STRINGID_PKMNSITEMRESTOREDHEALTH 298 -#define STRINGID_PKMNSITEMRESTOREDPP 299 -#define STRINGID_PKMNSITEMRESTOREDSTATUS 300 -#define STRINGID_PKMNSITEMRESTOREDHPALITTLE 301 -#define STRINGID_ITEMALLOWSONLYYMOVE 302 -#define STRINGID_PKMNHUNGONWITHX 303 -#define STRINGID_EMPTYSTRING3 304 -#define STRINGID_PKMNSXPREVENTSBURNS 305 -#define STRINGID_PKMNSXBLOCKSY 306 -#define STRINGID_PKMNSXRESTOREDHPALITTLE2 307 -#define STRINGID_PKMNSXWHIPPEDUPSANDSTORM 308 -#define STRINGID_PKMNSXPREVENTSYLOSS 309 -#define STRINGID_PKMNSXINFATUATEDY 310 -#define STRINGID_PKMNSXMADEYINEFFECTIVE 311 -#define STRINGID_PKMNSXCUREDYPROBLEM 312 -#define STRINGID_ITSUCKEDLIQUIDOOZE 313 -#define STRINGID_PKMNTRANSFORMED 314 -#define STRINGID_ELECTRICITYWEAKENED 315 -#define STRINGID_FIREWEAKENED 316 -#define STRINGID_PKMNHIDUNDERWATER 317 -#define STRINGID_PKMNSPRANGUP 318 -#define STRINGID_HMMOVESCANTBEFORGOTTEN 319 -#define STRINGID_XFOUNDONEY 320 -#define STRINGID_PLAYERDEFEATEDTRAINER1 321 -#define STRINGID_SOOTHINGAROMA 322 -#define STRINGID_ITEMSCANTBEUSEDNOW 323 -#define STRINGID_FORXCOMMAYZ 324 -#define STRINGID_USINGXTHEYOFZN 325 -#define STRINGID_PKMNUSEDXTOGETPUMPED 326 -#define STRINGID_PKMNSXMADEYUSELESS 327 -#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328 -#define STRINGID_EMPTYSTRING4 329 -#define STRINGID_ABOOSTED 330 -#define STRINGID_PKMNSXINTENSIFIEDSUN 331 -#define STRINGID_PKMNMAKESGROUNDMISS 332 -#define STRINGID_YOUTHROWABALLNOWRIGHT 333 -#define STRINGID_PKMNSXTOOKATTACK 334 -#define STRINGID_PKMNCHOSEXASDESTINY 335 -#define STRINGID_PKMNLOSTFOCUS 336 -#define STRINGID_USENEXTPKMN 337 -#define STRINGID_PKMNFLEDUSINGITS 338 -#define STRINGID_PKMNFLEDUSING 339 -#define STRINGID_PKMNWASDRAGGEDOUT 340 -#define STRINGID_PREVENTEDFROMWORKING 341 -#define STRINGID_PKMNSITEMNORMALIZEDSTATUS 342 -#define STRINGID_TRAINER1USEDITEM 343 -#define STRINGID_BOXISFULL 344 -#define STRINGID_PKMNAVOIDEDATTACK 345 -#define STRINGID_PKMNSXMADEITINEFFECTIVE 346 -#define STRINGID_PKMNSXPREVENTSFLINCHING 347 -#define STRINGID_PKMNALREADYHASBURN 348 -#define STRINGID_STATSWONTDECREASE2 349 -#define STRINGID_PKMNSXBLOCKSY2 350 -#define STRINGID_PKMNSXWOREOFF 351 -#define STRINGID_PKMNRAISEDDEFALITTLE 352 -#define STRINGID_PKMNRAISEDSPDEFALITTLE 353 -#define STRINGID_THEWALLSHATTERED 354 -#define STRINGID_PKMNSXPREVENTSYSZ 355 -#define STRINGID_PKMNSXCUREDITSYPROBLEM 356 -#define STRINGID_ATTACKERCANTESCAPE 357 -#define STRINGID_PKMNOBTAINEDX 358 -#define STRINGID_PKMNOBTAINEDX2 359 -#define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360 -#define STRINGID_BUTNOEFFECT 361 -#define STRINGID_PKMNSXHADNOEFFECTONY 362 -#define STRINGID_TWOENEMIESDEFEATED 363 -#define STRINGID_TRAINER2LOSETEXT 364 -#define STRINGID_PKMNINCAPABLEOFPOWER 365 -#define STRINGID_GLINTAPPEARSINEYE 366 -#define STRINGID_PKMNGETTINGINTOPOSITION 367 -#define STRINGID_PKMNBEGANGROWLINGDEEPLY 368 -#define STRINGID_PKMNEAGERFORMORE 369 -#define STRINGID_DEFEATEDOPPONENTBYREFEREE 370 -#define STRINGID_LOSTTOOPPONENTBYREFEREE 371 -#define STRINGID_TIEDOPPONENTBYREFEREE 372 -#define STRINGID_QUESTIONFORFEITMATCH 373 -#define STRINGID_FORFEITEDMATCH 374 -#define STRINGID_PKMNTRANSFERREDSOMEONESPC 375 -#define STRINGID_PKMNTRANSFERREDLANETTESPC 376 -#define STRINGID_PKMNBOXSOMEONESPCFULL 377 -#define STRINGID_PKMNBOXLANETTESPCFULL 378 -#define STRINGID_TRAINER1WINTEXT 379 -#define STRINGID_TRAINER2WINTEXT 380 +#define STRINGID_TRAINER1LOSETEXT 12 +#define STRINGID_PKMNGAINEDEXP 13 +#define STRINGID_PKMNGREWTOLV 14 +#define STRINGID_PKMNLEARNEDMOVE 15 +#define STRINGID_TRYTOLEARNMOVE1 16 +#define STRINGID_TRYTOLEARNMOVE2 17 +#define STRINGID_TRYTOLEARNMOVE3 18 +#define STRINGID_PKMNFORGOTMOVE 19 +#define STRINGID_STOPLEARNINGMOVE 20 +#define STRINGID_DIDNOTLEARNMOVE 21 +#define STRINGID_PKMNLEARNEDMOVE2 22 +#define STRINGID_ATTACKMISSED 23 +#define STRINGID_PKMNPROTECTEDITSELF 24 +#define STRINGID_STATSWONTINCREASE2 25 +#define STRINGID_AVOIDEDDAMAGE 26 +#define STRINGID_ITDOESNTAFFECT 27 +#define STRINGID_ATTACKERFAINTED 28 +#define STRINGID_TARGETFAINTED 29 +#define STRINGID_PLAYERGOTMONEY 30 +#define STRINGID_PLAYERWHITEOUT 31 +#define STRINGID_PLAYERWHITEOUT2 32 +#define STRINGID_PREVENTSESCAPE 33 +#define STRINGID_HITXTIMES 34 +#define STRINGID_PKMNFELLASLEEP 35 +#define STRINGID_PKMNMADESLEEP 36 +#define STRINGID_PKMNALREADYASLEEP 37 +#define STRINGID_PKMNALREADYASLEEP2 38 +#define STRINGID_PKMNWASNTAFFECTED 39 +#define STRINGID_PKMNWASPOISONED 40 +#define STRINGID_PKMNPOISONEDBY 41 +#define STRINGID_PKMNHURTBYPOISON 42 +#define STRINGID_PKMNALREADYPOISONED 43 +#define STRINGID_PKMNBADLYPOISONED 44 +#define STRINGID_PKMNENERGYDRAINED 45 +#define STRINGID_PKMNWASBURNED 46 +#define STRINGID_PKMNBURNEDBY 47 +#define STRINGID_PKMNHURTBYBURN 48 +#define STRINGID_PKMNWASFROZEN 49 +#define STRINGID_PKMNFROZENBY 50 +#define STRINGID_PKMNISFROZEN 51 +#define STRINGID_PKMNWASDEFROSTED 52 +#define STRINGID_PKMNWASDEFROSTED2 53 +#define STRINGID_PKMNWASDEFROSTEDBY 54 +#define STRINGID_PKMNWASPARALYZED 55 +#define STRINGID_PKMNWASPARALYZEDBY 56 +#define STRINGID_PKMNISPARALYZED 57 +#define STRINGID_PKMNISALREADYPARALYZED 58 +#define STRINGID_PKMNHEALEDPARALYSIS 59 +#define STRINGID_PKMNDREAMEATEN 60 +#define STRINGID_STATSWONTINCREASE 61 +#define STRINGID_STATSWONTDECREASE 62 +#define STRINGID_TEAMSTOPPEDWORKING 63 +#define STRINGID_FOESTOPPEDWORKING 64 +#define STRINGID_PKMNISCONFUSED 65 +#define STRINGID_PKMNHEALEDCONFUSION 66 +#define STRINGID_PKMNWASCONFUSED 67 +#define STRINGID_PKMNALREADYCONFUSED 68 +#define STRINGID_PKMNFELLINLOVE 69 +#define STRINGID_PKMNINLOVE 70 +#define STRINGID_PKMNIMMOBILIZEDBYLOVE 71 +#define STRINGID_PKMNBLOWNAWAY 72 +#define STRINGID_PKMNCHANGEDTYPE 73 +#define STRINGID_PKMNFLINCHED 74 +#define STRINGID_PKMNREGAINEDHEALTH 75 +#define STRINGID_PKMNHPFULL 76 +#define STRINGID_PKMNRAISEDSPDEF 77 +#define STRINGID_PKMNRAISEDDEF 78 +#define STRINGID_PKMNCOVEREDBYVEIL 79 +#define STRINGID_PKMNUSEDSAFEGUARD 80 +#define STRINGID_PKMNSAFEGUARDEXPIRED 81 +#define STRINGID_PKMNWENTTOSLEEP 82 +#define STRINGID_PKMNSLEPTHEALTHY 83 +#define STRINGID_PKMNWHIPPEDWHIRLWIND 84 +#define STRINGID_PKMNTOOKSUNLIGHT 85 +#define STRINGID_PKMNLOWEREDHEAD 86 +#define STRINGID_PKMNISGLOWING 87 +#define STRINGID_PKMNFLEWHIGH 88 +#define STRINGID_PKMNDUGHOLE 89 +#define STRINGID_PKMNSQUEEZEDBYBIND 90 +#define STRINGID_PKMNTRAPPEDINVORTEX 91 +#define STRINGID_PKMNWRAPPEDBY 92 +#define STRINGID_PKMNCLAMPED 93 +#define STRINGID_PKMNHURTBY 94 +#define STRINGID_PKMNFREEDFROM 95 +#define STRINGID_PKMNCRASHED 96 +#define STRINGID_PKMNSHROUDEDINMIST 97 +#define STRINGID_PKMNPROTECTEDBYMIST 98 +#define STRINGID_PKMNGETTINGPUMPED 99 +#define STRINGID_PKMNHITWITHRECOIL 100 +#define STRINGID_PKMNPROTECTEDITSELF2 101 +#define STRINGID_PKMNBUFFETEDBYSANDSTORM 102 +#define STRINGID_PKMNPELTEDBYHAIL 103 +#define STRINGID_PKMNSEEDED 104 +#define STRINGID_PKMNEVADEDATTACK 105 +#define STRINGID_PKMNSAPPEDBYLEECHSEED 106 +#define STRINGID_PKMNFASTASLEEP 107 +#define STRINGID_PKMNWOKEUP 108 +#define STRINGID_PKMNUPROARKEPTAWAKE 109 +#define STRINGID_PKMNWOKEUPINUPROAR 110 +#define STRINGID_PKMNCAUSEDUPROAR 111 +#define STRINGID_PKMNMAKINGUPROAR 112 +#define STRINGID_PKMNCALMEDDOWN 113 +#define STRINGID_PKMNCANTSLEEPINUPROAR 114 +#define STRINGID_PKMNSTOCKPILED 115 +#define STRINGID_PKMNCANTSTOCKPILE 116 +#define STRINGID_PKMNCANTSLEEPINUPROAR2 117 +#define STRINGID_UPROARKEPTPKMNAWAKE 118 +#define STRINGID_PKMNSTAYEDAWAKEUSING 119 +#define STRINGID_PKMNSTORINGENERGY 120 +#define STRINGID_PKMNUNLEASHEDENERGY 121 +#define STRINGID_PKMNFATIGUECONFUSION 122 +#define STRINGID_PKMNPICKEDUPITEM 123 +#define STRINGID_PKMNUNAFFECTED 124 +#define STRINGID_PKMNTRANSFORMEDINTO 125 +#define STRINGID_PKMNMADESUBSTITUTE 126 +#define STRINGID_PKMNHASSUBSTITUTE 127 +#define STRINGID_SUBSTITUTEDAMAGED 128 +#define STRINGID_PKMNSUBSTITUTEFADED 129 +#define STRINGID_PKMNMUSTRECHARGE 130 +#define STRINGID_PKMNRAGEBUILDING 131 +#define STRINGID_PKMNMOVEWASDISABLED 132 +#define STRINGID_PKMNMOVEISDISABLED 133 +#define STRINGID_PKMNMOVEDISABLEDNOMORE 134 +#define STRINGID_PKMNGOTENCORE 135 +#define STRINGID_PKMNENCOREENDED 136 +#define STRINGID_PKMNTOOKAIM 137 +#define STRINGID_PKMNSKETCHEDMOVE 138 +#define STRINGID_PKMNTRYINGTOTAKEFOE 139 +#define STRINGID_PKMNTOOKFOE 140 +#define STRINGID_PKMNREDUCEDPP 141 +#define STRINGID_PKMNSTOLEITEM 142 +#define STRINGID_TARGETCANTESCAPENOW 143 +#define STRINGID_PKMNFELLINTONIGHTMARE 144 +#define STRINGID_PKMNLOCKEDINNIGHTMARE 145 +#define STRINGID_PKMNLAIDCURSE 146 +#define STRINGID_PKMNAFFLICTEDBYCURSE 147 +#define STRINGID_SPIKESSCATTERED 148 +#define STRINGID_PKMNHURTBYSPIKES 149 +#define STRINGID_PKMNIDENTIFIED 150 +#define STRINGID_PKMNPERISHCOUNTFELL 151 +#define STRINGID_PKMNBRACEDITSELF 152 +#define STRINGID_PKMNENDUREDHIT 153 +#define STRINGID_MAGNITUDESTRENGTH 154 +#define STRINGID_PKMNCUTHPMAXEDATTACK 155 +#define STRINGID_PKMNCOPIEDSTATCHANGES 156 +#define STRINGID_PKMNGOTFREE 157 +#define STRINGID_PKMNSHEDLEECHSEED 158 +#define STRINGID_PKMNBLEWAWAYSPIKES 159 +#define STRINGID_PKMNFLEDFROMBATTLE 160 +#define STRINGID_PKMNFORESAWATTACK 161 +#define STRINGID_PKMNTOOKATTACK 162 +#define STRINGID_PKMNATTACK 163 +#define STRINGID_PKMNCENTERATTENTION 164 +#define STRINGID_PKMNCHARGINGPOWER 165 +#define STRINGID_NATUREPOWERTURNEDINTO 166 +#define STRINGID_PKMNSTATUSNORMAL 167 +#define STRINGID_PKMNHASNOMOVESLEFT 168 +#define STRINGID_PKMNSUBJECTEDTOTORMENT 169 +#define STRINGID_PKMNCANTUSEMOVETORMENT 170 +#define STRINGID_PKMNTIGHTENINGFOCUS 171 +#define STRINGID_PKMNFELLFORTAUNT 172 +#define STRINGID_PKMNCANTUSEMOVETAUNT 173 +#define STRINGID_PKMNREADYTOHELP 174 +#define STRINGID_PKMNSWITCHEDITEMS 175 +#define STRINGID_PKMNCOPIEDFOE 176 +#define STRINGID_PKMNMADEWISH 177 +#define STRINGID_PKMNWISHCAMETRUE 178 +#define STRINGID_PKMNPLANTEDROOTS 179 +#define STRINGID_PKMNABSORBEDNUTRIENTS 180 +#define STRINGID_PKMNANCHOREDITSELF 181 +#define STRINGID_PKMNWASMADEDROWSY 182 +#define STRINGID_PKMNKNOCKEDOFF 183 +#define STRINGID_PKMNSWAPPEDABILITIES 184 +#define STRINGID_PKMNSEALEDOPPONENTMOVE 185 +#define STRINGID_PKMNCANTUSEMOVESEALED 186 +#define STRINGID_PKMNWANTSGRUDGE 187 +#define STRINGID_PKMNLOSTPPGRUDGE 188 +#define STRINGID_PKMNSHROUDEDITSELF 189 +#define STRINGID_PKMNMOVEBOUNCED 190 +#define STRINGID_PKMNWAITSFORTARGET 191 +#define STRINGID_PKMNSNATCHEDMOVE 192 +#define STRINGID_PKMNMADEITRAIN 193 +#define STRINGID_PKMNRAISEDSPEED 194 +#define STRINGID_PKMNPROTECTEDBY 195 +#define STRINGID_PKMNPREVENTSUSAGE 196 +#define STRINGID_PKMNRESTOREDHPUSING 197 +#define STRINGID_PKMNCHANGEDTYPEWITH 198 +#define STRINGID_PKMNPREVENTSPARALYSISWITH 199 +#define STRINGID_PKMNPREVENTSROMANCEWITH 200 +#define STRINGID_PKMNPREVENTSPOISONINGWITH 201 +#define STRINGID_PKMNPREVENTSCONFUSIONWITH 202 +#define STRINGID_PKMNRAISEDFIREPOWERWITH 203 +#define STRINGID_PKMNANCHORSITSELFWITH 204 +#define STRINGID_PKMNCUTSATTACKWITH 205 +#define STRINGID_PKMNPREVENTSSTATLOSSWITH 206 +#define STRINGID_PKMNHURTSWITH 207 +#define STRINGID_PKMNTRACED 208 +#define STRINGID_STATSHARPLY 209 +#define STRINGID_STATROSE 210 +#define STRINGID_STATHARSHLY 211 +#define STRINGID_STATFELL 212 +#define STRINGID_PKMNSSTATCHANGED 213 +#define STRINGID_PKMNSSTATCHANGED2 214 +#define STRINGID_PKMNSSTATCHANGED3 215 +#define STRINGID_PKMNSSTATCHANGED4 216 +#define STRINGID_CRITICALHIT 217 +#define STRINGID_ONEHITKO 218 +#define STRINGID_123POOF 219 +#define STRINGID_ANDELLIPSIS 220 +#define STRINGID_NOTVERYEFFECTIVE 221 +#define STRINGID_SUPEREFFECTIVE 222 +#define STRINGID_GOTAWAYSAFELY 223 +#define STRINGID_WILDPKMNFLED 224 +#define STRINGID_NORUNNINGFROMTRAINERS 225 +#define STRINGID_CANTESCAPE 226 +#define STRINGID_DONTLEAVEBIRCH 227 +#define STRINGID_BUTNOTHINGHAPPENED 228 +#define STRINGID_BUTITFAILED 229 +#define STRINGID_ITHURTCONFUSION 230 +#define STRINGID_MIRRORMOVEFAILED 231 +#define STRINGID_STARTEDTORAIN 232 +#define STRINGID_DOWNPOURSTARTED 233 +#define STRINGID_RAINCONTINUES 234 +#define STRINGID_DOWNPOURCONTINUES 235 +#define STRINGID_RAINSTOPPED 236 +#define STRINGID_SANDSTORMBREWED 237 +#define STRINGID_SANDSTORMRAGES 238 +#define STRINGID_SANDSTORMSUBSIDED 239 +#define STRINGID_SUNLIGHTGOTBRIGHT 240 +#define STRINGID_SUNLIGHTSTRONG 241 +#define STRINGID_SUNLIGHTFADED 242 +#define STRINGID_STARTEDHAIL 243 +#define STRINGID_HAILCONTINUES 244 +#define STRINGID_HAILSTOPPED 245 +#define STRINGID_FAILEDTOSPITUP 246 +#define STRINGID_FAILEDTOSWALLOW 247 +#define STRINGID_WINDBECAMEHEATWAVE 248 +#define STRINGID_STATCHANGESGONE 249 +#define STRINGID_COINSSCATTERED 250 +#define STRINGID_TOOWEAKFORSUBSTITUTE 251 +#define STRINGID_SHAREDPAIN 252 +#define STRINGID_BELLCHIMED 253 +#define STRINGID_FAINTINTHREE 254 +#define STRINGID_NOPPLEFT 255 +#define STRINGID_BUTNOPPLEFT 256 +#define STRINGID_PLAYERUSEDITEM 257 +#define STRINGID_OLDMANUSEDITEM 258 +#define STRINGID_TRAINERBLOCKEDBALL 259 +#define STRINGID_DONTBEATHIEF 260 +#define STRINGID_ITDODGEDBALL 261 +#define STRINGID_YOUMISSEDPKMN 262 +#define STRINGID_PKMNBROKEFREE 263 +#define STRINGID_ITAPPEAREDCAUGHT 264 +#define STRINGID_AARGHALMOSTHADIT 265 +#define STRINGID_SHOOTSOCLOSE 266 +#define STRINGID_GOTCHAPKMNCAUGHT 267 +#define STRINGID_GOTCHAPKMNCAUGHT2 268 +#define STRINGID_GIVENICKNAMECAPTURED 269 +#define STRINGID_PKMNSENTTOPC 270 +#define STRINGID_PKMNDATAADDEDTODEX 271 +#define STRINGID_ITISRAINING 272 +#define STRINGID_SANDSTORMISRAGING 273 +#define STRINGID_CANTESCAPE2 274 +#define STRINGID_PKMNIGNORESASLEEP 275 +#define STRINGID_PKMNIGNOREDORDERS 276 +#define STRINGID_PKMNBEGANTONAP 277 +#define STRINGID_PKMNLOAFING 278 +#define STRINGID_PKMNWONTOBEY 279 +#define STRINGID_PKMNTURNEDAWAY 280 +#define STRINGID_PKMNPRETENDNOTNOTICE 281 +#define STRINGID_ENEMYABOUTTOSWITCHPKMN 282 +#define STRINGID_THREWROCK 283 +#define STRINGID_THREWBAIT 284 +#define STRINGID_PKMNWATCHINGCAREFULLY 285 +#define STRINGID_PKMNANGRY 286 +#define STRINGID_PKMNEATING 287 +#define STRINGID_DUMMY288 288 +#define STRINGID_DUMMY289 289 +#define STRINGID_OUTOFSAFARIBALLS 290 +#define STRINGID_PKMNSITEMCUREDPARALYSIS 291 +#define STRINGID_PKMNSITEMCUREDPOISON 292 +#define STRINGID_PKMNSITEMHEALEDBURN 293 +#define STRINGID_PKMNSITEMDEFROSTEDIT 294 +#define STRINGID_PKMNSITEMWOKEIT 295 +#define STRINGID_PKMNSITEMSNAPPEDOUT 296 +#define STRINGID_PKMNSITEMCUREDPROBLEM 297 +#define STRINGID_PKMNSITEMRESTOREDHEALTH 298 +#define STRINGID_PKMNSITEMRESTOREDPP 299 +#define STRINGID_PKMNSITEMRESTOREDSTATUS 300 +#define STRINGID_PKMNSITEMRESTOREDHPALITTLE 301 +#define STRINGID_ITEMALLOWSONLYYMOVE 302 +#define STRINGID_PKMNHUNGONWITHX 303 +#define STRINGID_EMPTYSTRING3 304 +#define STRINGID_PKMNSXPREVENTSBURNS 305 +#define STRINGID_PKMNSXBLOCKSY 306 +#define STRINGID_PKMNSXRESTOREDHPALITTLE2 307 +#define STRINGID_PKMNSXWHIPPEDUPSANDSTORM 308 +#define STRINGID_PKMNSXPREVENTSYLOSS 309 +#define STRINGID_PKMNSXINFATUATEDY 310 +#define STRINGID_PKMNSXMADEYINEFFECTIVE 311 +#define STRINGID_PKMNSXCUREDYPROBLEM 312 +#define STRINGID_ITSUCKEDLIQUIDOOZE 313 +#define STRINGID_PKMNTRANSFORMED 314 +#define STRINGID_ELECTRICITYWEAKENED 315 +#define STRINGID_FIREWEAKENED 316 +#define STRINGID_PKMNHIDUNDERWATER 317 +#define STRINGID_PKMNSPRANGUP 318 +#define STRINGID_HMMOVESCANTBEFORGOTTEN 319 +#define STRINGID_XFOUNDONEY 320 +#define STRINGID_PLAYERDEFEATEDTRAINER1 321 +#define STRINGID_SOOTHINGAROMA 322 +#define STRINGID_ITEMSCANTBEUSEDNOW 323 +#define STRINGID_FORXCOMMAYZ 324 +#define STRINGID_USINGXTHEYOFZN 325 +#define STRINGID_PKMNUSEDXTOGETPUMPED 326 +#define STRINGID_PKMNSXMADEYUSELESS 327 +#define STRINGID_PKMNTRAPPEDBYSANDTOMB 328 +#define STRINGID_EMPTYSTRING4 329 +#define STRINGID_ABOOSTED 330 +#define STRINGID_PKMNSXINTENSIFIEDSUN 331 +#define STRINGID_PKMNMAKESGROUNDMISS 332 +#define STRINGID_YOUTHROWABALLNOWRIGHT 333 +#define STRINGID_PKMNSXTOOKATTACK 334 +#define STRINGID_PKMNCHOSEXASDESTINY 335 +#define STRINGID_PKMNLOSTFOCUS 336 +#define STRINGID_USENEXTPKMN 337 +#define STRINGID_PKMNFLEDUSINGITS 338 +#define STRINGID_PKMNFLEDUSING 339 +#define STRINGID_PKMNWASDRAGGEDOUT 340 +#define STRINGID_PREVENTEDFROMWORKING 341 +#define STRINGID_PKMNSITEMNORMALIZEDSTATUS 342 +#define STRINGID_TRAINER1USEDITEM 343 +#define STRINGID_BOXISFULL 344 +#define STRINGID_PKMNAVOIDEDATTACK 345 +#define STRINGID_PKMNSXMADEITINEFFECTIVE 346 +#define STRINGID_PKMNSXPREVENTSFLINCHING 347 +#define STRINGID_PKMNALREADYHASBURN 348 +#define STRINGID_STATSWONTDECREASE2 349 +#define STRINGID_PKMNSXBLOCKSY2 350 +#define STRINGID_PKMNSXWOREOFF 351 +#define STRINGID_PKMNRAISEDDEFALITTLE 352 +#define STRINGID_PKMNRAISEDSPDEFALITTLE 353 +#define STRINGID_THEWALLSHATTERED 354 +#define STRINGID_PKMNSXPREVENTSYSZ 355 +#define STRINGID_PKMNSXCUREDITSYPROBLEM 356 +#define STRINGID_ATTACKERCANTESCAPE 357 +#define STRINGID_PKMNOBTAINEDX 358 +#define STRINGID_PKMNOBTAINEDX2 359 +#define STRINGID_PKMNOBTAINEDXYOBTAINEDZ 360 +#define STRINGID_BUTNOEFFECT 361 +#define STRINGID_PKMNSXHADNOEFFECTONY 362 +#define STRINGID_OAKPLAYERWON 363 +#define STRINGID_OAKPLAYERLOST 364 +#define STRINGID_PLAYERLOSTAGAINSTENEMYTRAINER 365 +#define STRINGID_PLAYERPAIDPRIZEMONEY 366 +#define STRINGID_PKMNTRANSFERREDSOMEONESPC 367 +#define STRINGID_PKMNTRANSFERREDBILLSPC 368 +#define STRINGID_PKMNBOXSOMEONESPCFULL 369 +#define STRINGID_PKMNBOXBILLSPCFULL 370 +#define STRINGID_POKEDUDEUSED 371 +#define STRINGID_POKEFLUTECATCHY 372 +#define STRINGID_POKEFLUTE 373 +#define STRINGID_MONHEARINGFLUTEAWOKE 374 +#define STRINGID_TRAINER2CLASS 375 +#define STRINGID_TRAINER2NAME 376 +#define STRINGID_PLAYERWHITEDOUT 377 +#define STRINGID_MONTOOSCAREDTOMOVE 378 +#define STRINGID_GHOSTGETOUTGETOUT 379 +#define STRINGID_SILPHSCOPEUNVEILED 380 +#define STRINGID_GHOSTWASMAROWAK 381 +#define STRINGID_TRAINER1MON1COMEBACK 382 +#define STRINGID_TRAINER1WINTEXT 383 +#define STRINGID_TRAINER1MON2COMEBACK 384 +#define STRINGID_TRAINER1MON1AND2COMEBACK 385 + +#define BATTLESTRINGS_COUNT 386 #endif // GUARD_BATTLE_STRING_IDS_H diff --git a/include/constants/battle.h b/include/constants/battle.h index 910b50562..2da89d815 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -169,14 +169,14 @@ #define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000 #define HITMARKER_x100000 0x00100000 #define HITMARKER_x200000 0x00200000 -#define HITMARKER_x400000 0x00400000 +#define HITMARKER_PLAYER_FAINTED 0x00400000 #define HITMARKER_x800000 0x00800000 #define HITMARKER_GRUDGE 0x01000000 #define HITMARKER_OBEYS 0x02000000 #define HITMARKER_x4000000 0x04000000 #define HITMARKER_CHARGING 0x08000000 #define HITMARKER_FAINTED(battler) (gBitTable[battler] << 0x1C) -#define HITMARKER_UNK(battler) (0x10000000 << battler) +#define HITMARKER_FAINTED2(battler) (0x10000000 << battler) // Per-side statuses that affect an entire party #define SIDE_STATUS_REFLECT (1 << 0) @@ -215,6 +215,7 @@ #define WEATHER_ANY (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_SUN_ANY | WEATHER_HAIL_ANY) // Move Effects +#define MOVE_EFFECT_NOTHING_0 0x0 #define MOVE_EFFECT_SLEEP 0x1 #define MOVE_EFFECT_POISON 0x2 #define MOVE_EFFECT_BURN 0x3 diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h index 22793032f..962cad668 100644 --- a/include/constants/battle_anim.h +++ b/include/constants/battle_anim.h @@ -351,7 +351,7 @@ #define B_ANIM_STATS_CHANGE 0x1 #define B_ANIM_SUBSTITUTE_FADE 0x2 #define B_ANIM_SUBSTITUTE_APPEAR 0x3 -#define B_ANIM_POKEBLOCK_THROW 0x4 +#define B_ANIM_BAIT_THROW 0x4 #define B_ANIM_ITEM_KNOCKOFF 0x5 #define B_ANIM_TURN_TRAP 0x6 #define B_ANIM_ITEM_EFFECT 0x7 @@ -370,7 +370,11 @@ #define B_ANIM_FOCUS_PUNCH_SETUP 0x14 #define B_ANIM_INGRAIN_HEAL 0x15 #define B_ANIM_WISH_HEAL 0x16 -#define B_ANIM_x19 0x19 +#define B_ANIM_MON_SCARED 0x17 +#define B_ANIM_GHOST_GET_OUT 0x18 +#define B_ANIM_SILPH_SCOPED 0x19 +#define B_ANIM_ROCK_THROW 0x1A +#define B_ANIM_SAFARI_REACTION 0x1B // special animations table #define B_ANIM_LVL_UP 0x0 diff --git a/include/constants/battle_script_commands.h b/include/constants/battle_script_commands.h index 3809610ba..de1b2a65e 100644 --- a/include/constants/battle_script_commands.h +++ b/include/constants/battle_script_commands.h @@ -38,8 +38,10 @@ #define BS_ATTACKER 1 #define BS_EFFECT_BATTLER 2 #define BS_FAINTED 3 -#define BS_BATTLER_0 7 #define BS_ATTACKER_WITH_PARTNER 4 // for atk98_updatestatusicon +#define BS_UNKNOWN_5 5 // for openpartyscreen +#define BS_UNKNOWN_6 6 // for openpartyscreen +#define BS_BATTLER_0 7 #define BS_ATTACKER_SIDE 8 // for atk1E_jumpifability #define BS_NOT_ATTACKER_SIDE 9 // for atk1E_jumpifability #define BS_SCRIPTING 10 @@ -48,6 +50,9 @@ #define BS_PLAYER2 13 // for atk98_updatestatusicon #define BS_OPPONENT2 14 +// used for openpartyscreen +#define OPEN_PARTY_ALLOW_CANCEL 0x80 + // atk 01, accuracy calc #define NO_ACC_CALC 0xFFFE #define NO_ACC_CALC_CHECK_LOCK_ON 0xFFFF @@ -70,12 +75,12 @@ #define VARIOUS_CASE_4 4 #define VARIOUS_RESET_INTIMIDATE_TRACE_BITS 5 #define VARIOUS_UPDATE_CHOICE_MOVE_ON_LVL_UP 6 -#define VARIOUS_CASE_7 7 +#define VARIOUS_RESET_PLAYER_FAINTED_FLAG 7 #define VARIOUS_CASE_8 8 #define VARIOUS_RETURN_OPPONENT_MON1 9 #define VARIOUS_RETURN_OPPONENT_MON2 10 -#define VARIOUS_CASE_11 11 -#define VARIOUS_CASE_12 12 +#define VARIOUS_CHECK_POKEFLUTE 11 +#define VARIOUS_WAIT_FANFARE 12 // atk80, dmg manipulation #define ATK80_DMG_CHANGE_SIGN 0 diff --git a/include/constants/trainers.h b/include/constants/trainers.h index d8c429ed5..30e11c14f 100644 --- a/include/constants/trainers.h +++ b/include/constants/trainers.h @@ -165,6 +165,7 @@ #define TRAINER_PIC_LADY 146 #define TRAINER_PIC_PAINTER 147 +// Leftover from R/S #define TRAINER_SECRET_BASE 1024 #define F_TRAINER_FEMALE (1 << 7) diff --git a/src/battle_main.c b/src/battle_main.c index 9104bc381..14b191e52 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -66,8 +66,8 @@ static void HandleAction_UseItem(void); static void HandleAction_Run(void); static void HandleAction_WatchesCarefully(void); static void HandleAction_SafariZoneBallThrow(void); -static void HandleAction_ThrowPokeblock(void); -static void HandleAction_GoNear(void); +static void HandleAction_ThrowBait(void); +static void HandleAction_ThrowRock(void); static void HandleAction_SafariZoneRun(void); static void HandleAction_OldManBallThrow(void); static void HandleAction_TryFinish(void); @@ -582,8 +582,8 @@ static void (*const sTurnActionsFuncsTable[])(void) = [B_ACTION_RUN] = HandleAction_Run, [B_ACTION_SAFARI_WATCH_CAREFULLY] = HandleAction_WatchesCarefully, [B_ACTION_SAFARI_BALL] = HandleAction_SafariZoneBallThrow, - [B_ACTION_SAFARI_POKEBLOCK] = HandleAction_ThrowPokeblock, - [B_ACTION_SAFARI_GO_NEAR] = HandleAction_GoNear, + [B_ACTION_SAFARI_POKEBLOCK] = HandleAction_ThrowBait, + [B_ACTION_SAFARI_GO_NEAR] = HandleAction_ThrowRock, [B_ACTION_SAFARI_RUN] = HandleAction_SafariZoneRun, [B_ACTION_OLDMAN_THROW] = HandleAction_OldManBallThrow, [B_ACTION_EXEC_SCRIPT] = HandleAction_RunBattleScript, @@ -2677,7 +2677,7 @@ static void BattleIntroPrintWildMonAttacked(void) if ((gBattleTypeFlags & (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) == (BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_GHOST)) { gBattleScripting.battler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); - BattleScriptExecute(gUnknown_81D91A1); + BattleScriptExecute(BattleScript_SilphScopeUnveiled); } } } @@ -2910,7 +2910,7 @@ void BattleTurnPassed(void) TurnValuesCleanUp(FALSE); gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING); gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE); - gHitMarker &= ~(HITMARKER_x400000); + gHitMarker &= ~(HITMARKER_PLAYER_FAINTED); gHitMarker &= ~(HITMARKER_x100000); gBattleScripting.animTurn = 0; gBattleScripting.animTargetsHit = 0; @@ -3675,7 +3675,7 @@ static void HandleEndTurn_BattleWon(void) { BattleStopLowHpSound(); PlayBGM(MUS_WIN_TRE); - gBattlescriptCurrInstr = gUnknown_81D88D7; + gBattlescriptCurrInstr = BattleScript_BattleTowerTrainerBattleWon; } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) { @@ -4313,7 +4313,7 @@ static void HandleAction_SafariZoneBallThrow(void) gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; } -static void HandleAction_ThrowPokeblock(void) +static void HandleAction_ThrowBait(void) { gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; @@ -4329,7 +4329,7 @@ static void HandleAction_ThrowPokeblock(void) gCurrentActionFuncId = B_ACTION_EXEC_SCRIPT; } -static void HandleAction_GoNear(void) +static void HandleAction_ThrowRock(void) { gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; gBattle_BG0_X = 0; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index a7d8cb6fa..181f59b09 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -2833,7 +2833,7 @@ static void atk19_tryfaintmon(void) gBattlescriptCurrInstr = BS_ptr; if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) { - gHitMarker |= HITMARKER_x400000; + gHitMarker |= HITMARKER_PLAYER_FAINTED; if (gBattleResults.playerFaintCounter < 0xFF) ++gBattleResults.playerFaintCounter; AdjustFriendshipOnBattleFaint(gActiveBattler); @@ -3773,7 +3773,7 @@ static void atk45_playanimation(void) if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE || gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE || gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE - || gBattlescriptCurrInstr[2] == B_ANIM_x19) + || gBattlescriptCurrInstr[2] == B_ANIM_SILPH_SCOPED) { BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr); MarkBattlerForControllerExec(gActiveBattler); @@ -4738,11 +4738,11 @@ static void atk50_openpartyscreen(void) } else { - if (gBattlescriptCurrInstr[1] & 0x80) + if (gBattlescriptCurrInstr[1] & OPEN_PARTY_ALLOW_CANCEL) hitmarkerFaintBits = PARTY_CHOOSE_MON; // Used here as the caseId for the EmitChoose function. else hitmarkerFaintBits = PARTY_MUST_CHOOSE_MON; - battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(0x80)); + battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~(OPEN_PARTY_ALLOW_CANCEL)); if (gSpecialStatuses[battlerId].flag40) { gBattlescriptCurrInstr += 6; @@ -5176,7 +5176,7 @@ static void atk5D_getmoneyreward(void) // The whole function is using wrong registers. if (gBattleOutcome == B_OUTCOME_WON) { - if (gTrainerBattleOpponent_A == 0x400) + if (gTrainerBattleOpponent_A == TRAINER_SECRET_BASE) { moneyReward = 20 * gBattleResources->secretBase->party.levels[0] * gBattleStruct->moneyMultiplier; } @@ -6146,12 +6146,12 @@ static void atk76_various(void) *choicedMove = MOVE_NONE; } break; - case VARIOUS_CASE_7: + case VARIOUS_RESET_PLAYER_FAINTED_FLAG: if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE)) && gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattleMons[0].hp != 0 && gBattleMons[1].hp != 0) - gHitMarker &= ~(HITMARKER_x400000); + gHitMarker &= ~(HITMARKER_PLAYER_FAINTED); break; case VARIOUS_CASE_8: i = 0; // redundant @@ -6183,7 +6183,7 @@ static void atk76_various(void) } } break; - case VARIOUS_CASE_11: + case VARIOUS_CHECK_POKEFLUTE: gBattleCommunication[MULTISTRING_CHOOSER] = 0; monToCheck = 0; for (i = 0; i < gBattlersCount; ++i) @@ -6236,7 +6236,7 @@ static void atk76_various(void) gBattleCommunication[5] = 1; } break; - case VARIOUS_CASE_12: + case VARIOUS_WAIT_FANFARE: if (!IsFanfareTaskInactive()) return; break; @@ -8810,7 +8810,7 @@ static void atkD2_tryswapitems(void) // trick if (gBattleTypeFlags & BATTLE_TYPE_TRAINER_TOWER || (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)) - && gTrainerBattleOpponent_A != 0x400)) + && gTrainerBattleOpponent_A != TRAINER_SECRET_BASE)) { gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1); } @@ -8821,7 +8821,7 @@ static void atkD2_tryswapitems(void) // trick // you can't swap items if they were knocked off in regular battles if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)) - && gTrainerBattleOpponent_A != 0x400 + && gTrainerBattleOpponent_A != TRAINER_SECRET_BASE && (gWishFutureKnock.knockedOffMons[sideAttacker] & gBitTable[gBattlerPartyIndexes[gBattlerAttacker]] || gWishFutureKnock.knockedOffMons[sideTarget] & gBitTable[gBattlerPartyIndexes[gBattlerTarget]])) { @@ -9441,7 +9441,7 @@ static void atkEF_handleballthrow(void) { BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS); MarkBattlerForControllerExec(gActiveBattler); - gBattlescriptCurrInstr = gUnknown_81D9A88; + gBattlescriptCurrInstr = BattleScript_OldMan_Pokedude_CaughtMessage; } else { diff --git a/src/battle_util.c b/src/battle_util.c index de6419ecf..b415f6550 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -1385,9 +1385,9 @@ u8 AtkCanceller_UnableToUseMove(void) if ((gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_LEGENDARY)) == BATTLE_TYPE_GHOST) { if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) - gBattlescriptCurrInstr = gUnknown_81D9180; + gBattlescriptCurrInstr = BattleScript_TooScaredToMove; else - gBattlescriptCurrInstr = gUnknown_81D9192; + gBattlescriptCurrInstr = BattleScript_GhostGetOutGetOut; gBattleCommunication[MULTISTRING_CHOOSER] = 0; effect = 1; } |