1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
|
PokemonTower6F_Script:
call EnableAutoTextBoxDrawing
ld hl, PokemonTower6TrainerHeaders
ld de, PokemonTower6F_ScriptPointers
ld a, [wPokemonTower6FCurScript]
call ExecuteCurMapScriptInTable
ld [wPokemonTower6FCurScript], a
ret
PokemonTower6FSetDefaultScript:
xor a
ld [wJoyIgnore], a
ld [wPokemonTower6FCurScript], a ; SCRIPT_POKEMONTOWER6F_DEFAULT
ld [wCurMapScript], a ; SCRIPT_POKEMONTOWER6F_DEFAULT
ret
PokemonTower6F_ScriptPointers:
def_script_pointers
dw_const PokemonTower6FDefaultScript, SCRIPT_POKEMONTOWER6F_DEFAULT
dw_const DisplayEnemyTrainerTextAndStartBattle, SCRIPT_POKEMONTOWER6F_START_BATTLE
dw_const EndTrainerBattle, SCRIPT_POKEMONTOWER6F_END_BATTLE
dw_const PokemonTower6FPlayerMovingScript, SCRIPT_POKEMONTOWER6F_PLAYER_MOVING
dw_const PokemonTower6FMarowakBattleScript, SCRIPT_POKEMONTOWER6F_MAROWAK_BATTLE
PokemonTower6FDefaultScript:
CheckEvent EVENT_BEAT_GHOST_MAROWAK
jp nz, CheckFightingMapTrainers
ld hl, PokemonTower6FMarowakCoords
call ArePlayerCoordsInArray
jp nc, CheckFightingMapTrainers
xor a
ldh [hJoyHeld], a
ld a, TEXT_POKEMONTOWER6F_BEGONE
ldh [hTextID], a
call DisplayTextID
ld a, RESTLESS_SOUL
ld [wCurOpponent], a
ld a, 30
ld [wCurEnemyLevel], a
ld a, SCRIPT_POKEMONTOWER6F_MAROWAK_BATTLE
ld [wPokemonTower6FCurScript], a
ld [wCurMapScript], a
ret
PokemonTower6FMarowakCoords:
dbmapcoord 10, 16
db -1 ; end
PokemonTower6FMarowakBattleScript:
ld a, [wIsInBattle]
cp $ff
jp z, PokemonTower6FSetDefaultScript
ld a, PAD_BUTTONS | PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, [wStatusFlags3]
bit BIT_TALKED_TO_TRAINER, a
ret nz
call UpdateSprites
ld a, PAD_CTRL_PAD
ld [wJoyIgnore], a
ld a, [wBattleResult]
and a
jr nz, .did_not_defeat
SetEvent EVENT_BEAT_GHOST_MAROWAK
ld a, TEXT_POKEMONTOWER6F_MAROWAK_DEPARTED
ldh [hTextID], a
call DisplayTextID
xor a
ld [wJoyIgnore], a
ld a, SCRIPT_POKEMONTOWER6F_DEFAULT
ld [wPokemonTower6FCurScript], a
ld [wCurMapScript], a
ret
.did_not_defeat
ld a, $1
ld [wSimulatedJoypadStatesIndex], a
ld a, PAD_RIGHT
ld [wSimulatedJoypadStatesEnd], a
xor a
ld [wSpritePlayerStateData2MovementByte1], a
ld [wOverrideSimulatedJoypadStatesMask], a
ld hl, wStatusFlags5
set BIT_SCRIPTED_MOVEMENT_STATE, [hl]
ld a, SCRIPT_POKEMONTOWER6F_PLAYER_MOVING
ld [wPokemonTower6FCurScript], a
ld [wCurMapScript], a
ret
PokemonTower6FPlayerMovingScript:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
call Delay3
xor a
ld [wPokemonTower6FCurScript], a
ld [wCurMapScript], a
ret
PokemonTower6F_TextPointers:
def_text_pointers
dw_const PokemonTower6FChanneler1Text, TEXT_POKEMONTOWER6F_CHANNELER1
dw_const PokemonTower6FChanneler2Text, TEXT_POKEMONTOWER6F_CHANNELER2
dw_const PokemonTower6FChanneler3Text, TEXT_POKEMONTOWER6F_CHANNELER3
dw_const PickUpItemText, TEXT_POKEMONTOWER6F_RARE_CANDY
dw_const PickUpItemText, TEXT_POKEMONTOWER6F_X_ACCURACY
dw_const PokemonTower6FBeGoneText, TEXT_POKEMONTOWER6F_BEGONE
dw_const PokemonTower6FMarowakDepartedText, TEXT_POKEMONTOWER6F_MAROWAK_DEPARTED
PokemonTower6TrainerHeaders:
def_trainers
PokemonTower6TrainerHeader0:
trainer EVENT_BEAT_POKEMONTOWER_6_TRAINER_0, 3, PokemonTower6FChanneler1BattleText, PokemonTower6FChanneler1EndBattleText, PokemonTower6FChanneler1AfterBattleText
PokemonTower6TrainerHeader1:
trainer EVENT_BEAT_POKEMONTOWER_6_TRAINER_1, 3, PokemonTower6FChanneler2BattleText, PokemonTower6FChanneler2EndBattleText, PokemonTower6FChanneler2AfterBattleText
PokemonTower6TrainerHeader2:
trainer EVENT_BEAT_POKEMONTOWER_6_TRAINER_2, 2, PokemonTower6FChanneler3BattleText, PokemonTower6FChanneler3EndBattleText, PokemonTower6FChanneler3AfterBattleText
db -1 ; end
PokemonTower6FChanneler1Text:
text_asm
ld hl, PokemonTower6TrainerHeader0
call TalkToTrainer
jp TextScriptEnd
PokemonTower6FChanneler2Text:
text_asm
ld hl, PokemonTower6TrainerHeader1
call TalkToTrainer
jp TextScriptEnd
PokemonTower6FChanneler3Text:
text_asm
ld hl, PokemonTower6TrainerHeader2
call TalkToTrainer
jp TextScriptEnd
PokemonTower6FMarowakDepartedText:
text_asm
ld hl, PokemonTower6FGhostWasCubonesMotherText
call PrintText
ld a, RESTLESS_SOUL
call PlayCry
call WaitForSoundToFinish
ld c, 30
call DelayFrames
ld hl, PokemonTower6FSoulWasCalmedText
call PrintText
jp TextScriptEnd
PokemonTower6FGhostWasCubonesMotherText:
text_far _PokemonTower6FGhostWasCubonesMotherText
text_end
PokemonTower6FSoulWasCalmedText:
text_far _PokemonTower6FSoulWasCalmedText
text_end
PokemonTower6FChanneler1BattleText:
text_far _PokemonTower6FChanneler1BattleText
text_end
PokemonTower6FChanneler1EndBattleText:
text_far _PokemonTower6FChanneler1EndBattleText
text_end
PokemonTower6FChanneler1AfterBattleText:
text_far _PokemonTower6FChanneler1AfterBattleText
text_end
PokemonTower6FChanneler2BattleText:
text_far _PokemonTower6FChanneler2BattleText
text_end
PokemonTower6FChanneler2EndBattleText:
text_far _PokemonTower6FChanneler2EndBattleText
text_end
PokemonTower6FChanneler2AfterBattleText:
text_far _PokemonTower6FChanneler2AfterBattleText
text_end
PokemonTower6FChanneler3BattleText:
text_far _PokemonTower6FChanneler3BattleText
text_end
PokemonTower6FChanneler3EndBattleText:
text_far _PokemonTower6FChanneler3EndBattleText
text_end
PokemonTower6FChanneler3AfterBattleText:
text_far _PokemonTower6FChanneler3AfterBattleText
text_end
PokemonTower6FBeGoneText:
text_far _PokemonTower6FBeGoneText
text_end
|