Alchemy
Loading...
Searching...
No Matches

crossbone_isle_pillar_rooms.c File Reference

Crossbone Isle's pillar rooms: pillars to push, jump across, Move and Carry, the switch that raises the water in room 3, and the pools Frost freezes in room 5. More...

Go to the source code of this file.

Data Structures

union  CrossboneIslePillarCell
 A copied map cell, also read in the two flag pairs the pillar redraw keeps. More...
struct  CrossboneIslePillarCell::CrossboneIslePillarCellBits
struct  PillarPlacement
 A pillar slot's place and ground cell, without its flag; it holds one slot while two are swapped. More...
struct  PillarSlot
 Where one of room 4's pillars stands, the ground cell saved under it and its footprint flag. More...

Macros

#define WATER_ACTOR   16
#define WATER_RAISED_FLAG   FLAG_SCENE_TEMP_00
 Room 3: the water has been raised.
#define FIRST_FROZEN_POOL_FLAG   FLAG_SCENE_TEMP_00
#define LEADER_ON_THIRD_POOL_FLAG   FLAG_SCENE_TEMP_03
#define PILLAR_SUNK_FLAG   FLAG_SCENE_TEMP_04
#define DIRECTION_STEP(dx, dz)
 Pixel step by direction: X in the upper halfword, Z in the lower.

Functions

 STATIC_ASSERT (sizeof(union CrossboneIslePillarCell)==sizeof(struct MapCell))
 STATIC_ASSERT (offsetof(union CrossboneIslePillarCell, bits.collisionCode)==2)
 STATIC_ASSERT (offsetof(union CrossboneIslePillarCell, bits.attributeB)==3)
static void CrossboneIslePillarRooms_SettleActorOnGround (struct FieldActor *actor)
 Waits up to sixty frames for landing, then stops vertical movement on the ground.
static void CrossboneIslePillarRooms_StopAtGroundOrHeight (struct FieldActor *actor, s32 limit)
 Waits until the actor reaches the ground or height limit, then stops its descent.
static s32 CrossboneIslePillarRooms_QueryFootprint (s32 id, u32 *width, u32 *depth, struct StagedActorProbe *probe, s32 *layerOriginX, s32 *layerOriginZ)
 Finds the actor's footprint dimensions, grid position, and map-layer origin.
static s32 CrossboneIslePillarRooms_DrawRaisedFootprint (s32 actorId)
 Draws the raised pillar's footprint and puts its actor under the leader.
static void CrossboneIslePillarRooms_DrawRaisedPillars (void)
 Redraws all seven pillars at the raised water level.
static s32 CrossboneIslePillarRooms_RestoreGroundFootprint (s32 actorId)
 Restores the ground tiles and collision attributes under the actor's footprint.
static void CrossboneIslePillarRooms_ReadMapCell (s32 layer, s32 x, s32 y, union CrossboneIslePillarCell *dst)
 Reads one map cell through DMA, waiting until the transfer finishes.
static void CrossboneIslePillarRooms_SetCellAttributes (s32 layer, s32 x, s32 y, const union CrossboneIslePillarCell *source)
 Copies the cell's flags and collision attributes without replacing its tile.
static s32 CrossboneIslePillarRooms_LowerActorToLedge (s32 id, s32 far)
 Finds the next terrain ledge and stops the falling actor at its projected height.
static void CrossboneIslePillarRooms_ShrinkPillar (s32 index)
 Shrinks the pillar and lowers its height for up to thirty-two frames.
static UNUSED void CrossboneIslePillarRooms_SpawnUnusedLeaderParticle (void)
 Spawns the unused particle near the leader once every four frames.
static s32 CrossboneIslePillarRooms_TryJumpAcrossPillar (void)
 Jumps two cells forward when both the intervening and landing cells permit it.
static void CrossboneIslePillarRooms_UpdateDampedParticle (union FieldObject *object)
 Moves the particle while damping its velocity, growing it, and advancing rotation.
static s32 CrossboneIslePillarRooms_SetChildValueFromTimer (struct ScriptInterpreter *interpreter)
 Applies the actor timer's low four bits to its child sprite value.
const struct SceneEntrance * Scene_GetEntrances (void)
const struct SceneRegion * Scene_GetRegions (void)
const u32 * Scene_GetExits (void)
 Returns the shared exits for the pillar rooms.
const struct ScenePlacement * Scene_GetPlacements (void)
static void Event_JumpOrPushPillar (void)
 Walking into a pillar in room 1: jump two cells across it where the cells allow, otherwise push it.
static void Event_PushPillar (void)
 Walking into a pillar in rooms 2 and 3: push it if the cell beyond is clear.
static void CrossboneIslePillarRooms_JitterBackgroundScroll (void)
 Randomly substitutes the shifted background scroll during the water transition.
static __inline__ void Dma_Wait (volatile u32 *dma)
 Waits until the DMA channel clears its enable bit.
static void CrossboneIslePillarRooms_PrepareWaterScroll (void)
 Copies the three background scroll pairs and shifts their vertical offsets by 192 pixels.
static void CrossboneIslePillarRooms_AnimateWaterLevel (void)
 Reveals the alternate water tiles through a gradually randomized scroll transition.
static void Event_FlipWaterSwitch (void)
 Searching the switch in room 3 flips it.
static s32 CrossboneIslePillarRooms_SyncPriorityIfBehind (struct FieldActor *actor, struct FieldActor *front)
 Matches a nearby actor's draw priority when it is behind the comparison actor.
static s32 CrossboneIslePillarRooms_SyncPriorityIfAhead (struct FieldActor *front, struct FieldActor *actor)
 Matches the comparison actor's draw priority when it overlaps the actor in front.
static s32 CrossboneIslePillarRooms_UpdateActorPriority (union FieldObject *fieldObject)
 Keeps each moving pillar's priority and collision flags consistent with the leader.
static void CrossboneIslePillarRooms_SortPillarActors (void)
 Sorts the four pillars by height and depth, carrying their saved cell state with them.
static void Event_MovePillar (void)
 Move or Carry on one of room 4's pillars, and after each push there: the pillars settle, and their footprints follow them.
static void Event_JumpOrPushRoom4Pillar (void)
 Walking into a pillar in room 4: jump across if possible, otherwise push it, and the pillars settle.
static void Event_ClimbUp (void)
 Walking north at room 4's ladder: climb up.
static void Event_PushOrClimbDown (void)
 Walking south at room 4's ladder: push the pillar below, jump, or climb down.
static void Event_StartRising (void)
 Stepping on trigger 40 in room 4: the fade overlay follows the leader, and the leader's rise counter starts.
static void Event_StopRising (void)
 Stepping on trigger 41 in room 4: the overlay lets the leader go, and the rise counter stops.
static s32 CrossboneIslePillarRooms_UpdateFrozenPoolPriority (union FieldObject *fieldObject)
 Puts the frozen pool under the leader when it is behind and below the leader.
static void CrossboneIslePillarRooms_FreezePool (s32 id)
 Remembers the frozen pool, installs its priority callback, and starts its flicker script.
static void Event_FreezeFirstPool (void)
 Frost on the first pool in room 5: it freezes into a pillar of ice.
static void Event_FreezeSecondPool (void)
 Frost on the second pool in room 5.
static void Event_FrostBeginsOnThirdPool (void)
 Frost begins on the third pool: note whether the leader stands on it.
static void Event_FrostRaisesPillar (void)
 Later in the same Frost: the third pool shrinks back, and the pillar beside it (actor 14) rises 32 pixels.
static void CrossboneIslePillarRooms_SpawnFrostParticle (void)
 Emits growing, rotating particles during the third pool's Frost sequence.
static s32 CrossboneIslePillarRooms_SpawnThawParticle (union FieldObject *fieldObject)
 Emits a randomized particle from the thawing pool every eight frames.
static void Event_FreezeThirdPool (void)
 Frost ends on the third pool: unless the leader stood on it, it freezes, and a frozen second pool thaws back to water.
static void Event_StartMovingSinkingPillar (void)
 Move begins on room 5's sinking pillar: its cell is cleared.
static void Event_MoveSinkingPillar (void)
 Move on room 5's sinking pillar, and after each push: once it reaches column 16 it sinks two pixels into place for good.
static void Event_PushSinkingPillar (void)
 Walking into room 5's sinking pillar: push it if the cell beyond is clear.
const struct SceneEvent * Scene_GetEvents (void)
static void CrossboneIslePillarRooms_PrepLoweredActor (s32 id)
 Prepares the lowered actor's collision and draw priority below the leader.
static void CrossboneIslePillarRooms_RestoreFlaggedPillar (s32 actorId)
 Restores a previously frozen pillar's mode, map cell, priority hook, and script.
static void CrossboneIslePillarRooms_InitializePillarPriority (s32 id)
 Uses terrain layer 2 and installs the moving pillar's priority callback.
static void CrossboneIslePillarRooms_UpdateLeaderPriority (void)
 Matches the leader's draw priority to a nearby pillar in front.
s32 Scene_Initialize (void)
 Restores each room's pillar footprints, water state, and persistent puzzle state.

Variables

static struct PillarSlot sPillarSlots [4]
static struct FieldPosition sProbePosition
static u8 sShakenScroll [12]
static s32 sShakeChance
s32 gEffectScript0 []
s32 gEffectScript1 []
s32 gEffectScript2 []
s32 gStagedActor_DirectionSteps []
 Pixel step by direction: X in the upper halfword, Z in the lower.
u32 gStagedActor_FootprintKinds []
s32 gStagedActor_FootprintBounds []
const s32 * gEffectScripts []
s32 gCrossboneIslePillarRooms_ActionTable []
u16 gCrossboneIslePillarRooms_ShiftSteps1 []
u16 gCrossboneIslePillarRooms_ShiftSteps2 []
u16 gCrossboneIslePillarRooms_ShiftSteps3 []
u16 gCrossboneIslePillarRooms_ShiftSteps4 []
u16 gCrossboneIslePillarRooms_ShiftSteps5 []
struct SceneEntrance gCrossboneIslePillarRoomsEntrancesOther []
struct SceneEntrance gCrossboneIslePillarRoomsEntrances1 []
struct SceneEntrance gCrossboneIslePillarRoomsEntrances2 []
struct SceneEntrance gCrossboneIslePillarRoomsEntrances3 []
struct SceneEntrance gCrossboneIslePillarRoomsEntrances4 []
struct SceneEntrance gCrossboneIslePillarRoomsEntrances5 []
u32 gCrossboneIslePillarRoomsExits []
struct ScenePlacement gCrossboneIslePillarRoomsNoPlacements []
struct ScenePlacement gCrossboneIslePillarRoomsPlacements1 []
struct ScenePlacement gCrossboneIslePillarRoomsPlacements2 []
struct ScenePlacement gCrossboneIslePillarRoomsPlacements3 []
struct ScenePlacement gCrossboneIslePillarRoomsPlacementsOther []
struct ScenePlacement gCrossboneIslePillarRoomsPlacements5 []
struct SceneEvent gCrossboneIslePillarRoomsEventsOther []
struct SceneEvent gCrossboneIslePillarRoomsEvents1 []
struct SceneEvent gCrossboneIslePillarRoomsEvents2 []
struct SceneEvent gCrossboneIslePillarRoomsEvents3 []
struct SceneEvent gCrossboneIslePillarRoomsEvents4 []
struct SceneEvent gCrossboneIslePillarRoomsEvents5 []

Detailed Description

Crossbone Isle's pillar rooms: pillars to push, jump across, Move and Carry, the switch that raises the water in room 3, and the pools Frost freezes in room 5.

Definition in file crossbone_isle_pillar_rooms.c.

Macro Definition Documentation

◆ WATER_ACTOR

#define WATER_ACTOR   16

Definition at line 55 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FlipWaterSwitch().

◆ WATER_RAISED_FLAG

#define WATER_RAISED_FLAG   FLAG_SCENE_TEMP_00

Room 3: the water has been raised.

Definition at line 57 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_AnimateWaterLevel(), Event_FlipWaterSwitch(), and Scene_Initialize().

◆ FIRST_FROZEN_POOL_FLAG

◆ LEADER_ON_THIRD_POOL_FLAG

#define LEADER_ON_THIRD_POOL_FLAG   FLAG_SCENE_TEMP_03

◆ PILLAR_SUNK_FLAG

#define PILLAR_SUNK_FLAG   FLAG_SCENE_TEMP_04

Definition at line 63 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_MoveSinkingPillar().

◆ DIRECTION_STEP

#define DIRECTION_STEP ( dx,
dz )
Value:
(((dx) << 16) | ((dz) & 0xffff))

Pixel step by direction: X in the upper halfword, Z in the lower.

Definition at line 1594 of file crossbone_isle_pillar_rooms.c.

Function Documentation

◆ STATIC_ASSERT() [1/3]

STATIC_ASSERT ( sizeof(union CrossboneIslePillarCell) = =sizeof(struct MapCell))

◆ STATIC_ASSERT() [2/3]

STATIC_ASSERT ( offsetof(union CrossboneIslePillarCell, bits.collisionCode) = =2)

◆ STATIC_ASSERT() [3/3]

STATIC_ASSERT ( offsetof(union CrossboneIslePillarCell, bits.attributeB) = =3)

◆ CrossboneIslePillarRooms_SettleActorOnGround()

void CrossboneIslePillarRooms_SettleActorOnGround ( struct FieldActor * actor)
static

Waits up to sixty frames for landing, then stops vertical movement on the ground.

Definition at line 90 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_SettleActorOnGround(), and Event_MovePillar().

◆ CrossboneIslePillarRooms_StopAtGroundOrHeight()

void CrossboneIslePillarRooms_StopAtGroundOrHeight ( struct FieldActor * actor,
s32 limit )
static

Waits until the actor reaches the ground or height limit, then stops its descent.

Definition at line 112 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_LowerActorToLedge(), CrossboneIslePillarRooms_StopAtGroundOrHeight(), and Event_MovePillar().

◆ CrossboneIslePillarRooms_QueryFootprint()

s32 CrossboneIslePillarRooms_QueryFootprint ( s32 id,
u32 * width,
u32 * depth,
struct StagedActorProbe * probe,
s32 * layerOriginX,
s32 * layerOriginZ )
static

Finds the actor's footprint dimensions, grid position, and map-layer origin.

Definition at line 136 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_DrawRaisedFootprint(), CrossboneIslePillarRooms_QueryFootprint(), and CrossboneIslePillarRooms_RestoreGroundFootprint().

◆ CrossboneIslePillarRooms_DrawRaisedFootprint()

s32 CrossboneIslePillarRooms_DrawRaisedFootprint ( s32 actorId)
static

Draws the raised pillar's footprint and puts its actor under the leader.

Definition at line 196 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_DrawRaisedFootprint(), and CrossboneIslePillarRooms_DrawRaisedPillars().

◆ CrossboneIslePillarRooms_DrawRaisedPillars()

void CrossboneIslePillarRooms_DrawRaisedPillars ( void )
inlinestatic

Redraws all seven pillars at the raised water level.

Definition at line 229 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_DrawRaisedPillars(), Event_FlipWaterSwitch(), and Scene_Initialize().

◆ CrossboneIslePillarRooms_RestoreGroundFootprint()

s32 CrossboneIslePillarRooms_RestoreGroundFootprint ( s32 actorId)
static

Restores the ground tiles and collision attributes under the actor's footprint.

Definition at line 241 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_RestoreGroundFootprint(), and Event_FlipWaterSwitch().

◆ CrossboneIslePillarRooms_ReadMapCell()

void CrossboneIslePillarRooms_ReadMapCell ( s32 layer,
s32 x,
s32 y,
union CrossboneIslePillarCell * dst )
static

Reads one map cell through DMA, waiting until the transfer finishes.

Definition at line 270 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_ReadMapCell(), and Event_MovePillar().

◆ CrossboneIslePillarRooms_SetCellAttributes()

void CrossboneIslePillarRooms_SetCellAttributes ( s32 layer,
s32 x,
s32 y,
const union CrossboneIslePillarCell * source )
static

Copies the cell's flags and collision attributes without replacing its tile.

Definition at line 291 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_SetCellAttributes(), and Event_MovePillar().

◆ CrossboneIslePillarRooms_LowerActorToLedge()

s32 CrossboneIslePillarRooms_LowerActorToLedge ( s32 id,
s32 far )
static

Finds the next terrain ledge and stops the falling actor at its projected height.

Definition at line 321 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_LowerActorToLedge(), and Event_MovePillar().

◆ CrossboneIslePillarRooms_ShrinkPillar()

void CrossboneIslePillarRooms_ShrinkPillar ( s32 index)
static

Shrinks the pillar and lowers its height for up to thirty-two frames.

Definition at line 384 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_ShrinkPillar(), and Event_MovePillar().

◆ CrossboneIslePillarRooms_SpawnUnusedLeaderParticle()

UNUSED void CrossboneIslePillarRooms_SpawnUnusedLeaderParticle ( void )
static

Spawns the unused particle near the leader once every four frames.

Definition at line 406 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_SpawnUnusedLeaderParticle().

◆ CrossboneIslePillarRooms_TryJumpAcrossPillar()

s32 CrossboneIslePillarRooms_TryJumpAcrossPillar ( void )
static

Jumps two cells forward when both the intervening and landing cells permit it.

Definition at line 440 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_TryJumpAcrossPillar(), Event_JumpOrPushPillar(), Event_JumpOrPushRoom4Pillar(), and Event_PushOrClimbDown().

◆ CrossboneIslePillarRooms_UpdateDampedParticle()

void CrossboneIslePillarRooms_UpdateDampedParticle ( union FieldObject * object)
static

Moves the particle while damping its velocity, growing it, and advancing rotation.

Definition at line 516 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_SpawnFrostParticle(), and CrossboneIslePillarRooms_UpdateDampedParticle().

◆ CrossboneIslePillarRooms_SetChildValueFromTimer()

s32 CrossboneIslePillarRooms_SetChildValueFromTimer ( struct ScriptInterpreter * interpreter)
static

Applies the actor timer's low four bits to its child sprite value.

Definition at line 536 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_SetChildValueFromTimer().

◆ Scene_GetEntrances()

const struct SceneEntrance * Scene_GetEntrances ( void )

Definition at line 543 of file crossbone_isle_pillar_rooms.c.

◆ Scene_GetRegions()

const struct SceneRegion * Scene_GetRegions ( void )

Definition at line 564 of file crossbone_isle_pillar_rooms.c.

◆ Scene_GetExits()

const u32 * Scene_GetExits ( void )

Returns the shared exits for the pillar rooms.

Both scenes share one exit table.

Definition at line 567 of file crossbone_isle_pillar_rooms.c.

◆ Scene_GetPlacements()

const struct ScenePlacement * Scene_GetPlacements ( void )

Definition at line 569 of file crossbone_isle_pillar_rooms.c.

◆ Event_JumpOrPushPillar()

void Event_JumpOrPushPillar ( void )
static

Walking into a pillar in room 1: jump two cells across it where the cells allow, otherwise push it.

Definition at line 589 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_JumpOrPushPillar().

◆ Event_PushPillar()

void Event_PushPillar ( void )
static

Walking into a pillar in rooms 2 and 3: push it if the cell beyond is clear.

Definition at line 597 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_PushPillar().

◆ CrossboneIslePillarRooms_JitterBackgroundScroll()

void CrossboneIslePillarRooms_JitterBackgroundScroll ( void )
static

Randomly substitutes the shifted background scroll during the water transition.

Definition at line 632 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_AnimateWaterLevel(), and CrossboneIslePillarRooms_JitterBackgroundScroll().

◆ Dma_Wait()

__inline__ void Dma_Wait ( volatile u32 * dma)
static

Waits until the DMA channel clears its enable bit.

Definition at line 649 of file crossbone_isle_pillar_rooms.c.

◆ CrossboneIslePillarRooms_PrepareWaterScroll()

void CrossboneIslePillarRooms_PrepareWaterScroll ( void )
static

Copies the three background scroll pairs and shifts their vertical offsets by 192 pixels.

Definition at line 656 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_AnimateWaterLevel(), and CrossboneIslePillarRooms_PrepareWaterScroll().

◆ CrossboneIslePillarRooms_AnimateWaterLevel()

void CrossboneIslePillarRooms_AnimateWaterLevel ( void )
static

Reveals the alternate water tiles through a gradually randomized scroll transition.

Definition at line 674 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_AnimateWaterLevel(), and Event_FlipWaterSwitch().

◆ Event_FlipWaterSwitch()

void Event_FlipWaterSwitch ( void )
static

Searching the switch in room 3 flips it.

"Isaac flipped the switch." The water rises, or drains, and the pillars stand higher or lower with it.

Definition at line 717 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FlipWaterSwitch().

◆ CrossboneIslePillarRooms_SyncPriorityIfBehind()

s32 CrossboneIslePillarRooms_SyncPriorityIfBehind ( struct FieldActor * actor,
struct FieldActor * front )
static

Matches a nearby actor's draw priority when it is behind the comparison actor.

Definition at line 775 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_SyncPriorityIfBehind(), and CrossboneIslePillarRooms_UpdateActorPriority().

◆ CrossboneIslePillarRooms_SyncPriorityIfAhead()

s32 CrossboneIslePillarRooms_SyncPriorityIfAhead ( struct FieldActor * front,
struct FieldActor * actor )
static

Matches the comparison actor's draw priority when it overlaps the actor in front.

Definition at line 801 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_SyncPriorityIfAhead(), and CrossboneIslePillarRooms_UpdateActorPriority().

◆ CrossboneIslePillarRooms_UpdateActorPriority()

s32 CrossboneIslePillarRooms_UpdateActorPriority ( union FieldObject * fieldObject)
static

Keeps each moving pillar's priority and collision flags consistent with the leader.

Definition at line 835 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_InitializePillarPriority(), and CrossboneIslePillarRooms_UpdateActorPriority().

◆ CrossboneIslePillarRooms_SortPillarActors()

void CrossboneIslePillarRooms_SortPillarActors ( void )
static

Sorts the four pillars by height and depth, carrying their saved cell state with them.

Definition at line 886 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_SortPillarActors(), and Event_MovePillar().

◆ Event_MovePillar()

void Event_MovePillar ( void )
static

Move or Carry on one of room 4's pillars, and after each push there: the pillars settle, and their footprints follow them.

Definition at line 953 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_JumpOrPushRoom4Pillar(), Event_MovePillar(), and Scene_Initialize().

◆ Event_JumpOrPushRoom4Pillar()

void Event_JumpOrPushRoom4Pillar ( void )
static

Walking into a pillar in room 4: jump across if possible, otherwise push it, and the pillars settle.

Definition at line 1045 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_JumpOrPushRoom4Pillar(), and Event_PushOrClimbDown().

◆ Event_ClimbUp()

void Event_ClimbUp ( void )
static

Walking north at room 4's ladder: climb up.

Definition at line 1065 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_ClimbUp().

◆ Event_PushOrClimbDown()

void Event_PushOrClimbDown ( void )
static

Walking south at room 4's ladder: push the pillar below, jump, or climb down.

Definition at line 1069 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_PushOrClimbDown().

◆ Event_StartRising()

void Event_StartRising ( void )
static

Stepping on trigger 40 in room 4: the fade overlay follows the leader, and the leader's rise counter starts.

Definition at line 1086 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_StartRising().

◆ Event_StopRising()

void Event_StopRising ( void )
static

Stepping on trigger 41 in room 4: the overlay lets the leader go, and the rise counter stops.

Definition at line 1094 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_StopRising(), and Scene_Initialize().

◆ CrossboneIslePillarRooms_UpdateFrozenPoolPriority()

s32 CrossboneIslePillarRooms_UpdateFrozenPoolPriority ( union FieldObject * fieldObject)
static

Puts the frozen pool under the leader when it is behind and below the leader.

Definition at line 1111 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_FreezePool(), CrossboneIslePillarRooms_RestoreFlaggedPillar(), and CrossboneIslePillarRooms_UpdateFrozenPoolPriority().

◆ CrossboneIslePillarRooms_FreezePool()

void CrossboneIslePillarRooms_FreezePool ( s32 id)
static

Remembers the frozen pool, installs its priority callback, and starts its flicker script.

Definition at line 1132 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_FreezePool(), Event_FreezeFirstPool(), and Event_FreezeSecondPool().

◆ Event_FreezeFirstPool()

void Event_FreezeFirstPool ( void )
static

Frost on the first pool in room 5: it freezes into a pillar of ice.

Definition at line 1151 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FreezeFirstPool().

◆ Event_FreezeSecondPool()

void Event_FreezeSecondPool ( void )
static

Frost on the second pool in room 5.

Definition at line 1156 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FreezeSecondPool().

◆ Event_FrostBeginsOnThirdPool()

void Event_FrostBeginsOnThirdPool ( void )
static

Frost begins on the third pool: note whether the leader stands on it.

Definition at line 1161 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FrostBeginsOnThirdPool().

◆ Event_FrostRaisesPillar()

void Event_FrostRaisesPillar ( void )
static

Later in the same Frost: the third pool shrinks back, and the pillar beside it (actor 14) rises 32 pixels.

Definition at line 1180 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FrostRaisesPillar().

◆ CrossboneIslePillarRooms_SpawnFrostParticle()

void CrossboneIslePillarRooms_SpawnFrostParticle ( void )
static

Emits growing, rotating particles during the third pool's Frost sequence.

Definition at line 1196 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_SpawnFrostParticle(), and Event_FreezeThirdPool().

◆ CrossboneIslePillarRooms_SpawnThawParticle()

s32 CrossboneIslePillarRooms_SpawnThawParticle ( union FieldObject * fieldObject)
static

Emits a randomized particle from the thawing pool every eight frames.

Definition at line 1243 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_SpawnThawParticle(), and Event_FreezeThirdPool().

◆ Event_FreezeThirdPool()

void Event_FreezeThirdPool ( void )
static

Frost ends on the third pool: unless the leader stood on it, it freezes, and a frozen second pool thaws back to water.

Definition at line 1283 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FreezeThirdPool().

◆ Event_StartMovingSinkingPillar()

void Event_StartMovingSinkingPillar ( void )
static

Move begins on room 5's sinking pillar: its cell is cleared.

Definition at line 1326 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_PushSinkingPillar(), and Event_StartMovingSinkingPillar().

◆ Event_MoveSinkingPillar()

void Event_MoveSinkingPillar ( void )
static

Move on room 5's sinking pillar, and after each push: once it reaches column 16 it sinks two pixels into place for good.

Definition at line 1342 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_MoveSinkingPillar(), Event_PushSinkingPillar(), and Scene_Initialize().

◆ Event_PushSinkingPillar()

void Event_PushSinkingPillar ( void )
static

Walking into room 5's sinking pillar: push it if the cell beyond is clear.

Definition at line 1365 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_PushSinkingPillar().

◆ Scene_GetEvents()

const struct SceneEvent * Scene_GetEvents ( void )

Definition at line 1379 of file crossbone_isle_pillar_rooms.c.

◆ CrossboneIslePillarRooms_PrepLoweredActor()

void CrossboneIslePillarRooms_PrepLoweredActor ( s32 id)
static

Prepares the lowered actor's collision and draw priority below the leader.

Definition at line 1401 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_PrepLoweredActor(), and Scene_Initialize().

◆ CrossboneIslePillarRooms_RestoreFlaggedPillar()

void CrossboneIslePillarRooms_RestoreFlaggedPillar ( s32 actorId)
static

Restores a previously frozen pillar's mode, map cell, priority hook, and script.

Definition at line 1413 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_RestoreFlaggedPillar(), and Scene_Initialize().

◆ CrossboneIslePillarRooms_InitializePillarPriority()

void CrossboneIslePillarRooms_InitializePillarPriority ( s32 id)
static

Uses terrain layer 2 and installs the moving pillar's priority callback.

Definition at line 1432 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_InitializePillarPriority(), and Scene_Initialize().

◆ CrossboneIslePillarRooms_UpdateLeaderPriority()

void CrossboneIslePillarRooms_UpdateLeaderPriority ( void )
static

Matches the leader's draw priority to a nearby pillar in front.

Definition at line 1446 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_UpdateLeaderPriority(), and Scene_Initialize().

◆ Scene_Initialize()

s32 Scene_Initialize ( void )

Restores each room's pillar footprints, water state, and persistent puzzle state.

Sets up whichever scene is being entered and runs its arrival events.

Definition at line 1471 of file crossbone_isle_pillar_rooms.c.

Variable Documentation

◆ sPillarSlots

struct PillarSlot sPillarSlots[4]
static

◆ sProbePosition

struct FieldPosition sProbePosition
static

Definition at line 626 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_MovePillar().

◆ sShakenScroll

◆ sShakeChance

◆ gEffectScript0

s32 gEffectScript0[]
Initial value:
= {
SC_WAIT(1), SC_LOOP(22, SC_TOP), SC_WAIT(1),
SC_POS(0, 0, 0), SC_WAIT(1), SC_FREE,
}
#define SC_LOOP(n, to)
Repeat up to n times.
Definition objcmd.h:28
#define SC_POS(x, y, z)
Set position.
Definition objcmd.h:18
#define SC_FREE
Release.
Definition objcmd.h:43
#define SC_WAIT(n)
Wait n frames.
Definition objcmd.h:16
#define SC_TOP
Script start.
Definition objcmd.h:13

Definition at line 1578 of file crossbone_isle_pillar_rooms.c.

◆ gEffectScript1

s32 gEffectScript1[]
Initial value:
= {
SC_WAIT(1), SC_LOOP(44, SC_TOP), SC_WAIT(1),
SC_POS(0, 0, 0), SC_WAIT(1), SC_FREE,
}

Definition at line 1583 of file crossbone_isle_pillar_rooms.c.

◆ gEffectScript2

s32 gEffectScript2[]
Initial value:
= {
SC_WAIT(1), SC_LOOP(126, SC_TOP), SC_WAIT(1),
SC_POS(0, 0, 0), SC_WAIT(1), SC_FREE,
}

Definition at line 1588 of file crossbone_isle_pillar_rooms.c.

◆ gStagedActor_DirectionSteps

s32 gStagedActor_DirectionSteps[]
Initial value:
= {
DIRECTION_STEP(0, 16), DIRECTION_STEP(-16, 0), DIRECTION_STEP(-16, 0),
DIRECTION_STEP(-16, 0), DIRECTION_STEP(-16, 0), DIRECTION_STEP(0, -16),
DIRECTION_STEP(0, -16), DIRECTION_STEP(0, -16), DIRECTION_STEP(0, -16),
}
#define DIRECTION_STEP(dx, dz)
Pixel step by direction: X in the upper halfword, Z in the lower.

Pixel step by direction: X in the upper halfword, Z in the lower.

Definition at line 1596 of file crossbone_isle_pillar_rooms.c.

◆ gStagedActor_FootprintKinds

u32 gStagedActor_FootprintKinds[]
Initial value:
= {
207, 205, 228, 229, 298, 297,
}

Definition at line 1606 of file crossbone_isle_pillar_rooms.c.

◆ gStagedActor_FootprintBounds

s32 gStagedActor_FootprintBounds[]
Initial value:
= {
-32, -8, 32, 8,
-8, -32, 8, 32,
-32, -16, 32, 0,
-8, -32, 8, 32,
-32, -8, 32, 8,
-8, -32, 8, 32,
}

Definition at line 1610 of file crossbone_isle_pillar_rooms.c.

◆ gEffectScripts

const s32* gEffectScripts[]
Initial value:
= {
}
s32 gEffectScript0[]
s32 gEffectScript1[]
s32 gEffectScript2[]

Definition at line 1619 of file crossbone_isle_pillar_rooms.c.

◆ gCrossboneIslePillarRooms_ActionTable

s32 gCrossboneIslePillarRooms_ActionTable[]
Initial value:
= {
SC_SET(0x23, 2),
SC_WAIT(2),
SC_SET(0x23, 0),
SC_WAIT(6),
}
static s32 CrossboneIslePillarRooms_SetChildValueFromTimer(struct ScriptInterpreter *interpreter)
Applies the actor timer's low four bits to its child sprite value.
#define SC_SET(w, v)
Write a work value.
Definition objcmd.h:37
#define SC_FOREVER
Definition objcmd.h:14
#define SC_CALL(fn)
Definition objcmd.h:50

Definition at line 1625 of file crossbone_isle_pillar_rooms.c.

Referenced by CrossboneIslePillarRooms_FreezePool(), and CrossboneIslePillarRooms_RestoreFlaggedPillar().

◆ gCrossboneIslePillarRooms_ShiftSteps1

u16 gCrossboneIslePillarRooms_ShiftSteps1[]
Initial value:
= {
MAP_CELL_STEP(76, 34, 1, 2, 4), MAP_CELL_STEP(77, 34, 1, 2, 4), MAP_CELL_STEP(78, 34, 1, 2, 4), MAP_CELL_STEP(79, 34, 1, 2, 4), MAP_CELL_STEPS_END,
}
#define MAP_CELL_STEP(srcX, srcY, width, height, frames)
Definition field_event.h:59
#define MAP_CELL_STEPS_END
Definition field_event.h:61

Definition at line 1635 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FlipWaterSwitch().

◆ gCrossboneIslePillarRooms_ShiftSteps2

u16 gCrossboneIslePillarRooms_ShiftSteps2[]
Initial value:
= {
MAP_CELL_STEP(79, 34, 1, 2, 4), MAP_CELL_STEP(78, 34, 1, 2, 4), MAP_CELL_STEP(77, 34, 1, 2, 4), MAP_CELL_STEP(76, 34, 1, 2, 4), MAP_CELL_STEPS_END,
}

Definition at line 1639 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FlipWaterSwitch().

◆ gCrossboneIslePillarRooms_ShiftSteps3

u16 gCrossboneIslePillarRooms_ShiftSteps3[]
Initial value:
= {
MAP_CELL_STEP(67, 34, 2, 5, 6), MAP_CELL_STEP(69, 34, 2, 5, 6), MAP_CELL_STEP(71, 34, 2, 5, 6), MAP_CELL_STEP(73, 34, 2, 5, 6), MAP_CELL_STEPS_END,
}

Definition at line 1643 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FlipWaterSwitch().

◆ gCrossboneIslePillarRooms_ShiftSteps4

u16 gCrossboneIslePillarRooms_ShiftSteps4[]
Initial value:
= {
MAP_CELL_STEP(71, 50, 2, 5, 6), MAP_CELL_STEP(69, 50, 2, 5, 6), MAP_CELL_STEP(67, 50, 2, 5, 6), MAP_CELL_STEP(65, 50, 2, 5, 6), MAP_CELL_STEPS_END,
}

Definition at line 1647 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FlipWaterSwitch().

◆ gCrossboneIslePillarRooms_ShiftSteps5

u16 gCrossboneIslePillarRooms_ShiftSteps5[]
Initial value:
= {
MAP_CELL_STEP(75, 38, 2, 1, 4), MAP_CELL_STEP(77, 38, 2, 1, 6), MAP_CELL_STEP(79, 38, 2, 1, 8), MAP_CELL_STEP(65, 53, 2, 1, 1), MAP_CELL_STEPS_END,
}

Definition at line 1651 of file crossbone_isle_pillar_rooms.c.

Referenced by Event_FlipWaterSwitch().

◆ gCrossboneIslePillarRoomsEntrancesOther

struct SceneEntrance gCrossboneIslePillarRoomsEntrancesOther[]
Initial value:
= {
{ 0, CONDITION_ALWAYS, 120, 0, 152, FACING_SOUTH, 0, -1, -1, -1, -1, 0 },
}
@ SCENE_TABLE_END
Definition field_scene.h:43
@ CONDITION_ALWAYS
Definition field_scene.h:44
@ FACING_SOUTH
Definition field_scene.h:28

Definition at line 1655 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEntrances().

◆ gCrossboneIslePillarRoomsEntrances1

struct SceneEntrance gCrossboneIslePillarRoomsEntrances1[]
Initial value:
= {
{ 1, CONDITION_ALWAYS, 712, 0, 760, FACING_NORTH, 0, 560, 368, 992, 792, 0 },
{ 2, CONDITION_ALWAYS, 600, 0, 760, FACING_NORTH, 0, 560, 368, 992, 792, 0 },
}
@ FACING_NORTH
Definition field_scene.h:32

Definition at line 1660 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEntrances().

◆ gCrossboneIslePillarRoomsEntrances2

struct SceneEntrance gCrossboneIslePillarRoomsEntrances2[]
Initial value:
= {
{ 1, CONDITION_ALWAYS, 216, 0, 360, FACING_NORTH, 0, 32, 32, 384, 400, 0 },
{ 2, CONDITION_ALWAYS, 104, 0, 360, FACING_NORTH, 0, 32, 32, 384, 400, 0 },
}

Definition at line 1666 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEntrances().

◆ gCrossboneIslePillarRoomsEntrances3

struct SceneEntrance gCrossboneIslePillarRoomsEntrances3[]
Initial value:
= {
{ 1, CONDITION_ALWAYS, 184, 0, 472, FACING_NORTH, 0, -1, -1, -1, -1, 0 },
{ 2, CONDITION_ALWAYS, 64, 0, 472, FACING_NORTH, 0, -1, -1, -1, -1, 0 },
}

Definition at line 1672 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEntrances().

◆ gCrossboneIslePillarRoomsEntrances4

struct SceneEntrance gCrossboneIslePillarRoomsEntrances4[]
Initial value:
= {
{ 1, CONDITION_ALWAYS, 744, 0, 520, FACING_NORTH, 0, 440, 16, 960, 544, 0 },
{ 2, CONDITION_ALWAYS, 632, 0, 520, FACING_NORTH, 0, 440, 16, 960, 544, 0 },
}

Definition at line 1678 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEntrances().

◆ gCrossboneIslePillarRoomsEntrances5

struct SceneEntrance gCrossboneIslePillarRoomsEntrances5[]
Initial value:
= {
{ 1, CONDITION_ALWAYS, 280, 0, 488, FACING_NORTH, 0, 16, 32, 464, 528, 0 },
{ 2, CONDITION_ALWAYS, 168, 0, 488, FACING_NORTH, 0, 16, 32, 464, 528, 0 },
}

Definition at line 1684 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEntrances().

◆ gCrossboneIslePillarRoomsExits

u32 gCrossboneIslePillarRoomsExits[]
Initial value:
= {
SCENE_EXIT(1, 126, 3),
SCENE_EXIT(2, 126, 4),
SCENE_EXIT(0, 116, 0),
SCENE_EXIT(1, 127, 3),
SCENE_EXIT(2, 127, 4),
SCENE_EXIT(0, 119, 0),
SCENE_EXIT(1, 130, 3),
SCENE_EXIT(2, 130, 4),
SCENE_EXIT(0, 121, 0),
SCENE_EXIT(1, 132, 3),
SCENE_EXIT(2, 132, 4),
SCENE_EXIT(0, 122, 0),
SCENE_EXIT(1, 133, 3),
SCENE_EXIT(2, 133, 4),
}
#define SCENE_EXITS(scene)
Definition field_scene.h:72
#define SCENE_EXIT(exit, scene, entrance)
Definition field_scene.h:73
#define SCENE_EXITS_END
Definition field_scene.h:77

Definition at line 1690 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetExits().

◆ gCrossboneIslePillarRoomsNoPlacements

struct ScenePlacement gCrossboneIslePillarRoomsNoPlacements[]
Initial value:
= {
}

Definition at line 1709 of file crossbone_isle_pillar_rooms.c.

◆ gCrossboneIslePillarRoomsPlacements1

struct ScenePlacement gCrossboneIslePillarRoomsPlacements1[]
Initial value:
= {
}
@ TALK_KEEP_FACING
@ ACTOR_STAND
#define PIXELS(value)

Definition at line 1713 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetPlacements().

◆ gCrossboneIslePillarRoomsPlacements2

struct ScenePlacement gCrossboneIslePillarRoomsPlacements2[]
Initial value:
= {
{ 0x12a, CONDITION_ALWAYS, 7,
{ 0x12a, CONDITION_ALWAYS, 7,
{ 0x12a, CONDITION_ALWAYS, 7,
{ 0x129, CONDITION_ALWAYS, 7,
{ 0x129, CONDITION_ALWAYS, 7,
}

Definition at line 1725 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetPlacements().

◆ gCrossboneIslePillarRoomsPlacements3

struct ScenePlacement gCrossboneIslePillarRoomsPlacements3[]
Initial value:
= {
{ 0xcd, CONDITION_ALWAYS, 7,
{ 0xcf, CONDITION_ALWAYS, 7,
{ 0xcd, CONDITION_ALWAYS, 7,
{ 0xcf, CONDITION_ALWAYS, 7,
{ 0xcd, CONDITION_ALWAYS, 7,
{ 0xcd, CONDITION_ALWAYS, 7,
{ 0xcf, CONDITION_ALWAYS, 7,
{ 0xcf, CONDITION_ALWAYS, 7,
{ 0xd6, CONDITION_ALWAYS, 7,
}

Definition at line 1739 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetPlacements().

◆ gCrossboneIslePillarRoomsPlacementsOther

struct ScenePlacement gCrossboneIslePillarRoomsPlacementsOther[]
Initial value:

Definition at line 1761 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetPlacements().

◆ gCrossboneIslePillarRoomsPlacements5

struct ScenePlacement gCrossboneIslePillarRoomsPlacements5[]
Initial value:

Definition at line 1773 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetPlacements().

◆ gCrossboneIslePillarRoomsEventsOther

struct SceneEvent gCrossboneIslePillarRoomsEventsOther[]
Initial value:
= {
}
#define SCENE_EVENTS_END

Definition at line 1791 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEvents().

◆ gCrossboneIslePillarRoomsEvents1

struct SceneEvent gCrossboneIslePillarRoomsEvents1[]
Initial value:
= {
{ SEARCH(SEARCH_CHEST), 101, 0xec3, FIND_ITEM(ITEM_NUT) },
{ SEARCH(SEARCH_CHEST), 102, 0xec4, FIND_COINS(111) },
}
@ ABILITY_MOVE
Definition ability_ids.h:15
static void Event_JumpOrPushPillar(void)
Walking into a pillar in room 1: jump two cells across it where the cells allow, otherwise push it.
#define FIND_ITEM(item)
@ EVENT_TOUCH
@ EVENT_EXIT
#define PSYNERGY_ON_ACTOR(ability)
#define EVENT_SCRIPT(script)
#define EVENT_TOUCH_WALKING
#define SEARCH(target)
@ SEARCH_CHEST
#define FIND_COINS(coins)
@ ITEM_ANTIDOTE
Definition item_ids.h:47
@ ITEM_NUT
Definition item_ids.h:41
@ ITEM_HARD_NUT
Definition item_ids.h:53

Definition at line 1795 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEvents().

◆ gCrossboneIslePillarRoomsEvents2

struct SceneEvent gCrossboneIslePillarRoomsEvents2[]
Initial value:
= {
{ SEARCH(SEARCH_CHEST), 102, 0xec8, FIND_COINS(222) },
}
static void Event_PushPillar(void)
Walking into a pillar in rooms 2 and 3: push it if the cell beyond is clear.
@ ITEM_LUCKY_PEPPER
Definition item_ids.h:55
@ ITEM_ELIXIR
Definition item_ids.h:48
@ ITEM_MYSTERY_BLADE
Definition item_ids.h:16

Definition at line 1810 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEvents().

◆ gCrossboneIslePillarRoomsEvents3

struct SceneEvent gCrossboneIslePillarRoomsEvents3[]
Initial value:
= {
{ 0x413, 100, 0xed2, FIND_COINS(555) },
{ 0xc413, 100, 0xed2, FIND_COINS(555) },
{ 0x413, 101, 0xed3, FIND_ITEM(ITEM_LUCKY_MEDAL) },
{ 0xe413, 101, 0xed3, FIND_ITEM(ITEM_LUCKY_MEDAL) },
}
static void Event_FlipWaterSwitch(void)
Searching the switch in room 3 flips it.
@ SEARCH_UNNAMED
@ ITEM_NINJA_GARB
Definition item_ids.h:29
@ ITEM_POTION
Definition item_ids.h:43
@ ITEM_LUCKY_MEDAL
Definition item_ids.h:70

Definition at line 1821 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEvents().

◆ gCrossboneIslePillarRoomsEvents4

struct SceneEvent gCrossboneIslePillarRoomsEvents4[]
Initial value:
= {
{ SEARCH(SEARCH_CHEST), 100, 0xeda, FIND_COINS(777) },
{ 0x413, 102, 0xedc, FIND_ITEM(ITEM_PSY_CRYSTAL) },
}
@ ABILITY_CARRY
Definition ability_ids.h:22
static void Event_StartRising(void)
Stepping on trigger 40 in room 4: the fade overlay follows the leader, and the leader's rise counter ...
static void Event_JumpOrPushRoom4Pillar(void)
Walking into a pillar in room 4: jump across if possible, otherwise push it, and the pillars settle.
static void Event_StopRising(void)
Stepping on trigger 41 in room 4: the overlay lets the leader go, and the rise counter stops.
static void Event_ClimbUp(void)
Walking north at room 4's ladder: climb up.
static void Event_MovePillar(void)
Move or Carry on one of room 4's pillars, and after each push there: the pillars settle,...
static void Event_PushOrClimbDown(void)
Walking south at room 4's ladder: push the pillar below, jump, or climb down.
#define TOUCH_WALKING_INTO(facing)
#define FLAG_SCENE_TEMP_03
Definition flags.h:716
#define FLAG_SCENE_TEMP_00
Definition flags.h:713
#define FLAG_SCENE_TEMP_02
Definition flags.h:715
#define FLAG_SCENE_TEMP_01
Definition flags.h:714
@ ITEM_WICKED_MACE
Definition item_ids.h:19
@ ITEM_PSY_CRYSTAL
Definition item_ids.h:46

Definition at line 1835 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEvents().

◆ gCrossboneIslePillarRoomsEvents5

struct SceneEvent gCrossboneIslePillarRoomsEvents5[]
Initial value:
= {
{SEARCH(SEARCH_CHEST), 100, 0xede, FIND_COINS(888)},
}
@ ABILITY_FROST
Definition ability_ids.h:11
static void Event_FrostRaisesPillar(void)
Later in the same Frost: the third pool shrinks back, and the pillar beside it (actor 14) rises 32 pi...
static void Event_FreezeFirstPool(void)
Frost on the first pool in room 5: it freezes into a pillar of ice.
static void Event_FreezeSecondPool(void)
Frost on the second pool in room 5.
static void Event_StartMovingSinkingPillar(void)
Move begins on room 5's sinking pillar: its cell is cleared.
static void Event_FrostBeginsOnThirdPool(void)
Frost begins on the third pool: note whether the leader stands on it.
#define PILLAR_SUNK_FLAG
static void Event_MoveSinkingPillar(void)
Move on room 5's sinking pillar, and after each push: once it reaches column 16 it sinks two pixels i...
static void Event_PushSinkingPillar(void)
Walking into room 5's sinking pillar: push it if the cell beyond is clear.
#define FIRST_FROZEN_POOL_FLAG
static void Event_FreezeThirdPool(void)
Frost ends on the third pool: unless the leader stood on it, it freezes, and a frozen second pool tha...
#define PSYNERGY_PHASE_ON_ACTOR(ability, phase)
A Psynergy event on an actor at one phase of the cast, as PSYNERGY_IN_AREA is for an area.
@ ITEM_CLERICS_RING
Definition item_ids.h:87
@ ITEM_SMOKE_BOMB
Definition item_ids.h:67

Definition at line 1860 of file crossbone_isle_pillar_rooms.c.

Referenced by Scene_GetEvents().