diff options
Diffstat (limited to 'scripts/agatha.asm')
-rwxr-xr-x | scripts/agatha.asm | 124 |
1 files changed, 61 insertions, 63 deletions
diff --git a/scripts/agatha.asm b/scripts/agatha.asm index a8f9e137..88d6a8de 100755 --- a/scripts/agatha.asm +++ b/scripts/agatha.asm @@ -1,46 +1,47 @@ -AgathaScript: ; 7642d (1d:642d) - call AgathaScript_76443 +AgathaScript: + call AgathaShowOrHideExitBlock call EnableAutoTextBoxDrawing - ld hl, AgathaTrainerHeaders + ld hl, AgathaTrainerHeader0 ld de, AgathaScriptPointers - ld a, [W_AGATHACURSCRIPT] + ld a, [wAgathaCurScript] call ExecuteCurMapScriptInTable - ld [W_AGATHACURSCRIPT], a + ld [wAgathaCurScript], a ret -AgathaScript_76443: ; 76443 (1d:6443) - ld hl, wd126 +AgathaShowOrHideExitBlock: +; Blocks or clears the exit to the next room. + ld hl, wCurrentMapScriptFlags bit 5, [hl] res 5, [hl] ret z - ld a, [wd865] - bit 1, a - jr z, .asm_76457 + CheckEvent EVENT_BEAT_AGATHAS_ROOM_TRAINER_0 + jr z, .blockExitToNextRoom ld a, $e - jp AgathaScript_76459 -.asm_76457 + jp .setExitBlock +.blockExitToNextRoom ld a, $3b - -AgathaScript_76459: ; 76459 (1d:6459) - ld [wd09f], a - ld bc, $2 +.setExitBlock: + ld [wNewTileBlockID], a + lb bc, 0, 2 predef_jump ReplaceTileBlock -AgathaScript_76464: ; 76464 (1d:6464) +ResetAgathaScript: xor a - ld [W_AGATHACURSCRIPT], a + ld [wAgathaCurScript], a ret -AgathaScriptPointers: ; 76469 (1d:6469) +AgathaScriptPointers: dw AgathaScript0 dw DisplayEnemyTrainerTextAndStartBattle dw AgathaScript2 dw AgathaScript3 dw AgathaScript4 -AgathaScript4: ; 76473 (1d:6473) +AgathaScript4: ret -asm_76474: ; 76474 (1d:6474) + +AgathaScriptWalkIntoRoom: +; Walk six steps upward. ld hl, wSimulatedJoypadStatesEnd ld a, D_UP ld [hli], a @@ -53,12 +54,12 @@ asm_76474: ; 76474 (1d:6474) ld [wSimulatedJoypadStatesIndex], a call StartSimulatingJoypadStates ld a, $3 - ld [W_AGATHACURSCRIPT], a - ld [W_CURMAPSCRIPT], a + ld [wAgathaCurScript], a + ld [wCurMapScript], a ret -AgathaScript0: ; 76490 (1d:6490) - ld hl, CoordsData_764d1 +AgathaScript0: + ld hl, AgathaEntranceCoords call ArePlayerCoordsInArray jp nc, CheckFightingMapTrainers xor a @@ -66,91 +67,88 @@ AgathaScript0: ; 76490 (1d:6490) ld [hJoyHeld], a ld [wSimulatedJoypadStatesEnd], a ld [wSimulatedJoypadStatesIndex], a - ld a, [wWhichTrade] ; wWhichTrade - cp $3 - jr c, .asm_764b4 - ld hl, wd865 - bit 6, [hl] - set 6, [hl] - jr z, asm_76474 -.asm_764b4 + 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 [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_AGATHACURSCRIPT], a - ld [W_CURMAPSCRIPT], a + ld [wAgathaCurScript], a + ld [wCurMapScript], a ret -CoordsData_764d1: ; 764d1 (1d:64d1) +AgathaEntranceCoords: db $0A,$04 db $0A,$05 db $0B,$04 db $0B,$05 db $FF -AgathaScript3: ; 764da (1d:64da) +AgathaScript3: ld a, [wSimulatedJoypadStatesIndex] and a ret nz call Delay3 xor a ld [wJoyIgnore], a - ld [W_AGATHACURSCRIPT], a - ld [W_CURMAPSCRIPT], a + ld [wAgathaCurScript], a + ld [wCurMapScript], a ret -AgathaScript2: ; 764ed (1d:64ed) +AgathaScript2: call EndTrainerBattle - ld a, [W_ISINBATTLE] ; W_ISINBATTLE + ld a, [wIsInBattle] cp $ff - jp z, AgathaScript_76464 + jp z, ResetAgathaScript ld a, $1 - ld [H_DOWNARROWBLINKCNT2], a ; $ff8c + ld [hSpriteIndexOrTextID], a call DisplayTextID ld a, $1 - ld [W_GARYCURSCRIPT], a + ld [wGaryCurScript], a ret -AgathaTextPointers: ; 76505 (1d:6505) +AgathaTextPointers: dw AgathaText1 - dw AgathaText2 + dw AgathaDontRunAwayText -AgathaTrainerHeaders: ; 76509 (1d:6509) -AgathaTrainerHeader0: ; 76509 (1d:6509) - db $1 ; flag's bit +AgathaTrainerHeader0: + dbEventFlagBit EVENT_BEAT_AGATHAS_ROOM_TRAINER_0 db ($0 << 4) ; trainer's view range - dw wd865 ; flag's byte - dw AgathaBeforeBattleText ; 0x6520 TextBeforeBattle - dw AgathaAfterBattleText ; 0x652a TextAfterBattle - dw AgathaEndBattleText ; 0x6525 TextEndBattle - dw AgathaEndBattleText ; 0x6525 TextEndBattle + dwEventFlagAddress EVENT_BEAT_AGATHAS_ROOM_TRAINER_0 + dw AgathaBeforeBattleText ; TextBeforeBattle + dw AgathaAfterBattleText ; TextAfterBattle + dw AgathaEndBattleText ; TextEndBattle + dw AgathaEndBattleText ; TextEndBattle db $ff -AgathaText1: ; 76516 (1d:6516) - db $08 ; asm +AgathaText1: + TX_ASM ld hl, AgathaTrainerHeader0 call TalkToTrainer jp TextScriptEnd -AgathaBeforeBattleText: ; 76520 (1d:6520) +AgathaBeforeBattleText: TX_FAR _AgathaBeforeBattleText db "@" -AgathaEndBattleText: ; 76525 (1d:6525) +AgathaEndBattleText: TX_FAR _AgathaEndBattleText db "@" -AgathaAfterBattleText: ; 7652a (1d:652a) +AgathaAfterBattleText: TX_FAR _AgathaAfterBattleText db "@" -AgathaText2: ; 7652f (1d:652f) - TX_FAR _AgathaText2 +AgathaDontRunAwayText: + TX_FAR _AgathaDontRunAwayText db "@" |