Label battle script macro arguments

This commit is contained in:
GriffinR
2021-10-13 16:39:21 -04:00
parent fc15b0d5f0
commit def6cc8158
6 changed files with 386 additions and 383 deletions

View File

@@ -3,10 +3,10 @@
.byte 0x0
.endm
.macro accuracycheck param0:req, param1:req
.macro accuracycheck failPtr:req, move:req
.byte 0x1
.4byte \param0
.2byte \param1
.4byte \failPtr
.2byte \move
.endm
.macro attackstring
@@ -77,9 +77,9 @@
.2byte \id
.endm
.macro waitmessage param0:req
.macro waitmessage time:req
.byte 0x12
.2byte \param0
.2byte \time
.endm
.macro printfromtable ptr:req
@@ -109,10 +109,17 @@
.byte \battler
.endm
.macro tryfaintmon battler:req, param1:req, ptr:req
.macro tryfaintmon battler:req
.byte 0x19
.byte \battler
.byte \param1
.byte FALSE
.4byte NULL
.endm
.macro tryfaintmon_spikes battler:req, ptr:req
.byte 0x19
.byte \battler
.byte TRUE
.4byte \ptr
.endm
@@ -140,9 +147,9 @@
.4byte \ptr
.endm
.macro jumpifability param0:req, ability:req, ptr:req
.macro jumpifability battler:req, ability:req, ptr:req
.byte 0x1e
.byte \param0
.byte \battler
.byte \ability
.4byte \ptr
.endm
@@ -163,11 +170,11 @@
.4byte \ptr
.endm
.macro jumpifstatus3condition battler:req, status3:req, param2:req, ptr:req
.macro jumpifstatus3condition battler:req, status3:req, condition:req, ptr:req
.byte 0x21
.byte \battler
.4byte \status3
.byte \param2
.byte \condition
.4byte \ptr
.endm
@@ -207,118 +214,118 @@
.4byte \ptr
.endm
.macro jumpifbyte ifflag:req, param1:req, param2:req, param3:req
.macro jumpifbyte ifflag:req, val:req, byte:req, ptr:req
.byte 0x29
.byte \ifflag
.4byte \param1
.byte \param2
.4byte \param3
.4byte \val
.byte \byte
.4byte \ptr
.endm
.macro jumpifhalfword ifflag:req, param1:req, param2:req, param3:req
.macro jumpifhalfword ifflag:req, val:req, hword:req, ptr:req
.byte 0x2a
.byte \ifflag
.4byte \param1
.2byte \param2
.4byte \param3
.4byte \val
.2byte \hword
.4byte \ptr
.endm
.macro jumpifword ifflag:req, param1:req, param2:req, param3:req
.macro jumpifword ifflag:req, val:req, word:req, ptr:req
.byte 0x2b
.byte \ifflag
.4byte \param1
.4byte \param2
.4byte \param3
.4byte \val
.4byte \word
.4byte \ptr
.endm
.macro jumpifarrayequal param0:req, param1:req, param2:req, param3:req
.macro jumpifarrayequal val1:req, val2:req, size:req, ptr:req
.byte 0x2c
.4byte \param0
.4byte \param1
.byte \param2
.4byte \param3
.4byte \val1
.4byte \val2
.byte \size
.4byte \ptr
.endm
.macro jumpifarraynotequal param0:req, param1:req, param2:req, param3:req
.macro jumpifarraynotequal val1:req, val2:req, size:req, ptr:req
.byte 0x2d
.4byte \param0
.4byte \param1
.byte \param2
.4byte \param3
.4byte \val1
.4byte \val2
.byte \size
.4byte \ptr
.endm
.macro setbyte ptr:req, param1:req
.macro setbyte ptr:req, byte:req
.byte 0x2e
.4byte \ptr
.byte \param1
.byte \byte
.endm
.macro addbyte ptr:req, param1:req
.macro addbyte ptr:req, byte:req
.byte 0x2f
.4byte \ptr
.byte \param1
.byte \byte
.endm
.macro subbyte ptr:req, param1:req
.macro subbyte ptr:req, byte:req
.byte 0x30
.4byte \ptr
.byte \param1
.byte \byte
.endm
.macro copyarray param0:req, param1:req, param2:req
.macro copyarray dest:req, src:req, size:req
.byte 0x31
.4byte \param0
.4byte \param1
.byte \param2
.4byte \dest
.4byte \src
.byte \size
.endm
.macro copyarraywithindex param0:req, param1:req, param2:req, param3:req
.macro copyarraywithindex dest:req, src:req, index:req, size:req
.byte 0x32
.4byte \param0
.4byte \param1
.4byte \param2
.byte \param3
.4byte \dest
.4byte \src
.4byte \index
.byte \size
.endm
.macro orbyte ptr:req, param1:req
.macro orbyte ptr:req, byte:req
.byte 0x33
.4byte \ptr
.byte \param1
.byte \byte
.endm
.macro orhalfword ptr:req, param1:req
.macro orhalfword ptr:req, hword:req
.byte 0x34
.4byte \ptr
.2byte \param1
.2byte \hword
.endm
.macro orword ptr:req, param1:req
.macro orword ptr:req, word:req
.byte 0x35
.4byte \ptr
.4byte \param1
.4byte \word
.endm
.macro bicbyte ptr:req, param1:req
.macro bicbyte ptr:req, byte:req
.byte 0x36
.4byte \ptr
.byte \param1
.byte \byte
.endm
.macro bichalfword ptr:req, param1:req
.macro bichalfword ptr:req, hword:req
.byte 0x37
.4byte \ptr
.2byte \param1
.2byte \hword
.endm
.macro bicword ptr:req, param1:req
.macro bicword ptr:req, word:req
.byte 0x38
.4byte \ptr
.4byte \param1
.4byte \word
.endm
.macro pause param0:req
.macro pause time:req
.byte 0x39
.2byte \param0
.2byte \time
.endm
.macro waitstate
@@ -373,18 +380,18 @@
.byte 0x44
.endm
.macro playanimation battler:req, param1:req, param2:req
.macro playanimation battler:req, animType:req, arg=NULL
.byte 0x45
.byte \battler
.byte \param1
.4byte \param2
.byte \animType
.4byte \arg
.endm
.macro playanimation2 battler:req, param1:req, param2:req
.macro playanimation_var battler:req, animType:req, arg=NULL
.byte 0x46
.byte \battler
.4byte \param1
.4byte \param2
.4byte \animType
.4byte \arg
.endm
.macro setgraphicalstatchangevalues
@@ -398,10 +405,10 @@
.byte \statchange
.endm
.macro moveend param0:req, param1:req
.macro moveend endMode:req, endState:req
.byte 0x49
.byte \param0
.byte \param1
.byte \endMode
.byte \endState
.endm
@ Help macros for 5 uses of moveend command
@@ -466,16 +473,16 @@
.4byte \ptr
.endm
.macro openpartyscreen param0:req, param1:req
.macro openpartyscreen battler:req, ptr:req
.byte 0x50
.byte \param0
.4byte \param1
.byte \battler
.4byte \ptr
.endm
.macro switchhandleorder battler:req, param1:req
.macro switchhandleorder battler:req, state:req
.byte 0x51
.byte \battler
.byte \param1
.byte \state
.endm
.macro switchineffects battler:req
@@ -488,14 +495,14 @@
.byte \battler
.endm
.macro playse param0:req
.macro playse song:req
.byte 0x54
.2byte \param0
.2byte \song
.endm
.macro fanfare param0:req
.macro fanfare song:req
.byte 0x55
.2byte \param0
.2byte \song
.endm
.macro playfaintcry battler:req
@@ -512,21 +519,21 @@
.byte \battler
.endm
.macro handlelearnnewmove param0:req, param1:req, param2:req
.macro handlelearnnewmove learnedMovePtr:req, nothingToLearnPtr:req, isFirstMove:req
.byte 0x59
.4byte \param0
.4byte \param1
.byte \param2
.4byte \learnedMovePtr
.4byte \nothingToLearnPtr
.byte \isFirstMove
.endm
.macro yesnoboxlearnmove param0:req
.macro yesnoboxlearnmove forgotMovePtr:req
.byte 0x5a
.4byte \param0
.4byte \forgotMovePtr
.endm
.macro yesnoboxstoplearningmove param0:req
.macro yesnoboxstoplearningmove noPtr:req
.byte 0x5b
.4byte \param0
.4byte \noPtr
.endm
.macro hitanimation battler:req
@@ -547,9 +554,9 @@
.byte 0x5f
.endm
.macro incrementgamestat param0:req
.macro incrementgamestat stat:req
.byte 0x60
.byte \param0
.byte \stat
.endm
.macro drawpartystatussummary battler:req
@@ -562,9 +569,9 @@
.byte \battler
.endm
.macro jumptocalledmove param0:req
.macro jumptocalledmove notChosenMove:req
.byte 0x63
.byte \param0
.byte \notChosenMove
.endm
.macro statusanimation battler:req
@@ -578,11 +585,11 @@
.4byte \status2
.endm
.macro chosenstatusanimation battler:req, param1:req, param2:req
.macro chosenstatusanimation battler:req, isStatus2:req, status:req
.byte 0x66
.byte \battler
.byte \param1
.4byte \param2
.byte \isStatus2
.4byte \status
.endm
.macro yesnobox
@@ -651,10 +658,10 @@
.byte 0x75
.endm
.macro various battler:req, param1:req
.macro various battler:req, id:req
.byte 0x76
.byte \battler
.byte \param1
.byte \id
.endm
.macro setprotectlike
@@ -674,9 +681,9 @@
.4byte \ptr
.endm
.macro tryhealhalfhealth param0:req, battler:req
.macro tryhealhalfhealth ptr:req, battler:req
.byte 0x7b
.4byte \param0
.4byte \ptr
.byte \battler
.endm
@@ -696,14 +703,14 @@
.byte 0x7f
.endm
.macro manipulatedamage param0:req
.macro manipulatedamage mode:req
.byte 0x80
.byte \param0
.byte \mode
.endm
.macro trysetrest param0:req
.macro trysetrest ptr:req
.byte 0x81
.4byte \param0
.4byte \ptr
.endm
.macro jumpifnotfirstturn ptr:req
@@ -715,23 +722,23 @@
.byte 0x83
.endm
.macro jumpifcantmakeasleep param0:req
.macro jumpifcantmakeasleep ptr:req
.byte 0x84
.4byte \param0
.4byte \ptr
.endm
.macro stockpile
.byte 0x85
.endm
.macro stockpiletobasedamage param0:req
.macro stockpiletobasedamage ptr:req
.byte 0x86
.4byte \param0
.4byte \ptr
.endm
.macro stockpiletohpheal param0:req
.macro stockpiletohpheal ptr:req
.byte 0x87
.4byte \param0
.4byte \ptr
.endm
.macro negativedamage
@@ -756,23 +763,23 @@
.byte 0x8c
.endm
.macro setmultihitcounter param0:req
.macro setmultihitcounter val:req
.byte 0x8d
.byte \param0
.byte \val
.endm
.macro initmultihitstring
.byte 0x8e
.endm
.macro forcerandomswitch param0:req
.macro forcerandomswitch ptr:req
.byte 0x8f
.4byte \param0
.4byte \ptr
.endm
.macro tryconversiontypechange param0:req
.macro tryconversiontypechange ptr:req
.byte 0x90
.4byte \param0
.4byte \ptr
.endm
.macro givepaydaymoney
@@ -783,9 +790,9 @@
.byte 0x92
.endm
.macro tryKO param0:req
.macro tryKO ptr:req
.byte 0x93
.4byte \param0
.4byte \ptr
.endm
.macro damagetohalftargethp
@@ -800,9 +807,9 @@
.byte 0x96
.endm
.macro tryinfatuating param0:req
.macro tryinfatuating ptr:req
.byte 0x97
.4byte \param0
.4byte \ptr
.endm
.macro updatestatusicon battler:req
@@ -826,9 +833,9 @@
.byte 0x9c
.endm
.macro mimicattackcopy param0:req
.macro mimicattackcopy ptr:req
.byte 0x9d
.4byte \param0
.4byte \ptr
.endm
.macro metronome
@@ -843,48 +850,48 @@
.byte 0xa0
.endm
.macro counterdamagecalculator param0:req
.macro counterdamagecalculator ptr:req
.byte 0xa1
.4byte \param0
.4byte \ptr
.endm
.macro mirrorcoatdamagecalculator param0:req
.macro mirrorcoatdamagecalculator ptr:req
.byte 0xa2
.4byte \param0
.4byte \ptr
.endm
.macro disablelastusedattack param0:req
.macro disablelastusedattack ptr:req
.byte 0xa3
.4byte \param0
.4byte \ptr
.endm
.macro trysetencore param0:req
.macro trysetencore ptr:req
.byte 0xa4
.4byte \param0
.4byte \ptr
.endm
.macro painsplitdmgcalc param0:req
.macro painsplitdmgcalc ptr:req
.byte 0xa5
.4byte \param0
.4byte \ptr
.endm
.macro settypetorandomresistance param0:req
.macro settypetorandomresistance ptr:req
.byte 0xa6
.4byte \param0
.4byte \ptr
.endm
.macro setalwayshitflag
.byte 0xa7
.endm
.macro copymovepermanently param0:req
.macro copymovepermanently ptr:req
.byte 0xa8
.4byte \param0
.4byte \ptr
.endm
.macro trychoosesleeptalkmove param0:req
.macro trychoosesleeptalkmove ptr:req
.byte 0xa9
.4byte \param0
.4byte \ptr
.endm
.macro setdestinybond
@@ -899,32 +906,32 @@
.byte 0xac
.endm
.macro tryspiteppreduce param0:req
.macro tryspiteppreduce ptr:req
.byte 0xad
.4byte \param0
.4byte \ptr
.endm
.macro healpartystatus
.byte 0xae
.endm
.macro cursetarget param0:req
.macro cursetarget ptr:req
.byte 0xaf
.4byte \param0
.4byte \ptr
.endm
.macro trysetspikes param0:req
.macro trysetspikes ptr:req
.byte 0xb0
.4byte \param0
.4byte \ptr
.endm
.macro setforesight
.byte 0xb1
.endm
.macro trysetperishsong param0:req
.macro trysetperishsong ptr:req
.byte 0xb2
.4byte \param0
.4byte \ptr
.endm
.macro rolloutdamagecalculation
@@ -957,23 +964,23 @@
.byte 0xb9
.endm
.macro jumpifnopursuitswitchdmg param0:req
.macro jumpifnopursuitswitchdmg ptr:req
.byte 0xba
.4byte \param0
.4byte \ptr
.endm
.macro setsunny
.byte 0xbb
.endm
.macro maxattackhalvehp param0:req
.macro maxattackhalvehp ptr:req
.byte 0xbc
.4byte \param0
.4byte \ptr
.endm
.macro copyfoestats param0:req
.macro copyfoestats ptr:req
.byte 0xbd
.4byte \param0
.4byte \ptr
.endm
.macro rapidspinfree
@@ -984,9 +991,9 @@
.byte 0xbf
.endm
.macro recoverbasedonsunlight param0:req
.macro recoverbasedonsunlight ptr:req
.byte 0xc0
.4byte \param0
.4byte \ptr
.endm
.macro hiddenpowercalc
@@ -997,15 +1004,15 @@
.byte 0xc2
.endm
.macro trysetfutureattack param0:req
.macro trysetfutureattack ptr:req
.byte 0xc3
.4byte \param0
.4byte \ptr
.endm
.macro trydobeatup param0:req, param1:req
.macro trydobeatup endPtr:req, failPtr:req
.byte 0xc4
.4byte \param0
.4byte \param1
.4byte \endPtr
.4byte \failPtr
.endm
.macro setsemiinvulnerablebit
@@ -1041,107 +1048,107 @@
.byte 0xcc
.endm
.macro cureifburnedparalysedorpoisoned param0:req
.macro cureifburnedparalysedorpoisoned ptr:req
.byte 0xcd
.4byte \param0
.4byte \ptr
.endm
.macro settorment param0:req
.macro settorment ptr:req
.byte 0xce
.4byte \param0
.4byte \ptr
.endm
.macro jumpifnodamage param0:req
.macro jumpifnodamage ptr:req
.byte 0xcf
.4byte \param0
.4byte \ptr
.endm
.macro settaunt param0:req
.macro settaunt ptr:req
.byte 0xd0
.4byte \param0
.4byte \ptr
.endm
.macro trysethelpinghand param0:req
.macro trysethelpinghand ptr:req
.byte 0xd1
.4byte \param0
.4byte \ptr
.endm
.macro tryswapitems param0:req
.macro tryswapitems ptr:req
.byte 0xd2
.4byte \param0
.4byte \ptr
.endm
.macro trycopyability param0:req
.macro trycopyability ptr:req
.byte 0xd3
.4byte \param0
.4byte \ptr
.endm
.macro trywish param0:req, param1:req
.macro trywish turnNumber:req, ptr:req
.byte 0xd4
.byte \param0
.4byte \param1
.byte \turnNumber
.4byte \ptr
.endm
.macro trysetroots param0:req
.macro trysetroots ptr:req
.byte 0xd5
.4byte \param0
.4byte \ptr
.endm
.macro doubledamagedealtifdamaged
.byte 0xd6
.endm
.macro setyawn param0:req
.macro setyawn ptr:req
.byte 0xd7
.4byte \param0
.4byte \ptr
.endm
.macro setdamagetohealthdifference param0:req
.macro setdamagetohealthdifference ptr:req
.byte 0xd8
.4byte \param0
.4byte \ptr
.endm
.macro scaledamagebyhealthratio
.byte 0xd9
.endm
.macro tryswapabilities param0:req
.macro tryswapabilities ptr:req
.byte 0xda
.4byte \param0
.4byte \ptr
.endm
.macro tryimprison param0:req
.macro tryimprison ptr:req
.byte 0xdb
.4byte \param0
.4byte \ptr
.endm
.macro trysetgrudge param0:req
.macro trysetgrudge ptr:req
.byte 0xdc
.4byte \param0
.4byte \ptr
.endm
.macro weightdamagecalculation
.byte 0xdd
.endm
.macro assistattackselect param0:req
.macro assistattackselect ptr:req
.byte 0xde
.4byte \param0
.4byte \ptr
.endm
.macro trysetmagiccoat param0:req
.macro trysetmagiccoat ptr:req
.byte 0xdf
.4byte \param0
.4byte \ptr
.endm
.macro trysetsnatch param0:req
.macro trysetsnatch ptr:req
.byte 0xe0
.4byte \param0
.4byte \ptr
.endm
.macro trygetintimidatetarget param0:req
.macro trygetintimidatetarget ptr:req
.byte 0xe1
.4byte \param0
.4byte \ptr
.endm
.macro switchoutabilities battler:req
@@ -1149,10 +1156,10 @@
.byte \battler
.endm
.macro jumpifhasnohp battler:req, param1:req
.macro jumpifhasnohp battler:req, ptr:req
.byte 0xe3
.byte \battler
.4byte \param1
.4byte \ptr
.endm
.macro getsecretpowereffect
@@ -1171,28 +1178,28 @@
.byte 0xe7
.endm
.macro settypebasedhalvers param0:req
.macro settypebasedhalvers ptr:req
.byte 0xe8
.4byte \param0
.4byte \ptr
.endm
.macro setweatherballtype
.byte 0xe9
.endm
.macro tryrecycleitem param0:req
.macro tryrecycleitem ptr:req
.byte 0xea
.4byte \param0
.4byte \ptr
.endm
.macro settypetoterrain param0:req
.macro settypetoterrain ptr:req
.byte 0xeb
.4byte \param0
.4byte \ptr
.endm
.macro pursuitrelated param0:req
.macro pursuitdoubles ptr:req
.byte 0xec
.4byte \param0
.4byte \ptr
.endm
.macro snatchsetbattlers
@@ -1211,18 +1218,18 @@
.byte 0xf0
.endm
.macro trysetcaughtmondexflags param0:req
.macro trysetcaughtmondexflags ptr:req
.byte 0xf1
.4byte \param0
.4byte \ptr
.endm
.macro displaydexinfo
.byte 0xf2
.endm
.macro trygivecaughtmonnick param0:req
.macro trygivecaughtmonnick ptr:req
.byte 0xf3
.4byte \param0
.4byte \ptr
.endm
.macro subattackerhpbydmg
@@ -1241,9 +1248,9 @@
.byte 0xf7
.endm
.macro trainerslideout param0:req
.macro trainerslideout position:req
.byte 0xf8
.byte \param0
.byte \position
.endm
@ various command changed to more readable macros
@@ -1357,11 +1364,11 @@
@ helpful macros
.macro setstatchanger stat:req, stages:req, down:req
setbyte sSTATCHANGER \stat | \stages << 4 | \down << 7
setbyte sSTATCHANGER, \stat | \stages << 4 | \down << 7
.endm
.macro setmoveeffect effect:req
setbyte cEFFECT_CHOOSER \effect
setbyte cEFFECT_CHOOSER, \effect
.endm
.macro chosenstatus1animation battler:req, status:req
@@ -1413,11 +1420,11 @@
.endm
.macro jumpifstatus3 battler:req, status:req, jumpptr:req
jumpifstatus3condition \battler, \status, 0x0, \jumpptr
jumpifstatus3condition \battler, \status, FALSE, \jumpptr
.endm
.macro jumpifnostatus3 battler:req, status:req, jumpptr:req
jumpifstatus3condition \battler, \status, 0x1, \jumpptr
jumpifstatus3condition \battler, \status, TRUE, \jumpptr
.endm
.macro jumpifmovehadnoeffect jumpptr:req

View File

@@ -262,7 +262,7 @@ BattleScript_HitFromAtkAnimation::
resultmessage
waitmessage B_WAIT_TIME_LONG
seteffectwithchance
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
BattleScript_MoveEnd::
moveendall
end
@@ -354,8 +354,8 @@ BattleScript_AbsorbUpdateHp::
printfromtable gAbsorbDrainStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_AbsorbTryFainting::
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_ATTACKER
tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
BattleScript_EffectBurnHit::
@@ -399,10 +399,10 @@ BattleScript_ExplosionLoop:
waitmessage B_WAIT_TIME_LONG
resultmessage
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_ExplosionLoop
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
end
BattleScript_ExplosionMissed:
effectivenesssound
@@ -410,7 +410,7 @@ BattleScript_ExplosionMissed:
waitmessage B_WAIT_TIME_LONG
moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_ExplosionLoop
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
end
BattleScript_PreserveMissedBitDoMoveAnim:
@@ -456,7 +456,7 @@ BattleScript_DreamEaterWorked:
printstring STRINGID_PKMNDREAMEATEN
waitmessage B_WAIT_TIME_LONG
BattleScript_DreamEaterTryFaintEnd:
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
BattleScript_EffectMirrorMove::
@@ -647,7 +647,7 @@ BattleScript_MultiHitPrintStrings::
waitmessage B_WAIT_TIME_LONG
BattleScript_MultiHitEnd::
seteffectwithchance
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
moveendcase MOVEEND_SYNCHRONIZE_TARGET
moveendfrom MOVEEND_IMMUNITY_ABILITIES
end
@@ -865,7 +865,7 @@ BattleScript_MoveMissedDoDamage::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
orbyte gMoveResultFlags, MOVE_RESULT_MISSED
goto BattleScript_MoveEnd
@@ -1431,7 +1431,7 @@ BattleScript_TripleKickPrintStrings::
waitmessage B_WAIT_TIME_LONG
BattleScript_TripleKickEnd::
seteffectwithchance
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
moveendfrom MOVEEND_UPDATE_LAST_MOVES
end
@@ -1524,7 +1524,7 @@ BattleScript_DoGhostCurse::
datahpupdate BS_ATTACKER
printstring STRINGID_PKMNLAIDCURSE
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectProtect::
@@ -1862,7 +1862,7 @@ BattleScript_DoHitAllWithUndergroundBonus::
waitmessage B_WAIT_TIME_LONG
printstring STRINGID_EMPTYSTRING3
waitmessage 1
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
moveendto MOVEEND_NEXT_TARGET
jumpifnexttargetvalid BattleScript_HitsAllWithUndergroundBonusLoop
end
@@ -1962,7 +1962,7 @@ BattleScript_BeatUpAttack::
waitmessage B_WAIT_TIME_LONG
resultmessage
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
moveendto MOVEEND_NEXT_TARGET
goto BattleScript_BeatUpLoop
BattleScript_BeatUpEnd::
@@ -2227,7 +2227,7 @@ BattleScript_EffectMementoTrySpAtk:
printfromtable gStatDownStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_EffectMementoTryFaint:
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectMementoPrintNoEffect:
printstring STRINGID_BUTNOEFFECT
@@ -2243,7 +2243,7 @@ BattleScript_MementoFailEnd:
effectivenesssound
resultmessage
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_EffectFacade::
@@ -2442,7 +2442,7 @@ BattleScript_BrickBreakDoHit::
resultmessage
waitmessage B_WAIT_TIME_LONG
seteffectwithchance
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
BattleScript_EffectYawn::
@@ -3045,7 +3045,7 @@ BattleScript_FrontierTrainerBattleWon_End:
end2
BattleScript_SmokeBallEscape::
playanimation BS_ATTACKER, B_ANIM_SMOKEBALL_ESCAPE, NULL
playanimation BS_ATTACKER, B_ANIM_SMOKEBALL_ESCAPE
printstring STRINGID_PKMNFLEDUSINGITS
waitmessage B_WAIT_TIME_LONG
end2
@@ -3136,7 +3136,7 @@ BattleScript_PursuitDmgOnSwitchOut::
waitmessage B_WAIT_TIME_LONG
resultmessage
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
moveendfromto MOVEEND_ON_DAMAGE_ABILITIES, MOVEEND_CHOICE_MOVE
getbattlerfainted BS_TARGET
jumpifbyte CMP_EQUAL, gBattleCommunication, FALSE, BattleScript_PursuitDmgOnSwitchOutRet
@@ -3190,14 +3190,14 @@ BattleScript_RainContinuesOrEnds::
printfromtable gRainContinuesStringIds
waitmessage B_WAIT_TIME_LONG
jumpifbyte CMP_EQUAL, cMULTISTRING_CHOOSER, B_MSG_RAIN_STOPPED, BattleScript_RainContinuesOrEndsEnd
playanimation BS_ATTACKER, B_ANIM_RAIN_CONTINUES, NULL
playanimation BS_ATTACKER, B_ANIM_RAIN_CONTINUES
BattleScript_RainContinuesOrEndsEnd::
end2
BattleScript_DamagingWeatherContinues::
printfromtable gSandStormHailContinuesStringIds
waitmessage B_WAIT_TIME_LONG
playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL
playanimation_var BS_ATTACKER, sB_ANIM_ARG1
setbyte gBattleCommunication, 0
BattleScript_DamagingWeatherLoop::
copyarraywithindex gBattlerAttacker, gBattlerByTurnOrder, gBattleCommunication, 1
@@ -3210,7 +3210,7 @@ BattleScript_DamagingWeatherLoop::
hitanimation BS_ATTACKER
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
checkteamslost BattleScript_DamagingWeatherLoopIncrement
BattleScript_DamagingWeatherLoopIncrement::
jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd
@@ -3228,7 +3228,7 @@ BattleScript_SandStormHailEnds::
BattleScript_SunlightContinues::
printstring STRINGID_SUNLIGHTSTRONG
waitmessage B_WAIT_TIME_LONG
playanimation BS_ATTACKER, B_ANIM_SUN_CONTINUES, NULL
playanimation BS_ATTACKER, B_ANIM_SUN_CONTINUES
end2
BattleScript_SunlightFaded::
@@ -3239,7 +3239,7 @@ BattleScript_SunlightFaded::
BattleScript_OverworldWeatherStarts::
printfromtable gWeatherStartsStringIds
waitmessage B_WAIT_TIME_LONG
playanimation2 BS_ATTACKER, sB_ANIM_ARG1, NULL
playanimation_var BS_ATTACKER, sB_ANIM_ARG1
end3
BattleScript_SideStatusWoreOff::
@@ -3277,8 +3277,8 @@ BattleScript_LeechSeedTurnPrintAndUpdateHp::
datahpupdate BS_TARGET
printfromtable gLeechSeedStringIds
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_ATTACKER
tryfaintmon BS_TARGET
end2
BattleScript_BideStoringEnergy::
@@ -3307,7 +3307,7 @@ BattleScript_BideAttack::
datahpupdate BS_TARGET
resultmessage
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
goto BattleScript_MoveEnd
BattleScript_BideNoEnergyToAttack::
@@ -3379,7 +3379,7 @@ BattleScript_DestinyBondTakesLife::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
return
BattleScript_SpikesOnAttacker::
@@ -3387,8 +3387,8 @@ BattleScript_SpikesOnAttacker::
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
call BattleScript_PrintHurtBySpikes
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER, TRUE, BattleScript_SpikesOnAttackerFainted
tryfaintmon BS_ATTACKER
tryfaintmon_spikes BS_ATTACKER, BattleScript_SpikesOnAttackerFainted
return
BattleScript_SpikesOnAttackerFainted::
@@ -3402,8 +3402,8 @@ BattleScript_SpikesOnTarget::
healthbarupdate BS_TARGET
datahpupdate BS_TARGET
call BattleScript_PrintHurtBySpikes
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET, TRUE, BattleScript_SpikesOnTargetFainted
tryfaintmon BS_TARGET
tryfaintmon_spikes BS_TARGET, BattleScript_SpikesOnTargetFainted
return
BattleScript_SpikesOnTargetFainted::
@@ -3417,8 +3417,8 @@ BattleScript_SpikesOnFaintedBattler::
healthbarupdate BS_FAINTED
datahpupdate BS_FAINTED
call BattleScript_PrintHurtBySpikes
tryfaintmon BS_FAINTED, FALSE, NULL
tryfaintmon BS_FAINTED, TRUE, BattleScript_SpikesOnFaintedBattlerFainted
tryfaintmon BS_FAINTED
tryfaintmon_spikes BS_FAINTED, BattleScript_SpikesOnFaintedBattlerFainted
return
BattleScript_SpikesOnFaintedBattlerFainted::
@@ -3438,7 +3438,7 @@ BattleScript_PerishSongTakesLife::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
end2
BattleScript_PerishSongCountGoesDown::
@@ -3513,10 +3513,10 @@ BattleScript_CheckDoomDesireMiss::
BattleScript_FutureAttackAnimate::
adjustnormaldamage2
jumpifbyte CMP_NOT_EQUAL, cMULTISTRING_CHOOSER, B_MSG_FUTURE_SIGHT, BattleScript_FutureHitAnimDoomDesire
playanimation BS_ATTACKER, B_ANIM_FUTURE_SIGHT_HIT, NULL
playanimation BS_ATTACKER, B_ANIM_FUTURE_SIGHT_HIT
goto BattleScript_DoFutureAttackHit
BattleScript_FutureHitAnimDoomDesire::
playanimation BS_ATTACKER, B_ANIM_DOOM_DESIRE_HIT, NULL
playanimation BS_ATTACKER, B_ANIM_DOOM_DESIRE_HIT
BattleScript_DoFutureAttackHit::
effectivenesssound
hitanimation BS_TARGET
@@ -3525,7 +3525,7 @@ BattleScript_DoFutureAttackHit::
datahpupdate BS_TARGET
resultmessage
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_TARGET, FALSE, NULL
tryfaintmon BS_TARGET
checkteamslost BattleScript_FutureAttackEnd
BattleScript_FutureAttackEnd::
moveendcase MOVEEND_RAGE
@@ -3585,7 +3585,7 @@ BattleScript_SelectingNotAllowedMoveTauntInPalace::
BattleScript_WishComesTrue::
trywish 1, BattleScript_WishButFullHp
playanimation BS_TARGET, B_ANIM_WISH_HEAL, NULL
playanimation BS_TARGET, B_ANIM_WISH_HEAL
printstring STRINGID_PKMNWISHCAMETRUE
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -3604,7 +3604,7 @@ BattleScript_WishButFullHp::
end2
BattleScript_IngrainTurnHeal::
playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL, NULL
playanimation BS_ATTACKER, B_ANIM_INGRAIN_HEAL
printstring STRINGID_PKMNABSORBEDNUTRIENTS
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -3638,7 +3638,7 @@ BattleScript_AtkDefDown_End::
return
BattleScript_KnockedOff::
playanimation BS_TARGET, B_ANIM_ITEM_KNOCKOFF, NULL
playanimation BS_TARGET, B_ANIM_ITEM_KNOCKOFF
printstring STRINGID_PKMNKNOCKEDOFF
waitmessage B_WAIT_TIME_LONG
return
@@ -3675,7 +3675,7 @@ BattleScript_SnatchedMove::
attackstring
ppreduce
snatchsetbattlers
playanimation BS_TARGET, B_ANIM_SNATCH_MOVE, NULL
playanimation BS_TARGET, B_ANIM_SNATCH_MOVE
printstring STRINGID_PKMNSNATCHEDMOVE
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_ATTACKSTRING_PRINTED | HITMARKER_NO_PPDEDUCT | HITMARKER_ALLOW_NO_PP
@@ -3706,7 +3706,7 @@ BattleScript_SAtkDown2End::
BattleScript_FocusPunchSetUp::
printstring STRINGID_EMPTYSTRING3
waitmessage 1
playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP, NULL
playanimation BS_ATTACKER, B_ANIM_FOCUS_PUNCH_SETUP
printstring STRINGID_PKMNTIGHTENINGFOCUS
waitmessage B_WAIT_TIME_LONG
end2
@@ -3739,7 +3739,7 @@ BattleScript_DoTurnDmg::
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
checkteamslost BattleScript_DoTurnDmgEnd
BattleScript_DoTurnDmgEnd::
end2
@@ -3808,7 +3808,7 @@ BattleScript_DoSelfConfusionDmg::
datahpupdate BS_ATTACKER
resultmessage
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
goto BattleScript_MoveEnd
BattleScript_MoveUsedIsConfusedRet::
return
@@ -3941,12 +3941,12 @@ BattleScript_DoRecoil::
datahpupdate BS_ATTACKER
printstring STRINGID_PKMNHITWITHRECOIL
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
BattleScript_RecoilEnd::
return
BattleScript_ItemSteal::
playanimation BS_TARGET, B_ANIM_ITEM_STEAL, NULL
playanimation BS_TARGET, B_ANIM_ITEM_STEAL
printstring STRINGID_PKMNSTOLEITEM
waitmessage B_WAIT_TIME_LONG
return
@@ -3955,7 +3955,7 @@ BattleScript_DrizzleActivates::
pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNMADEITRAIN
waitstate
playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES, NULL
playanimation BS_BATTLER_0, B_ANIM_RAIN_CONTINUES
call BattleScript_WeatherFormChanges
end3
@@ -3983,7 +3983,7 @@ BattleScript_SandstreamActivates::
pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNSXWHIPPEDUPSANDSTORM
waitstate
playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES, NULL
playanimation BS_BATTLER_0, B_ANIM_SANDSTORM_CONTINUES
call BattleScript_WeatherFormChanges
end3
@@ -4048,7 +4048,7 @@ BattleScript_DroughtActivates::
pause B_WAIT_TIME_SHORT
printstring STRINGID_PKMNSXINTENSIFIEDSUN
waitstate
playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES, NULL
playanimation BS_BATTLER_0, B_ANIM_SUN_CONTINUES
call BattleScript_WeatherFormChanges
end3
@@ -4184,7 +4184,7 @@ BattleScript_RoughSkinActivates::
datahpupdate BS_ATTACKER
printstring STRINGID_PKMNHURTSWITH
waitmessage B_WAIT_TIME_LONG
tryfaintmon BS_ATTACKER, FALSE, NULL
tryfaintmon BS_ATTACKER
return
BattleScript_CuteCharmActivates::
@@ -4252,7 +4252,7 @@ BattleScript_IgnoresAndHitsItself::
goto BattleScript_DoSelfConfusionDmg
BattleScript_SubstituteFade::
playanimation BS_TARGET, B_ANIM_SUBSTITUTE_FADE, NULL
playanimation BS_TARGET, B_ANIM_SUBSTITUTE_FADE
printstring STRINGID_PKMNSUBSTITUTEFADED
return
@@ -4261,7 +4261,7 @@ BattleScript_BerryCurePrlzEnd2::
end2
BattleScript_BerryCureParRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMCUREDPARALYSIS
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4273,7 +4273,7 @@ BattleScript_BerryCurePsnEnd2::
end2
BattleScript_BerryCurePsnRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMCUREDPOISON
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4285,7 +4285,7 @@ BattleScript_BerryCureBrnEnd2::
end2
BattleScript_BerryCureBrnRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMHEALEDBURN
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4297,7 +4297,7 @@ BattleScript_BerryCureFrzEnd2::
end2
BattleScript_BerryCureFrzRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMDEFROSTEDIT
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4309,7 +4309,7 @@ BattleScript_BerryCureSlpEnd2::
end2
BattleScript_BerryCureSlpRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMWOKEIT
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4321,7 +4321,7 @@ BattleScript_BerryCureConfusionEnd2::
end2
BattleScript_BerryCureConfusionRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMSNAPPEDOUT
waitmessage B_WAIT_TIME_LONG
removeitem BS_SCRIPTING
@@ -4332,7 +4332,7 @@ BattleScript_BerryCureChosenStatusEnd2::
end2
BattleScript_BerryCureChosenStatusRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printfromtable gBerryEffectStringIds
waitmessage B_WAIT_TIME_LONG
updatestatusicon BS_SCRIPTING
@@ -4344,14 +4344,14 @@ BattleScript_WhiteHerbEnd2::
end2
BattleScript_WhiteHerbRet::
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_SCRIPTING, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDSTATUS
waitmessage B_WAIT_TIME_LONG
removeitem BS_SCRIPTING
return
BattleScript_ItemHealHP_RemoveItem::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -4361,7 +4361,7 @@ BattleScript_ItemHealHP_RemoveItem::
end2
BattleScript_BerryPPHealEnd2::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDPP
waitmessage B_WAIT_TIME_LONG
removeitem BS_ATTACKER
@@ -4372,7 +4372,7 @@ BattleScript_ItemHealHP_End2::
end2
BattleScript_ItemHealHP_Ret::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDHPALITTLE
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -4385,13 +4385,13 @@ BattleScript_SelectingNotAllowedMoveChoiceItem::
endselectionscript
BattleScript_FocusBandActivates::
playanimation BS_TARGET, B_ANIM_FOCUS_BAND, NULL
playanimation BS_TARGET, B_ANIM_FOCUS_BAND
printstring STRINGID_PKMNHUNGONWITHX
waitmessage B_WAIT_TIME_LONG
return
BattleScript_BerryConfuseHealEnd2::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNSITEMRESTOREDHEALTH
waitmessage B_WAIT_TIME_LONG
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE
@@ -4405,7 +4405,7 @@ BattleScript_BerryConfuseHealEnd2::
end2
BattleScript_BerryStatRaiseEnd2::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
statbuffchange MOVE_EFFECT_AFFECTS_USER | STAT_BUFF_ALLOW_PTR, BattleScript_BerryStatRaiseDoStatUp
BattleScript_BerryStatRaiseDoStatUp::
setbyte cMULTISTRING_CHOOSER, B_MSG_STAT_ROSE_ITEM
@@ -4414,7 +4414,7 @@ BattleScript_BerryStatRaiseDoStatUp::
end2
BattleScript_BerryFocusEnergyEnd2::
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT, NULL
playanimation BS_ATTACKER, B_ANIM_HELD_ITEM_EFFECT
printstring STRINGID_PKMNUSEDXTOGETPUMPED
waitmessage B_WAIT_TIME_LONG
removeitem BS_ATTACKER

View File

@@ -41,19 +41,6 @@
#define B_ACTION_NOTHING_FAINTED 13 // when choosing an action
#define B_ACTION_NONE 0xFF
// array entries for battle communication
#define MULTIUSE_STATE 0
#define CURSOR_POSITION 1
#define TASK_ID 1 // task Id and cursor position share the same field
#define SPRITES_INIT_STATE1 1 // shares the Id as well
#define SPRITES_INIT_STATE2 2
#define MOVE_EFFECT_BYTE 3
#define ACTIONS_CONFIRMED_COUNT 4
#define MULTISTRING_CHOOSER 5
#define MISS_TYPE 6
#define MSG_DISPLAY 7
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 8
#define MOVE_TARGET_SELECTED 0
#define MOVE_TARGET_DEPENDS (1 << 0)
#define MOVE_TARGET_USER_OR_SELECTED (1 << 1)
@@ -487,6 +474,8 @@ struct BattleStruct
#define SET_STATCHANGER(statId, stage, goesDown)(gBattleScripting.statChanger = (statId) + (stage << 4) + (goesDown << 7))
// NOTE: The members of this struct have hard-coded offsets
// in include/constants/battle_script_commands.h
struct BattleScripting
{
s32 painSplitHp;
@@ -509,7 +498,7 @@ struct BattleScripting
u8 battleStyle;
u8 drawlvlupboxState;
u8 learnMoveState;
u8 field_20;
u8 pursuitDoublesAttacker;
u8 reshowMainState;
u8 reshowHelperState;
u8 levelUpHP;
@@ -518,9 +507,6 @@ struct BattleScripting
u8 specialTrainerBattleType;
};
// rom_80A5C6C
struct BattleSpriteInfo
{
u16 invisible:1; // 0x1

View File

@@ -2,6 +2,7 @@
#define GUARD_BATTLE_SCRIPT_COMMANDS_H
#include "constants/pokemon.h"
#include "constants/battle_script_commands.h"
// Arguments for 'flags' in HandleBattleWindow
#define WINDOW_CLEAR (1 << 0)

View File

@@ -1,38 +1,51 @@
#ifndef GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
#define GUARD_CONSTANTS_BATTLE_SCRIPT_COMMANDS_H
// Battle Scripting and BattleCommunication addresses
#define sPAINSPLIT_HP gBattleScripting
#define sBIDE_DMG gBattleScripting + 4
#define sMULTIHIT_STRING gBattleScripting + 8
#define sDMG_MULTIPLIER gBattleScripting + 0xE
#define sTWOTURN_STRINGID gBattleScripting + 0xF
#define sB_ANIM_ARG1 gBattleScripting + 0x10
#define sB_ANIM_ARG2 gBattleScripting + 0x11
#define sTRIPLE_KICK_POWER gBattleScripting + 0x12
#define sMOVEEND_STATE gBattleScripting + 0x14
#define sBATTLER_WITH_ABILITY gBattleScripting + 0x15
#define sMULTIHIT_EFFECT gBattleScripting + 0x16
#define sBATTLER gBattleScripting + 0x17
#define sB_ANIM_TURN gBattleScripting + 0x18
#define sB_ANIM_TARGETS_HIT gBattleScripting + 0x19
#define sSTATCHANGER gBattleScripting + 0x1A
#define sSTAT_ANIM_PLAYED gBattleScripting + 0x1B
#define sGIVEEXP_STATE gBattleScripting + 0x1C
#define sBATTLE_STYLE gBattleScripting + 0x1D
#define sLVLBOX_STATE gBattleScripting + 0x1E
#define sLEARNMOVE_STATE gBattleScripting + 0x1F
#define sFIELD_20 gBattleScripting + 0x20
#define sRESHOW_MAIN_STATE gBattleScripting + 0x21
#define sRESHOW_HELPER_STATE gBattleScripting + 0x22
#define sFIELD_23 gBattleScripting + 0x23
#define sWINDOWS_TYPE gBattleScripting + 0x24
#define sMULTIPLAYER_ID gBattleScripting + 0x25
#define sSPECIAL_TRAINER_BATTLE_TYPE gBattleScripting + 0x26
// The following correspond to the struct members of BattleScripting by adding their offset
#define sPAINSPLIT_HP (gBattleScripting + 0x00) // painSplitHp
#define sBIDE_DMG (gBattleScripting + 0x04) // bideDmg
#define sMULTIHIT_STRING (gBattleScripting + 0x08) // multihitString
#define sDMG_MULTIPLIER (gBattleScripting + 0x0E) // dmgMultiplier
#define sTWOTURN_STRINGID (gBattleScripting + 0x0F) // twoTurnsMoveStringId
#define sB_ANIM_ARG1 (gBattleScripting + 0x10) // animArg1
#define sB_ANIM_ARG2 (gBattleScripting + 0x11) // animArg2
#define sTRIPLE_KICK_POWER (gBattleScripting + 0x12) // tripleKickPower
#define sMOVEEND_STATE (gBattleScripting + 0x14) // moveendState
#define sBATTLER_WITH_ABILITY (gBattleScripting + 0x15) // battlerWithAbility
#define sMULTIHIT_EFFECT (gBattleScripting + 0x16) // multihitMoveEffect
#define sBATTLER (gBattleScripting + 0x17) // battler
#define sB_ANIM_TURN (gBattleScripting + 0x18) // animTurn
#define sB_ANIM_TARGETS_HIT (gBattleScripting + 0x19) // animTargetsHit
#define sSTATCHANGER (gBattleScripting + 0x1A) // statChanger
#define sSTAT_ANIM_PLAYED (gBattleScripting + 0x1B) // statAnimPlayed
#define sGIVEEXP_STATE (gBattleScripting + 0x1C) // getexpState
#define sBATTLE_STYLE (gBattleScripting + 0x1D) // battleStyle
#define sLVLBOX_STATE (gBattleScripting + 0x1E) // drawlvlupboxState
#define sLEARNMOVE_STATE (gBattleScripting + 0x1F) // learnMoveState
#define sPURSUIT_DOUBLES_ATTACKER (gBattleScripting + 0x20) // pursuitDoublesAttacker
#define sRESHOW_MAIN_STATE (gBattleScripting + 0x21) // reshowMainState
#define sRESHOW_HELPER_STATE (gBattleScripting + 0x22) // reshowHelperState
#define sLVLUP_HP (gBattleScripting + 0x23) // levelUpHP
#define sWINDOWS_TYPE (gBattleScripting + 0x24) // windowsType
#define sMULTIPLAYER_ID (gBattleScripting + 0x25) // multiplayerId
#define sSPECIAL_TRAINER_BATTLE_TYPE (gBattleScripting + 0x26) // specialTrainerBattleType
#define cEFFECT_CHOOSER gBattleCommunication + 3
#define cMULTISTRING_CHOOSER gBattleCommunication + 5
#define cMISS_TYPE gBattleCommunication + 6
// Array entries for battle communication
#define MULTIUSE_STATE 0
#define CURSOR_POSITION 1
#define TASK_ID 1 // task Id and cursor position share the same field
#define SPRITES_INIT_STATE1 1 // shares the Id as well
#define SPRITES_INIT_STATE2 2
#define MOVE_EFFECT_BYTE 3
#define ACTIONS_CONFIRMED_COUNT 4
#define MULTISTRING_CHOOSER 5
#define MISS_TYPE 6
#define MSG_DISPLAY 7
#define BATTLE_COMMUNICATION_ENTRIES_COUNT 8
#define cEFFECT_CHOOSER (gBattleCommunication + MOVE_EFFECT_BYTE)
#define cMULTISTRING_CHOOSER (gBattleCommunication + MULTISTRING_CHOOSER)
#define cMISS_TYPE (gBattleCommunication + MISS_TYPE)
// Battle Script defines for getting the wanted battler
#define BS_TARGET 0

View File

@@ -1,25 +1,15 @@
#include "global.h"
#include "battle.h"
#include "constants/battle_move_effects.h"
#include "constants/battle_script_commands.h"
#include "battle_message.h"
#include "battle_anim.h"
#include "battle_ai_script_commands.h"
#include "battle_scripts.h"
#include "constants/moves.h"
#include "constants/abilities.h"
#include "item.h"
#include "constants/items.h"
#include "constants/hold_effects.h"
#include "util.h"
#include "pokemon.h"
#include "random.h"
#include "battle_controllers.h"
#include "battle_interface.h"
#include "constants/songs.h"
#include "constants/trainers.h"
#include "constants/battle_anim.h"
#include "constants/map_types.h"
#include "text.h"
#include "sound.h"
#include "pokedex.h"
@@ -38,7 +28,6 @@
#include "pokemon_storage_system.h"
#include "task.h"
#include "naming_screen.h"
#include "constants/battle_string_ids.h"
#include "battle_setup.h"
#include "overworld.h"
#include "party_menu.h"
@@ -49,9 +38,19 @@
#include "pokemon_summary_screen.h"
#include "pokenav.h"
#include "menu_specialized.h"
#include "constants/rgb.h"
#include "data.h"
#include "constants/abilities.h"
#include "constants/battle_anim.h"
#include "constants/battle_move_effects.h"
#include "constants/battle_string_ids.h"
#include "constants/hold_effects.h"
#include "constants/items.h"
#include "constants/map_types.h"
#include "constants/moves.h"
#include "constants/party_menu.h"
#include "constants/rgb.h"
#include "constants/songs.h"
#include "constants/trainers.h"
extern const u8* const gBattleScriptsForMoveEffects[];
@@ -147,7 +146,7 @@ static void Cmd_jumpiftype2(void);
static void Cmd_jumpifabilitypresent(void);
static void Cmd_endselectionscript(void);
static void Cmd_playanimation(void);
static void Cmd_playanimation2(void);
static void Cmd_playanimation_var(void);
static void Cmd_setgraphicalstatchangevalues(void);
static void Cmd_playstatchangeanimation(void);
static void Cmd_moveend(void);
@@ -313,7 +312,7 @@ static void Cmd_settypebasedhalvers(void);
static void Cmd_setweatherballtype(void);
static void Cmd_tryrecycleitem(void);
static void Cmd_settypetoterrain(void);
static void Cmd_pursuitrelated(void);
static void Cmd_pursuitdoubles(void);
static void Cmd_snatchsetbattlers(void);
static void Cmd_removelightscreenreflect(void);
static void Cmd_handleballthrow(void);
@@ -399,7 +398,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_jumpifabilitypresent, //0x43
Cmd_endselectionscript, //0x44
Cmd_playanimation, //0x45
Cmd_playanimation2, //0x46
Cmd_playanimation_var, //0x46
Cmd_setgraphicalstatchangevalues, //0x47
Cmd_playstatchangeanimation, //0x48
Cmd_moveend, //0x49
@@ -565,7 +564,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_setweatherballtype, //0xE9
Cmd_tryrecycleitem, //0xEA
Cmd_settypetoterrain, //0xEB
Cmd_pursuitrelated, //0xEC
Cmd_pursuitdoubles, //0xEC
Cmd_snatchsetbattlers, //0xED
Cmd_removelightscreenreflect, //0xEE
Cmd_handleballthrow, //0xEF
@@ -1115,7 +1114,7 @@ static void Cmd_accuracycheck(void)
s8 buff;
u16 calc;
if (move == 0)
if (move == ACC_CURR_MOVE)
move = gCurrentMove;
GET_MOVE_TYPE(move, type);
@@ -3183,23 +3182,23 @@ static void Cmd_jumpifstat(void)
static void Cmd_jumpifstatus3condition(void)
{
u32 flags;
u32 status;
const u8 *jumpPtr;
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
flags = T2_READ_32(gBattlescriptCurrInstr + 2);
status = T2_READ_32(gBattlescriptCurrInstr + 2);
jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 7);
if (gBattlescriptCurrInstr[6])
{
if ((gStatuses3[gActiveBattler] & flags) != 0)
if ((gStatuses3[gActiveBattler] & status) != 0)
gBattlescriptCurrInstr += 11;
else
gBattlescriptCurrInstr = jumpPtr;
}
else
{
if ((gStatuses3[gActiveBattler] & flags) != 0)
if ((gStatuses3[gActiveBattler] & status) != 0)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 11;
@@ -3514,8 +3513,7 @@ static void Cmd_checkteamslost(void)
// In multi battle with Steven, skip his Pokémon
for (i = 0; i < MULTI_PARTY_SIZE; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)
&& !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP);
}
}
@@ -3523,10 +3521,8 @@ static void Cmd_checkteamslost(void)
{
for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES)
&& !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)
&& (!(gBattleTypeFlags & BATTLE_TYPE_ARENA)
|| !(gBattleStruct->arenaLostPlayerMons & gBitTable[i])))
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)
&& (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->arenaLostPlayerMons & gBitTable[i])))
{
HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP);
}
@@ -3539,10 +3535,8 @@ static void Cmd_checkteamslost(void)
// Get total HP for the enemy's party to determine if the player has won
for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES)
&& !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG)
&& (!(gBattleTypeFlags & BATTLE_TYPE_ARENA)
|| !(gBattleStruct->arenaLostOpponentMons & gBitTable[i])))
if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG)
&& (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->arenaLostOpponentMons & gBitTable[i])))
{
HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP);
}
@@ -3982,8 +3976,8 @@ static void Cmd_playanimation(void)
argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3);
if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE
|| gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE
|| gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE)
|| gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE
|| gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE)
{
BtlController_EmitBattleAnimation(BUFFER_A, gBattlescriptCurrInstr[2], *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
@@ -3995,9 +3989,9 @@ static void Cmd_playanimation(void)
gBattlescriptCurrInstr = BattleScript_Pausex20;
}
else if (gBattlescriptCurrInstr[2] == B_ANIM_RAIN_CONTINUES
|| gBattlescriptCurrInstr[2] == B_ANIM_SUN_CONTINUES
|| gBattlescriptCurrInstr[2] == B_ANIM_SANDSTORM_CONTINUES
|| gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES)
|| gBattlescriptCurrInstr[2] == B_ANIM_SUN_CONTINUES
|| gBattlescriptCurrInstr[2] == B_ANIM_SANDSTORM_CONTINUES
|| gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES)
{
BtlController_EmitBattleAnimation(BUFFER_A, gBattlescriptCurrInstr[2], *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
@@ -4015,7 +4009,8 @@ static void Cmd_playanimation(void)
}
}
static void Cmd_playanimation2(void) // animation Id is stored in the first pointer
// Same as playanimation, expect it takes a pointer to some animation id, instead of taking the value directly
static void Cmd_playanimation_var(void)
{
const u16* argumentPtr;
const u8* animationIdPtr;
@@ -4025,8 +4020,8 @@ static void Cmd_playanimation2(void) // animation Id is stored in the first poin
argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 6);
if (*animationIdPtr == B_ANIM_STATS_CHANGE
|| *animationIdPtr == B_ANIM_SNATCH_MOVE
|| *animationIdPtr == B_ANIM_SUBSTITUTE_FADE)
|| *animationIdPtr == B_ANIM_SNATCH_MOVE
|| *animationIdPtr == B_ANIM_SUBSTITUTE_FADE)
{
BtlController_EmitBattleAnimation(BUFFER_A, *animationIdPtr, *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
@@ -4037,9 +4032,9 @@ static void Cmd_playanimation2(void) // animation Id is stored in the first poin
gBattlescriptCurrInstr += 10;
}
else if (*animationIdPtr == B_ANIM_RAIN_CONTINUES
|| *animationIdPtr == B_ANIM_SUN_CONTINUES
|| *animationIdPtr == B_ANIM_SANDSTORM_CONTINUES
|| *animationIdPtr == B_ANIM_HAIL_CONTINUES)
|| *animationIdPtr == B_ANIM_SUN_CONTINUES
|| *animationIdPtr == B_ANIM_SANDSTORM_CONTINUES
|| *animationIdPtr == B_ANIM_HAIL_CONTINUES)
{
BtlController_EmitBattleAnimation(BUFFER_A, *animationIdPtr, *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
@@ -4186,7 +4181,7 @@ static void Cmd_moveend(void)
u8 moveType = 0;
u8 holdEffectAtk = 0;
u16 *choicedMoveAtk = NULL;
u8 arg1, arg2;
u8 endMode, endState;
u16 originallyUsedMove;
if (gChosenMove == 0xFFFF)
@@ -4194,8 +4189,8 @@ static void Cmd_moveend(void)
else
originallyUsedMove = gChosenMove;
arg1 = gBattlescriptCurrInstr[1];
arg2 = gBattlescriptCurrInstr[2];
endMode = gBattlescriptCurrInstr[1];
endState = gBattlescriptCurrInstr[2];
if (gBattleMons[gBattlerAttacker].item == ITEM_ENIGMA_BERRY)
holdEffectAtk = gEnigmaBerries[gBattlerAttacker].holdEffect;
@@ -4450,9 +4445,9 @@ static void Cmd_moveend(void)
break;
}
if (arg1 == 1 && effect == FALSE)
if (endMode == 1 && effect == FALSE)
gBattleScripting.moveendState = MOVEEND_COUNT;
if (arg1 == 2 && arg2 == gBattleScripting.moveendState)
if (endMode == 2 && endState == gBattleScripting.moveendState)
gBattleScripting.moveendState = MOVEEND_COUNT;
} while (gBattleScripting.moveendState != MOVEEND_COUNT && effect == FALSE);
@@ -5318,16 +5313,16 @@ static void Cmd_returntoball(void)
static void Cmd_handlelearnnewmove(void)
{
const u8 *jumpPtr1 = T1_READ_PTR(gBattlescriptCurrInstr + 1);
const u8 *jumpPtr2 = T1_READ_PTR(gBattlescriptCurrInstr + 5);
const u8 *learnedMovePtr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
const u8 *nothingToLearnPtr = T1_READ_PTR(gBattlescriptCurrInstr + 5);
u16 learnMove = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]);
while (learnMove == MON_ALREADY_KNOWS_MOVE)
learnMove = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], FALSE);
if (learnMove == 0)
if (learnMove == MOVE_NONE)
{
gBattlescriptCurrInstr = jumpPtr2;
gBattlescriptCurrInstr = nothingToLearnPtr;
}
else if (learnMove == MON_HAS_MAX_MOVES)
{
@@ -5352,7 +5347,7 @@ static void Cmd_handlelearnnewmove(void)
}
}
gBattlescriptCurrInstr = jumpPtr1;
gBattlescriptCurrInstr = learnedMovePtr;
}
}
@@ -9718,7 +9713,8 @@ static void Cmd_settypetoterrain(void)
}
}
static void Cmd_pursuitrelated(void)
// Unused
static void Cmd_pursuitdoubles(void)
{
gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
@@ -9731,7 +9727,7 @@ static void Cmd_pursuitrelated(void)
gCurrentMove = MOVE_PURSUIT;
gBattlescriptCurrInstr += 5;
gBattleScripting.animTurn = 1;
gBattleScripting.field_20 = gBattlerAttacker;
gBattleScripting.pursuitDoublesAttacker = gBattlerAttacker;
gBattlerAttacker = gActiveBattler;
}
else