pokered/scripts/SeafoamIslandsB3F.asm

153 lines
4.1 KiB
NASM
Raw Permalink Normal View History

SeafoamIslandsB3F_Script:
2014-05-18 18:19:10 +00:00
call EnableAutoTextBoxDrawing
ld hl, wMiscFlags
bit BIT_PUSHED_BOULDER, [hl]
res BIT_PUSHED_BOULDER, [hl]
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
jr nz, .boulder2FellDownHole
2015-07-21 17:36:03 +00:00
SetEventReuseHL EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
ld a, HS_SEAFOAM_ISLANDS_B3F_BOULDER_1
2015-07-25 03:27:59 +00:00
ld [wObjectToHide], a
ld a, HS_SEAFOAM_ISLANDS_B4F_BOULDER_1
2015-07-25 03:27:59 +00:00
ld [wObjectToShow], a
jr .hideAndShowBoulderObjects
.boulder2FellDownHole
2015-07-21 17:36:03 +00:00
SetEventAfterBranchReuseHL EVENT_SEAFOAM4_BOULDER2_DOWN_HOLE, EVENT_SEAFOAM4_BOULDER1_DOWN_HOLE
ld a, HS_SEAFOAM_ISLANDS_B3F_BOULDER_2
2015-07-25 03:27:59 +00:00
ld [wObjectToHide], a
ld a, HS_SEAFOAM_ISLANDS_B4F_BOULDER_2
2015-07-25 03:27:59 +00:00
ld [wObjectToShow], a
.hideAndShowBoulderObjects
2015-07-25 03:27:59 +00:00
ld a, [wObjectToHide]
ld [wMissableObjectIndex], a
predef HideObject
2015-07-25 03:27:59 +00:00
ld a, [wObjectToShow]
ld [wMissableObjectIndex], a
predef ShowObject
jr .runCurrentMapScript
.noBoulderWasPushed
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
ld a, [wStatusFlags6]
bit BIT_DUNGEON_WARP, a
2014-05-18 18:19:10 +00:00
ret nz
.runCurrentMapScript
ld hl, SeafoamIslandsB3F_ScriptPointers
ld a, [wSeafoamIslandsB3FCurScript]
2014-05-18 18:19:10 +00:00
jp CallFunctionInTable
Seafoam4HolesCoords:
dbmapcoord 3, 16
dbmapcoord 6, 16
db -1 ; end
2014-05-18 18:19:10 +00:00
SeafoamIslandsB3F_ScriptPointers:
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
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]
cp 8
2014-05-18 18:19:10 +00:00
ret nz
2015-08-31 02:38:41 +00:00
ld a, [wXCoord]
cp 15
2014-05-18 18:19:10 +00:00
ret nz
ld hl, wSimulatedJoypadStatesEnd
ld de, RLEList_ForcedSurfingStrongCurrentNearSteps
2014-05-18 18:19:10 +00:00
call DecodeRLEList
dec a
ld [wSimulatedJoypadStatesIndex], a
call StartSimulatingJoypadStates
ld hl, wStatusFlags7
set BIT_FORCED_WARP, [hl]
ld a, SCRIPT_SEAFOAMISLANDSB3F_OBJECT_MOVING1
ld [wSeafoamIslandsB3FCurScript], a
2014-05-18 18:19:10 +00:00
ret
RLEList_ForcedSurfingStrongCurrentNearSteps:
db D_DOWN, 6
db D_RIGHT, 5
db D_DOWN, 3
db -1 ; end
2014-05-18 18:19:10 +00:00
SeafoamIslandsB3FObjectMoving1Script:
ld a, [wSimulatedJoypadStatesIndex]
2014-05-18 18:19:10 +00:00
and a
ret nz
ld a, SCRIPT_SEAFOAMISLANDSB3F_DEFAULT
ld [wSeafoamIslandsB3FCurScript], a
2014-05-18 18:19:10 +00:00
ret
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]
cp 18
jr z, .playerFellThroughHoleLeft
cp 19
ld a, SCRIPT_SEAFOAMISLANDSB3F_DEFAULT
jr nz, .playerNotInStrongCurrent
ld de, .RLEList_StrongCurrentNearRightBoulder
jr .forceSurfMovement
.playerFellThroughHoleLeft
ld de, .RLEList_StrongCurrentNearLeftBoulder
.forceSurfMovement
ld hl, wSimulatedJoypadStatesEnd
2014-05-18 18:19:10 +00:00
call DecodeRLEList
dec a
ld [wSimulatedJoypadStatesIndex], a
2014-05-18 18:19:10 +00:00
xor a
ld [wSpritePlayerStateData2MovementByte1], a
ld hl, wStatusFlags5
set BIT_SCRIPTED_MOVEMENT_STATE, [hl]
ld hl, wStatusFlags7
set BIT_FORCED_WARP, [hl]
ld a, SCRIPT_SEAFOAMISLANDSB3F_OBJECT_MOVING2
.playerNotInStrongCurrent
ld [wSeafoamIslandsB3FCurScript], a
2014-05-18 18:19:10 +00:00
ret
.RLEList_StrongCurrentNearRightBoulder:
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
.RLEList_StrongCurrentNearLeftBoulder:
db D_DOWN, 6
db D_RIGHT, 2
db D_DOWN, 4
db -1 ; end
2014-05-18 18:19:10 +00:00
SeafoamIslandsB3FObjectMoving2Script:
ld a, [wSimulatedJoypadStatesIndex]
2014-05-18 18:19:10 +00:00
and a
ret nz
ld a, SCRIPT_SEAFOAMISLANDSB3F_DEFAULT
ld [wSeafoamIslandsB3FCurScript], a
2014-05-18 18:19:10 +00:00
ret
SeafoamIslandsB3F_TextPointers:
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