summaryrefslogtreecommitdiff
path: root/scripts/LoreleisRoom.asm
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2019-01-01 15:06:23 -0500
committerRangi <remy.oukaour+rangi42@gmail.com>2019-01-01 23:33:10 -0500
commitc7796024590fec48ac79756793c1a6e3b54daf8f (patch)
tree0d61caa7ebe429995a61e800d1d78c3a82aec886 /scripts/LoreleisRoom.asm
parent90430e6dee9e207dc0b618d07566f83617343f60 (diff)
Rename map files, labels, and constants to be consistent and work with Polished Map
Diffstat (limited to 'scripts/LoreleisRoom.asm')
-rwxr-xr-xscripts/LoreleisRoom.asm153
1 files changed, 153 insertions, 0 deletions
diff --git a/scripts/LoreleisRoom.asm b/scripts/LoreleisRoom.asm
new file mode 100755
index 00000000..81142377
--- /dev/null
+++ b/scripts/LoreleisRoom.asm
@@ -0,0 +1,153 @@
+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
+ ld [hJoyPressed], a
+ ld [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
+ 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 [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
+ ld [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:
+ TX_ASM
+ ld hl, LoreleiTrainerHeader0
+ call TalkToTrainer
+ jp TextScriptEnd
+
+LoreleiBeforeBattleText:
+ TX_FAR _LoreleiBeforeBattleText
+ db "@"
+
+LoreleiEndBattleText:
+ TX_FAR _LoreleiEndBattleText
+ db "@"
+
+LoreleiAfterBattleText:
+ TX_FAR _LoreleiAfterBattleText
+ db "@"
+
+LoreleiDontRunAwayText:
+ TX_FAR _LoreleiDontRunAwayText
+ db "@"