Merge pull request #1516 from GriffinRichards/doc-miscbattle
Miscellaneous battle documentation
This commit is contained in:
@@ -34,3 +34,4 @@ porymap.project.cfg
|
||||
*.a
|
||||
.fuse_hidden*
|
||||
*.sna
|
||||
*.diff
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
.byte 0x02
|
||||
.4byte \template
|
||||
.if \anim_battler == ANIM_TARGET
|
||||
.byte 0x80 | (\subpriority_offset & 0x7F)
|
||||
.byte ANIMSPRITE_IS_TARGET | (\subpriority_offset & 0x7F)
|
||||
.else
|
||||
.byte (\subpriority_offset & 0x7F)
|
||||
.endif
|
||||
@@ -34,20 +34,20 @@
|
||||
.Lcreatetask_\@_2:
|
||||
.endm
|
||||
|
||||
.macro delay param0:req
|
||||
.macro delay frames:req
|
||||
.byte 0x4
|
||||
.byte \param0
|
||||
.byte \frames
|
||||
.endm
|
||||
|
||||
.macro waitforvisualfinish
|
||||
.byte 0x5
|
||||
.endm
|
||||
|
||||
.macro hang1
|
||||
.macro nop
|
||||
.byte 0x6
|
||||
.endm
|
||||
|
||||
.macro hang2
|
||||
.macro nop2
|
||||
.byte 0x7
|
||||
.endm
|
||||
|
||||
@@ -79,30 +79,30 @@
|
||||
.byte 0xd
|
||||
.endm
|
||||
|
||||
.macro call param0:req
|
||||
.macro call ptr:req
|
||||
.byte 0xe
|
||||
.4byte \param0
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro return
|
||||
.byte 0xf
|
||||
.endm
|
||||
|
||||
.macro setarg param0:req, param1:req
|
||||
.macro setarg argId:req, value:req
|
||||
.byte 0x10
|
||||
.byte \param0
|
||||
.2byte \param1
|
||||
.byte \argId
|
||||
.2byte \value
|
||||
.endm
|
||||
|
||||
.macro choosetwoturnanim param0:req, param1:req
|
||||
.macro choosetwoturnanim ptr1:req, ptr2:req
|
||||
.byte 0x11
|
||||
.4byte \param0
|
||||
.4byte \param1
|
||||
.4byte \ptr1
|
||||
.4byte \ptr2
|
||||
.endm
|
||||
|
||||
.macro jumpifmoveturn param0:req, ptr:req
|
||||
.macro jumpifmoveturn value:req, ptr:req
|
||||
.byte 0x12
|
||||
.byte \param0
|
||||
.byte \value
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
@@ -144,13 +144,13 @@
|
||||
.byte \pan
|
||||
.endm
|
||||
|
||||
.macro panse_1B se:req, param1:req, param2:req, param3:req, param4:req
|
||||
.macro panse se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req
|
||||
.byte 0x1b
|
||||
.2byte \se
|
||||
.byte \param1
|
||||
.byte \param2
|
||||
.byte \param3
|
||||
.byte \param4
|
||||
.byte \currentPan
|
||||
.byte \targetPan
|
||||
.byte \incrementPan
|
||||
.byte \delay
|
||||
.endm
|
||||
|
||||
.macro loopsewithpan se:req, pan:req, wait:req, times:req
|
||||
@@ -168,9 +168,9 @@
|
||||
.byte \wait
|
||||
.endm
|
||||
|
||||
.macro setbldcnt param0:req
|
||||
.macro setbldcnt bldcnt:req
|
||||
.byte 0x1e
|
||||
.2byte \param0
|
||||
.2byte \bldcnt
|
||||
.endm
|
||||
|
||||
.macro createsoundtask addr:req, argv:vararg
|
||||
@@ -186,19 +186,19 @@
|
||||
.byte 0x20
|
||||
.endm
|
||||
|
||||
.macro jumpargeq param0:req, param1:req, ptr:req
|
||||
.macro jumpargeq argId:req, value:req, ptr:req
|
||||
.byte 0x21
|
||||
.byte \param0
|
||||
.2byte \param1
|
||||
.byte \argId
|
||||
.2byte \value
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro monbg_22 battler:req
|
||||
.macro monbg_static battler:req
|
||||
.byte 0x22
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro clearmonbg_23 battler:req
|
||||
.macro clearmonbg_static battler:req
|
||||
.byte 0x23
|
||||
.byte \battler
|
||||
.endm
|
||||
@@ -208,41 +208,41 @@
|
||||
.4byte \ptr
|
||||
.endm
|
||||
|
||||
.macro fadetobgfromset param0:req, param1:req, param2:req
|
||||
.macro fadetobgfromset bgOpponent:req, bgPlayer:req, bgContest:req
|
||||
.byte 0x25
|
||||
.byte \param0
|
||||
.byte \param1
|
||||
.byte \param2
|
||||
.byte \bgOpponent
|
||||
.byte \bgPlayer
|
||||
.byte \bgContest
|
||||
.endm
|
||||
|
||||
.macro panse_26 se:req, param1:req, param2:req, param3:req, param4:req
|
||||
.macro panse_adjustnone se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req
|
||||
.byte 0x26
|
||||
.2byte \se
|
||||
.byte \param1
|
||||
.byte \param2
|
||||
.byte \param3
|
||||
.byte \param4
|
||||
.byte \currentPan
|
||||
.byte \targetPan
|
||||
.byte \incrementPan
|
||||
.byte \delay
|
||||
.endm
|
||||
|
||||
.macro panse_27 se:req, param1:req, param2:req, param3:req, param4:req
|
||||
.macro panse_adjustall se:req, currentPan:req, targetPan:req, incrementPan:req, delay:req
|
||||
.byte 0x27
|
||||
.2byte \se
|
||||
.byte \param1
|
||||
.byte \param2
|
||||
.byte \param3
|
||||
.byte \param4
|
||||
.byte \currentPan
|
||||
.byte \targetPan
|
||||
.byte \incrementPan
|
||||
.byte \delay
|
||||
.endm
|
||||
|
||||
.macro monbgprio_28 battler:req
|
||||
.macro splitbgprio battler:req
|
||||
.byte 0x28
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro monbgprio_29
|
||||
.macro splitbgprio_all
|
||||
.byte 0x29
|
||||
.endm
|
||||
|
||||
.macro monbgprio_2A battler:req
|
||||
.macro splitbgprio_foes battler:req
|
||||
.byte 0x2a
|
||||
.byte \battler
|
||||
.endm
|
||||
@@ -257,12 +257,12 @@
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro doublebattle_2D battler:req
|
||||
.macro teamattack_moveback battler:req
|
||||
.byte 0x2d
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro doublebattle_2E battler:req
|
||||
.macro teamattack_movefwd battler:req
|
||||
.byte 0x2e
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
+224
-217
@@ -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
|
||||
|
||||
@@ -183,7 +190,7 @@
|
||||
.byte \battler
|
||||
.endm
|
||||
|
||||
.macro atk24 ptr:req
|
||||
.macro checkteamslost ptr:req
|
||||
.byte 0x24
|
||||
.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
|
||||
@@ -538,7 +545,7 @@
|
||||
.byte 0x5d
|
||||
.endm
|
||||
|
||||
.macro atk5E battler:req
|
||||
.macro updatebattlermoves battler:req
|
||||
.byte 0x5e
|
||||
.byte \battler
|
||||
.endm
|
||||
@@ -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
|
||||
|
||||
+91
-91
@@ -622,7 +622,7 @@ Move_BODY_SLAM:
|
||||
Move_SUPERSONIC:
|
||||
loadspritegfx ANIM_TAG_GOLD_RING
|
||||
monbg ANIM_ATK_PARTNER
|
||||
monbgprio_2A ANIM_ATTACKER
|
||||
splitbgprio_foes ANIM_ATTACKER
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1
|
||||
call SupersonicRing
|
||||
@@ -659,7 +659,7 @@ ScreechRing:
|
||||
Move_FLAME_WHEEL:
|
||||
loadspritegfx ANIM_TAG_SMALL_EMBER
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_2A ANIM_TARGET
|
||||
splitbgprio_foes ANIM_TARGET
|
||||
createsprite gFireSpiralOutwardSpriteTemplate, ANIM_ATTACKER, 3, 0, 0, 56, 0
|
||||
playsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER
|
||||
delay 2
|
||||
@@ -702,7 +702,7 @@ Move_PIN_MISSILE:
|
||||
loadspritegfx ANIM_TAG_NEEDLE
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_JUMP_KICK, SOUND_PAN_ATTACKER
|
||||
createsprite gPinMissileSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32
|
||||
@@ -731,7 +731,7 @@ Move_ICICLE_SPEAR:
|
||||
loadspritegfx ANIM_TAG_ICICLE_SPEAR
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_ICY_WIND, SOUND_PAN_ATTACKER
|
||||
createsprite gIcicleSpearSpriteTemplate, ANIM_ATTACKER, 2, 20, -8, -8, -8, 20, -32
|
||||
@@ -817,7 +817,7 @@ Move_POISON_STING:
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
loadspritegfx ANIM_TAG_POISON_BUBBLE
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER
|
||||
createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 20, 0, -8, 0, 20
|
||||
@@ -836,7 +836,7 @@ Move_TWINEEDLE:
|
||||
loadspritegfx ANIM_TAG_NEEDLE
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
loopsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER, 6, 2
|
||||
createsprite gLinearStingerSpriteTemplate, ANIM_TARGET, 2, 10, -4, 0, -4, 20
|
||||
@@ -1029,7 +1029,7 @@ Move_SONIC_BOOM:
|
||||
loadspritegfx ANIM_TAG_AIR_WAVE
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
call SonicBoomProjectile
|
||||
call SonicBoomProjectile
|
||||
@@ -1300,7 +1300,7 @@ Move_SPIKE_CANNON:
|
||||
loadspritegfx ANIM_TAG_NEEDLE
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_WindUpLunge, 5, ANIM_ATTACKER, -4, 0, 4, 6, 8, 4
|
||||
waitforvisualfinish
|
||||
@@ -1668,7 +1668,7 @@ Move_DEFENSE_CURL:
|
||||
Move_PROTECT:
|
||||
loadspritegfx ANIM_TAG_PROTECT
|
||||
monbg ANIM_ATK_PARTNER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
waitplaysewithpan SE_M_REFLECT, SOUND_PAN_ATTACKER, 16
|
||||
createsprite gProtectSpriteTemplate, ANIM_ATTACKER, 2, 24, 0, 90
|
||||
waitforvisualfinish
|
||||
@@ -1882,7 +1882,7 @@ Move_PAY_DAY:
|
||||
loadspritegfx ANIM_TAG_COIN
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_RAZOR_WIND2, SOUND_PAN_ATTACKER
|
||||
createsprite gCoinThrowSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 1152
|
||||
@@ -2190,7 +2190,7 @@ Move_BUBBLE_BEAM:
|
||||
loadspritegfx ANIM_TAG_BUBBLE
|
||||
loadspritegfx ANIM_TAG_SMALL_BUBBLES
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
delay 1
|
||||
call BulbblebeamCreateBubbles
|
||||
@@ -2234,7 +2234,7 @@ Move_ICY_WIND:
|
||||
playsewithpan SE_M_ICY_WIND, 0
|
||||
waitbgfadein
|
||||
waitforvisualfinish
|
||||
panse_1B SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
call IcyWindSwirlingSnowballs
|
||||
delay 5
|
||||
call IcyWindSwirlingSnowballs
|
||||
@@ -2287,7 +2287,7 @@ Move_SMOKESCREEN:
|
||||
Move_CONVERSION:
|
||||
loadspritegfx ANIM_TAG_CONVERSION
|
||||
monbg ANIM_ATK_PARTNER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
setalpha 16, 0
|
||||
delay 0
|
||||
playsewithpan SE_M_SWIFT, SOUND_PAN_ATTACKER
|
||||
@@ -2339,7 +2339,7 @@ Move_CONVERSION:
|
||||
Move_CONVERSION_2:
|
||||
loadspritegfx ANIM_TAG_CONVERSION
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_2A ANIM_TARGET
|
||||
splitbgprio_foes ANIM_TARGET
|
||||
setalpha 0, 16
|
||||
delay 0
|
||||
playsewithpan SE_M_BARRIER, SOUND_PAN_TARGET
|
||||
@@ -2551,7 +2551,7 @@ Move_SING:
|
||||
monbg ANIM_DEF_PARTNER
|
||||
createvisualtask AnimTask_MusicNotesRainbowBlend, 2
|
||||
waitforvisualfinish
|
||||
panse_1B SE_M_SING, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_SING, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 0, 12
|
||||
delay 5
|
||||
createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 12
|
||||
@@ -2657,7 +2657,7 @@ DigSetUp:
|
||||
loadspritegfx ANIM_TAG_DIRT_MOUND
|
||||
createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 0, 180
|
||||
createsprite gDirtMoundSpriteTemplate, ANIM_ATTACKER, 1, 0, 1, 180
|
||||
monbg_22 ANIM_ATTACKER
|
||||
monbg_static ANIM_ATTACKER
|
||||
delay 1
|
||||
createvisualtask AnimTask_DigDownMovement, 2, FALSE
|
||||
delay 6
|
||||
@@ -2667,7 +2667,7 @@ DigSetUp:
|
||||
call DigThrowDirt
|
||||
call DigThrowDirt
|
||||
waitforvisualfinish
|
||||
clearmonbg_23 ANIM_ATTACKER
|
||||
clearmonbg_static ANIM_ATTACKER
|
||||
delay 1
|
||||
createvisualtask AnimTask_DigDownMovement, 2, TRUE
|
||||
goto DigEnd
|
||||
@@ -3156,7 +3156,7 @@ MachPunchAgainstPlayer:
|
||||
Move_FORESIGHT:
|
||||
loadspritegfx ANIM_TAG_MAGNIFYING_GLASS
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 16, 0
|
||||
createsprite gForesightMagnifyingGlassSpriteTemplate, ANIM_TARGET, 2, ANIM_TARGET
|
||||
delay 17
|
||||
@@ -3236,7 +3236,7 @@ Move_ROLLOUT:
|
||||
loadspritegfx ANIM_TAG_MUD_SAND
|
||||
loadspritegfx ANIM_TAG_ROCKS
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_Rollout, 2
|
||||
waitforvisualfinish
|
||||
@@ -3460,7 +3460,7 @@ Move_HEAT_WAVE:
|
||||
createvisualtask AnimTask_BlendParticle, 5, ANIM_TAG_FLYING_DIRT, 0, 6, 6, RGB_RED
|
||||
createvisualtask AnimTask_LoadSandstormBackground, 5, TRUE
|
||||
createvisualtask AnimTask_BlendBackground, 6, 6, RGB_RED
|
||||
panse_1B SE_M_HEAT_WAVE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_HEAT_WAVE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
delay 4
|
||||
createvisualtask AnimTask_MoveHeatWaveTargets, 5
|
||||
delay 12
|
||||
@@ -3518,11 +3518,11 @@ Move_MEMENTO:
|
||||
delay 12
|
||||
setalpha 0, 16
|
||||
delay 1
|
||||
monbg_22 ANIM_TARGET
|
||||
monbg_static ANIM_TARGET
|
||||
createvisualtask AnimTask_MoveTargetMementoShadow, 5
|
||||
playsewithpan SE_M_PSYBEAM, SOUND_PAN_TARGET
|
||||
waitforvisualfinish
|
||||
clearmonbg_23 ANIM_TARGET
|
||||
clearmonbg_static ANIM_TARGET
|
||||
delay 1
|
||||
blendoff
|
||||
delay 1
|
||||
@@ -3654,7 +3654,7 @@ Move_SUPERPOWER:
|
||||
loadspritegfx ANIM_TAG_METEOR
|
||||
loadspritegfx ANIM_TAG_FLAT_ROCK
|
||||
monbg ANIM_ATK_PARTNER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
setalpha 12, 8
|
||||
createsprite gSuperpowerOrbSpriteTemplate, ANIM_TARGET, 2, ANIM_ATTACKER
|
||||
playsewithpan SE_M_MEGA_KICK, SOUND_PAN_ATTACKER
|
||||
@@ -3853,7 +3853,7 @@ Move_IMPRISON:
|
||||
Move_GRUDGE:
|
||||
loadspritegfx ANIM_TAG_PURPLE_FLAME
|
||||
monbg ANIM_ATTACKER
|
||||
monbgprio_29
|
||||
splitbgprio_all
|
||||
fadetobg BG_GHOST
|
||||
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
|
||||
waitbgfadein
|
||||
@@ -3870,7 +3870,7 @@ Move_GRUDGE:
|
||||
|
||||
Move_CAMOUFLAGE:
|
||||
monbg ANIM_ATK_PARTNER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
setalpha 16, 0
|
||||
createvisualtask AnimTask_SetCamouflageBlend, 5, 2, 3, 0, 14
|
||||
delay 16
|
||||
@@ -3968,7 +3968,7 @@ Move_MIST_BALL:
|
||||
Move_FEATHER_DANCE:
|
||||
loadspritegfx ANIM_TAG_WHITE_FEATHER
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_29
|
||||
splitbgprio_all
|
||||
playsewithpan SE_M_PETAL_DANCE, SOUND_PAN_TARGET
|
||||
delay 0
|
||||
createsprite gFallingFeatherSpriteTemplate, ANIM_TARGET, 0, 0, -16, 64, 2, 104, 11304, 32, 1
|
||||
@@ -4232,7 +4232,7 @@ Move_GRASS_WHISTLE:
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_MusicNotesRainbowBlend, 2
|
||||
waitforvisualfinish
|
||||
panse_1B SE_M_GRASSWHISTLE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_GRASSWHISTLE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 7, 1, 0
|
||||
delay 5
|
||||
createsprite gWavyMusicNotesSpriteTemplate, ANIM_TARGET, 2, 6, 1, 0
|
||||
@@ -4464,7 +4464,7 @@ Move_WATER_SPORT:
|
||||
delay 44
|
||||
playsewithpan SE_M_SURF, SOUND_PAN_ATTACKER
|
||||
delay 44
|
||||
panse_1B SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
end
|
||||
|
||||
Move_CALM_MIND:
|
||||
@@ -4518,7 +4518,7 @@ Move_LEAF_BLADE:
|
||||
Move_DRAGON_DANCE:
|
||||
loadspritegfx ANIM_TAG_HOLLOW_ORB
|
||||
monbg ANIM_ATTACKER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
delay 1
|
||||
createvisualtask AnimTask_DragonDanceWaver, 5
|
||||
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
|
||||
@@ -4924,7 +4924,7 @@ Move_SCRATCH:
|
||||
Move_DRAGON_BREATH:
|
||||
loadspritegfx ANIM_TAG_SMALL_EMBER
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
loopsewithpan SE_M_FLAME_WHEEL, SOUND_PAN_ATTACKER, 7, 7
|
||||
createsprite gDragonBreathFireSpriteTemplate, ANIM_TARGET, 2, 0, 0, 0, 0, 20
|
||||
delay 2
|
||||
@@ -4958,7 +4958,7 @@ Move_DRAGON_BREATH:
|
||||
Move_ROAR:
|
||||
loadspritegfx ANIM_TAG_NOISE_LINE
|
||||
monbg ANIM_ATTACKER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
setalpha 8, 8
|
||||
createvisualtask SoundTask_PlayDoubleCry, 2, ANIM_ATTACKER, 2
|
||||
createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_ATTACKER, 1
|
||||
@@ -5122,7 +5122,7 @@ Move_BUBBLE:
|
||||
Move_SMOG:
|
||||
loadspritegfx ANIM_TAG_PURPLE_GAS_CLOUD
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_29
|
||||
splitbgprio_all
|
||||
setalpha 12, 8
|
||||
loopsewithpan SE_M_MIST, SOUND_PAN_TARGET, 17, 10
|
||||
call SmogCloud
|
||||
@@ -5185,7 +5185,7 @@ Move_FAINT_ATTACK:
|
||||
Move_SAND_ATTACK:
|
||||
loadspritegfx ANIM_TAG_MUD_SAND
|
||||
monbg ANIM_ATK_PARTNER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_SAND_ATTACK, SOUND_PAN_ATTACKER
|
||||
createsprite gSlideMonToOffsetSpriteTemplate, ANIM_ATTACKER, 2, 0, -10, 0, 0, 3
|
||||
@@ -5343,7 +5343,7 @@ Move_CLAMP:
|
||||
|
||||
Move_ICE_BEAM:
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
loadspritegfx ANIM_TAG_ICE_CRYSTALS
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 7, RGB_BLACK
|
||||
@@ -5475,7 +5475,7 @@ SolarBeamAbsorbEffect:
|
||||
return
|
||||
SolarBeamUnleash:
|
||||
call SetSolarbeamBg
|
||||
panse_1B SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
createvisualtask AnimTask_CreateSmallSolarbeamOrbs, 5
|
||||
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
|
||||
delay 4
|
||||
@@ -5527,7 +5527,7 @@ BlizzardContinue:
|
||||
createvisualtask AnimTask_StartSlidingBg, 5, -2304, 0, 1, -1
|
||||
waitbgfadein
|
||||
waitforvisualfinish
|
||||
panse_1B SE_M_BLIZZARD, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_BLIZZARD, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
call BlizzardIceCrystals
|
||||
call BlizzardIceCrystals
|
||||
playsewithpan SE_M_BLIZZARD2, SOUND_PAN_TARGET
|
||||
@@ -5573,7 +5573,7 @@ Move_POWDER_SNOW:
|
||||
monbg ANIM_DEF_PARTNER
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 31, 1, 0, 3, RGB_BLACK
|
||||
waitforvisualfinish
|
||||
panse_1B SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
call PowderSnowSnowballs
|
||||
call PowderSnowSnowballs
|
||||
playsewithpan SE_M_GUST2, SOUND_PAN_TARGET
|
||||
@@ -5606,11 +5606,11 @@ Move_HYDRO_PUMP:
|
||||
loadspritegfx ANIM_TAG_WATER_ORB
|
||||
loadspritegfx ANIM_TAG_WATER_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 40, 1
|
||||
delay 6
|
||||
panse_1B SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
createvisualtask AnimTask_StartSinAnimTimer, 5, 100
|
||||
call HydroPumpBeams
|
||||
call HydroPumpBeams
|
||||
@@ -5655,7 +5655,7 @@ Move_SIGNAL_BEAM:
|
||||
loadspritegfx ANIM_TAG_DUCK
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 25, 1
|
||||
delay 6
|
||||
panse_1B SE_M_BUBBLE_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
|
||||
panse SE_M_BUBBLE_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
|
||||
createvisualtask AnimTask_StartSinAnimTimer, 5, 100
|
||||
call SignalBeamOrbs
|
||||
call SignalBeamOrbs
|
||||
@@ -5695,7 +5695,7 @@ Move_ABSORB:
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_2A ANIM_TARGET
|
||||
splitbgprio_foes ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 4, RGB(13, 31, 12)
|
||||
waitforvisualfinish
|
||||
@@ -5748,7 +5748,7 @@ Move_MEGA_DRAIN:
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_2A ANIM_TARGET
|
||||
splitbgprio_foes ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 8, RGB(13, 31, 12)
|
||||
waitforvisualfinish
|
||||
@@ -5809,7 +5809,7 @@ Move_GIGA_DRAIN:
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_2A ANIM_TARGET
|
||||
splitbgprio_foes ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 1, 0, 12, RGB(13, 31, 12)
|
||||
waitforvisualfinish
|
||||
@@ -5880,7 +5880,7 @@ Move_LEECH_LIFE:
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_2A ANIM_TARGET
|
||||
splitbgprio_foes ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
delay 1
|
||||
createsprite gLeechLifeNeedleSpriteTemplate, ANIM_ATTACKER, 2, -20, 15, 12
|
||||
@@ -6032,7 +6032,7 @@ Move_BONEMERANG:
|
||||
loadspritegfx ANIM_TAG_BONE
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_BONEMERANG, SOUND_PAN_ATTACKER
|
||||
createsprite gBonemerangSpriteTemplate, ANIM_ATTACKER, 2
|
||||
@@ -6052,7 +6052,7 @@ Move_BONE_CLUB:
|
||||
loadspritegfx ANIM_TAG_BONE
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_BONEMERANG, SOUND_PAN_TARGET
|
||||
createsprite gSpinningBoneSpriteTemplate, ANIM_ATTACKER, 2, -42, -25, 0, 0, 15
|
||||
@@ -6146,7 +6146,7 @@ Move_GUST:
|
||||
loadspritegfx ANIM_TAG_GUST
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_GUST, SOUND_PAN_TARGET
|
||||
createsprite gEllipticalGustSpriteTemplate, ANIM_ATTACKER, 2, 0, -16
|
||||
@@ -6164,7 +6164,7 @@ Move_WING_ATTACK:
|
||||
loadspritegfx ANIM_TAG_GUST
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2
|
||||
createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4
|
||||
@@ -6197,7 +6197,7 @@ Move_AEROBLAST:
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
call SetSkyBg
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
call AeroblastBeam
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 5, 0, 50, 1
|
||||
@@ -6237,7 +6237,7 @@ Move_WATER_GUN:
|
||||
loadspritegfx ANIM_TAG_SMALL_BUBBLES
|
||||
loadspritegfx ANIM_TAG_WATER_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createsprite gWaterGunProjectileSpriteTemplate, ANIM_ATTACKER, 2, 20, 0, 0, 0, 40, -25
|
||||
playsewithpan SE_M_BUBBLE, SOUND_PAN_ATTACKER
|
||||
@@ -6297,19 +6297,19 @@ Move_CRABHAMMER:
|
||||
Move_SURF:
|
||||
createvisualtask AnimTask_CreateSurfWave, 2, FALSE
|
||||
delay 24
|
||||
panse_1B SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_SURF, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
waitforvisualfinish
|
||||
end
|
||||
|
||||
Move_FLAMETHROWER:
|
||||
loadspritegfx ANIM_TAG_SMALL_EMBER
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1
|
||||
delay 6
|
||||
createvisualtask AnimTask_StartSinAnimTimer, 5, 100
|
||||
panse_1B SE_M_FLAMETHROWER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_FLAMETHROWER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
call FlamethrowerCreateFlames
|
||||
call FlamethrowerCreateFlames
|
||||
call FlamethrowerCreateFlames
|
||||
@@ -6358,7 +6358,7 @@ Move_SANDSTORM:
|
||||
Move_WHIRLPOOL:
|
||||
loadspritegfx ANIM_TAG_WATER_ORB
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
delay 0
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23)
|
||||
@@ -6445,7 +6445,7 @@ Move_KARATE_CHOP:
|
||||
loadspritegfx ANIM_TAG_HANDS_AND_FEET
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
playsewithpan SE_M_DOUBLE_TEAM, SOUND_PAN_TARGET
|
||||
createsprite gKarateChopSpriteTemplate, ANIM_ATTACKER, 2, -16, 0, 0, 0, 10, 1, 3, 0
|
||||
@@ -6722,7 +6722,7 @@ Move_SUNNY_DAY:
|
||||
setalpha 13, 3
|
||||
createvisualtask AnimTask_BlendBattleAnimPal, 10, 0x781, 1, 0, 6, RGB_WHITE
|
||||
waitforvisualfinish
|
||||
panse_26 SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
|
||||
panse_adjustnone SE_M_PETAL_DANCE, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
|
||||
call SunnyDayLightRay
|
||||
call SunnyDayLightRay
|
||||
call SunnyDayLightRay
|
||||
@@ -6742,7 +6742,7 @@ SunnyDayLightRay:
|
||||
Move_COTTON_SPORE:
|
||||
loadspritegfx ANIM_TAG_SPORE
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
loopsewithpan SE_M_POISON_POWDER, SOUND_PAN_TARGET, 18, 10
|
||||
call CreateCottonSpores
|
||||
call CreateCottonSpores
|
||||
@@ -6988,7 +6988,7 @@ FireSpreadEffect:
|
||||
Move_LEER:
|
||||
loadspritegfx ANIM_TAG_LEER
|
||||
monbg ANIM_ATTACKER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
setalpha 8, 8
|
||||
playsewithpan SE_M_LEER, SOUND_PAN_ATTACKER
|
||||
createsprite gLeerSpriteTemplate, ANIM_ATTACKER, 2, 24, -12
|
||||
@@ -7008,7 +7008,7 @@ Move_DREAM_EATER:
|
||||
loadspritegfx ANIM_TAG_ORBS
|
||||
loadspritegfx ANIM_TAG_BLUE_STAR
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_2A ANIM_TARGET
|
||||
splitbgprio_foes ANIM_TARGET
|
||||
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
|
||||
call SetPsychicBackground
|
||||
setalpha 8, 8
|
||||
@@ -7076,7 +7076,7 @@ Move_POISON_GAS:
|
||||
loadspritegfx ANIM_TAG_POISON_BUBBLE
|
||||
delay 0
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_29
|
||||
splitbgprio_all
|
||||
setalpha 12, 8
|
||||
delay 0
|
||||
playsewithpan SE_M_MIST, SOUND_PAN_ATTACKER
|
||||
@@ -7221,7 +7221,7 @@ Move_STEEL_WING:
|
||||
createvisualtask AnimTask_MetallicShine, 5, 0, 0, 0
|
||||
waitforvisualfinish
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
loopsewithpan SE_M_WING_ATTACK, SOUND_PAN_ATTACKER, 20, 2
|
||||
createvisualtask AnimTask_TranslateMonElliptical, 2, 0, 12, 4, 1, 4
|
||||
@@ -7304,7 +7304,7 @@ Move_METAL_CLAW:
|
||||
|
||||
Move_NIGHT_SHADE:
|
||||
monbg ANIM_ATTACKER
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
playsewithpan SE_M_PSYBEAM, SOUND_PAN_ATTACKER
|
||||
fadetobg BG_GHOST
|
||||
waitbgfadein
|
||||
@@ -7475,7 +7475,7 @@ Move_SPIDER_WEB:
|
||||
delay 0
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 5, 1, 2, 0, 9, RGB_BLACK
|
||||
waitforvisualfinish
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
loopsewithpan SE_M_STRING_SHOT, SOUND_PAN_ATTACKER, 9, 6
|
||||
call SpiderWebThread
|
||||
call SpiderWebThread
|
||||
@@ -7546,7 +7546,7 @@ RazorWindUnleash:
|
||||
Move_DISABLE:
|
||||
loadspritegfx ANIM_TAG_SPARKLE_4
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 8, 8
|
||||
playsewithpan SE_M_DETECT, SOUND_PAN_ATTACKER
|
||||
createsprite gSpinningSparkleSpriteTemplate, ANIM_ATTACKER, 13, 24, -16
|
||||
@@ -7597,9 +7597,9 @@ RecoverAbsorbEffect:
|
||||
Move_MIMIC:
|
||||
loadspritegfx ANIM_TAG_ORBS
|
||||
setalpha 11, 5
|
||||
monbg_22 ANIM_DEF_PARTNER
|
||||
monbgprio_29
|
||||
panse_1B SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0
|
||||
monbg_static ANIM_DEF_PARTNER
|
||||
splitbgprio_all
|
||||
panse SE_M_MINIMIZE, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0
|
||||
createvisualtask AnimTask_ShrinkTargetCopy, 5, 128, 24
|
||||
delay 15
|
||||
createsprite gMimicOrbSpriteTemplate, ANIM_TARGET, 2, -12, 24
|
||||
@@ -7609,7 +7609,7 @@ Move_MIMIC:
|
||||
playsewithpan SE_M_TAKE_DOWN, SOUND_PAN_ATTACKER
|
||||
createvisualtask AnimTask_BlendColorCycle, 2, 2, 0, 2, 0, 11, RGB_WHITE
|
||||
waitforvisualfinish
|
||||
clearmonbg_23 ANIM_DEF_PARTNER
|
||||
clearmonbg_static ANIM_DEF_PARTNER
|
||||
blendoff
|
||||
end
|
||||
|
||||
@@ -7943,7 +7943,7 @@ Move_PERISH_SONG:
|
||||
createsprite gPerishSongMusicNoteSpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 240
|
||||
createsprite gPerishSongMusicNote2SpriteTemplate, ANIM_ATTACKER, 4, 15, 0, 0
|
||||
delay 20
|
||||
panse_1B SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_PERISH_SONG, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
delay 80
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 16, RGB_BLACK
|
||||
createvisualtask AnimTask_SetGrayscaleOrOriginalPal, 5, 4, 0
|
||||
@@ -8070,7 +8070,7 @@ Move_WILL_O_WISP:
|
||||
loadspritegfx ANIM_TAG_WISP_FIRE
|
||||
loadspritegfx ANIM_TAG_WISP_ORB
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_2A ANIM_TARGET
|
||||
splitbgprio_foes ANIM_TARGET
|
||||
playsewithpan SE_M_EMBER, SOUND_PAN_ATTACKER
|
||||
waitplaysewithpan SE_M_EMBER, SOUND_PAN_ATTACKER, 10
|
||||
createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_ATTACKER, 1, 0
|
||||
@@ -8084,7 +8084,7 @@ Move_WILL_O_WISP:
|
||||
delay 40
|
||||
createvisualtask SoundTask_AdjustPanningVar, 2, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, 2, 0
|
||||
waitforvisualfinish
|
||||
monbgprio_29
|
||||
splitbgprio_all
|
||||
playsewithpan SE_M_FLAME_WHEEL2, SOUND_PAN_TARGET
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_TARGET, 4, 0, 13, 1
|
||||
createsprite gWillOWispFireSpriteTemplate, ANIM_ATTACKER, 2, 0
|
||||
@@ -8150,7 +8150,7 @@ Move_WISH:
|
||||
loadspritegfx ANIM_TAG_SPARKLE_2
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 3, 0, 10, RGB_BLACK
|
||||
waitforvisualfinish
|
||||
panse_27 SE_M_REFLECT, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0
|
||||
panse_adjustall SE_M_REFLECT, SOUND_PAN_TARGET, SOUND_PAN_ATTACKER, -3, 0
|
||||
createsprite gWishStarSpriteTemplate, ANIM_ATTACKER, 40
|
||||
waitforvisualfinish
|
||||
delay 60
|
||||
@@ -8552,7 +8552,7 @@ Move_SHEER_COLD:
|
||||
waitbgfadein
|
||||
loadspritegfx ANIM_TAG_ICE_CUBE
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_FrozenIceCube, 2
|
||||
waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17
|
||||
@@ -8566,7 +8566,7 @@ Move_SHEER_COLD:
|
||||
Move_ARM_THRUST:
|
||||
loadspritegfx ANIM_TAG_HANDS_AND_FEET
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_RotateMonSpriteToSide, 5, 8, 5, 0, 0
|
||||
delay 6
|
||||
@@ -8591,7 +8591,7 @@ ArmThrustLeft:
|
||||
goto ArmThrustContinue
|
||||
|
||||
Move_MUDDY_WATER:
|
||||
panse_1B SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
createvisualtask AnimTask_CreateSurfWave, 2, TRUE
|
||||
waitforvisualfinish
|
||||
end
|
||||
@@ -8684,12 +8684,12 @@ DragonClawFireSpiral:
|
||||
Move_MUD_SHOT:
|
||||
loadspritegfx ANIM_TAG_BROWN_ORB
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_ATTACKER, 0, 2, 46, 1
|
||||
delay 6
|
||||
createvisualtask AnimTask_StartSinAnimTimer, 5, 100
|
||||
panse_1B SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
|
||||
panse SE_M_WHIRLPOOL, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +1, 0
|
||||
call MudShotOrbs
|
||||
call MudShotOrbs
|
||||
call MudShotOrbs
|
||||
@@ -8717,7 +8717,7 @@ Move_METEOR_MASH:
|
||||
loadspritegfx ANIM_TAG_GOLD_STARS
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
loadspritegfx ANIM_TAG_HANDS_AND_FEET
|
||||
panse_1B SE_M_BARRIER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +3, 0
|
||||
panse SE_M_BARRIER, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +3, 0
|
||||
fadetobg BG_COSMIC
|
||||
waitbgfadein
|
||||
waitforvisualfinish
|
||||
@@ -8789,7 +8789,7 @@ Move_FRENZY_PLANT:
|
||||
loadspritegfx ANIM_TAG_ROOTS
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 1, 2, 0, 5, RGB_BLACK
|
||||
waitforvisualfinish
|
||||
@@ -8848,7 +8848,7 @@ Move_FRENZY_PLANT:
|
||||
Move_METAL_SOUND:
|
||||
loadspritegfx ANIM_TAG_METAL_SOUND_WAVES
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_2A ANIM_TARGET
|
||||
splitbgprio_foes ANIM_TARGET
|
||||
createvisualtask AnimTask_ShakeMon2, 2, ANIM_ATTACKER, 2, 0, 8, 1
|
||||
call MetalSoundRings
|
||||
call MetalSoundRings
|
||||
@@ -8860,7 +8860,7 @@ Move_METAL_SOUND:
|
||||
waitforvisualfinish
|
||||
end
|
||||
MetalSoundRings:
|
||||
panse_1B SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_SCREECH, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
createsprite gMetalSoundSpriteTemplate, ANIM_TARGET, 2, 16, 0, 0, 0, 30, 0
|
||||
delay 2
|
||||
return
|
||||
@@ -9154,11 +9154,11 @@ Move_ROCK_TOMB:
|
||||
|
||||
Move_SILVER_WIND:
|
||||
loadspritegfx ANIM_TAG_SPARKLE_6
|
||||
panse_1B SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_GUST, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
playsewithpan SE_M_MORNING_SUN, 0
|
||||
delay 0
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_29
|
||||
splitbgprio_all
|
||||
delay 0
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 10, ANIM_TARGET, 0, 0, 4, RGB_BLACK
|
||||
createvisualtask AnimTask_GetTargetSide, 2
|
||||
@@ -9368,7 +9368,7 @@ Move_HYDRO_CANNON:
|
||||
delay 10
|
||||
createvisualtask AnimTask_InvertScreenColor, 2, 257, 257, 257
|
||||
delay 30
|
||||
panse_1B SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
panse SE_M_HYDRO_PUMP, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
|
||||
call HydroCannonBeam
|
||||
createvisualtask AnimTask_ShakeMon, 5, ANIM_TARGET, 10, 0, 40, 1
|
||||
createsprite gWaterHitSplatSpriteTemplate, ANIM_TARGET, 2, 0, 0, ANIM_TARGET, 0
|
||||
@@ -9494,7 +9494,7 @@ Move_WATER_PULSE:
|
||||
loadspritegfx ANIM_TAG_SMALL_BUBBLES
|
||||
loadspritegfx ANIM_TAG_BLUE_RING_2
|
||||
monbg ANIM_TARGET
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
playsewithpan SE_M_BUBBLE3, SOUND_PAN_ATTACKER
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 2, 1, 0, 0, 7, RGB(0, 25, 28)
|
||||
delay 10
|
||||
@@ -9531,7 +9531,7 @@ Move_PSYCHO_BOOST:
|
||||
delay 6
|
||||
createvisualtask AnimTask_BlendColorCycle, 2, 1, 2, 8, 0, 10, RGB_BLACK
|
||||
delay 0
|
||||
monbgprio_28 ANIM_ATTACKER
|
||||
splitbgprio ANIM_ATTACKER
|
||||
setalpha 8, 8
|
||||
delay 10
|
||||
createvisualtask AnimTask_ShakeMon, 2, ANIM_ATTACKER, 3, 0, 240, 0
|
||||
@@ -9591,7 +9591,7 @@ Move_DOOM_DESIRE:
|
||||
Move_SKY_UPPERCUT:
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
fadetobg BG_IN_AIR
|
||||
waitbgfadeout
|
||||
playsewithpan SE_M_SKY_UPPERCUT, SOUND_PAN_ATTACKER
|
||||
@@ -9650,7 +9650,7 @@ Move_TWISTER:
|
||||
loadspritegfx ANIM_TAG_IMPACT
|
||||
loadspritegfx ANIM_TAG_ROCKS
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
playsewithpan SE_M_TWISTER, SOUND_PAN_TARGET
|
||||
createsprite gTwisterLeafSpriteTemplate, ANIM_TARGET, 2, 120, 70, 5, 70, 30
|
||||
delay 1
|
||||
@@ -10267,7 +10267,7 @@ Status_Freeze:
|
||||
playsewithpan SE_M_ICY_WIND, 0
|
||||
loadspritegfx ANIM_TAG_ICE_CUBE
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
waitplaysewithpan SE_M_HAIL, SOUND_PAN_TARGET, 17
|
||||
createvisualtask AnimTask_FrozenIceCube, 2
|
||||
waitforvisualfinish
|
||||
@@ -10296,7 +10296,7 @@ Status_Nightmare:
|
||||
|
||||
General_CastformChange:
|
||||
createvisualtask AnimTask_IsMonInvisible, 2
|
||||
jumpreteq 1, CastformChangeSkipAnim
|
||||
jumpreteq TRUE, CastformChangeSkipAnim
|
||||
goto CastformChangeContinue
|
||||
CastformChangeContinue:
|
||||
monbg ANIM_ATTACKER
|
||||
@@ -10384,7 +10384,7 @@ Status_FireSpin:
|
||||
Status_Whirlpool:
|
||||
loadspritegfx ANIM_TAG_WATER_ORB
|
||||
monbg ANIM_DEF_PARTNER
|
||||
monbgprio_28 ANIM_TARGET
|
||||
splitbgprio ANIM_TARGET
|
||||
setalpha 12, 8
|
||||
delay 0
|
||||
createsprite gSimplePaletteBlendSpriteTemplate, ANIM_ATTACKER, 0, 4, 2, 0, 7, RGB(0, 13, 23)
|
||||
|
||||
+99
-94
@@ -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::
|
||||
@@ -2825,35 +2825,40 @@ BattleScript_GiveExp::
|
||||
end2
|
||||
|
||||
BattleScript_HandleFaintedMon::
|
||||
atk24 BattleScript_HandleFaintedMonMultiple
|
||||
checkteamslost BattleScript_LinkHandleFaintedMonMultiple
|
||||
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
|
||||
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonTryChoose
|
||||
jumpifword CMP_NO_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonTryChoose
|
||||
@ Yes/No for sending out a new Pokémon if one is defeated in a wild battle
|
||||
printstring STRINGID_USENEXTPKMN
|
||||
setbyte gBattleCommunication, 0
|
||||
yesnobox
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0, BattleScript_FaintedMonTryChooseAnother
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 0, BattleScript_FaintedMonTryChoose
|
||||
@ Player said no, try to run
|
||||
jumpifplayerran BattleScript_FaintedMonEnd
|
||||
printstring STRINGID_CANTESCAPE2
|
||||
BattleScript_FaintedMonTryChooseAnother::
|
||||
BattleScript_FaintedMonTryChoose::
|
||||
openpartyscreen BS_FAINTED, BattleScript_FaintedMonEnd
|
||||
switchhandleorder BS_FAINTED, 2
|
||||
jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonChooseAnother
|
||||
jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonChooseAnother
|
||||
jumpifbattletype BATTLE_TYPE_RECORDED_LINK, BattleScript_FaintedMonChooseAnother
|
||||
jumpifbattletype BATTLE_TYPE_FRONTIER, BattleScript_FaintedMonChooseAnother
|
||||
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonChooseAnother
|
||||
jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonChooseAnother
|
||||
jumpifbyte CMP_EQUAL, sBATTLE_STYLE, OPTIONS_BATTLE_STYLE_SET, BattleScript_FaintedMonChooseAnother
|
||||
jumpifcantswitch BS_PLAYER1, BattleScript_FaintedMonChooseAnother
|
||||
jumpifnotbattletype BATTLE_TYPE_TRAINER, BattleScript_FaintedMonSendOutNew
|
||||
jumpifbattletype BATTLE_TYPE_LINK, BattleScript_FaintedMonSendOutNew
|
||||
jumpifbattletype BATTLE_TYPE_RECORDED_LINK, BattleScript_FaintedMonSendOutNew
|
||||
jumpifbattletype BATTLE_TYPE_FRONTIER, BattleScript_FaintedMonSendOutNew
|
||||
jumpifbattletype BATTLE_TYPE_DOUBLE, BattleScript_FaintedMonSendOutNew
|
||||
jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_PLAYER_FAINTED, BattleScript_FaintedMonSendOutNew
|
||||
jumpifbyte CMP_EQUAL, sBATTLE_STYLE, OPTIONS_BATTLE_STYLE_SET, BattleScript_FaintedMonSendOutNew
|
||||
jumpifcantswitch BS_PLAYER1, BattleScript_FaintedMonSendOutNew
|
||||
@ Yes/No for sending out a new Pokémon when the opponent is switching
|
||||
printstring STRINGID_ENEMYABOUTTOSWITCHPKMN
|
||||
setbyte gBattleCommunication, 0
|
||||
yesnobox
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_FaintedMonChooseAnother
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication + 1, 1, BattleScript_FaintedMonSendOutNew
|
||||
@ Player said yes, go to party screen (note optional flag, player may exit the menu instead)
|
||||
setatktoplayer0
|
||||
openpartyscreen BS_ATTACKER | PARTY_SCREEN_OPTIONAL, BattleScript_FaintedMonChooseAnother
|
||||
openpartyscreen BS_ATTACKER | PARTY_SCREEN_OPTIONAL, BattleScript_FaintedMonSendOutNew
|
||||
switchhandleorder BS_ATTACKER, 2
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, PARTY_SIZE, BattleScript_FaintedMonChooseAnother
|
||||
jumpifbyte CMP_EQUAL, gBattleCommunication, PARTY_SIZE, BattleScript_FaintedMonSendOutNew
|
||||
@ Switch Pokémon before opponent
|
||||
atknameinbuff1
|
||||
resetintimidatetracebits BS_ATTACKER
|
||||
hpthresholds2 BS_ATTACKER
|
||||
@@ -2872,7 +2877,7 @@ BattleScript_FaintedMonTryChooseAnother::
|
||||
waitstate
|
||||
switchineffects BS_ATTACKER
|
||||
resetsentmonsvalue
|
||||
BattleScript_FaintedMonChooseAnother::
|
||||
BattleScript_FaintedMonSendOutNew::
|
||||
drawpartystatussummary BS_FAINTED
|
||||
getswitchedmondata BS_FAINTED
|
||||
switchindataupdate BS_FAINTED
|
||||
@@ -2888,13 +2893,13 @@ BattleScript_FaintedMonChooseAnother::
|
||||
BattleScript_FaintedMonEnd::
|
||||
end2
|
||||
|
||||
BattleScript_HandleFaintedMonMultiple::
|
||||
openpartyscreen BS_UNK_5, BattleScript_HandleFaintedMonMultipleStart
|
||||
BattleScript_HandleFaintedMonMultipleStart::
|
||||
BattleScript_LinkHandleFaintedMonMultiple::
|
||||
openpartyscreen BS_FAINTED_LINK_MULTIPLE_1, BattleScript_LinkHandleFaintedMonMultipleStart
|
||||
BattleScript_LinkHandleFaintedMonMultipleStart::
|
||||
switchhandleorder BS_FAINTED, 0
|
||||
openpartyscreen BS_UNK_6, BattleScript_HandleFaintedMonMultipleEnd
|
||||
openpartyscreen BS_FAINTED_LINK_MULTIPLE_2, BattleScript_LinkHandleFaintedMonMultipleEnd
|
||||
switchhandleorder BS_FAINTED, 0
|
||||
BattleScript_HandleFaintedMonLoop::
|
||||
BattleScript_LinkHandleFaintedMonLoop::
|
||||
switchhandleorder BS_FAINTED, 3
|
||||
drawpartystatussummary BS_FAINTED
|
||||
getswitchedmondata BS_FAINTED
|
||||
@@ -2904,9 +2909,9 @@ BattleScript_HandleFaintedMonLoop::
|
||||
hidepartystatussummary BS_FAINTED
|
||||
switchinanim BS_FAINTED, FALSE
|
||||
waitstate
|
||||
switchineffects 5
|
||||
jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_HandleFaintedMonLoop
|
||||
BattleScript_HandleFaintedMonMultipleEnd::
|
||||
switchineffects BS_FAINTED_LINK_MULTIPLE_1
|
||||
jumpifbytenotequal gBattlerFainted, gBattlersCount, BattleScript_LinkHandleFaintedMonLoop
|
||||
BattleScript_LinkHandleFaintedMonMultipleEnd::
|
||||
end2
|
||||
|
||||
BattleScript_LocalTrainerBattleWon::
|
||||
@@ -3040,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
|
||||
@@ -3131,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
|
||||
@@ -3185,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
|
||||
@@ -3205,8 +3210,8 @@ BattleScript_DamagingWeatherLoop::
|
||||
hitanimation BS_ATTACKER
|
||||
healthbarupdate BS_ATTACKER
|
||||
datahpupdate BS_ATTACKER
|
||||
tryfaintmon BS_ATTACKER, FALSE, NULL
|
||||
atk24 BattleScript_DamagingWeatherLoopIncrement
|
||||
tryfaintmon BS_ATTACKER
|
||||
checkteamslost BattleScript_DamagingWeatherLoopIncrement
|
||||
BattleScript_DamagingWeatherLoopIncrement::
|
||||
jumpifbyte CMP_NOT_EQUAL, gBattleOutcome, 0, BattleScript_DamagingWeatherContinuesEnd
|
||||
addbyte gBattleCommunication, 1
|
||||
@@ -3223,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::
|
||||
@@ -3234,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::
|
||||
@@ -3272,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::
|
||||
@@ -3302,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::
|
||||
@@ -3374,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::
|
||||
@@ -3382,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::
|
||||
@@ -3397,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::
|
||||
@@ -3412,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::
|
||||
@@ -3433,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::
|
||||
@@ -3508,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
|
||||
@@ -3520,8 +3525,8 @@ BattleScript_DoFutureAttackHit::
|
||||
datahpupdate BS_TARGET
|
||||
resultmessage
|
||||
waitmessage B_WAIT_TIME_LONG
|
||||
tryfaintmon BS_TARGET, FALSE, NULL
|
||||
atk24 BattleScript_FutureAttackEnd
|
||||
tryfaintmon BS_TARGET
|
||||
checkteamslost BattleScript_FutureAttackEnd
|
||||
BattleScript_FutureAttackEnd::
|
||||
moveendcase MOVEEND_RAGE
|
||||
moveendfromto MOVEEND_ITEM_EFFECTS_ALL, MOVEEND_UPDATE_LAST_MOVES
|
||||
@@ -3580,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
|
||||
@@ -3599,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
|
||||
@@ -3633,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
|
||||
@@ -3670,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
|
||||
@@ -3701,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
|
||||
@@ -3734,8 +3739,8 @@ BattleScript_DoTurnDmg::
|
||||
orword gHitMarker, HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
|
||||
healthbarupdate BS_ATTACKER
|
||||
datahpupdate BS_ATTACKER
|
||||
tryfaintmon BS_ATTACKER, FALSE, NULL
|
||||
atk24 BattleScript_DoTurnDmgEnd
|
||||
tryfaintmon BS_ATTACKER
|
||||
checkteamslost BattleScript_DoTurnDmgEnd
|
||||
BattleScript_DoTurnDmgEnd::
|
||||
end2
|
||||
|
||||
@@ -3803,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
|
||||
@@ -3936,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
|
||||
@@ -3950,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
|
||||
|
||||
@@ -3978,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
|
||||
|
||||
@@ -4043,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
|
||||
|
||||
@@ -4179,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::
|
||||
@@ -4247,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
|
||||
|
||||
@@ -4256,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
|
||||
@@ -4268,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
|
||||
@@ -4280,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
|
||||
@@ -4292,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
|
||||
@@ -4304,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
|
||||
@@ -4316,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
|
||||
@@ -4327,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
|
||||
@@ -4339,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
|
||||
@@ -4356,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
|
||||
@@ -4367,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
|
||||
@@ -4380,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
|
||||
@@ -4400,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
|
||||
@@ -4409,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
|
||||
|
||||
|
Before Width: | Height: | Size: 286 B After Width: | Height: | Size: 286 B |
|
Before Width: | Height: | Size: 174 B After Width: | Height: | Size: 174 B |
+37
-40
@@ -17,6 +17,11 @@
|
||||
#define GET_BATTLER_SIDE(battler) (GetBattlerPosition(battler) & BIT_SIDE)
|
||||
#define GET_BATTLER_SIDE2(battler) (GET_BATTLER_POSITION(battler) & BIT_SIDE)
|
||||
|
||||
// Used to exclude moves learned temporarily by Transform or Mimic
|
||||
#define MOVE_IS_PERMANENT(battler, moveSlot) \
|
||||
(!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED) \
|
||||
&& !(gDisableStructs[battler].mimickedMoves & gBitTable[moveSlot]))
|
||||
|
||||
// Battle Actions
|
||||
// These determine what each battler will do in a turn
|
||||
#define B_ACTION_USE_MOVE 0
|
||||
@@ -32,32 +37,21 @@
|
||||
#define B_ACTION_EXEC_SCRIPT 10
|
||||
#define B_ACTION_TRY_FINISH 11
|
||||
#define B_ACTION_FINISHED 12
|
||||
|
||||
#define B_ACTION_CANCEL_PARTNER 12 // when choosing an action
|
||||
#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)
|
||||
#define MOVE_TARGET_RANDOM (1 << 2)
|
||||
#define MOVE_TARGET_BOTH (1 << 3)
|
||||
#define MOVE_TARGET_USER (1 << 4)
|
||||
#define MOVE_TARGET_FOES_AND_ALLY (1 << 5)
|
||||
#define MOVE_TARGET_OPPONENTS_FIELD (1 << 6)
|
||||
|
||||
#define MOVE_TARGET_SELECTED 0x0
|
||||
#define MOVE_TARGET_DEPENDS 0x1
|
||||
#define MOVE_TARGET_USER_OR_SELECTED 0x2
|
||||
#define MOVE_TARGET_RANDOM 0x4
|
||||
#define MOVE_TARGET_BOTH 0x8
|
||||
#define MOVE_TARGET_USER 0x10
|
||||
#define MOVE_TARGET_FOES_AND_ALLY 0x20
|
||||
#define MOVE_TARGET_OPPONENTS_FIELD 0x40
|
||||
// For the second argument of GetMoveTarget, when no target override is needed
|
||||
#define NO_TARGET_OVERRIDE 0
|
||||
|
||||
#define BATTLE_BUFFER_LINK_SIZE 0x1000
|
||||
|
||||
@@ -115,7 +109,7 @@ struct ProtectStruct
|
||||
u32 confusionSelfDmg:1;
|
||||
u32 targetNotAffected:1;
|
||||
u32 chargingTurn:1;
|
||||
u32 fleeFlag:2; // For RunAway and Smoke Ball.
|
||||
u32 fleeType:2; // 0: Normal, 1: FLEE_ITEM, 2: FLEE_ABILITY
|
||||
u32 usedImprisonedMove:1;
|
||||
u32 loveImmobility:1;
|
||||
u32 usedDisabledMove:1;
|
||||
@@ -138,7 +132,7 @@ struct SpecialStatus
|
||||
u32 intimidatedMon:1;
|
||||
u32 traced:1;
|
||||
u32 ppNotAffectedByPressure:1;
|
||||
u32 flag40:1;
|
||||
u32 faintedHasReplacement:1;
|
||||
u32 focusBanded:1;
|
||||
s32 dmg;
|
||||
s32 physicalDmg;
|
||||
@@ -377,9 +371,9 @@ struct BattleStruct
|
||||
u8 field_52;
|
||||
u8 sentInPokes;
|
||||
bool8 selectionScriptFinished[MAX_BATTLERS_COUNT];
|
||||
u8 field_58[4];
|
||||
u8 battlerPartyIndexes[MAX_BATTLERS_COUNT];
|
||||
u8 monToSwitchIntoId[MAX_BATTLERS_COUNT];
|
||||
u8 field_60[4][3];
|
||||
u8 battlerPartyOrders[MAX_BATTLERS_COUNT][PARTY_SIZE / 2];
|
||||
u8 runTries;
|
||||
u8 caughtMonNick[POKEMON_NAME_LENGTH + 1];
|
||||
u8 unused_2;
|
||||
@@ -398,7 +392,7 @@ struct BattleStruct
|
||||
u8 stringMoveType;
|
||||
u8 expGetterBattlerId;
|
||||
u8 unused_5;
|
||||
u8 field_91; // related to gAbsentBattlerFlags, possibly absent flags turn ago?
|
||||
u8 absentBattlerFlags;
|
||||
u8 palaceFlags; // First 4 bits are "is < 50% HP and not asleep" for each battler, last 4 bits are selected moves to pass to AI
|
||||
u8 field_93; // related to choosing pokemon?
|
||||
u8 wallyBattleState;
|
||||
@@ -426,7 +420,7 @@ struct BattleStruct
|
||||
u8 unused_6[3];
|
||||
u8 givenExpMons; // Bits for enemy party's pokemon that gave exp to player's party.
|
||||
u8 lastTakenMoveFrom[MAX_BATTLERS_COUNT * MAX_BATTLERS_COUNT * 2]; // a 3-D array [target][attacker][byte]
|
||||
u16 castformPalette[MAX_BATTLERS_COUNT][16];
|
||||
u16 castformPalette[NUM_CASTFORM_FORMS][16];
|
||||
union {
|
||||
struct LinkBattlerHeader linkBattlerHeader;
|
||||
u32 battleVideo[2];
|
||||
@@ -447,12 +441,16 @@ struct BattleStruct
|
||||
u8 alreadyStatusedMoveAttempt; // As bits for battlers; For example when using Thunder Wave on an already paralyzed pokemon.
|
||||
};
|
||||
|
||||
#define GET_MOVE_TYPE(move, typeArg) \
|
||||
{ \
|
||||
if (gBattleStruct->dynamicMoveType) \
|
||||
typeArg = gBattleStruct->dynamicMoveType & 0x3F; \
|
||||
else \
|
||||
typeArg = gBattleMoves[move].type; \
|
||||
#define F_DYNAMIC_TYPE_1 (1 << 6)
|
||||
#define F_DYNAMIC_TYPE_2 (1 << 7)
|
||||
#define DYNAMIC_TYPE_MASK (F_DYNAMIC_TYPE_1 - 1)
|
||||
|
||||
#define GET_MOVE_TYPE(move, typeArg) \
|
||||
{ \
|
||||
if (gBattleStruct->dynamicMoveType) \
|
||||
typeArg = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK; \
|
||||
else \
|
||||
typeArg = gBattleMoves[move].type; \
|
||||
}
|
||||
|
||||
#define IS_TYPE_PHYSICAL(moveType)(moveType < TYPE_MYSTERY)
|
||||
@@ -476,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;
|
||||
@@ -498,18 +498,15 @@ struct BattleScripting
|
||||
u8 battleStyle;
|
||||
u8 drawlvlupboxState;
|
||||
u8 learnMoveState;
|
||||
u8 field_20;
|
||||
u8 pursuitDoublesAttacker;
|
||||
u8 reshowMainState;
|
||||
u8 reshowHelperState;
|
||||
u8 levelUpHP;
|
||||
u8 windowsType; // 0 - normal, 1 - battle arena
|
||||
u8 windowsType; // B_WIN_TYPE_*
|
||||
u8 multiplayerId;
|
||||
u8 specialTrainerBattleType;
|
||||
};
|
||||
|
||||
// rom_80A5C6C
|
||||
|
||||
|
||||
struct BattleSpriteInfo
|
||||
{
|
||||
u16 invisible:1; // 0x1
|
||||
@@ -624,8 +621,8 @@ extern u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT];
|
||||
extern u32 gBattleTypeFlags;
|
||||
extern u8 gBattleTerrain;
|
||||
extern u32 gUnusedFirstBattleVar1;
|
||||
extern u8 *gUnknown_0202305C;
|
||||
extern u8 *gUnknown_02023060;
|
||||
extern u8 *gBattleAnimBgTileBuffer;
|
||||
extern u8 *gBattleAnimBgTilemapBuffer;
|
||||
extern u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200];
|
||||
extern u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200];
|
||||
extern u8 gActiveBattler;
|
||||
|
||||
@@ -64,12 +64,12 @@ s8 BattleAnimAdjustPanning(s8 pan);
|
||||
s8 BattleAnimAdjustPanning2(s8 pan);
|
||||
s16 KeepPanInRange(s16 a, int oldPan);
|
||||
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
|
||||
void sub_80A4720(u16 a, u16 *b, u32 c, u8 d);
|
||||
void RelocateBattleBgPal(u16 paletteNum, u16 *dest, u32 offset, bool8 largeScreen);
|
||||
void ResetBattleAnimBg(bool8);
|
||||
|
||||
// battle_intro.c
|
||||
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value);
|
||||
void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 arg7);
|
||||
void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 *tiles, u16 *tilemap, u16 tilesOffset);
|
||||
void HandleIntroSlide(u8 terrainId);
|
||||
int GetAnimBgAttribute(u8 bgId, u8 attributeId);
|
||||
|
||||
@@ -107,7 +107,7 @@ void AnimTranslateLinear_WaitEnd(struct Sprite *sprite);
|
||||
u8 GetBattlerSpriteBGPriority(u8 battlerId);
|
||||
void *LoadPointerFromVars(s16 bottom, s16 top);
|
||||
void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr);
|
||||
void sub_80A8278(void);
|
||||
void InitPrioritiesForVisibleBattlers(void);
|
||||
void GetBattleAnimBg1Data(struct BattleAnimBgData*);
|
||||
void GetBattleAnimBgData(struct BattleAnimBgData*, u32 arg1);
|
||||
u8 GetBattlerSpriteSubpriority(u8 battlerId);
|
||||
@@ -125,7 +125,7 @@ u8 AnimDummyReturnArg(u8 battler);
|
||||
s16 CloneBattlerSpriteWithBlend(u8);
|
||||
void obj_delete_but_dont_free_vram(struct Sprite*);
|
||||
u8 CreateInvisibleSpriteCopy(int, u8, int);
|
||||
void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData*, const void*, u32);
|
||||
void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData*, const void*, bool32);
|
||||
void AnimLoadCompressedBgGfx(u32, const u32*, u32);
|
||||
void UpdateAnimBg3ScreenSize(bool8);
|
||||
void TranslateSpriteInGrowingCircleOverDuration(struct Sprite *);
|
||||
|
||||
@@ -7,7 +7,6 @@ void BattleArena_InitPoints(void);
|
||||
void BattleArena_AddMindPoints(u8 battler);
|
||||
void BattleArena_AddSkillPoints(u8 battler);
|
||||
void BattleArena_DeductMindPoints(u8 battler, u16 stringId);
|
||||
void sub_81A586C(u8 battler);
|
||||
void DrawArenaRefereeTextBox(void);
|
||||
void EraseArenaRefereeTextBox(void);
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
#ifndef GUARD_BATTLE_CONTROLLERS_H
|
||||
#define GUARD_BATTLE_CONTROLLERS_H
|
||||
|
||||
enum
|
||||
{
|
||||
enum {
|
||||
REQUEST_ALL_BATTLE,
|
||||
REQUEST_SPECIES_BATTLE,
|
||||
REQUEST_HELDITEM_BATTLE,
|
||||
@@ -67,19 +66,36 @@ enum
|
||||
|
||||
// Special arguments for Battle Controller functions.
|
||||
|
||||
#define RESET_ACTION_MOVE_SELECTION 0
|
||||
#define RESET_ACTION_SELECTION 1
|
||||
#define RESET_MOVE_SELECTION 2
|
||||
enum { // Values given to the emit functions to choose gBattleBufferA or gBattleBufferB
|
||||
BUFFER_A,
|
||||
BUFFER_B
|
||||
};
|
||||
|
||||
#define BALL_NO_SHAKES 0
|
||||
#define BALL_1_SHAKE 1
|
||||
#define BALL_2_SHAKES 2
|
||||
#define BALL_3_SHAKES_FAIL 3
|
||||
#define BALL_3_SHAKES_SUCCESS 4
|
||||
#define BALL_TRAINER_BLOCK 5
|
||||
enum {
|
||||
RESET_ACTION_MOVE_SELECTION,
|
||||
RESET_ACTION_SELECTION,
|
||||
RESET_MOVE_SELECTION,
|
||||
};
|
||||
|
||||
enum {
|
||||
BALL_NO_SHAKES,
|
||||
BALL_1_SHAKE,
|
||||
BALL_2_SHAKES,
|
||||
BALL_3_SHAKES_FAIL,
|
||||
BALL_3_SHAKES_SUCCESS,
|
||||
BALL_TRAINER_BLOCK,
|
||||
};
|
||||
|
||||
enum {
|
||||
LINK_STANDBY_MSG_STOP_BOUNCE,
|
||||
LINK_STANDBY_STOP_BOUNCE_ONLY,
|
||||
LINK_STANDBY_MSG_ONLY,
|
||||
};
|
||||
|
||||
#define INSTANT_HP_BAR_DROP 32767
|
||||
|
||||
#define PARTY_SUMM_SKIP_DRAW_DELAY (1 << 7)
|
||||
|
||||
// Special return values in gBattleBufferB from Battle Controller functions.
|
||||
#define RET_VALUE_LEVELED_UP 11
|
||||
|
||||
@@ -191,7 +207,7 @@ void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 b
|
||||
void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, void *data); // unused
|
||||
void BtlController_EmitLoadMonSprite(u8 bufferId);
|
||||
void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubstituteBit);
|
||||
void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1);
|
||||
void BtlController_EmitReturnMonToBall(u8 bufferId, bool8 skipAnim);
|
||||
void BtlController_EmitDrawTrainerPic(u8 bufferId);
|
||||
void BtlController_EmitTrainerSlide(u8 bufferId);
|
||||
void BtlController_EmitTrainerSlideBack(u8 bufferId);
|
||||
@@ -203,11 +219,11 @@ void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data); // unused
|
||||
void BtlController_EmitMoveAnimation(u8 bufferId, u16 move, u8 turnOfMove, u16 movePower, s32 dmg, u8 friendship, struct DisableStruct *disableStructPtr, u8 multihit);
|
||||
void BtlController_EmitPrintString(u8 bufferId, u16 stringId);
|
||||
void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringId);
|
||||
void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2);
|
||||
void BtlController_EmitChooseAction(u8 bufferId, u8 action, u16 itemId);
|
||||
void BtlController_EmitYesNoBox(u8 bufferId);
|
||||
void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpNumber, struct ChooseMoveStruct *movePpData);
|
||||
void BtlController_EmitChooseItem(u8 bufferId, u8* arg1);
|
||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 abilityId, u8* arg4);
|
||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8* data);
|
||||
void BtlController_EmitCmd23(u8 bufferId); // unused
|
||||
void BtlController_EmitHealthBarUpdate(u8 bufferId, u16 hpValue);
|
||||
void BtlController_EmitExpUpdate(u8 bufferId, u8 partyId, u16 expPoints);
|
||||
@@ -216,7 +232,7 @@ void BtlController_EmitStatusAnimation(u8 bufferId, bool8 status2, u32 status);
|
||||
void BtlController_EmitStatusXor(u8 bufferId, u8 b); // unused
|
||||
void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data);
|
||||
void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data); // unused
|
||||
void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter); // unused
|
||||
void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data); // unused
|
||||
void BtlController_EmitCmd32(u8 bufferId, u16 size, void *c); // unused
|
||||
void BtlController_EmitTwoReturnValues(u8 bufferId, u8 arg1, u16 arg2);
|
||||
void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c);
|
||||
@@ -233,7 +249,7 @@ void BtlController_EmitPlayFanfareOrBGM(u8 bufferId, u16 songId, bool8 playBGM);
|
||||
void BtlController_EmitFaintingCry(u8 bufferId);
|
||||
void BtlController_EmitIntroSlide(u8 bufferId, u8 terrainId);
|
||||
void BtlController_EmitIntroTrainerBallThrow(u8 bufferId);
|
||||
void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 arg2);
|
||||
void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 flags);
|
||||
void BtlController_EmitHidePartyStatusSummary(u8 bufferId);
|
||||
void BtlController_EmitEndBounceEffect(u8 bufferId);
|
||||
void BtlController_EmitSpriteInvisibility(u8 bufferId, bool8 isInvisible);
|
||||
|
||||
@@ -18,7 +18,6 @@ void DecompressTrainerFrontPic(u16 frontPicId, u8 battlerId);
|
||||
void DecompressTrainerBackPic(u16 backPicId, u8 battlerId);
|
||||
void BattleGfxSfxDummy3(u8 gender);
|
||||
void FreeTrainerFrontPicPalette(u16 frontPicId);
|
||||
void sub_805DFFC(void);
|
||||
bool8 BattleLoadAllHealthBoxesGfx(u8 state);
|
||||
void LoadBattleBarGfx(u8 arg0);
|
||||
bool8 BattleInitAllSprites(u8 *state1, u8 *battlerId);
|
||||
|
||||
@@ -7,7 +7,8 @@ struct TrainerMoney
|
||||
u8 value;
|
||||
};
|
||||
|
||||
struct UnknownPokemonStruct4
|
||||
// For displaying a multi battle partner's Pokémon in the party menu
|
||||
struct MultiPartnerMenuPokemon
|
||||
{
|
||||
/*0x00*/ u16 species;
|
||||
/*0x02*/ u16 heldItem;
|
||||
@@ -46,8 +47,6 @@ struct UnknownPokemonStruct4
|
||||
void CB2_InitBattle(void);
|
||||
void BattleMainCB2(void);
|
||||
void CB2_QuitRecordedBattle(void);
|
||||
void sub_8038528(struct Sprite* sprite);
|
||||
void sub_8038A04(void); // unused
|
||||
void VBlankCB_Battle(void);
|
||||
void SpriteCB_VsLetterDummy(struct Sprite *sprite);
|
||||
void SpriteCB_VsLetterInit(struct Sprite *sprite);
|
||||
@@ -59,13 +58,12 @@ void SpriteCallbackDummy_2(struct Sprite *sprite);
|
||||
void SpriteCB_FaintOpponentMon(struct Sprite *sprite);
|
||||
void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite);
|
||||
void SpriteCb_HideAsMoveTarget(struct Sprite *sprite);
|
||||
void SpriteCb_OpponentMonFromBall(struct Sprite *sprite);
|
||||
void SpriteCB_OpponentMonFromBall(struct Sprite *sprite);
|
||||
void SpriteCB_BattleSpriteStartSlideLeft(struct Sprite *sprite);
|
||||
void SpriteCB_FaintSlideAnim(struct Sprite *sprite);
|
||||
void DoBounceEffect(u8 battlerId, u8 b, s8 c, s8 d);
|
||||
void EndBounceEffect(u8 battlerId, bool8 b);
|
||||
void SpriteCb_PlayerMonFromBall(struct Sprite *sprite);
|
||||
void sub_8039E60(struct Sprite *sprite);
|
||||
void SpriteCB_PlayerMonFromBall(struct Sprite *sprite);
|
||||
void SpriteCB_TrainerThrowObject(struct Sprite *sprite);
|
||||
void sub_8039E9C(struct Sprite *sprite);
|
||||
void BeginBattleIntroDummy(void);
|
||||
@@ -82,9 +80,9 @@ void RunBattleScriptCommands(void);
|
||||
bool8 TryRunFromBattle(u8 battlerId);
|
||||
void SpecialStatusesClear(void);
|
||||
|
||||
extern struct UnknownPokemonStruct4 gMultiPartnerParty[MULTI_PARTY_SIZE];
|
||||
extern struct MultiPartnerMenuPokemon gMultiPartnerParty[MULTI_PARTY_SIZE];
|
||||
|
||||
extern const struct SpriteTemplate gUnknown_0831AC88;
|
||||
extern const struct SpriteTemplate gUnusedBattleInitSprite;
|
||||
extern const struct OamData gOamData_BattleSpriteOpponentSide;
|
||||
extern const struct OamData gOamData_BattleSpritePlayerSide;
|
||||
extern const u8 gTypeEffectiveness[336];
|
||||
|
||||
@@ -63,7 +63,6 @@ void CB2_PyramidBagMenuFromStartMenu(void);
|
||||
void CB2_ReturnToPyramidBagMenu(void);
|
||||
void UpdatePyramidBagList(void);
|
||||
void UpdatePyramidBagCursorPos(void);
|
||||
void sub_81C4EFC(void);
|
||||
void GoToBattlePyramidBagMenu(u8 location, void (*exitCallback)(void));
|
||||
void Task_CloseBattlePyramidBagMessage(u8 taskId);
|
||||
void TryStoreHeldItemsInPyramidBag(void);
|
||||
|
||||
@@ -2,9 +2,11 @@
|
||||
#define GUARD_BATTLE_SCRIPT_COMMANDS_H
|
||||
|
||||
#include "constants/pokemon.h"
|
||||
#include "constants/battle_script_commands.h"
|
||||
|
||||
#define WINDOW_CLEAR 0x1
|
||||
#define WINDOW_x80 0x80
|
||||
// Arguments for 'flags' in HandleBattleWindow
|
||||
#define WINDOW_CLEAR (1 << 0)
|
||||
#define WINDOW_BG1 (1 << 7)
|
||||
|
||||
void AI_CalcDmg(u8 battlerIdAtk, u8 battlerIdDef);
|
||||
u8 TypeCalc(u16 move, u8 battlerIdAtk, u8 battlerIdDef);
|
||||
|
||||
+59
-48
@@ -11,8 +11,7 @@ void GetBg0TilesDst(u16 **tilemap, u16 **tileset);
|
||||
|
||||
extern const struct SpritePalette gSpritePalette_Pokeball;
|
||||
|
||||
enum // TRANSITION_MUGSHOT
|
||||
{
|
||||
enum {
|
||||
MUGSHOT_SIDNEY,
|
||||
MUGSHOT_PHOEBE,
|
||||
MUGSHOT_GLACIA,
|
||||
@@ -21,52 +20,64 @@ enum // TRANSITION_MUGSHOT
|
||||
MUGSHOTS_COUNT
|
||||
};
|
||||
|
||||
// credits for the names go to Dyskinesia, Tetrable and Farore
|
||||
// names are naturally subject to change
|
||||
enum {
|
||||
B_TRANSITION_BLUR,
|
||||
B_TRANSITION_SWIRL,
|
||||
B_TRANSITION_SHUFFLE,
|
||||
B_TRANSITION_BIG_POKEBALL,
|
||||
B_TRANSITION_POKEBALLS_TRAIL,
|
||||
B_TRANSITION_CLOCKWISE_BLACKFADE,
|
||||
B_TRANSITION_RIPPLE,
|
||||
B_TRANSITION_WAVE,
|
||||
B_TRANSITION_SLICE,
|
||||
B_TRANSITION_WHITEFADE,
|
||||
B_TRANSITION_GRID_SQUARES,
|
||||
B_TRANSITION_SHARDS,
|
||||
B_TRANSITION_SIDNEY,
|
||||
B_TRANSITION_PHOEBE,
|
||||
B_TRANSITION_GLACIA,
|
||||
B_TRANSITION_DRAKE,
|
||||
B_TRANSITION_CHAMPION,
|
||||
B_TRANSITION_AQUA, // Here below added in Emerald
|
||||
B_TRANSITION_MAGMA,
|
||||
B_TRANSITION_REGICE,
|
||||
B_TRANSITION_REGISTEEL,
|
||||
B_TRANSITION_REGIROCK,
|
||||
B_TRANSITION_KYOGRE,
|
||||
B_TRANSITION_GROUDON,
|
||||
B_TRANSITION_RAYQUAZA,
|
||||
B_TRANSITION_SHRED_SPLIT,
|
||||
B_TRANSITION_BLACKHOLE1,
|
||||
B_TRANSITION_BLACKHOLE2,
|
||||
B_TRANSITION_RECTANGULAR_SPIRAL,
|
||||
B_TRANSITION_FRONTIER_LOGO_WIGGLE,
|
||||
B_TRANSITION_FRONTIER_LOGO_WAVE,
|
||||
B_TRANSITION_FRONTIER_SQUARES,
|
||||
B_TRANSITION_FRONTIER_SQUARES_SCROLL,
|
||||
B_TRANSITION_FRONTIER_SQUARES_SPIRAL,
|
||||
B_TRANSITION_FRONTIER_CIRCLES_MEET,
|
||||
B_TRANSITION_FRONTIER_CIRCLES_CROSS,
|
||||
B_TRANSITION_FRONTIER_CIRCLES_ASYMMETRIC_SPIRAL,
|
||||
B_TRANSITION_FRONTIER_CIRCLES_SYMMETRIC_SPIRAL,
|
||||
B_TRANSITION_FRONTIER_CIRCLES_MEET_IN_SEQ,
|
||||
B_TRANSITION_FRONTIER_CIRCLES_CROSS_IN_SEQ,
|
||||
B_TRANSITION_FRONTIER_CIRCLES_ASYMMETRIC_SPIRAL_IN_SEQ,
|
||||
B_TRANSITION_FRONTIER_CIRCLES_SYMMETRIC_SPIRAL_IN_SEQ,
|
||||
B_TRANSITION_COUNT
|
||||
};
|
||||
|
||||
#define B_TRANSITION_BLUR 0
|
||||
#define B_TRANSITION_SWIRL 1
|
||||
#define B_TRANSITION_SHUFFLE 2
|
||||
#define B_TRANSITION_BIG_POKEBALL 3
|
||||
#define B_TRANSITION_POKEBALLS_TRAIL 4
|
||||
#define B_TRANSITION_CLOCKWISE_BLACKFADE 5
|
||||
#define B_TRANSITION_RIPPLE 6
|
||||
#define B_TRANSITION_WAVE 7
|
||||
#define B_TRANSITION_SLICE 8
|
||||
#define B_TRANSITION_WHITEFADE 9
|
||||
#define B_TRANSITION_GRID_SQUARES 10
|
||||
#define B_TRANSITION_SHARDS 11
|
||||
#define B_TRANSITION_SIDNEY 12
|
||||
#define B_TRANSITION_PHOEBE 13
|
||||
#define B_TRANSITION_GLACIA 14
|
||||
#define B_TRANSITION_DRAKE 15
|
||||
#define B_TRANSITION_CHAMPION 16
|
||||
// added in Emerald
|
||||
#define B_TRANSITION_AQUA 17
|
||||
#define B_TRANSITION_MAGMA 18
|
||||
#define B_TRANSITION_REGICE 19
|
||||
#define B_TRANSITION_REGISTEEL 20
|
||||
#define B_TRANSITION_REGIROCK 21
|
||||
#define B_TRANSITION_KYOGRE 22
|
||||
#define B_TRANSITION_GROUDON 23
|
||||
#define B_TRANSITION_RAYQUAZA 24
|
||||
#define B_TRANSITION_SHRED_SPLIT 25
|
||||
#define B_TRANSITION_BLACKHOLE1 26
|
||||
#define B_TRANSITION_BLACKHOLE2 27
|
||||
#define B_TRANSITION_RECTANGULAR_SPIRAL 28
|
||||
#define B_TRANSITION_FRONTIER_LOGO_WIGGLE 29
|
||||
#define B_TRANSITION_FRONTIER_LOGO_WAVE 30
|
||||
#define B_TRANSITION_FRONTIER_SQUARES 31
|
||||
#define B_TRANSITION_FRONTIER_SQUARES_SCROLL 32
|
||||
#define B_TRANSITION_FRONTIER_SQUARES_SPIRAL 33
|
||||
#define B_TRANSITION_FRONTIER_CIRCLES_MEET 34
|
||||
#define B_TRANSITION_FRONTIER_CIRCLES_CROSS 35
|
||||
#define B_TRANSITION_FRONTIER_CIRCLES_ASYMMETRIC_SPIRAL 36
|
||||
#define B_TRANSITION_FRONTIER_CIRCLES_SYMMETRIC_SPIRAL 37
|
||||
#define B_TRANSITION_FRONTIER_CIRCLES_MEET_IN_SEQ 38
|
||||
#define B_TRANSITION_FRONTIER_CIRCLES_CROSS_IN_SEQ 39
|
||||
#define B_TRANSITION_FRONTIER_CIRCLES_ASYMMETRIC_SPIRAL_IN_SEQ 40
|
||||
#define B_TRANSITION_FRONTIER_CIRCLES_SYMMETRIC_SPIRAL_IN_SEQ 41
|
||||
#define B_TRANSITION_COUNT 42
|
||||
// IDs for GetSpecialBattleTransition
|
||||
enum {
|
||||
B_TRANSITION_GROUP_B_TOWER,
|
||||
B_TRANSITION_GROUP_B_DOME = 3,
|
||||
B_TRANSITION_GROUP_B_PALACE,
|
||||
B_TRANSITION_GROUP_B_ARENA,
|
||||
B_TRANSITION_GROUP_B_FACTORY,
|
||||
B_TRANSITION_GROUP_B_PIKE,
|
||||
B_TRANSITION_GROUP_B_PYRAMID = 10,
|
||||
B_TRANSITION_GROUP_TRAINER_HILL,
|
||||
B_TRANSITION_GROUP_SECRET_BASE,
|
||||
B_TRANSITION_GROUP_E_READER,
|
||||
};
|
||||
|
||||
#endif // GUARD_BATTLE_TRANSITION_H
|
||||
|
||||
+31
-27
@@ -6,39 +6,43 @@
|
||||
#define MOVE_LIMITATION_DISABLED (1 << 2)
|
||||
#define MOVE_LIMITATION_TORMENTED (1 << 3)
|
||||
#define MOVE_LIMITATION_TAUNT (1 << 4)
|
||||
#define MOVE_LIMITATION_IMPRISON (1 << 5)
|
||||
#define MOVE_LIMITATION_IMPRISON (1 << 5)
|
||||
#define MOVE_LIMITATIONS_ALL 0xFF
|
||||
|
||||
#define ABILITYEFFECT_ON_SWITCHIN 0x0
|
||||
#define ABILITYEFFECT_ENDTURN 0x1
|
||||
#define ABILITYEFFECT_MOVES_BLOCK 0x2
|
||||
#define ABILITYEFFECT_ABSORBING 0x3
|
||||
#define ABILITYEFFECT_ON_DAMAGE 0x4
|
||||
#define ABILITYEFFECT_IMMUNITY 0x5
|
||||
#define ABILITYEFFECT_FORECAST 0x6
|
||||
#define ABILITYEFFECT_SYNCHRONIZE 0x7
|
||||
#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8
|
||||
#define ABILITYEFFECT_INTIMIDATE1 0x9
|
||||
#define ABILITYEFFECT_INTIMIDATE2 0xA
|
||||
#define ABILITYEFFECT_TRACE 0xB
|
||||
#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC
|
||||
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 0xD
|
||||
#define ABILITYEFFECT_FIELD_SPORT 0xE
|
||||
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 0xF
|
||||
#define ABILITYEFFECT_COUNT_OTHER_SIDE 0x10
|
||||
#define ABILITYEFFECT_COUNT_BATTLER_SIDE 0x11
|
||||
#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
|
||||
#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
|
||||
#define ABILITYEFFECT_MUD_SPORT 0xFD
|
||||
#define ABILITYEFFECT_WATER_SPORT 0xFE
|
||||
#define ABILITYEFFECT_SWITCH_IN_WEATHER 0xFF
|
||||
#define ABILITYEFFECT_ON_SWITCHIN 0
|
||||
#define ABILITYEFFECT_ENDTURN 1
|
||||
#define ABILITYEFFECT_MOVES_BLOCK 2
|
||||
#define ABILITYEFFECT_ABSORBING 3
|
||||
#define ABILITYEFFECT_ON_DAMAGE 4
|
||||
#define ABILITYEFFECT_IMMUNITY 5
|
||||
#define ABILITYEFFECT_FORECAST 6
|
||||
#define ABILITYEFFECT_SYNCHRONIZE 7
|
||||
#define ABILITYEFFECT_ATK_SYNCHRONIZE 8
|
||||
#define ABILITYEFFECT_INTIMIDATE1 9
|
||||
#define ABILITYEFFECT_INTIMIDATE2 10
|
||||
#define ABILITYEFFECT_TRACE 11
|
||||
#define ABILITYEFFECT_CHECK_OTHER_SIDE 12
|
||||
#define ABILITYEFFECT_CHECK_BATTLER_SIDE 13
|
||||
#define ABILITYEFFECT_FIELD_SPORT 14
|
||||
#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER 15
|
||||
#define ABILITYEFFECT_COUNT_OTHER_SIDE 16
|
||||
#define ABILITYEFFECT_COUNT_BATTLER_SIDE 17
|
||||
#define ABILITYEFFECT_COUNT_ON_FIELD 18
|
||||
#define ABILITYEFFECT_CHECK_ON_FIELD 19
|
||||
#define ABILITYEFFECT_MUD_SPORT 253
|
||||
#define ABILITYEFFECT_WATER_SPORT 254
|
||||
#define ABILITYEFFECT_SWITCH_IN_WEATHER 255
|
||||
|
||||
#define ABILITY_ON_OPPOSING_FIELD(battlerId, abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, battlerId, abilityId, 0, 0))
|
||||
#define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0))
|
||||
#define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0))
|
||||
|
||||
#define ITEMEFFECT_ON_SWITCH_IN 0x0
|
||||
#define ITEMEFFECT_MOVE_END 0x3
|
||||
#define ITEMEFFECT_KINGSROCK_SHELLBELL 0x4
|
||||
// For the first argument of ItemBattleEffects, to deteremine which block of item effects to try
|
||||
#define ITEMEFFECT_ON_SWITCH_IN 0
|
||||
#define ITEMEFFECT_NORMAL 1
|
||||
#define ITEMEFFECT_DUMMY 2 // Unused, empty
|
||||
#define ITEMEFFECT_MOVE_END 3
|
||||
#define ITEMEFFECT_KINGSROCK_SHELLBELL 4
|
||||
|
||||
#define WEATHER_HAS_EFFECT ((!ABILITY_ON_FIELD(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD(ABILITY_AIR_LOCK)))
|
||||
#define WEATHER_HAS_EFFECT2 ((!ABILITY_ON_FIELD2(ABILITY_CLOUD_NINE) && !ABILITY_ON_FIELD2(ABILITY_AIR_LOCK)))
|
||||
|
||||
@@ -306,4 +306,56 @@
|
||||
#define B_WAIT_TIME_MED 48
|
||||
#define B_WAIT_TIME_SHORT 32
|
||||
|
||||
#define CASTFORM_NORMAL 0
|
||||
#define CASTFORM_FIRE 1
|
||||
#define CASTFORM_WATER 2
|
||||
#define CASTFORM_ICE 3
|
||||
#define NUM_CASTFORM_FORMS 4
|
||||
#define CASTFORM_SUBSTITUTE (1 << 7)
|
||||
|
||||
#define FLEE_ITEM 1
|
||||
#define FLEE_ABILITY 2
|
||||
|
||||
#define B_WIN_TYPE_NORMAL 0
|
||||
#define B_WIN_TYPE_ARENA 1
|
||||
|
||||
// Window Ids for gStandardBattleWindowTemplates / gBattleArenaWindowTemplates
|
||||
#define B_WIN_MSG 0
|
||||
#define B_WIN_ACTION_PROMPT 1 // "What will {x} do?"
|
||||
#define B_WIN_ACTION_MENU 2 // "Fight/Pokémon/Bag/Run" menu
|
||||
#define B_WIN_MOVE_NAME_1 3 // Top left
|
||||
#define B_WIN_MOVE_NAME_2 4 // Top right
|
||||
#define B_WIN_MOVE_NAME_3 5 // Bottom left
|
||||
#define B_WIN_MOVE_NAME_4 6 // Bottom right
|
||||
#define B_WIN_PP 7
|
||||
#define B_WIN_DUMMY 8
|
||||
#define B_WIN_PP_REMAINING 9
|
||||
#define B_WIN_MOVE_TYPE 10
|
||||
#define B_WIN_SWITCH_PROMPT 11 // "Switch which?"
|
||||
#define B_WIN_YESNO 12
|
||||
#define B_WIN_LEVEL_UP_BOX 13
|
||||
#define B_WIN_LEVEL_UP_BANNER 14
|
||||
#define B_WIN_VS_PLAYER 15
|
||||
#define B_WIN_VS_OPPONENT 16
|
||||
#define B_WIN_VS_MULTI_PLAYER_1 17
|
||||
#define B_WIN_VS_MULTI_PLAYER_2 18
|
||||
#define B_WIN_VS_MULTI_PLAYER_3 19
|
||||
#define B_WIN_VS_MULTI_PLAYER_4 20
|
||||
#define B_WIN_VS_OUTCOME_DRAW 21
|
||||
#define B_WIN_VS_OUTCOME_LEFT 22
|
||||
#define B_WIN_VS_OUTCOME_RIGHT 23
|
||||
|
||||
// The following are duplicate id values for windows that Battle Arena uses differently.
|
||||
#define ARENA_WIN_PLAYER_NAME 15
|
||||
#define ARENA_WIN_VS 16
|
||||
#define ARENA_WIN_OPPONENT_NAME 17
|
||||
#define ARENA_WIN_MIND 18
|
||||
#define ARENA_WIN_SKILL 19
|
||||
#define ARENA_WIN_BODY 20
|
||||
#define ARENA_WIN_JUDGEMENT_TITLE 21
|
||||
#define ARENA_WIN_JUDGEMENT_TEXT 22
|
||||
|
||||
// Flag for BattlePutTextOnWindow. Never set
|
||||
#define B_WIN_COPYTOVRAM (1 << 7)
|
||||
|
||||
#endif // GUARD_CONSTANTS_BATTLE_H
|
||||
|
||||
@@ -318,7 +318,7 @@
|
||||
#define SOUND_PAN_TARGET 63
|
||||
|
||||
// move background ids
|
||||
#define BG_DARK_ 0 // the same as BG_DARK but is unused
|
||||
#define BG_NONE 0 // the same as BG_DARK but is unused
|
||||
#define BG_DARK 1
|
||||
#define BG_GHOST 2
|
||||
#define BG_PSYCHIC 3
|
||||
@@ -395,6 +395,9 @@
|
||||
// Tasks with return values often assign them to gBattleAnimArgs[7].
|
||||
#define ARG_RET_ID 7
|
||||
|
||||
// For createsprite macro to use internally
|
||||
#define ANIMSPRITE_IS_TARGET (1 << 7)
|
||||
|
||||
// Trapping Wrap-like moves end turn animation.
|
||||
#define TRAP_ANIM_BIND 0
|
||||
#define TRAP_ANIM_WRAP 0
|
||||
|
||||
@@ -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
|
||||
@@ -40,8 +53,8 @@
|
||||
#define BS_EFFECT_BATTLER 2
|
||||
#define BS_FAINTED 3
|
||||
#define BS_ATTACKER_WITH_PARTNER 4 // for Cmd_updatestatusicon
|
||||
#define BS_UNK_5 5
|
||||
#define BS_UNK_6 6
|
||||
#define BS_FAINTED_LINK_MULTIPLE_1 5
|
||||
#define BS_FAINTED_LINK_MULTIPLE_2 6
|
||||
#define BS_BATTLER_0 7
|
||||
#define BS_ATTACKER_SIDE 8 // for Cmd_jumpifability
|
||||
#define BS_NOT_ATTACKER_SIDE 9 // for Cmd_jumpifability
|
||||
|
||||
+1
-1
@@ -294,7 +294,7 @@ struct ContestResources
|
||||
u8 * contestBgTilemaps[CONTESTANT_COUNT];
|
||||
void * boxBlinkTiles1;
|
||||
void * boxBlinkTiles2;
|
||||
void * field_3c;
|
||||
void * animBgTileBuffer;
|
||||
};
|
||||
|
||||
#define eContest (*gContestResources->contest)
|
||||
|
||||
@@ -66,7 +66,7 @@ enum {
|
||||
REMATCH_TRENT,
|
||||
REMATCH_SAWYER,
|
||||
REMATCH_KIRA_AND_DAN,
|
||||
REMATCH_WALLY_3, // Entries above WALLY are considered normal trainers, from Wally below are special trainers
|
||||
REMATCH_WALLY_VR, // Entries above WALLY are considered normal trainers, from Wally below are special trainers
|
||||
REMATCH_ROXANNE,
|
||||
REMATCH_BRAWLY,
|
||||
REMATCH_WATTSON,
|
||||
@@ -75,7 +75,7 @@ enum {
|
||||
REMATCH_WINONA,
|
||||
REMATCH_TATE_AND_LIZA,
|
||||
REMATCH_JUAN,
|
||||
REMATCH_SIDNEY, // Entries below SIDNEY are considered part of REMATCH_ELITE_FOUR_ENTRIES.
|
||||
REMATCH_SIDNEY, // Entries from SIDNEY below are considered part of REMATCH_ELITE_FOUR_ENTRIES.
|
||||
REMATCH_PHOEBE,
|
||||
REMATCH_GLACIA,
|
||||
REMATCH_DRAKE,
|
||||
@@ -83,7 +83,7 @@ enum {
|
||||
REMATCH_TABLE_ENTRIES // The total number of rematch entries. Must be last in enum
|
||||
};
|
||||
|
||||
#define REMATCH_SPECIAL_TRAINER_START REMATCH_WALLY_3
|
||||
#define REMATCH_SPECIAL_TRAINER_START REMATCH_WALLY_VR
|
||||
#define REMATCH_ELITE_FOUR_ENTRIES REMATCH_SIDNEY
|
||||
|
||||
void UpdateGymLeaderRematch(void);
|
||||
|
||||
+11
-2
@@ -76,13 +76,22 @@ struct PokemonSubstruct3
|
||||
/* 0x0B */ u32 eventLegal:1; // controls Mew & Deoxys obedience; if set, Pokémon is a fateful encounter in Gen 4+; set for in-game event island legendaries, some distributed events, and Pokémon from XD: Gale of Darkness.
|
||||
};
|
||||
|
||||
// Number of bytes in the largest Pokémon substruct.
|
||||
// They are assumed to be the same size, and will be padded to
|
||||
// the largest size by the union.
|
||||
// By default they are all 12 bytes.
|
||||
#define NUM_SUBSTRUCT_BYTES (max(sizeof(struct PokemonSubstruct0), \
|
||||
max(sizeof(struct PokemonSubstruct1), \
|
||||
max(sizeof(struct PokemonSubstruct2), \
|
||||
sizeof(struct PokemonSubstruct3)))))
|
||||
|
||||
union PokemonSubstruct
|
||||
{
|
||||
struct PokemonSubstruct0 type0;
|
||||
struct PokemonSubstruct1 type1;
|
||||
struct PokemonSubstruct2 type2;
|
||||
struct PokemonSubstruct3 type3;
|
||||
u16 raw[6];
|
||||
u16 raw[NUM_SUBSTRUCT_BYTES / 2]; // /2 because it's u16, not u8
|
||||
};
|
||||
|
||||
struct BoxPokemon
|
||||
@@ -102,7 +111,7 @@ struct BoxPokemon
|
||||
|
||||
union
|
||||
{
|
||||
u32 raw[12];
|
||||
u32 raw[(NUM_SUBSTRUCT_BYTES * 4) / 4]; // *4 because there are 4 substructs, /4 because it's u32, not u8
|
||||
union PokemonSubstruct substructs[4];
|
||||
} secure;
|
||||
};
|
||||
|
||||
@@ -8,8 +8,8 @@ extern u8 gRecordedBattleMultiplayerId;
|
||||
#define B_RECORD_MODE_RECORDING 1
|
||||
#define B_RECORD_MODE_PLAYBACK 2
|
||||
|
||||
void RecordedBattle_Init(u8 arg0);
|
||||
void sub_8184E58(void);
|
||||
void RecordedBattle_Init(u8 mode);
|
||||
void RecordedBattle_SetTrainerInfo(void);
|
||||
void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action);
|
||||
void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear);
|
||||
u8 RecordedBattle_GetBattlerAction(u8 battlerId);
|
||||
@@ -23,15 +23,15 @@ u8 GetRecordedBattleFronterBrainSymbol(void);
|
||||
void RecordedBattle_SaveParties(void);
|
||||
u8 GetActiveBattlerLinkPlayerGender(void);
|
||||
void RecordedBattle_ClearFrontierPassFlag(void);
|
||||
void RecordedBattle_SetFrontierPassFlagFromHword(u16 arg0);
|
||||
void RecordedBattle_SetFrontierPassFlagFromHword(u16 flags);
|
||||
u8 RecordedBattle_GetFrontierPassFlag(void);
|
||||
u8 GetBattleSceneInRecordedBattle(void);
|
||||
u8 GetTextSpeedInRecordedBattle(void);
|
||||
void RecordedBattle_CopyBattlerMoves(void);
|
||||
void sub_818603C(u8 arg0);
|
||||
void RecordedBattle_CheckMovesetChanges(u8 mode);
|
||||
u32 GetAiScriptsInRecordedBattle(void);
|
||||
void sub_8186444(void);
|
||||
bool8 sub_8186450(void);
|
||||
void RecordedBattle_SetPlaybackFinished(void);
|
||||
bool8 RecordedBattle_CanStopPlayback(void);
|
||||
void GetRecordedBattleRecordMixFriendName(u8 *dst);
|
||||
u8 GetRecordedBattleRecordMixFriendClass(void);
|
||||
u8 GetRecordedBattleApprenticeId(void);
|
||||
|
||||
@@ -334,7 +334,7 @@ void BattleAI_SetupAIData(u8 defaultScoreMoves)
|
||||
defaultScoreMoves >>= 1;
|
||||
}
|
||||
|
||||
moveLimitations = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
|
||||
moveLimitations = CheckMoveLimitations(gActiveBattler, 0, MOVE_LIMITATIONS_ALL);
|
||||
|
||||
// Ignore moves that aren't possible to use.
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
|
||||
@@ -22,7 +22,7 @@ static bool8 ShouldSwitchIfPerishSong(void)
|
||||
&& gDisableStructs[gActiveBattler].perishSongTimer == 0)
|
||||
{
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
@@ -106,7 +106,7 @@ static bool8 ShouldSwitchIfWonderGuard(void)
|
||||
{
|
||||
// We found a mon.
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -206,7 +206,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void)
|
||||
{
|
||||
// we found a mon.
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -226,13 +226,13 @@ static bool8 ShouldSwitchIfNaturalCure(void)
|
||||
if ((gLastLandedMoves[gActiveBattler] == 0 || gLastLandedMoves[gActiveBattler] == 0xFFFF) && Random() & 1)
|
||||
{
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
else if (gBattleMoves[gLastLandedMoves[gActiveBattler]].power == 0 && Random() & 1)
|
||||
{
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -244,7 +244,7 @@ static bool8 ShouldSwitchIfNaturalCure(void)
|
||||
if (Random() & 1)
|
||||
{
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -412,7 +412,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent)
|
||||
if (moveFlags & MOVE_RESULT_SUPER_EFFECTIVE && Random() % moduloPercent == 0)
|
||||
{
|
||||
*(gBattleStruct->AI_monToSwitchIntoId + gActiveBattler) = i;
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
@@ -597,7 +597,7 @@ void AI_TrySwitchOrUseItem(void)
|
||||
}
|
||||
}
|
||||
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, (gActiveBattler ^ BIT_SIDE) << 8);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, (gActiveBattler ^ BIT_SIDE) << 8);
|
||||
}
|
||||
|
||||
static void ModulateByTypeEffectiveness(u8 atkType, u8 defType1, u8 defType2, u8 *var)
|
||||
@@ -923,7 +923,7 @@ static bool8 ShouldUseItem(void)
|
||||
|
||||
if (shouldUse)
|
||||
{
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_ITEM, 0);
|
||||
*(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2) = item;
|
||||
gBattleResources->battleHistory->trainerItems[i] = 0;
|
||||
return shouldUse;
|
||||
|
||||
+310
-1906
File diff suppressed because it is too large
Load Diff
@@ -3250,7 +3250,7 @@ void AnimTask_HeartsBackground(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
AnimLoadCompressedBgGfx(animBg.bgId, &gBattleAnimBgImage_Attract, animBg.tilesOffset);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_Attract, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_Attract, FALSE);
|
||||
LoadCompressedPalette(&gBattleAnimBgPalette_Attract, animBg.paletteId * 16, 32);
|
||||
gTasks[taskId].func = AnimTask_HeartsBackground_Step;
|
||||
}
|
||||
@@ -3328,11 +3328,11 @@ void AnimTask_ScaryFace(u8 taskId)
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
if (IsContest())
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceContest, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceContest, FALSE);
|
||||
else if (GetBattlerSide(gBattleAnimTarget) == B_SIDE_OPPONENT)
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFacePlayer, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFacePlayer, FALSE);
|
||||
else
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceOpponent, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimBgTilemap_ScaryFaceOpponent, FALSE);
|
||||
|
||||
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_ScaryFace, animBg.tilesOffset);
|
||||
LoadCompressedPalette(gBattleAnimBgPalette_ScaryFace, animBg.paletteId * 16, 32);
|
||||
|
||||
@@ -2388,7 +2388,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId)
|
||||
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
|
||||
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, FALSE);
|
||||
if (IsContest())
|
||||
{
|
||||
gBattle_BG1_X = -56;
|
||||
@@ -2569,7 +2569,7 @@ void AnimTask_DoomDesireLightBeam(u8 taskId)
|
||||
SetAnimBgAttribute(1, BG_ANIM_CHAR_BASE_BLOCK, 1);
|
||||
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, &gBattleAnimMaskTilemap_LightBeam, FALSE);
|
||||
if (IsContest())
|
||||
{
|
||||
gBattle_BG1_X = -56;
|
||||
|
||||
@@ -1000,7 +1000,7 @@ void AnimTask_HazeScrollingFog(u8 taskId)
|
||||
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, FALSE);
|
||||
LoadPalette(&gFogPalette, animBg.paletteId * 16, 32);
|
||||
|
||||
gTasks[taskId].func = AnimTask_HazeScrollingFog_Step;
|
||||
@@ -1105,7 +1105,7 @@ void AnimTask_LoadMistTiles(u8 taskId)
|
||||
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimFogTilemap, FALSE);
|
||||
LoadPalette(&gFogPalette, animBg.paletteId * 16, 32);
|
||||
|
||||
gTasks[taskId].data[15] = -1;
|
||||
|
||||
+38
-37
@@ -37,15 +37,15 @@ static void sub_80A8D78(struct Task *task, u8 taskId);
|
||||
EWRAM_DATA static union AffineAnimCmd *gAnimTaskAffineAnim = NULL;
|
||||
|
||||
// Const rom data
|
||||
static const struct UCoords8 sBattlerCoords[][4] =
|
||||
static const struct UCoords8 sBattlerCoords[][MAX_BATTLERS_COUNT] =
|
||||
{
|
||||
{
|
||||
{ // Single battle
|
||||
{ 72, 80 },
|
||||
{ 176, 40 },
|
||||
{ 48, 40 },
|
||||
{ 112, 80 },
|
||||
},
|
||||
{
|
||||
{ // Double battle
|
||||
{ 32, 80 },
|
||||
{ 200, 40 },
|
||||
{ 90, 88 },
|
||||
@@ -54,29 +54,29 @@ static const struct UCoords8 sBattlerCoords[][4] =
|
||||
};
|
||||
|
||||
// One entry for each of the four Castform forms.
|
||||
const struct MonCoords gCastformFrontSpriteCoords[] =
|
||||
const struct MonCoords gCastformFrontSpriteCoords[NUM_CASTFORM_FORMS] =
|
||||
{
|
||||
{ .size = 0x44, .y_offset = 17 }, // NORMAL
|
||||
{ .size = 0x66, .y_offset = 9 }, // SUN
|
||||
{ .size = 0x46, .y_offset = 9 }, // RAIN
|
||||
{ .size = 0x86, .y_offset = 8 }, // HAIL
|
||||
[CASTFORM_NORMAL] = { .size = 0x44, .y_offset = 17 },
|
||||
[CASTFORM_FIRE] = { .size = 0x66, .y_offset = 9 },
|
||||
[CASTFORM_WATER] = { .size = 0x46, .y_offset = 9 },
|
||||
[CASTFORM_ICE] = { .size = 0x86, .y_offset = 8 },
|
||||
};
|
||||
|
||||
static const u8 sCastformElevations[] =
|
||||
static const u8 sCastformElevations[NUM_CASTFORM_FORMS] =
|
||||
{
|
||||
13, // NORMAL
|
||||
14, // SUN
|
||||
13, // RAIN
|
||||
13, // HAIL
|
||||
[CASTFORM_NORMAL] = 13,
|
||||
[CASTFORM_FIRE] = 14,
|
||||
[CASTFORM_WATER] = 13,
|
||||
[CASTFORM_ICE] = 13,
|
||||
};
|
||||
|
||||
// Y position of the backsprite for each of the four Castform forms.
|
||||
static const u8 sCastformBackSpriteYCoords[] =
|
||||
static const u8 sCastformBackSpriteYCoords[NUM_CASTFORM_FORMS] =
|
||||
{
|
||||
0, // NORMAL
|
||||
0, // SUN
|
||||
0, // RAIN
|
||||
0, // HAIL
|
||||
[CASTFORM_NORMAL] = 0,
|
||||
[CASTFORM_FIRE] = 0,
|
||||
[CASTFORM_WATER] = 0,
|
||||
[CASTFORM_ICE] = 0,
|
||||
};
|
||||
|
||||
// Placeholders for pokemon sprites to be created for a move animation effect (e.g. Role Play / Snatch)
|
||||
@@ -853,8 +853,8 @@ void GetBattleAnimBg1Data(struct BattleAnimBgData *out)
|
||||
{
|
||||
if (IsContest())
|
||||
{
|
||||
out->bgTiles = gUnknown_0202305C;
|
||||
out->bgTilemap = (u16 *)gUnknown_02023060;
|
||||
out->bgTiles = gBattleAnimBgTileBuffer;
|
||||
out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
|
||||
out->paletteId = 14;
|
||||
out->bgId = 1;
|
||||
out->tilesOffset = 0;
|
||||
@@ -862,8 +862,8 @@ void GetBattleAnimBg1Data(struct BattleAnimBgData *out)
|
||||
}
|
||||
else
|
||||
{
|
||||
out->bgTiles = gUnknown_0202305C;
|
||||
out->bgTilemap = (u16 *)gUnknown_02023060;
|
||||
out->bgTiles = gBattleAnimBgTileBuffer;
|
||||
out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
|
||||
out->paletteId = 8;
|
||||
out->bgId = 1;
|
||||
out->tilesOffset = 0x200;
|
||||
@@ -875,8 +875,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
|
||||
{
|
||||
if (IsContest())
|
||||
{
|
||||
out->bgTiles = gUnknown_0202305C;
|
||||
out->bgTilemap = (u16 *)gUnknown_02023060;
|
||||
out->bgTiles = gBattleAnimBgTileBuffer;
|
||||
out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
|
||||
out->paletteId = 14;
|
||||
out->bgId = 1;
|
||||
out->tilesOffset = 0;
|
||||
@@ -888,8 +888,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
|
||||
}
|
||||
else
|
||||
{
|
||||
out->bgTiles = gUnknown_0202305C;
|
||||
out->bgTilemap = (u16 *)gUnknown_02023060;
|
||||
out->bgTiles = gBattleAnimBgTileBuffer;
|
||||
out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
|
||||
out->paletteId = 9;
|
||||
out->bgId = 2;
|
||||
out->tilesOffset = 0x300;
|
||||
@@ -899,8 +899,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
|
||||
|
||||
void sub_80A6BFC(struct BattleAnimBgData *out, u8 unused)
|
||||
{
|
||||
out->bgTiles = gUnknown_0202305C;
|
||||
out->bgTilemap = (u16 *)gUnknown_02023060;
|
||||
out->bgTiles = gBattleAnimBgTileBuffer;
|
||||
out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
|
||||
if (IsContest())
|
||||
{
|
||||
out->paletteId = 14;
|
||||
@@ -937,9 +937,9 @@ void ClearBattleAnimBg(u32 bgId)
|
||||
|
||||
void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset)
|
||||
{
|
||||
CpuFill32(0, gUnknown_0202305C, 0x2000);
|
||||
LZDecompressWram(src, gUnknown_0202305C);
|
||||
LoadBgTiles(bgId, gUnknown_0202305C, 0x2000, tilesOffset);
|
||||
CpuFill32(0, gBattleAnimBgTileBuffer, 0x2000);
|
||||
LZDecompressWram(src, gBattleAnimBgTileBuffer);
|
||||
LoadBgTiles(bgId, gBattleAnimBgTileBuffer, 0x2000, tilesOffset);
|
||||
}
|
||||
|
||||
static void InitAnimBgTilemapBuffer(u32 bgId, const void *src)
|
||||
@@ -954,12 +954,12 @@ void AnimLoadCompressedBgTilemap(u32 bgId, const void *src)
|
||||
CopyBgTilemapBufferToVram(bgId);
|
||||
}
|
||||
|
||||
void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData *unk, const void *src, u32 arg2)
|
||||
void AnimLoadCompressedBgTilemapHandleContest(struct BattleAnimBgData *data, const void *src, bool32 largeScreen)
|
||||
{
|
||||
InitAnimBgTilemapBuffer(unk->bgId, src);
|
||||
InitAnimBgTilemapBuffer(data->bgId, src);
|
||||
if (IsContest() == TRUE)
|
||||
sub_80A4720(unk->paletteId, unk->bgTilemap, 0, arg2);
|
||||
CopyBgTilemapBufferToVram(unk->bgId);
|
||||
RelocateBattleBgPal(data->paletteId, data->bgTilemap, 0, largeScreen);
|
||||
CopyBgTilemapBufferToVram(data->bgId);
|
||||
}
|
||||
|
||||
u8 GetBattleBgPaletteNum(void)
|
||||
@@ -1947,7 +1947,8 @@ void AnimTask_GetFrustrationPowerLevel(u8 taskId)
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void sub_80A8174(u8 priority)
|
||||
// Unused
|
||||
static void SetPriorityForVisibleBattlers(u8 priority)
|
||||
{
|
||||
if (IsBattlerSpriteVisible(gBattleAnimTarget))
|
||||
gSprites[gBattlerSpriteIds[gBattleAnimTarget]].oam.priority = priority;
|
||||
@@ -1959,7 +1960,7 @@ void sub_80A8174(u8 priority)
|
||||
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(gBattleAnimAttacker)]].oam.priority = priority;
|
||||
}
|
||||
|
||||
void sub_80A8278(void)
|
||||
void InitPrioritiesForVisibleBattlers(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
@@ -409,7 +409,7 @@ void AnimTask_LoadSandstormBackground(u8 taskId)
|
||||
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Sandstorm, animBg.tilesOffset);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Sandstorm, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_Sandstorm, FALSE);
|
||||
LoadCompressedPalette(gBattleAnimSpritePal_FlyingDirt, animBg.paletteId * 16, 32);
|
||||
|
||||
if (gBattleAnimArgs[0] && GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
|
||||
|
||||
@@ -331,7 +331,7 @@ void AnimTask_DrawFallingWhiteLinesOnAttacker(u8 taskId)
|
||||
spriteId = GetAnimBattlerSpriteId(ANIM_ATTACKER);
|
||||
newSpriteId = CreateInvisibleSpriteCopy(gBattleAnimAttacker, spriteId, species);
|
||||
GetBattleAnimBg1Data(&animBgData);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleAnimMaskTilemap_Curse, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleAnimMaskTilemap_Curse, FALSE);
|
||||
AnimLoadCompressedBgGfx(animBgData.bgId, gBattleAnimMaskImage_Curse, animBgData.tilesOffset);
|
||||
LoadPalette(sCurseLinesPalette, animBgData.paletteId * 16 + 1, 2);
|
||||
|
||||
@@ -470,9 +470,9 @@ static void StatsChangeAnimation_Step2(u8 taskId)
|
||||
|
||||
GetBattleAnimBg1Data(&animBgData);
|
||||
if (sAnimStatsChangeData->data[0] == 0)
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask1_Tilemap, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask1_Tilemap, FALSE);
|
||||
else
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask2_Tilemap, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBgData, gBattleStatMask2_Tilemap, FALSE);
|
||||
|
||||
AnimLoadCompressedBgGfx(animBgData.bgId, gBattleStatMask_Gfx, animBgData.tilesOffset);
|
||||
switch (sAnimStatsChangeData->data[1])
|
||||
@@ -821,7 +821,7 @@ void StartMonScrollingBgMask(u8 taskId, int unused, u16 scrollSpeed, u8 battler,
|
||||
spriteId2 = CreateInvisibleSpriteCopy(battler2, gBattlerSpriteIds[battler2], species);
|
||||
|
||||
GetBattleAnimBg1Data(&animBgData);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBgData, tilemap, 0);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBgData, tilemap, FALSE);
|
||||
AnimLoadCompressedBgGfx(animBgData.bgId, gfx, animBgData.tilesOffset);
|
||||
LoadCompressedPalette(palette, animBgData.paletteId * 16, 32);
|
||||
|
||||
|
||||
@@ -54,9 +54,8 @@ static void AnimTask_WaterSport_Step(u8);
|
||||
static void CreateWaterSportDroplet(struct Task*);
|
||||
static void CreateWaterPulseRingBubbles(struct Sprite*, int, int);
|
||||
|
||||
// Both unused
|
||||
const u8 gUnknown_8593C80[] = INCBIN_U8("graphics/unknown/unknown_593C80.4bpp");
|
||||
const u8 gUnknown_8593FFC[] = INCBIN_U8("graphics/unknown/unknown_593FFC.bin");
|
||||
static const u8 sUnusedWater_Gfx[] = INCBIN_U8("graphics/battle_anims/unused_water_gfx.4bpp");
|
||||
static const u8 sUnusedWater[] = INCBIN_U8("graphics/battle_anims/unused_water.bin");
|
||||
|
||||
static const union AnimCmd sAnim_RainDrop[] =
|
||||
{
|
||||
@@ -822,7 +821,7 @@ void AnimTask_CreateSurfWave(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_SurfContest, 1);
|
||||
AnimLoadCompressedBgTilemapHandleContest(&animBg, gBattleAnimBgTilemap_SurfContest, TRUE);
|
||||
}
|
||||
AnimLoadCompressedBgGfx(animBg.bgId, gBattleAnimBgImage_Surf, animBg.tilesOffset);
|
||||
if (gBattleAnimArgs[0] == 0)
|
||||
|
||||
+10
-13
@@ -28,7 +28,6 @@
|
||||
#include "constants/moves.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
// This file's functions.
|
||||
static void InitArenaChallenge(void);
|
||||
static void GetArenaData(void);
|
||||
static void SetArenaData(void);
|
||||
@@ -39,7 +38,6 @@ static void BufferArenaOpponentName(void);
|
||||
static void SpriteCb_JudgmentIcon(struct Sprite *sprite);
|
||||
static void ShowJudgmentSprite(u8 x, u8 y, u8 category, u8 battler);
|
||||
|
||||
// Const rom data.
|
||||
static const s8 sMindRatings[] =
|
||||
{
|
||||
[MOVE_NONE] = 0,
|
||||
@@ -501,7 +499,6 @@ static const u16 sLongStreakPrizeItems[] =
|
||||
ITEM_CHOICE_BAND,
|
||||
};
|
||||
|
||||
// code
|
||||
void CallBattleArenaFunction(void)
|
||||
{
|
||||
sArenaFunctions[gSpecialVar_0x8004]();
|
||||
@@ -537,15 +534,15 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
|
||||
gBattleTextBuff2[0] = CHAR_0;
|
||||
gBattleTextBuff2[1] = EOS;
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_PlayerMon1Name);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 15);
|
||||
BattlePutTextOnWindow(gText_Vs, 16);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_PLAYER_NAME);
|
||||
BattlePutTextOnWindow(gText_Vs, ARENA_WIN_VS);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_OpponentMon1Name);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 17);
|
||||
BattlePutTextOnWindow(gText_Mind, 18);
|
||||
BattlePutTextOnWindow(gText_Skill, 19);
|
||||
BattlePutTextOnWindow(gText_Body, 20);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_OPPONENT_NAME);
|
||||
BattlePutTextOnWindow(gText_Mind, ARENA_WIN_MIND);
|
||||
BattlePutTextOnWindow(gText_Skill, ARENA_WIN_SKILL);
|
||||
BattlePutTextOnWindow(gText_Body, ARENA_WIN_BODY);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 21);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
|
||||
(*state)++;
|
||||
}
|
||||
break;
|
||||
@@ -567,7 +564,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
|
||||
ShowJudgmentSprite(80, 40, ARENA_CATEGORY_MIND, B_POSITION_PLAYER_LEFT);
|
||||
ShowJudgmentSprite(160, 40, ARENA_CATEGORY_MIND, B_POSITION_OPPONENT_LEFT);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 21);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
|
||||
(*state)++;
|
||||
ret = 1;
|
||||
break;
|
||||
@@ -576,7 +573,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
|
||||
ShowJudgmentSprite(80, 56, ARENA_CATEGORY_SKILL, B_POSITION_PLAYER_LEFT);
|
||||
ShowJudgmentSprite(160, 56, ARENA_CATEGORY_SKILL, B_POSITION_OPPONENT_LEFT);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 21);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
|
||||
(*state)++;
|
||||
ret = 1;
|
||||
break;
|
||||
@@ -585,7 +582,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state)
|
||||
ShowJudgmentSprite(80, 72, ARENA_CATEGORY_BODY, B_POSITION_PLAYER_LEFT);
|
||||
ShowJudgmentSprite(160, 72, ARENA_CATEGORY_BODY, B_POSITION_OPPONENT_LEFT);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 21);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TITLE);
|
||||
(*state)++;
|
||||
ret = 1;
|
||||
break;
|
||||
|
||||
+89
-90
@@ -161,7 +161,7 @@ const struct BgTemplate gBattleBgTemplates[] =
|
||||
|
||||
static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
{
|
||||
{ // 0 Standard battle message
|
||||
[B_WIN_MSG] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 15,
|
||||
@@ -170,7 +170,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x0090,
|
||||
},
|
||||
{ // 1 "What will (pokemon) do?"
|
||||
[B_WIN_ACTION_PROMPT] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 35,
|
||||
@@ -179,7 +179,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x01c0,
|
||||
},
|
||||
{ // 2 "Fight/Pokemon/Bag/Run"
|
||||
[B_WIN_ACTION_MENU] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 17,
|
||||
.tilemapTop = 35,
|
||||
@@ -188,7 +188,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0190,
|
||||
},
|
||||
{ // 3 Top left move
|
||||
[B_WIN_MOVE_NAME_1] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 55,
|
||||
@@ -197,7 +197,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0300,
|
||||
},
|
||||
{ // 4 Top right move
|
||||
[B_WIN_MOVE_NAME_2] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 55,
|
||||
@@ -206,7 +206,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0310,
|
||||
},
|
||||
{ // 5 Bottom left move
|
||||
[B_WIN_MOVE_NAME_3] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 57,
|
||||
@@ -215,7 +215,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0320,
|
||||
},
|
||||
{ // 6 Bottom right move
|
||||
[B_WIN_MOVE_NAME_4] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 57,
|
||||
@@ -224,7 +224,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0330,
|
||||
},
|
||||
{
|
||||
[B_WIN_PP] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 21,
|
||||
.tilemapTop = 55,
|
||||
@@ -233,7 +233,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0290,
|
||||
},
|
||||
{
|
||||
[B_WIN_DUMMY] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 21,
|
||||
.tilemapTop = 57,
|
||||
@@ -242,7 +242,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0298,
|
||||
},
|
||||
{
|
||||
[B_WIN_PP_REMAINING] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 25,
|
||||
.tilemapTop = 55,
|
||||
@@ -251,7 +251,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0298,
|
||||
},
|
||||
{
|
||||
[B_WIN_MOVE_TYPE] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 21,
|
||||
.tilemapTop = 57,
|
||||
@@ -260,7 +260,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x02a0,
|
||||
},
|
||||
{
|
||||
[B_WIN_SWITCH_PROMPT] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 21,
|
||||
.tilemapTop = 55,
|
||||
@@ -269,7 +269,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x02b0,
|
||||
},
|
||||
{
|
||||
[B_WIN_YESNO] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 26,
|
||||
.tilemapTop = 9,
|
||||
@@ -278,7 +278,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0100,
|
||||
},
|
||||
{
|
||||
[B_WIN_LEVEL_UP_BOX] = {
|
||||
.bg = 1,
|
||||
.tilemapLeft = 19,
|
||||
.tilemapTop = 8,
|
||||
@@ -287,7 +287,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0100,
|
||||
},
|
||||
{
|
||||
[B_WIN_LEVEL_UP_BANNER] = {
|
||||
.bg = 2,
|
||||
.tilemapLeft = 18,
|
||||
.tilemapTop = 0,
|
||||
@@ -296,7 +296,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 0x016e,
|
||||
},
|
||||
{
|
||||
[B_WIN_VS_PLAYER] = {
|
||||
.bg = 1,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 3,
|
||||
@@ -305,7 +305,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0020,
|
||||
},
|
||||
{
|
||||
[B_WIN_VS_OPPONENT] = {
|
||||
.bg = 2,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 3,
|
||||
@@ -314,7 +314,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0040,
|
||||
},
|
||||
{
|
||||
[B_WIN_VS_MULTI_PLAYER_1] = {
|
||||
.bg = 1,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 2,
|
||||
@@ -323,7 +323,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0020,
|
||||
},
|
||||
{
|
||||
[B_WIN_VS_MULTI_PLAYER_2] = {
|
||||
.bg = 2,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 2,
|
||||
@@ -332,7 +332,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0040,
|
||||
},
|
||||
{
|
||||
[B_WIN_VS_MULTI_PLAYER_3] = {
|
||||
.bg = 1,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 6,
|
||||
@@ -341,7 +341,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0060,
|
||||
},
|
||||
{
|
||||
[B_WIN_VS_MULTI_PLAYER_4] = {
|
||||
.bg = 2,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 6,
|
||||
@@ -350,7 +350,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0080,
|
||||
},
|
||||
{
|
||||
[B_WIN_VS_OUTCOME_DRAW] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 12,
|
||||
.tilemapTop = 2,
|
||||
@@ -359,7 +359,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x00a0,
|
||||
},
|
||||
{
|
||||
[B_WIN_VS_OUTCOME_LEFT] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 4,
|
||||
.tilemapTop = 2,
|
||||
@@ -368,7 +368,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x00a0,
|
||||
},
|
||||
{
|
||||
[B_WIN_VS_OUTCOME_RIGHT] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 19,
|
||||
.tilemapTop = 2,
|
||||
@@ -382,7 +382,7 @@ static const struct WindowTemplate gStandardBattleWindowTemplates[] =
|
||||
|
||||
static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
{
|
||||
{
|
||||
[B_WIN_MSG] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 15,
|
||||
@@ -391,7 +391,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x0090,
|
||||
},
|
||||
{
|
||||
[B_WIN_ACTION_PROMPT] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 1,
|
||||
.tilemapTop = 35,
|
||||
@@ -400,7 +400,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 0,
|
||||
.baseBlock = 0x01c0,
|
||||
},
|
||||
{
|
||||
[B_WIN_ACTION_MENU] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 17,
|
||||
.tilemapTop = 35,
|
||||
@@ -409,7 +409,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0190,
|
||||
},
|
||||
{
|
||||
[B_WIN_MOVE_NAME_1] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 55,
|
||||
@@ -418,7 +418,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0300,
|
||||
},
|
||||
{
|
||||
[B_WIN_MOVE_NAME_2] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 55,
|
||||
@@ -427,7 +427,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0310,
|
||||
},
|
||||
{
|
||||
[B_WIN_MOVE_NAME_3] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 57,
|
||||
@@ -436,7 +436,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0320,
|
||||
},
|
||||
{
|
||||
[B_WIN_MOVE_NAME_4] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 11,
|
||||
.tilemapTop = 57,
|
||||
@@ -445,7 +445,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0330,
|
||||
},
|
||||
{
|
||||
[B_WIN_PP] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 21,
|
||||
.tilemapTop = 55,
|
||||
@@ -454,7 +454,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0290,
|
||||
},
|
||||
{
|
||||
[B_WIN_DUMMY] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 21,
|
||||
.tilemapTop = 57,
|
||||
@@ -463,7 +463,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0298,
|
||||
},
|
||||
{
|
||||
[B_WIN_PP_REMAINING] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 25,
|
||||
.tilemapTop = 55,
|
||||
@@ -472,7 +472,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0298,
|
||||
},
|
||||
{
|
||||
[B_WIN_MOVE_TYPE] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 21,
|
||||
.tilemapTop = 57,
|
||||
@@ -481,7 +481,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x02a0,
|
||||
},
|
||||
{
|
||||
[B_WIN_SWITCH_PROMPT] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 21,
|
||||
.tilemapTop = 55,
|
||||
@@ -490,7 +490,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x02b0,
|
||||
},
|
||||
{
|
||||
[B_WIN_YESNO] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 26,
|
||||
.tilemapTop = 9,
|
||||
@@ -499,7 +499,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0100,
|
||||
},
|
||||
{
|
||||
[B_WIN_LEVEL_UP_BOX] = {
|
||||
.bg = 1,
|
||||
.tilemapLeft = 19,
|
||||
.tilemapTop = 8,
|
||||
@@ -508,7 +508,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0100,
|
||||
},
|
||||
{
|
||||
[B_WIN_LEVEL_UP_BANNER] = {
|
||||
.bg = 2,
|
||||
.tilemapLeft = 18,
|
||||
.tilemapTop = 0,
|
||||
@@ -517,7 +517,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 6,
|
||||
.baseBlock = 0x016e,
|
||||
},
|
||||
{
|
||||
[ARENA_WIN_PLAYER_NAME] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 6,
|
||||
.tilemapTop = 1,
|
||||
@@ -526,7 +526,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0100,
|
||||
},
|
||||
{
|
||||
[ARENA_WIN_VS] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 14,
|
||||
.tilemapTop = 1,
|
||||
@@ -535,7 +535,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0110,
|
||||
},
|
||||
{
|
||||
[ARENA_WIN_OPPONENT_NAME] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 16,
|
||||
.tilemapTop = 1,
|
||||
@@ -544,7 +544,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0114,
|
||||
},
|
||||
{
|
||||
[ARENA_WIN_MIND] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 12,
|
||||
.tilemapTop = 4,
|
||||
@@ -553,7 +553,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0124,
|
||||
},
|
||||
{
|
||||
[ARENA_WIN_SKILL] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 12,
|
||||
.tilemapTop = 6,
|
||||
@@ -562,7 +562,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0130,
|
||||
},
|
||||
{
|
||||
[ARENA_WIN_BODY] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 12,
|
||||
.tilemapTop = 8,
|
||||
@@ -571,7 +571,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x013c,
|
||||
},
|
||||
{
|
||||
[ARENA_WIN_JUDGEMENT_TITLE] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 8,
|
||||
.tilemapTop = 11,
|
||||
@@ -580,7 +580,7 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
.paletteNum = 5,
|
||||
.baseBlock = 0x0148,
|
||||
},
|
||||
{
|
||||
[ARENA_WIN_JUDGEMENT_TEXT] = {
|
||||
.bg = 0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 15,
|
||||
@@ -594,8 +594,8 @@ static const struct WindowTemplate gBattleArenaWindowTemplates[] =
|
||||
|
||||
const struct WindowTemplate * const gBattleWindowTemplates[] =
|
||||
{
|
||||
gStandardBattleWindowTemplates,
|
||||
gBattleArenaWindowTemplates,
|
||||
[B_WIN_TYPE_NORMAL] = gStandardBattleWindowTemplates,
|
||||
[B_WIN_TYPE_ARENA] = gBattleArenaWindowTemplates,
|
||||
};
|
||||
|
||||
static const struct BattleBackground gBattleTerrainTable[] =
|
||||
@@ -691,20 +691,19 @@ static const struct BattleBackground gBattleTerrainTable[] =
|
||||
},
|
||||
};
|
||||
|
||||
static void sub_8035648(void);
|
||||
static void CB2_UnusedBattleInit(void);
|
||||
|
||||
// Unused
|
||||
static void sub_8035608(void)
|
||||
static void UnusedBattleInit(void)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
ResetSpriteData();
|
||||
spriteId = CreateSprite(&gUnknown_0831AC88, 0, 0, 0);
|
||||
spriteId = CreateSprite(&gUnusedBattleInitSprite, 0, 0, 0);
|
||||
gSprites[spriteId].invisible = TRUE;
|
||||
SetMainCallback2(sub_8035648);
|
||||
SetMainCallback2(CB2_UnusedBattleInit);
|
||||
}
|
||||
|
||||
static void sub_8035648(void)
|
||||
static void CB2_UnusedBattleInit(void)
|
||||
{
|
||||
AnimateSprites();
|
||||
BuildOamBuffer();
|
||||
@@ -717,13 +716,13 @@ void BattleInitBgsAndWindows(void)
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
{
|
||||
gBattleScripting.windowsType = 1;
|
||||
SetBgTilemapBuffer(1, gUnknown_02023060);
|
||||
SetBgTilemapBuffer(2, gUnknown_02023060);
|
||||
gBattleScripting.windowsType = B_WIN_TYPE_ARENA;
|
||||
SetBgTilemapBuffer(1, gBattleAnimBgTilemapBuffer);
|
||||
SetBgTilemapBuffer(2, gBattleAnimBgTilemapBuffer);
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleScripting.windowsType = 0;
|
||||
gBattleScripting.windowsType = B_WIN_TYPE_NORMAL;
|
||||
}
|
||||
|
||||
InitWindows(gBattleWindowTemplates[gBattleScripting.windowsType]);
|
||||
@@ -936,7 +935,7 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
|
||||
{
|
||||
if (gBattleOutcome == B_OUTCOME_DREW)
|
||||
{
|
||||
BattlePutTextOnWindow(gText_Draw, 0x15);
|
||||
BattlePutTextOnWindow(gText_Draw, B_WIN_VS_OUTCOME_DRAW);
|
||||
}
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
@@ -945,20 +944,20 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
|
||||
switch (gLinkPlayers[gBattleScripting.multiplayerId].id)
|
||||
{
|
||||
case 0:
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
|
||||
break;
|
||||
case 1:
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
|
||||
break;
|
||||
case 2:
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
|
||||
break;
|
||||
case 3:
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -967,20 +966,20 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
|
||||
switch (gLinkPlayers[gBattleScripting.multiplayerId].id)
|
||||
{
|
||||
case 0:
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
|
||||
break;
|
||||
case 1:
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
|
||||
break;
|
||||
case 2:
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
|
||||
break;
|
||||
case 3:
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -989,26 +988,26 @@ static void DrawLinkBattleVsScreenOutcomeText(void)
|
||||
{
|
||||
if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0)
|
||||
{
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
|
||||
}
|
||||
else
|
||||
{
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gLinkPlayers[gBattleScripting.multiplayerId].id != 0)
|
||||
{
|
||||
BattlePutTextOnWindow(gText_Win, 0x16);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x17);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_LEFT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_RIGHT);
|
||||
}
|
||||
else
|
||||
{
|
||||
BattlePutTextOnWindow(gText_Win, 0x17);
|
||||
BattlePutTextOnWindow(gText_Loss, 0x16);
|
||||
BattlePutTextOnWindow(gText_Win, B_WIN_VS_OUTCOME_RIGHT);
|
||||
BattlePutTextOnWindow(gText_Loss, B_WIN_VS_OUTCOME_LEFT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1032,19 +1031,19 @@ void InitLinkBattleVsScreen(u8 taskId)
|
||||
switch (linkPlayer->id)
|
||||
{
|
||||
case 0:
|
||||
BattlePutTextOnWindow(name, 0x11);
|
||||
BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_1);
|
||||
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 4);
|
||||
break;
|
||||
case 1:
|
||||
BattlePutTextOnWindow(name, 0x12);
|
||||
BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_2);
|
||||
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 4);
|
||||
break;
|
||||
case 2:
|
||||
BattlePutTextOnWindow(name, 0x13);
|
||||
BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_3);
|
||||
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 1, 2, 8);
|
||||
break;
|
||||
case 3:
|
||||
BattlePutTextOnWindow(name, 0x14);
|
||||
BattlePutTextOnWindow(name, B_WIN_VS_MULTI_PLAYER_4);
|
||||
DrawLinkBattleParticipantPokeballs(taskId, linkPlayer->id, 2, 2, 8);
|
||||
break;
|
||||
}
|
||||
@@ -1060,10 +1059,10 @@ void InitLinkBattleVsScreen(u8 taskId)
|
||||
opponentId = playerId, playerId = opponentId_copy;
|
||||
|
||||
name = gLinkPlayers[playerId].name;
|
||||
BattlePutTextOnWindow(name, 0xF);
|
||||
BattlePutTextOnWindow(name, B_WIN_VS_PLAYER);
|
||||
|
||||
name = gLinkPlayers[opponentId].name;
|
||||
BattlePutTextOnWindow(name, 0x10);
|
||||
BattlePutTextOnWindow(name, B_WIN_VS_OPPONENT);
|
||||
|
||||
DrawLinkBattleParticipantPokeballs(taskId, playerId, 1, 2, 7);
|
||||
DrawLinkBattleParticipantPokeballs(taskId, opponentId, 2, 2, 7);
|
||||
|
||||
@@ -29,9 +29,6 @@
|
||||
#include "constants/trainers.h"
|
||||
#include "recorded_battle.h"
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
// this file's functions
|
||||
static void LinkOpponentHandleGetMonData(void);
|
||||
static void LinkOpponentHandleGetRawMonData(void);
|
||||
static void LinkOpponentHandleSetMonData(void);
|
||||
@@ -424,7 +421,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -558,7 +555,7 @@ static void LinkOpponentHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
LinkOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1471,7 +1468,7 @@ static void LinkOpponentHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
BattleTv_SetDataBasedOnString(*stringId);
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#include "constants/trainers.h"
|
||||
#include "recorded_battle.h"
|
||||
|
||||
// this file's functions
|
||||
static void LinkPartnerHandleGetMonData(void);
|
||||
static void LinkPartnerHandleGetRawMonData(void);
|
||||
static void LinkPartnerHandleSetMonData(void);
|
||||
@@ -313,7 +312,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -443,7 +442,7 @@ static void LinkPartnerHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
LinkPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1301,7 +1300,7 @@ static void LinkPartnerHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
BattleTv_SetDataBasedOnString(*stringId);
|
||||
}
|
||||
|
||||
@@ -34,9 +34,6 @@
|
||||
#include "constants/trainers.h"
|
||||
#include "trainer_hill.h"
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
// this file's functions
|
||||
static void OpponentHandleGetMonData(void);
|
||||
static void OpponentHandleGetRawMonData(void);
|
||||
static void OpponentHandleSetMonData(void);
|
||||
@@ -430,7 +427,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -558,7 +555,7 @@ static void OpponentHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -878,7 +875,7 @@ static void OpponentHandleGetRawMonData(void)
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
|
||||
dst[i] = src[i];
|
||||
|
||||
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1524,7 +1521,7 @@ static void OpponentHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
BattleArena_DeductMindPoints(gActiveBattler, *stringId);
|
||||
}
|
||||
@@ -1549,7 +1546,7 @@ static void OpponentHandleChooseMove(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
|
||||
{
|
||||
BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
@@ -1566,13 +1563,13 @@ static void OpponentHandleChooseMove(void)
|
||||
switch (chosenMoveId)
|
||||
{
|
||||
case AI_CHOICE_WATCH:
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_WATCH_CAREFULLY, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_WATCH_CAREFULLY, 0);
|
||||
break;
|
||||
case AI_CHOICE_FLEE:
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_RUN, 0);
|
||||
break;
|
||||
case 6:
|
||||
BtlController_EmitTwoReturnValues(1, 15, gBattlerTarget);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 15, gBattlerTarget);
|
||||
break;
|
||||
default:
|
||||
if (gBattleMoves[moveInfo->moves[chosenMoveId]].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
|
||||
@@ -1583,7 +1580,7 @@ static void OpponentHandleChooseMove(void)
|
||||
if (gAbsentBattlerFlags & gBitTable[gBattlerTarget])
|
||||
gBattlerTarget = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||
}
|
||||
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gBattlerTarget << 8));
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (gBattlerTarget << 8));
|
||||
break;
|
||||
}
|
||||
OpponentBufferExecCompleted();
|
||||
@@ -1598,11 +1595,11 @@ static void OpponentHandleChooseMove(void)
|
||||
} while (move == MOVE_NONE);
|
||||
|
||||
if (gBattleMoves[move].target & (MOVE_TARGET_USER_OR_SELECTED | MOVE_TARGET_USER))
|
||||
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (gActiveBattler << 8));
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (gActiveBattler << 8));
|
||||
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
|
||||
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(Random() & 2) << 8));
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (GetBattlerAtPosition(Random() & 2) << 8));
|
||||
else
|
||||
BtlController_EmitTwoReturnValues(1, 10, (chosenMoveId) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8));
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, (chosenMoveId) | (GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) << 8));
|
||||
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
@@ -1611,7 +1608,7 @@ static void OpponentHandleChooseMove(void)
|
||||
|
||||
static void OpponentHandleChooseItem(void)
|
||||
{
|
||||
BtlController_EmitOneReturnValue(1, *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2));
|
||||
BtlController_EmitOneReturnValue(BUFFER_B, *(gBattleStruct->chosenItem + (gActiveBattler / 2) * 2));
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1668,7 +1665,7 @@ static void OpponentHandleChoosePokemon(void)
|
||||
|
||||
|
||||
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId;
|
||||
BtlController_EmitChosenMonReturnValue(1, chosenMonId, NULL);
|
||||
BtlController_EmitChosenMonReturnValue(BUFFER_B, chosenMonId, NULL);
|
||||
OpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
||||
@@ -36,9 +36,6 @@
|
||||
#include "constants/trainers.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
// this file's functions
|
||||
static void PlayerHandleGetMonData(void);
|
||||
static void PlayerHandleSetMonData(void);
|
||||
static void PlayerHandleSetRawMonData(void);
|
||||
@@ -251,17 +248,17 @@ static void HandleInputChooseAction(void)
|
||||
|
||||
switch (gActionSelectionCursor[gActiveBattler])
|
||||
{
|
||||
case 0:
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0);
|
||||
case 0: // Top left
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, 0);
|
||||
break;
|
||||
case 1:
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
|
||||
case 1: // Top right
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_ITEM, 0);
|
||||
break;
|
||||
case 2:
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SWITCH, 0);
|
||||
case 2: // Bottom left
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SWITCH, 0);
|
||||
break;
|
||||
case 3:
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_RUN, 0);
|
||||
case 3: // Bottom right
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_RUN, 0);
|
||||
break;
|
||||
}
|
||||
PlayerBufferExecCompleted();
|
||||
@@ -322,7 +319,7 @@ static void HandleInputChooseAction(void)
|
||||
return;
|
||||
}
|
||||
PlaySE(SE_SELECT);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_CANCEL_PARTNER, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_CANCEL_PARTNER, 0);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
@@ -368,7 +365,7 @@ static void HandleInputChooseTarget(void)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget;
|
||||
BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
|
||||
EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
@@ -526,7 +523,7 @@ static void HandleInputChooseMove(void)
|
||||
|
||||
if (!canSelectTarget)
|
||||
{
|
||||
BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8));
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
@@ -546,7 +543,7 @@ static void HandleInputChooseMove(void)
|
||||
else if (JOY_NEW(B_BUTTON) || gPlayerDpadHoldFrames > 59)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
BtlController_EmitTwoReturnValues(1, 10, 0xFFFF);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, 0xFFFF);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
else if (JOY_NEW(DPAD_LEFT))
|
||||
@@ -611,7 +608,7 @@ static void HandleInputChooseMove(void)
|
||||
gMultiUsePlayerCursor = gMoveSelectionCursor[gActiveBattler] + 1;
|
||||
|
||||
MoveSelectionCreateCursorAt(gMultiUsePlayerCursor, 27);
|
||||
BattlePutTextOnWindow(gText_BattleSwitchWhich, 0xB);
|
||||
BattlePutTextOnWindow(gText_BattleSwitchWhich, B_WIN_SWITCH_PROMPT);
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleMoveSwitching;
|
||||
}
|
||||
}
|
||||
@@ -858,7 +855,7 @@ static void SetLinkBattleEndCallbacks(void)
|
||||
if (gReceivedRemoteLinkPlayers == 0)
|
||||
{
|
||||
m4aSongNumStop(SE_LOW_HEALTH);
|
||||
gMain.inBattle = 0;
|
||||
gMain.inBattle = FALSE;
|
||||
gMain.callback1 = gPreBattleCallback1;
|
||||
SetMainCallback2(CB2_InitEndLinkBattle);
|
||||
if (gBattleOutcome == B_OUTCOME_WON)
|
||||
@@ -871,7 +868,7 @@ static void SetLinkBattleEndCallbacks(void)
|
||||
if (IsLinkTaskFinished())
|
||||
{
|
||||
m4aSongNumStop(SE_LOW_HEALTH);
|
||||
gMain.inBattle = 0;
|
||||
gMain.inBattle = FALSE;
|
||||
gMain.callback1 = gPreBattleCallback1;
|
||||
SetMainCallback2(CB2_InitEndLinkBattle);
|
||||
if (gBattleOutcome == B_OUTCOME_WON)
|
||||
@@ -901,7 +898,7 @@ void SetBattleEndCallbacks(void)
|
||||
else
|
||||
{
|
||||
m4aSongNumStop(SE_LOW_HEALTH);
|
||||
gMain.inBattle = 0;
|
||||
gMain.inBattle = FALSE;
|
||||
gMain.callback1 = gPreBattleCallback1;
|
||||
SetMainCallback2(gMain.savedCallback);
|
||||
}
|
||||
@@ -1145,7 +1142,7 @@ static void CompleteOnHealthbarDone(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1177,7 +1174,7 @@ static void Task_GiveExpToMon(u8 taskId)
|
||||
gainedExp -= nextLvlExp - currExp;
|
||||
savedActiveBattler = gActiveBattler;
|
||||
gActiveBattler = battlerId;
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBattler;
|
||||
|
||||
if (IsDoubleBattle() == TRUE
|
||||
@@ -1256,7 +1253,7 @@ static void Task_GiveExpWithExpBar(u8 taskId)
|
||||
gainedExp -= expOnNextLvl - currExp;
|
||||
savedActiveBattler = gActiveBattler;
|
||||
gActiveBattler = battlerId;
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBattler;
|
||||
gTasks[taskId].func = Task_LaunchLvlUpAnim;
|
||||
}
|
||||
@@ -1341,7 +1338,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter2(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1364,9 +1361,9 @@ static void WaitForMonSelection(void)
|
||||
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
|
||||
{
|
||||
if (gPartyMenuUseExitCallback == TRUE)
|
||||
BtlController_EmitChosenMonReturnValue(1, gSelectedMonPartyId, gBattlePartyCurrentOrder);
|
||||
BtlController_EmitChosenMonReturnValue(BUFFER_B, gSelectedMonPartyId, gBattlePartyCurrentOrder);
|
||||
else
|
||||
BtlController_EmitChosenMonReturnValue(1, PARTY_SIZE, NULL);
|
||||
BtlController_EmitChosenMonReturnValue(BUFFER_B, PARTY_SIZE, NULL);
|
||||
|
||||
if ((gBattleBufferA[gActiveBattler][1] & 0xF) == 1)
|
||||
PrintLinkStandbyMsg();
|
||||
@@ -1390,7 +1387,7 @@ static void CompleteWhenChoseItem(void)
|
||||
{
|
||||
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
|
||||
{
|
||||
BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
|
||||
BtlController_EmitOneReturnValue(BUFFER_B, gSpecialVar_ItemId);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
@@ -1442,9 +1439,9 @@ static void PlayerHandleYesNoInput(void)
|
||||
PlaySE(SE_SELECT);
|
||||
|
||||
if (gMultiUsePlayerCursor != 0)
|
||||
BtlController_EmitTwoReturnValues(1, 0xE, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 0xE, 0);
|
||||
else
|
||||
BtlController_EmitTwoReturnValues(1, 0xD, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 0xD, 0);
|
||||
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
@@ -1466,7 +1463,8 @@ static void MoveSelectionDisplayMoveNames(void)
|
||||
{
|
||||
MoveSelectionDestroyCursorAt(i);
|
||||
StringCopy(gDisplayedStringBattle, gMoveNames[moveInfo->moves[i]]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, i + 3);
|
||||
// Prints on windows B_WIN_MOVE_NAME_1, B_WIN_MOVE_NAME_2, B_WIN_MOVE_NAME_3, B_WIN_MOVE_NAME_4
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, i + B_WIN_MOVE_NAME_1);
|
||||
if (moveInfo->moves[i] != MOVE_NONE)
|
||||
gNumberOfMovesToChoose++;
|
||||
}
|
||||
@@ -1475,7 +1473,7 @@ static void MoveSelectionDisplayMoveNames(void)
|
||||
static void MoveSelectionDisplayPpString(void)
|
||||
{
|
||||
StringCopy(gDisplayedStringBattle, gText_MoveInterfacePP);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 7);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_PP);
|
||||
}
|
||||
|
||||
static void MoveSelectionDisplayPpNumber(void)
|
||||
@@ -1492,7 +1490,7 @@ static void MoveSelectionDisplayPpNumber(void)
|
||||
*(txtPtr)++ = CHAR_SLASH;
|
||||
ConvertIntToDecimalStringN(txtPtr, moveInfo->maxPp[gMoveSelectionCursor[gActiveBattler]], STR_CONV_MODE_RIGHT_ALIGN, 2);
|
||||
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 9);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_PP_REMAINING);
|
||||
}
|
||||
|
||||
static void MoveSelectionDisplayMoveType(void)
|
||||
@@ -1506,7 +1504,7 @@ static void MoveSelectionDisplayMoveType(void)
|
||||
*(txtPtr)++ = 1;
|
||||
|
||||
StringCopy(txtPtr, gTypeNames[gBattleMoves[moveInfo->moves[gMoveSelectionCursor[gActiveBattler]]].type]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 10);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MOVE_TYPE);
|
||||
}
|
||||
|
||||
static void MoveSelectionCreateCursorAt(u8 cursorPosition, u8 arg1)
|
||||
@@ -1577,7 +1575,7 @@ static void PrintLinkStandbyMsg(void)
|
||||
{
|
||||
gBattle_BG0_X = 0;
|
||||
gBattle_BG0_Y = 0;
|
||||
BattlePutTextOnWindow(gText_LinkStandby, 0);
|
||||
BattlePutTextOnWindow(gText_LinkStandby, B_WIN_MSG);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1602,7 +1600,7 @@ static void PlayerHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1922,7 +1920,7 @@ void PlayerHandleGetRawMonData(void)
|
||||
for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++)
|
||||
dst[i] = src[i];
|
||||
|
||||
BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, gBattleBufferA[gActiveBattler][2], dst);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -2228,13 +2226,14 @@ static void StartSendOutAnim(u8 battlerId, bool8 dontClearSubstituteBit)
|
||||
|
||||
static void PlayerHandleReturnMonToBall(void)
|
||||
{
|
||||
if (gBattleBufferA[gActiveBattler][1] == 0)
|
||||
if (!gBattleBufferA[gActiveBattler][1])
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0;
|
||||
gBattlerControllerFuncs[gActiveBattler] = DoSwitchOutAnimation;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Skip animation, just remove battler
|
||||
FreeSpriteOamMatrix(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[gActiveBattler]]);
|
||||
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[gActiveBattler]);
|
||||
@@ -2549,7 +2548,7 @@ static void PlayerHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
|
||||
BattleTv_SetDataBasedOnString(*stringId);
|
||||
BattleArena_DeductMindPoints(gActiveBattler, *stringId);
|
||||
@@ -2579,14 +2578,14 @@ static void PlayerHandleChooseAction(void)
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
|
||||
BattleTv_ClearExplosionFaintCause();
|
||||
BattlePutTextOnWindow(gText_BattleMenu, 2);
|
||||
BattlePutTextOnWindow(gText_BattleMenu, B_WIN_ACTION_MENU);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
ActionSelectionDestroyCursorAt(i);
|
||||
|
||||
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 1);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
|
||||
}
|
||||
|
||||
static void PlayerHandleYesNoBox(void)
|
||||
@@ -2594,7 +2593,7 @@ static void PlayerHandleYesNoBox(void)
|
||||
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
|
||||
{
|
||||
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
|
||||
BattlePutTextOnWindow(gText_BattleYesNoChoice, 12);
|
||||
BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
|
||||
gMultiUsePlayerCursor = 1;
|
||||
BattleCreateYesNoCursorAt(1);
|
||||
gBattlerControllerFuncs[gActiveBattler] = PlayerHandleYesNoInput;
|
||||
@@ -2622,7 +2621,7 @@ static void PlayerChooseMoveInBattlePalace(void)
|
||||
if (--*(gBattleStruct->arenaMindPoints + gActiveBattler) == 0)
|
||||
{
|
||||
gBattlePalaceMoveSelectionRngValue = gRngValue;
|
||||
BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
@@ -2672,7 +2671,7 @@ static void PlayerHandleChoosePokemon(void)
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleBufferA[gActiveBattler][1] & 0xF) != PARTY_ACTION_CANT_SWITCH)
|
||||
{
|
||||
BtlController_EmitChosenMonReturnValue(1, gBattlerPartyIndexes[gActiveBattler] + 1, gBattlePartyCurrentOrder);
|
||||
BtlController_EmitChosenMonReturnValue(BUFFER_B, gBattlerPartyIndexes[gActiveBattler] + 1, gBattlePartyCurrentOrder);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
else
|
||||
@@ -2829,25 +2828,25 @@ static void PlayerHandleCmd32(void)
|
||||
|
||||
static void PlayerHandleTwoReturnValues(void)
|
||||
{
|
||||
BtlController_EmitTwoReturnValues(1, 0, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 0, 0);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void PlayerHandleChosenMonReturnValue(void)
|
||||
{
|
||||
BtlController_EmitChosenMonReturnValue(1, 0, NULL);
|
||||
BtlController_EmitChosenMonReturnValue(BUFFER_B, 0, NULL);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void PlayerHandleOneReturnValue(void)
|
||||
{
|
||||
BtlController_EmitOneReturnValue(1, 0);
|
||||
BtlController_EmitOneReturnValue(BUFFER_B, 0);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
static void PlayerHandleOneReturnValue_Duplicate(void)
|
||||
{
|
||||
BtlController_EmitOneReturnValue_Duplicate(1, 0);
|
||||
BtlController_EmitOneReturnValue_Duplicate(BUFFER_B, 0);
|
||||
PlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -3100,14 +3099,14 @@ static void PlayerHandleLinkStandbyMsg(void)
|
||||
RecordedBattle_RecordAllBattlerData(&gBattleBufferA[gActiveBattler][2]);
|
||||
switch (gBattleBufferA[gActiveBattler][1])
|
||||
{
|
||||
case 0:
|
||||
case LINK_STANDBY_MSG_STOP_BOUNCE:
|
||||
PrintLinkStandbyMsg();
|
||||
// fall through
|
||||
case 1:
|
||||
case LINK_STANDBY_STOP_BOUNCE_ONLY:
|
||||
EndBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX);
|
||||
EndBounceEffect(gActiveBattler, BOUNCE_MON);
|
||||
break;
|
||||
case 2:
|
||||
case LINK_STANDBY_MSG_ONLY:
|
||||
PrintLinkStandbyMsg();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/trainers.h"
|
||||
|
||||
// this file's functions
|
||||
static void PlayerPartnerHandleGetMonData(void);
|
||||
static void PlayerPartnerHandleGetRawMonData(void);
|
||||
static void PlayerPartnerHandleSetMonData(void);
|
||||
@@ -300,7 +299,7 @@ static void CompleteOnHealthbarDone(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
PlayerPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -333,7 +332,7 @@ static void Task_GiveExpToMon(u8 taskId)
|
||||
gainedExp -= nextLvlExp - currExp;
|
||||
savedActiveBank = gActiveBattler;
|
||||
gActiveBattler = battlerId;
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBank;
|
||||
|
||||
if (IsDoubleBattle() == TRUE
|
||||
@@ -412,7 +411,7 @@ static void Task_GiveExpWithExpBar(u8 taskId)
|
||||
gainedExp -= expOnNextLvl - currExp;
|
||||
savedActiveBank = gActiveBattler;
|
||||
gActiveBattler = battlerId;
|
||||
BtlController_EmitTwoReturnValues(1, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, RET_VALUE_LEVELED_UP, gainedExp);
|
||||
gActiveBattler = savedActiveBank;
|
||||
gTasks[taskId].func = Task_LaunchLvlUpAnim;
|
||||
}
|
||||
@@ -497,7 +496,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter2(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
PlayerPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -627,7 +626,7 @@ static void PlayerPartnerHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
PlayerPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1491,7 +1490,7 @@ static void PlayerPartnerHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter2;
|
||||
}
|
||||
|
||||
@@ -1528,7 +1527,7 @@ static void PlayerPartnerHandleChooseMove(void)
|
||||
gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
}
|
||||
|
||||
BtlController_EmitTwoReturnValues(1, 10, chosenMoveId | (gBattlerTarget << 8));
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, chosenMoveId | (gBattlerTarget << 8));
|
||||
PlayerPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1558,7 +1557,7 @@ static void PlayerPartnerHandleChoosePokemon(void)
|
||||
}
|
||||
|
||||
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = chosenMonId;
|
||||
BtlController_EmitChosenMonReturnValue(1, chosenMonId, NULL);
|
||||
BtlController_EmitChosenMonReturnValue(BUFFER_B, chosenMonId, NULL);
|
||||
PlayerPartnerBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
||||
@@ -29,9 +29,6 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/trainers.h"
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
// this file's functions
|
||||
static void RecordedOpponentHandleGetMonData(void);
|
||||
static void RecordedOpponentHandleGetRawMonData(void);
|
||||
static void RecordedOpponentHandleSetMonData(void);
|
||||
@@ -408,7 +405,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
RecordedOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -541,7 +538,7 @@ static void RecordedOpponentHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
RecordedOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1398,7 +1395,7 @@ static void RecordedOpponentHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
}
|
||||
|
||||
@@ -1409,7 +1406,7 @@ static void RecordedOpponentHandlePrintSelectionString(void)
|
||||
|
||||
static void RecordedOpponentHandleChooseAction(void)
|
||||
{
|
||||
BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
|
||||
RecordedOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1422,13 +1419,13 @@ static void RecordedOpponentHandleChooseMove(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
|
||||
{
|
||||
BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler);
|
||||
u8 target = RecordedBattle_GetBattlerAction(gActiveBattler);
|
||||
BtlController_EmitTwoReturnValues(1, 10, moveId | (target << 8));
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, moveId | (target << 8));
|
||||
}
|
||||
|
||||
RecordedOpponentBufferExecCompleted();
|
||||
@@ -1442,7 +1439,7 @@ static void RecordedOpponentHandleChooseItem(void)
|
||||
static void RecordedOpponentHandleChoosePokemon(void)
|
||||
{
|
||||
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler);
|
||||
BtlController_EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
|
||||
BtlController_EmitChosenMonReturnValue(BUFFER_B, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
|
||||
RecordedOpponentBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
||||
@@ -25,9 +25,6 @@
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
// this file's functions
|
||||
static void RecordedPlayerHandleGetMonData(void);
|
||||
static void RecordedPlayerHandleGetRawMonData(void);
|
||||
static void RecordedPlayerHandleSetMonData(void);
|
||||
@@ -390,7 +387,7 @@ static void FreeMonSpriteAfterSwitchOutAnim(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
RecordedPlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -520,7 +517,7 @@ static void RecordedPlayerHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
RecordedPlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1404,7 +1401,7 @@ static void RecordedPlayerHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
}
|
||||
|
||||
@@ -1417,7 +1414,7 @@ static void ChooseActionInBattlePalace(void)
|
||||
{
|
||||
if (gBattleCommunication[4] >= gBattlersCount / 2)
|
||||
{
|
||||
BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
|
||||
RecordedPlayerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
@@ -1430,7 +1427,7 @@ static void RecordedPlayerHandleChooseAction(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
BtlController_EmitTwoReturnValues(1, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, RecordedBattle_GetBattlerAction(gActiveBattler), 0);
|
||||
RecordedPlayerBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
@@ -1444,13 +1441,13 @@ static void RecordedPlayerHandleChooseMove(void)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_PALACE)
|
||||
{
|
||||
BtlController_EmitTwoReturnValues(1, 10, ChooseMoveAndTargetInBattlePalace());
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, ChooseMoveAndTargetInBattlePalace());
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 moveId = RecordedBattle_GetBattlerAction(gActiveBattler);
|
||||
u8 target = RecordedBattle_GetBattlerAction(gActiveBattler);
|
||||
BtlController_EmitTwoReturnValues(1, 10, moveId | (target << 8));
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, moveId | (target << 8));
|
||||
}
|
||||
|
||||
RecordedPlayerBufferExecCompleted();
|
||||
@@ -1464,7 +1461,7 @@ static void RecordedPlayerHandleChooseItem(void)
|
||||
static void RecordedPlayerHandleChoosePokemon(void)
|
||||
{
|
||||
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = RecordedBattle_GetBattlerAction(gActiveBattler);
|
||||
BtlController_EmitChosenMonReturnValue(1, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
|
||||
BtlController_EmitChosenMonReturnValue(BUFFER_B, *(gBattleStruct->monToSwitchIntoId + gActiveBattler), NULL);
|
||||
RecordedPlayerBufferExecCompleted();
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/rgb.h"
|
||||
|
||||
// this file's functions
|
||||
static void SafariHandleGetMonData(void);
|
||||
static void SafariHandleGetRawMonData(void);
|
||||
static void SafariHandleSetMonData(void);
|
||||
@@ -177,16 +176,16 @@ static void HandleInputChooseAction(void)
|
||||
switch (gActionSelectionCursor[gActiveBattler])
|
||||
{
|
||||
case 0:
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_BALL, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_BALL, 0);
|
||||
break;
|
||||
case 1:
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_POKEBLOCK, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_POKEBLOCK, 0);
|
||||
break;
|
||||
case 2:
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_GO_NEAR, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_GO_NEAR, 0);
|
||||
break;
|
||||
case 3:
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_SAFARI_RUN, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_SAFARI_RUN, 0);
|
||||
break;
|
||||
}
|
||||
SafariBufferExecCompleted();
|
||||
@@ -241,7 +240,7 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
SafariBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -281,7 +280,7 @@ static void CompleteWhenChosePokeblock(void)
|
||||
{
|
||||
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
|
||||
{
|
||||
BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
|
||||
BtlController_EmitOneReturnValue(BUFFER_B, gSpecialVar_ItemId);
|
||||
SafariBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
@@ -425,7 +424,7 @@ static void SafariHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
}
|
||||
|
||||
@@ -452,14 +451,14 @@ static void SafariHandleChooseAction(void)
|
||||
s32 i;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
|
||||
BattlePutTextOnWindow(gText_SafariZoneMenu, 2);
|
||||
BattlePutTextOnWindow(gText_SafariZoneMenu, B_WIN_ACTION_MENU);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
ActionSelectionDestroyCursorAt(i);
|
||||
|
||||
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo2);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 1);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
|
||||
}
|
||||
|
||||
static void SafariHandleYesNoBox(void)
|
||||
|
||||
@@ -196,7 +196,7 @@ static void WallyHandleActions(void)
|
||||
if (--gBattleStruct->wallyWaitFrames == 0)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, 0);
|
||||
WallyBufferExecCompleted();
|
||||
gBattleStruct->wallyBattleState++;
|
||||
gBattleStruct->wallyMovesState = 0;
|
||||
@@ -207,7 +207,7 @@ static void WallyHandleActions(void)
|
||||
if (--gBattleStruct->wallyWaitFrames == 0)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_MOVE, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_MOVE, 0);
|
||||
WallyBufferExecCompleted();
|
||||
gBattleStruct->wallyBattleState++;
|
||||
gBattleStruct->wallyMovesState = 0;
|
||||
@@ -217,7 +217,7 @@ static void WallyHandleActions(void)
|
||||
case 3:
|
||||
if (--gBattleStruct->wallyWaitFrames == 0)
|
||||
{
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_WALLY_THROW, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_WALLY_THROW, 0);
|
||||
WallyBufferExecCompleted();
|
||||
gBattleStruct->wallyBattleState++;
|
||||
gBattleStruct->wallyMovesState = 0;
|
||||
@@ -238,7 +238,7 @@ static void WallyHandleActions(void)
|
||||
if (--gBattleStruct->wallyWaitFrames == 0)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
BtlController_EmitTwoReturnValues(1, B_ACTION_USE_ITEM, 0);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, B_ACTION_USE_ITEM, 0);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
break;
|
||||
@@ -253,7 +253,7 @@ static void CompleteOnBattlerSpriteCallbackDummy(void)
|
||||
|
||||
static void CompleteOnInactiveTextPrinter(void)
|
||||
{
|
||||
if (!IsTextPrinterActive(0))
|
||||
if (!IsTextPrinterActive(B_WIN_MSG))
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -278,7 +278,7 @@ static void CompleteOnChosenItem(void)
|
||||
{
|
||||
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
|
||||
{
|
||||
BtlController_EmitOneReturnValue(1, gSpecialVar_ItemId);
|
||||
BtlController_EmitOneReturnValue(BUFFER_B, gSpecialVar_ItemId);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
}
|
||||
@@ -444,7 +444,7 @@ static void WallyHandleGetMonData(void)
|
||||
monToCheck >>= 1;
|
||||
}
|
||||
}
|
||||
BtlController_EmitDataTransfer(1, size, monData);
|
||||
BtlController_EmitDataTransfer(BUFFER_B, size, monData);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
|
||||
@@ -1178,7 +1178,7 @@ static void WallyHandlePrintString(void)
|
||||
gBattle_BG0_Y = 0;
|
||||
stringId = (u16*)(&gBattleBufferA[gActiveBattler][2]);
|
||||
BufferStringBattle(*stringId);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gBattlerControllerFuncs[gActiveBattler] = CompleteOnInactiveTextPrinter;
|
||||
}
|
||||
|
||||
@@ -1205,14 +1205,14 @@ static void WallyHandleChooseAction(void)
|
||||
s32 i;
|
||||
|
||||
gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3;
|
||||
BattlePutTextOnWindow(gText_BattleMenu, 2);
|
||||
BattlePutTextOnWindow(gText_BattleMenu, B_WIN_ACTION_MENU);
|
||||
|
||||
for (i = 0; i < 4; i++)
|
||||
ActionSelectionDestroyCursorAt(i);
|
||||
|
||||
ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillWallyDo);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 1);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_ACTION_PROMPT);
|
||||
}
|
||||
|
||||
static void WallyHandleYesNoBox(void)
|
||||
@@ -1241,7 +1241,7 @@ static void WallyHandleChooseMove(void)
|
||||
if (--gBattleStruct->wallyMoveFrames == 0)
|
||||
{
|
||||
PlaySE(SE_SELECT);
|
||||
BtlController_EmitTwoReturnValues(1, 10, 0x100);
|
||||
BtlController_EmitTwoReturnValues(BUFFER_B, 10, 0x100);
|
||||
WallyBufferExecCompleted();
|
||||
}
|
||||
break;
|
||||
|
||||
+27
-21
@@ -660,14 +660,14 @@ static void PrepareBufferDataTransfer(u8 bufferId, u8 *data, u16 size)
|
||||
{
|
||||
switch (bufferId)
|
||||
{
|
||||
case 0:
|
||||
case BUFFER_A:
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
gBattleBufferA[gActiveBattler][i] = *data;
|
||||
data++;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case BUFFER_B:
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
gBattleBufferB[gActiveBattler][i] = *data;
|
||||
@@ -737,7 +737,7 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data)
|
||||
|
||||
static void Task_HandleSendLinkBuffersData(u8 taskId)
|
||||
{
|
||||
u16 var;
|
||||
u16 numPlayers;
|
||||
u16 blockSize;
|
||||
|
||||
switch (gTasks[taskId].data[11])
|
||||
@@ -759,11 +759,11 @@ static void Task_HandleSendLinkBuffersData(u8 taskId)
|
||||
else
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
|
||||
var = 2;
|
||||
numPlayers = 2;
|
||||
else
|
||||
var = (gBattleTypeFlags & BATTLE_TYPE_MULTI) ? 4 : 2;
|
||||
numPlayers = (gBattleTypeFlags & BATTLE_TYPE_MULTI) ? 4 : 2;
|
||||
|
||||
if (GetLinkPlayerCount_2() >= var)
|
||||
if (GetLinkPlayerCount_2() >= numPlayers)
|
||||
{
|
||||
if (IsLinkMaster())
|
||||
{
|
||||
@@ -964,10 +964,10 @@ void BtlController_EmitSwitchInAnim(u8 bufferId, u8 partyId, bool8 dontClearSubs
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitReturnMonToBall(u8 bufferId, u8 arg1)
|
||||
void BtlController_EmitReturnMonToBall(u8 bufferId, bool8 skipAnim)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_RETURNMONTOBALL;
|
||||
sBattleBuffersTransferData[1] = arg1;
|
||||
sBattleBuffersTransferData[1] = skipAnim;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 2);
|
||||
}
|
||||
|
||||
@@ -1134,12 +1134,13 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID)
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct BattleMsgData) + 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitChooseAction(u8 bufferId, u8 arg1, u16 arg2)
|
||||
// itemId only relevant for B_ACTION_USE_ITEM
|
||||
void BtlController_EmitChooseAction(u8 bufferId, u8 action, u16 itemId)
|
||||
{
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_CHOOSEACTION;
|
||||
sBattleBuffersTransferData[1] = arg1;
|
||||
sBattleBuffersTransferData[2] = arg2;
|
||||
sBattleBuffersTransferData[3] = (arg2 & 0xFF00) >> 8;
|
||||
sBattleBuffersTransferData[1] = action;
|
||||
sBattleBuffersTransferData[2] = itemId;
|
||||
sBattleBuffersTransferData[3] = (itemId & 0xFF00) >> 8;
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
@@ -1177,7 +1178,7 @@ void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1)
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8 *arg4)
|
||||
void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abilityId, u8 *data)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
@@ -1186,7 +1187,7 @@ void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 slotId, u8 abili
|
||||
sBattleBuffersTransferData[2] = slotId;
|
||||
sBattleBuffersTransferData[3] = abilityId;
|
||||
for (i = 0; i < 3; i++)
|
||||
sBattleBuffersTransferData[4 + i] = arg4[i];
|
||||
sBattleBuffersTransferData[4 + i] = data[i];
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // Only 7 bytes were written.
|
||||
}
|
||||
|
||||
@@ -1280,15 +1281,19 @@ void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, void *data
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7);
|
||||
}
|
||||
|
||||
void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *unusedDumbDataParameter)
|
||||
// Unused
|
||||
void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_PLAYBGM;
|
||||
sBattleBuffersTransferData[1] = songId;
|
||||
sBattleBuffersTransferData[2] = (songId & 0xFF00) >> 8;
|
||||
for (i = 0; i < songId; i++) // ????
|
||||
sBattleBuffersTransferData[3 + i] = *(u8*)(unusedDumbDataParameter++);
|
||||
|
||||
// Nonsense loop using songId as a size
|
||||
// Would go out of bounds for any song id after SE_RG_BAG_POCKET (253)
|
||||
for (i = 0; i < songId; i++)
|
||||
sBattleBuffersTransferData[3 + i] = *(u8*)(data++);
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3);
|
||||
}
|
||||
|
||||
@@ -1442,8 +1447,8 @@ void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* h
|
||||
s32 i;
|
||||
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
|
||||
sBattleBuffersTransferData[1] = flags & 0x7F;
|
||||
sBattleBuffersTransferData[2] = (flags & 0x80) >> 7; // If true, skip delay after drawing. True during intro
|
||||
sBattleBuffersTransferData[1] = flags & ~PARTY_SUMM_SKIP_DRAW_DELAY; // If true, skip player side
|
||||
sBattleBuffersTransferData[2] = (flags & PARTY_SUMM_SKIP_DRAW_DELAY) >> 7; // If true, skip delay after drawing. True during intro
|
||||
sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY;
|
||||
for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); i++)
|
||||
sBattleBuffersTransferData[4 + i] = *(i + (u8*)(hpAndStatus));
|
||||
@@ -1486,11 +1491,12 @@ void BtlController_EmitBattleAnimation(u8 bufferId, u8 animationId, u16 argument
|
||||
PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4);
|
||||
}
|
||||
|
||||
void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 arg1, bool32 record)
|
||||
// mode is a LINK_STANDBY_* constant
|
||||
void BtlController_EmitLinkStandbyMsg(u8 bufferId, u8 mode, bool32 record)
|
||||
{
|
||||
bool8 record_ = record;
|
||||
sBattleBuffersTransferData[0] = CONTROLLER_LINKSTANDBYMSG;
|
||||
sBattleBuffersTransferData[1] = arg1;
|
||||
sBattleBuffersTransferData[1] = mode;
|
||||
|
||||
if (record_)
|
||||
sBattleBuffersTransferData[3] = sBattleBuffersTransferData[2] = RecordedBattle_BufferNewBattlerData(&sBattleBuffersTransferData[4]);
|
||||
|
||||
+12
-15
@@ -26,10 +26,6 @@
|
||||
#include "constants/rgb.h"
|
||||
#include "constants/battle_palace.h"
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE1;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE2;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
extern const u8 gBattlePalaceNatureToMoveTarget[];
|
||||
extern const u8 * const gBattleAnims_General[];
|
||||
extern const u8 * const gBattleAnims_Special[];
|
||||
@@ -115,7 +111,7 @@ u16 ChooseMoveAndTargetInBattlePalace(void)
|
||||
s32 i, var1, var2;
|
||||
s32 chosenMoveId = -1;
|
||||
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct*)(&gBattleBufferA[gActiveBattler][4]);
|
||||
u8 unusableMovesBits = CheckMoveLimitations(gActiveBattler, 0, 0xFF);
|
||||
u8 unusableMovesBits = CheckMoveLimitations(gActiveBattler, 0, MOVE_LIMITATIONS_ALL);
|
||||
s32 percent = Random() % 100;
|
||||
|
||||
// Heavy variable re-use here makes this hard to read without defines
|
||||
@@ -438,9 +434,10 @@ bool8 TryHandleLaunchBattleTableAnimation(u8 activeBattler, u8 atkBattler, u8 de
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & 0x80))
|
||||
if (tableId == B_ANIM_CASTFORM_CHANGE && (argument & CASTFORM_SUBSTITUTE))
|
||||
{
|
||||
gBattleMonForms[activeBattler] = (argument & ~(0x80));
|
||||
// If Castform is behind substitute, set the new form but skip the animation
|
||||
gBattleMonForms[activeBattler] = (argument & ~CASTFORM_SUBSTITUTE);
|
||||
return TRUE;
|
||||
}
|
||||
if (gBattleSpritesDataPtr->battlerData[activeBattler].behindSubstitute
|
||||
@@ -593,7 +590,7 @@ void BattleLoadOpponentMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
|
||||
if (species == SPECIES_CASTFORM)
|
||||
{
|
||||
paletteOffset = 0x100 + battlerId * 16;
|
||||
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
|
||||
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
|
||||
LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
|
||||
}
|
||||
|
||||
@@ -656,7 +653,7 @@ void BattleLoadPlayerMonSpriteGfx(struct Pokemon *mon, u8 battlerId)
|
||||
if (species == SPECIES_CASTFORM)
|
||||
{
|
||||
paletteOffset = 0x100 + battlerId * 16;
|
||||
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
|
||||
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
|
||||
LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerId]], paletteOffset, 0x20);
|
||||
}
|
||||
|
||||
@@ -895,7 +892,7 @@ void CopyBattleSpriteInvisibility(u8 battlerId)
|
||||
gBattleSpritesDataPtr->battlerData[battlerId].invisible = gSprites[gBattlerSpriteIds[battlerId]].invisible;
|
||||
}
|
||||
|
||||
void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform)
|
||||
void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 castform)
|
||||
{
|
||||
u16 paletteOffset;
|
||||
u32 personalityValue;
|
||||
@@ -903,7 +900,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
|
||||
u8 position;
|
||||
const u32 *lzPaletteData;
|
||||
|
||||
if (notTransform)
|
||||
if (castform)
|
||||
{
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], gBattleSpritesDataPtr->animationData->animArg);
|
||||
paletteOffset = 0x100 + battlerAtk * 16;
|
||||
@@ -976,8 +973,8 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool8 notTransform
|
||||
if (targetSpecies == SPECIES_CASTFORM)
|
||||
{
|
||||
gSprites[gBattlerSpriteIds[battlerAtk]].anims = gMonFrontAnimsPtrTable[targetSpecies];
|
||||
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[0]);
|
||||
LoadPalette(gBattleStruct->castformPalette[0] + gBattleMonForms[battlerDef] * 16, paletteOffset, 32);
|
||||
LZDecompressWram(lzPaletteData, gBattleStruct->castformPalette[CASTFORM_NORMAL]);
|
||||
LoadPalette(gBattleStruct->castformPalette[gBattleMonForms[battlerDef]], paletteOffset, 32);
|
||||
}
|
||||
|
||||
BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
|
||||
@@ -1251,11 +1248,11 @@ void AllocateMonSpritesGfx(void)
|
||||
|
||||
gMonSpritesGfxPtr = NULL;
|
||||
gMonSpritesGfxPtr = AllocZeroed(sizeof(*gMonSpritesGfxPtr));
|
||||
gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x8000);
|
||||
gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(MON_PIC_SIZE * 4 * MAX_BATTLERS_COUNT);
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
gMonSpritesGfxPtr->sprites.ptr[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000);
|
||||
gMonSpritesGfxPtr->sprites.ptr[i] = gMonSpritesGfxPtr->firstDecompressed + (i * MON_PIC_SIZE * 4);
|
||||
*(gMonSpritesGfxPtr->templates + i) = gBattlerSpriteTemplates[i];
|
||||
|
||||
for (j = 0; j < 4; j++)
|
||||
|
||||
+11
-12
@@ -584,36 +584,35 @@ static void BattleIntroSlidePartner(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8118FBC(int bgId, u8 arg1, u8 arg2, u8 battlerPosition, u8 arg4, u8 *arg5, u16 *arg6, u16 tilesOffset)
|
||||
void DrawBattlerOnBg(int bgId, u8 x, u8 y, u8 battlerPosition, u8 paletteId, u8 *tiles, u16 *tilemap, u16 tilesOffset)
|
||||
{
|
||||
int i, j;
|
||||
u8 battler = GetBattlerAtPosition(battlerPosition);
|
||||
int offset = tilesOffset;
|
||||
CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], arg5, BG_SCREEN_SIZE);
|
||||
LoadBgTiles(bgId, arg5, 0x1000, tilesOffset);
|
||||
for (i = arg2; i < arg2 + 8; i++)
|
||||
CpuCopy16(gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], tiles, BG_SCREEN_SIZE);
|
||||
LoadBgTiles(bgId, tiles, 0x1000, tilesOffset);
|
||||
for (i = y; i < y + 8; i++)
|
||||
{
|
||||
for (j = arg1; j < arg1 + 8; j++)
|
||||
for (j = x; j < x + 8; j++)
|
||||
{
|
||||
arg6[i * 32 + j] = offset | (arg4 << 12);
|
||||
tilemap[i * 32 + j] = offset | (paletteId << 12);
|
||||
offset++;
|
||||
}
|
||||
}
|
||||
|
||||
LoadBgTilemap(bgId, arg6, BG_SCREEN_SIZE, 0);
|
||||
LoadBgTilemap(bgId, tilemap, BG_SCREEN_SIZE, 0);
|
||||
}
|
||||
|
||||
void unref_sub_8119094(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, u16 arg5, u8 arg6, u8 arg7)
|
||||
static void DrawBattlerOnBgDMA(u8 x, u8 y, u8 battlerPosition, u8 arg3, u8 paletteId, u16 arg5, u8 arg6, u8 arg7)
|
||||
{
|
||||
int i, j, offset;
|
||||
|
||||
DmaCopy16(3, gMonSpritesGfxPtr->sprites.ptr[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE);
|
||||
offset = (arg5 >> 5) - (arg7 << 9);
|
||||
for (i = arg1; i < arg1 + 8; i++)
|
||||
for (i = y; i < y + 8; i++)
|
||||
{
|
||||
for (j = arg0; j < arg0 + 8; j++)
|
||||
for (j = x; j < x + 8; j++)
|
||||
{
|
||||
*((u16 *)(BG_VRAM) + (i * 32) + (j + (arg6 << 10))) = offset | (arg4 << 12);
|
||||
*((u16 *)(BG_VRAM) + (i * 32) + (j + (arg6 << 10))) = offset | (paletteId << 12);
|
||||
offset++;
|
||||
}
|
||||
}
|
||||
|
||||
+318
-268
File diff suppressed because it is too large
Load Diff
+198
-198
@@ -1480,8 +1480,7 @@ static const u8 sDummyWeirdStatusString[] = {EOS, EOS, EOS, EOS, EOS, EOS, EOS,
|
||||
|
||||
static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
{
|
||||
// The corresponding WindowTemplate is gStandardBattleWindowTemplates[] within src/battle_bg.c
|
||||
{ // 0 Standard battle message
|
||||
[B_WIN_MSG] = {
|
||||
.fillValue = PIXEL_FILL(0xF),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1489,11 +1488,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 1,
|
||||
.fgColor = 1,
|
||||
.bgColor = 15,
|
||||
.shadowColor = 6,
|
||||
.fgColor = TEXT_COLOR_WHITE,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_6,
|
||||
.shadowColor = TEXT_COLOR_GREEN,
|
||||
},
|
||||
{ // 1 "What will (pokemon) do?"
|
||||
[B_WIN_ACTION_PROMPT] = {
|
||||
.fillValue = PIXEL_FILL(0xF),
|
||||
.fontId = 1,
|
||||
.x = 1,
|
||||
@@ -1501,11 +1500,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 1,
|
||||
.bgColor = 15,
|
||||
.shadowColor = 6,
|
||||
.fgColor = TEXT_COLOR_WHITE,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_6,
|
||||
.shadowColor = TEXT_COLOR_GREEN,
|
||||
},
|
||||
{ // 2 "Fight/Pokemon/Bag/Run"
|
||||
[B_WIN_ACTION_MENU] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1513,11 +1512,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 3 Top left move
|
||||
[B_WIN_MOVE_NAME_1] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1525,11 +1524,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 4 Top right move
|
||||
[B_WIN_MOVE_NAME_2] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1537,11 +1536,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 5 Bottom left move
|
||||
[B_WIN_MOVE_NAME_3] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1549,11 +1548,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 6 Bottom right move
|
||||
[B_WIN_MOVE_NAME_4] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1561,11 +1560,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 7 "PP"
|
||||
[B_WIN_PP] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1573,11 +1572,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 12,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 11,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_3,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_2,
|
||||
},
|
||||
{ // 8
|
||||
[B_WIN_DUMMY] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1585,11 +1584,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 9 PP remaining
|
||||
[B_WIN_PP_REMAINING] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = 2,
|
||||
@@ -1597,11 +1596,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 12,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 11,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_3,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_2,
|
||||
},
|
||||
{ // 10 "type"
|
||||
[B_WIN_MOVE_TYPE] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1609,11 +1608,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 11 "switch which?"
|
||||
[B_WIN_SWITCH_PROMPT] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1621,11 +1620,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 12 "gText_BattleYesNoChoice"
|
||||
[B_WIN_YESNO] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1633,11 +1632,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 13
|
||||
[B_WIN_LEVEL_UP_BOX] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1645,11 +1644,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 14
|
||||
[B_WIN_LEVEL_UP_BANNER] = {
|
||||
.fillValue = PIXEL_FILL(0),
|
||||
.fontId = 1,
|
||||
.x = 32,
|
||||
@@ -1657,11 +1656,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 1,
|
||||
.bgColor = 0,
|
||||
.shadowColor = 2,
|
||||
.fgColor = TEXT_COLOR_WHITE,
|
||||
.bgColor = TEXT_COLOR_TRANSPARENT,
|
||||
.shadowColor = TEXT_COLOR_DARK_GRAY,
|
||||
},
|
||||
{ // 15
|
||||
[B_WIN_VS_PLAYER] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1669,11 +1668,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 16
|
||||
[B_WIN_VS_OPPONENT] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1681,11 +1680,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 17
|
||||
[B_WIN_VS_MULTI_PLAYER_1] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1693,11 +1692,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 18
|
||||
[B_WIN_VS_MULTI_PLAYER_2] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1705,11 +1704,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 19
|
||||
[B_WIN_VS_MULTI_PLAYER_3] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1717,11 +1716,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 20
|
||||
[B_WIN_VS_MULTI_PLAYER_4] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1729,11 +1728,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 21
|
||||
[B_WIN_VS_OUTCOME_DRAW] = {
|
||||
.fillValue = PIXEL_FILL(0),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1741,11 +1740,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 1,
|
||||
.bgColor = 0,
|
||||
.shadowColor = 6,
|
||||
.fgColor = TEXT_COLOR_WHITE,
|
||||
.bgColor = TEXT_COLOR_TRANSPARENT,
|
||||
.shadowColor = TEXT_COLOR_GREEN,
|
||||
},
|
||||
{ // 22
|
||||
[B_WIN_VS_OUTCOME_LEFT] = {
|
||||
.fillValue = PIXEL_FILL(0),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1753,11 +1752,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 1,
|
||||
.bgColor = 0,
|
||||
.shadowColor = 6,
|
||||
.fgColor = TEXT_COLOR_WHITE,
|
||||
.bgColor = TEXT_COLOR_TRANSPARENT,
|
||||
.shadowColor = TEXT_COLOR_GREEN,
|
||||
},
|
||||
{ // 23
|
||||
[B_WIN_VS_OUTCOME_RIGHT] = {
|
||||
.fillValue = PIXEL_FILL(0x0),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1765,15 +1764,15 @@ static const struct BattleWindowText sTextOnWindowsInfo_Normal[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 1,
|
||||
.bgColor = 0,
|
||||
.shadowColor = 6,
|
||||
.fgColor = TEXT_COLOR_WHITE,
|
||||
.bgColor = TEXT_COLOR_TRANSPARENT,
|
||||
.shadowColor = TEXT_COLOR_GREEN,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
{
|
||||
{ // 0
|
||||
[B_WIN_MSG] = {
|
||||
.fillValue = PIXEL_FILL(0xF),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1781,11 +1780,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 1,
|
||||
.fgColor = 1,
|
||||
.bgColor = 15,
|
||||
.shadowColor = 6,
|
||||
.fgColor = TEXT_COLOR_WHITE,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_6,
|
||||
.shadowColor = TEXT_COLOR_GREEN,
|
||||
},
|
||||
{ // 1
|
||||
[B_WIN_ACTION_PROMPT] = {
|
||||
.fillValue = PIXEL_FILL(0xF),
|
||||
.fontId = 1,
|
||||
.x = 1,
|
||||
@@ -1793,11 +1792,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 1,
|
||||
.bgColor = 15,
|
||||
.shadowColor = 6,
|
||||
.fgColor = TEXT_COLOR_WHITE,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_6,
|
||||
.shadowColor = TEXT_COLOR_GREEN,
|
||||
},
|
||||
{ // 2
|
||||
[B_WIN_ACTION_MENU] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1805,11 +1804,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 3
|
||||
[B_WIN_MOVE_NAME_1] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1817,11 +1816,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 4
|
||||
[B_WIN_MOVE_NAME_2] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1829,11 +1828,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 5
|
||||
[B_WIN_MOVE_NAME_3] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1841,11 +1840,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 6
|
||||
[B_WIN_MOVE_NAME_4] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1853,11 +1852,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 7
|
||||
[B_WIN_PP] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1865,11 +1864,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 12,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 11,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_3,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_2,
|
||||
},
|
||||
{ // 8
|
||||
[B_WIN_DUMMY] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1877,11 +1876,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 9
|
||||
[B_WIN_PP_REMAINING] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = 2,
|
||||
@@ -1889,11 +1888,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 12,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 11,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_3,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_2,
|
||||
},
|
||||
{ // 10
|
||||
[B_WIN_MOVE_TYPE] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1901,11 +1900,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 11
|
||||
[B_WIN_SWITCH_PROMPT] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 7,
|
||||
.x = 0,
|
||||
@@ -1913,11 +1912,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 12
|
||||
[B_WIN_YESNO] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1925,11 +1924,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 13
|
||||
[B_WIN_LEVEL_UP_BOX] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -1937,11 +1936,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 14
|
||||
[B_WIN_LEVEL_UP_BANNER] = {
|
||||
.fillValue = PIXEL_FILL(0),
|
||||
.fontId = 1,
|
||||
.x = 32,
|
||||
@@ -1949,11 +1948,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 1,
|
||||
.bgColor = 0,
|
||||
.shadowColor = 2,
|
||||
.fgColor = TEXT_COLOR_WHITE,
|
||||
.bgColor = TEXT_COLOR_TRANSPARENT,
|
||||
.shadowColor = TEXT_COLOR_DARK_GRAY,
|
||||
},
|
||||
{ // 15
|
||||
[ARENA_WIN_PLAYER_NAME] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1961,11 +1960,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 1,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_COLOR_WHITE,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 16
|
||||
[ARENA_WIN_VS] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1973,11 +1972,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 17
|
||||
[ARENA_WIN_OPPONENT_NAME] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1985,11 +1984,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 18
|
||||
[ARENA_WIN_MIND] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -1997,11 +1996,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 19
|
||||
[ARENA_WIN_SKILL] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -2009,11 +2008,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 20
|
||||
[ARENA_WIN_BODY] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -2021,11 +2020,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 21
|
||||
[ARENA_WIN_JUDGEMENT_TITLE] = {
|
||||
.fillValue = PIXEL_FILL(0xE),
|
||||
.fontId = 1,
|
||||
.x = -1,
|
||||
@@ -2033,11 +2032,11 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 0,
|
||||
.fgColor = 13,
|
||||
.bgColor = 14,
|
||||
.shadowColor = 15,
|
||||
.fgColor = TEXT_DYNAMIC_COLOR_4,
|
||||
.bgColor = TEXT_DYNAMIC_COLOR_5,
|
||||
.shadowColor = TEXT_DYNAMIC_COLOR_6,
|
||||
},
|
||||
{ // 22
|
||||
[ARENA_WIN_JUDGEMENT_TEXT] = {
|
||||
.fillValue = PIXEL_FILL(0x1),
|
||||
.fontId = 1,
|
||||
.x = 0,
|
||||
@@ -2045,15 +2044,16 @@ static const struct BattleWindowText sTextOnWindowsInfo_Arena[] =
|
||||
.letterSpacing = 0,
|
||||
.lineSpacing = 0,
|
||||
.speed = 1,
|
||||
.fgColor = 2,
|
||||
.bgColor = 1,
|
||||
.shadowColor = 3,
|
||||
.fgColor = TEXT_COLOR_DARK_GRAY,
|
||||
.bgColor = TEXT_COLOR_WHITE,
|
||||
.shadowColor = TEXT_COLOR_LIGHT_GRAY,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct BattleWindowText *const sBattleTextOnWindowsInfo[] =
|
||||
{
|
||||
sTextOnWindowsInfo_Normal, sTextOnWindowsInfo_Arena
|
||||
[B_WIN_TYPE_NORMAL] = sTextOnWindowsInfo_Normal,
|
||||
[B_WIN_TYPE_ARENA] = sTextOnWindowsInfo_Arena
|
||||
};
|
||||
|
||||
static const u8 sRecordedBattleTextSpeeds[] = {8, 4, 1, 0};
|
||||
@@ -3054,9 +3054,9 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
|
||||
struct TextPrinterTemplate printerTemplate;
|
||||
u8 speed;
|
||||
|
||||
if (windowId & 0x80)
|
||||
if (windowId & B_WIN_COPYTOVRAM)
|
||||
{
|
||||
windowId &= ~(0x80);
|
||||
windowId &= ~B_WIN_COPYTOVRAM;
|
||||
copyToVram = FALSE;
|
||||
}
|
||||
else
|
||||
@@ -3086,17 +3086,17 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId)
|
||||
printerTemplate.x = printerTemplate.currentX = alignX;
|
||||
}
|
||||
|
||||
if (windowId == 0x16)
|
||||
gTextFlags.useAlternateDownArrow = 0;
|
||||
if (windowId == ARENA_WIN_JUDGEMENT_TEXT)
|
||||
gTextFlags.useAlternateDownArrow = FALSE;
|
||||
else
|
||||
gTextFlags.useAlternateDownArrow = 1;
|
||||
gTextFlags.useAlternateDownArrow = TRUE;
|
||||
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED))
|
||||
gTextFlags.autoScroll = 1;
|
||||
gTextFlags.autoScroll = TRUE;
|
||||
else
|
||||
gTextFlags.autoScroll = 0;
|
||||
gTextFlags.autoScroll = FALSE;
|
||||
|
||||
if (windowId == 0 || windowId == 0x16)
|
||||
if (windowId == B_WIN_MSG || windowId == ARENA_WIN_JUDGEMENT_TEXT)
|
||||
{
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
|
||||
speed = 1;
|
||||
|
||||
+401
-382
File diff suppressed because it is too large
Load Diff
+28
-35
@@ -319,7 +319,7 @@ const struct RematchTrainer gRematchTable[REMATCH_TABLE_ENTRIES] =
|
||||
[REMATCH_TRENT] = REMATCH(TRAINER_TRENT_1, TRAINER_TRENT_2, TRAINER_TRENT_3, TRAINER_TRENT_4, TRAINER_TRENT_5, ROUTE112),
|
||||
[REMATCH_SAWYER] = REMATCH(TRAINER_SAWYER_1, TRAINER_SAWYER_2, TRAINER_SAWYER_3, TRAINER_SAWYER_4, TRAINER_SAWYER_5, MT_CHIMNEY),
|
||||
[REMATCH_KIRA_AND_DAN] = REMATCH(TRAINER_KIRA_AND_DAN_1, TRAINER_KIRA_AND_DAN_2, TRAINER_KIRA_AND_DAN_3, TRAINER_KIRA_AND_DAN_4, TRAINER_KIRA_AND_DAN_5, ABANDONED_SHIP_ROOMS2_1F),
|
||||
[REMATCH_WALLY_3] = REMATCH(TRAINER_WALLY_VR_2, TRAINER_WALLY_VR_3, TRAINER_WALLY_VR_4, TRAINER_WALLY_VR_5, TRAINER_WALLY_VR_5, VICTORY_ROAD_1F),
|
||||
[REMATCH_WALLY_VR] = REMATCH(TRAINER_WALLY_VR_2, TRAINER_WALLY_VR_3, TRAINER_WALLY_VR_4, TRAINER_WALLY_VR_5, TRAINER_WALLY_VR_5, VICTORY_ROAD_1F),
|
||||
[REMATCH_ROXANNE] = REMATCH(TRAINER_ROXANNE_1, TRAINER_ROXANNE_2, TRAINER_ROXANNE_3, TRAINER_ROXANNE_4, TRAINER_ROXANNE_5, RUSTBORO_CITY),
|
||||
[REMATCH_BRAWLY] = REMATCH(TRAINER_BRAWLY_1, TRAINER_BRAWLY_2, TRAINER_BRAWLY_3, TRAINER_BRAWLY_4, TRAINER_BRAWLY_5, DEWFORD_TOWN),
|
||||
[REMATCH_WATTSON] = REMATCH(TRAINER_WATTSON_1, TRAINER_WATTSON_2, TRAINER_WATTSON_3, TRAINER_WATTSON_4, TRAINER_WATTSON_5, MAUVILLE_CITY),
|
||||
@@ -460,12 +460,12 @@ static void DoTrainerBattle(void)
|
||||
TryUpdateGymLeaderRematchFromTrainer();
|
||||
}
|
||||
|
||||
static void sub_80B0828(void)
|
||||
static void DoBattlePyramidTrainerHillBattle(void)
|
||||
{
|
||||
if (InBattlePyramid())
|
||||
CreateBattleStartTask(GetSpecialBattleTransition(10), 0);
|
||||
CreateBattleStartTask(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PYRAMID), 0);
|
||||
else
|
||||
CreateBattleStartTask(GetSpecialBattleTransition(11), 0);
|
||||
CreateBattleStartTask(GetSpecialBattleTransition(B_TRANSITION_GROUP_TRAINER_HILL), 0);
|
||||
|
||||
IncrementGameStat(GAME_STAT_TOTAL_BATTLES);
|
||||
IncrementGameStat(GAME_STAT_TRAINER_BATTLES);
|
||||
@@ -853,16 +853,7 @@ static u8 GetTrainerBattleTransition(void)
|
||||
return sBattleTransitionTable_Trainer[transitionType][1];
|
||||
}
|
||||
|
||||
// 0: Battle Tower
|
||||
// 3: Battle Dome
|
||||
// 4: Battle Palace
|
||||
// 5: Battle Arena
|
||||
// 6: Battle Factory
|
||||
// 7: Battle Pike
|
||||
// 10: Battle Pyramid
|
||||
// 11: Trainer Hill
|
||||
// 12: Secret Base
|
||||
// 13: E-Reader
|
||||
#define RANDOM_TRANSITION(table)(table[Random() % ARRAY_COUNT(table)])
|
||||
u8 GetSpecialBattleTransition(s32 id)
|
||||
{
|
||||
u16 var;
|
||||
@@ -873,35 +864,35 @@ u8 GetSpecialBattleTransition(s32 id)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
case B_TRANSITION_GROUP_TRAINER_HILL:
|
||||
case B_TRANSITION_GROUP_SECRET_BASE:
|
||||
case B_TRANSITION_GROUP_E_READER:
|
||||
return B_TRANSITION_POKEBALLS_TRAIL;
|
||||
case 10:
|
||||
return sBattleTransitionTable_BattlePyramid[Random() % ARRAY_COUNT(sBattleTransitionTable_BattlePyramid)];
|
||||
case 3:
|
||||
return sBattleTransitionTable_BattleDome[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleDome)];
|
||||
case B_TRANSITION_GROUP_B_PYRAMID:
|
||||
return RANDOM_TRANSITION(sBattleTransitionTable_BattlePyramid);
|
||||
case B_TRANSITION_GROUP_B_DOME:
|
||||
return RANDOM_TRANSITION(sBattleTransitionTable_BattleDome);
|
||||
}
|
||||
|
||||
if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS)
|
||||
return sBattleTransitionTable_BattleFrontier[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleFrontier)];
|
||||
return RANDOM_TRANSITION(sBattleTransitionTable_BattleFrontier);
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case 11:
|
||||
case 12:
|
||||
case 13:
|
||||
case B_TRANSITION_GROUP_TRAINER_HILL:
|
||||
case B_TRANSITION_GROUP_SECRET_BASE:
|
||||
case B_TRANSITION_GROUP_E_READER:
|
||||
return B_TRANSITION_BIG_POKEBALL;
|
||||
case 10:
|
||||
return sBattleTransitionTable_BattlePyramid[Random() % ARRAY_COUNT(sBattleTransitionTable_BattlePyramid)];
|
||||
case 3:
|
||||
return sBattleTransitionTable_BattleDome[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleDome)];
|
||||
case B_TRANSITION_GROUP_B_PYRAMID:
|
||||
return RANDOM_TRANSITION(sBattleTransitionTable_BattlePyramid);
|
||||
case B_TRANSITION_GROUP_B_DOME:
|
||||
return RANDOM_TRANSITION(sBattleTransitionTable_BattleDome);
|
||||
}
|
||||
|
||||
if (VarGet(VAR_FRONTIER_BATTLE_MODE) != FRONTIER_MODE_LINK_MULTIS)
|
||||
return sBattleTransitionTable_BattleFrontier[Random() % ARRAY_COUNT(sBattleTransitionTable_BattleFrontier)];
|
||||
return RANDOM_TRANSITION(sBattleTransitionTable_BattleFrontier);
|
||||
}
|
||||
|
||||
var = gSaveBlock2Ptr->frontier.trainerIds[gSaveBlock2Ptr->frontier.curChallengeBattleNum * 2 + 0]
|
||||
@@ -1319,7 +1310,7 @@ void BattleSetup_StartTrainerBattle(void)
|
||||
gMain.savedCallback = CB2_EndTrainerBattle;
|
||||
|
||||
if (InBattlePyramid() || InTrainerHillChallenge())
|
||||
sub_80B0828();
|
||||
DoBattlePyramidTrainerHillBattle();
|
||||
else
|
||||
DoTrainerBattle();
|
||||
|
||||
@@ -1575,12 +1566,14 @@ static s32 TrainerIdToRematchTableId(const struct RematchTrainer *table, u16 tra
|
||||
return -1;
|
||||
}
|
||||
|
||||
static bool32 sub_80B1D94(s32 rematchTableId)
|
||||
// Returns TRUE if the given trainer (by their entry in the rematch table) is not allowed to have rematches.
|
||||
// This applies to the Elite Four and Victory Road Wally (if he's not been defeated yet)
|
||||
static bool32 IsRematchForbidden(s32 rematchTableId)
|
||||
{
|
||||
if (rematchTableId >= REMATCH_ELITE_FOUR_ENTRIES)
|
||||
return TRUE;
|
||||
else if (rematchTableId == REMATCH_WALLY_3)
|
||||
return (FlagGet(FLAG_DEFEATED_WALLY_VICTORY_ROAD) == FALSE);
|
||||
else if (rematchTableId == REMATCH_WALLY_VR)
|
||||
return !FlagGet(FLAG_DEFEATED_WALLY_VICTORY_ROAD);
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1609,7 +1602,7 @@ static bool32 UpdateRandomTrainerRematches(const struct RematchTrainer *table, u
|
||||
|
||||
for (i = 0; i <= REMATCH_SPECIAL_TRAINER_START; i++)
|
||||
{
|
||||
if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && !sub_80B1D94(i))
|
||||
if (table[i].mapGroup == mapGroup && table[i].mapNum == mapNum && !IsRematchForbidden(i))
|
||||
{
|
||||
if (gSaveBlock1Ptr->trainerRematches[i] != 0)
|
||||
{
|
||||
|
||||
+10
-10
@@ -2025,7 +2025,7 @@ void DoSpecialTrainerBattle(void)
|
||||
}
|
||||
CreateTask(Task_StartBattleAfterTransition, 1);
|
||||
PlayMapChosenOrBattleBGM(0);
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(0));
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_TOWER));
|
||||
break;
|
||||
case SPECIAL_BATTLE_SECRET_BASE:
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
@@ -2035,7 +2035,7 @@ void DoSpecialTrainerBattle(void)
|
||||
}
|
||||
CreateTask(Task_StartBattleAfterTransition, 1);
|
||||
PlayMapChosenOrBattleBGM(0);
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(12));
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_SECRET_BASE));
|
||||
break;
|
||||
case SPECIAL_BATTLE_EREADER:
|
||||
ZeroEnemyPartyMons();
|
||||
@@ -2045,7 +2045,7 @@ void DoSpecialTrainerBattle(void)
|
||||
gTrainerBattleOpponent_A = 0;
|
||||
CreateTask(Task_StartBattleAfterTransition, 1);
|
||||
PlayMapChosenOrBattleBGM(0);
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(13));
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_E_READER));
|
||||
break;
|
||||
case SPECIAL_BATTLE_DOME:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOME;
|
||||
@@ -2055,7 +2055,7 @@ void DoSpecialTrainerBattle(void)
|
||||
FillFrontierTrainerParty(DOME_BATTLE_PARTY_SIZE);
|
||||
CreateTask(Task_StartBattleAfterTransition, 1);
|
||||
CreateTask_PlayMapChosenOrBattleBGM(0);
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(3));
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_DOME));
|
||||
break;
|
||||
case SPECIAL_BATTLE_PALACE:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_PALACE;
|
||||
@@ -2067,7 +2067,7 @@ void DoSpecialTrainerBattle(void)
|
||||
FillTentTrainerParty(FRONTIER_PARTY_SIZE);
|
||||
CreateTask(Task_StartBattleAfterTransition, 1);
|
||||
PlayMapChosenOrBattleBGM(0);
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(4));
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PALACE));
|
||||
break;
|
||||
case SPECIAL_BATTLE_ARENA:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_ARENA;
|
||||
@@ -2077,7 +2077,7 @@ void DoSpecialTrainerBattle(void)
|
||||
FillTentTrainerParty(FRONTIER_PARTY_SIZE);
|
||||
CreateTask(Task_StartBattleAfterTransition, 1);
|
||||
PlayMapChosenOrBattleBGM(0);
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(5));
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_ARENA));
|
||||
break;
|
||||
case SPECIAL_BATTLE_FACTORY:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_FACTORY;
|
||||
@@ -2086,28 +2086,28 @@ void DoSpecialTrainerBattle(void)
|
||||
FillFactoryTrainerParty();
|
||||
CreateTask(Task_StartBattleAfterTransition, 1);
|
||||
PlayMapChosenOrBattleBGM(0);
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(6));
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_FACTORY));
|
||||
break;
|
||||
case SPECIAL_BATTLE_PIKE_SINGLE:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER;
|
||||
FillFrontierTrainerParty(FRONTIER_PARTY_SIZE);
|
||||
CreateTask(Task_StartBattleAfterTransition, 1);
|
||||
PlayMapChosenOrBattleBGM(0);
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(7));
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PIKE));
|
||||
break;
|
||||
case SPECIAL_BATTLE_PYRAMID:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_PYRAMID;
|
||||
FillFrontierTrainerParty(FRONTIER_PARTY_SIZE);
|
||||
CreateTask(Task_StartBattleAfterTransition, 1);
|
||||
PlayMapChosenOrBattleBGM(0);
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(10));
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PYRAMID));
|
||||
break;
|
||||
case SPECIAL_BATTLE_PIKE_DOUBLE:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS;
|
||||
FillFrontierTrainersParties(1);
|
||||
CreateTask(Task_StartBattleAfterTransition, 1);
|
||||
PlayMapChosenOrBattleBGM(0);
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(7));
|
||||
BattleTransition_StartOnField(GetSpecialBattleTransition(B_TRANSITION_GROUP_B_PIKE));
|
||||
break;
|
||||
case SPECIAL_BATTLE_STEVEN:
|
||||
gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_TWO_OPPONENTS | BATTLE_TYPE_MULTI | BATTLE_TYPE_INGAME_PARTNER;
|
||||
|
||||
+198
-298
File diff suppressed because it is too large
Load Diff
+7
-10
@@ -34,8 +34,8 @@ void AllocateBattleResources(void)
|
||||
gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE);
|
||||
gLinkBattleRecvBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE);
|
||||
|
||||
gUnknown_0202305C = AllocZeroed(0x2000);
|
||||
gUnknown_02023060 = AllocZeroed(0x1000);
|
||||
gBattleAnimBgTileBuffer = AllocZeroed(0x2000);
|
||||
gBattleAnimBgTilemapBuffer = AllocZeroed(0x1000);
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_SECRET_BASE)
|
||||
{
|
||||
@@ -66,8 +66,8 @@ void FreeBattleResources(void)
|
||||
FREE_AND_SET_NULL(gLinkBattleSendBuffer);
|
||||
FREE_AND_SET_NULL(gLinkBattleRecvBuffer);
|
||||
|
||||
FREE_AND_SET_NULL(gUnknown_0202305C);
|
||||
FREE_AND_SET_NULL(gUnknown_02023060);
|
||||
FREE_AND_SET_NULL(gBattleAnimBgTileBuffer);
|
||||
FREE_AND_SET_NULL(gBattleAnimBgTilemapBuffer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,16 +108,13 @@ void SwitchPartyOrderInGameMulti(u8 battlerId, u8 arg1)
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
// gBattleStruct->field_60[0][i]
|
||||
|
||||
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
|
||||
gBattlePartyCurrentOrder[i] = *(0 * 3 + i + (u8*)(gBattleStruct->field_60));
|
||||
gBattlePartyCurrentOrder[i] = *(0 * 3 + i + (u8*)(gBattleStruct->battlerPartyOrders));
|
||||
|
||||
SwitchPartyMonSlots(GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battlerId]), GetPartyIdFromBattlePartyId(arg1));
|
||||
|
||||
for (i = 0; i < (int)ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
|
||||
*(0 * 3 + i + (u8*)(gBattleStruct->field_60)) = gBattlePartyCurrentOrder[i];
|
||||
*(0 * 3 + i + (u8*)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -207,7 +204,7 @@ u32 BattlePalace_TryEscapeStatus(u8 battlerId)
|
||||
if (effect == 2)
|
||||
{
|
||||
gActiveBattler = battlerId;
|
||||
BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
|
||||
BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
|
||||
MarkBattlerForControllerExec(gActiveBattler);
|
||||
}
|
||||
|
||||
|
||||
+6
-6
@@ -1136,9 +1136,9 @@ static void AllocContestResources(void)
|
||||
gContestResources->contestBgTilemaps[3] = AllocZeroed(0x1000);
|
||||
gContestResources->boxBlinkTiles1 = AllocZeroed(0x800);
|
||||
gContestResources->boxBlinkTiles2 = AllocZeroed(0x800);
|
||||
gContestResources->field_3c = AllocZeroed(0x2000);
|
||||
gUnknown_0202305C = gContestResources->field_3c;
|
||||
gUnknown_02023060 = gContestResources->contestBgTilemaps[1];
|
||||
gContestResources->animBgTileBuffer = AllocZeroed(0x2000);
|
||||
gBattleAnimBgTileBuffer = gContestResources->animBgTileBuffer;
|
||||
gBattleAnimBgTilemapBuffer = gContestResources->contestBgTilemaps[1];
|
||||
}
|
||||
|
||||
static void FreeContestResources(void)
|
||||
@@ -1158,10 +1158,10 @@ static void FreeContestResources(void)
|
||||
FREE_AND_SET_NULL(gContestResources->contestBgTilemaps[3]);
|
||||
FREE_AND_SET_NULL(gContestResources->boxBlinkTiles1);
|
||||
FREE_AND_SET_NULL(gContestResources->boxBlinkTiles2);
|
||||
FREE_AND_SET_NULL(gContestResources->field_3c);
|
||||
FREE_AND_SET_NULL(gContestResources->animBgTileBuffer);
|
||||
FREE_AND_SET_NULL(gContestResources);
|
||||
gUnknown_0202305C = NULL;
|
||||
gUnknown_02023060 = NULL;
|
||||
gBattleAnimBgTileBuffer = NULL;
|
||||
gBattleAnimBgTilemapBuffer = NULL;
|
||||
}
|
||||
|
||||
void CB2_StartContest(void)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -454,7 +454,7 @@ const u8 *const gMatchCallFlavorTexts[REMATCH_TABLE_ENTRIES][CHECK_PAGE_ENTRY_CO
|
||||
[REMATCH_TRENT] = MCFLAVOR(Hiker_Trent),
|
||||
[REMATCH_SAWYER] = MCFLAVOR(Hiker_Sawyer),
|
||||
[REMATCH_KIRA_AND_DAN] = MCFLAVOR(YoungCouple_LoisAndHal),
|
||||
[REMATCH_WALLY_3] = MCFLAVOR(PkmnTrainer_Wally),
|
||||
[REMATCH_WALLY_VR] = MCFLAVOR(PkmnTrainer_Wally),
|
||||
[REMATCH_ROXANNE] = MCFLAVOR(RockinWhiz_Roxanne),
|
||||
[REMATCH_BRAWLY] = MCFLAVOR(TheBigHit_Brawly),
|
||||
[REMATCH_WATTSON] = MCFLAVOR(SwellShock_Wattson),
|
||||
|
||||
+14
-14
@@ -661,7 +661,7 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
StringExpandPlaceholders(gStringVar4, gText_PkmnIsEvolving);
|
||||
BattlePutTextOnWindow(gStringVar4, 0);
|
||||
BattlePutTextOnWindow(gStringVar4, B_WIN_MSG);
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
break;
|
||||
@@ -758,7 +758,7 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
if (IsCryFinished())
|
||||
{
|
||||
StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved);
|
||||
BattlePutTextOnWindow(gStringVar4, 0);
|
||||
BattlePutTextOnWindow(gStringVar4, B_WIN_MSG);
|
||||
PlayBGM(MUS_EVOLVED);
|
||||
gTasks[taskId].tState++;
|
||||
SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskId].tPostEvoSpecies));
|
||||
@@ -845,7 +845,7 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
else // Fire Red leftover probably
|
||||
StringExpandPlaceholders(gStringVar4, gText_PkmnStoppedEvolving);
|
||||
|
||||
BattlePutTextOnWindow(gStringVar4, 0);
|
||||
BattlePutTextOnWindow(gStringVar4, B_WIN_MSG);
|
||||
gTasks[taskId].tEvoWasStopped = TRUE;
|
||||
gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE;
|
||||
}
|
||||
@@ -856,7 +856,7 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
BufferMoveToLearnIntoBattleTextBuff2();
|
||||
PlayFanfare(MUS_LEVEL_UP);
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gTasks[taskId].tLearnsFirstMove = 0x40; // re-used as a counter
|
||||
gTasks[taskId].tState++;
|
||||
}
|
||||
@@ -874,7 +874,7 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
// "{mon} is trying to learn {move}"
|
||||
BufferMoveToLearnIntoBattleTextBuff2();
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE1 - BATTLESTRINGS_ID_ADDER]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gTasks[taskId].tLearnMoveState++;
|
||||
}
|
||||
break;
|
||||
@@ -883,7 +883,7 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
{
|
||||
// "But, {mon} can't learn more than four moves"
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE2 - BATTLESTRINGS_ID_ADDER]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gTasks[taskId].tLearnMoveState++;
|
||||
}
|
||||
break;
|
||||
@@ -892,7 +892,7 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
{
|
||||
// "Delete a move to make room for {move}?"
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_TRYTOLEARNMOVE3 - BATTLESTRINGS_ID_ADDER]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gTasks[taskId].tLearnMoveYesState = MVSTATE_SHOW_MOVE_SELECT;
|
||||
gTasks[taskId].tLearnMoveNoState = MVSTATE_ASK_CANCEL;
|
||||
gTasks[taskId].tLearnMoveState++;
|
||||
@@ -901,7 +901,7 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
if (!IsTextPrinterActive(0) && !IsSEPlaying())
|
||||
{
|
||||
HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
|
||||
BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
|
||||
BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
|
||||
gTasks[taskId].tLearnMoveState++;
|
||||
sEvoCursorPos = 0;
|
||||
BattleCreateYesNoCursorAt(0);
|
||||
@@ -980,7 +980,7 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
{
|
||||
// Can't forget HMs
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_HMMOVESCANTBEFORGOTTEN - BATTLESTRINGS_ID_ADDER]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gTasks[taskId].tLearnMoveState = MVSTATE_RETRY_AFTER_HM;
|
||||
}
|
||||
else
|
||||
@@ -997,14 +997,14 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
break;
|
||||
case MVSTATE_FORGET_MSG_1:
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_123POOF - BATTLESTRINGS_ID_ADDER]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gTasks[taskId].tLearnMoveState++;
|
||||
break;
|
||||
case MVSTATE_FORGET_MSG_2:
|
||||
if (!IsTextPrinterActive(0) && !IsSEPlaying())
|
||||
{
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNFORGOTMOVE - BATTLESTRINGS_ID_ADDER]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gTasks[taskId].tLearnMoveState++;
|
||||
}
|
||||
break;
|
||||
@@ -1012,20 +1012,20 @@ static void Task_EvolutionScene(u8 taskId)
|
||||
if (!IsTextPrinterActive(0) && !IsSEPlaying())
|
||||
{
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_ANDELLIPSIS - BATTLESTRINGS_ID_ADDER]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gTasks[taskId].tState = EVOSTATE_LEARNED_MOVE;
|
||||
}
|
||||
break;
|
||||
case MVSTATE_ASK_CANCEL:
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_STOPLEARNINGMOVE - BATTLESTRINGS_ID_ADDER]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gTasks[taskId].tLearnMoveYesState = MVSTATE_CANCEL;
|
||||
gTasks[taskId].tLearnMoveNoState = MVSTATE_INTRO_MSG_1;
|
||||
gTasks[taskId].tLearnMoveState = MVSTATE_PRINT_YES_NO;
|
||||
break;
|
||||
case MVSTATE_CANCEL:
|
||||
BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_DIDNOTLEARNMOVE - BATTLESTRINGS_ID_ADDER]);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, 0);
|
||||
BattlePutTextOnWindow(gDisplayedStringBattle, B_WIN_MSG);
|
||||
gTasks[taskId].tState = EVOSTATE_TRY_LEARN_MOVE;
|
||||
break;
|
||||
case MVSTATE_RETRY_AFTER_HM:
|
||||
|
||||
@@ -64,8 +64,6 @@ static EWRAM_DATA u32 sHofFadePalettes = 0;
|
||||
static EWRAM_DATA struct HallofFameTeam *sHofMonPtr = NULL;
|
||||
static EWRAM_DATA struct HofGfx *sHofGfxPtr = NULL;
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
static void ClearVramOamPltt_LoadHofPal(void);
|
||||
static void LoadHofGfx(void);
|
||||
static void InitHofBgs(void);
|
||||
|
||||
+5
-5
@@ -944,7 +944,7 @@ static void DisplayPartyPokemonDataToTeachMove(u8 slot, u16 item, u8 tutor)
|
||||
static void DisplayPartyPokemonDataForMultiBattle(u8 slot)
|
||||
{
|
||||
struct PartyMenuBox *menuBox = &sPartyMenuBoxes[slot];
|
||||
u8 actualSlot = slot - (3);
|
||||
u8 actualSlot = slot - MULTI_PARTY_SIZE;
|
||||
|
||||
if (gMultiPartnerParty[actualSlot].species == SPECIES_NONE)
|
||||
{
|
||||
@@ -5840,7 +5840,7 @@ static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId)
|
||||
|
||||
void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId)
|
||||
{
|
||||
BufferBattlePartyOrderBySide(gBattleStruct->field_60[battlerId], flankId, battlerId);
|
||||
BufferBattlePartyOrderBySide(gBattleStruct->battlerPartyOrders[battlerId], flankId, battlerId);
|
||||
}
|
||||
|
||||
// when GetBattlerSide(battlerId) == B_SIDE_PLAYER, this function is identical the one above
|
||||
@@ -5920,8 +5920,8 @@ void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2)
|
||||
|
||||
if (IsMultiBattle())
|
||||
{
|
||||
partyBattleOrder = gBattleStruct->field_60[battlerId];
|
||||
for (i = j = 0; i < 3; j++, i++)
|
||||
partyBattleOrder = gBattleStruct->battlerPartyOrders[battlerId];
|
||||
for (i = j = 0; i < PARTY_SIZE / 2; j++, i++)
|
||||
{
|
||||
partyIds[j] = partyBattleOrder[i] >> 4;
|
||||
j++;
|
||||
@@ -6103,7 +6103,7 @@ static void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId)
|
||||
s16 *data = gTasks[taskId].data;
|
||||
u8 i;
|
||||
|
||||
for (i = 3; i < PARTY_SIZE; i++)
|
||||
for (i = MULTI_PARTY_SIZE; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (gMultiPartnerParty[i - MULTI_PARTY_SIZE].species != SPECIES_NONE)
|
||||
{
|
||||
|
||||
+2
-5
@@ -15,9 +15,6 @@
|
||||
#include "data.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
// this file's functions
|
||||
static void Task_DoPokeballSendOutAnim(u8 taskId);
|
||||
static void SpriteCB_PlayerMonSendOut_1(struct Sprite *sprite);
|
||||
static void SpriteCB_PlayerMonSendOut_2(struct Sprite *sprite);
|
||||
@@ -801,9 +798,9 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[sprite->sBattler]], BATTLER_AFFINE_EMERGE);
|
||||
|
||||
if (GetBattlerSide(sprite->sBattler) == B_SIDE_OPPONENT)
|
||||
gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCb_OpponentMonFromBall;
|
||||
gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_OpponentMonFromBall;
|
||||
else
|
||||
gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCb_PlayerMonFromBall;
|
||||
gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_PlayerMonFromBall;
|
||||
|
||||
AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]);
|
||||
gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000;
|
||||
|
||||
@@ -116,8 +116,6 @@ struct PokeblockFeed
|
||||
u8 unused4;
|
||||
};
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
extern const u16 gUnknown_0860F074[];
|
||||
|
||||
static void HandleInitBackgrounds(void);
|
||||
|
||||
@@ -148,8 +148,6 @@ struct SearchMenuItem
|
||||
u8 selectionBgWidth;
|
||||
};
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
struct PokedexListItem
|
||||
{
|
||||
u16 dexNum;
|
||||
|
||||
+6
-9
@@ -38,6 +38,7 @@
|
||||
#include "constants/abilities.h"
|
||||
#include "constants/battle_frontier.h"
|
||||
#include "constants/battle_move_effects.h"
|
||||
#include "constants/battle_script_commands.h"
|
||||
#include "constants/hold_effects.h"
|
||||
#include "constants/item_effects.h"
|
||||
#include "constants/items.h"
|
||||
@@ -3103,7 +3104,7 @@ s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *de
|
||||
if (!typeOverride)
|
||||
type = gBattleMoves[move].type;
|
||||
else
|
||||
type = typeOverride & 0x3F;
|
||||
type = typeOverride & DYNAMIC_TYPE_MASK;
|
||||
|
||||
attack = attacker->attack;
|
||||
defense = defender->defense;
|
||||
@@ -5041,7 +5042,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
|
||||
temp2 = gActiveBattler;
|
||||
gActiveBattler = battlerId;
|
||||
BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
|
||||
BtlController_EmitGetMonData(BUFFER_A, REQUEST_ALL_BATTLE, 0);
|
||||
MarkBattlerForControllerExec(gActiveBattler);
|
||||
gActiveBattler = temp2;
|
||||
}
|
||||
@@ -5077,9 +5078,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
SetMonData(mon, MON_DATA_PP1 + temp2, &dataUnsigned);
|
||||
|
||||
// Heal battler PP too (if applicable)
|
||||
if (gMain.inBattle
|
||||
&& battlerId != MAX_BATTLERS_COUNT && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)
|
||||
&& !(gDisableStructs[battlerId].mimickedMoves & gBitTable[temp2]))
|
||||
if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && MOVE_IS_PERMANENT(battlerId, temp2))
|
||||
gBattleMons[battlerId].pp[temp2] = dataUnsigned;
|
||||
|
||||
retVal = FALSE;
|
||||
@@ -5105,9 +5104,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
SetMonData(mon, MON_DATA_PP1 + moveIndex, &dataUnsigned);
|
||||
|
||||
// Heal battler PP too (if applicable)
|
||||
if (gMain.inBattle
|
||||
&& battlerId != MAX_BATTLERS_COUNT && !(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED)
|
||||
&& !(gDisableStructs[battlerId].mimickedMoves & gBitTable[moveIndex]))
|
||||
if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT && MOVE_IS_PERMANENT(battlerId, moveIndex))
|
||||
gBattleMons[battlerId].pp[moveIndex] = dataUnsigned;
|
||||
|
||||
retVal = FALSE;
|
||||
@@ -6875,7 +6872,7 @@ static bool8 ShouldSkipFriendshipChange(void)
|
||||
#define ALLOC_FAIL_BUFFER (1 << 0)
|
||||
#define ALLOC_FAIL_STRUCT (1 << 1)
|
||||
#define GFX_MANAGER_ACTIVE 0xA3 // Arbitrary value
|
||||
#define GFX_MANAGER_SPR_SIZE (MON_PIC_SIZE * 4) // * 4 is unnecessary, MON_PIC_SIZE is sufficient
|
||||
#define GFX_MANAGER_SPR_SIZE (MON_PIC_SIZE * 4) // Only Castform uses more than MON_PIC_SIZE, despite not displaying its forms.
|
||||
#define GFX_MANAGER_NUM_FRAMES 4 // Only 2 frames are needed
|
||||
|
||||
static void InitMonSpritesGfx_Battle(struct MonSpritesGfxManager* gfx)
|
||||
|
||||
@@ -336,7 +336,7 @@ static const struct MatchCallWally sWallyMatchCallHeader =
|
||||
.type = MC_TYPE_WALLY,
|
||||
.mapSec = 0,
|
||||
.flag = FLAG_ENABLE_WALLY_MATCH_CALL,
|
||||
.rematchTableIdx = REMATCH_WALLY_3,
|
||||
.rematchTableIdx = REMATCH_WALLY_VR,
|
||||
.desc = gText_WallyMatchCallDesc,
|
||||
.textData = sWallyTextScripts,
|
||||
.locationData = sWallyLocationData
|
||||
|
||||
+64
-87
@@ -1,6 +1,7 @@
|
||||
#include "global.h"
|
||||
#include "battle.h"
|
||||
#include "battle_anim.h"
|
||||
#include "battle_controllers.h"
|
||||
#include "recorded_battle.h"
|
||||
#include "main.h"
|
||||
#include "pokemon.h"
|
||||
@@ -35,12 +36,6 @@ struct PlayerInfo
|
||||
u16 language;
|
||||
};
|
||||
|
||||
struct MovePp
|
||||
{
|
||||
u16 moves[MAX_MON_MOVES];
|
||||
u8 pp[MAX_MON_MOVES];
|
||||
};
|
||||
|
||||
struct RecordedBattleSave
|
||||
{
|
||||
struct Pokemon playerParty[PARTY_SIZE];
|
||||
@@ -65,7 +60,7 @@ struct RecordedBattleSave
|
||||
u8 recordMixFriendName[PLAYER_NAME_LENGTH + 1];
|
||||
u8 recordMixFriendClass;
|
||||
u8 apprenticeId;
|
||||
u16 easyChatSpeech[6];
|
||||
u16 easyChatSpeech[EASY_CHAT_BATTLE_WORDS_COUNT];
|
||||
u8 recordMixFriendLanguage;
|
||||
u8 apprenticeLanguage;
|
||||
u8 battleRecord[MAX_BATTLERS_COUNT][BATTLER_RECORD_SIZE];
|
||||
@@ -91,13 +86,13 @@ EWRAM_DATA static u32 sBattleFlags = 0;
|
||||
EWRAM_DATA static u32 sAI_Scripts = 0;
|
||||
EWRAM_DATA static struct Pokemon sSavedPlayerParty[PARTY_SIZE] = {0};
|
||||
EWRAM_DATA static struct Pokemon sSavedOpponentParty[PARTY_SIZE] = {0};
|
||||
EWRAM_DATA static u16 sPlayerMonMoves[2][MAX_MON_MOVES] = {0};
|
||||
EWRAM_DATA static u16 sPlayerMonMoves[MAX_BATTLERS_COUNT / 2][MAX_MON_MOVES] = {0};
|
||||
EWRAM_DATA static struct PlayerInfo sPlayers[MAX_BATTLERS_COUNT] = {0};
|
||||
EWRAM_DATA static bool8 sUnknown_0203CCD0 = 0;
|
||||
EWRAM_DATA static bool8 sIsPlaybackFinished = 0;
|
||||
EWRAM_DATA static u8 sRecordMixFriendName[PLAYER_NAME_LENGTH + 1] = {0};
|
||||
EWRAM_DATA static u8 sRecordMixFriendClass = 0;
|
||||
EWRAM_DATA static u8 sApprenticeId = 0;
|
||||
EWRAM_DATA static u16 sEasyChatSpeech[6] = {0};
|
||||
EWRAM_DATA static u16 sEasyChatSpeech[EASY_CHAT_BATTLE_WORDS_COUNT] = {0};
|
||||
EWRAM_DATA static u8 sBattleOutcome = 0;
|
||||
|
||||
static u8 sRecordMixFriendLanguage;
|
||||
@@ -113,7 +108,7 @@ void RecordedBattle_Init(u8 mode)
|
||||
s32 i, j;
|
||||
|
||||
sRecordMode = mode;
|
||||
sUnknown_0203CCD0 = FALSE;
|
||||
sIsPlaybackFinished = FALSE;
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
@@ -124,16 +119,14 @@ void RecordedBattle_Init(u8 mode)
|
||||
if (mode == B_RECORD_MODE_RECORDING)
|
||||
{
|
||||
for (j = 0; j < BATTLER_RECORD_SIZE; j++)
|
||||
{
|
||||
sBattleRecords[i][j] = 0xFF;
|
||||
}
|
||||
sBattleFlags = gBattleTypeFlags;
|
||||
sAI_Scripts = gBattleResources->ai->aiFlags;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_8184E58(void)
|
||||
void RecordedBattle_SetTrainerInfo(void)
|
||||
{
|
||||
s32 i, j;
|
||||
|
||||
@@ -150,6 +143,7 @@ void sub_8184E58(void)
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
// Link recorded battle, record info for all trainers
|
||||
u8 linkPlayersCount;
|
||||
u8 text[30];
|
||||
|
||||
@@ -163,6 +157,7 @@ void sub_8184E58(void)
|
||||
sPlayers[i].battlerId = gLinkPlayers[i].id;
|
||||
sPlayers[i].language = gLinkPlayers[i].language;
|
||||
|
||||
// Record names
|
||||
if (i < linkPlayersCount)
|
||||
{
|
||||
StringCopy(text, gLinkPlayers[i].name);
|
||||
@@ -178,10 +173,11 @@ void sub_8184E58(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
// Local battle, just record own info
|
||||
sPlayers[0].trainerId = (gSaveBlock2Ptr->playerTrainerId[0])
|
||||
| (gSaveBlock2Ptr->playerTrainerId[1] << 8)
|
||||
| (gSaveBlock2Ptr->playerTrainerId[2] << 16)
|
||||
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
|
||||
| (gSaveBlock2Ptr->playerTrainerId[1] << 8)
|
||||
| (gSaveBlock2Ptr->playerTrainerId[2] << 16)
|
||||
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
|
||||
|
||||
sPlayers[0].gender = gSaveBlock2Ptr->playerGender;
|
||||
sPlayers[0].battlerId = 0;
|
||||
@@ -195,9 +191,7 @@ void sub_8184E58(void)
|
||||
void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action)
|
||||
{
|
||||
if (sBattlerRecordSizes[battlerId] < BATTLER_RECORD_SIZE && sRecordMode != B_RECORD_MODE_PLAYBACK)
|
||||
{
|
||||
sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]++] = action;
|
||||
}
|
||||
}
|
||||
|
||||
void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear)
|
||||
@@ -220,7 +214,7 @@ u8 RecordedBattle_GetBattlerAction(u8 battlerId)
|
||||
{
|
||||
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah
|
||||
ResetPaletteFadeControl();
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
|
||||
SetMainCallback2(CB2_QuitRecordedBattle);
|
||||
return 0xFF;
|
||||
}
|
||||
@@ -249,9 +243,7 @@ u8 RecordedBattle_BufferNewBattlerData(u8 *dst)
|
||||
dst[idx++] = sBattlerRecordSizes[i] - sBattlerPrevRecordSizes[i];
|
||||
|
||||
for (j = 0; j < sBattlerRecordSizes[i] - sBattlerPrevRecordSizes[i]; j++)
|
||||
{
|
||||
dst[idx++] = sBattleRecords[i][sBattlerPrevRecordSizes[i] + j];
|
||||
}
|
||||
|
||||
sBattlerPrevRecordSizes[i] = sBattlerRecordSizes[i];
|
||||
}
|
||||
@@ -283,9 +275,7 @@ void RecordedBattle_RecordAllBattlerData(u8 *src)
|
||||
u8 numActions = GetNextRecordedDataByte(src, &idx, &size);
|
||||
|
||||
for (i = 0; i < numActions; i++)
|
||||
{
|
||||
sBattleRecords[battlerId][sBattlerSavedRecordSizes[battlerId]++] = GetNextRecordedDataByte(src, &idx, &size);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -318,7 +308,7 @@ static bool32 IsRecordedBattleSaveValid(struct RecordedBattleSave *save)
|
||||
|
||||
static bool32 RecordedBattleToSave(struct RecordedBattleSave *battleSave, struct RecordedBattleSave *saveSection)
|
||||
{
|
||||
memset(saveSection, 0, 0x1000);
|
||||
memset(saveSection, 0, SECTOR_SIZE);
|
||||
memcpy(saveSection, battleSave, sizeof(*battleSave));
|
||||
|
||||
saveSection->checksum = CalcByteArraySum((void*)(saveSection), sizeof(*saveSection) - 4);
|
||||
@@ -338,7 +328,7 @@ bool32 MoveRecordedBattleToSaveData(void)
|
||||
|
||||
saveAttempts = 0;
|
||||
battleSave = AllocZeroed(sizeof(struct RecordedBattleSave));
|
||||
savSection = AllocZeroed(0x1000);
|
||||
savSection = AllocZeroed(SECTOR_SIZE);
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
@@ -349,9 +339,7 @@ bool32 MoveRecordedBattleToSaveData(void)
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
for (j = 0; j < PLAYER_NAME_LENGTH + 1; j++)
|
||||
{
|
||||
battleSave->playersName[i][j] = sPlayers[i].name[j];
|
||||
}
|
||||
battleSave->playersGender[i] = sPlayers[i].gender;
|
||||
battleSave->playersLanguage[i] = sPlayers[i].language;
|
||||
battleSave->playersBattlers[i] = sPlayers[i].battlerId;
|
||||
@@ -471,12 +459,8 @@ bool32 MoveRecordedBattleToSaveData(void)
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
for (j = 0; j < BATTLER_RECORD_SIZE; j++)
|
||||
{
|
||||
battleSave->battleRecord[i][j] = sBattleRecords[i][j];
|
||||
}
|
||||
}
|
||||
|
||||
while (1)
|
||||
{
|
||||
@@ -585,29 +569,21 @@ static void SetVariablesForRecordedBattle(struct RecordedBattleSave *src)
|
||||
sAI_Scripts = src->AI_scripts;
|
||||
|
||||
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
|
||||
{
|
||||
sRecordMixFriendName[i] = src->recordMixFriendName[i];
|
||||
}
|
||||
|
||||
sRecordMixFriendClass = src->recordMixFriendClass;
|
||||
sApprenticeId = src->apprenticeId;
|
||||
sRecordMixFriendLanguage = src->recordMixFriendLanguage;
|
||||
sApprenticeLanguage = src->apprenticeLanguage;
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
for (i = 0; i < EASY_CHAT_BATTLE_WORDS_COUNT; i++)
|
||||
sEasyChatSpeech[i] = src->easyChatSpeech[i];
|
||||
}
|
||||
|
||||
gSaveBlock2Ptr->frontier.lvlMode = src->lvlMode;
|
||||
|
||||
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
|
||||
{
|
||||
for (j = 0; j < BATTLER_RECORD_SIZE; j++)
|
||||
{
|
||||
sBattleRecords[i][j] = src->battleRecord[i][j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void PlayRecordedBattle(void (*CB2_After)(void))
|
||||
@@ -693,9 +669,9 @@ void RecordedBattle_ClearFrontierPassFlag(void)
|
||||
}
|
||||
|
||||
// Set sFrontierPassFlag to received state of FLAG_SYS_FRONTIER_PASS
|
||||
void RecordedBattle_SetFrontierPassFlagFromHword(u16 arg0)
|
||||
void RecordedBattle_SetFrontierPassFlagFromHword(u16 flags)
|
||||
{
|
||||
sFrontierPassFlag |= (arg0 & 0x8000) >> 15;
|
||||
sFrontierPassFlag |= (flags & (1 << 15)) >> 15;
|
||||
}
|
||||
|
||||
u8 RecordedBattle_GetFrontierPassFlag(void)
|
||||
@@ -725,14 +701,14 @@ void RecordedBattle_CopyBattlerMoves(void)
|
||||
return;
|
||||
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
sPlayerMonMoves[gActiveBattler / 2][i] = gBattleMons[gActiveBattler].moves[i];
|
||||
}
|
||||
}
|
||||
|
||||
// This is a special battle action only used by this function
|
||||
// It shares a value with B_ACTION_SAFARI_POKEBLOCK, which can never occur in a recorded battle.
|
||||
#define ACTION_MOVE_CHANGE 6
|
||||
|
||||
void sub_818603C(u8 arg0)
|
||||
void RecordedBattle_CheckMovesetChanges(u8 mode)
|
||||
{
|
||||
s32 battlerId, j, k;
|
||||
|
||||
@@ -741,17 +717,20 @@ void sub_818603C(u8 arg0)
|
||||
|
||||
for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
|
||||
{
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT) // player's side only
|
||||
// Player's side only
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
|
||||
{
|
||||
if (arg0 == 1)
|
||||
if (mode == B_RECORD_MODE_RECORDING)
|
||||
{
|
||||
// Check if any of the battler's moves have changed.
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
if (gBattleMons[battlerId].moves[j] != sPlayerMonMoves[battlerId / 2][j])
|
||||
break;
|
||||
}
|
||||
if (j != MAX_MON_MOVES) // player's mon's move has been changed
|
||||
if (j != MAX_MON_MOVES)
|
||||
{
|
||||
// At least one of the moves has been changed
|
||||
RecordedBattle_SetBattlerAction(battlerId, ACTION_MOVE_CHANGE);
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
@@ -766,68 +745,66 @@ void sub_818603C(u8 arg0)
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else // B_RECORD_MODE_PLAYBACK
|
||||
{
|
||||
if (sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] == ACTION_MOVE_CHANGE)
|
||||
{
|
||||
u8 ppBonuses[MAX_MON_MOVES];
|
||||
u8 array1[MAX_MON_MOVES];
|
||||
u8 array2[MAX_MON_MOVES];
|
||||
struct MovePp movePp;
|
||||
u8 array3[(MAX_MON_MOVES * 2)];
|
||||
u8 var;
|
||||
u8 moveSlots[MAX_MON_MOVES];
|
||||
u8 mimickedMoveSlots[MAX_MON_MOVES];
|
||||
struct ChooseMoveStruct movePp;
|
||||
u8 ppBonusSet;
|
||||
|
||||
// We know the current action is ACTION_MOVE_CHANGE, retrieve
|
||||
// it without saving it to move on to the next action.
|
||||
RecordedBattle_GetBattlerAction(battlerId);
|
||||
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & (3 << (j << 1))) >> (j << 1));
|
||||
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & ((3 << (j << 1)))) >> (j << 1));
|
||||
}
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
array1[j] = RecordedBattle_GetBattlerAction(battlerId);
|
||||
movePp.moves[j] = gBattleMons[battlerId].moves[array1[j]];
|
||||
movePp.pp[j] = gBattleMons[battlerId].pp[array1[j]];
|
||||
array3[j] = ppBonuses[array1[j]];
|
||||
array2[j] = (gDisableStructs[battlerId].mimickedMoves & gBitTable[j]) >> j;
|
||||
moveSlots[j] = RecordedBattle_GetBattlerAction(battlerId);
|
||||
movePp.moves[j] = gBattleMons[battlerId].moves[moveSlots[j]];
|
||||
movePp.currentPp[j] = gBattleMons[battlerId].pp[moveSlots[j]];
|
||||
movePp.maxPp[j] = ppBonuses[moveSlots[j]];
|
||||
mimickedMoveSlots[j] = (gDisableStructs[battlerId].mimickedMoves & gBitTable[j]) >> j;
|
||||
}
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
gBattleMons[battlerId].moves[j] = movePp.moves[j];
|
||||
gBattleMons[battlerId].pp[j] = movePp.pp[j];
|
||||
gBattleMons[battlerId].pp[j] = movePp.currentPp[j];
|
||||
}
|
||||
gBattleMons[battlerId].ppBonuses = 0;
|
||||
gDisableStructs[battlerId].mimickedMoves = 0;
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
gBattleMons[battlerId].ppBonuses |= (array3[j]) << (j << 1);
|
||||
gDisableStructs[battlerId].mimickedMoves |= (array2[j]) << (j);
|
||||
gBattleMons[battlerId].ppBonuses |= movePp.maxPp[j] << (j << 1);
|
||||
gDisableStructs[battlerId].mimickedMoves |= mimickedMoveSlots[j] << j;
|
||||
}
|
||||
|
||||
if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED))
|
||||
{
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
ppBonuses[j] = ((GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1));
|
||||
}
|
||||
ppBonuses[j] = (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1);
|
||||
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + array1[j], NULL);
|
||||
movePp.pp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + array1[j], NULL);
|
||||
array3[j] = ppBonuses[array1[j]];
|
||||
movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + moveSlots[j], NULL);
|
||||
movePp.currentPp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + moveSlots[j], NULL);
|
||||
movePp.maxPp[j] = ppBonuses[moveSlots[j]];
|
||||
}
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + j, &movePp.moves[j]);
|
||||
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + j, &movePp.pp[j]);
|
||||
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + j, &movePp.currentPp[j]);
|
||||
}
|
||||
var = 0;
|
||||
ppBonusSet = 0;
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
var |= (array3[j]) << (j << 1);
|
||||
}
|
||||
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, &var);
|
||||
}
|
||||
ppBonusSet |= movePp.maxPp[j] << (j << 1);
|
||||
|
||||
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, &ppBonusSet);
|
||||
}
|
||||
gChosenMoveByBattler[battlerId] = gBattleMons[battlerId].moves[*(gBattleStruct->chosenMovePositions + battlerId)];
|
||||
}
|
||||
}
|
||||
@@ -840,24 +817,24 @@ u32 GetAiScriptsInRecordedBattle(void)
|
||||
return sAI_Scripts;
|
||||
}
|
||||
|
||||
void sub_8186444(void)
|
||||
// Used to determine when the player is allowed to press B to end a recorded battle's playback
|
||||
void RecordedBattle_SetPlaybackFinished(void)
|
||||
{
|
||||
sUnknown_0203CCD0 = TRUE;
|
||||
sIsPlaybackFinished = TRUE;
|
||||
}
|
||||
|
||||
bool8 sub_8186450(void)
|
||||
bool8 RecordedBattle_CanStopPlayback(void)
|
||||
{
|
||||
return (sUnknown_0203CCD0 == FALSE);
|
||||
return (sIsPlaybackFinished == FALSE);
|
||||
}
|
||||
|
||||
void GetRecordedBattleRecordMixFriendName(u8 *dst)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
|
||||
dst[i] = sRecordMixFriendName[i];
|
||||
|
||||
dst[7] = EOS;
|
||||
dst[PLAYER_NAME_LENGTH] = EOS;
|
||||
ConvertInternationalString(dst, sRecordMixFriendLanguage);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,24 +14,17 @@ struct Fanfare
|
||||
u16 duration;
|
||||
};
|
||||
|
||||
// ewram
|
||||
EWRAM_DATA struct MusicPlayerInfo* gMPlay_PokemonCry = NULL;
|
||||
EWRAM_DATA u8 gPokemonCryBGMDuckingCounter = 0;
|
||||
|
||||
// iwram bss
|
||||
static u16 sCurrentMapMusic;
|
||||
static u16 sNextMapMusic;
|
||||
static u8 sMapMusicState;
|
||||
static u8 sMapMusicFadeInSpeed;
|
||||
static u16 sFanfareCounter;
|
||||
|
||||
// iwram common
|
||||
bool8 gDisableMusic;
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE1;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE2;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE3;
|
||||
extern struct ToneData gCryTable[];
|
||||
extern struct ToneData gCryTable2[];
|
||||
|
||||
|
||||
@@ -35,9 +35,6 @@
|
||||
#define BERRY_UPDATE_BUTTON_COMBO (B_BUTTON | SELECT_BUTTON)
|
||||
#define A_B_START_SELECT (A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON)
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
|
||||
// this file's functions
|
||||
static void MainCB2(void);
|
||||
static void Task_TitleScreenPhase1(u8);
|
||||
static void Task_TitleScreenPhase2(u8);
|
||||
|
||||
Reference in New Issue
Block a user