Ensure anchor points are applied when landing after warp by creating a new setup script

This commit is contained in:
xCrystal
2023-12-14 17:11:15 +01:00
parent 429aad6798
commit af9ab166c4
6 changed files with 28 additions and 3 deletions

2
engine/board/menu.asm Executable file → Normal file
View File

@@ -93,7 +93,7 @@ BoardMenuScript::
res 2, [hl]
ld a, BOARDEVENT_VIEW_MAP_MODE
ldh [hCurBoardEvent], a
ld a, TRUE
ld a, 100
ld [wViewMapModeRange], a
ld a, [wMapGroup]
ld [wBeforeViewMapMapGroup], a

2
engine/board/spaces.asm Executable file → Normal file
View File

@@ -271,7 +271,7 @@ PromptPlayerToChooseBranchDirection:
.EnterViewMapMode:
ld a, BOARDEVENT_VIEW_MAP_MODE
ldh [hCurBoardEvent], a
ld a, TRUE
ld a, 100
ld [wViewMapModeRange], a
ld a, [wMapGroup]
ld [wBeforeViewMapMapGroup], a

View File

@@ -412,3 +412,24 @@ GetMapScreenCoords::
and 1
ld [wPlayerMetatileX], a
ret
AnchorPointAfterWarp:
; if wCurSpaceNextSpace is not an anchor point, override any anchor point we pass through
ld a, [wCurSpaceNextSpace]
cp NEXT_SPACE_IS_ANCHOR_POINT
ret c
ld a, [wCurMapAnchorEventCount]
and a
ret z
; if we have arrived to an anchor point, load its associated next space to wCurSpaceNextSpace right now.
; note that the next space of an anchor point could be another anchor point.
ld c, a
ld hl, wCurMapAnchorEventsPointer
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [wXCoord]
ld d, a
ld a, [wYCoord]
ld e, a
jp CheckAndApplyAnchorPoint