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
|
SeafoamIslandsB4F_Script:
call EnableAutoTextBoxDrawing
ld a, [wSeafoamIslandsB4FCurScript]
ld hl, SeafoamIslandsB4F_ScriptPointers
jp CallFunctionInTable
SeafoamIslands5Script_467a5:
xor a
ld [wSeafoamIslandsB4FCurScript], a
ld [wJoyIgnore], a
ret
SeafoamIslandsB4F_ScriptPointers:
dw SeafoamIslands5Script0
dw SeafoamIslands5Script1
dw SeafoamIslands5Script2
dw SeafoamIslands5Script3
dw SeafoamIslands5Script4
SeafoamIslands5Script4:
ld a, [wIsInBattle]
cp $ff
jr z, SeafoamIslands5Script_467a5
call EndTrainerBattle
ld a, $0
ld [wSeafoamIslandsB4FCurScript], a
ret
SeafoamIslands5Script0:
CheckBothEventsSet EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE
ret z
ld hl, .Coords
call ArePlayerCoordsInArray
ret nc
ld a, [wCoordIndex]
cp $3
jr nc, .asm_467e6
ld a, NPC_MOVEMENT_UP
ld [wSimulatedJoypadStatesEnd + 1], a
ld a, 2
jr .asm_467e8
.asm_467e6
ld a, 1
.asm_467e8
ld [wSimulatedJoypadStatesIndex], a
ld a, D_UP
ld [wSimulatedJoypadStatesEnd], a
call StartSimulatingJoypadStates
ld hl, wFlags_D733
res 2, [hl]
ld a, $1
ld [wSeafoamIslandsB4FCurScript], a
ret
.Coords
dbmapcoord 20, 17
dbmapcoord 21, 17
dbmapcoord 20, 16
dbmapcoord 21, 16
db -1 ; end
SeafoamIslands5Script1:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
xor a
ld [wJoyIgnore], a
ld a, $0
ld [wSeafoamIslandsB4FCurScript], a
ret
SeafoamIslands5Script2:
CheckBothEventsSet EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE
ld a, $0
jr z, .asm_46849
ld hl, .Coords
call ArePlayerCoordsInArray
ld a, $0
jr nc, .asm_46849
ld a, [wCoordIndex]
cp $1
jr nz, .asm_46837
ld de, RLEMovementData_46859
jr .asm_4683a
.asm_46837
ld de, RLEMovementData_46852
.asm_4683a
ld hl, wSimulatedJoypadStatesEnd
call DecodeRLEList
dec a
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld a, $3
.asm_46849
ld [wSeafoamIslandsB4FCurScript], a
ret
.Coords
dbmapcoord 4, 14
dbmapcoord 5, 14
db -1 ; end
RLEMovementData_46852:
db D_UP, 3
db D_RIGHT, 2
db D_UP, 1
db -1 ; end
RLEMovementData_46859:
db D_UP, 3
db D_RIGHT, 3
db D_UP, 1
db -1 ; end
SeafoamIslands5Script3:
ld a, [wSimulatedJoypadStatesIndex]
ld b, a
cp $1
call z, SeaFoamIslands5Script_46872
ld a, b
and a
ret nz
ld a, $0
ld [wSeafoamIslandsB4FCurScript], a
ret
SeaFoamIslands5Script_46872:
xor a
ld [wWalkBikeSurfState], a
ld [wWalkBikeSurfStateCopy], a
jp ForceBikeOrSurf
SeafoamIslandsB4F_TextPointers:
dw BoulderText
dw BoulderText
dw ArticunoText
dw SeafoamIslands5Text4
dw SeafoamIslands5Text5
; Articuno is object 3, but its event flag is bit 2.
; This is not a problem because its sight range is 0, and
; trainer headers were not stored by ExecuteCurMapScriptInTable.
def_trainers 2
ArticunoTrainerHeader:
trainer EVENT_BEAT_ARTICUNO, 0, ArticunoBattleText, ArticunoBattleText, ArticunoBattleText
db -1 ; end
ArticunoText:
text_asm
ld hl, ArticunoTrainerHeader
call TalkToTrainer
ld a, $4
ld [wSeafoamIslandsB4FCurScript], a
jp TextScriptEnd
ArticunoBattleText:
text_far _ArticunoBattleText
text_asm
ld a, ARTICUNO
call PlayCry
call WaitForSoundToFinish
jp TextScriptEnd
SeafoamIslands5Text4:
text_far _SeafoamIslands5Text4
text_end
SeafoamIslands5Text5:
text_far _SeafoamIslands5Text5
text_end
|