2019-01-01 20:06:23 +00:00
|
|
|
SeafoamIslandsB3F_Script:
|
2014-05-18 18:19:10 +00:00
|
|
|
call EnableAutoTextBoxDrawing
|
2024-07-16 17:02:54 +00:00
|
|
|
ld hl, wMiscFlags
|
|
|
|
bit BIT_PUSHED_BOULDER, [hl]
|
|
|
|
res BIT_PUSHED_BOULDER, [hl]
|
2023-11-19 21:09:33 +00:00
|
|
|
jr z, .noBoulderWasPushed
|
2014-05-18 18:19:10 +00:00
|
|
|
ld hl, Seafoam4HolesCoords
|
|
|
|
call CheckBoulderCoords
|
|
|
|
ret nc
|
2015-07-21 17:36:03 +00:00
|
|
|
EventFlagAddress hl, EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
|
2015-07-19 03:49:52 +00:00
|
|
|
ld a, [wCoordIndex]
|
2014-05-18 18:19:10 +00:00
|
|
|
cp $1
|
2023-11-19 21:09:33 +00:00
|
|
|
jr nz, .boulder2FellDownHole
|
2015-07-21 17:36:03 +00:00
|
|
|
SetEventReuseHL EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
|
2019-01-01 20:06:23 +00:00
|
|
|
ld a, HS_SEAFOAM_ISLANDS_B3F_BOULDER_1
|
2015-07-25 03:27:59 +00:00
|
|
|
ld [wObjectToHide], a
|
2019-01-01 20:06:23 +00:00
|
|
|
ld a, HS_SEAFOAM_ISLANDS_B4F_BOULDER_1
|
2015-07-25 03:27:59 +00:00
|
|
|
ld [wObjectToShow], a
|
2023-11-19 21:09:33 +00:00
|
|
|
jr .hideAndShowBoulderObjects
|
|
|
|
.boulder2FellDownHole
|
2015-07-21 17:36:03 +00:00
|
|
|
SetEventAfterBranchReuseHL EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
|
2019-01-01 20:06:23 +00:00
|
|
|
ld a, HS_SEAFOAM_ISLANDS_B3F_BOULDER_2
|
2015-07-25 03:27:59 +00:00
|
|
|
ld [wObjectToHide], a
|
2019-01-01 20:06:23 +00:00
|
|
|
ld a, HS_SEAFOAM_ISLANDS_B4F_BOULDER_2
|
2015-07-25 03:27:59 +00:00
|
|
|
ld [wObjectToShow], a
|
2023-11-19 21:09:33 +00:00
|
|
|
.hideAndShowBoulderObjects
|
2015-07-25 03:27:59 +00:00
|
|
|
ld a, [wObjectToHide]
|
|
|
|
ld [wMissableObjectIndex], a
|
2014-06-16 20:57:26 +00:00
|
|
|
predef HideObject
|
2015-07-25 03:27:59 +00:00
|
|
|
ld a, [wObjectToShow]
|
|
|
|
ld [wMissableObjectIndex], a
|
2014-06-16 20:57:26 +00:00
|
|
|
predef ShowObject
|
2023-11-19 21:09:33 +00:00
|
|
|
jr .runCurrentMapScript
|
|
|
|
.noBoulderWasPushed
|
2019-07-07 04:44:21 +00:00
|
|
|
ld a, SEAFOAM_ISLANDS_B4F
|
2014-09-13 07:50:56 +00:00
|
|
|
ld [wDungeonWarpDestinationMap], a
|
2014-05-18 18:19:10 +00:00
|
|
|
ld hl, Seafoam4HolesCoords
|
2015-07-19 03:49:52 +00:00
|
|
|
call IsPlayerOnDungeonWarp
|
2024-07-16 17:02:54 +00:00
|
|
|
ld a, [wStatusFlags6]
|
|
|
|
bit BIT_DUNGEON_WARP, a
|
2014-05-18 18:19:10 +00:00
|
|
|
ret nz
|
2023-11-19 21:09:33 +00:00
|
|
|
.runCurrentMapScript
|
2019-01-01 20:06:23 +00:00
|
|
|
ld hl, SeafoamIslandsB3F_ScriptPointers
|
|
|
|
ld a, [wSeafoamIslandsB3FCurScript]
|
2014-05-18 18:19:10 +00:00
|
|
|
jp CallFunctionInTable
|
|
|
|
|
2016-04-07 02:58:45 +00:00
|
|
|
Seafoam4HolesCoords:
|
2020-07-16 16:32:19 +00:00
|
|
|
dbmapcoord 3, 16
|
|
|
|
dbmapcoord 6, 16
|
|
|
|
db -1 ; end
|
2014-05-18 18:19:10 +00:00
|
|
|
|
2019-01-01 20:06:23 +00:00
|
|
|
SeafoamIslandsB3F_ScriptPointers:
|
2023-07-14 01:27:56 +00:00
|
|
|
def_script_pointers
|
|
|
|
dw_const SeafoamIslandsB3FDefaultScript, SCRIPT_SEAFOAMISLANDSB3F_DEFAULT
|
|
|
|
dw_const SeafoamIslandsB3FObjectMoving1Script, SCRIPT_SEAFOAMISLANDSB3F_OBJECT_MOVING1
|
|
|
|
dw_const SeafoamIslandsB3FMoveObjectScript, SCRIPT_SEAFOAMISLANDSB3F_MOVE_OBJECT
|
|
|
|
dw_const SeafoamIslandsB3FObjectMoving2Script, SCRIPT_SEAFOAMISLANDSB3F_OBJECT_MOVING2
|
|
|
|
EXPORT SCRIPT_SEAFOAMISLANDSB3F_MOVE_OBJECT ; used by engine/overworld/player_state.asm
|
2014-05-18 18:19:10 +00:00
|
|
|
|
2023-07-14 01:27:56 +00:00
|
|
|
SeafoamIslandsB3FDefaultScript:
|
2015-07-21 17:36:03 +00:00
|
|
|
CheckBothEventsSet EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE
|
2014-05-18 18:19:10 +00:00
|
|
|
ret z
|
2015-08-31 02:38:41 +00:00
|
|
|
ld a, [wYCoord]
|
2020-08-28 16:10:55 +00:00
|
|
|
cp 8
|
2014-05-18 18:19:10 +00:00
|
|
|
ret nz
|
2015-08-31 02:38:41 +00:00
|
|
|
ld a, [wXCoord]
|
2020-08-28 16:10:55 +00:00
|
|
|
cp 15
|
2014-05-18 18:19:10 +00:00
|
|
|
ret nz
|
2014-09-10 03:55:19 +00:00
|
|
|
ld hl, wSimulatedJoypadStatesEnd
|
2023-11-19 21:09:33 +00:00
|
|
|
ld de, RLEList_ForcedSurfingStrongCurrentNearSteps
|
2014-05-18 18:19:10 +00:00
|
|
|
call DecodeRLEList
|
|
|
|
dec a
|
2014-09-10 03:55:19 +00:00
|
|
|
ld [wSimulatedJoypadStatesIndex], a
|
|
|
|
call StartSimulatingJoypadStates
|
2024-07-16 17:02:54 +00:00
|
|
|
ld hl, wStatusFlags7
|
|
|
|
set BIT_FORCED_WARP, [hl]
|
2023-07-14 01:27:56 +00:00
|
|
|
ld a, SCRIPT_SEAFOAMISLANDSB3F_OBJECT_MOVING1
|
2019-01-01 20:06:23 +00:00
|
|
|
ld [wSeafoamIslandsB3FCurScript], a
|
2014-05-18 18:19:10 +00:00
|
|
|
ret
|
|
|
|
|
2023-11-19 21:09:33 +00:00
|
|
|
RLEList_ForcedSurfingStrongCurrentNearSteps:
|
2020-07-16 16:32:19 +00:00
|
|
|
db D_DOWN, 6
|
|
|
|
db D_RIGHT, 5
|
|
|
|
db D_DOWN, 3
|
|
|
|
db -1 ; end
|
2014-05-18 18:19:10 +00:00
|
|
|
|
2023-07-14 01:27:56 +00:00
|
|
|
SeafoamIslandsB3FObjectMoving1Script:
|
2014-09-10 03:55:19 +00:00
|
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
2014-05-18 18:19:10 +00:00
|
|
|
and a
|
|
|
|
ret nz
|
2023-07-14 01:27:56 +00:00
|
|
|
ld a, SCRIPT_SEAFOAMISLANDSB3F_DEFAULT
|
2019-01-01 20:06:23 +00:00
|
|
|
ld [wSeafoamIslandsB3FCurScript], a
|
2014-05-18 18:19:10 +00:00
|
|
|
ret
|
|
|
|
|
2023-07-14 01:27:56 +00:00
|
|
|
SeafoamIslandsB3FMoveObjectScript:
|
2015-07-21 17:36:03 +00:00
|
|
|
CheckBothEventsSet EVENT_SEAFOAM3_BOULDER1_DOWN_HOLE, EVENT_SEAFOAM3_BOULDER2_DOWN_HOLE
|
2014-05-18 18:19:10 +00:00
|
|
|
ret z
|
2015-08-31 02:38:41 +00:00
|
|
|
ld a, [wXCoord]
|
2020-08-28 16:10:55 +00:00
|
|
|
cp 18
|
2023-11-19 21:09:33 +00:00
|
|
|
jr z, .playerFellThroughHoleLeft
|
2020-08-28 16:10:55 +00:00
|
|
|
cp 19
|
2023-07-14 01:27:56 +00:00
|
|
|
ld a, SCRIPT_SEAFOAMISLANDSB3F_DEFAULT
|
2023-11-19 21:09:33 +00:00
|
|
|
jr nz, .playerNotInStrongCurrent
|
|
|
|
ld de, .RLEList_StrongCurrentNearRightBoulder
|
|
|
|
jr .forceSurfMovement
|
|
|
|
.playerFellThroughHoleLeft
|
|
|
|
ld de, .RLEList_StrongCurrentNearLeftBoulder
|
|
|
|
.forceSurfMovement
|
2014-09-10 03:55:19 +00:00
|
|
|
ld hl, wSimulatedJoypadStatesEnd
|
2014-05-18 18:19:10 +00:00
|
|
|
call DecodeRLEList
|
|
|
|
dec a
|
2014-09-10 03:55:19 +00:00
|
|
|
ld [wSimulatedJoypadStatesIndex], a
|
2014-05-18 18:19:10 +00:00
|
|
|
xor a
|
2020-07-05 21:29:11 +00:00
|
|
|
ld [wSpritePlayerStateData2MovementByte1], a
|
2024-07-16 17:02:54 +00:00
|
|
|
ld hl, wStatusFlags5
|
|
|
|
set BIT_SCRIPTED_MOVEMENT_STATE, [hl]
|
|
|
|
ld hl, wStatusFlags7
|
|
|
|
set BIT_FORCED_WARP, [hl]
|
2023-07-14 01:27:56 +00:00
|
|
|
ld a, SCRIPT_SEAFOAMISLANDSB3F_OBJECT_MOVING2
|
2023-11-19 21:09:33 +00:00
|
|
|
.playerNotInStrongCurrent
|
2019-01-01 20:06:23 +00:00
|
|
|
ld [wSeafoamIslandsB3FCurScript], a
|
2014-05-18 18:19:10 +00:00
|
|
|
ret
|
|
|
|
|
2023-11-19 21:09:33 +00:00
|
|
|
.RLEList_StrongCurrentNearRightBoulder:
|
2020-07-16 16:32:19 +00:00
|
|
|
db D_DOWN, 6
|
|
|
|
db D_RIGHT, 2
|
|
|
|
db D_DOWN, 4
|
|
|
|
db D_LEFT, 1
|
|
|
|
db -1 ; end
|
2014-05-18 18:19:10 +00:00
|
|
|
|
2023-11-19 21:09:33 +00:00
|
|
|
.RLEList_StrongCurrentNearLeftBoulder:
|
2020-07-16 16:32:19 +00:00
|
|
|
db D_DOWN, 6
|
|
|
|
db D_RIGHT, 2
|
|
|
|
db D_DOWN, 4
|
|
|
|
db -1 ; end
|
2014-05-18 18:19:10 +00:00
|
|
|
|
2023-07-14 01:27:56 +00:00
|
|
|
SeafoamIslandsB3FObjectMoving2Script:
|
2014-09-10 03:55:19 +00:00
|
|
|
ld a, [wSimulatedJoypadStatesIndex]
|
2014-05-18 18:19:10 +00:00
|
|
|
and a
|
|
|
|
ret nz
|
2023-07-14 01:27:56 +00:00
|
|
|
ld a, SCRIPT_SEAFOAMISLANDSB3F_DEFAULT
|
2019-01-01 20:06:23 +00:00
|
|
|
ld [wSeafoamIslandsB3FCurScript], a
|
2014-05-18 18:19:10 +00:00
|
|
|
ret
|
|
|
|
|
2019-01-01 20:06:23 +00:00
|
|
|
SeafoamIslandsB3F_TextPointers:
|
2023-07-14 01:27:56 +00:00
|
|
|
def_text_pointers
|
|
|
|
dw_const BoulderText, TEXT_SEAFOAMISLANDSB3F_BOULDER1
|
|
|
|
dw_const BoulderText, TEXT_SEAFOAMISLANDSB3F_BOULDER2
|
|
|
|
dw_const BoulderText, TEXT_SEAFOAMISLANDSB3F_BOULDER3
|
|
|
|
dw_const BoulderText, TEXT_SEAFOAMISLANDSB3F_BOULDER4
|
|
|
|
dw_const BoulderText, TEXT_SEAFOAMISLANDSB3F_BOULDER5
|
|
|
|
dw_const BoulderText, TEXT_SEAFOAMISLANDSB3F_BOULDER6
|