diff options
author | Rangi <remy.oukaour+rangi42@gmail.com> | 2019-01-01 15:06:23 -0500 |
---|---|---|
committer | Rangi <remy.oukaour+rangi42@gmail.com> | 2019-01-01 23:33:10 -0500 |
commit | c7796024590fec48ac79756793c1a6e3b54daf8f (patch) | |
tree | 0d61caa7ebe429995a61e800d1d78c3a82aec886 /scripts/LoreleisRoom.asm | |
parent | 90430e6dee9e207dc0b618d07566f83617343f60 (diff) |
Rename map files, labels, and constants to be consistent and work with Polished Map
Diffstat (limited to 'scripts/LoreleisRoom.asm')
-rwxr-xr-x | scripts/LoreleisRoom.asm | 153 |
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 "@" |