mirror of
https://github.com/pret/pokered.git
synced 2024-10-23 06:58:24 +00:00
153 lines
3 KiB
NASM
Executable file
153 lines
3 KiB
NASM
Executable file
LoreleisRoom_Script:
|
|
call LoreleiShowOrHideExitBlock
|
|
call EnableAutoTextBoxDrawing
|
|
ld hl, LoreleiTrainerHeader0
|
|
ld de, LoreleisRoom_ScriptPointers
|
|
ld a, [wLoreleisRoomCurScript]
|
|
call ExecuteCurMapScriptInTable
|
|
ld [wLoreleisRoomCurScript], a
|
|
ret
|
|
|
|
LoreleiShowOrHideExitBlock:
|
|
; Blocks or clears the exit to the next room.
|
|
ld hl, wCurrentMapScriptFlags
|
|
bit 5, [hl]
|
|
res 5, [hl]
|
|
ret z
|
|
ld hl, wBeatLorelei
|
|
set 1, [hl]
|
|
CheckEvent EVENT_BEAT_LORELEIS_ROOM_TRAINER_0
|
|
jr z, .blockExitToNextRoom
|
|
ld a, $5
|
|
jr .setExitBlock
|
|
.blockExitToNextRoom
|
|
ld a, $24
|
|
.setExitBlock
|
|
ld [wNewTileBlockID], a
|
|
lb bc, 0, 2
|
|
predef_jump ReplaceTileBlock
|
|
|
|
ResetLoreleiScript:
|
|
xor a
|
|
ld [wLoreleisRoomCurScript], a
|
|
ret
|
|
|
|
LoreleisRoom_ScriptPointers:
|
|
dw LoreleiScript0
|
|
dw DisplayEnemyTrainerTextAndStartBattle
|
|
dw LoreleiScript2
|
|
dw LoreleiScript3
|
|
dw LoreleiScript4
|
|
|
|
LoreleiScript4:
|
|
ret
|
|
|
|
LoreleiScriptWalkIntoRoom:
|
|
; Walk six steps upward.
|
|
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 [wLoreleisRoomCurScript], a
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
LoreleiScript0:
|
|
ld hl, LoreleiEntranceCoords
|
|
call ArePlayerCoordsInArray
|
|
jp nc, CheckFightingMapTrainers
|
|
xor a
|
|
ldh [hJoyPressed], a
|
|
ldh [hJoyHeld], a
|
|
ld [wSimulatedJoypadStatesEnd], a
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
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
|
|
ldh [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 [wLoreleisRoomCurScript], a
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
LoreleiEntranceCoords:
|
|
db $0A,$04
|
|
db $0A,$05
|
|
db $0B,$04
|
|
db $0B,$05
|
|
db $FF
|
|
|
|
LoreleiScript3:
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
|
and a
|
|
ret nz
|
|
call Delay3
|
|
xor a
|
|
ld [wJoyIgnore], a
|
|
ld [wLoreleisRoomCurScript], a
|
|
ld [wCurMapScript], a
|
|
ret
|
|
|
|
LoreleiScript2:
|
|
call EndTrainerBattle
|
|
ld a, [wIsInBattle]
|
|
cp $ff
|
|
jp z, ResetLoreleiScript
|
|
ld a, $1
|
|
ldh [hSpriteIndexOrTextID], a
|
|
jp DisplayTextID
|
|
|
|
LoreleisRoom_TextPointers:
|
|
dw LoreleiText1
|
|
dw LoreleiDontRunAwayText
|
|
|
|
LoreleiTrainerHeader0:
|
|
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:
|
|
text_asm
|
|
ld hl, LoreleiTrainerHeader0
|
|
call TalkToTrainer
|
|
jp TextScriptEnd
|
|
|
|
LoreleiBeforeBattleText:
|
|
text_far _LoreleiBeforeBattleText
|
|
text_end
|
|
|
|
LoreleiEndBattleText:
|
|
text_far _LoreleiEndBattleText
|
|
text_end
|
|
|
|
LoreleiAfterBattleText:
|
|
text_far _LoreleiAfterBattleText
|
|
text_end
|
|
|
|
LoreleiDontRunAwayText:
|
|
text_far _LoreleiDontRunAwayText
|
|
text_end
|