diff options
Diffstat (limited to 'scripts/lorelei.asm')
-rwxr-xr-x | scripts/lorelei.asm | 125 |
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 "@" |