ovl_En_Go OK and documented (Decomp was mostly done already) (#1080)

* Match remaining functions in z_en_go:

- Changed some already matching functions for uniformity with the tricky match (early continue from loop). In some cases, this eliminated some strange constructs, in others, it didn't leave much difference.
- Comments/Notes to start understanding/naming process.

* WIP renaming

* More WIP renaming.

* More renaming, Effects (See oot for continuation) and some flags)

* MessageScript documenting.

* Util for dumping message data by textId value.

* Identify some messages.

* Formatting, figuring out event flags.

* More WIP naming

* WIP renaming.

* WIP renaming

* WIP naming and organizing

* WIP more renaming.

* WIP renaming/organizing.

* Near-Final Cleanup before review.

* Rename Taisou and Hakugin animations and associated functions/variables.

* Misc Cleanup.

* Undo changes to variables.txt

* Removed msgtableparser.py (Split to another branch)

* Removal of uncompiled Message Script details.

* Fixup spec file

* First part of hensldm's suggested changes from review. Awaiting discussion.

* Second part of hensldm's suggested changes.

* Fixup missed 'Animation' suffix and functions.txt

* Update .xml files and related source per tom-overton's comments

* Align w/ engineer124's Quake Cleanup #1102

* fixup

* Run format.sh after merge.

* Add brackets around one-line conditional blocks

* Remainder of hensldm's comments from review.

* First pass at Elliptic's comments.

* Rename functions UpdateToX -> ChangeToX

* Header cleanup.

* Run Format, remove accidental commit of .orig file.

* Fixup ActorInit

* Review comments addressed, plus a few unsolicited changes.
- Location of function declarations moved above static data, below types: References in the codebase were mixed, but this just made more sense.
- Function name changes: It didn't fit into subsystems based on Goron Type, so I quit trying to name functions that way. Loss of a bit of "which function applies to which type", but it looks a bit cleaner, sooo...
- Took a stab at making effectTable usage a bit clearer. Just using a EnGoEffect* everywhere and not inherently knowing if it was for one element, or an array really bugged me.
- "GraveBro" names changed. They're all "brothers".

* Changes from engineer124's review.
- "Stretcher" replaced with "Athletic" as a descriptor of goron type.
- Misc formatting and naming changes

* Restructure switch-case statment for early break, and added missing default cases. Removed #define for 0 for actionFlags bitmask.

* Relocate WEEKEVENTREG comments, remove SCENE comments.

* Updated WEEKEVENTREG define names

* Update WEEKEVENTREG names in Goron Shrine Door.

* ELDER -> ELDERS, and revert formatting on z64save.h

* Fixed re-applying changes over wrong defines.

* Adjust Weekeventreg names and comments.

* Update comment as well.
This commit is contained in:
StickyThwomp
2023-06-01 22:30:48 -05:00
committed by GitHub
parent e0ae4e24f7
commit 95c5796e41
12 changed files with 1887 additions and 1245 deletions
@@ -38,12 +38,12 @@ void BgTobira01_Action(BgTobira01* this, PlayState* play) {
CutsceneManager_Stop(CS_ID_GLOBAL_TALK);
} else if (CutsceneManager_IsNext(csId)) {
CutsceneManager_StartWithPlayerCs(csId, &this->dyna.actor);
SET_WEEKEVENTREG(WEEKEVENTREG_88_40);
SET_WEEKEVENTREG(WEEKEVENTREG_GATEKEEPER_OPENED_GORON_SHRINE);
this->cutsceneRequested = false;
} else {
CutsceneManager_Queue(csId);
}
} else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_88_40) && (this->posYTick == 0) &&
} else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_GATEKEEPER_OPENED_GORON_SHRINE) && (this->posYTick == 0) &&
(play->actorCtx.playerImpact.timer != 0) &&
(play->actorCtx.playerImpact.type == PLAYER_IMPACT_GORON_GROUND_POUND) &&
(SurfaceType_GetSceneExitIndex(&play->colCtx, player->actor.floorPoly, player->actor.floorBgId) == 6)) {
@@ -52,7 +52,7 @@ void BgTobira01_Action(BgTobira01* this, PlayState* play) {
}
prevPosYTick = this->posYTick;
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_88_40)) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_GATEKEEPER_OPENED_GORON_SHRINE)) {
this->posYTick++;
} else {
this->posYTick--;
@@ -65,9 +65,9 @@ void BgTobira01_Action(BgTobira01* this, PlayState* play) {
this->timer = 180;
}
if (!(player->stateFlags1 & PLAYER_STATE1_40) && CHECK_WEEKEVENTREG(WEEKEVENTREG_88_40) &&
if (!(player->stateFlags1 & PLAYER_STATE1_40) && CHECK_WEEKEVENTREG(WEEKEVENTREG_GATEKEEPER_OPENED_GORON_SHRINE) &&
(DECR(this->timer) == 0)) {
CLEAR_WEEKEVENTREG(WEEKEVENTREG_88_40);
CLEAR_WEEKEVENTREG(WEEKEVENTREG_GATEKEEPER_OPENED_GORON_SHRINE);
}
}
@@ -76,7 +76,7 @@ void BgTobira01_Init(Actor* thisx, PlayState* play) {
DynaPolyActor_Init(&this->dyna, DYNA_TRANSFORM_POS);
DynaPolyActor_LoadMesh(play, &this->dyna, &gGoronDoorCol);
CLEAR_WEEKEVENTREG(WEEKEVENTREG_88_40);
CLEAR_WEEKEVENTREG(WEEKEVENTREG_GATEKEEPER_OPENED_GORON_SHRINE);
Actor_SetScale(&this->dyna.actor, 1.0f);
this->timer = gSaveContext.save.isNight;
this->posYTick = 0;
+10 -10
View File
@@ -135,17 +135,17 @@ static AnimationInfoS sAnimationInfo[] = {
{ &gGoronShiverAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronShiverAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gGoronDropKegAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &object_taisou_Anim_0016C8, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_004DD4, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_00283C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_007764, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_005EE0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_002C48, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_0031D8, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_005790, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsSquatSideToSideAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsDoubleArmSideBendAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsShakeLimbsAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsSingleArmSideBendAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsHamstringStretchSittingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsCheerAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsShoutAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsHamstringStretchStandingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronCoverEarsAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_hakugin_demo_Anim_002704, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
{ &object_hakugin_demo_Anim_003378, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gGoronSpringLookAroundAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
{ &gGoronSpringLookAroundLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gGoronShiveringSurprisedAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
{ &gGoronStandingIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
};
+7 -7
View File
@@ -830,7 +830,7 @@ void func_80B51EA4(EnGk* this, PlayState* play) {
}
void func_80B51FD0(EnGk* this, PlayState* play) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON)) {
if (this->unk_1E4 & 2) {
func_801A4748(&this->actor.projectedPos, NA_SE_EN_GOLON_KID_CRY - SFX_FLAG);
} else {
@@ -897,7 +897,7 @@ void func_80B5227C(EnGk* this, PlayState* play) {
func_800B14D4(play, 20.0f, &this->actor.home.pos);
this->unk_350 = 60;
if (!(this->unk_1E4 & 0x80)) {
SET_WEEKEVENTREG(WEEKEVENTREG_22_04);
SET_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON);
}
Actor_PlaySfx(&this->actor, NA_SE_EN_GOLON_SIT_IMT);
this->unk_350 = 0x4000;
@@ -987,7 +987,7 @@ void func_80B525E0(EnGk* this, PlayState* play) {
void func_80B52654(EnGk* this, PlayState* play) {
this->unk_350 += 0x400;
if ((this->unk_1E4 & 0x80) && (play->csCtx.curFrame == 250)) {
SET_WEEKEVENTREG(WEEKEVENTREG_22_04);
SET_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON);
}
this->unk_354 = Math_SinS(this->unk_350) * 0.006f * 0.06f;
@@ -1044,7 +1044,7 @@ void EnGk_Init(Actor* thisx, PlayState* play) {
Actor_Kill(&this->actor);
}
} else if (ENGK_GET_F(&this->actor) == ENGK_F_2) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON)) {
this->actionFunc = func_80B51FD0;
this->actor.draw = NULL;
this->actor.flags |= ACTOR_FLAG_10;
@@ -1052,7 +1052,7 @@ void EnGk_Init(Actor* thisx, PlayState* play) {
} else {
Actor_Kill(&this->actor);
}
} else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) {
} else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON)) {
this->unk_2E4 = 0;
this->csId = this->actor.csId;
this->actor.flags |= ACTOR_FLAG_10;
@@ -1076,7 +1076,7 @@ void EnGk_Update(Actor* thisx, PlayState* play) {
this->actionFunc(this, play);
if ((ENGK_GET_F(&this->actor) == ENGK_F_1) ||
((ENGK_GET_F(&this->actor) == ENGK_F_0) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04))) {
((ENGK_GET_F(&this->actor) == ENGK_F_0) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON))) {
func_80B507A0(this, play);
SkelAnime_Update(&this->skelAnime);
Actor_TrackPlayer(play, &this->actor, &this->unk_1D8, &this->unk_1DE, this->actor.focus.pos);
@@ -1235,7 +1235,7 @@ void EnGk_Draw(Actor* thisx, PlayState* play) {
Gfx_SetupDL25_Opa(play->state.gfxCtx);
if ((ENGK_GET_F(&this->actor) == ENGK_F_0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) {
if ((ENGK_GET_F(&this->actor) == ENGK_F_0) && CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON)) {
Matrix_RotateXS(-0x4000, MTXMODE_APPLY);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
File diff suppressed because it is too large Load Diff
+116 -78
View File
@@ -2,103 +2,141 @@
#define Z_EN_GO_H
#include "global.h"
#include "objects/object_oF1d_map/object_oF1d_map.h"
struct EnGo;
typedef void (*EnGoActionFunc)(struct EnGo*, PlayState*);
typedef s32 (*MsgEventFunc)(Actor*, PlayState*);
#define ENGO_GET_F(thisx) (((thisx)->params & 0xF) & 0xFF)
#define ENGO_GET_70(thisx) ((((thisx)->params & 0x70) >> 4) & 0xFF)
#define ENGO_GET_7F80(thisx) ((((thisx)->params & 0x7F80) >> 7) & 0xFF)
#define ENGO_GET_TYPE(thisx) (((thisx)->params & 0xF) & 0xFF)
#define ENGO_GET_SUBTYPE(thisx) ((((thisx)->params & 0x70) >> 4) & 0xFF)
enum {
#define ENGO_GET_PATH(thisx) ((((thisx)->params & 0x7F80) >> 7) & 0xFF)
#define ENGO_SNOW_EFFECT_COUNT 16
#define ENGO_OTHER_EFFECT_COUNT 16
#define ENGO_EFFECT_COUNT (ENGO_SNOW_EFFECT_COUNT + ENGO_OTHER_EFFECT_COUNT)
/**
* Struct to track the state of various visual effects.
*
* A Goron's 'effectTable' is comprised of a number of these effects, which depending on the context in which they are
* used, take on the form of snow, dust, or steam. The functions using these objects have an expectation that they are
* iterating through the full effectTable, or half of the effectTable. See individual functions containing 'EnGoEffect*'
* parameters for more details.
*/
typedef struct EnGoEffect {
/* 0x00 */ u8 type;
/* 0x01 */ u8 alphaDenom;
/* 0x02 */ u8 alphaNumer;
/* 0x04 */ Vec3s rotVelocity;
/* 0x0A */ Vec3s rotAngle;
/* 0x10 */ Vec3f pos;
/* 0x1C */ Vec3f accel;
/* 0x28 */ Vec3f velocity;
/* 0x34 */ f32 scaleXY;
/* 0x38 */ f32 scaleXYDelta;
} EnGoEffect; // size = 0x3C;
/**
* Goron Type, identified by bits [3..0] of the actor's params
*
* - The ENGO_ATHLETIC and ENGO_SPECTATOR types share the same subtype domain (EnGoRacetrackSubtype: [0,7])
* - ENGO_GRAVEYARD types have their own subtype domain (EnGoGraveyardSubtype: [0,1])
* - Others have no subtypes.
*/
typedef enum EnGoType {
/* 0 */ ENGO_F_0,
/* 1 */ ENGO_F_1,
/* 2 */ ENGO_F_2,
/* 3 */ ENGO_F_3,
/* 4 */ ENGO_F_4,
/* 5 */ ENGO_F_5,
/* 6 */ ENGO_F_6,
/* 7 */ ENGO_F_7,
/* 8 */ ENGO_F_8,
};
/* 1 */ ENGO_ATHLETIC, // Racers stretching before the race
/* 2 */ ENGO_SPECTATOR, // Spectators to the race
/* 3 */ ENGO_GATEKEEPER, // Gatekeeper to the Goron Shrine
/* 4 */ ENGO_GRAVEYARD, // Gravemaker and other
/* 5 */ ENGO_ASIDE_STORE, // Shrine Goron outside store
/* 6 */ ENGO_ASIDE_ELDERSROOM, // Shrine Goron outside Elder's room
/* 7 */ ENGO_ASIDE_ELDERSSON, // Shrine Goron aside the Elder's Son
/* 8 */ ENGO_MEDIGORON, // Medigoron selling Powder Kegs
} EnGoType;
enum {
/* 0 */ ENGO_70_0,
/* 1 */ ENGO_70_1,
/* 2 */ ENGO_70_2,
/* 3 */ ENGO_70_3,
/* 4 */ ENGO_70_4,
/* 5 */ ENGO_70_5,
};
/**
* Subtype for Gorons at the racetrack (ENGO_ATHLETIC and ENGO_SPECTATOR)
*/
typedef enum EnGoRacetrackSubtype {
/* 0 */ ENGO_ATHLETIC_A,
/* 1 */ ENGO_ATHLETIC_B,
/* 2 */ ENGO_ATHLETIC_C,
/* 3 */ ENGO_ATHLETIC_D,
/* 4 */ ENGO_ATHLETIC_HAMSTRINGSIT,
/* 5 */ ENGO_ATHLETIC_HAMSTRINGSTAND,
/* 6 */ ENGO_SPECTATOR_CHEER,
/* 7 */ ENGO_SPECTATOR_SHOUTING,
} EnGoRacetrackSubtype;
typedef struct {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x04 */ Vec3s unk_04;
/* 0x0A */ Vec3s unk_0A;
/* 0x10 */ Vec3f unk_10;
/* 0x1C */ Vec3f unk_1C;
/* 0x28 */ Vec3f unk_28;
/* 0x34 */ f32 unk_34;
/* 0x38 */ f32 unk_38;
} EnGoStruct; // size = 0x3C;
/**
* Subtype for Gorons outside the Goron Graveyard (ENGO_GRAVEYARD)
*/
typedef enum EnGoGraveyardSubtype {
/* 0 */ ENGO_GRAVEYARD_GRAVEMAKER,
/* 1 */ ENGO_GRAVEYARD_FROZEN,
} EnGoGraveyardSubtype;
typedef struct EnGo {
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ EnGoActionFunc actionFunc;
/* 0x18C */ EnGoActionFunc unk_18C;
/* 0x190 */ EnGoActionFunc unk_190;
/* 0x18C */ EnGoActionFunc interruptedActionFunc;
/* 0x190 */ EnGoActionFunc graveyardDialogActionFunc;
/* 0x194 */ ColliderCylinder colliderCylinder;
/* 0x1E0 */ UNK_TYPE1 unk1E0[0x4C];
/* 0x1E0 */ ColliderCylinder unusedCylinder;
/* 0x22C */ ColliderSphere colliderSphere;
/* 0x284 */ Path* unk_284;
/* 0x288 */ s8 unk_288;
/* 0x289 */ s8 unk_289;
/* 0x28C */ s32 unk_28C;
/* 0x290 */ Vec3f unk_290;
/* 0x29C */ Vec3f unk_29C;
/* 0x2A8 */ Vec3s unk_2A8;
/* 0x2AE */ Vec3s unk_2AE;
/* 0x2B4 */ Vec3s jointTable[18];
/* 0x320 */ Vec3s morphTable[18];
/* 0x38C */ Actor* unk_38C;
/* 0x390 */ u16 unk_390;
/* 0x392 */ u16 unk_392;
/* 0x394 */ u8 cueId;
/* 0x398 */ f32 unk_398;
/* 0x39C */ f32 unk_39C;
/* 0x3A0 */ f32 unk_3A0;
/* 0x3A4 */ f32 unk_3A4;
/* 0x3A8 */ f32 unk_3A8;
/* 0x284 */ Path* gatekeeperPath;
/* 0x288 */ s8 taisouObjIndex;
/* 0x289 */ s8 hakuginDemoObjIndex;
/* 0x28C */ s32 msgScriptResumePos;
/* 0x290 */ Vec3f headPos;
/* 0x29C */ Vec3f bodyPos;
/* 0x2A8 */ Vec3s headRot;
/* 0x2AE */ Vec3s bodyRot;
/* 0x2B4 */ Vec3s jointTable[GORON_LIMB_MAX];
/* 0x320 */ Vec3s morphTable[GORON_LIMB_MAX];
/* 0x38C */ Actor* attentionTarget;
/* 0x390 */ u16 actionFlags;
/* 0x392 */ u16 lastTextId;
/* 0x394 */ u8 springArrivalCueId;
/* 0x398 */ f32 curAnimPlaySpeed;
/* 0x39C */ f32 iceBlockScale;
/* 0x3A0 */ f32 iceBlockAlpha;
/* 0x3A4 */ f32 scaleFactor;
/* 0x3A8 */ f32 scaleFactorPoundDistortion;
/* 0x3AC */ UNK_TYPE1 unk3AC[0x2];
/* 0x3AE */ s16 unk_3AE;
/* 0x3B0 */ s16 unk_3B0;
/* 0x3B2 */ s16 unk_3B2;
/* 0x3B4 */ s16 unk_3B4;
/* 0x3B6 */ s16 unk_3B6;
/* 0x3AE */ union {
s16 snorePhase; // Used whilst a Goron is sleeping, +0x400 at a time
s16 elapsedHangtime; // Hangtime at the top of a pound.
};
/* 0x3B0 */ s16 headRotZ;
/* 0x3B2 */ s16 headRotY;
/* 0x3B4 */ s16 bodyRotZ;
/* 0x3B6 */ s16 bodyRotY;
/* 0x3B8 */ s16 csId;
/* 0x3BA */ s16 unk_3BA;
/* 0x3BC */ s16 unk_3BC;
/* 0x3BE */ s16 unk_3BE;
/* 0x3C0 */ s16 unk_3C0;
/* 0x3C2 */ s16 unk_3C2;
/* 0x3C4 */ s16 unk_3C4;
/* 0x3C6 */ s16 unk_3C6;
/* 0x3C8 */ s16 unk_3C8[3];
/* 0x3CE */ s16 unk_3CE[3];
/* 0x3D4 */ s16 unk_3D4;
/* 0x3D8 */ void* unk_3D8;
/* 0x3DC */ s32 unk_3DC;
/* 0x3BA */ s16 loseAttentionTimer;
/* 0x3BC */ s16 blinkTimer;
/* 0x3BE */ s16 eyeTexIndex;
/* 0x3C0 */ s16 cutsceneState;
/* 0x3C2 */ s16 cutsceneDelayTimer;
/* 0x3C4 */ s16 gatekeeperAnimState;
/* 0x3C6 */ s16 harmlessTimer;
/* 0x3C8 */ s16 limbRotTableZ[3];
/* 0x3CE */ s16 limbRotTableY[3];
/* 0x3D4 */ s16 surprisePhase;
/* 0x3D8 */ MsgEventFunc msgEventFunc;
/* 0x3DC */ s32 curAnimIndex;
/* 0x3E0 */ UNK_TYPE1 unk3E0[0x4];
/* 0x3E4 */ s32 unk_3E4;
/* 0x3E8 */ s32 unk_3E8;
/* 0x3EC */ s32 unk_3EC;
/* 0x3F0 */ s32 unk_3F0;
/* 0x3F4 */ s32 unk_3F4;
/* 0x3F8 */ EnGoStruct unk_3F8[32];
/* 0x3E4 */ s32 indexPathPoint;
/* 0x3E8 */ s32 indexEffect;
/* 0x3EC */ s32 sleepState;
/* 0x3F0 */ s32 springArrivalCutsceneActive;
/* 0x3F4 */ s32 changedText;
/* 0x3F8 */ EnGoEffect effectTable[ENGO_EFFECT_COUNT];
} EnGo; // size = 0xB78
#endif // Z_EN_GO_H
+11 -11
View File
@@ -171,12 +171,12 @@ static AnimationInfoS sAnimationInfo[] = {
{ &gGoronUnrollAnim, -2.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &gGoronShiverAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronShiverAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &object_taisou_Anim_004DD4, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_00283C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_007764, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_005790, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsDoubleArmSideBendAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsShakeLimbsAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsSingleArmSideBendAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronAthleticsHamstringStretchStandingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gGoronCoverEarsAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_taisou_Anim_002C48, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gGoronAthleticsCheerAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gGoronStandingHandTappingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gGoronSleepyAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &gGoronStandingIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
@@ -235,7 +235,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) {
switch (EN_S_GORO_GET_MAIN_TYPE(&this->actor)) {
case EN_S_GORO_TYPE_SHRINE_WINTER_A:
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON)) {
if (player->transformation == PLAYER_FORM_GORON) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_36_02)) {
switch (this->textId) {
@@ -302,7 +302,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) {
break;
case EN_S_GORO_TYPE_SHRINE_WINTER_B:
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON)) {
if (player->transformation == PLAYER_FORM_GORON) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_36_40)) {
switch (this->textId) {
@@ -367,7 +367,7 @@ u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play) {
break;
case EN_S_GORO_TYPE_SHRINE_WINTER_C:
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON)) {
if (player->transformation == PLAYER_FORM_GORON) {
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_37_02)) {
switch (this->textId) {
@@ -771,7 +771,7 @@ void EnSGoro_UpdateSleeping(EnSGoro* this, PlayState* play) {
Actor_PlaySfx(&this->actor, NA_SE_EN_GOLON_SNORE1);
}
}
} else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) {
} else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON)) {
this->actionFlags &= ~EN_S_GORO_ACTIONFLAG_SUPPRESS_SNORE;
}
@@ -842,7 +842,7 @@ s32 EnSGoro_CheckGKBehavior(EnSGoro* this, PlayState* play) {
return false;
}
if ((!(this->actionFlags & EN_S_GORO_ACTIONFLAG_GKQUIET_ACKNOWLEDGED)) &&
((((EnGk*)this->otherGoron)->unk_1E4 & 0x80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04))) {
((((EnGk*)this->otherGoron)->unk_1E4 & 0x80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON))) {
this->actionFlags |= EN_S_GORO_ACTIONFLAG_GKQUIET_ACKNOWLEDGED;
this->animInfoIndex = EN_S_GORO_ANIM_ROLLUP;
@@ -1026,7 +1026,7 @@ void EnSGoro_SetupAction(EnSGoro* this, PlayState* play) {
if (Object_IsLoaded(&play->objectCtx, this->loadedObjIndex)) {
this->actionFlags = 0;
if (EN_S_GORO_OFTYPE_WSHRINE) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_04)) {
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_CALMED_GORON_ELDERS_SON)) {
this->actionFlags |= EN_S_GORO_ACTIONFLAG_GKQUIET_ACKNOWLEDGED;
this->actionFlags |= EN_S_GORO_ACTIONFLAG_EYESOPEN;
this->animInfoIndex = EN_S_GORO_ANIM_SHIVER_A;