From 94f85c5fdce704634c3ec38d0eb1772b87a409f9 Mon Sep 17 00:00:00 2001 From: tom-overton Date: Thu, 25 Nov 2021 05:05:38 -0800 Subject: [PATCH] Switch to using "Open" instead of "Transform" --- .../actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c | 116 ++++++++++-------- .../actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h | 10 +- tools/disasm/functions.txt | 20 +-- 3 files changed, 80 insertions(+), 66 deletions(-) diff --git a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c index 9b16154b62..b795850316 100644 --- a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c +++ b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.c @@ -2,6 +2,16 @@ * File: z_obj_tokeidai.c * Overlay: ovl_Obj_Tokeidai * Description: Components of the Clock Tower (gears, clock face, counterweight, etc). Also used for wall clocks. + * + * This actor handles most of the functionality related to the Clock Tower and the various + * wall clocks around Clock Town. Among its responsibilities are making the clocks correctly + * tell the time by spinning the various pieces and gears and controlling the spotlight that + * is emitted from the Clock Tower at night. + * + * On the midnight of the Final Day, the Clock Tower opens up, and the various pieces of it + * are moved around. This actor is responsible for managing all of this movement. Additionally, + * if the moon crashes into Termina, this actor is responsible for making the pieces of the + * Clock Tower collapse. */ #include "z_obj_tokeidai.h" @@ -16,16 +26,16 @@ void ObjTokeidai_Update(Actor* thisx, GlobalContext* globalCtx); void ObjTokeidai_Draw(Actor* thisx, GlobalContext* globalCtx); void ObjTokeidai_DoNothing(ObjTokeidai* this, GlobalContext* globalCtx); -void ObjTokeidai_TowerClock_TransformedIdle(ObjTokeidai* this, GlobalContext* globalCtx); -void ObjTokeidai_TowerGear_TransformedIdle(ObjTokeidai* this, GlobalContext* globalCtx); -void ObjTokeidai_Counterweight_TransformedIdle(ObjTokeidai* this, GlobalContext* globalCtx); +void ObjTokeidai_TowerClock_OpenedIdle(ObjTokeidai* this, GlobalContext* globalCtx); +void ObjTokeidai_TowerGear_OpenedIdle(ObjTokeidai* this, GlobalContext* globalCtx); +void ObjTokeidai_Counterweight_OpenedIdle(ObjTokeidai* this, GlobalContext* globalCtx); void ObjTokeidai_TowerClock_Idle(ObjTokeidai* this, GlobalContext* globalCtx); void ObjTokeidai_WallClock_Idle(ObjTokeidai* this, GlobalContext* globalCtx); void ObjTokeidai_TowerGear_Idle(ObjTokeidai* this, GlobalContext* globalCtx); void ObjTokeidai_Counterweight_Idle(ObjTokeidai* this, GlobalContext* globalCtx); void ObjTokeidai_Walls_Idle(ObjTokeidai* this, GlobalContext* globalCtx); void ObjTokeidai_StaircaseIntoTower_Idle(ObjTokeidai* this, GlobalContext* globalCtx); -void ObjTokeidai_SetupTowerTransformation(ObjTokeidai* this); +void ObjTokeidai_SetupTowerOpening(ObjTokeidai* this); void ObjTokeidai_Clock_Draw(Actor* thisx, GlobalContext* globalCtx); void ObjTokeidai_Counterweight_Draw(Actor* thisx, GlobalContext* globalCtx); void ObjTokeidai_TowerGear_Draw(Actor* thisx, GlobalContext* globalCtx); @@ -102,10 +112,10 @@ void ObjTokeidai_TowerGear_Init(ObjTokeidai* this, GlobalContext* globalCtx) { this->opaDList = D_0600BA78; ObjTokeidai_SetupClockOrGear(this); - if (OBJ_TOKEIDAI_IS_STARTING_TRANSFORMATION_CS(globalCtx)) { - ObjTokeidai_SetupTowerTransformation(this); - } else if (OBJ_TOKEIDAI_IS_TRANSFORMED()) { - this->actionFunc = ObjTokeidai_TowerGear_TransformedIdle; + if (OBJ_TOKEIDAI_IS_STARTING_TOWER_OPENING_CS(globalCtx)) { + ObjTokeidai_SetupTowerOpening(this); + } else if (OBJ_TOKEIDAI_IS_TOWER_OPENED()) { + this->actionFunc = ObjTokeidai_TowerGear_OpenedIdle; this->actor.world.pos.y += this->actor.scale.y * 1900.0f; this->actor.shape.yOffset = 1500.0f; gSaveContext.weekEventReg[8] |= 0x40; @@ -118,9 +128,9 @@ void ObjTokeidai_TowerClock_Init(ObjTokeidai* this, GlobalContext* globalCtx) { this->actor.draw = ObjTokeidai_Clock_Draw; ObjTokeidai_Clock_Init(this); - if (OBJ_TOKEIDAI_IS_STARTING_TRANSFORMATION_CS(globalCtx)) { - ObjTokeidai_SetupTowerTransformation(this); - } else if (OBJ_TOKEIDAI_IS_TRANSFORMED()) { + if (OBJ_TOKEIDAI_IS_STARTING_TOWER_OPENING_CS(globalCtx)) { + ObjTokeidai_SetupTowerOpening(this); + } else if (OBJ_TOKEIDAI_IS_TOWER_OPENED()) { this->actor.world.pos.y += (this->actor.scale.y * 5191.0f) - 50.0f; this->actor.world.pos.x += Math_SinS(this->actor.world.rot.y) * this->actor.scale.z * 1791.0f; this->actor.world.pos.z += -Math_CosS(this->actor.world.rot.y) * this->actor.scale.z * 1791.0f; @@ -129,7 +139,7 @@ void ObjTokeidai_TowerClock_Init(ObjTokeidai* this, GlobalContext* globalCtx) { this->actor.home.pos = this->actor.world.pos; this->actor.home.pos.y -= 1178.0f; this->actor.home.pos.z += 13.0f; - this->actionFunc = ObjTokeidai_TowerClock_TransformedIdle; + this->actionFunc = ObjTokeidai_TowerClock_OpenedIdle; } else { this->actionFunc = ObjTokeidai_TowerClock_Idle; } @@ -147,9 +157,9 @@ void ObjTokeidai_Counterweight_Init(ObjTokeidai* this, GlobalContext* globalCtx) this->spotlightIntensity = 0; } - if (OBJ_TOKEIDAI_IS_STARTING_TRANSFORMATION_CS(globalCtx)) { + if (OBJ_TOKEIDAI_IS_STARTING_TOWER_OPENING_CS(globalCtx)) { this->spotlightIntensity = 0; - ObjTokeidai_SetupTowerTransformation(this); + ObjTokeidai_SetupTowerOpening(this); if (this->actor.child == NULL) { type = OBJ_TOKEIDAI_TYPE(&this->actor); if (type == OBJ_TOKEIDAI_TYPE_COUNTERWEIGHT_CLOCK_TOWN || @@ -166,13 +176,13 @@ void ObjTokeidai_Counterweight_Init(ObjTokeidai* this, GlobalContext* globalCtx) this->actor.child->home.rot.x = 0x12C; } } - } else if (OBJ_TOKEIDAI_IS_TRANSFORMED()) { + } else if (OBJ_TOKEIDAI_IS_TOWER_OPENED()) { this->spotlightIntensity = 0; this->actor.world.pos.y += this->actor.scale.y * -2160.0f; this->actor.world.pos.x += Math_SinS(this->actor.world.rot.y) * this->actor.scale.z * 5400.0f; this->actor.world.pos.z += -Math_CosS(this->actor.world.rot.y) * this->actor.scale.z * 5400.0f; this->actor.shape.rot.x = -0x4000; - this->actionFunc = ObjTokeidai_Counterweight_TransformedIdle; + this->actionFunc = ObjTokeidai_Counterweight_OpenedIdle; } else { this->actionFunc = ObjTokeidai_Counterweight_Idle; } @@ -291,7 +301,7 @@ void ObjTokeidai_TowerGear_Collapse(ObjTokeidai* this, GlobalContext* globalCtx) } } -void ObjTokeidai_TowerGear_TransformedIdle(ObjTokeidai* this, GlobalContext* globalCtx) { +void ObjTokeidai_TowerGear_OpenedIdle(ObjTokeidai* this, GlobalContext* globalCtx) { if (func_800EE29C(globalCtx, 0x84) && globalCtx->csCtx.npcActions[func_800EE200(globalCtx, 0x84)]->unk0 == 2) { this->actionFunc = ObjTokeidai_TowerGear_Collapse; this->actor.speedXZ = this->actor.scale.y * 5.0f; @@ -358,7 +368,7 @@ void ObjTokeidai_TowerClock_SlideOff(ObjTokeidai* this, GlobalContext* globalCtx thisx->world.pos.z = (1178.0f * sin) + (this->aerialClockFaceSpeed * cos) + thisx->home.pos.z; } -void ObjTokeidai_TowerClock_TransformedIdle(ObjTokeidai* this, GlobalContext* globalCtx) { +void ObjTokeidai_TowerClock_OpenedIdle(ObjTokeidai* this, GlobalContext* globalCtx) { if (func_800EE29C(globalCtx, 0x84) && globalCtx->csCtx.npcActions[func_800EE200(globalCtx, 0x84)]->unk0 == 1) { this->actionFunc = ObjTokeidai_TowerClock_SlideOff; this->slidingClockFaceAngle = 0; @@ -375,7 +385,7 @@ void ObjTokeidai_Counterweight_Collapse(ObjTokeidai* this, GlobalContext* global } } -void ObjTokeidai_Counterweight_TransformedIdle(ObjTokeidai* this, GlobalContext* globalCtx) { +void ObjTokeidai_Counterweight_OpenedIdle(ObjTokeidai* this, GlobalContext* globalCtx) { if (func_800EE29C(globalCtx, 0x84) && globalCtx->csCtx.npcActions[func_800EE200(globalCtx, 0x84)]->unk0 == 3) { this->actionFunc = ObjTokeidai_Counterweight_Collapse; this->xRotation = 0; @@ -402,10 +412,10 @@ void ObjTokeidai_Walls_Idle(ObjTokeidai* this, GlobalContext* globalCtx) { } } -void ObjTokeidai_TowerTransformation_EndCutscene(ObjTokeidai* this, GlobalContext* globalCtx) { +void ObjTokeidai_TowerOpening_EndCutscene(ObjTokeidai* this, GlobalContext* globalCtx) { if (func_800EE29C(globalCtx, 0x84) != 0 && globalCtx->csCtx.npcActions[func_800EE200(globalCtx, 0x84)]->unk0 == 5) { gSaveContext.weekEventReg[8] |= 0x40; - if (OBJ_TOKEIDAI_IS_STARTING_TRANSFORMATION_CS(globalCtx)) { + if (OBJ_TOKEIDAI_IS_STARTING_TOWER_OPENING_CS(globalCtx)) { func_801A3F54(0); gSaveContext.cutscene = 0; gSaveContext.nextCutsceneIndex = 0; @@ -423,7 +433,7 @@ void ObjTokeidai_TowerTransformation_EndCutscene(ObjTokeidai* this, GlobalContex } } -void ObjTokeidai_TowerTransformation_FinishTransformation(ObjTokeidai* this, GlobalContext* globalCtx) { +void ObjTokeidai_TowerOpening_FinishOpening(ObjTokeidai* this, GlobalContext* globalCtx) { s32 type; if (this->clockFaceZTranslation > -320) { @@ -434,7 +444,7 @@ void ObjTokeidai_TowerTransformation_FinishTransformation(ObjTokeidai* this, Glo type = OBJ_TOKEIDAI_TYPE(&this->actor); if ((type == OBJ_TOKEIDAI_TYPE_TOWER_CLOCK_CLOCK_TOWN) || (type == OBJ_TOKEIDAI_TYPE_TOWER_CLOCK_TERMINA_FIELD)) { - ObjTokeidai_TowerTransformation_EndCutscene(this, globalCtx); + ObjTokeidai_TowerOpening_EndCutscene(this, globalCtx); } else { this->actionFunc = ObjTokeidai_DoNothing; if (this->actor.child != NULL) { @@ -444,23 +454,23 @@ void ObjTokeidai_TowerTransformation_FinishTransformation(ObjTokeidai* this, Glo } } -void ObjTokeidai_TowerTransformation_Wait(ObjTokeidai* this, GlobalContext* globalCtx) { - if (this->transformationWaitTimer > 0) { - this->transformationWaitTimer--; +void ObjTokeidai_TowerOpening_Wait(ObjTokeidai* this, GlobalContext* globalCtx) { + if (this->openingWaitTimer > 0) { + this->openingWaitTimer--; } else { - this->actionFunc = ObjTokeidai_TowerTransformation_FinishTransformation; - this->transformationWaitTimer = 0; + this->actionFunc = ObjTokeidai_TowerOpening_FinishOpening; + this->openingWaitTimer = 0; } } -void ObjTokeidai_TowerTransformation_DropCounterweight(ObjTokeidai* this, GlobalContext* globalCtx) { - this->xRotation += this->transformationRotationalVelocity; +void ObjTokeidai_TowerOpening_DropCounterweight(ObjTokeidai* this, GlobalContext* globalCtx) { + this->xRotation += this->counterweightRotationalVelocity; if (this->xRotation < 0x4000) { - this->transformationRotationalVelocity += this->transformationRotationalAcceleration; + this->counterweightRotationalVelocity += this->counterweightRotationalAcceleration; return; } - this->transformationRotationalAcceleration = 0x14; + this->counterweightRotationalAcceleration = 0x14; this->xRotation = 0x4000; switch (this->boundCount) { case 0: @@ -475,23 +485,23 @@ void ObjTokeidai_TowerTransformation_DropCounterweight(ObjTokeidai* this, Global } this->boundCount++; - if (this->transformationRotationalVelocity > 0x190) { + if (this->counterweightRotationalVelocity > 0x190) { // This condition is met for the first bound, causing the counterweight // to rebound upwards quickly. - this->transformationRotationalVelocity = -0xC8; - } else if (this->transformationRotationalVelocity > 0x32) { + this->counterweightRotationalVelocity = -0xC8; + } else if (this->counterweightRotationalVelocity > 0x32) { // This condition is met for the second bound, causing the counterweight // to rebound upwards slowly. - this->transformationRotationalVelocity = -(this->transformationRotationalVelocity >> 1); + this->counterweightRotationalVelocity = -(this->counterweightRotationalVelocity >> 1); } else { // This condition is met for the third bound, causing the counterweight // to stop moving. - this->actionFunc = ObjTokeidai_TowerTransformation_Wait; - this->transformationWaitTimer = 10; + this->actionFunc = ObjTokeidai_TowerOpening_Wait; + this->openingWaitTimer = 10; } } -void ObjTokeidai_TowerTransformation_FinishRaise(ObjTokeidai* this, GlobalContext* globalCtx) { +void ObjTokeidai_TowerOpening_FinishRaise(ObjTokeidai* this, GlobalContext* globalCtx) { s32 type; if (this->settleTimer > 0) { @@ -513,14 +523,14 @@ void ObjTokeidai_TowerTransformation_FinishRaise(ObjTokeidai* this, GlobalContex Audio_PlayActorSound2(&this->actor, NA_SE_EV_CLOCK_TOWER_FALL); } this->yTranslation = 3400; - this->actionFunc = ObjTokeidai_TowerTransformation_DropCounterweight; - this->transformationRotationalVelocity = 0; - this->transformationRotationalAcceleration = 0xA; + this->actionFunc = ObjTokeidai_TowerOpening_DropCounterweight; + this->counterweightRotationalVelocity = 0; + this->counterweightRotationalAcceleration = 0xA; this->boundCount = 0; } } -void ObjTokeidai_TowerTransformation_RaiseTower(ObjTokeidai* this, GlobalContext* globalCtx) { +void ObjTokeidai_TowerOpening_RaiseTower(ObjTokeidai* this, GlobalContext* globalCtx) { s32 type; if (this->yTranslation < 3400) { @@ -537,21 +547,25 @@ void ObjTokeidai_TowerTransformation_RaiseTower(ObjTokeidai* this, GlobalContext Audio_PlayActorSound2(&this->actor, NA_SE_EV_CLOCK_TOWER_STOP); } this->yTranslation = 3400; - this->actionFunc = ObjTokeidai_TowerTransformation_FinishRaise; + this->actionFunc = ObjTokeidai_TowerOpening_FinishRaise; this->settleTimer = 10; this->settleAmount = 20; } } -void ObjTokeidai_TowerTransformation_Start(ObjTokeidai* this, GlobalContext* globalCtx) { +void ObjTokeidai_TowerOpening_Start(ObjTokeidai* this, GlobalContext* globalCtx) { if ((func_800EE29C(globalCtx, 0x84) && globalCtx->csCtx.npcActions[func_800EE200(globalCtx, 0x84)]->unk0 == 4) || (gSaveContext.weekEventReg[8] & 0x40)) { - this->actionFunc = ObjTokeidai_TowerTransformation_RaiseTower; + this->actionFunc = ObjTokeidai_TowerOpening_RaiseTower; } } -void ObjTokeidai_SetupTowerTransformation(ObjTokeidai* this) { - this->actionFunc = ObjTokeidai_TowerTransformation_Start; +/** + * Sets up the sequence where the Clock Tower "transforms" and opens up + * on the midnight of the Final Day. + */ +void ObjTokeidai_SetupTowerOpening(ObjTokeidai* this) { + this->actionFunc = ObjTokeidai_TowerOpening_Start; this->clockFaceRotationalVelocity = 0; this->clockFaceRotationTimer = 0; this->yTranslation = 0; @@ -563,7 +577,7 @@ void ObjTokeidai_DoNothing(ObjTokeidai* this, GlobalContext* globalCtx) { } void ObjTokeidai_StaircaseIntoTower_Idle(ObjTokeidai* this, GlobalContext* globalCtx) { - if (OBJ_TOKEIDAI_IS_TRANSFORMED() || (gSaveContext.weekEventReg[8] & 0x40)) { + if (OBJ_TOKEIDAI_IS_TOWER_OPENED() || (gSaveContext.weekEventReg[8] & 0x40)) { this->actor.draw = ObjTokeidai_Draw; } else { this->actor.draw = NULL; @@ -575,7 +589,7 @@ s32 ObjTokeidai_IsPostFirstCycleFinalHours(ObjTokeidai* this, GlobalContext* glo return false; } if (CURRENT_DAY == 3 && gSaveContext.time < CLOCK_TIME(6, 0)) { - ObjTokeidai_SetupTowerTransformation(this); + ObjTokeidai_SetupTowerOpening(this); return true; } return false; @@ -636,7 +650,7 @@ void ObjTokeidai_RotateOnHourChange(ObjTokeidai* this, GlobalContext* globalCtx) void ObjTokeidai_TowerClock_Idle(ObjTokeidai* this, GlobalContext* globalCtx) { if (CURRENT_DAY == 3 && this->clockHour < 6 && gSaveContext.time < CLOCK_TIME(6, 0)) { this->actor.draw = ObjTokeidai_Clock_Draw; - ObjTokeidai_SetupTowerTransformation(this); + ObjTokeidai_SetupTowerOpening(this); gSaveContext.weekEventReg[8] |= 0x40; return; } diff --git a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h index 9e17a8f334..17f022963e 100644 --- a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h +++ b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h @@ -8,8 +8,8 @@ #define OBJ_TOKEIDAI_GET_CURRENT_MINUTE(this) ((s32)((this)->currentTime * (360 * 2.0f / 0x10000)) % 30) #define OBJ_TOKEIDAI_GET_CLOCK_FACE_ROTATION(currentHour) ((s16)(currentHour * (0x10000 / 24.0f))) #define OBJ_TOKEIDAI_GET_OUTER_RING_OR_GEAR_ROTATION(currentMinute) ((s16)(currentMinute * (0x10000 * 12.0f / 360))) -#define OBJ_TOKEIDAI_IS_TRANSFORMED() ((CURRENT_DAY == 3 && gSaveContext.time < CLOCK_TIME(6, 0)) || CURRENT_DAY >= 4) -#define OBJ_TOKEIDAI_IS_STARTING_TRANSFORMATION_CS(globalCtx) \ +#define OBJ_TOKEIDAI_IS_TOWER_OPENED() ((CURRENT_DAY == 3 && gSaveContext.time < CLOCK_TIME(6, 0)) || CURRENT_DAY >= 4) +#define OBJ_TOKEIDAI_IS_STARTING_TOWER_OPENING_CS(globalCtx) \ (((globalCtx)->sceneNum == SCENE_CLOCKTOWER && gSaveContext.sceneSetupIndex == 2 && (globalCtx)->csCtx.unk_12 == 0) || \ ((globalCtx)->sceneNum == SCENE_00KEIKOKU && gSaveContext.sceneSetupIndex == 2 && (globalCtx)->csCtx.unk_12 == 0)) @@ -42,14 +42,14 @@ typedef struct ObjTokeidai { /* 0x154 */ union { s16 clockFaceRotationalVelocity; s16 settleTimer; - s16 transformationRotationalVelocity; - s16 transformationWaitTimer; + s16 counterweightRotationalVelocity; + s16 openingWaitTimer; s16 slidingClockFaceAngle; }; /* 0x156 */ union { s16 clockFaceRotationTimer; s16 settleAmount; - s16 transformationRotationalAcceleration; + s16 counterweightRotationalAcceleration; s16 aerialClockFaceSpeed; }; /* 0x158 */ s32 sunMoonDiskRotation; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 7bc9d297ef..2c54d0f6b6 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -11677,22 +11677,22 @@ 0x80AB3000:("ObjTokeidai_Destroy",), 0x80AB3010:("ObjTokeidai_RotateOnMinuteChange",), 0x80AB319C:("ObjTokeidai_TowerGear_Collapse",), - 0x80AB3240:("ObjTokeidai_TowerGear_TransformedIdle",), + 0x80AB3240:("ObjTokeidai_TowerGear_OpenedIdle",), 0x80AB32F0:("ObjTokeidai_TowerClock_Fall",), 0x80AB3370:("ObjTokeidai_TowerClock_SlideOff",), - 0x80AB34CC:("ObjTokeidai_TowerClock_TransformedIdle",), + 0x80AB34CC:("ObjTokeidai_TowerClock_OpenedIdle",), 0x80AB3544:("ObjTokeidai_Counterweight_Collapse",), - 0x80AB3598:("ObjTokeidai_Counterweight_TransformedIdle",), + 0x80AB3598:("ObjTokeidai_Counterweight_OpenedIdle",), 0x80AB363C:("ObjTokeidai_Walls_Collapse",), 0x80AB365C:("ObjTokeidai_Walls_Idle",), 0x80AB36C4:("ObjTokeidai_TowerTransformation_EndCutscene",), - 0x80AB3808:("ObjTokeidai_TowerTransformation_FinishTransformation",), - 0x80AB3880:("ObjTokeidai_TowerTransformation_Wait",), - 0x80AB38B0:("ObjTokeidai_TowerTransformation_DropCounterweight",), - 0x80AB39BC:("ObjTokeidai_TowerTransformation_FinishRaise",), - 0x80AB3A7C:("ObjTokeidai_TowerTransformation_RaiseTower",), - 0x80AB3B34:("ObjTokeidai_TowerTransformation_Start",), - 0x80AB3BB0:("ObjTokeidai_SetupTowerTransformation",), + 0x80AB3808:("ObjTokeidai_TowerOpening_FinishOpening",), + 0x80AB3880:("ObjTokeidai_TowerOpening_Wait",), + 0x80AB38B0:("ObjTokeidai_TowerOpening_DropCounterweight",), + 0x80AB39BC:("ObjTokeidai_TowerOpening_FinishRaise",), + 0x80AB3A7C:("ObjTokeidai_TowerOpening_RaiseTower",), + 0x80AB3B34:("ObjTokeidai_TowerOpening_Start",), + 0x80AB3BB0:("ObjTokeidai_SetupTowerOpening",), 0x80AB3BD8:("ObjTokeidai_DoNothing",), 0x80AB3BE8:("ObjTokeidai_StaircaseIntoTower_Idle",), 0x80AB3C50:("ObjTokeidai_IsPostFirstCycleFinalHours",),