summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis/calcrom/calcrom.pl4
-rw-r--r--asm/macros/battle_script.inc1035
-rw-r--r--baserom.ipsbin448532 -> 424717 bytes
-rw-r--r--constants/battle.inc2
-rw-r--r--data/battle_anim.s665
-rw-r--r--data/battle_message.s309
-rw-r--r--data/battle_scripts_1.s4946
-rw-r--r--data/battle_scripts_2.s246
-rw-r--r--data/link_rfu_3.s573
-rw-r--r--include/battle_scripts.h12
-rw-r--r--include/battle_string_ids.h749
-rw-r--r--include/constants/battle.h5
-rw-r--r--include/constants/battle_anim.h8
-rw-r--r--include/constants/battle_script_commands.h13
-rw-r--r--include/constants/trainers.h1
-rw-r--r--src/battle_main.c18
-rw-r--r--src/battle_script_commands.c24
-rw-r--r--src/battle_util.c4
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
index d8b086947..2b8ba6bea 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
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;
}