summaryrefslogtreecommitdiff
path: root/scripts/lorelei.asm
blob: 4a245d9341a5b3dc14887e5f513c2a6d33f0306e (plain)
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
LoreleiScript: ; 7617b (1d:617b)
	call LoreleiScript_76191
	call EnableAutoTextBoxDrawing
	ld hl, LoreleiTrainerHeaders
	ld de, LoreleiScriptPointers
	ld a, [W_LORELEICURSCRIPT]
	call ExecuteCurMapScriptInTable
	ld [W_LORELEICURSCRIPT], a
	ret

LoreleiScript_76191: ; 76191 (1d:6191)
	ld hl, wd126
	bit 5, [hl]
	res 5, [hl]
	ret z
	ld hl, wBeatLorelei
	set 1, [hl]
	CheckEvent EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
	jr z, .asm_761a9
	ld a, $5
	jr .asm_761ab
.asm_761a9
	ld a, $24
.asm_761ab
	ld [wd09f], a
	ld bc, $2
	predef_jump ReplaceTileBlock

LoreleiScript_761b6: ; 761b6 (1d:61b6)
	xor a
	ld [W_LORELEICURSCRIPT], a
	ret

LoreleiScriptPointers: ; 761bb (1d:61bb)
	dw LoreleiScript0
	dw DisplayEnemyTrainerTextAndStartBattle
	dw LoreleiScript2
	dw LoreleiScript3
	dw LoreleiScript4

LoreleiScript4: ; 761c5 (1d:61c5)
	ret

LoreleiScript_761c6: ; 761c6 (1d:61c6)
	ld hl, wSimulatedJoypadStatesEnd
	ld a, D_UP
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld a, $6
	ld [wSimulatedJoypadStatesIndex], a
	call StartSimulatingJoypadStates
	ld a, $3
	ld [W_LORELEICURSCRIPT], a
	ld [W_CURMAPSCRIPT], a
	ret

LoreleiScript0: ; 761e2 (1d:61e2)
	ld hl, CoordsData_76223
	call ArePlayerCoordsInArray
	jp nc, CheckFightingMapTrainers
	xor a
	ld [hJoyPressed], a
	ld [hJoyHeld], a
	ld [wSimulatedJoypadStatesEnd], a
	ld [wSimulatedJoypadStatesIndex], a
	ld a, [wCoordIndex]
	cp $3
	jr c, .asm_76206
	CheckAndSetEvent EVENT_AUTOWALKED_INTO_LORELEIS_ROOM
	jr z, LoreleiScript_761c6
.asm_76206
	ld a, $2
	ld [hSpriteIndexOrTextID], a
	call DisplayTextID
	ld a, D_UP
	ld [wSimulatedJoypadStatesEnd], a
	ld a, $1
	ld [wSimulatedJoypadStatesIndex], a
	call StartSimulatingJoypadStates
	ld a, $3
	ld [W_LORELEICURSCRIPT], a
	ld [W_CURMAPSCRIPT], a
	ret

CoordsData_76223: ; 76223 (1d:6223)
	db $0A,$04
	db $0A,$05
	db $0B,$04
	db $0B,$05
	db $FF

LoreleiScript3: ; 7622c (1d:622c)
	ld a, [wSimulatedJoypadStatesIndex]
	and a
	ret nz
	call Delay3
	xor a
	ld [wJoyIgnore], a
	ld [W_LORELEICURSCRIPT], a
	ld [W_CURMAPSCRIPT], a
	ret
LoreleiScript2: ; 7623f (1d:623f)
	call EndTrainerBattle
	ld a, [W_ISINBATTLE]
	cp $ff
	jp z, LoreleiScript_761b6
	ld a, $1
	ld [hSpriteIndexOrTextID], a
	jp DisplayTextID

LoreleiTextPointers: ; 76251 (1d:6251)
	dw LoreleiText1
	dw LoreleiDontRunAwayText

LoreleiTrainerHeaders: ; 76255 (1d:6255)
LoreleiTrainerHeader0: ; 76255 (1d:6255)
	dbEventFlagBit EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
	db ($0 << 4) ; trainer's view range
	dwEventFlagAddress EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
	dw LoreleiBeforeBattleText ; TextBeforeBattle
	dw LoreleiAfterBattleText ; TextAfterBattle
	dw LoreleiEndBattleText ; TextEndBattle
	dw LoreleiEndBattleText ; TextEndBattle

	db $ff

LoreleiText1: ; 76262 (1d:6262)
	TX_ASM
	ld hl, LoreleiTrainerHeader0
	call TalkToTrainer
	jp TextScriptEnd

LoreleiBeforeBattleText: ; 7626c (1d:626c)
	TX_FAR _LoreleiBeforeBattleText
	db "@"

LoreleiEndBattleText: ; 76271 (1d:6271)
	TX_FAR _LoreleiEndBattleText
	db "@"

LoreleiAfterBattleText: ; 76276 (1d:6276)
	TX_FAR _LoreleiAfterBattleText
	db "@"

LoreleiDontRunAwayText: ; 7627b (1d:627b)
	TX_FAR _LoreleiDontRunAwayText
	db "@"