Merge branch 'main' into enRu1-actions-boss

This commit is contained in:
JordanLongstaff 2025-07-03 09:02:47 -04:00
commit 8308d118c1
3 changed files with 95 additions and 83 deletions

View File

@ -891,7 +891,7 @@ typedef enum LinkAge {
#define INFTABLE_138 0x138 #define INFTABLE_138 0x138
#define INFTABLE_139 0x139 #define INFTABLE_139 0x139
#define INFTABLE_140 0x140 #define INFTABLE_140 0x140
#define INFTABLE_141 0x141 #define INFTABLE_MET_RUTO_FIRST_TIME 0x141
#define INFTABLE_142 0x142 #define INFTABLE_142 0x142
#define INFTABLE_143 0x143 #define INFTABLE_143 0x143
#define INFTABLE_144 0x144 #define INFTABLE_144 0x144

View File

@ -44,14 +44,14 @@ void EnRu1_Fountain_TreadingWater(EnRu1* this, PlayState* play);
void EnRu1_Fountain_StartingSwimBack(EnRu1* this, PlayState* play); void EnRu1_Fountain_StartingSwimBack(EnRu1* this, PlayState* play);
void EnRu1_Fountain_SwimmingBack(EnRu1* this, PlayState* play); void EnRu1_Fountain_SwimmingBack(EnRu1* this, PlayState* play);
void EnRu1_Fountain_FinishingSwimBack(EnRu1* this, PlayState* play); void EnRu1_Fountain_FinishingSwimBack(EnRu1* this, PlayState* play);
void func_80AECA94(EnRu1* this, PlayState* play); void EnRu1_Meeting_RangeCheck(EnRu1* this, PlayState* play);
void func_80AECAB4(EnRu1* this, PlayState* play); void EnRu1_Meeting_InitPosition(EnRu1* this, PlayState* play);
void func_80AECAD4(EnRu1* this, PlayState* play); void EnRu1_Meeting_FacingLink(EnRu1* this, PlayState* play);
void func_80AECB18(EnRu1* this, PlayState* play); void EnRu1_Meeting_TurningAround(EnRu1* this, PlayState* play);
void func_80AECB60(EnRu1* this, PlayState* play); void EnRu1_Meeting_WalkingAwayAccel(EnRu1* this, PlayState* play);
void func_80AECBB8(EnRu1* this, PlayState* play); void EnRu1_Meeting_WalkingAwayConstant(EnRu1* this, PlayState* play);
void func_80AECC1C(EnRu1* this, PlayState* play); void EnRu1_Meeting_FallingDownHole(EnRu1* this, PlayState* play);
void func_80AECC84(EnRu1* this, PlayState* play); void EnRu1_Meeting_End(EnRu1* this, PlayState* play);
void EnRu1_BossRoom_PreSpawn(EnRu1* this, PlayState* play); void EnRu1_BossRoom_PreSpawn(EnRu1* this, PlayState* play);
void EnRu1_BossRoom_Spawn(EnRu1* this, PlayState* play); void EnRu1_BossRoom_Spawn(EnRu1* this, PlayState* play);
void EnRu1_BossRoom_RiseThroughBlueWarp(EnRu1* this, PlayState* play); void EnRu1_BossRoom_RiseThroughBlueWarp(EnRu1* this, PlayState* play);
@ -153,14 +153,14 @@ static EnRu1ActionFunc sActionFuncs[] = {
EnRu1_Fountain_StartingSwimBack, // ENRU1_ACTION_FOUNTAIN_STARTING_SWIM_BACK EnRu1_Fountain_StartingSwimBack, // ENRU1_ACTION_FOUNTAIN_STARTING_SWIM_BACK
EnRu1_Fountain_SwimmingBack, // ENRU1_ACTION_FOUNTAIN_SWIMMING_BACK EnRu1_Fountain_SwimmingBack, // ENRU1_ACTION_FOUNTAIN_SWIMMING_BACK
EnRu1_Fountain_FinishingSwimBack, // ENRU1_ACTION_FOUNTAIN_FINISHING_SWIM_BACK EnRu1_Fountain_FinishingSwimBack, // ENRU1_ACTION_FOUNTAIN_FINISHING_SWIM_BACK
func_80AECA94, // ENRU1_ACTION_07 EnRu1_Meeting_RangeCheck, // ENRU1_ACTION_MEETING_RANGE_CHECK
func_80AECAB4, // ENRU1_ACTION_08 EnRu1_Meeting_InitPosition, // ENRU1_ACTION_MEETING_INIT_POSITION
func_80AECAD4, // ENRU1_ACTION_09 EnRu1_Meeting_FacingLink, // ENRU1_ACTION_MEETING_FACING_LINK
func_80AECB18, // ENRU1_ACTION_10 EnRu1_Meeting_TurningAround, // ENRU1_ACTION_MEETING_TURNING_AROUND
func_80AECB60, // ENRU1_ACTION_11 EnRu1_Meeting_WalkingAwayAccel, // ENRU1_ACTION_MEETING_WALKING_AWAY_ACCEL
func_80AECBB8, // ENRU1_ACTION_12 EnRu1_Meeting_WalkingAwayConstant, // ENRU1_ACTION_MEETING_WALKING_AWAY_CONSTANT
func_80AECC1C, // ENRU1_ACTION_13 EnRu1_Meeting_FallingDownHole, // ENRU1_ACTION_MEETING_FALLING_DOWN_HOLE
func_80AECC84, // ENRU1_ACTION_14 EnRu1_Meeting_End, // ENRU1_ACTION_MEETING_END
EnRu1_BossRoom_PreSpawn, // ENRU1_ACTION_PRE_SPAWN_BOSS_ROOM EnRu1_BossRoom_PreSpawn, // ENRU1_ACTION_PRE_SPAWN_BOSS_ROOM
EnRu1_BossRoom_Spawn, // ENRU1_ACTION_SPAWN_BOSS_ROOM EnRu1_BossRoom_Spawn, // ENRU1_ACTION_SPAWN_BOSS_ROOM
EnRu1_BossRoom_RiseThroughBlueWarp, // ENRU1_ACTION_RISE_THROUGH_BLUE_WARP EnRu1_BossRoom_RiseThroughBlueWarp, // ENRU1_ACTION_RISE_THROUGH_BLUE_WARP
@ -845,9 +845,9 @@ void EnRu1_Fountain_FinishingSwimBack(EnRu1* this, PlayState* play) {
} }
void EnRu1_InitInJabuJabuHolesRoom(EnRu1* this, PlayState* play) { void EnRu1_InitInJabuJabuHolesRoom(EnRu1* this, PlayState* play) {
if (!GET_INFTABLE(INFTABLE_141)) { if (!GET_INFTABLE(INFTABLE_MET_RUTO_FIRST_TIME)) {
EnRu1_AnimationChange(this, &gRutoChildWait2Anim, ANIMMODE_LOOP, 0, false); EnRu1_AnimationChange(this, &gRutoChildWait2Anim, ANIMMODE_LOOP, 0, false);
this->action = ENRU1_ACTION_07; this->action = ENRU1_ACTION_MEETING_RANGE_CHECK;
EnRu1_SetMouth(this, ENRU1_MOUTH_FROWNING); EnRu1_SetMouth(this, ENRU1_MOUTH_FROWNING);
} else if (GET_INFTABLE(INFTABLE_147) && !GET_INFTABLE(INFTABLE_140) && !GET_INFTABLE(INFTABLE_145)) { } else if (GET_INFTABLE(INFTABLE_147) && !GET_INFTABLE(INFTABLE_140) && !GET_INFTABLE(INFTABLE_145)) {
if (!func_80AEB020(this, play)) { if (!func_80AEB020(this, play)) {
@ -869,7 +869,10 @@ void EnRu1_InitInJabuJabuHolesRoom(EnRu1* this, PlayState* play) {
} }
} }
void func_80AEC40C(EnRu1* this) { /**
* Accelerates Ruto forward as she starts to walk away. This lasts for eight frames.
*/
void EnRu1_AccelerateAway(EnRu1* this) {
f32 walkingFrame = this->walkingFrame; f32 walkingFrame = this->walkingFrame;
if (walkingFrame < 8.0f) { if (walkingFrame < 8.0f) {
@ -881,12 +884,18 @@ void func_80AEC40C(EnRu1* this) {
Actor_MoveXZGravity(&this->actor); Actor_MoveXZGravity(&this->actor);
} }
void func_80AEC4CC(EnRu1* this) { /**
* Moves Ruto forward at a constant speed walking away from Link.
*/
void EnRu1_MoveForwardConstant(EnRu1* this) {
this->actor.velocity.y = -1.0f; this->actor.velocity.y = -1.0f;
Actor_MoveXZGravity(&this->actor); Actor_MoveXZGravity(&this->actor);
} }
void func_80AEC4F4(EnRu1* this) { /**
* Accelerate's Ruto's actor downward as she falls down the hole.
*/
void EnRu1_AccelerateDownHole(EnRu1* this) {
f32* speedXZ = &this->actor.speed; f32* speedXZ = &this->actor.speed;
f32* walkingFrame = &this->walkingFrame; f32* walkingFrame = &this->walkingFrame;
@ -901,7 +910,7 @@ void func_80AEC4F4(EnRu1* this) {
Actor_MoveXZGravity(&this->actor); Actor_MoveXZGravity(&this->actor);
} }
s32 func_80AEC5FC(EnRu1* this, PlayState* play) { s32 EnRu1_IsPlayerInRangeForFirstEncounter(EnRu1* this, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
f32 thisPosZ = this->actor.world.pos.z; f32 thisPosZ = this->actor.world.pos.z;
f32 playerPosZ = player->actor.world.pos.z; f32 playerPosZ = player->actor.world.pos.z;
@ -912,46 +921,49 @@ s32 func_80AEC5FC(EnRu1* this, PlayState* play) {
return false; return false;
} }
void func_80AEC650(EnRu1* this) { void EnRu1_PlayStepSfx(EnRu1* this) {
s32 pad[2]; s32 pad[2];
if (this->unk_280 == 0) { if (this->isFalling == 0) {
if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 7.0f)) { if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 7.0f)) {
Sfx_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_JABU); Sfx_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_PL_WALK_GROUND + SURFACE_SFX_OFFSET_JABU);
} }
} }
} }
void func_80AEC6B0(EnRu1* this) { void EnRu1_PlayFallingSfx(EnRu1* this) {
Sfx_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_FALL_DOWN_DIRT); Sfx_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_EV_FALL_DOWN_DIRT);
Sfx_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_VO_RT_FALL); Sfx_PlaySfxAtPos(&this->actor.projectedPos, NA_SE_VO_RT_FALL);
} }
void func_80AEC6E4(EnRu1* this, PlayState* play) { /**
if ((EnRu1_CheckCueMatchingId(play, 4, 3)) && (this->unk_280 == 0)) { * Checks if Ruto is standing over the Jabu Jabu hole and initiates her reaction to falling.
*/
void EnRu1_RespondToFalling(EnRu1* this, PlayState* play) {
if ((EnRu1_CheckCueMatchingId(play, 4, 3)) && (this->isFalling == 0)) {
Animation_Change(&this->skelAnime, &gRutoChildBringArmsUpAnim, 1.0f, 0, Animation_Change(&this->skelAnime, &gRutoChildBringArmsUpAnim, 1.0f, 0,
Animation_GetLastFrame(&gRutoChildBringArmsUpAnim), ANIMMODE_ONCE, -8.0f); Animation_GetLastFrame(&gRutoChildBringArmsUpAnim), ANIMMODE_ONCE, -8.0f);
this->unk_280 = 1; this->isFalling = 1;
func_80AEC6B0(this); EnRu1_PlayFallingSfx(this);
} }
} }
void func_80AEC780(EnRu1* this, PlayState* play) { void EnRu1_CheckStartFirstEncounter(EnRu1* this, PlayState* play) {
s32 pad; s32 pad;
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
if ((func_80AEC5FC(this, play)) && (!Play_InCsMode(play)) && if ((EnRu1_IsPlayerInRangeForFirstEncounter(this, play)) && (!Play_InCsMode(play)) &&
(!(player->stateFlags1 & (PLAYER_STATE1_13 | PLAYER_STATE1_14 | PLAYER_STATE1_21))) && (!(player->stateFlags1 & (PLAYER_STATE1_13 | PLAYER_STATE1_14 | PLAYER_STATE1_21))) &&
(player->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { (player->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) {
play->csCtx.script = gRutoFirstMeetingCs; play->csCtx.script = gRutoFirstMeetingCs;
gSaveContext.cutsceneTrigger = 1; gSaveContext.cutsceneTrigger = 1;
player->speedXZ = 0.0f; player->speedXZ = 0.0f;
this->action = ENRU1_ACTION_08; this->action = ENRU1_ACTION_MEETING_INIT_POSITION;
} }
} }
void func_80AEC81C(EnRu1* this, PlayState* play) { void EnRu1_SetupPositionForFirstEncounter(EnRu1* this, PlayState* play) {
CsCmdActorCue* cue; CsCmdActorCue* cue;
s16 newRotY; s16 newRotY;
@ -963,109 +975,109 @@ void func_80AEC81C(EnRu1* this, PlayState* play) {
newRotY = cue->rot.y; newRotY = cue->rot.y;
this->actor.shape.rot.y = newRotY; this->actor.shape.rot.y = newRotY;
this->actor.world.rot.y = newRotY; this->actor.world.rot.y = newRotY;
this->action = ENRU1_ACTION_09; this->action = ENRU1_ACTION_MEETING_FACING_LINK;
this->drawConfig = ENRU1_DRAW_OPA; this->drawConfig = ENRU1_DRAW_OPA;
} }
} }
void func_80AEC8B8(EnRu1* this, PlayState* play) { void EnRu1_CheckTurnAround(EnRu1* this, PlayState* play) {
if (EnRu1_CheckCueMatchingId(play, 3, 3)) { if (EnRu1_CheckCueMatchingId(play, 3, 3)) {
Animation_Change(&this->skelAnime, &gRutoChildTurnAroundAnim, 1.0f, 0, Animation_Change(&this->skelAnime, &gRutoChildTurnAroundAnim, 1.0f, 0,
Animation_GetLastFrame(&gRutoChildTurnAroundAnim), ANIMMODE_ONCE, -8.0f); Animation_GetLastFrame(&gRutoChildTurnAroundAnim), ANIMMODE_ONCE, -8.0f);
this->action = ENRU1_ACTION_10; this->action = ENRU1_ACTION_MEETING_TURNING_AROUND;
} }
} }
void func_80AEC93C(EnRu1* this, UNK_TYPE arg1) { void EnRu1_StartWalkingAway(EnRu1* this, s32 doneTurning) {
if (arg1 != 0) { if (doneTurning) {
Animation_Change(&this->skelAnime, &gRutoChildWalkAnim, 1.0f, 0, Animation_GetLastFrame(&gRutoChildWalkAnim), Animation_Change(&this->skelAnime, &gRutoChildWalkAnim, 1.0f, 0, Animation_GetLastFrame(&gRutoChildWalkAnim),
ANIMMODE_LOOP, -8.0f); ANIMMODE_LOOP, -8.0f);
this->actor.world.rot.y += 0x8000; this->actor.world.rot.y += 0x8000;
this->action = ENRU1_ACTION_11; this->action = ENRU1_ACTION_MEETING_WALKING_AWAY_ACCEL;
this->walkingFrame = 0.0f; this->walkingFrame = 0.0f;
} }
} }
void func_80AEC9C4(EnRu1* this) { void EnRu1_AdvanceWalkingAway(EnRu1* this) {
this->walkingFrame += 1.0f; this->walkingFrame += 1.0f;
if (this->walkingFrame >= 8.0f) { if (this->walkingFrame >= 8.0f) {
this->action = ENRU1_ACTION_12; this->action = ENRU1_ACTION_MEETING_WALKING_AWAY_CONSTANT;
this->walkingFrame = 0.0f; this->walkingFrame = 0.0f;
this->actor.velocity.y = -1.0f; this->actor.velocity.y = -1.0f;
} }
} }
void func_80AECA18(EnRu1* this) { void EnRu1_CheckStartFalling(EnRu1* this) {
if (!(this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) { if (!(this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) {
s32 pad; s32 pad;
this->action = ENRU1_ACTION_13; this->action = ENRU1_ACTION_MEETING_FALLING_DOWN_HOLE;
this->walkingFrame = 0.0f; this->walkingFrame = 0.0f;
this->actor.velocity.y = 0.0f; this->actor.velocity.y = 0.0f;
} }
} }
void func_80AECA44(EnRu1* this, PlayState* play) { void EnRu1_FinishFirstEncounter(EnRu1* this, PlayState* play) {
if (EnRu1_CheckCueMatchingId(play, 5, 3)) { if (EnRu1_CheckCueMatchingId(play, 5, 3)) {
SET_INFTABLE(INFTABLE_141); SET_INFTABLE(INFTABLE_MET_RUTO_FIRST_TIME);
this->action = ENRU1_ACTION_14; this->action = ENRU1_ACTION_MEETING_END;
} }
} }
void func_80AECA94(EnRu1* this, PlayState* play) { void EnRu1_Meeting_RangeCheck(EnRu1* this, PlayState* play) {
func_80AEC780(this, play); EnRu1_CheckStartFirstEncounter(this, play);
} }
void func_80AECAB4(EnRu1* this, PlayState* play) { void EnRu1_Meeting_InitPosition(EnRu1* this, PlayState* play) {
func_80AEC81C(this, play); EnRu1_SetupPositionForFirstEncounter(this, play);
} }
void func_80AECAD4(EnRu1* this, PlayState* play) { void EnRu1_Meeting_FacingLink(EnRu1* this, PlayState* play) {
EnRu1_UpdateSkelAnime(this); EnRu1_UpdateSkelAnime(this);
EnRu1_UpdateEyes(this); EnRu1_UpdateEyes(this);
func_80AEAECC(this, play); func_80AEAECC(this, play);
func_80AEC8B8(this, play); EnRu1_CheckTurnAround(this, play);
} }
void func_80AECB18(EnRu1* this, PlayState* play) { void EnRu1_Meeting_TurningAround(EnRu1* this, PlayState* play) {
s32 something; s32 doneAnim;
something = EnRu1_UpdateSkelAnime(this); doneAnim = EnRu1_UpdateSkelAnime(this);
EnRu1_UpdateEyes(this); EnRu1_UpdateEyes(this);
func_80AEAECC(this, play); func_80AEAECC(this, play);
func_80AEC93C(this, something); EnRu1_StartWalkingAway(this, doneAnim);
} }
void func_80AECB60(EnRu1* this, PlayState* play) { void EnRu1_Meeting_WalkingAwayAccel(EnRu1* this, PlayState* play) {
func_80AEC40C(this); EnRu1_AccelerateAway(this);
EnRu1_UpdateSkelAnime(this); EnRu1_UpdateSkelAnime(this);
EnRu1_UpdateEyes(this); EnRu1_UpdateEyes(this);
func_80AEAECC(this, play); func_80AEAECC(this, play);
func_80AEC650(this); EnRu1_PlayStepSfx(this);
func_80AEC9C4(this); EnRu1_AdvanceWalkingAway(this);
} }
void func_80AECBB8(EnRu1* this, PlayState* play) { void EnRu1_Meeting_WalkingAwayConstant(EnRu1* this, PlayState* play) {
func_80AEC4CC(this); EnRu1_MoveForwardConstant(this);
func_80AEC6E4(this, play); EnRu1_RespondToFalling(this, play);
EnRu1_UpdateSkelAnime(this); EnRu1_UpdateSkelAnime(this);
EnRu1_UpdateEyes(this); EnRu1_UpdateEyes(this);
func_80AEAECC(this, play); func_80AEAECC(this, play);
func_80AEC650(this); EnRu1_PlayStepSfx(this);
func_80AECA18(this); EnRu1_CheckStartFalling(this);
} }
void func_80AECC1C(EnRu1* this, PlayState* play) { void EnRu1_Meeting_FallingDownHole(EnRu1* this, PlayState* play) {
func_80AEC4F4(this); EnRu1_AccelerateDownHole(this);
func_80AEC6E4(this, play); EnRu1_RespondToFalling(this, play);
EnRu1_UpdateSkelAnime(this); EnRu1_UpdateSkelAnime(this);
EnRu1_UpdateEyes(this); EnRu1_UpdateEyes(this);
func_80AEAECC(this, play); func_80AEAECC(this, play);
func_80AEC650(this); EnRu1_PlayStepSfx(this);
func_80AECA44(this, play); EnRu1_FinishFirstEncounter(this, play);
} }
void func_80AECC84(EnRu1* this, PlayState* play) { void EnRu1_Meeting_End(EnRu1* this, PlayState* play) {
if (play->csCtx.state == CS_STATE_IDLE) { if (play->csCtx.state == CS_STATE_IDLE) {
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
} }
@ -1266,7 +1278,7 @@ void EnRu1_BossRoom_WarpingOut(EnRu1* this, PlayState* play) {
} }
void EnRu1_InitInJabuJabuBasement(EnRu1* this, PlayState* play) { void EnRu1_InitInJabuJabuBasement(EnRu1* this, PlayState* play) {
if (GET_INFTABLE(INFTABLE_141) && !GET_INFTABLE(INFTABLE_145) && !GET_INFTABLE(INFTABLE_140) && if (GET_INFTABLE(INFTABLE_MET_RUTO_FIRST_TIME) && !GET_INFTABLE(INFTABLE_145) && !GET_INFTABLE(INFTABLE_140) &&
!GET_INFTABLE(INFTABLE_147)) { !GET_INFTABLE(INFTABLE_147)) {
if (!func_80AEB020(this, play)) { if (!func_80AEB020(this, play)) {
s8 actorRoom; s8 actorRoom;
@ -2312,7 +2324,7 @@ void func_80AEFF40(EnRu1* this, PlayState* play) {
void EnRu1_InitBesideDoorSwitch(EnRu1* this, PlayState* play) { void EnRu1_InitBesideDoorSwitch(EnRu1* this, PlayState* play) {
s8 actorRoom; s8 actorRoom;
if (GET_INFTABLE(INFTABLE_141) && GET_INFTABLE(INFTABLE_140) && !GET_INFTABLE(INFTABLE_145) && if (GET_INFTABLE(INFTABLE_MET_RUTO_FIRST_TIME) && GET_INFTABLE(INFTABLE_140) && !GET_INFTABLE(INFTABLE_145) &&
(!(func_80AEB020(this, play)))) { (!(func_80AEB020(this, play)))) {
EnRu1_AnimationChange(this, &gRutoChildWait2Anim, ANIMMODE_LOOP, 0, false); EnRu1_AnimationChange(this, &gRutoChildWait2Anim, ANIMMODE_LOOP, 0, false);
actorRoom = this->actor.room; actorRoom = this->actor.room;

View File

@ -31,7 +31,7 @@ typedef struct EnRu1 {
/* 0x0274 */ char unk_274[0x4]; /* 0x0274 */ char unk_274[0x4];
/* 0x0278 */ DoorWarp1* blueWarp; /* 0x0278 */ DoorWarp1* blueWarp;
/* 0x027C */ f32 xzDistToPlayerInBlueWarp; /* 0x027C */ f32 xzDistToPlayerInBlueWarp;
/* 0x0280 */ s32 unk_280; /* 0x0280 */ s32 isFalling;
/* 0x0284 */ s8 roomNum1; /* 0x0284 */ s8 roomNum1;
/* 0x0285 */ s8 roomNum2; /* 0x0285 */ s8 roomNum2;
/* 0x0286 */ s8 roomNum3; /* 0x0286 */ s8 roomNum3;
@ -68,14 +68,14 @@ typedef enum EnRu1Action {
/* 4 */ ENRU1_ACTION_FOUNTAIN_STARTING_SWIM_BACK, /* 4 */ ENRU1_ACTION_FOUNTAIN_STARTING_SWIM_BACK,
/* 5 */ ENRU1_ACTION_FOUNTAIN_SWIMMING_BACK, /* 5 */ ENRU1_ACTION_FOUNTAIN_SWIMMING_BACK,
/* 6 */ ENRU1_ACTION_FOUNTAIN_FINISHING_SWIM_BACK, /* 6 */ ENRU1_ACTION_FOUNTAIN_FINISHING_SWIM_BACK,
/* 7 */ ENRU1_ACTION_07, /* 7 */ ENRU1_ACTION_MEETING_RANGE_CHECK,
/* 8 */ ENRU1_ACTION_08, /* 8 */ ENRU1_ACTION_MEETING_INIT_POSITION,
/* 9 */ ENRU1_ACTION_09, /* 9 */ ENRU1_ACTION_MEETING_FACING_LINK,
/* 10 */ ENRU1_ACTION_10, /* 10 */ ENRU1_ACTION_MEETING_TURNING_AROUND,
/* 11 */ ENRU1_ACTION_11, /* 11 */ ENRU1_ACTION_MEETING_WALKING_AWAY_ACCEL,
/* 12 */ ENRU1_ACTION_12, /* 12 */ ENRU1_ACTION_MEETING_WALKING_AWAY_CONSTANT,
/* 13 */ ENRU1_ACTION_13, /* 13 */ ENRU1_ACTION_MEETING_FALLING_DOWN_HOLE,
/* 14 */ ENRU1_ACTION_14, /* 14 */ ENRU1_ACTION_MEETING_END,
/* 15 */ ENRU1_ACTION_PRE_SPAWN_BOSS_ROOM, /* 15 */ ENRU1_ACTION_PRE_SPAWN_BOSS_ROOM,
/* 16 */ ENRU1_ACTION_SPAWN_BOSS_ROOM, /* 16 */ ENRU1_ACTION_SPAWN_BOSS_ROOM,
/* 17 */ ENRU1_ACTION_RISE_THROUGH_BLUE_WARP, /* 17 */ ENRU1_ACTION_RISE_THROUGH_BLUE_WARP,