summaryrefslogtreecommitdiff
path: root/scripts/lorelei.asm
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/lorelei.asm')
-rwxr-xr-xscripts/lorelei.asm125
1 files changed, 63 insertions, 62 deletions
diff --git a/scripts/lorelei.asm b/scripts/lorelei.asm
index ab769d94..ec29847a 100755
--- a/scripts/lorelei.asm
+++ b/scripts/lorelei.asm
@@ -1,47 +1,49 @@
-LoreleiScript: ; 7617b (1d:617b)
- call LoreleiScript_76191
+LoreleiScript:
+ call LoreleiShowOrHideExitBlock
call EnableAutoTextBoxDrawing
- ld hl, LoreleiTrainerHeaders
+ ld hl, LoreleiTrainerHeader0
ld de, LoreleiScriptPointers
- ld a, [W_LORELEICURSCRIPT]
+ ld a, [wLoreleiCurScript]
call ExecuteCurMapScriptInTable
- ld [W_LORELEICURSCRIPT], a
+ ld [wLoreleiCurScript], a
ret
-LoreleiScript_76191: ; 76191 (1d:6191)
- ld hl, wd126
+LoreleiShowOrHideExitBlock:
+; Blocks or clears the exit to the next room.
+ ld hl, wCurrentMapScriptFlags
bit 5, [hl]
res 5, [hl]
ret z
- ld hl, wd734
+ ld hl, wBeatLorelei
set 1, [hl]
- ld a, [wd863]
- bit 1, a
- jr z, .asm_761a9
+ CheckEvent EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
+ jr z, .blockExitToNextRoom
ld a, $5
- jr .asm_761ab
-.asm_761a9
+ jr .setExitBlock
+.blockExitToNextRoom
ld a, $24
-.asm_761ab
- ld [wd09f], a
- ld bc, $2
+.setExitBlock
+ ld [wNewTileBlockID], a
+ lb bc, 0, 2
predef_jump ReplaceTileBlock
-LoreleiScript_761b6: ; 761b6 (1d:61b6)
+ResetLoreleiScript:
xor a
- ld [W_LORELEICURSCRIPT], a
+ ld [wLoreleiCurScript], a
ret
-LoreleiScriptPointers: ; 761bb (1d:61bb)
+LoreleiScriptPointers:
dw LoreleiScript0
dw DisplayEnemyTrainerTextAndStartBattle
dw LoreleiScript2
dw LoreleiScript3
dw LoreleiScript4
-LoreleiScript4: ; 761c5 (1d:61c5)
+LoreleiScript4:
ret
-asm_761c6: ; 761c6 (1d:61c6)
+
+LoreleiScriptWalkIntoRoom:
+; Walk six steps upward.
ld hl, wSimulatedJoypadStatesEnd
ld a, D_UP
ld [hli], a
@@ -54,11 +56,12 @@ asm_761c6: ; 761c6 (1d:61c6)
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld a, $3
- ld [W_LORELEICURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
+ ld [wLoreleiCurScript], a
+ ld [wCurMapScript], a
ret
-LoreleiScript0: ; 761e2 (1d:61e2)
- ld hl, CoordsData_76223
+
+LoreleiScript0:
+ ld hl, LoreleiEntranceCoords
call ArePlayerCoordsInArray
jp nc, CheckFightingMapTrainers
xor a
@@ -66,87 +69,85 @@ LoreleiScript0: ; 761e2 (1d:61e2)
ld [hJoyHeld], a
ld [wSimulatedJoypadStatesEnd], a
ld [wSimulatedJoypadStatesIndex], a
- ld a, [wWhichTrade] ; wWhichTrade
- cp $3
- jr c, .asm_76206
- ld hl, wd863
- bit 6, [hl]
- set 6, [hl]
- jr z, asm_761c6
-.asm_76206
+ ld a, [wCoordIndex]
+ cp $3 ; Is player standing one tile above the exit?
+ jr c, .stopPlayerFromLeaving
+ CheckAndSetEvent EVENT_AUTOWALKED_INTO_LORELEIS_ROOM
+ jr z, LoreleiScriptWalkIntoRoom
+.stopPlayerFromLeaving
ld a, $2
- ld [H_DOWNARROWBLINKCNT2], a ; $ff8c
- call DisplayTextID
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID ; "Don't run away!"
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
+ ld [wLoreleiCurScript], a
+ ld [wCurMapScript], a
ret
-CoordsData_76223: ; 76223 (1d:6223)
+LoreleiEntranceCoords:
db $0A,$04
db $0A,$05
db $0B,$04
db $0B,$05
db $FF
-LoreleiScript3: ; 7622c (1d:622c)
+LoreleiScript3:
ld a, [wSimulatedJoypadStatesIndex]
and a
ret nz
call Delay3
xor a
ld [wJoyIgnore], a
- ld [W_LORELEICURSCRIPT], a
- ld [W_CURMAPSCRIPT], a
+ ld [wLoreleiCurScript], a
+ ld [wCurMapScript], a
ret
-LoreleiScript2: ; 7623f (1d:623f)
+
+LoreleiScript2:
call EndTrainerBattle
- ld a, [W_ISINBATTLE] ; W_ISINBATTLE
+ ld a, [wIsInBattle]
cp $ff
- jp z, LoreleiScript_761b6
+ jp z, ResetLoreleiScript
ld a, $1
- ld [H_DOWNARROWBLINKCNT2], a ; $ff8c
+ ld [hSpriteIndexOrTextID], a
jp DisplayTextID
-LoreleiTextPointers: ; 76251 (1d:6251)
+LoreleiTextPointers:
dw LoreleiText1
- dw LoreleiText2
+ dw LoreleiDontRunAwayText
-LoreleiTrainerHeaders: ; 76255 (1d:6255)
-LoreleiTrainerHeader0: ; 76255 (1d:6255)
- db $1 ; flag's bit
+LoreleiTrainerHeader0:
+ dbEventFlagBit EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
db ($0 << 4) ; trainer's view range
- dw wd863 ; flag's byte
- dw LoreleiBeforeBattleText ; 0x626c TextBeforeBattle
- dw LoreleiAfterBattleText ; 0x6276 TextAfterBattle
- dw LoreleiEndBattleText ; 0x6271 TextEndBattle
- dw LoreleiEndBattleText ; 0x6271 TextEndBattle
+ 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)
- db $08 ; asm
+LoreleiText1:
+ TX_ASM
ld hl, LoreleiTrainerHeader0
call TalkToTrainer
jp TextScriptEnd
-LoreleiBeforeBattleText: ; 7626c (1d:626c)
+LoreleiBeforeBattleText:
TX_FAR _LoreleiBeforeBattleText
db "@"
-LoreleiEndBattleText: ; 76271 (1d:6271)
+LoreleiEndBattleText:
TX_FAR _LoreleiEndBattleText
db "@"
-LoreleiAfterBattleText: ; 76276 (1d:6276)
+LoreleiAfterBattleText:
TX_FAR _LoreleiAfterBattleText
db "@"
-LoreleiText2: ; 7627b (1d:627b)
- TX_FAR _LoreleiText2
+LoreleiDontRunAwayText:
+ TX_FAR _LoreleiDontRunAwayText
db "@"