summaryrefslogtreecommitdiff
path: root/scripts/AgathasRoom.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/AgathasRoom.asm
parent90430e6dee9e207dc0b618d07566f83617343f60 (diff)
Rename map files, labels, and constants to be consistent and work with Polished Map
Diffstat (limited to 'scripts/AgathasRoom.asm')
-rwxr-xr-xscripts/AgathasRoom.asm154
1 files changed, 154 insertions, 0 deletions
diff --git a/scripts/AgathasRoom.asm b/scripts/AgathasRoom.asm
new file mode 100755
index 00000000..a1dba196
--- /dev/null
+++ b/scripts/AgathasRoom.asm
@@ -0,0 +1,154 @@
+AgathasRoom_Script:
+ call AgathaShowOrHideExitBlock
+ call EnableAutoTextBoxDrawing
+ ld hl, AgathaTrainerHeader0
+ ld de, AgathasRoom_ScriptPointers
+ ld a, [wAgathasRoomCurScript]
+ call ExecuteCurMapScriptInTable
+ ld [wAgathasRoomCurScript], a
+ ret
+
+AgathaShowOrHideExitBlock:
+; Blocks or clears the exit to the next room.
+ ld hl, wCurrentMapScriptFlags
+ bit 5, [hl]
+ res 5, [hl]
+ ret z
+ CheckEvent EVENT_BEAT_AGATHAS_ROOM_TRAINER_0
+ jr z, .blockExitToNextRoom
+ ld a, $e
+ jp .setExitBlock
+.blockExitToNextRoom
+ ld a, $3b
+.setExitBlock:
+ ld [wNewTileBlockID], a
+ lb bc, 0, 2
+ predef_jump ReplaceTileBlock
+
+ResetAgathaScript:
+ xor a
+ ld [wAgathasRoomCurScript], a
+ ret
+
+AgathasRoom_ScriptPointers:
+ dw AgathaScript0
+ dw DisplayEnemyTrainerTextAndStartBattle
+ dw AgathaScript2
+ dw AgathaScript3
+ dw AgathaScript4
+
+AgathaScript4:
+ ret
+
+AgathaScriptWalkIntoRoom:
+; 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 [wAgathasRoomCurScript], a
+ ld [wCurMapScript], a
+ ret
+
+AgathaScript0:
+ ld hl, AgathaEntranceCoords
+ 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_AGATHAS_ROOM
+ jr z, AgathaScriptWalkIntoRoom
+.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 [wAgathasRoomCurScript], a
+ ld [wCurMapScript], a
+ ret
+
+AgathaEntranceCoords:
+ db $0A,$04
+ db $0A,$05
+ db $0B,$04
+ db $0B,$05
+ db $FF
+
+AgathaScript3:
+ ld a, [wSimulatedJoypadStatesIndex]
+ and a
+ ret nz
+ call Delay3
+ xor a
+ ld [wJoyIgnore], a
+ ld [wAgathasRoomCurScript], a
+ ld [wCurMapScript], a
+ ret
+
+AgathaScript2:
+ call EndTrainerBattle
+ ld a, [wIsInBattle]
+ cp $ff
+ jp z, ResetAgathaScript
+ ld a, $1
+ ld [hSpriteIndexOrTextID], a
+ call DisplayTextID
+ ld a, $1
+ ld [wChampionsRoomCurScript], a
+ ret
+
+AgathasRoom_TextPointers:
+ dw AgathaText1
+ dw AgathaDontRunAwayText
+
+AgathaTrainerHeader0:
+ dbEventFlagBit EVENT_BEAT_AGATHAS_ROOM_TRAINER_0
+ db ($0 << 4) ; trainer's view range
+ dwEventFlagAddress EVENT_BEAT_AGATHAS_ROOM_TRAINER_0
+ dw AgathaBeforeBattleText ; TextBeforeBattle
+ dw AgathaAfterBattleText ; TextAfterBattle
+ dw AgathaEndBattleText ; TextEndBattle
+ dw AgathaEndBattleText ; TextEndBattle
+
+ db $ff
+
+AgathaText1:
+ TX_ASM
+ ld hl, AgathaTrainerHeader0
+ call TalkToTrainer
+ jp TextScriptEnd
+
+AgathaBeforeBattleText:
+ TX_FAR _AgathaBeforeBattleText
+ db "@"
+
+AgathaEndBattleText:
+ TX_FAR _AgathaEndBattleText
+ db "@"
+
+AgathaAfterBattleText:
+ TX_FAR _AgathaAfterBattleText
+ db "@"
+
+AgathaDontRunAwayText:
+ TX_FAR _AgathaDontRunAwayText
+ db "@"