mirror of
https://github.com/zeldaret/mm.git
synced 2025-02-21 14:00:48 +00:00
Animation Cleanup: En_C* and En_D* Actors (#1327)
* En_C cleanup * En_D * more cleanup * name enums * missed one * PR Review * remove padding
This commit is contained in:
parent
33ca9daece
commit
0cceee6eba
@ -30,6 +30,7 @@ typedef enum EnHyLimb {
|
||||
|
||||
//! TODO: Better animaion enum names when animations are documented
|
||||
typedef enum {
|
||||
/* -1 */ ENHY_ANIM_NONE = -1,
|
||||
/* 0 */ ENHY_ANIM_AOB_0,
|
||||
/* 1 */ ENHY_ANIM_BOJ_1,
|
||||
/* 2 */ ENHY_ANIM_BOJ_2,
|
||||
|
@ -11,28 +11,28 @@
|
||||
#include "objects/object_boj/object_boj.h"
|
||||
#include "objects/object_os_anime/object_os_anime.h"
|
||||
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &gMamamuYanUnusedIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_boj_Anim_001494, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_boj_Anim_001494, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
||||
{ &object_boj_Anim_001908, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_boj_Anim_001908, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
||||
{ &object_boj_Anim_0008C0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gBbaIdleHoldingBagAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_bji_Anim_000FDC, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_bji_Anim_000AB0, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
||||
{ &object_bji_Anim_00066C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_boj_Anim_00071C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_os_anime_Anim_001EE0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_boj_Anim_00DED8, 1.5f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &object_boj_Anim_00F920, 1.5f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &object_boj_Anim_00FC1C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_boj_Anim_00FEE4, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_boj_Anim_010330, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_boj_Anim_00FC1C, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
||||
{ &object_boj_Anim_00FEE4, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
||||
{ &object_boj_Anim_010330, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
||||
{ &object_boj_Anim_005D9C, 1.0f, 0, -1, ANIMMODE_LOOP, -8 },
|
||||
static AnimationInfoS sAnimationInfo[ENHY_ANIM_MAX] = {
|
||||
{ &gMamamuYanUnusedIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_AOB_0
|
||||
{ &object_boj_Anim_001494, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_BOJ_1
|
||||
{ &object_boj_Anim_001494, 1.0f, 0, -1, ANIMMODE_LOOP, -8 }, // ENHY_ANIM_BOJ_2
|
||||
{ &object_boj_Anim_001908, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_BOJ_3
|
||||
{ &object_boj_Anim_001908, 1.0f, 0, -1, ANIMMODE_LOOP, -8 }, // ENHY_ANIM_BOJ_4
|
||||
{ &object_boj_Anim_0008C0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_BOJ_5
|
||||
{ &gBbaIdleHoldingBagAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_BBA_6
|
||||
{ &object_bji_Anim_000FDC, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_BJI_7
|
||||
{ &object_bji_Anim_000AB0, 1.0f, 0, -1, ANIMMODE_LOOP, -8 }, // ENHY_ANIM_BJI_8
|
||||
{ &object_bji_Anim_00066C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_BJI_9
|
||||
{ &object_boj_Anim_00071C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_BOJ_10
|
||||
{ &object_os_anime_Anim_001EE0, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_OS_ANIME_11
|
||||
{ &object_boj_Anim_00DED8, 1.5f, 0, -1, ANIMMODE_ONCE, 0 }, // ENHY_ANIM_BOJ_12
|
||||
{ &object_boj_Anim_00F920, 1.5f, 0, -1, ANIMMODE_ONCE, 0 }, // ENHY_ANIM_BOJ_13
|
||||
{ &object_boj_Anim_00FC1C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_BOJ_14
|
||||
{ &object_boj_Anim_00FEE4, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_BOJ_15
|
||||
{ &object_boj_Anim_010330, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENHY_ANIM_BOJ_16
|
||||
{ &object_boj_Anim_00FC1C, 1.0f, 0, -1, ANIMMODE_LOOP, -8 }, // ENHY_ANIM_BOJ_17
|
||||
{ &object_boj_Anim_00FEE4, 1.0f, 0, -1, ANIMMODE_LOOP, -8 }, // ENHY_ANIM_BOJ_18
|
||||
{ &object_boj_Anim_010330, 1.0f, 0, -1, ANIMMODE_LOOP, -8 }, // ENHY_ANIM_BOJ_19
|
||||
{ &object_boj_Anim_005D9C, 1.0f, 0, -1, ANIMMODE_LOOP, -8 }, // ENHY_ANIM_BOJ_20
|
||||
};
|
||||
|
||||
s8 gEnHyLimbToBodyParts[ENHY_LIMB_MAX] = {
|
||||
@ -91,20 +91,20 @@ u8 gEnHyShadowSizes[ENHY_BODYPART_MAX] = {
|
||||
};
|
||||
|
||||
s32 EnHy_ChangeAnim(SkelAnime* skelAnime, s16 animIndex) {
|
||||
s16 frameCount;
|
||||
s32 isChanged = false;
|
||||
s16 endFrame;
|
||||
s32 didAnimChange = false;
|
||||
|
||||
if (animIndex >= ENHY_ANIM_AOB_0 && animIndex < ENHY_ANIM_MAX) {
|
||||
isChanged = true;
|
||||
frameCount = sAnimationInfo[animIndex].frameCount;
|
||||
if (frameCount < 0) {
|
||||
frameCount = Animation_GetLastFrame(&sAnimationInfo[animIndex].animation->common);
|
||||
if ((animIndex > ENHY_ANIM_NONE) && (animIndex < ENHY_ANIM_MAX)) {
|
||||
didAnimChange = true;
|
||||
endFrame = sAnimationInfo[animIndex].frameCount;
|
||||
if (endFrame < 0) {
|
||||
endFrame = Animation_GetLastFrame(&sAnimationInfo[animIndex].animation->common);
|
||||
}
|
||||
Animation_Change(skelAnime, sAnimationInfo[animIndex].animation, sAnimationInfo[animIndex].playSpeed,
|
||||
sAnimationInfo[animIndex].startFrame, frameCount, sAnimationInfo[animIndex].mode,
|
||||
sAnimationInfo[animIndex].startFrame, endFrame, sAnimationInfo[animIndex].mode,
|
||||
sAnimationInfo[animIndex].morphFrames);
|
||||
}
|
||||
return isChanged;
|
||||
return didAnimChange;
|
||||
}
|
||||
|
||||
EnDoor* EnHy_FindNearestDoor(Actor* actor, PlayState* play) {
|
||||
|
@ -26,11 +26,6 @@ void DmChar08_SetupAppearCs(DmChar08* this, PlayState* play);
|
||||
void func_80AAF884(DmChar08* this, PlayState* play);
|
||||
void func_80AAFB04(DmChar08* this, PlayState* play);
|
||||
void func_80AAFB94(DmChar08* this, PlayState* play);
|
||||
void DmChar08_HandleCutscene(DmChar08* this, PlayState* play);
|
||||
void func_80AB023C(DmChar08* this, PlayState* play);
|
||||
void DmChar08_UpdateAnim(DmChar08* this, PlayState* play);
|
||||
void DmChar08_SpawnBubbles(DmChar08* this, PlayState* play);
|
||||
void func_80AAFCCC(DmChar08* this, PlayState* play);
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ TURTLE_EYEMODE_BLINK_LEFT,
|
||||
@ -415,6 +410,9 @@ void func_80AAFCCC(DmChar08* this, PlayState* play) {
|
||||
this->unk_206 = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (this->unk_206) {
|
||||
@ -433,6 +431,9 @@ void func_80AAFCCC(DmChar08* this, PlayState* play) {
|
||||
this->unk_206 = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return;
|
||||
@ -453,8 +454,14 @@ void func_80AAFCCC(DmChar08* this, PlayState* play) {
|
||||
this->unk_206 = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -307,7 +307,7 @@ s32 func_808A0E28(DoorShutter* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void func_808A0F88(DoorShutter* this, PlayState* play) {
|
||||
@ -328,7 +328,7 @@ void func_808A0F88(DoorShutter* this, PlayState* play) {
|
||||
} else {
|
||||
CutsceneManager_Queue(this->csId);
|
||||
}
|
||||
} else if (func_808A0E28(this, play)) {
|
||||
} else if (func_808A0E28(this, play) != 0) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
player->doorType = PLAYER_DOORTYPE_TALKING;
|
||||
@ -483,7 +483,7 @@ void func_808A1548(DoorShutter* this, PlayState* play) {
|
||||
} else {
|
||||
CutsceneManager_Queue(this->csId);
|
||||
}
|
||||
} else if (func_808A0E28(this, play)) {
|
||||
} else if (func_808A0E28(this, play) != 0) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
player->doorType = PLAYER_DOORTYPE_TALKING;
|
||||
|
@ -195,6 +195,9 @@ void EnCne01_Talk(EnHy* this, PlayState* play) {
|
||||
this->actionFunc = this->prevActionFunc;
|
||||
this->prevActionFunc = NULL;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -60,9 +60,6 @@ ActorInit En_Col_Man_InitVars = {
|
||||
(ActorFunc)NULL,
|
||||
};
|
||||
|
||||
static Color_RGBA8 primColor = { 60, 50, 20, 255 };
|
||||
static Color_RGBA8 envColor = { 40, 30, 30, 255 };
|
||||
|
||||
void EnColMan_Init(Actor* thisx, PlayState* play) {
|
||||
EnColMan* this = THIS;
|
||||
|
||||
@ -77,10 +74,12 @@ void EnColMan_Init(Actor* thisx, PlayState* play) {
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 10.0f);
|
||||
func_80AFDD60(this);
|
||||
break;
|
||||
|
||||
case EN_COL_MAN_FALLING_ROCK:
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 10.0f);
|
||||
func_80AFDF60(this);
|
||||
break;
|
||||
|
||||
case EN_COL_MAN_CUTSCENE_BOMB:
|
||||
case EN_COL_MAN_GAMEPLAY_BOMB:
|
||||
func_80AFE234(this);
|
||||
@ -156,6 +155,8 @@ void func_80AFDF60(EnColMan* this) {
|
||||
}
|
||||
|
||||
void func_80AFDFB4(EnColMan* this, PlayState* play) {
|
||||
static Color_RGBA8 sPrimColor = { 60, 50, 20, 255 };
|
||||
static Color_RGBA8 sEnvColor = { 40, 30, 30, 255 };
|
||||
s32 i;
|
||||
Vec3f velocity;
|
||||
Vec3f accel;
|
||||
@ -180,7 +181,7 @@ void func_80AFDFB4(EnColMan* this, PlayState* play) {
|
||||
accel.z = 0.0f;
|
||||
accel.x = 0.0f;
|
||||
|
||||
func_800B0EB0(play, &this->actor.world.pos, &velocity, &accel, &primColor, &envColor,
|
||||
func_800B0EB0(play, &this->actor.world.pos, &velocity, &accel, &sPrimColor, &sEnvColor,
|
||||
Rand_ZeroFloat(50.0f) + 60.0f, 30, Rand_ZeroFloat(5.0f) + 20.0f);
|
||||
}
|
||||
|
||||
|
@ -127,13 +127,14 @@ void EnCow_Init(Actor* thisx, PlayState* play) {
|
||||
this->actor.world.pos.y, this->actor.world.pos.z, 0, this->actor.shape.rot.y, 0,
|
||||
EN_COW_TYPE_TAIL);
|
||||
|
||||
this->animationTimer = Rand_ZeroFloat(1000.0f) + 40.0f;
|
||||
this->animationCycle = 0;
|
||||
this->animTimer = Rand_ZeroFloat(1000.0f) + 40.0f;
|
||||
this->animCycle = 0;
|
||||
this->actor.targetMode = 6;
|
||||
|
||||
gHorsePlayedEponasSong = false;
|
||||
func_801A5080(4);
|
||||
break;
|
||||
|
||||
case EN_COW_TYPE_TAIL:
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gCowTailSkel, NULL, this->jointTable, this->morphTable,
|
||||
COW_TAIL_LIMB_MAX);
|
||||
@ -146,7 +147,10 @@ void EnCow_Init(Actor* thisx, PlayState* play) {
|
||||
EnCow_SetTailPos(this);
|
||||
|
||||
this->actor.flags &= ~ACTOR_FLAG_1;
|
||||
this->animationTimer = Rand_ZeroFloat(1000.0f) + 40.0f;
|
||||
this->animTimer = Rand_ZeroFloat(1000.0f) + 40.0f;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -167,10 +171,10 @@ void EnCow_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnCow_UpdateAnimation(EnCow* this, PlayState* play) {
|
||||
if (this->animationTimer > 0) {
|
||||
this->animationTimer--;
|
||||
if (this->animTimer > 0) {
|
||||
this->animTimer--;
|
||||
} else {
|
||||
this->animationTimer = Rand_ZeroFloat(500.0f) + 40.0f;
|
||||
this->animTimer = Rand_ZeroFloat(500.0f) + 40.0f;
|
||||
Animation_Change(&this->skelAnime, &gCowChewAnim, 1.0f, this->skelAnime.curFrame,
|
||||
Animation_GetLastFrame(&gCowChewAnim), ANIMMODE_ONCE, 1.0f);
|
||||
}
|
||||
@ -178,23 +182,23 @@ void EnCow_UpdateAnimation(EnCow* this, PlayState* play) {
|
||||
if (!(this->flags & EN_COW_FLAG_PLAYER_HAS_APPROACHED)) {
|
||||
this->flags |= EN_COW_FLAG_PLAYER_HAS_APPROACHED;
|
||||
if (this->skelAnime.animation == &gCowChewAnim) {
|
||||
this->animationTimer = 0;
|
||||
this->animTimer = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
this->animationCycle++;
|
||||
if (this->animationCycle > 0x30) {
|
||||
this->animationCycle = 0;
|
||||
this->animCycle++;
|
||||
if (this->animCycle > 0x30) {
|
||||
this->animCycle = 0;
|
||||
}
|
||||
|
||||
if (this->animationCycle < 0x20) {
|
||||
this->actor.scale.x = ((Math_SinS(this->animationCycle * 0x400) * (1.0f / 100.0f)) + 1.0f) * 0.01f;
|
||||
if (this->animCycle < 0x20) {
|
||||
this->actor.scale.x = ((Math_SinS(this->animCycle * 0x400) * (1.0f / 100.0f)) + 1.0f) * 0.01f;
|
||||
} else {
|
||||
this->actor.scale.x = 0.01f;
|
||||
}
|
||||
|
||||
if (this->animationCycle > 0x10) {
|
||||
this->actor.scale.y = ((Math_SinS((this->animationCycle * 0x400) - 0x4000) * (1.0f / 100.0f)) + 1.0f) * 0.01f;
|
||||
if (this->animCycle > 0x10) {
|
||||
this->actor.scale.y = ((Math_SinS((this->animCycle * 0x400) - 0x4000) * (1.0f / 100.0f)) + 1.0f) * 0.01f;
|
||||
} else {
|
||||
this->actor.scale.y = 0.01f;
|
||||
}
|
||||
@ -310,10 +314,10 @@ void EnCow_Idle(EnCow* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnCow_DoTail(EnCow* this, PlayState* play) {
|
||||
if (this->animationTimer > 0) {
|
||||
this->animationTimer--;
|
||||
if (this->animTimer > 0) {
|
||||
this->animTimer--;
|
||||
} else {
|
||||
this->animationTimer = Rand_ZeroFloat(200.0f) + 40.0f;
|
||||
this->animTimer = Rand_ZeroFloat(200.0f) + 40.0f;
|
||||
Animation_Change(&this->skelAnime, &gCowTailIdleAnim, 1.0f, this->skelAnime.curFrame,
|
||||
Animation_GetLastFrame(&gCowTailIdleAnim), ANIMMODE_ONCE, 1.0f);
|
||||
}
|
||||
@ -323,7 +327,7 @@ void EnCow_DoTail(EnCow* this, PlayState* play) {
|
||||
if (!(this->flags & EN_COW_FLAG_PLAYER_HAS_APPROACHED)) {
|
||||
this->flags |= EN_COW_FLAG_PLAYER_HAS_APPROACHED;
|
||||
if (this->skelAnime.animation == &gCowTailIdleAnim) {
|
||||
this->animationTimer = 0;
|
||||
this->animTimer = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,8 +27,8 @@ typedef struct EnCow {
|
||||
/* 0x0244 */ Vec3s morphTable[COW_LIMB_MAX];
|
||||
/* 0x0268 */ Vec3s headTilt;
|
||||
/* 0x026E */ u16 flags;
|
||||
/* 0x0270 */ u16 animationTimer;
|
||||
/* 0x0272 */ u16 animationCycle;
|
||||
/* 0x0270 */ u16 animTimer;
|
||||
/* 0x0272 */ u16 animCycle;
|
||||
/* 0x0274 */ EnCowActionFunc actionFunc;
|
||||
} EnCow; // size = 0x278
|
||||
|
||||
|
@ -159,11 +159,11 @@ void EnCrow_SetupFlyIdle(EnCrow* this) {
|
||||
void EnCrow_FlyIdle(EnCrow* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
f32 dist;
|
||||
s32 onInitialAnimFrame;
|
||||
s32 onAnimFirstFrame;
|
||||
s16 yaw;
|
||||
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
onInitialAnimFrame = Animation_OnFrame(&this->skelAnime, 0.0f);
|
||||
onAnimFirstFrame = Animation_OnFrame(&this->skelAnime, 0.0f);
|
||||
this->actor.speed = (Rand_ZeroOne() * 1.5f) + 3.0f;
|
||||
|
||||
if ((this->actor.parent != NULL) && (this->actor.parent->home.rot.z == 0)) {
|
||||
@ -181,7 +181,7 @@ void EnCrow_FlyIdle(EnCrow* this, PlayState* play) {
|
||||
this->yawTarget = Actor_WorldYawTowardPoint(&this->actor, &this->actor.home.pos);
|
||||
}
|
||||
|
||||
if ((Math_SmoothStepToS(&this->actor.shape.rot.y, this->yawTarget, 5, 0x300, 0x10) == 0) && onInitialAnimFrame &&
|
||||
if ((Math_SmoothStepToS(&this->actor.shape.rot.y, this->yawTarget, 5, 0x300, 0x10) == 0) && onAnimFirstFrame &&
|
||||
(Rand_ZeroOne() < 0.1f)) {
|
||||
|
||||
yaw = (Actor_WorldYawTowardPoint(&this->actor, &this->actor.home.pos) - this->actor.shape.rot.y);
|
||||
@ -201,7 +201,7 @@ void EnCrow_FlyIdle(EnCrow* this, PlayState* play) {
|
||||
this->pitchTarget = Rand_S16Offset(0x800, 0x800);
|
||||
}
|
||||
|
||||
if ((Math_SmoothStepToS(&this->actor.shape.rot.x, this->pitchTarget, 0xA, 0x100, 8) == 0) && onInitialAnimFrame &&
|
||||
if (!Math_SmoothStepToS(&this->actor.shape.rot.x, this->pitchTarget, 0xA, 0x100, 8) && onAnimFirstFrame &&
|
||||
(Rand_ZeroOne() < 0.1f)) {
|
||||
if (this->actor.home.pos.y < this->actor.world.pos.y) {
|
||||
this->pitchTarget -= Rand_S16Offset(0x400, 0x400);
|
||||
|
@ -5,7 +5,6 @@
|
||||
*/
|
||||
|
||||
#include "z_en_dai.h"
|
||||
#include "objects/object_dai/object_dai.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8 | ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_2000000)
|
||||
|
||||
@ -127,50 +126,64 @@ s32 func_80B3E5B4(EnDai* this, PlayState* play) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 func_80B3E5DC(EnDai* this, s32 arg1) {
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &object_dai_Anim_0079E4, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_dai_Anim_0079E4, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_dai_Anim_007354, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_dai_Anim_000CEC, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_dai_Anim_0069DC, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_dai_Anim_00563C, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &object_dai_Anim_00563C, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_dai_Anim_002E58, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_dai_Anim_006590, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
};
|
||||
typedef enum {
|
||||
/* -1 */ ENDAI_ANIM_NONE = -1,
|
||||
/* 0 */ ENDAI_ANIM_0,
|
||||
/* 1 */ ENDAI_ANIM_1,
|
||||
/* 2 */ ENDAI_ANIM_2,
|
||||
/* 3 */ ENDAI_ANIM_3,
|
||||
/* 4 */ ENDAI_ANIM_4,
|
||||
/* 5 */ ENDAI_ANIM_5,
|
||||
/* 6 */ ENDAI_ANIM_6,
|
||||
/* 7 */ ENDAI_ANIM_7,
|
||||
/* 8 */ ENDAI_ANIM_8,
|
||||
/* 9 */ ENDAI_ANIM_MAX
|
||||
} EnDaiAnimation;
|
||||
|
||||
s32 phi_v1 = false;
|
||||
s32 ret = false;
|
||||
static AnimationInfoS sAnimationInfo[ENDAI_ANIM_MAX] = {
|
||||
{ &object_dai_Anim_0079E4, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENDAI_ANIM_0
|
||||
{ &object_dai_Anim_0079E4, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDAI_ANIM_1
|
||||
{ &object_dai_Anim_007354, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDAI_ANIM_2
|
||||
{ &object_dai_Anim_000CEC, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDAI_ANIM_3
|
||||
{ &object_dai_Anim_0069DC, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDAI_ANIM_4
|
||||
{ &object_dai_Anim_00563C, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // ENDAI_ANIM_5
|
||||
{ &object_dai_Anim_00563C, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDAI_ANIM_6
|
||||
{ &object_dai_Anim_002E58, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDAI_ANIM_7
|
||||
{ &object_dai_Anim_006590, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDAI_ANIM_8
|
||||
};
|
||||
|
||||
switch (arg1) {
|
||||
case 0:
|
||||
case 1:
|
||||
if ((this->unk_A70 != 0) && (this->unk_A70 != 1)) {
|
||||
phi_v1 = true;
|
||||
s32 EnDai_ChangeAnim(EnDai* this, s32 animIndex) {
|
||||
s32 changeAnim = false;
|
||||
s32 didAnimChange = false;
|
||||
|
||||
switch (animIndex) {
|
||||
case ENDAI_ANIM_0:
|
||||
case ENDAI_ANIM_1:
|
||||
if ((this->animIndex != ENDAI_ANIM_0) && (this->animIndex != ENDAI_ANIM_1)) {
|
||||
changeAnim = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
case 6:
|
||||
if ((this->unk_A70 != 5) && (this->unk_A70 != 6)) {
|
||||
phi_v1 = true;
|
||||
case ENDAI_ANIM_5:
|
||||
case ENDAI_ANIM_6:
|
||||
if ((this->animIndex != ENDAI_ANIM_5) && (this->animIndex != ENDAI_ANIM_6)) {
|
||||
changeAnim = true;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (arg1 != this->unk_A70) {
|
||||
phi_v1 = true;
|
||||
if (this->animIndex != animIndex) {
|
||||
changeAnim = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (phi_v1) {
|
||||
this->unk_A70 = arg1;
|
||||
ret = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, arg1);
|
||||
if (changeAnim) {
|
||||
this->animIndex = animIndex;
|
||||
didAnimChange = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, animIndex);
|
||||
}
|
||||
|
||||
return ret;
|
||||
return didAnimChange;
|
||||
}
|
||||
|
||||
s32 func_80B3E69C(EnDai* this, PlayState* play) {
|
||||
@ -239,19 +252,19 @@ static s32 D_80B3FC8C[] = {
|
||||
0x920C0F0C, 0x930C1211, 0x5520100E, 0x0C940C12, 0x10000000,
|
||||
};
|
||||
|
||||
static f32 D_80B3FCB4[] = {
|
||||
1.0f, 6.0f, 16.0f, 19.0f, 46.0f, 48.0f, 50.0f, 52.0f, 54.0f, 1.0f, 6.0f, 36.0f,
|
||||
};
|
||||
|
||||
static f32 D_80B3FCE4[] = {
|
||||
5.0f, 15.0f, 18.0f, 45.0f, 47.0f, 49.0f, 51.0f, 53.0f, 55.0f, 5.0f, 35.0f, 45.0f,
|
||||
};
|
||||
|
||||
static s16 D_80B3FD14[] = {
|
||||
4, 5, 2, 0, 4, 5, 2, 5, 4, 4, 5, 2,
|
||||
};
|
||||
|
||||
s16 func_80B3E8BC(EnDai* this, s32 cueId) {
|
||||
static f32 D_80B3FCB4[] = {
|
||||
1.0f, 6.0f, 16.0f, 19.0f, 46.0f, 48.0f, 50.0f, 52.0f, 54.0f, 1.0f, 6.0f, 36.0f,
|
||||
};
|
||||
|
||||
static f32 D_80B3FCE4[] = {
|
||||
5.0f, 15.0f, 18.0f, 45.0f, 47.0f, 49.0f, 51.0f, 53.0f, 55.0f, 5.0f, 35.0f, 45.0f,
|
||||
};
|
||||
|
||||
static s16 D_80B3FD14[] = {
|
||||
4, 5, 2, 0, 4, 5, 2, 5, 4, 4, 5, 2,
|
||||
};
|
||||
|
||||
s32 i;
|
||||
s32 end;
|
||||
|
||||
@ -266,7 +279,7 @@ s16 func_80B3E8BC(EnDai* this, s32 cueId) {
|
||||
}
|
||||
|
||||
while (i < end) {
|
||||
if ((D_80B3FCB4[i] <= this->skelAnime.curFrame) && (D_80B3FCE4[i] >= this->skelAnime.curFrame)) {
|
||||
if ((this->skelAnime.curFrame >= D_80B3FCB4[i]) && (this->skelAnime.curFrame <= D_80B3FCE4[i])) {
|
||||
return D_80B3FD14[i];
|
||||
}
|
||||
i++;
|
||||
@ -285,7 +298,7 @@ s32 func_80B3E96C(EnDai* this, PlayState* play) {
|
||||
((this->unk_1DC == 0) || Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame))) {
|
||||
switch (this->unk_1DC) {
|
||||
case 0:
|
||||
func_80B3E5DC(this, 2);
|
||||
EnDai_ChangeAnim(this, ENDAI_ANIM_2);
|
||||
this->unk_1DC++;
|
||||
break;
|
||||
|
||||
@ -293,22 +306,25 @@ s32 func_80B3E96C(EnDai* this, PlayState* play) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EV_SNOWSTORM_HARD);
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_WEATHER_TAG, this->actor.world.pos.x,
|
||||
this->actor.world.pos.y, this->actor.world.pos.z, 0x1388, 0x708, 0x3E8, 0);
|
||||
func_80B3E5DC(this, 3);
|
||||
EnDai_ChangeAnim(this, ENDAI_ANIM_3);
|
||||
this->unk_1DC++;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
func_80B3E5DC(this, 4);
|
||||
EnDai_ChangeAnim(this, ENDAI_ANIM_4);
|
||||
this->unk_1DC++;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_80B3E5DC(this, 1);
|
||||
EnDai_ChangeAnim(this, ENDAI_ANIM_1);
|
||||
this->unk_1F0 = D_80B3FBF0;
|
||||
this->unk_1FC = D_80B3FBF0;
|
||||
this->unk_1DC = 0;
|
||||
this->unk_1DA = Rand_S16Offset(20, 20);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (this->unk_1DC == 2) {
|
||||
sp50.x = sp50.y = 0.0f;
|
||||
@ -336,30 +352,30 @@ void func_80B3EC10(f32 arg0, Vec3f arg1, f32 arg2, Vec3f arg3, f32 arg4, Vec3f*
|
||||
arg5->z = ((arg3.z - arg1.z) * temp_f0) + arg1.z;
|
||||
}
|
||||
|
||||
static f32 D_80B3FD2C[] = {
|
||||
6.0f, 11.0f, 15.0f, 0.0f, 12.0f, 17.0f, 0.0f, 3.0f,
|
||||
};
|
||||
|
||||
static f32 D_80B3FD4C[] = {
|
||||
8.0f, 15.0f, 24.0f, 4.0f, 17.0f, 26.0f, 3.0f, 7.0f,
|
||||
};
|
||||
|
||||
static s16 D_80B3FD6C[] = {
|
||||
1, 1, 1, 2, 2, 2, 3, 3,
|
||||
};
|
||||
|
||||
static Vec3f D_80B3FD7C[] = {
|
||||
{ 1.0f, 1.0f, 1.0f }, { 1.0f, 0.8f, 0.8f }, { 1.0f, 1.1f, 1.1f }, { 1.0f, 1.3f, 1.3f }, { 1.0f, 0.7f, 0.9f },
|
||||
{ 1.0f, 0.8f, 0.9f }, { 1.0f, 0.7f, 0.9f }, { 1.0f, 0.8f, 0.9f }, { 1.0f, 1.0f, 1.0f },
|
||||
};
|
||||
|
||||
s32 func_80B3EC84(EnDai* this) {
|
||||
static f32 D_80B3FD2C[] = {
|
||||
6.0f, 11.0f, 15.0f, 0.0f, 12.0f, 17.0f, 0.0f, 3.0f,
|
||||
};
|
||||
|
||||
static f32 D_80B3FD4C[] = {
|
||||
8.0f, 15.0f, 24.0f, 4.0f, 17.0f, 26.0f, 3.0f, 7.0f,
|
||||
};
|
||||
|
||||
static s16 D_80B3FD6C[] = {
|
||||
1, 1, 1, 2, 2, 2, 3, 3,
|
||||
};
|
||||
|
||||
static Vec3f D_80B3FD7C[] = {
|
||||
{ 1.0f, 1.0f, 1.0f }, { 1.0f, 0.8f, 0.8f }, { 1.0f, 1.1f, 1.1f }, { 1.0f, 1.3f, 1.3f }, { 1.0f, 0.7f, 0.9f },
|
||||
{ 1.0f, 0.8f, 0.9f }, { 1.0f, 0.7f, 0.9f }, { 1.0f, 0.8f, 0.9f }, { 1.0f, 1.0f, 1.0f },
|
||||
};
|
||||
|
||||
s32 i;
|
||||
s32 ret = false;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(D_80B3FD6C); i++) {
|
||||
if ((this->unk_1DC == D_80B3FD6C[i]) && (D_80B3FD2C[i] < this->skelAnime.curFrame) &&
|
||||
(D_80B3FD4C[i] >= this->skelAnime.curFrame)) {
|
||||
if ((this->unk_1DC == D_80B3FD6C[i]) && (this->skelAnime.curFrame > D_80B3FD2C[i]) &&
|
||||
(this->skelAnime.curFrame <= D_80B3FD4C[i])) {
|
||||
func_80B3EC10(D_80B3FD2C[i], D_80B3FD7C[i], D_80B3FD4C[i], D_80B3FD7C[i + 1], this->skelAnime.curFrame,
|
||||
&this->unk_1F0);
|
||||
ret = true;
|
||||
@ -370,20 +386,20 @@ s32 func_80B3EC84(EnDai* this) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
static f32 D_80B3FDE8[] = { 22.0f, 0.0f, 0.0f };
|
||||
|
||||
static f32 D_80B3FDF4[] = { 29.0f, 3.0f, 9.0f };
|
||||
|
||||
static s16 D_80B3FE00[] = { 1, 2, 3 };
|
||||
|
||||
static Vec3f D_80B3FE08[] = {
|
||||
{ 1.0f, 1.0f, 1.0f },
|
||||
{ 1.0f, 1.2f, 1.2f },
|
||||
{ 1.0f, 0.7f, 0.8f },
|
||||
{ 1.0f, 1.0f, 1.0f },
|
||||
};
|
||||
|
||||
s32 func_80B3ED88(EnDai* this) {
|
||||
static f32 D_80B3FDE8[] = { 22.0f, 0.0f, 0.0f };
|
||||
|
||||
static f32 D_80B3FDF4[] = { 29.0f, 3.0f, 9.0f };
|
||||
|
||||
static s16 D_80B3FE00[] = { 1, 2, 3 };
|
||||
|
||||
static Vec3f D_80B3FE08[] = {
|
||||
{ 1.0f, 1.0f, 1.0f },
|
||||
{ 1.0f, 1.2f, 1.2f },
|
||||
{ 1.0f, 0.7f, 0.8f },
|
||||
{ 1.0f, 1.0f, 1.0f },
|
||||
};
|
||||
|
||||
s32 i;
|
||||
s32 ret = false;
|
||||
|
||||
@ -415,7 +431,7 @@ void func_80B3EEDC(EnDai* this, PlayState* play) {
|
||||
|
||||
if ((player->transformation == PLAYER_FORM_GORON) && (play->msgCtx.ocarinaMode == 3) &&
|
||||
(play->msgCtx.lastPlayedSong == OCARINA_SONG_GORON_LULLABY)) {
|
||||
func_80B3E5DC(this, 1);
|
||||
EnDai_ChangeAnim(this, ENDAI_ANIM_1);
|
||||
this->actionFunc = func_80B3EE8C;
|
||||
} else if (!(player->stateFlags2 & PLAYER_STATE2_8000000)) {
|
||||
func_80B3E96C(this, play);
|
||||
@ -440,9 +456,9 @@ void func_80B3F00C(EnDai* this, PlayState* play) {
|
||||
Math_ApproachS(&this->actor.shape.rot.y, this->actor.world.rot.y, 3, 0x2AA8);
|
||||
}
|
||||
|
||||
void func_80B3F044(EnDai* this, PlayState* play) {
|
||||
static s32 D_80B3FE38[] = {
|
||||
0, 0, 6, 7, 8,
|
||||
void EnDai_HandleCutscene(EnDai* this, PlayState* play) {
|
||||
static s32 sCsAnimIndex[] = {
|
||||
ENDAI_ANIM_0, ENDAI_ANIM_0, ENDAI_ANIM_6, ENDAI_ANIM_7, ENDAI_ANIM_8,
|
||||
};
|
||||
s32 cueChannel = 0;
|
||||
s32 cueId;
|
||||
@ -451,7 +467,7 @@ void func_80B3F044(EnDai* this, PlayState* play) {
|
||||
cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_472);
|
||||
cueId = play->csCtx.actorCues[cueChannel]->id;
|
||||
if (this->cueId != (u8)cueId) {
|
||||
func_80B3E5DC(this, D_80B3FE38[cueId]);
|
||||
EnDai_ChangeAnim(this, sCsAnimIndex[cueId]);
|
||||
switch (cueId) {
|
||||
case 1:
|
||||
this->unk_1E0 = 0.0f;
|
||||
@ -464,6 +480,9 @@ void func_80B3F044(EnDai* this, PlayState* play) {
|
||||
case 3:
|
||||
this->unk_1CE &= ~0x80;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
this->cueId = cueId;
|
||||
@ -505,6 +524,9 @@ void func_80B3F044(EnDai* this, PlayState* play) {
|
||||
}
|
||||
this->unk_1D6 = func_80B3E8BC(this, this->cueId);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel);
|
||||
@ -514,9 +536,10 @@ void EnDai_Init(Actor* thisx, PlayState* play) {
|
||||
EnDai* this = THIS;
|
||||
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 0.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_dai_Skel_0130D0, NULL, this->jointTable, this->morphTable, 19);
|
||||
this->unk_A70 = -1;
|
||||
func_80B3E5DC(this, 0);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_dai_Skel_0130D0, NULL, this->jointTable, this->morphTable,
|
||||
OBJECT_DAI_LIMB_MAX);
|
||||
this->animIndex = ENDAI_ANIM_NONE;
|
||||
EnDai_ChangeAnim(this, ENDAI_ANIM_0);
|
||||
Actor_SetScale(&this->actor, 0.2f);
|
||||
this->actor.targetMode = 10;
|
||||
this->unk_1F0 = D_80B3FBF0;
|
||||
@ -553,7 +576,7 @@ void EnDai_Update(Actor* thisx, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if (!func_80B3E7C8(this, play) && func_80B3E69C(this, play)) {
|
||||
func_80B3F044(this, play);
|
||||
EnDai_HandleCutscene(this, play);
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
func_80B3E834(this);
|
||||
func_80B3E460(this);
|
||||
@ -578,11 +601,11 @@ s32 EnDai_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
||||
*dList = NULL;
|
||||
}
|
||||
|
||||
if (limbIndex == 11) {
|
||||
if (limbIndex == OBJECT_DAI_LIMB_0B) {
|
||||
Matrix_MultVec3f(&gZeroVec3f, &this->unk_1E4);
|
||||
}
|
||||
|
||||
if (limbIndex == 10) {
|
||||
if (limbIndex == OBJECT_DAI_LIMB_0A) {
|
||||
*dList = NULL;
|
||||
}
|
||||
|
||||
@ -597,7 +620,7 @@ void EnDai_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
||||
MtxF sp24;
|
||||
|
||||
switch (limbIndex) {
|
||||
case 11:
|
||||
case OBJECT_DAI_LIMB_0B:
|
||||
D_80B3FE4C.x = sREG(0);
|
||||
D_80B3FE4C.y = sREG(1);
|
||||
D_80B3FE4C.z = sREG(2);
|
||||
@ -608,9 +631,12 @@ void EnDai_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
||||
this->unk_1D4 = BINANG_SUB(sp64.y, 0x4000);
|
||||
break;
|
||||
|
||||
case 10:
|
||||
case OBJECT_DAI_LIMB_0A:
|
||||
Matrix_Get(&this->unk_18C);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -618,19 +644,22 @@ void EnDai_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx, Gfx**
|
||||
EnDai* this = THIS;
|
||||
|
||||
switch (limbIndex) {
|
||||
case 9:
|
||||
case OBJECT_DAI_LIMB_09:
|
||||
if (this->unk_1CE & 0x100) {
|
||||
func_80B3EC84(this);
|
||||
}
|
||||
Matrix_Scale(this->unk_1F0.x, this->unk_1F0.y, this->unk_1F0.z, MTXMODE_APPLY);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case OBJECT_DAI_LIMB_02:
|
||||
if (this->unk_1CE & 0x100) {
|
||||
func_80B3ED88(this);
|
||||
}
|
||||
Matrix_Scale(this->unk_1FC.x, this->unk_1FC.y, this->unk_1FC.z, MTXMODE_APPLY);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -677,7 +706,6 @@ void func_80B3F920(EnDai* this, PlayState* play) {
|
||||
object_dai_Tex_0107B0, object_dai_Tex_010FB0, object_dai_Tex_0117B0,
|
||||
object_dai_Tex_010FB0, object_dai_Tex_011FB0, object_dai_Tex_0127B0,
|
||||
};
|
||||
|
||||
s32 pad;
|
||||
|
||||
this->unk_1CE |= 0x40;
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define Z_EN_DAI_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_dai/object_dai.h"
|
||||
|
||||
struct EnDai;
|
||||
|
||||
@ -39,11 +40,11 @@ typedef struct EnDai {
|
||||
/* 0x1E4 */ Vec3f unk_1E4;
|
||||
/* 0x1F0 */ Vec3f unk_1F0;
|
||||
/* 0x1FC */ Vec3f unk_1FC;
|
||||
/* 0x208 */ Vec3s jointTable[19];
|
||||
/* 0x27A */ Vec3s morphTable[19];
|
||||
/* 0x208 */ Vec3s jointTable[OBJECT_DAI_LIMB_MAX];
|
||||
/* 0x27A */ Vec3s morphTable[OBJECT_DAI_LIMB_MAX];
|
||||
/* 0x2EC */ EnDaiEffect effects[EN_DAI_EFFECT_COUNT];
|
||||
/* 0xA6C */ s32 unk_A6C;
|
||||
/* 0xA70 */ s32 unk_A70;
|
||||
/* 0xA70 */ s32 animIndex;
|
||||
} EnDai; // size = 0xA74
|
||||
|
||||
#endif // Z_EN_DAI_H
|
||||
|
@ -5,7 +5,6 @@
|
||||
*/
|
||||
|
||||
#include "z_en_daiku.h"
|
||||
#include "objects/object_daiku/object_daiku.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8)
|
||||
|
||||
@ -57,15 +56,42 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
{ 20, 60, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
static AnimationHeader* sAnimations[] = {
|
||||
&object_daiku_Anim_002FA0, &object_daiku_Anim_00ACD0, &object_daiku_Anim_00C92C,
|
||||
&object_daiku_Anim_000C44, &object_daiku_Anim_00C234, &object_daiku_Anim_000600,
|
||||
&object_daiku_Anim_001114, &object_daiku_Anim_00B690, &object_daiku_Anim_00BEAC,
|
||||
typedef enum {
|
||||
/* -1 */ ENDAIKU_ANIM_NONE = -1,
|
||||
/* 0 */ ENDAIKU_ANIM_0,
|
||||
/* 1 */ ENDAIKU_ANIM_1,
|
||||
/* 2 */ ENDAIKU_ANIM_2,
|
||||
/* 3 */ ENDAIKU_ANIM_3,
|
||||
/* 4 */ ENDAIKU_ANIM_4,
|
||||
/* 5 */ ENDAIKU_ANIM_5,
|
||||
/* 6 */ ENDAIKU_ANIM_6,
|
||||
/* 7 */ ENDAIKU_ANIM_7,
|
||||
/* 8 */ ENDAIKU_ANIM_8,
|
||||
/* 9 */ ENDAIKU_ANIM_MAX
|
||||
} EnDaiAnimation;
|
||||
|
||||
static AnimationHeader* sAnimations[ENDAIKU_ANIM_MAX] = {
|
||||
&object_daiku_Anim_002FA0, // ENDAIKU_ANIM_0
|
||||
&object_daiku_Anim_00ACD0, // ENDAIKU_ANIM_1
|
||||
&object_daiku_Anim_00C92C, // ENDAIKU_ANIM_2
|
||||
&object_daiku_Anim_000C44, // ENDAIKU_ANIM_3
|
||||
&object_daiku_Anim_00C234, // ENDAIKU_ANIM_4
|
||||
&object_daiku_Anim_000600, // ENDAIKU_ANIM_5
|
||||
&object_daiku_Anim_001114, // ENDAIKU_ANIM_6
|
||||
&object_daiku_Anim_00B690, // ENDAIKU_ANIM_7
|
||||
&object_daiku_Anim_00BEAC, // ENDAIKU_ANIM_8
|
||||
};
|
||||
|
||||
static u8 sAnimationModes[] = {
|
||||
ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_ONCE,
|
||||
ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_ONCE, ANIMMODE_ONCE,
|
||||
static u8 sAnimationModes[ENDAIKU_ANIM_MAX] = {
|
||||
ANIMMODE_LOOP, // ENDAIKU_ANIM_0
|
||||
ANIMMODE_LOOP, // ENDAIKU_ANIM_1
|
||||
ANIMMODE_LOOP, // ENDAIKU_ANIM_2
|
||||
ANIMMODE_LOOP, // ENDAIKU_ANIM_3
|
||||
ANIMMODE_ONCE, // ENDAIKU_ANIM_4
|
||||
ANIMMODE_LOOP, // ENDAIKU_ANIM_5
|
||||
ANIMMODE_LOOP, // ENDAIKU_ANIM_6
|
||||
ANIMMODE_ONCE, // ENDAIKU_ANIM_7
|
||||
ANIMMODE_ONCE, // ENDAIKU_ANIM_8
|
||||
};
|
||||
|
||||
void EnDaiku_Init(Actor* thisx, PlayState* play) {
|
||||
@ -105,17 +131,20 @@ void EnDaiku_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
case ENDAIKU_PARAM_FF_1:
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_daiku_Skel_00A850, &object_daiku_Anim_002FA0,
|
||||
this->jointTable, this->morphTable, 17);
|
||||
this->jointTable, this->morphTable, OBJECT_DAIKU_LIMB_MAX);
|
||||
break;
|
||||
|
||||
case ENDAIKU_PARAM_FF_2:
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_daiku_Skel_00A850, &object_daiku_Anim_00B690,
|
||||
this->jointTable, this->morphTable, 17);
|
||||
this->jointTable, this->morphTable, OBJECT_DAIKU_LIMB_MAX);
|
||||
break;
|
||||
|
||||
case ENDAIKU_PARAM_FF_3:
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_daiku_Skel_00A850, &object_daiku_Anim_001114,
|
||||
this->jointTable, this->morphTable, 17);
|
||||
this->jointTable, this->morphTable, OBJECT_DAIKU_LIMB_MAX);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -128,9 +157,10 @@ void EnDaiku_Destroy(Actor* thisx, PlayState* play) {
|
||||
Collider_DestroyCylinder(play, &this->collider);
|
||||
}
|
||||
|
||||
void func_8094373C(EnDaiku* this, s32 arg1) {
|
||||
this->unk_284 = Animation_GetLastFrame(sAnimations[arg1]);
|
||||
Animation_Change(&this->skelAnime, sAnimations[arg1], 1.0f, 0.0f, this->unk_284, sAnimationModes[arg1], -4.0f);
|
||||
void EnDaiku_ChangeAnim(EnDaiku* this, s32 animIndex) {
|
||||
this->animEndFrame = Animation_GetLastFrame(sAnimations[animIndex]);
|
||||
Animation_Change(&this->skelAnime, sAnimations[animIndex], 1.0f, 0.0f, this->animEndFrame,
|
||||
sAnimationModes[animIndex], -4.0f);
|
||||
}
|
||||
|
||||
void func_809437C8(EnDaiku* this) {
|
||||
@ -147,15 +177,18 @@ void func_80943820(EnDaiku* this) {
|
||||
switch (this->unk_278) {
|
||||
case 0:
|
||||
case 1:
|
||||
func_8094373C(this, 0);
|
||||
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_0);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
func_8094373C(this, 7);
|
||||
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_7);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_8094373C(this, 6);
|
||||
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_6);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@ -167,7 +200,7 @@ void func_80943820(EnDaiku* this) {
|
||||
}
|
||||
|
||||
void func_809438F8(EnDaiku* this, PlayState* play) {
|
||||
f32 currentFrame = this->skelAnime.curFrame;
|
||||
f32 curFrame = this->skelAnime.curFrame;
|
||||
s32 pad;
|
||||
s32 day = gSaveContext.save.day - 1;
|
||||
s32 pad2;
|
||||
@ -188,11 +221,11 @@ void func_809438F8(EnDaiku* this, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((this->unk_278 == ENDAIKU_PARAM_FF_2) && (this->unk_284 <= currentFrame)) {
|
||||
if ((this->unk_278 == ENDAIKU_PARAM_FF_2) && (curFrame >= this->animEndFrame)) {
|
||||
if (Rand_ZeroOne() < 0.5f) {
|
||||
func_8094373C(this, 7);
|
||||
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_7);
|
||||
} else {
|
||||
func_8094373C(this, 8);
|
||||
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_8);
|
||||
}
|
||||
}
|
||||
|
||||
@ -235,13 +268,13 @@ void func_80943BC0(EnDaiku* this) {
|
||||
}
|
||||
|
||||
void func_80943BDC(EnDaiku* this, PlayState* play) {
|
||||
f32 currentFrame = this->skelAnime.curFrame;
|
||||
f32 curFrame = this->skelAnime.curFrame;
|
||||
|
||||
if ((this->unk_278 == ENDAIKU_PARAM_FF_2) && (this->unk_284 <= currentFrame)) {
|
||||
if ((this->unk_278 == ENDAIKU_PARAM_FF_2) && (curFrame >= this->animEndFrame)) {
|
||||
if (Rand_ZeroOne() < 0.5f) {
|
||||
func_8094373C(this, 7);
|
||||
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_7);
|
||||
} else {
|
||||
func_8094373C(this, 8);
|
||||
EnDaiku_ChangeAnim(this, ENDAIKU_ANIM_8);
|
||||
}
|
||||
}
|
||||
|
||||
@ -291,7 +324,7 @@ void EnDaiku_Update(Actor* thisx, PlayState* play) {
|
||||
s32 EnDaiku_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnDaiku* this = THIS;
|
||||
|
||||
if (limbIndex == 15) {
|
||||
if (limbIndex == OBJECT_DAIKU_LIMB_0F) {
|
||||
rot->x += this->unk_260;
|
||||
rot->z += this->unk_25E;
|
||||
}
|
||||
@ -310,11 +343,11 @@ void EnDaiku_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
if (limbIndex == 15) {
|
||||
if (limbIndex == OBJECT_DAIKU_LIMB_0F) {
|
||||
gSPDisplayList(POLY_OPA_DISP++, D_809440D4[this->unk_278]);
|
||||
}
|
||||
|
||||
if ((this->unk_278 == ENDAIKU_PARAM_FF_3) && (limbIndex == 8)) {
|
||||
if ((this->unk_278 == ENDAIKU_PARAM_FF_3) && (limbIndex == OBJECT_DAIKU_LIMB_08)) {
|
||||
gSPDisplayList(POLY_OPA_DISP++, object_daiku_DL_008EC8);
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define Z_EN_DAIKU_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_daiku/object_daiku.h"
|
||||
|
||||
struct EnDaiku;
|
||||
|
||||
@ -22,8 +23,8 @@ typedef enum {
|
||||
typedef struct EnDaiku {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ SkelAnime skelAnime;
|
||||
/* 0x188 */ Vec3s jointTable[17];
|
||||
/* 0x1EE */ Vec3s morphTable[17];
|
||||
/* 0x188 */ Vec3s jointTable[OBJECT_DAIKU_LIMB_MAX];
|
||||
/* 0x1EE */ Vec3s morphTable[OBJECT_DAIKU_LIMB_MAX];
|
||||
/* 0x254 */ EnDaikuActionFunc actionFunc;
|
||||
/* 0x258 */ Path* path;
|
||||
/* 0x25C */ s16 unk_25C;
|
||||
@ -39,7 +40,7 @@ typedef struct EnDaiku {
|
||||
/* 0x27E */ s16 unk_27E;
|
||||
/* 0x280 */ s16 unk_280;
|
||||
/* 0x282 */ s16 unk_282;
|
||||
/* 0x284 */ f32 unk_284;
|
||||
/* 0x284 */ f32 animEndFrame;
|
||||
/* 0x288 */ s16 pathIndex;
|
||||
/* 0x28A */ s16 unk_28A;
|
||||
/* 0x28C */ s16 unk_28C;
|
||||
|
@ -83,7 +83,7 @@ void EnDaiku2_Init(Actor* thisx, PlayState* play) {
|
||||
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 40.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_daiku_Skel_00A850, &object_daiku_Anim_002FA0, this->jointTable,
|
||||
this->morphTable, 17);
|
||||
this->morphTable, OBJECT_DAIKU_LIMB_MAX);
|
||||
this->actor.targetMode = 0;
|
||||
Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
|
||||
this->unk_278 = ENDAIKU2_GET_7F(&this->actor);
|
||||
@ -120,25 +120,61 @@ void EnDaiku2_Destroy(Actor* thisx, PlayState* play) {
|
||||
Collider_DestroyCylinder(play, &this->collider);
|
||||
}
|
||||
|
||||
void func_80BE6408(EnDaiku2* this, s32 arg1) {
|
||||
static AnimationHeader* sAnimations[] = {
|
||||
&object_daiku_Anim_002FA0, &object_daiku_Anim_00ACD0, &object_daiku_Anim_00C92C, &object_daiku_Anim_000C44,
|
||||
&object_daiku_Anim_00C234, &object_daiku_Anim_000600, &object_daiku_Anim_001114, &object_daiku_Anim_00B690,
|
||||
&object_daiku_Anim_001A24, &object_daiku_Anim_002134, &object_daiku_Anim_00D328,
|
||||
};
|
||||
static u8 D_80BE7958[] = {
|
||||
ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_ONCE, ANIMMODE_LOOP,
|
||||
ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_ONCE, ANIMMODE_LOOP,
|
||||
};
|
||||
f32 sp34 = 1.0f;
|
||||
typedef enum {
|
||||
/* -1 */ ENDAIKU2_ANIM_NONE = -1,
|
||||
/* 0 */ ENDAIKU2_ANIM_0,
|
||||
/* 1 */ ENDAIKU2_ANIM_1,
|
||||
/* 2 */ ENDAIKU2_ANIM_2,
|
||||
/* 3 */ ENDAIKU2_ANIM_3,
|
||||
/* 4 */ ENDAIKU2_ANIM_4,
|
||||
/* 5 */ ENDAIKU2_ANIM_5,
|
||||
/* 6 */ ENDAIKU2_ANIM_6,
|
||||
/* 7 */ ENDAIKU2_ANIM_7,
|
||||
/* 8 */ ENDAIKU2_ANIM_8,
|
||||
/* 9 */ ENDAIKU2_ANIM_9,
|
||||
/* 10 */ ENDAIKU2_ANIM_10,
|
||||
/* 11 */ ENDAIKU2_ANIM_MAX,
|
||||
/* 11 */ ENDAIKU2_ANIM_11 = ENDAIKU2_ANIM_MAX // for object_daiku_Anim_002134 set external to `EnDaiku2_ChangeAnim`
|
||||
} EnDaiAnimation;
|
||||
|
||||
this->unk_276 = arg1;
|
||||
this->unk_284 = Animation_GetLastFrame(sAnimations[this->unk_276]);
|
||||
if (this->unk_276 == 3) {
|
||||
sp34 = 2.0f;
|
||||
static AnimationHeader* sAnimations[ENDAIKU2_ANIM_MAX] = {
|
||||
&object_daiku_Anim_002FA0, // ENDAIKU2_ANIM_0
|
||||
&object_daiku_Anim_00ACD0, // ENDAIKU2_ANIM_1
|
||||
&object_daiku_Anim_00C92C, // ENDAIKU2_ANIM_2
|
||||
&object_daiku_Anim_000C44, // ENDAIKU2_ANIM_3
|
||||
&object_daiku_Anim_00C234, // ENDAIKU2_ANIM_4
|
||||
&object_daiku_Anim_000600, // ENDAIKU2_ANIM_5
|
||||
&object_daiku_Anim_001114, // ENDAIKU2_ANIM_6
|
||||
&object_daiku_Anim_00B690, // ENDAIKU2_ANIM_7
|
||||
&object_daiku_Anim_001A24, // ENDAIKU2_ANIM_8
|
||||
&object_daiku_Anim_002134, // ENDAIKU2_ANIM_9
|
||||
&object_daiku_Anim_00D328, // ENDAIKU2_ANIM_10
|
||||
};
|
||||
|
||||
static u8 sAnimationModes[ENDAIKU2_ANIM_MAX] = {
|
||||
ANIMMODE_LOOP, // ENDAIKU2_ANIM_0
|
||||
ANIMMODE_LOOP, // ENDAIKU2_ANIM_1
|
||||
ANIMMODE_LOOP, // ENDAIKU2_ANIM_2
|
||||
ANIMMODE_LOOP, // ENDAIKU2_ANIM_3
|
||||
ANIMMODE_ONCE, // ENDAIKU2_ANIM_4
|
||||
ANIMMODE_LOOP, // ENDAIKU2_ANIM_5
|
||||
ANIMMODE_LOOP, // ENDAIKU2_ANIM_6
|
||||
ANIMMODE_LOOP, // ENDAIKU2_ANIM_7
|
||||
ANIMMODE_LOOP, // ENDAIKU2_ANIM_8
|
||||
ANIMMODE_ONCE, // ENDAIKU2_ANIM_9
|
||||
ANIMMODE_LOOP, // ENDAIKU2_ANIM_10
|
||||
};
|
||||
|
||||
void EnDaiku2_ChangeAnim(EnDaiku2* this, s32 animIndex) {
|
||||
f32 playSpeed = 1.0f;
|
||||
|
||||
this->animIndex = animIndex;
|
||||
this->animEndFrame = Animation_GetLastFrame(sAnimations[this->animIndex]);
|
||||
if (this->animIndex == ENDAIKU2_ANIM_3) {
|
||||
playSpeed = 2.0f;
|
||||
}
|
||||
Animation_Change(&this->skelAnime, sAnimations[this->unk_276], sp34, 0.0f, this->unk_284, D_80BE7958[this->unk_276],
|
||||
-4.0f);
|
||||
Animation_Change(&this->skelAnime, sAnimations[this->animIndex], playSpeed, 0.0f, this->animEndFrame,
|
||||
sAnimationModes[this->animIndex], -4.0f);
|
||||
}
|
||||
|
||||
s32 func_80BE64C0(EnDaiku2* this, PlayState* play) {
|
||||
@ -170,7 +206,7 @@ void func_80BE65B4(EnDaiku2* this, PlayState* play) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_64_02)) {
|
||||
this->unk_28A = 6;
|
||||
}
|
||||
func_80BE6408(this, 8);
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_8);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
@ -178,21 +214,24 @@ void func_80BE65B4(EnDaiku2* this, PlayState* play) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_64_04)) {
|
||||
this->unk_28A = 7;
|
||||
}
|
||||
func_80BE6408(this, 8);
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_8);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
this->unk_28A = 4;
|
||||
this->unk_264 = 1.0f;
|
||||
func_80BE6408(this, 10);
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_10);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
this->unk_264 = 1.0f;
|
||||
if ((this->unk_278 >= ENDAIKU2_GET_7F_0) && Flags_GetSwitch(play, this->unk_278)) {
|
||||
this->unk_28A = 5;
|
||||
if (this->unk_276 != 10) {
|
||||
func_80BE6408(this, 10);
|
||||
if (this->animIndex != ENDAIKU2_ANIM_10) {
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_10);
|
||||
}
|
||||
}
|
||||
|
||||
@ -201,7 +240,7 @@ void func_80BE65B4(EnDaiku2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80BE66E4(EnDaiku2* this, PlayState* play) {
|
||||
f32 sp9C = this->skelAnime.curFrame;
|
||||
f32 curFrame = this->skelAnime.curFrame;
|
||||
s32 sp98 = gSaveContext.save.day - 1;
|
||||
s32 i;
|
||||
Vec3f sp88;
|
||||
@ -214,8 +253,8 @@ void func_80BE66E4(EnDaiku2* this, PlayState* play) {
|
||||
if (sp98 != 2) {
|
||||
if ((this->unk_278 >= ENDAIKU2_GET_7F_0) && Flags_GetSwitch(play, this->unk_278)) {
|
||||
this->unk_28A = 5;
|
||||
if (this->unk_276 != 10) {
|
||||
func_80BE6408(this, 10);
|
||||
if (this->animIndex != ENDAIKU2_ANIM_10) {
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_10);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -233,7 +272,7 @@ void func_80BE66E4(EnDaiku2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
Actor_OfferTalk(&this->actor, play, 80.0f);
|
||||
if ((this->unk_276 == 8) && Animation_OnFrame(&this->skelAnime, 6.0f)) {
|
||||
if ((this->animIndex == ENDAIKU2_ANIM_8) && Animation_OnFrame(&this->skelAnime, 6.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EV_ROCK_BROKEN);
|
||||
|
||||
for (i = 0; i < 10; i++) {
|
||||
@ -260,22 +299,22 @@ void func_80BE66E4(EnDaiku2* this, PlayState* play) {
|
||||
temp_v0 = ABS_ALT(BINANG_SUB(this->actor.yawTowardsPlayer, this->actor.home.rot.y));
|
||||
if (temp_v0 > 0x2890) {
|
||||
if (sp98 != 2) {
|
||||
if ((this->unk_276 == 5) || (this->unk_276 == 9)) {
|
||||
func_80BE6408(this, 10);
|
||||
} else if ((this->unk_276 == 10) && (this->unk_284 <= sp9C)) {
|
||||
this->unk_284 = Animation_GetLastFrame(&object_daiku_Anim_002134);
|
||||
Animation_Change(&this->skelAnime, &object_daiku_Anim_002134, -1.0f, this->unk_284, 0.0f, ANIMMODE_ONCE,
|
||||
-4.0f);
|
||||
this->unk_276 = 11;
|
||||
} else if ((this->unk_276 == 11) && (sp9C <= 0.0f)) {
|
||||
func_80BE6408(this, 8);
|
||||
if ((this->animIndex == ENDAIKU2_ANIM_5) || (this->animIndex == ENDAIKU2_ANIM_9)) {
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_10);
|
||||
} else if ((this->animIndex == ENDAIKU2_ANIM_10) && (curFrame >= this->animEndFrame)) {
|
||||
this->animEndFrame = Animation_GetLastFrame(&object_daiku_Anim_002134);
|
||||
Animation_Change(&this->skelAnime, &object_daiku_Anim_002134, -1.0f, this->animEndFrame, 0.0f,
|
||||
ANIMMODE_ONCE, -4.0f);
|
||||
this->animIndex = ENDAIKU2_ANIM_11;
|
||||
} else if ((this->animIndex == ENDAIKU2_ANIM_11) && (curFrame <= 0.0f)) {
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_8);
|
||||
}
|
||||
}
|
||||
} else if (sp98 != 2) {
|
||||
if ((this->unk_276 != 9) && (this->unk_276 != 10)) {
|
||||
func_80BE6408(this, 9);
|
||||
} else if ((this->unk_276 == 9) && (this->unk_284 <= sp9C)) {
|
||||
func_80BE6408(this, 10);
|
||||
if ((this->animIndex != ENDAIKU2_ANIM_9) && (this->animIndex != ENDAIKU2_ANIM_10)) {
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_9);
|
||||
} else if ((this->animIndex == ENDAIKU2_ANIM_9) && (curFrame >= this->animEndFrame)) {
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_10);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -287,7 +326,7 @@ void func_80BE6B40(EnDaiku2* this, PlayState* play) {
|
||||
if ((day != 3) && Flags_GetSwitch(play, this->unk_278)) {
|
||||
this->actionFunc = func_80BE6BC0;
|
||||
} else {
|
||||
func_80BE6408(this, 5);
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_5);
|
||||
this->actionFunc = func_80BE6BC0;
|
||||
}
|
||||
}
|
||||
@ -315,6 +354,9 @@ void func_80BE6BC0(EnDaiku2* this, PlayState* play) {
|
||||
case 1:
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_64_04);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
func_80BE65B4(this, play);
|
||||
}
|
||||
@ -322,7 +364,7 @@ void func_80BE6BC0(EnDaiku2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80BE6CFC(EnDaiku2* this) {
|
||||
func_80BE6408(this, 3);
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_3);
|
||||
this->unk_288 = 2;
|
||||
this->actionFunc = func_80BE6D40;
|
||||
this->unk_264 = 0.0f;
|
||||
@ -354,14 +396,14 @@ void func_80BE6D40(EnDaiku2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80BE6EB0(EnDaiku2* this) {
|
||||
func_80BE6408(this, 2);
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_2);
|
||||
this->unk_274 = 0;
|
||||
this->unk_288 = 3;
|
||||
this->actionFunc = func_80BE6EF0;
|
||||
}
|
||||
|
||||
void func_80BE6EF0(EnDaiku2* this, PlayState* play) {
|
||||
f32 sp5C = this->skelAnime.curFrame;
|
||||
f32 curFrame = this->skelAnime.curFrame;
|
||||
s32 pad[4];
|
||||
Vec3f sp40;
|
||||
s16 var;
|
||||
@ -372,7 +414,7 @@ void func_80BE6EF0(EnDaiku2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
Math_SmoothStepToS(&this->actor.world.rot.y, this->actor.home.rot.y, 1, 0xBB8, 0x0);
|
||||
if (this->unk_284 <= sp5C) {
|
||||
if (curFrame >= this->animEndFrame) {
|
||||
this->unk_274 = 1;
|
||||
}
|
||||
|
||||
@ -387,14 +429,14 @@ void func_80BE6EF0(EnDaiku2* this, PlayState* play) {
|
||||
4.0f) &&
|
||||
(this->path != NULL)) {
|
||||
if (!func_80BE64C0(this, play)) {
|
||||
if (this->unk_276 != 3) {
|
||||
func_80BE6408(this, 3);
|
||||
if (this->animIndex != ENDAIKU2_ANIM_3) {
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_3);
|
||||
}
|
||||
|
||||
if ((this->unk_278 >= ENDAIKU2_GET_7F_0) && Flags_GetSwitch(play, this->unk_278)) {
|
||||
this->unk_28A = 5;
|
||||
if (this->unk_276 != 10) {
|
||||
func_80BE6408(this, 10);
|
||||
if (this->animIndex != ENDAIKU2_ANIM_10) {
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_10);
|
||||
}
|
||||
func_80BE65B4(this, play);
|
||||
return;
|
||||
@ -425,20 +467,20 @@ void func_80BE6EF0(EnDaiku2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80BE71A0(EnDaiku2* this) {
|
||||
func_80BE6408(this, 9);
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_9);
|
||||
this->actionFunc = func_80BE71D8;
|
||||
}
|
||||
|
||||
void func_80BE71D8(EnDaiku2* this, PlayState* play) {
|
||||
f32 currentFrame = this->skelAnime.curFrame;
|
||||
f32 curFrame = this->skelAnime.curFrame;
|
||||
|
||||
if (func_80BE64C0(this, play)) {
|
||||
func_80BE6CFC(this);
|
||||
} else if ((this->unk_276 == 9) && (this->unk_284 <= currentFrame)) {
|
||||
func_80BE6408(this, 0);
|
||||
} else if ((this->unk_276 == 0) && (this->unk_284 <= currentFrame)) {
|
||||
func_80BE6408(this, 5);
|
||||
} else if ((this->unk_276 == 5) && (this->unk_284 <= currentFrame)) {
|
||||
} else if ((this->animIndex == ENDAIKU2_ANIM_9) && (curFrame >= this->animEndFrame)) {
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_0);
|
||||
} else if ((this->animIndex == ENDAIKU2_ANIM_0) && (curFrame >= this->animEndFrame)) {
|
||||
EnDaiku2_ChangeAnim(this, ENDAIKU2_ANIM_5);
|
||||
} else if ((this->animIndex == ENDAIKU2_ANIM_5) && (curFrame >= this->animEndFrame)) {
|
||||
func_80BE65B4(this, play);
|
||||
}
|
||||
}
|
||||
@ -468,13 +510,13 @@ void EnDaiku2_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* r
|
||||
|
||||
Gfx_SetupDL25_Opa(play->state.gfxCtx);
|
||||
|
||||
if (limbIndex == 14) {
|
||||
if (limbIndex == OBJECT_DAIKU_LIMB_0E) {
|
||||
Matrix_Scale(this->unk_260, this->unk_260, this->unk_260, MTXMODE_APPLY);
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, object_daiku_DL_009638);
|
||||
}
|
||||
|
||||
if (limbIndex == 15) {
|
||||
if (limbIndex == OBJECT_DAIKU_LIMB_0F) {
|
||||
gSPDisplayList(POLY_OPA_DISP++, object_daiku_DL_00A390);
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define Z_EN_DAIKU2_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_daiku/object_daiku.h"
|
||||
|
||||
struct EnDaiku2;
|
||||
|
||||
@ -34,8 +35,8 @@ typedef struct EnDaiku2Effect {
|
||||
typedef struct EnDaiku2 {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ SkelAnime skelAnime;
|
||||
/* 0x188 */ Vec3s jointTable[17];
|
||||
/* 0x1EE */ Vec3s morphTable[17];
|
||||
/* 0x188 */ Vec3s jointTable[OBJECT_DAIKU_LIMB_MAX];
|
||||
/* 0x1EE */ Vec3s morphTable[OBJECT_DAIKU_LIMB_MAX];
|
||||
/* 0x254 */ EnDaiku2ActionFunc actionFunc;
|
||||
/* 0x258 */ Path* path;
|
||||
/* 0x25C */ s16 unk_25C;
|
||||
@ -43,12 +44,12 @@ typedef struct EnDaiku2 {
|
||||
/* 0x264 */ f32 unk_264;
|
||||
/* 0x268 */ Vec3f unk_268;
|
||||
/* 0x274 */ s16 unk_274;
|
||||
/* 0x276 */ s16 unk_276;
|
||||
/* 0x276 */ s16 animIndex;
|
||||
/* 0x278 */ s16 unk_278;
|
||||
/* 0x27A */ s16 pathIndex;
|
||||
/* 0x27C */ UNK_TYPE1 unk_27C[0x4];
|
||||
/* 0x280 */ s32 unk_280;
|
||||
/* 0x284 */ f32 unk_284;
|
||||
/* 0x284 */ f32 animEndFrame;
|
||||
/* 0x288 */ s16 unk_288;
|
||||
/* 0x28A */ s16 unk_28A;
|
||||
/* 0x28C */ EnDaiku2Effect effects[EN_DAIKU2_EFFECT_COUNT];
|
||||
|
@ -343,7 +343,7 @@ void EnDekubaba_Wait(EnDekubaba* this, PlayState* play) {
|
||||
this->actor.world.pos.z = this->actor.home.pos.z;
|
||||
this->actor.world.pos.y = this->actor.home.pos.y + 14.0f * this->size;
|
||||
|
||||
if ((this->timer == 0) && (this->actor.xzDistToPlayer < 200.0f * this->size) &&
|
||||
if ((this->timer == 0) && (this->actor.xzDistToPlayer < (200.0f * this->size)) &&
|
||||
(fabsf(this->actor.playerHeightRel) < 30.0f * this->size)) {
|
||||
EnDekubaba_SetupGrow(this);
|
||||
}
|
||||
@ -430,7 +430,7 @@ void EnDekubaba_Grow(EnDekubaba* this, PlayState* play) {
|
||||
1, HAHEN_OBJECT_DEFAULT, 10, NULL);
|
||||
|
||||
if (this->timer == 0) {
|
||||
if (Math_Vec3f_DistXZ(&this->actor.home.pos, &player->actor.world.pos) < 240.0f * this->size) {
|
||||
if (Math_Vec3f_DistXZ(&this->actor.home.pos, &player->actor.world.pos) < (240.0f * this->size)) {
|
||||
EnDekubaba_SetupPrepareLunge(this);
|
||||
} else {
|
||||
EnDekubaba_SetupRetract(this);
|
||||
@ -942,7 +942,7 @@ void EnDekubaba_SetupStunnedVertical(EnDekubaba* this) {
|
||||
if (this->timer == 1) {
|
||||
Animation_Change(&this->skelAnime, &gDekuBabaFastChompAnim, 4.0f, 0.0f,
|
||||
Animation_GetLastFrame(&gDekuBabaFastChompAnim), ANIMMODE_LOOP, -3.0f);
|
||||
this->timer = 0x28;
|
||||
this->timer = 40;
|
||||
} else {
|
||||
Animation_Change(&this->skelAnime, &gDekuBabaFastChompAnim, 0.0f, 0.0f,
|
||||
Animation_GetLastFrame(&gDekuBabaFastChompAnim), ANIMMODE_LOOP, -3.0f);
|
||||
|
@ -671,22 +671,22 @@ s32 EnDekunuts_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec
|
||||
f32 arg1;
|
||||
f32 arg2;
|
||||
f32 arg3;
|
||||
f32 currentFrame;
|
||||
f32 curFrame;
|
||||
|
||||
if (this->actionFunc == func_808BDA4C) {
|
||||
if (limbIndex == DEKU_SCRUB_LIMB_SNOUT) {
|
||||
currentFrame = this->skelAnime.curFrame;
|
||||
if (currentFrame <= 6.0f) {
|
||||
arg2 = 1.0f - (currentFrame * 0.0833f);
|
||||
arg1 = (currentFrame * 0.1167f) + 1.0f;
|
||||
arg3 = (currentFrame * 0.1167f) + 1.0f;
|
||||
} else if (currentFrame <= 7.0f) {
|
||||
currentFrame -= 6.0f;
|
||||
arg2 = 0.5f + currentFrame;
|
||||
arg1 = 1.7f - (currentFrame * 0.7f);
|
||||
arg3 = 1.7f - (currentFrame * 0.7f);
|
||||
} else if (currentFrame <= 10.0f) {
|
||||
arg2 = 1.5f - ((currentFrame - 7.0f) * 0.1667f);
|
||||
curFrame = this->skelAnime.curFrame;
|
||||
if (curFrame <= 6.0f) {
|
||||
arg2 = 1.0f - (curFrame * 0.0833f);
|
||||
arg1 = (curFrame * 0.1167f) + 1.0f;
|
||||
arg3 = (curFrame * 0.1167f) + 1.0f;
|
||||
} else if (curFrame <= 7.0f) {
|
||||
curFrame -= 6.0f;
|
||||
arg2 = 0.5f + curFrame;
|
||||
arg1 = 1.7f - (curFrame * 0.7f);
|
||||
arg3 = 1.7f - (curFrame * 0.7f);
|
||||
} else if (curFrame <= 10.0f) {
|
||||
arg2 = 1.5f - ((curFrame - 7.0f) * 0.1667f);
|
||||
arg1 = 1.0f;
|
||||
arg3 = 1.0f;
|
||||
} else {
|
||||
|
@ -15,20 +15,10 @@ void EnDemoheishi_Destroy(Actor* thisx, PlayState* play);
|
||||
void EnDemoheishi_Update(Actor* thisx, PlayState* play);
|
||||
void EnDemoheishi_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void EnDemoheishi_ChangeAnim(EnDemoheishi* this, s32 animIndex);
|
||||
void EnDemoheishi_SetupIdle(EnDemoheishi* this);
|
||||
void EnDemoheishi_Idle(EnDemoheishi* this, PlayState* play);
|
||||
void EnDemoheishi_SetupTalk(EnDemoheishi* this);
|
||||
void EnDemoheishi_Talk(EnDemoheishi* this, PlayState* play);
|
||||
s32 EnDemoheishi_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ DEMOHEISHI_ANIM_STAND_HAND_ON_HIP,
|
||||
/* 1 */ DEMOHEISHI_ANIM_CHEER_WITH_SPEAR,
|
||||
/* 2 */ DEMOHEISHI_ANIM_WAVE,
|
||||
/* 3 */ DEMOHEISHI_ANIM_SIT_AND_REACH,
|
||||
/* 4 */ DEMOHEISHI_ANIM_STAND_UP
|
||||
} EnDemoheishiAnimation;
|
||||
|
||||
ActorInit En_Demo_heishi_InitVars = {
|
||||
ACTOR_EN_DEMO_HEISHI,
|
||||
@ -83,18 +73,35 @@ void EnDemoheishi_Destroy(Actor* thisx, PlayState* play) {
|
||||
Collider_DestroyCylinder(play, &this->colliderCylinder);
|
||||
}
|
||||
|
||||
void EnDemoheishi_ChangeAnim(EnDemoheishi* this, s32 animIndex) {
|
||||
static AnimationHeader* sAnimations[] = {
|
||||
&gSoldierStandHandOnHip, &gSoldierCheerWithSpear, &gSoldierWave, &gSoldierSitAndReach, &gSoldierStandUp,
|
||||
};
|
||||
static u8 sAnimationModes[] = {
|
||||
ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_ONCE, ANIMMODE_LOOP,
|
||||
ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_LOOP,
|
||||
};
|
||||
typedef enum {
|
||||
/* 0 */ DEMOHEISHI_ANIM_STAND_HAND_ON_HIP,
|
||||
/* 1 */ DEMOHEISHI_ANIM_CHEER_WITH_SPEAR,
|
||||
/* 2 */ DEMOHEISHI_ANIM_WAVE,
|
||||
/* 3 */ DEMOHEISHI_ANIM_SIT_AND_REACH,
|
||||
/* 4 */ DEMOHEISHI_ANIM_STAND_UP,
|
||||
/* 5 */ DEMOHEISHI_ANIM_MAX
|
||||
} EnDemoheishiAnimation;
|
||||
|
||||
static AnimationHeader* sAnimations[DEMOHEISHI_ANIM_MAX] = {
|
||||
&gSoldierStandHandOnHip, // DEMOHEISHI_ANIM_STAND_HAND_ON_HIP
|
||||
&gSoldierCheerWithSpear, // DEMOHEISHI_ANIM_CHEER_WITH_SPEAR
|
||||
&gSoldierWave, // DEMOHEISHI_ANIM_WAVE
|
||||
&gSoldierSitAndReach, // DEMOHEISHI_ANIM_SIT_AND_REACH
|
||||
&gSoldierStandUp, // DEMOHEISHI_ANIM_STAND_UP
|
||||
};
|
||||
|
||||
static u8 sAnimationModes[DEMOHEISHI_ANIM_MAX] = {
|
||||
ANIMMODE_LOOP, // DEMOHEISHI_ANIM_STAND_HAND_ON_HIP
|
||||
ANIMMODE_LOOP, // DEMOHEISHI_ANIM_CHEER_WITH_SPEAR
|
||||
ANIMMODE_LOOP, // DEMOHEISHI_ANIM_WAVE
|
||||
ANIMMODE_LOOP, // DEMOHEISHI_ANIM_SIT_AND_REACH
|
||||
ANIMMODE_ONCE, // DEMOHEISHI_ANIM_STAND_UP
|
||||
};
|
||||
|
||||
void EnDemoheishi_ChangeAnim(EnDemoheishi* this, s32 animIndex) {
|
||||
this->animIndex = animIndex;
|
||||
this->frameCount = Animation_GetLastFrame(sAnimations[animIndex]);
|
||||
Animation_Change(&this->skelAnime, sAnimations[this->animIndex], 1.0f, 0.0f, this->frameCount,
|
||||
this->animEndFrame = Animation_GetLastFrame(sAnimations[animIndex]);
|
||||
Animation_Change(&this->skelAnime, sAnimations[this->animIndex], 1.0f, 0.0f, this->animEndFrame,
|
||||
sAnimationModes[this->animIndex], -10.0f);
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@ typedef struct EnDemoheishi {
|
||||
/* 0x262 */ s16 headRotZTarget;
|
||||
/* 0x264 */ s32 animIndex;
|
||||
/* 0x268 */ s16 timer;
|
||||
/* 0x26C */ f32 frameCount;
|
||||
/* 0x26C */ f32 animEndFrame;
|
||||
/* 0x270 */ s16 isTalking;
|
||||
/* 0x272 */ s16 textIdIndex;
|
||||
/* 0x274 */ ColliderCylinder colliderCylinder;
|
||||
|
@ -185,33 +185,41 @@ typedef enum {
|
||||
/* 16 */ DOG_ANIM_MAX
|
||||
} DogAnimation;
|
||||
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &gDogWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, { &gDogWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -6 },
|
||||
{ &gDogRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, { &gDogBarkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -6 },
|
||||
{ &gDogSitAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -6 }, { &gDogSitAnim, 1.0f, 0, -1, ANIMMODE_LOOP_PARTIAL, -6 },
|
||||
{ &gDogLyingDownAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -6 }, { &gDogLyingDownLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -6 },
|
||||
{ &gDogLyingDownAnim, 1.0f, 0, 27, ANIMMODE_ONCE, -6 }, { &gDogLyingDownAnim, 1.0f, 28, -1, ANIMMODE_ONCE, -6 },
|
||||
{ &gDogLyingDownAnim, 1.0f, 54, 54, ANIMMODE_ONCE, -6 }, { &gDogWalkAnim, -1.5f, -1, 0, ANIMMODE_LOOP, -6 },
|
||||
{ &gDogJumpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, { &gDogLongJumpAnim, 1.2f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDogJumpAttackAnim, 1.2f, 0, -1, ANIMMODE_ONCE, 0 }, { &gDogWalkAnim, 0.5f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
static AnimationInfoS sAnimationInfo[DOG_ANIM_MAX] = {
|
||||
{ &gDogWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // DOG_ANIM_WALK_AFTER_TALKING
|
||||
{ &gDogWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -6 }, // DOG_ANIM_WALK
|
||||
{ &gDogRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // DOG_ANIM_RUN
|
||||
{ &gDogBarkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -6 }, // DOG_ANIM_BARK
|
||||
{ &gDogSitAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -6 }, // DOG_ANIM_SIT_DOWN_ONCE
|
||||
{ &gDogSitAnim, 1.0f, 0, -1, ANIMMODE_LOOP_PARTIAL, -6 }, // DOG_ANIM_SIT_DOWN
|
||||
{ &gDogLyingDownAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -6 }, // DOG_ANIM_LYING_DOWN_START_1
|
||||
{ &gDogLyingDownLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -6 }, // DOG_ANIM_LYING_DOWN_LOOP
|
||||
{ &gDogLyingDownAnim, 1.0f, 0, 27, ANIMMODE_ONCE, -6 }, // DOG_ANIM_LYING_DOWN_START_2
|
||||
{ &gDogLyingDownAnim, 1.0f, 28, -1, ANIMMODE_ONCE, -6 }, // DOG_ANIM_LYING_DOWN_START_3
|
||||
{ &gDogLyingDownAnim, 1.0f, 54, 54, ANIMMODE_ONCE, -6 }, // DOG_ANIM_LYING_DOWN_START_4
|
||||
{ &gDogWalkAnim, -1.5f, -1, 0, ANIMMODE_LOOP, -6 }, // DOG_ANIM_WALK_BACKWARDS
|
||||
{ &gDogJumpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // DOG_ANIM_JUMP
|
||||
{ &gDogLongJumpAnim, 1.2f, 0, -1, ANIMMODE_ONCE, 0 }, // DOG_ANIM_LONG_JUMP
|
||||
{ &gDogJumpAttackAnim, 1.2f, 0, -1, ANIMMODE_ONCE, 0 }, // DOG_ANIM_JUMP_ATTACK
|
||||
{ &gDogWalkAnim, 0.5f, 0, -1, ANIMMODE_LOOP, 0 }, // DOG_ANIM_SWIM
|
||||
};
|
||||
|
||||
static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_F32(uncullZoneForward, 1000, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
void EnDg_ChangeAnim(SkelAnime* skelAnime, AnimationInfoS* animationInfo, s32 animIndex) {
|
||||
f32 frameCount;
|
||||
void EnDg_ChangeAnim(SkelAnime* skelAnime, AnimationInfoS* animInfo, s32 animIndex) {
|
||||
f32 endFrame;
|
||||
|
||||
animationInfo += animIndex;
|
||||
if (animationInfo->frameCount < 0) {
|
||||
frameCount = Animation_GetLastFrame(animationInfo->animation);
|
||||
animInfo += animIndex;
|
||||
if (animInfo->frameCount < 0) {
|
||||
endFrame = Animation_GetLastFrame(animInfo->animation);
|
||||
} else {
|
||||
frameCount = animationInfo->frameCount;
|
||||
endFrame = animInfo->frameCount;
|
||||
}
|
||||
|
||||
Animation_Change(skelAnime, animationInfo->animation, animationInfo->playSpeed + (BREG(88) * 0.1f),
|
||||
animationInfo->startFrame, frameCount, animationInfo->mode, animationInfo->morphFrames);
|
||||
Animation_Change(skelAnime, animInfo->animation, animInfo->playSpeed + (BREG(88) * 0.1f), animInfo->startFrame,
|
||||
endFrame, animInfo->mode, animInfo->morphFrames);
|
||||
}
|
||||
|
||||
void EnDg_UpdateCollision(EnDg* this, PlayState* play) {
|
||||
|
@ -54,8 +54,13 @@ ActorInit En_Dnh_InitVars = {
|
||||
(ActorFunc)EnDnh_Draw,
|
||||
};
|
||||
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &gKoumeKioskHeadMoving, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
typedef enum {
|
||||
/* 0 */ ENDNH_ANIM_HEAD_MOVING,
|
||||
/* 1 */ ENDNH_ANIM_MAX
|
||||
} EnDnhAnimation;
|
||||
|
||||
static AnimationInfoS sAnimationInfo[ENDNH_ANIM_MAX] = {
|
||||
{ &gKoumeKioskHeadMoving, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENDNH_ANIM_HEAD_MOVING
|
||||
};
|
||||
|
||||
static TexturePtr sEyeTextures[] = {
|
||||
@ -133,8 +138,9 @@ void EnDnh_Init(Actor* thisx, PlayState* play) {
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
|
||||
SkelAnime_Init(play, &this->skelAnime, &gKoumeKioskSkeleton, NULL, this->jointTable, this->morphTable,
|
||||
KOUME_KIOSK_LIMB_MAX);
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, 0);
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, ENDNH_ANIM_HEAD_MOVING);
|
||||
this->actor.shape.yOffset = 1100.0f;
|
||||
|
||||
if (gSaveContext.save.entrance != ENTRANCE(TOURIST_INFORMATION, 1)) {
|
||||
SubS_SetOfferMode(&this->unk18C, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK);
|
||||
this->unk198 = 0;
|
||||
@ -142,9 +148,11 @@ void EnDnh_Init(Actor* thisx, PlayState* play) {
|
||||
SubS_SetOfferMode(&this->unk18C, SUBS_OFFER_MODE_AUTO, SUBS_OFFER_MODE_MASK);
|
||||
this->unk198 = CHECK_EVENTINF(EVENTINF_35) ? 2 : 1;
|
||||
}
|
||||
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_SAVED_KOUME)) {
|
||||
this->actor.draw = NULL;
|
||||
}
|
||||
|
||||
this->msgEventCallback = func_80A50D40;
|
||||
this->unk194 = 0;
|
||||
this->actionFunc = EnDnh_DoNothing;
|
||||
|
@ -5,9 +5,6 @@
|
||||
*/
|
||||
|
||||
#include "z_en_dnk.h"
|
||||
#include "objects/object_dnk/object_dnk.h"
|
||||
#include "objects/object_hintnuts/object_hintnuts.h"
|
||||
#include "objects/object_dekunuts/object_dekunuts.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_8)
|
||||
|
||||
@ -17,7 +14,7 @@ void EnDnk_Init(Actor* thisx, PlayState* play);
|
||||
void EnDnk_Destroy(Actor* thisx, PlayState* play);
|
||||
void EnDnk_Update(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_80A51890(EnDnk* this, PlayState* play);
|
||||
void EnDnk_HandleCutscene(EnDnk* this, PlayState* play);
|
||||
void EnDnk_DoNothing(EnDnk* this, PlayState* play);
|
||||
void func_80A52018(Actor* thisx, PlayState* play);
|
||||
void func_80A52134(EnDnk* this, PlayState* play);
|
||||
@ -93,66 +90,108 @@ static DamageTable sDamageTable = {
|
||||
/* Powder Keg */ DMG_ENTRY(1, 0x0),
|
||||
};
|
||||
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &gDekuPalaceGuardStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDekuPalaceGuardStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPalaceGuardWaitAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPalaceGuardAttackAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPalaceGuardDigAnim, 1.0f, -1, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDekuPalaceGuardDigAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPalaceGuardJumpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPalaceGuardWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gDekuPalaceGuardWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPalaceGuardHappyAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_hintnuts_Anim_000168, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_hintnuts_Anim_0024CC, 1.0f, -1, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &object_hintnuts_Anim_0024CC, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_hintnuts_Anim_0026C4, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_hintnuts_Anim_002894, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_hintnuts_Anim_002B90, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &object_hintnuts_Anim_002F7C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_hintnuts_Anim_002F7C, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_hintnuts_Anim_003128, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &object_hintnuts_Anim_003128, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_hintnuts_Anim_0029BC, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &object_hintnuts_Anim_002E84, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuScrubSpitAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuScrubDamageAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuScrubBurrowAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDekuScrubBurrowAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuScrubDieAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuScrubUnburrowAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuScrubLookAroundAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuScrubUpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuScrubIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gDekuScrubIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuScrubPantingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuScrubRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gDekuScrubRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuScrubStandingIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
typedef enum {
|
||||
/* -1 */ ENDNK_ANIM_NONE = -1,
|
||||
/* 0 */ ENDNK_ANIM_0,
|
||||
/* 1 */ ENDNK_ANIM_1,
|
||||
/* 2 */ ENDNK_ANIM_2,
|
||||
/* 3 */ ENDNK_ANIM_3,
|
||||
/* 4 */ ENDNK_ANIM_4,
|
||||
/* 5 */ ENDNK_ANIM_5,
|
||||
/* 6 */ ENDNK_ANIM_6,
|
||||
/* 7 */ ENDNK_ANIM_7,
|
||||
/* 8 */ ENDNK_ANIM_8,
|
||||
/* 9 */ ENDNK_ANIM_9,
|
||||
/* 10 */ ENDNK_ANIM_10,
|
||||
/* 11 */ ENDNK_ANIM_11,
|
||||
/* 12 */ ENDNK_ANIM_12,
|
||||
/* 13 */ ENDNK_ANIM_13,
|
||||
/* 14 */ ENDNK_ANIM_14,
|
||||
/* 15 */ ENDNK_ANIM_15,
|
||||
/* 16 */ ENDNK_ANIM_16,
|
||||
/* 17 */ ENDNK_ANIM_17,
|
||||
/* 18 */ ENDNK_ANIM_18,
|
||||
/* 19 */ ENDNK_ANIM_19,
|
||||
/* 20 */ ENDNK_ANIM_20,
|
||||
/* 21 */ ENDNK_ANIM_21,
|
||||
/* 22 */ ENDNK_ANIM_22,
|
||||
/* 23 */ ENDNK_ANIM_23,
|
||||
/* 24 */ ENDNK_ANIM_24,
|
||||
/* 25 */ ENDNK_ANIM_25,
|
||||
/* 26 */ ENDNK_ANIM_26,
|
||||
/* 27 */ ENDNK_ANIM_27,
|
||||
/* 28 */ ENDNK_ANIM_28,
|
||||
/* 29 */ ENDNK_ANIM_29,
|
||||
/* 30 */ ENDNK_ANIM_30,
|
||||
/* 31 */ ENDNK_ANIM_31,
|
||||
/* 32 */ ENDNK_ANIM_32,
|
||||
/* 33 */ ENDNK_ANIM_33,
|
||||
/* 34 */ ENDNK_ANIM_34,
|
||||
/* 35 */ ENDNK_ANIM_35,
|
||||
/* 36 */ ENDNK_ANIM_MAX
|
||||
} EnDnkAnimation;
|
||||
|
||||
static AnimationInfoS sAnimationInfo[ENDNK_ANIM_MAX] = {
|
||||
{ &gDekuPalaceGuardStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // ENDNK_ANIM_0
|
||||
{ &gDekuPalaceGuardStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_1
|
||||
{ &gDekuPalaceGuardWaitAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_2
|
||||
{ &gDekuPalaceGuardAttackAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_3
|
||||
{ &gDekuPalaceGuardDigAnim, 1.0f, -1, -1, ANIMMODE_ONCE, 0 }, // ENDNK_ANIM_4
|
||||
{ &gDekuPalaceGuardDigAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_5
|
||||
{ &gDekuPalaceGuardJumpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_6
|
||||
{ &gDekuPalaceGuardWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENDNK_ANIM_7
|
||||
{ &gDekuPalaceGuardWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_8
|
||||
{ &gDekuPalaceGuardHappyAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_9
|
||||
{ &object_hintnuts_Anim_000168, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_10
|
||||
{ &object_hintnuts_Anim_0024CC, 1.0f, -1, -1, ANIMMODE_ONCE, 0 }, // ENDNK_ANIM_11
|
||||
{ &object_hintnuts_Anim_0024CC, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_12
|
||||
{ &object_hintnuts_Anim_0026C4, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_13
|
||||
{ &object_hintnuts_Anim_002894, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_14
|
||||
{ &object_hintnuts_Anim_002B90, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_15
|
||||
{ &object_hintnuts_Anim_002F7C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENDNK_ANIM_16
|
||||
{ &object_hintnuts_Anim_002F7C, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_17
|
||||
{ &object_hintnuts_Anim_003128, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENDNK_ANIM_18
|
||||
{ &object_hintnuts_Anim_003128, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_19
|
||||
{ &object_hintnuts_Anim_0029BC, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_20
|
||||
{ &object_hintnuts_Anim_002E84, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_21
|
||||
{ &gDekuScrubSpitAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_22
|
||||
{ &gDekuScrubDamageAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_23
|
||||
{ &gDekuScrubBurrowAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // ENDNK_ANIM_24
|
||||
{ &gDekuScrubBurrowAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_25
|
||||
{ &gDekuScrubDieAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_26
|
||||
{ &gDekuScrubUnburrowAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_27
|
||||
{ &gDekuScrubLookAroundAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_28
|
||||
{ &gDekuScrubUpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // ENDNK_ANIM_29
|
||||
{ &gDekuScrubIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENDNK_ANIM_30
|
||||
{ &gDekuScrubIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_31
|
||||
{ &gDekuScrubPantingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_32
|
||||
{ &gDekuScrubRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENDNK_ANIM_33
|
||||
{ &gDekuScrubRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // ENDNK_ANIM_34
|
||||
{ &gDekuScrubStandingIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ENDNK_ANIM_35
|
||||
};
|
||||
|
||||
s32 func_80A514F0(SkelAnime* skelAnime, s16 animIndex) {
|
||||
s16 frame;
|
||||
s16 frameCount;
|
||||
s32 sp30 = false;
|
||||
s32 EnDnk_ChangeAnim(SkelAnime* skelAnime, s16 animIndex) {
|
||||
s16 startFrame;
|
||||
s16 endFrame;
|
||||
s32 didAnimChange = false;
|
||||
|
||||
if (animIndex >= 0) {
|
||||
if (animIndex < ARRAY_COUNT(sAnimationInfo)) {
|
||||
sp30 = true;
|
||||
frameCount = sAnimationInfo[animIndex].frameCount;
|
||||
if (frameCount < 0) {
|
||||
frameCount = Animation_GetLastFrame(sAnimationInfo[animIndex].animation);
|
||||
didAnimChange = true;
|
||||
endFrame = sAnimationInfo[animIndex].frameCount;
|
||||
if (endFrame < 0) {
|
||||
endFrame = Animation_GetLastFrame(sAnimationInfo[animIndex].animation);
|
||||
}
|
||||
frame = sAnimationInfo[animIndex].startFrame;
|
||||
if (frame < 0) {
|
||||
frame = frameCount;
|
||||
startFrame = sAnimationInfo[animIndex].startFrame;
|
||||
if (startFrame < 0) {
|
||||
startFrame = endFrame;
|
||||
}
|
||||
Animation_Change(skelAnime, sAnimationInfo[animIndex].animation, sAnimationInfo[animIndex].playSpeed, frame,
|
||||
frameCount, sAnimationInfo[animIndex].mode, sAnimationInfo[animIndex].morphFrames);
|
||||
Animation_Change(skelAnime, sAnimationInfo[animIndex].animation, sAnimationInfo[animIndex].playSpeed,
|
||||
startFrame, endFrame, sAnimationInfo[animIndex].mode,
|
||||
sAnimationInfo[animIndex].morphFrames);
|
||||
}
|
||||
}
|
||||
return sp30;
|
||||
return didAnimChange;
|
||||
}
|
||||
|
||||
s32 func_80A515C4(EnDnk* this) {
|
||||
@ -180,19 +219,19 @@ void func_80A51648(EnDnk* this, PlayState* play) {
|
||||
case ENDNK_GET_3_0:
|
||||
SkelAnime_Init(play, &this->skelAnime, &gDekuPalaceGuardSkel, NULL, this->jointTable, this->morphTable,
|
||||
DEKU_PALACE_GUARD_LIMB_MAX);
|
||||
func_80A514F0(&this->skelAnime, 7);
|
||||
EnDnk_ChangeAnim(&this->skelAnime, ENDNK_ANIM_7);
|
||||
break;
|
||||
|
||||
case ENDNK_GET_3_1:
|
||||
SkelAnime_Init(play, &this->skelAnime, &object_hintnuts_Skel_0023B8.sh, NULL, this->jointTable,
|
||||
this->morphTable, 10);
|
||||
func_80A514F0(&this->skelAnime, 18);
|
||||
this->morphTable, OBJECT_HINTNUTS_LIMB_MAX);
|
||||
EnDnk_ChangeAnim(&this->skelAnime, ENDNK_ANIM_18);
|
||||
break;
|
||||
|
||||
case ENDNK_GET_3_2:
|
||||
SkelAnime_Init(play, &this->skelAnime, &gDekuScrubSkel, NULL, this->jointTable, this->morphTable,
|
||||
DEKU_SCRUB_LIMB_MAX);
|
||||
func_80A514F0(&this->skelAnime, 35);
|
||||
EnDnk_ChangeAnim(&this->skelAnime, ENDNK_ANIM_35);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -202,7 +241,7 @@ void func_80A51648(EnDnk* this, PlayState* play) {
|
||||
if (ENDNK_GET_3C(&this->actor) == 4) {
|
||||
this->actor.flags &= ~ACTOR_FLAG_1;
|
||||
this->actor.flags |= (ACTOR_FLAG_10 | ACTOR_FLAG_20);
|
||||
this->actionFunc = func_80A51890;
|
||||
this->actionFunc = EnDnk_HandleCutscene;
|
||||
Actor_SetScale(&this->actor, 0.1f);
|
||||
} else {
|
||||
this->actor.flags &= ~ACTOR_FLAG_1;
|
||||
@ -212,7 +251,7 @@ void func_80A51648(EnDnk* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A51890(EnDnk* this, PlayState* play) {
|
||||
void EnDnk_HandleCutscene(EnDnk* this, PlayState* play) {
|
||||
if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_126)) {
|
||||
Cutscene_ActorTranslateAndYaw(&this->actor, play, Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_126));
|
||||
}
|
||||
@ -284,7 +323,7 @@ void func_80A51AA4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Acto
|
||||
Vec3f sp44;
|
||||
Vec3s sp3C;
|
||||
|
||||
if (limbIndex == 2) {
|
||||
if (limbIndex == DEKU_PALACE_GUARD_LIMB_HEAD) {
|
||||
Matrix_MultVec3f(&sp50, &sp44);
|
||||
Matrix_Get(&sp5C);
|
||||
Matrix_MtxFToYXZRot(&sp5C, &sp3C, false);
|
||||
@ -360,7 +399,9 @@ void func_80A51DA4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Acto
|
||||
Vec3f sp44;
|
||||
Vec3s sp3C;
|
||||
|
||||
if (limbIndex == 2) {
|
||||
// Note: Also for `limbIndex == OBJECT_HINTNUTS_LIMB_02`
|
||||
// Assumes `OBJECT_HINTNUTS_LIMB_02` is the same value as `DEKU_SCRUB_LIMB_HEAD`
|
||||
if (limbIndex == DEKU_SCRUB_LIMB_HEAD) {
|
||||
Matrix_MultVec3f(&sp50, &sp44);
|
||||
Matrix_Get(&sp5C);
|
||||
Matrix_MtxFToYXZRot(&sp5C, &sp3C, false);
|
||||
@ -419,6 +460,9 @@ void func_80A52018(Actor* thisx, PlayState* play) {
|
||||
case ENDNK_GET_3_2:
|
||||
func_80A51FC0(this, play);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -439,6 +483,9 @@ void func_80A52074(EnDnk* this, PlayState* play) {
|
||||
case 493:
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_STALKIDS_APPEAR);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if ((play->csCtx.curFrame >= 198) && (play->csCtx.curFrame < 438)) {
|
||||
|
@ -2,6 +2,9 @@
|
||||
#define Z_EN_DNK_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_dnk/object_dnk.h"
|
||||
#include "objects/object_hintnuts/object_hintnuts.h"
|
||||
#include "objects/object_dekunuts/object_dekunuts.h"
|
||||
|
||||
struct EnDnk;
|
||||
|
||||
@ -18,15 +21,17 @@ typedef enum {
|
||||
/* 4 */ ENDNK_GET_3_4
|
||||
} EnDnkParam;
|
||||
|
||||
#define DNK_LIMB_MAX MAX(MAX((s32)DEKU_PALACE_GUARD_LIMB_MAX, (s32)OBJECT_HINTNUTS_LIMB_MAX), (s32)DEKU_SCRUB_LIMB_MAX)
|
||||
|
||||
typedef struct EnDnk {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ SkelAnime skelAnime;
|
||||
/* 0x188 */ EnDnkActionFunc actionFunc;
|
||||
/* 0x18C */ UNK_TYPE1 unk_18C[0x4];
|
||||
/* 0x190 */ ColliderCylinder collider;
|
||||
/* 0x1DC */ Vec3s jointTable[11];
|
||||
/* 0x21E */ Vec3s morphTable[11];
|
||||
/* 0x260 */ Gfx* unk_260[11];
|
||||
/* 0x1DC */ Vec3s jointTable[DNK_LIMB_MAX];
|
||||
/* 0x21E */ Vec3s morphTable[DNK_LIMB_MAX];
|
||||
/* 0x260 */ Gfx* unk_260[DEKU_PALACE_GUARD_LIMB_MAX];
|
||||
/* 0x28C */ u16 unk_28C;
|
||||
/* 0x28E */ s8 unk_28E;
|
||||
/* 0x290 */ s16 unk_290;
|
||||
|
@ -44,6 +44,7 @@ s32 EnDno_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
||||
void EnDno_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx);
|
||||
|
||||
typedef enum {
|
||||
/* -1 */ EN_DNO_ANIM_NONE = -1,
|
||||
/* 0 */ EN_DNO_ANIM_START_RACE_START,
|
||||
/* 1 */ EN_DNO_ANIM_START_RACE_END,
|
||||
/* 2 */ EN_DNO_ANIM_FLY,
|
||||
@ -63,30 +64,31 @@ typedef enum {
|
||||
/* 16 */ EN_DNO_ANIM_IMPLORE_START,
|
||||
/* 17 */ EN_DNO_ANIM_SHOCK_START,
|
||||
/* 18 */ EN_DNO_ANIM_SHOCK_LOOP,
|
||||
/* 19 */ EN_DNO_ANIM_GRIEVE
|
||||
/* 19 */ EN_DNO_ANIM_GRIEVE,
|
||||
/* 20 */ EN_DNO_ANIM_MAX
|
||||
} EnDnoAnimation;
|
||||
|
||||
static AnimationSpeedInfo sAnimations[] = {
|
||||
{ &gDekuButlerStartRaceStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerStartRaceEndAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerFlyAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gDekuButlerFarewellAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerGreetingAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerGreetingWithCandleAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerPrayerLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gDekuButlerCloseParasolAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerOpenParasolAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerImploreLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gDekuButlerImploreEndAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerTalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gDekuButlerTalkWithParasolAndCandleAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gDekuButlerIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gDekuButlerIdleWithCandleAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gDekuButlerPrayerStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerImploreStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerShockStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gDekuButlerShockLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gDekuButlerGrieveAnim, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
static AnimationSpeedInfo sAnimationSpeedInfo[EN_DNO_ANIM_MAX] = {
|
||||
{ &gDekuButlerStartRaceStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_START_RACE_START
|
||||
{ &gDekuButlerStartRaceEndAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_START_RACE_END
|
||||
{ &gDekuButlerFlyAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // EN_DNO_ANIM_FLY
|
||||
{ &gDekuButlerFarewellAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_FAREWELL
|
||||
{ &gDekuButlerGreetingAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_GREETING
|
||||
{ &gDekuButlerGreetingWithCandleAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_GREETING_WITH_CANDLE
|
||||
{ &gDekuButlerPrayerLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // EN_DNO_ANIM_PRAYER_LOOP
|
||||
{ &gDekuButlerCloseParasolAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_CLOSE_PARASOL
|
||||
{ &gDekuButlerOpenParasolAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_OPEN_PARASOL
|
||||
{ &gDekuButlerImploreLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // EN_DNO_ANIM_IMPLORE_LOOP
|
||||
{ &gDekuButlerImploreEndAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_IMPLORE_END
|
||||
{ &gDekuButlerTalkAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // EN_DNO_ANIM_TALK
|
||||
{ &gDekuButlerTalkWithParasolAndCandleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // EN_DNO_ANIM_TALK_WITH_PARSOL_AND_CANDLE
|
||||
{ &gDekuButlerIdleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // EN_DNO_ANIM_IDLE
|
||||
{ &gDekuButlerIdleWithCandleAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // EN_DNO_ANIM_IDLE_WITH_CANDLE
|
||||
{ &gDekuButlerPrayerStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_PRAYER_START
|
||||
{ &gDekuButlerImploreStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_IMPLORE_START
|
||||
{ &gDekuButlerShockStartAnim, 1.0f, ANIMMODE_ONCE, 0.0f }, // EN_DNO_ANIM_SHOCK_START
|
||||
{ &gDekuButlerShockLoopAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // EN_DNO_ANIM_SHOCK_LOOP
|
||||
{ &gDekuButlerGrieveAnim, 1.0f, ANIMMODE_LOOP, 0.0f }, // EN_DNO_ANIM_GRIEVE
|
||||
};
|
||||
|
||||
ActorInit En_Dno_InitVars = {
|
||||
@ -236,10 +238,10 @@ void EnDno_Init(Actor* thisx, PlayState* play) {
|
||||
Collider_InitCylinder(play, &this->collider);
|
||||
Collider_SetCylinder(play, &this->collider, thisx, &sCylinderInit);
|
||||
Actor_UpdateBgCheckInfo(play, thisx, 0.0f, 0.0f, 0.0f, UPDBGCHECKINFO_FLAG_4);
|
||||
Animation_Change(&this->skelAnime, sAnimations[EN_DNO_ANIM_IDLE_WITH_CANDLE].animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(sAnimations[EN_DNO_ANIM_IDLE_WITH_CANDLE].animation),
|
||||
sAnimations[EN_DNO_ANIM_IDLE_WITH_CANDLE].mode,
|
||||
sAnimations[EN_DNO_ANIM_IDLE_WITH_CANDLE].morphFrames);
|
||||
Animation_Change(&this->skelAnime, sAnimationSpeedInfo[EN_DNO_ANIM_IDLE_WITH_CANDLE].animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(sAnimationSpeedInfo[EN_DNO_ANIM_IDLE_WITH_CANDLE].animation),
|
||||
sAnimationSpeedInfo[EN_DNO_ANIM_IDLE_WITH_CANDLE].mode,
|
||||
sAnimationSpeedInfo[EN_DNO_ANIM_IDLE_WITH_CANDLE].morphFrames);
|
||||
this->unk_3BE = 0x3E93;
|
||||
this->unk_3C0 = 60.0f;
|
||||
this->unk_3B0 = 0;
|
||||
@ -252,8 +254,8 @@ void EnDno_Init(Actor* thisx, PlayState* play) {
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20) || CHECK_WEEKEVENTREG(WEEKEVENTREG_93_02)) {
|
||||
Actor_Kill(thisx);
|
||||
} else {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE_WITH_CANDLE,
|
||||
&this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_IDLE_WITH_CANDLE, &this->animIndex);
|
||||
thisx->room = -1;
|
||||
gSaveContext.timerStates[TIMER_ID_MINIGAME_1] = TIMER_STATE_STOP;
|
||||
this->lightNode = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfo);
|
||||
@ -267,7 +269,7 @@ void EnDno_Init(Actor* thisx, PlayState* play) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_23_20)) {
|
||||
Actor_Kill(thisx);
|
||||
} else {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_IDLE,
|
||||
&this->animIndex);
|
||||
this->unk_460 = SubS_FindActor(play, NULL, ACTORCAT_NPC, ACTOR_EN_DNQ);
|
||||
if (this->unk_460 == NULL) {
|
||||
@ -296,7 +298,7 @@ void EnDno_Destroy(Actor* thisx, PlayState* play) {
|
||||
|
||||
void func_80A71B04(EnDno* this, PlayState* play) {
|
||||
this->unk_452 = 0;
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_GRIEVE, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_GRIEVE, &this->animIndex);
|
||||
this->actionFunc = EnDno_DoNothing;
|
||||
}
|
||||
|
||||
@ -309,15 +311,15 @@ void func_80A71B68(EnDno* this, PlayState* play) {
|
||||
if (CHECK_QUEST_ITEM(QUEST_SONG_SONATA)) {
|
||||
if (CHECK_WEEKEVENTREG(WEEKEVENTREG_27_01)) {
|
||||
if (!(this->unk_3B0 & 0x20)) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_PRAYER_LOOP,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_PRAYER_LOOP,
|
||||
&this->animIndex);
|
||||
this->actor.shape.rot.y = Actor_WorldYawTowardActor(&this->actor, this->unk_460);
|
||||
}
|
||||
} else {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_IDLE, &this->animIndex);
|
||||
}
|
||||
} else {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_IDLE, &this->animIndex);
|
||||
}
|
||||
this->actionFunc = func_80A71C3C;
|
||||
}
|
||||
@ -326,23 +328,26 @@ void func_80A71C3C(EnDno* this, PlayState* play) {
|
||||
switch (this->animIndex) {
|
||||
case EN_DNO_ANIM_IMPLORE_LOOP:
|
||||
case EN_DNO_ANIM_IMPLORE_START:
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IMPLORE_END, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_IMPLORE_END,
|
||||
&this->animIndex);
|
||||
break;
|
||||
|
||||
case EN_DNO_ANIM_FAREWELL:
|
||||
case EN_DNO_ANIM_IMPLORE_END:
|
||||
if (this->skelAnime.curFrame == this->skelAnime.endFrame) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_IDLE,
|
||||
&this->animIndex);
|
||||
}
|
||||
break;
|
||||
|
||||
case EN_DNO_ANIM_TALK:
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_PRAYER_START, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_PRAYER_START,
|
||||
&this->animIndex);
|
||||
break;
|
||||
|
||||
case EN_DNO_ANIM_PRAYER_START:
|
||||
if (this->skelAnime.curFrame == this->skelAnime.endFrame) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_PRAYER_LOOP,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_PRAYER_LOOP,
|
||||
&this->animIndex);
|
||||
}
|
||||
|
||||
@ -350,6 +355,9 @@ void func_80A71C3C(EnDno* this, PlayState* play) {
|
||||
Math_SmoothStepToS(&this->actor.shape.rot.y, Actor_WorldYawTowardActor(&this->actor, this->unk_460), 2,
|
||||
0xE38, 0x222);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if ((this->animIndex == EN_DNO_ANIM_IDLE) && (this->actor.xzDistToPlayer <= 120.0f)) {
|
||||
@ -404,8 +412,8 @@ void func_80A71F18(EnDno* this, PlayState* play) {
|
||||
Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0xE38)) {
|
||||
switch (this->textId) {
|
||||
case 0x80B:
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IMPLORE_START,
|
||||
&this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_IMPLORE_START, &this->animIndex);
|
||||
|
||||
case 0x811:
|
||||
Message_StartTextbox(play, this->textId, &this->actor);
|
||||
@ -414,15 +422,18 @@ void func_80A71F18(EnDno* this, PlayState* play) {
|
||||
case 0x80C:
|
||||
case 0x80F:
|
||||
if (this->animIndex == EN_DNO_ANIM_IDLE) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_GREETING,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_GREETING,
|
||||
&this->animIndex);
|
||||
} else if ((this->animIndex == EN_DNO_ANIM_GREETING) &&
|
||||
(this->skelAnime.curFrame == this->skelAnime.endFrame)) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_TALK,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_TALK,
|
||||
&this->animIndex);
|
||||
Message_StartTextbox(play, this->textId, &this->actor);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -432,8 +443,8 @@ void func_80A71F18(EnDno* this, PlayState* play) {
|
||||
switch (this->animIndex) {
|
||||
case EN_DNO_ANIM_IMPLORE_START:
|
||||
if (this->skelAnime.curFrame == this->skelAnime.endFrame) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IMPLORE_LOOP,
|
||||
&this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_IMPLORE_LOOP, &this->animIndex);
|
||||
}
|
||||
Math_ScaledStepToS(&this->actor.shape.rot.y,
|
||||
Actor_WorldYawTowardActor(&this->actor, this->unk_460), 0x71C);
|
||||
@ -442,11 +453,14 @@ void func_80A71F18(EnDno* this, PlayState* play) {
|
||||
case EN_DNO_ANIM_IMPLORE_END:
|
||||
if (this->skelAnime.curFrame == this->skelAnime.endFrame) {
|
||||
Message_CloseTextbox(play);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_IDLE,
|
||||
&this->animIndex);
|
||||
func_80A71B68(this, play);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -459,15 +473,15 @@ void func_80A71F18(EnDno* this, PlayState* play) {
|
||||
switch (this->animIndex) {
|
||||
case EN_DNO_ANIM_IMPLORE_START:
|
||||
if (this->skelAnime.curFrame == this->skelAnime.endFrame) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IMPLORE_LOOP,
|
||||
&this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_IMPLORE_LOOP, &this->animIndex);
|
||||
}
|
||||
break;
|
||||
|
||||
case EN_DNO_ANIM_IMPLORE_LOOP:
|
||||
if (Message_ShouldAdvance(play)) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IMPLORE_END,
|
||||
&this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_IMPLORE_END, &this->animIndex);
|
||||
play->msgCtx.msgMode = 0x44;
|
||||
}
|
||||
break;
|
||||
@ -475,11 +489,14 @@ void func_80A71F18(EnDno* this, PlayState* play) {
|
||||
case EN_DNO_ANIM_IMPLORE_END:
|
||||
if (this->skelAnime.curFrame == this->skelAnime.endFrame) {
|
||||
Message_CloseTextbox(play);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_IDLE,
|
||||
&this->animIndex);
|
||||
func_80A71B68(this, play);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -497,11 +514,11 @@ void func_80A71F18(EnDno* this, PlayState* play) {
|
||||
|
||||
case 0x80E:
|
||||
if (this->animIndex == EN_DNO_ANIM_TALK) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_FAREWELL,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_FAREWELL,
|
||||
&this->animIndex);
|
||||
} else if (this->animIndex == EN_DNO_ANIM_FAREWELL) {
|
||||
if (this->skelAnime.curFrame == this->skelAnime.endFrame) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_IDLE,
|
||||
&this->animIndex);
|
||||
}
|
||||
} else if ((this->animIndex == EN_DNO_ANIM_IDLE) && Message_ShouldAdvance(play)) {
|
||||
@ -526,16 +543,19 @@ void func_80A71F18(EnDno* this, PlayState* play) {
|
||||
|
||||
switch (this->animIndex) {
|
||||
case EN_DNO_ANIM_TALK:
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_PRAYER_START,
|
||||
&this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_PRAYER_START, &this->animIndex);
|
||||
break;
|
||||
|
||||
case EN_DNO_ANIM_PRAYER_START:
|
||||
if (this->skelAnime.curFrame == this->skelAnime.endFrame) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_PRAYER_LOOP,
|
||||
&this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_PRAYER_LOOP, &this->animIndex);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -545,6 +565,9 @@ void func_80A71F18(EnDno* this, PlayState* play) {
|
||||
func_80A71B68(this, play);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -552,7 +575,8 @@ void func_80A71F18(EnDno* this, PlayState* play) {
|
||||
|
||||
void func_80A72438(EnDno* this, PlayState* play) {
|
||||
this->unk_452 = 1;
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE_WITH_CANDLE, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_IDLE_WITH_CANDLE,
|
||||
&this->animIndex);
|
||||
this->actor.textId = 0;
|
||||
if (Flags_GetSwitch(play, EN_DNO_GET_RACE_STARTED_SWITCH_FLAG(&this->actor))) {
|
||||
this->unk_454 = 1.0f;
|
||||
@ -599,7 +623,7 @@ void func_80A725F8(EnDno* this, PlayState* play) {
|
||||
case 0:
|
||||
if (this->animIndex == EN_DNO_ANIM_IDLE_WITH_CANDLE) {
|
||||
if (Math_ScaledStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0x2D8)) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_GREETING_WITH_CANDLE, &this->animIndex);
|
||||
}
|
||||
} else if ((this->animIndex == EN_DNO_ANIM_GREETING_WITH_CANDLE) &&
|
||||
@ -611,8 +635,8 @@ void func_80A725F8(EnDno* this, PlayState* play) {
|
||||
} else {
|
||||
Message_StartTextbox(play, 0x800, &this->actor);
|
||||
}
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE_WITH_CANDLE,
|
||||
&this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_IDLE_WITH_CANDLE, &this->animIndex);
|
||||
}
|
||||
break;
|
||||
|
||||
@ -626,6 +650,9 @@ void func_80A725F8(EnDno* this, PlayState* play) {
|
||||
case 3:
|
||||
Message_StartTextbox(play, 0x804, &this->actor);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -647,7 +674,7 @@ void func_80A725F8(EnDno* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_TALK_WITH_PARSOL_AND_CANDLE, &this->animIndex);
|
||||
Message_StartTextbox(play, 0x803, &this->actor);
|
||||
}
|
||||
@ -664,7 +691,7 @@ void func_80A725F8(EnDno* this, PlayState* play) {
|
||||
play->msgCtx.msgMode = 0x44;
|
||||
this->unk_452 = 1;
|
||||
this->unk_454 = 0.0f;
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_OPEN_PARASOL,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_OPEN_PARASOL,
|
||||
&this->animIndex);
|
||||
}
|
||||
break;
|
||||
@ -691,7 +718,7 @@ void func_80A725F8(EnDno* this, PlayState* play) {
|
||||
case 0x804:
|
||||
if (this->animIndex == EN_DNO_ANIM_IDLE_WITH_CANDLE) {
|
||||
if (Message_ShouldAdvance(play)) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo,
|
||||
EN_DNO_ANIM_GREETING_WITH_CANDLE, &this->animIndex);
|
||||
if (!(this->unk_3B0 & 0x40)) {
|
||||
func_80A72CF8(this, play);
|
||||
@ -720,7 +747,8 @@ void func_80A725F8(EnDno* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A72AE4(EnDno* this, PlayState* play) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_START_RACE_START, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_START_RACE_START,
|
||||
&this->animIndex);
|
||||
func_80A714B4(this, play);
|
||||
this->actionFunc = func_80A72B3C;
|
||||
}
|
||||
@ -747,7 +775,8 @@ void func_80A72BA4(EnDno* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A72C04(EnDno* this, PlayState* play) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_START_RACE_START, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_START_RACE_START,
|
||||
&this->animIndex);
|
||||
this->actor.flags |= ACTOR_FLAG_CANT_LOCK_ON;
|
||||
this->actor.flags &= ~(ACTOR_FLAG_1 | ACTOR_FLAG_8);
|
||||
Math_Vec3f_Copy(&this->unk_334, &this->actor.world.pos);
|
||||
@ -826,26 +855,29 @@ s32 EnDno_ActorPathing_Move(PlayState* play, ActorPathing* actorPath) {
|
||||
}
|
||||
|
||||
void func_80A730A0(EnDno* this, PlayState* play) {
|
||||
s32 phi_a2;
|
||||
s32 nextAnimIndex;
|
||||
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
phi_a2 = -1;
|
||||
nextAnimIndex = EN_DNO_ANIM_NONE;
|
||||
switch (this->animIndex) {
|
||||
case EN_DNO_ANIM_START_RACE_START:
|
||||
if (this->unk_44E >= 20) {
|
||||
phi_a2 = EN_DNO_ANIM_START_RACE_END;
|
||||
nextAnimIndex = EN_DNO_ANIM_START_RACE_END;
|
||||
} else {
|
||||
this->unk_44E = 20;
|
||||
}
|
||||
break;
|
||||
|
||||
case EN_DNO_ANIM_START_RACE_END:
|
||||
phi_a2 = EN_DNO_ANIM_FLY;
|
||||
nextAnimIndex = EN_DNO_ANIM_FLY;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (phi_a2 >= 0) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, phi_a2, &this->animIndex);
|
||||
if (nextAnimIndex > EN_DNO_ANIM_NONE) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, nextAnimIndex, &this->animIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@ -891,11 +923,12 @@ void func_80A732C8(EnDno* this, PlayState* play) {
|
||||
if (Math_ScaledStepToS(&this->actor.world.rot.y, this->actor.yawTowardsPlayer, 0x71C)) {
|
||||
this->unk_3B0 |= 4;
|
||||
this->unk_44E = 3;
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_CLOSE_PARASOL, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_CLOSE_PARASOL,
|
||||
&this->animIndex);
|
||||
}
|
||||
} else if (this->unk_44E == 3) {
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_IDLE_WITH_CANDLE,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_IDLE_WITH_CANDLE,
|
||||
&this->animIndex);
|
||||
func_80A72438(this, play);
|
||||
} else {
|
||||
@ -915,8 +948,8 @@ void func_80A732C8(EnDno* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80A73408(EnDno* this, PlayState* play) {
|
||||
s32 phi_a2;
|
||||
u8 sp33 = true;
|
||||
s32 nextAnimIndex;
|
||||
u8 changeAnim = true;
|
||||
s32 cueChannel;
|
||||
|
||||
if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_475)) {
|
||||
@ -924,21 +957,21 @@ void func_80A73408(EnDno* this, PlayState* play) {
|
||||
if (this->cueId != play->csCtx.actorCues[cueChannel]->id) {
|
||||
switch (play->csCtx.actorCues[cueChannel]->id) {
|
||||
case 1:
|
||||
phi_a2 = 13;
|
||||
nextAnimIndex = EN_DNO_ANIM_IDLE;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
phi_a2 = 17;
|
||||
nextAnimIndex = EN_DNO_ANIM_SHOCK_START;
|
||||
break;
|
||||
|
||||
default:
|
||||
phi_a2 = 0;
|
||||
sp33 = false;
|
||||
nextAnimIndex = EN_DNO_ANIM_START_RACE_START;
|
||||
changeAnim = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (sp33) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, phi_a2, &this->animIndex);
|
||||
if (changeAnim) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, nextAnimIndex, &this->animIndex);
|
||||
}
|
||||
}
|
||||
Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel);
|
||||
@ -947,7 +980,7 @@ void func_80A73408(EnDno* this, PlayState* play) {
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
switch (this->animIndex) {
|
||||
case EN_DNO_ANIM_SHOCK_START:
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_SHOCK_LOOP,
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, EN_DNO_ANIM_SHOCK_LOOP,
|
||||
&this->animIndex);
|
||||
break;
|
||||
|
||||
@ -983,7 +1016,7 @@ s32 EnDno_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
||||
EnDno* this = THIS;
|
||||
|
||||
*dList = NULL;
|
||||
if (limbIndex == 9) {
|
||||
if (limbIndex == DEKU_BUTLER_LIMB_EYES) {
|
||||
rot->x += this->unk_466;
|
||||
}
|
||||
return false;
|
||||
@ -1001,36 +1034,47 @@ void EnDno_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
||||
if (*dList != NULL) {
|
||||
switch (this->unk_452) {
|
||||
case 0:
|
||||
if ((limbIndex != 25) && (limbIndex != 26) && (limbIndex != 13) && (limbIndex != 15) &&
|
||||
(limbIndex != 16) && (limbIndex != 14)) {
|
||||
if ((limbIndex != DEKU_BUTLER_LIMB_CANDLE) && (limbIndex != DEKU_BUTLER_LIMB_CANDLE_WICK) &&
|
||||
(limbIndex != DEKU_BUTLER_LIMB_PARASOL_HANDLE) &&
|
||||
(limbIndex != DEKU_BUTLER_LIMB_PARASOL_LOWER_PETALS) &&
|
||||
(limbIndex != DEKU_BUTLER_LIMB_PARASOL_MIDDLE_PETALS) &&
|
||||
(limbIndex != DEKU_BUTLER_LIMB_PARASOL_UPPER_PETALS)) {
|
||||
phi_v0 = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if ((limbIndex != 26) && (limbIndex != 13) && (limbIndex != 15) && (limbIndex != 16) &&
|
||||
(limbIndex != 14)) {
|
||||
if ((limbIndex != DEKU_BUTLER_LIMB_CANDLE_WICK) && (limbIndex != DEKU_BUTLER_LIMB_PARASOL_HANDLE) &&
|
||||
(limbIndex != DEKU_BUTLER_LIMB_PARASOL_LOWER_PETALS) &&
|
||||
(limbIndex != DEKU_BUTLER_LIMB_PARASOL_MIDDLE_PETALS) &&
|
||||
(limbIndex != DEKU_BUTLER_LIMB_PARASOL_UPPER_PETALS)) {
|
||||
phi_v0 = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if ((limbIndex != 15) && (limbIndex != 16)) {
|
||||
if ((limbIndex != DEKU_BUTLER_LIMB_PARASOL_LOWER_PETALS) &&
|
||||
(limbIndex != DEKU_BUTLER_LIMB_PARASOL_MIDDLE_PETALS)) {
|
||||
phi_v0 = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
if ((limbIndex != 16) && (limbIndex != 14)) {
|
||||
if ((limbIndex != DEKU_BUTLER_LIMB_PARASOL_MIDDLE_PETALS) &&
|
||||
(limbIndex != DEKU_BUTLER_LIMB_PARASOL_UPPER_PETALS)) {
|
||||
phi_v0 = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if ((limbIndex != 15) && (limbIndex != 14)) {
|
||||
if ((limbIndex != DEKU_BUTLER_LIMB_PARASOL_LOWER_PETALS) &&
|
||||
(limbIndex != DEKU_BUTLER_LIMB_PARASOL_UPPER_PETALS)) {
|
||||
phi_v0 = true;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1038,7 +1082,7 @@ void EnDno_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
Gfx_SetupDL25_Opa(play->state.gfxCtx);
|
||||
if (limbIndex == 13) {
|
||||
if (limbIndex == DEKU_BUTLER_LIMB_PARASOL_HANDLE) {
|
||||
Matrix_Scale(this->unk_454, this->unk_454, this->unk_454, MTXMODE_APPLY);
|
||||
Matrix_RotateXS(this->unk_45C, MTXMODE_APPLY);
|
||||
}
|
||||
@ -1051,7 +1095,7 @@ void EnDno_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
||||
if ((this->unk_3B0 & 1) && (limbIndex == 26)) {
|
||||
if ((this->unk_3B0 & 1) && (limbIndex == DEKU_BUTLER_LIMB_CANDLE_WICK)) {
|
||||
u32 frames;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
@ -93,36 +93,37 @@ typedef enum {
|
||||
/* 22 */ DEKU_PRINCESS_ANIM_BOUNCE_START,
|
||||
/* 23 */ DEKU_PRINCESS_ANIM_BOUNCE_LOOP,
|
||||
/* 24 */ DEKU_PRINCESS_ANIM_GLARE_START,
|
||||
/* 25 */ DEKU_PRINCESS_ANIM_GLARE_LOOP
|
||||
} EnDnpAnimation;
|
||||
/* 25 */ DEKU_PRINCESS_ANIM_GLARE_LOOP,
|
||||
/* 26 */ DEKU_PRINCESS_ANIM_MAX
|
||||
} DekuPrincessAnimation;
|
||||
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &gDekuPrincessJumpKickAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPrincessHurryAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gDekuPrincessHurryAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessHurryEndAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPrincessScoldAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPrincessLaughStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPrincessLaughLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessTurnAroundAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDekuPrincessBowAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessThinkStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPrincessThinkLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessArmsTogetherStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPrincessArmsTogetherLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessGreetingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gDekuPrincessIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gDekuPrincessAngryStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPrincessAngryLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessJumpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuPrincessBounceStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDekuPrincessBounceLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuPrincessGlareStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDekuPrincessGlareLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
static AnimationInfoS sAnimationInfo[DEKU_PRINCESS_ANIM_MAX] = {
|
||||
{ &gDekuPrincessJumpKickAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_PRINCESS_ANIM_JUMP_KICK
|
||||
{ &gDekuPrincessHurryAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // DEKU_PRINCESS_ANIM_HURRY
|
||||
{ &gDekuPrincessHurryAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_CUTSCENE_HURRY
|
||||
{ &gDekuPrincessHurryEndAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_PRINCESS_ANIM_HURRY_END
|
||||
{ &gDekuPrincessScoldAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_PRINCESS_ANIM_SCOLD
|
||||
{ &gDekuPrincessLaughStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_PRINCESS_ANIM_LAUGH_START
|
||||
{ &gDekuPrincessLaughLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_LAUGH_LOOP
|
||||
{ &gDekuPrincessTurnAroundAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // DEKU_PRINCESS_ANIM_TURN_AROUND
|
||||
{ &gDekuPrincessBowAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_BOW
|
||||
{ &gDekuPrincessRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_RUN
|
||||
{ &gDekuPrincessThinkStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_PRINCESS_ANIM_THINK_START
|
||||
{ &gDekuPrincessThinkLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_THINK_LOOP
|
||||
{ &gDekuPrincessArmsTogetherStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_PRINCESS_ANIM_ARMS_TOGETHER_START
|
||||
{ &gDekuPrincessArmsTogetherLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_ARMS_TOGETHER_LOOP
|
||||
{ &gDekuPrincessGreetingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_GREETING
|
||||
{ &gDekuPrincessIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // DEKU_PRINCESS_ANIM_IDLE
|
||||
{ &gDekuPrincessIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_CUTSCENE_IDLE
|
||||
{ &gDekuPrincessWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_UNUSED_WALK
|
||||
{ &gDekuPrincessWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // DEKU_PRINCESS_ANIM_WALK
|
||||
{ &gDekuPrincessAngryStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_PRINCESS_ANIM_ANGRY_START
|
||||
{ &gDekuPrincessAngryLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_ANGRY_LOOP
|
||||
{ &gDekuPrincessJumpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_PRINCESS_ANIM_JUMP
|
||||
{ &gDekuPrincessBounceStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // DEKU_PRINCESS_ANIM_BOUNCE_START
|
||||
{ &gDekuPrincessBounceLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_BOUNCE_LOOP
|
||||
{ &gDekuPrincessGlareStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // DEKU_PRINCESS_ANIM_GLARE_START
|
||||
{ &gDekuPrincessGlareLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_PRINCESS_ANIM_GLARE_LOOP
|
||||
};
|
||||
|
||||
static s32 D_80B3DE58[] = {
|
||||
@ -173,14 +174,14 @@ s32 func_80B3CA20(EnDnp* this) {
|
||||
}
|
||||
|
||||
s32 EnDnp_ChangeAnim(EnDnp* this, s32 animIndex) {
|
||||
s32 ret = false;
|
||||
s32 didAnimChange = false;
|
||||
|
||||
if (animIndex != this->animIndex) {
|
||||
if (this->animIndex != animIndex) {
|
||||
this->animIndex = animIndex;
|
||||
ret = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, animIndex);
|
||||
didAnimChange = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, animIndex);
|
||||
}
|
||||
|
||||
return ret;
|
||||
return didAnimChange;
|
||||
}
|
||||
|
||||
void func_80B3CC80(EnDnp* this, PlayState* play) {
|
||||
@ -287,7 +288,7 @@ s32 func_80B3D044(EnDnp* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80B3D11C(EnDnp* this, PlayState* play) {
|
||||
static s32 sCsAnimations[] = {
|
||||
static s32 sCsAnimIndex[] = {
|
||||
DEKU_PRINCESS_ANIM_JUMP_KICK, DEKU_PRINCESS_ANIM_CUTSCENE_IDLE, DEKU_PRINCESS_ANIM_GREETING,
|
||||
DEKU_PRINCESS_ANIM_THINK_START, DEKU_PRINCESS_ANIM_WALK, DEKU_PRINCESS_ANIM_ARMS_TOGETHER_START,
|
||||
DEKU_PRINCESS_ANIM_LAUGH_START, DEKU_PRINCESS_ANIM_TURN_AROUND, DEKU_PRINCESS_ANIM_CUTSCENE_HURRY,
|
||||
@ -306,7 +307,7 @@ void func_80B3D11C(EnDnp* this, PlayState* play) {
|
||||
cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_101);
|
||||
cueId = play->csCtx.actorCues[cueChannel]->id;
|
||||
if (this->cueId != (u8)cueId) {
|
||||
EnDnp_ChangeAnim(this, sCsAnimations[cueId]);
|
||||
EnDnp_ChangeAnim(this, sCsAnimIndex[cueId]);
|
||||
if (this->animIndex == DEKU_PRINCESS_ANIM_CUTSCENE_IDLE) {
|
||||
this->unk_322 |= 8;
|
||||
} else {
|
||||
|
@ -59,27 +59,52 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
|
||||
static CollisionCheckInfoInit2 sColChkInfoInit = { 1, 0, 0, 0, MASS_IMMOVABLE };
|
||||
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &gDekuKingIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gDekuKingIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuKingSurpriseAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuKingJumpedOnStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDekuKingJumpedOnLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuKingJumpedOnEndAnim, 0.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDekuKingJumpedOnEndAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuKingLyingDownTwitchAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuKingWailLoopAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuKingFootStampStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuKingFootStampLoopAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuKingWailStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuKingMarchAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDekuKingSpinScepterAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gDekuKingIntimidateAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuKingPointScepterAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuKingJumpAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuKingLaughAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
|
||||
{ &gDekuKingFootStampLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gDekuKingLaughAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
typedef enum {
|
||||
/* -1 */ DEKU_KING_ANIM_NONE = -1,
|
||||
/* 0 */ DEKU_KING_ANIM_IDLE,
|
||||
/* 1 */ DEKU_KING_ANIM_IDLE_MORPH,
|
||||
/* 2 */ DEKU_KING_ANIM_SURPRISE,
|
||||
/* 3 */ DEKU_KING_ANIM_JUMPED_ON_START,
|
||||
/* 4 */ DEKU_KING_ANIM_JUMPED_ON_LOOP,
|
||||
/* 5 */ DEKU_KING_ANIM_JUMPED_ON_END,
|
||||
/* 6 */ DEKU_KING_ANIM_JUMPED_ON_END_MORPH,
|
||||
/* 7 */ DEKU_KING_ANIM_LYING_DOWN_TWITCH,
|
||||
/* 8 */ DEKU_KING_ANIM_WAIL,
|
||||
/* 9 */ DEKU_KING_ANIM_FOOT_STAMP_START,
|
||||
/* 10 */ DEKU_KING_ANIM_FOOT_STAMP_ONCE,
|
||||
/* 11 */ DEKU_KING_ANIM_WAIL_START,
|
||||
/* 12 */ DEKU_KING_ANIM_MARCH,
|
||||
/* 13 */ DEKU_KING_ANIM_SPIN_SCEPTER,
|
||||
/* 14 */ DEKU_KING_ANIM_INTIMIDATE,
|
||||
/* 15 */ DEKU_KING_ANIM_POINT_SCEPTER,
|
||||
/* 16 */ DEKU_KING_ANIM_JUMP,
|
||||
/* 17 */ DEKU_KING_ANIM_LAUGH_ONCE,
|
||||
/* 18 */ DEKU_KING_ANIM_FOOT_STAMP_LOOP,
|
||||
/* 19 */ DEKU_KING_ANIM_LAUGH_LOOP,
|
||||
/* 36 */ ENDNQ_ANIM_MAX
|
||||
} EnDnkAnimation;
|
||||
|
||||
static AnimationInfoS sAnimationInfo[ENDNQ_ANIM_MAX] = {
|
||||
{ &gDekuKingIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // DEKU_KING_ANIM_IDLE
|
||||
{ &gDekuKingIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_KING_ANIM_IDLE_MORPH
|
||||
{ &gDekuKingSurpriseAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_KING_ANIM_SURPRISE
|
||||
{ &gDekuKingJumpedOnStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // DEKU_KING_ANIM_JUMPED_ON_START
|
||||
{ &gDekuKingJumpedOnLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_KING_ANIM_JUMPED_ON_LOOP
|
||||
{ &gDekuKingJumpedOnEndAnim, 0.0f, 0, -1, ANIMMODE_ONCE, 0 }, // DEKU_KING_ANIM_JUMPED_ON_END
|
||||
{ &gDekuKingJumpedOnEndAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_KING_ANIM_JUMPED_ON_END_MORPH
|
||||
{ &gDekuKingLyingDownTwitchAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_KING_ANIM_LYING_DOWN_TWITCH
|
||||
{ &gDekuKingWailLoopAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_KING_ANIM_WAIL
|
||||
{ &gDekuKingFootStampStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_KING_ANIM_FOOT_STAMP_START
|
||||
{ &gDekuKingFootStampLoopAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_KING_ANIM_FOOT_STAMP_ONCE
|
||||
{ &gDekuKingWailStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_KING_ANIM_WAIL_START
|
||||
{ &gDekuKingMarchAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // DEKU_KING_ANIM_MARCH
|
||||
{ &gDekuKingSpinScepterAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // DEKU_KING_ANIM_SPIN_SCEPTER
|
||||
{ &gDekuKingIntimidateAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_KING_ANIM_INTIMIDATE
|
||||
{ &gDekuKingPointScepterAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_KING_ANIM_POINT_SCEPTER
|
||||
{ &gDekuKingJumpAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_KING_ANIM_JUMP
|
||||
{ &gDekuKingLaughAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 }, // DEKU_KING_ANIM_LAUGH_ONCE
|
||||
{ &gDekuKingFootStampLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_KING_ANIM_FOOT_STAMP_LOOP
|
||||
{ &gDekuKingLaughAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // DEKU_KING_ANIM_LAUGH_LOOP
|
||||
};
|
||||
|
||||
s32 EnDnq_ValidatePictograph(PlayState* play, Actor* thisx) {
|
||||
@ -87,30 +112,30 @@ s32 EnDnq_ValidatePictograph(PlayState* play, Actor* thisx) {
|
||||
480.0f, 0x38E3);
|
||||
}
|
||||
|
||||
s32 func_80A5257C(EnDnq* this, s32 arg1) {
|
||||
s32 phi_v1 = false;
|
||||
s32 ret = false;
|
||||
s32 EnDnq_ChangeAnim(EnDnq* this, s32 animIndex) {
|
||||
s32 changeAnim = false;
|
||||
s32 didAnimChange = false;
|
||||
|
||||
if ((arg1 == 0) || (arg1 == 1)) {
|
||||
switch (this->unk_398) {
|
||||
case 0:
|
||||
case 1:
|
||||
if ((animIndex == DEKU_KING_ANIM_IDLE) || (animIndex == DEKU_KING_ANIM_IDLE_MORPH)) {
|
||||
switch (this->animIndex) {
|
||||
case DEKU_KING_ANIM_IDLE:
|
||||
case DEKU_KING_ANIM_IDLE_MORPH:
|
||||
break;
|
||||
|
||||
default:
|
||||
phi_v1 = true;
|
||||
changeAnim = true;
|
||||
break;
|
||||
}
|
||||
} else if (arg1 != this->unk_398) {
|
||||
phi_v1 = true;
|
||||
} else if (this->animIndex != animIndex) {
|
||||
changeAnim = true;
|
||||
}
|
||||
|
||||
if (phi_v1) {
|
||||
this->unk_398 = arg1;
|
||||
ret = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, arg1);
|
||||
if (changeAnim) {
|
||||
this->animIndex = animIndex;
|
||||
didAnimChange = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, animIndex);
|
||||
}
|
||||
|
||||
return ret;
|
||||
return didAnimChange;
|
||||
}
|
||||
|
||||
void func_80A52604(EnDnq* this, PlayState* play) {
|
||||
@ -143,45 +168,48 @@ s32 func_80A52648(EnDnq* this, PlayState* play) {
|
||||
|
||||
s32 func_80A526F8(EnDnq* this) {
|
||||
if (this->unk_386 == 0) {
|
||||
func_80A5257C(this, 8);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_WAIL);
|
||||
this->unk_38C = ((s32)(Rand_ZeroOne() * 100.0f) % 4) + 3;
|
||||
this->unk_388 = 0;
|
||||
this->unk_386 = 1;
|
||||
} else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
switch (this->unk_398) {
|
||||
case 8:
|
||||
switch (this->animIndex) {
|
||||
case DEKU_KING_ANIM_WAIL:
|
||||
if (DECR(this->unk_38C) == 0) {
|
||||
func_80A5257C(this, 9);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_FOOT_STAMP_START);
|
||||
}
|
||||
break;
|
||||
|
||||
case 9:
|
||||
func_80A5257C(this, 10);
|
||||
case DEKU_KING_ANIM_FOOT_STAMP_START:
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_FOOT_STAMP_ONCE);
|
||||
this->unk_38C = ((s32)(Rand_ZeroOne() * 100.0f) % 3) + 2;
|
||||
break;
|
||||
|
||||
case 10:
|
||||
case DEKU_KING_ANIM_FOOT_STAMP_ONCE:
|
||||
if (DECR(this->unk_38C) == 0) {
|
||||
this->unk_388++;
|
||||
if ((this->unk_38C != 0) || (this->unk_388 < 2)) {
|
||||
func_80A5257C(this, 11);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_WAIL_START);
|
||||
} else {
|
||||
func_80A5257C(this, 17);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_LAUGH_ONCE);
|
||||
this->unk_38C = 4;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 11:
|
||||
func_80A5257C(this, 8);
|
||||
case DEKU_KING_ANIM_WAIL_START:
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_WAIL);
|
||||
this->unk_38C = ((s32)(Rand_ZeroOne() * 100.0f) % 4) + 3;
|
||||
break;
|
||||
|
||||
case 17:
|
||||
case DEKU_KING_ANIM_LAUGH_ONCE:
|
||||
if (DECR(this->unk_38C) == 0) {
|
||||
this->unk_386 = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (this->unk_386 != 0) {
|
||||
@ -197,7 +225,7 @@ s32 func_80A52944(EnDnq* this) {
|
||||
s16 phi_v1 = 0;
|
||||
|
||||
if (this->unk_386 == 0) {
|
||||
func_80A5257C(this, 12);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_MARCH);
|
||||
this->unk_38C = 1;
|
||||
this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y;
|
||||
this->unk_386 = 1;
|
||||
@ -206,7 +234,7 @@ s32 func_80A52944(EnDnq* this) {
|
||||
} else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
this->unk_386++;
|
||||
if (this->unk_386 >= 6) {
|
||||
func_80A5257C(this, 12);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_MARCH);
|
||||
this->unk_386 = 1;
|
||||
phi_v1 = this->unk_38C * 0x2000;
|
||||
} else if (this->unk_386 <= 3) {
|
||||
@ -214,7 +242,7 @@ s32 func_80A52944(EnDnq* this) {
|
||||
this->skelAnime.curFrame = 0.0f;
|
||||
phi_v1 = this->unk_38C * 0x2000;
|
||||
} else {
|
||||
func_80A5257C(this, 13);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_SPIN_SCEPTER);
|
||||
this->skelAnime.curFrame = 0.0f;
|
||||
}
|
||||
this->picto.actor.shape.rot.y = this->picto.actor.world.rot.y;
|
||||
@ -227,7 +255,8 @@ s32 func_80A52944(EnDnq* this) {
|
||||
|
||||
s32 func_80A52A78(EnDnq* this, PlayState* play) {
|
||||
static s32 D_80A535DC[] = {
|
||||
17, 12, 14, 13, 16,
|
||||
DEKU_KING_ANIM_LAUGH_ONCE, DEKU_KING_ANIM_MARCH, DEKU_KING_ANIM_INTIMIDATE,
|
||||
DEKU_KING_ANIM_SPIN_SCEPTER, DEKU_KING_ANIM_JUMP,
|
||||
};
|
||||
|
||||
if (this->unk_38A == 0) {
|
||||
@ -247,7 +276,7 @@ s32 func_80A52A78(EnDnq* this, PlayState* play) {
|
||||
this->unk_388 += 3;
|
||||
this->unk_388 %= 5;
|
||||
}
|
||||
func_80A5257C(this, D_80A535DC[this->unk_388]);
|
||||
EnDnq_ChangeAnim(this, D_80A535DC[this->unk_388]);
|
||||
this->skelAnime.curFrame = 0.0f;
|
||||
}
|
||||
|
||||
@ -257,36 +286,39 @@ s32 func_80A52A78(EnDnq* this, PlayState* play) {
|
||||
|
||||
s32 func_80A52B68(EnDnq* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
u16 temp = play->msgCtx.currentTextId;
|
||||
u16 textId = play->msgCtx.currentTextId;
|
||||
|
||||
if ((player->stateFlags1 & PLAYER_STATE1_40) && (player->talkActor == &this->picto.actor)) {
|
||||
switch (temp) {
|
||||
switch (textId) {
|
||||
case 0x89B:
|
||||
func_80A5257C(this, 18);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_FOOT_STAMP_LOOP);
|
||||
break;
|
||||
|
||||
case 0x89E:
|
||||
func_80A5257C(this, 19);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_LAUGH_LOOP);
|
||||
break;
|
||||
|
||||
case 0x898:
|
||||
case 0x89F:
|
||||
func_80A5257C(this, 16);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_JUMP);
|
||||
break;
|
||||
|
||||
case 0x899:
|
||||
case 0x89D:
|
||||
func_80A5257C(this, 14);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_INTIMIDATE);
|
||||
break;
|
||||
|
||||
case 0x89A:
|
||||
case 0x89C:
|
||||
func_80A5257C(this, 15);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_POINT_SCEPTER);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this->unk_39C = 1;
|
||||
} else if (this->unk_39C != 0) {
|
||||
func_80A5257C(this, 0);
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_IDLE);
|
||||
this->unk_39C = 0;
|
||||
this->unk_37E = 0;
|
||||
this->unk_386 = 0;
|
||||
@ -388,9 +420,11 @@ void func_80A52FB8(EnDnq* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A53038(EnDnq* this, PlayState* play) {
|
||||
static s32 D_80A535FC[] = {
|
||||
0, 1, 2, 3, 5, 6,
|
||||
void EnDnq_HandleCutscene(EnDnq* this, PlayState* play) {
|
||||
static s32 sCsAnimIndex[] = {
|
||||
DEKU_KING_ANIM_IDLE, DEKU_KING_ANIM_IDLE_MORPH,
|
||||
DEKU_KING_ANIM_SURPRISE, DEKU_KING_ANIM_JUMPED_ON_START,
|
||||
DEKU_KING_ANIM_JUMPED_ON_END, DEKU_KING_ANIM_JUMPED_ON_END_MORPH,
|
||||
};
|
||||
s32 cueChannel;
|
||||
u32 cueId;
|
||||
@ -399,17 +433,18 @@ void func_80A53038(EnDnq* this, PlayState* play) {
|
||||
cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_105);
|
||||
cueId = play->csCtx.actorCues[cueChannel]->id;
|
||||
if (this->cueId != (u8)cueId) {
|
||||
func_80A5257C(this, D_80A535FC[cueId]);
|
||||
EnDnq_ChangeAnim(this, sCsAnimIndex[cueId]);
|
||||
this->cueId = cueId;
|
||||
}
|
||||
|
||||
if ((this->unk_398 == 4) && Animation_OnFrame(&this->skelAnime, 2.0f)) {
|
||||
if ((this->animIndex == DEKU_KING_ANIM_JUMPED_ON_LOOP) && Animation_OnFrame(&this->skelAnime, 2.0f)) {
|
||||
Actor_PlaySfx(&this->picto.actor, NA_SE_EN_KINGNUTS_DAMAGE);
|
||||
}
|
||||
|
||||
if (((this->unk_398 == 3) || (this->unk_398 == 6)) &&
|
||||
if (((this->animIndex == DEKU_KING_ANIM_JUMPED_ON_START) ||
|
||||
(this->animIndex == DEKU_KING_ANIM_JUMPED_ON_END_MORPH)) &&
|
||||
Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
func_80A5257C(this, this->unk_398 + 1);
|
||||
EnDnq_ChangeAnim(this, this->animIndex + 1);
|
||||
}
|
||||
|
||||
Cutscene_ActorTranslateAndYaw(&this->picto.actor, play, cueChannel);
|
||||
@ -422,8 +457,8 @@ void EnDnq_Init(Actor* thisx, PlayState* play) {
|
||||
ActorShape_Init(&this->picto.actor.shape, 0.0f, NULL, 14.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gDekuKingSkel, NULL, this->jointTable, this->morphTable,
|
||||
DEKU_KING_LIMB_MAX);
|
||||
this->unk_398 = -1;
|
||||
func_80A5257C(this, 0);
|
||||
this->animIndex = DEKU_KING_ANIM_NONE;
|
||||
EnDnq_ChangeAnim(this, DEKU_KING_ANIM_IDLE);
|
||||
Collider_InitAndSetCylinder(play, &this->collider, &this->picto.actor, &sCylinderInit);
|
||||
CollisionCheck_SetInfo2(&this->picto.actor.colChkInfo, DamageTable_Get(0x16), &sColChkInfoInit);
|
||||
Actor_SetScale(&this->picto.actor, 0.02f);
|
||||
@ -450,7 +485,7 @@ void EnDnq_Update(Actor* thisx, PlayState* play) {
|
||||
EnDnq* this = THIS;
|
||||
|
||||
if (!func_80A52D44(this, play) && func_80A52648(this, play)) {
|
||||
func_80A53038(this, play);
|
||||
EnDnq_HandleCutscene(this, play);
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
} else {
|
||||
this->actionFunc(this, play);
|
||||
|
@ -29,7 +29,7 @@ typedef struct EnDnq {
|
||||
/* 0x38C */ s16 unk_38C;
|
||||
/* 0x390 */ f32 unk_390;
|
||||
/* 0x394 */ f32 unk_394;
|
||||
/* 0x398 */ s32 unk_398;
|
||||
/* 0x398 */ s32 animIndex;
|
||||
/* 0x39C */ s32 unk_39C;
|
||||
/* 0x3A0 */ UNK_TYPE1 unk_3A0[0x4];
|
||||
/* 0x3A4 */ s32 unk_3A4;
|
||||
|
@ -19,20 +19,6 @@ void func_8092D330(EnDns* this, PlayState* play);
|
||||
void EnDns_DoNothing(EnDns* this, PlayState* play);
|
||||
void func_8092D4D8(EnDns* this, PlayState* play);
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ EN_DNS_ANIM_IDLE_1,
|
||||
/* 1 */ EN_DNS_ANIM_IDLE_2,
|
||||
/* 2 */ EN_DNS_ANIM_WALK_1,
|
||||
/* 3 */ EN_DNS_ANIM_WALK_2,
|
||||
/* 4 */ EN_DNS_ANIM_SURPRISE_START,
|
||||
/* 5 */ EN_DNS_ANIM_SURPRISE_LOOP,
|
||||
/* 6 */ EN_DNS_ANIM_RUN_START,
|
||||
/* 7 */ EN_DNS_ANIM_RUN_LOOP,
|
||||
/* 8 */ EN_DNS_ANIM_DANCE,
|
||||
/* 9 */ EN_DNS_ANIM_FLIP,
|
||||
/* 10 */ EN_DNS_ANIM_MAX
|
||||
} EnDnsAnimation;
|
||||
|
||||
static s32 D_8092DCB0[] = {
|
||||
0x00172000, 0x050E082F, 0x0C100E08, 0x200C1000, 0x00172000, 0x050E0830, 0x0C100E08, 0x210C1000,
|
||||
0x00172000, 0x050E0831, 0x0C100E08, 0x220C1000, 0x00172000, 0x050E0832, 0x0C100E08, 0x230C1000,
|
||||
@ -73,60 +59,75 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
|
||||
static CollisionCheckInfoInit2 sColChkInfoInit = { 1, 0, 0, 0, MASS_IMMOVABLE };
|
||||
|
||||
static AnimationInfoS sAnimationInfo[] = {
|
||||
{ &gKingsChamberDekuGuardIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKingsChamberDekuGuardIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gKingsChamberDekuGuardWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKingsChamberDekuGuardWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
|
||||
{ &gKingsChamberDekuGuardSurpriseStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gKingsChamberDekuGuardSurpriseLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKingsChamberDekuGuardRunStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gKingsChamberDekuGuardRunLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gKingsChamberDekuGuardDanceAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gKingsChamberDekuGuardFlipAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
typedef enum {
|
||||
/* -1 */ EN_DNS_ANIM_NONE = -1,
|
||||
/* 0 */ EN_DNS_ANIM_IDLE,
|
||||
/* 1 */ EN_DNS_ANIM_IDLE_MORPH,
|
||||
/* 2 */ EN_DNS_ANIM_WALK,
|
||||
/* 3 */ EN_DNS_ANIM_WALK_MORPH,
|
||||
/* 4 */ EN_DNS_ANIM_SURPRISE_START,
|
||||
/* 5 */ EN_DNS_ANIM_SURPRISE_LOOP,
|
||||
/* 6 */ EN_DNS_ANIM_RUN_START,
|
||||
/* 7 */ EN_DNS_ANIM_RUN_LOOP,
|
||||
/* 8 */ EN_DNS_ANIM_DANCE,
|
||||
/* 9 */ EN_DNS_ANIM_FLIP,
|
||||
/* 10 */ EN_DNS_ANIM_MAX
|
||||
} EnDnsAnimation;
|
||||
|
||||
static AnimationInfoS sAnimationInfo[EN_DNS_ANIM_MAX] = {
|
||||
{ &gKingsChamberDekuGuardIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // EN_DNS_ANIM_IDLE
|
||||
{ &gKingsChamberDekuGuardIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // EN_DNS_ANIM_IDLE_MORPH
|
||||
{ &gKingsChamberDekuGuardWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // EN_DNS_ANIM_WALK
|
||||
{ &gKingsChamberDekuGuardWalkAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 }, // EN_DNS_ANIM_WALK_MORPH
|
||||
{ &gKingsChamberDekuGuardSurpriseStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // EN_DNS_ANIM_SURPRISE_START
|
||||
{ &gKingsChamberDekuGuardSurpriseLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // EN_DNS_ANIM_SURPRISE_LOOP
|
||||
{ &gKingsChamberDekuGuardRunStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // EN_DNS_ANIM_RUN_START
|
||||
{ &gKingsChamberDekuGuardRunLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // EN_DNS_ANIM_RUN_LOOP
|
||||
{ &gKingsChamberDekuGuardDanceAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // EN_DNS_ANIM_DANCE
|
||||
{ &gKingsChamberDekuGuardFlipAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // EN_DNS_ANIM_FLIP
|
||||
};
|
||||
|
||||
void func_8092C5C0(EnDns* this) {
|
||||
s32 pad;
|
||||
|
||||
if (((this->animIndex == EN_DNS_ANIM_WALK_1) || (this->animIndex == EN_DNS_ANIM_WALK_2) ||
|
||||
if (((this->animIndex == EN_DNS_ANIM_WALK) || (this->animIndex == EN_DNS_ANIM_WALK_MORPH) ||
|
||||
(this->animIndex == EN_DNS_ANIM_RUN_START) || (this->animIndex == EN_DNS_ANIM_RUN_LOOP)) &&
|
||||
(Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 3.0f))) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_NUTS_WALK);
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_8092C63C(EnDns* this, s32 arg1) {
|
||||
s32 phi_v1 = false;
|
||||
s32 ret = false;
|
||||
s32 EnDns_ChangeAnim(EnDns* this, s32 animIndex) {
|
||||
s32 changeAnim = false;
|
||||
s32 didAnimChange = false;
|
||||
|
||||
switch (arg1) {
|
||||
case EN_DNS_ANIM_IDLE_1:
|
||||
case EN_DNS_ANIM_IDLE_2:
|
||||
if ((this->animIndex != EN_DNS_ANIM_IDLE_1) && (this->animIndex != EN_DNS_ANIM_IDLE_2)) {
|
||||
phi_v1 = true;
|
||||
switch (animIndex) {
|
||||
case EN_DNS_ANIM_IDLE:
|
||||
case EN_DNS_ANIM_IDLE_MORPH:
|
||||
if ((this->animIndex != EN_DNS_ANIM_IDLE) && (this->animIndex != EN_DNS_ANIM_IDLE_MORPH)) {
|
||||
changeAnim = true;
|
||||
}
|
||||
break;
|
||||
|
||||
case EN_DNS_ANIM_WALK_1:
|
||||
case EN_DNS_ANIM_WALK_2:
|
||||
if ((this->animIndex != EN_DNS_ANIM_WALK_1) && (this->animIndex != EN_DNS_ANIM_WALK_2)) {
|
||||
phi_v1 = true;
|
||||
case EN_DNS_ANIM_WALK:
|
||||
case EN_DNS_ANIM_WALK_MORPH:
|
||||
if ((this->animIndex != EN_DNS_ANIM_WALK) && (this->animIndex != EN_DNS_ANIM_WALK_MORPH)) {
|
||||
changeAnim = true;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (this->animIndex != arg1) {
|
||||
phi_v1 = true;
|
||||
if (this->animIndex != animIndex) {
|
||||
changeAnim = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (phi_v1) {
|
||||
this->animIndex = arg1;
|
||||
ret = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, arg1);
|
||||
if (changeAnim) {
|
||||
this->animIndex = animIndex;
|
||||
didAnimChange = SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, animIndex);
|
||||
}
|
||||
|
||||
return ret;
|
||||
return didAnimChange;
|
||||
}
|
||||
|
||||
void func_8092C6FC(EnDns* this, PlayState* play) {
|
||||
@ -200,9 +201,10 @@ s32* func_8092C9BC(EnDns* this, PlayState* play) {
|
||||
|
||||
case ENDNS_GET_7_3:
|
||||
return &D_8092DCB0[12];
|
||||
}
|
||||
|
||||
return 0;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
s32 EnDns_GetCueType(EnDns* this) {
|
||||
@ -218,9 +220,10 @@ s32 EnDns_GetCueType(EnDns* this) {
|
||||
|
||||
case ENDNS_GET_7_3:
|
||||
return CS_CMD_ACTOR_CUE_468;
|
||||
}
|
||||
|
||||
return 0;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_8092CAD0(EnDns* this, PlayState* play) {
|
||||
@ -231,10 +234,10 @@ s32 func_8092CAD0(EnDns* this, PlayState* play) {
|
||||
SubS_SetOfferMode(&this->unk_2C6, SUBS_OFFER_MODE_NONE, SUBS_OFFER_MODE_MASK);
|
||||
this->unk_2C6 &= ~0x10;
|
||||
if (ENDNS_GET_4000(&this->actor)) {
|
||||
this->unk_2F0 = 0.0f;
|
||||
this->animCurFrame = 0.0f;
|
||||
if (this->unk_2D2 != 0) {
|
||||
this->unk_2F0 = this->skelAnime.curFrame;
|
||||
func_8092C63C(this, EN_DNS_ANIM_WALK_1);
|
||||
this->animCurFrame = this->skelAnime.curFrame;
|
||||
EnDns_ChangeAnim(this, EN_DNS_ANIM_WALK);
|
||||
}
|
||||
this->unk_2DA = this->actor.world.rot.y;
|
||||
}
|
||||
@ -305,13 +308,13 @@ s32 func_8092CCEC(EnDns* this, PlayState* play) {
|
||||
|
||||
s32 func_8092CE38(EnDns* this) {
|
||||
static s32 D_8092DE00[] = { EN_DNS_ANIM_DANCE, EN_DNS_ANIM_DANCE, EN_DNS_ANIM_FLIP };
|
||||
s16 frame;
|
||||
s16 rotVelocity;
|
||||
s32 pad;
|
||||
Vec3f sp2C;
|
||||
s32 ret = false;
|
||||
|
||||
if ((this->unk_2C6 & 0x200) || Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
func_8092C63C(this, D_8092DE00[this->unk_2D2]);
|
||||
EnDns_ChangeAnim(this, D_8092DE00[this->unk_2D2]);
|
||||
this->unk_2C6 &= ~0x200;
|
||||
this->skelAnime.curFrame = 0.0f;
|
||||
if (this->unk_2D2 == 2) {
|
||||
@ -330,10 +333,10 @@ s32 func_8092CE38(EnDns* this) {
|
||||
this->actor.shape.rot.y = this->actor.world.rot.y;
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_NUTS_JUMP);
|
||||
} else if (this->skelAnime.curFrame < 13.0f) {
|
||||
frame = this->skelAnime.curFrame;
|
||||
rotVelocity = this->skelAnime.curFrame;
|
||||
this->actor.shape.rot.y = this->actor.world.rot.y;
|
||||
frame *= 2520;
|
||||
this->actor.shape.rot.y += frame;
|
||||
rotVelocity *= 0x9D8;
|
||||
this->actor.shape.rot.y += rotVelocity;
|
||||
this->unk_2E4 -= -(40.0f / 13.0f);
|
||||
}
|
||||
} else {
|
||||
@ -404,11 +407,11 @@ void func_8092D1B8(EnDns* this, PlayState* play) {
|
||||
Audio_PlaySfx(NA_SE_SY_FOUND);
|
||||
SET_EVENTINF(EVENTINF_15);
|
||||
this->unk_2F4 = func_8092CCEC;
|
||||
func_8092C63C(this, EN_DNS_ANIM_WALK_1);
|
||||
EnDns_ChangeAnim(this, EN_DNS_ANIM_WALK);
|
||||
this->actionFunc = EnDns_DoNothing;
|
||||
} else if (CHECK_EVENTINF(EVENTINF_16)) {
|
||||
func_8092CCEC(this, play);
|
||||
func_8092C63C(this, EN_DNS_ANIM_WALK_1);
|
||||
EnDns_ChangeAnim(this, EN_DNS_ANIM_WALK);
|
||||
this->actionFunc = func_8092D330;
|
||||
}
|
||||
Math_ApproachS(&this->actor.shape.rot.y, sp22, 3, 0x2AA8);
|
||||
@ -450,16 +453,16 @@ void func_8092D4D8(EnDns* this, PlayState* play) {
|
||||
|
||||
if (ENDNS_GET_4000(&this->actor) && (this->unk_2D2 == 0)) {
|
||||
if (func_8092CE38(this)) {
|
||||
func_8092C63C(this, EN_DNS_ANIM_WALK_1);
|
||||
EnDns_ChangeAnim(this, EN_DNS_ANIM_WALK);
|
||||
}
|
||||
} else if (func_8010BF58(&this->actor, play, this->unk_1E0, this->unk_2F4, &this->unk_1DC)) {
|
||||
SubS_SetOfferMode(&this->unk_2C6, SUBS_OFFER_MODE_ONSCREEN, SUBS_OFFER_MODE_MASK);
|
||||
this->unk_2F4 = NULL;
|
||||
if (ENDNS_GET_4000(&this->actor)) {
|
||||
if (!CHECK_EVENTINF(EVENTINF_15)) {
|
||||
this->skelAnime.curFrame = this->unk_2F0;
|
||||
this->skelAnime.curFrame = this->animCurFrame;
|
||||
this->actor.world.rot.y = this->unk_2DA;
|
||||
func_8092C63C(this, EN_DNS_ANIM_DANCE);
|
||||
EnDns_ChangeAnim(this, EN_DNS_ANIM_DANCE);
|
||||
}
|
||||
this->unk_2CC = 0;
|
||||
this->unk_2CE = 0;
|
||||
@ -471,10 +474,10 @@ void func_8092D4D8(EnDns* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_8092D5E8(EnDns* this, PlayState* play) {
|
||||
static s32 D_8092DE0C[] = {
|
||||
EN_DNS_ANIM_IDLE_1,
|
||||
EN_DNS_ANIM_IDLE_1,
|
||||
void EnDns_HandleCutscene(EnDns* this, PlayState* play) {
|
||||
static s32 sCsAnimIndex[] = {
|
||||
EN_DNS_ANIM_IDLE,
|
||||
EN_DNS_ANIM_IDLE,
|
||||
EN_DNS_ANIM_SURPRISE_START,
|
||||
EN_DNS_ANIM_RUN_START,
|
||||
};
|
||||
@ -485,13 +488,13 @@ void func_8092D5E8(EnDns* this, PlayState* play) {
|
||||
cueChannel = Cutscene_GetCueChannel(play, this->cueType);
|
||||
cueId = play->csCtx.actorCues[cueChannel]->id;
|
||||
if (this->cueId != (u8)cueId) {
|
||||
func_8092C63C(this, D_8092DE0C[cueId]);
|
||||
EnDns_ChangeAnim(this, sCsAnimIndex[cueId]);
|
||||
this->cueId = cueId;
|
||||
}
|
||||
|
||||
if (((this->animIndex == EN_DNS_ANIM_SURPRISE_START) || (this->animIndex == EN_DNS_ANIM_RUN_START)) &&
|
||||
Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
func_8092C63C(this, this->animIndex + 1);
|
||||
EnDns_ChangeAnim(this, this->animIndex + 1);
|
||||
}
|
||||
|
||||
Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel);
|
||||
@ -509,8 +512,8 @@ void EnDns_Init(Actor* thisx, PlayState* play) {
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 18.0f);
|
||||
SkelAnime_Init(play, &this->skelAnime, &gKingsChamberDekuGuardSkel, NULL, this->jointTable, this->morphTable,
|
||||
KINGS_CHAMBER_DEKU_GUARD_LIMB_MAX);
|
||||
this->animIndex = -1;
|
||||
func_8092C63C(this, EN_DNS_ANIM_WALK_1);
|
||||
this->animIndex = EN_DNS_ANIM_NONE;
|
||||
EnDns_ChangeAnim(this, EN_DNS_ANIM_WALK);
|
||||
Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
|
||||
CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0x16), &sColChkInfoInit);
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
@ -541,7 +544,7 @@ void EnDns_Update(Actor* thisx, PlayState* play) {
|
||||
EnDns* this = THIS;
|
||||
|
||||
if (!func_8092CAD0(this, play) && func_8092CB98(this, play)) {
|
||||
func_8092D5E8(this, play);
|
||||
EnDns_HandleCutscene(this, play);
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
func_8092C5C0(this);
|
||||
} else {
|
||||
|
@ -28,7 +28,7 @@ typedef struct EnDns {
|
||||
/* 0x1D8 */ u8 cueId;
|
||||
/* 0x1DC */ s32 unk_1DC;
|
||||
/* 0x1E0 */ s32* unk_1E0;
|
||||
/* 0x1E4 */ Gfx* unk_1E4[13];
|
||||
/* 0x1E4 */ Gfx* unk_1E4[KINGS_CHAMBER_DEKU_GUARD_LIMB_MAX];
|
||||
/* 0x218 */ Vec3f unk_218;
|
||||
/* 0x224 */ Vec3s unk_224;
|
||||
/* 0x22A */ Vec3s jointTable[KINGS_CHAMBER_DEKU_GUARD_LIMB_MAX];
|
||||
@ -50,7 +50,7 @@ typedef struct EnDns {
|
||||
/* 0x2E4 */ f32 unk_2E4;
|
||||
/* 0x2E8 */ UNK_TYPE1 unk_2E8[0x4];
|
||||
/* 0x2EC */ f32 unk_2EC;
|
||||
/* 0x2F0 */ f32 unk_2F0;
|
||||
/* 0x2F0 */ f32 animCurFrame;
|
||||
/* 0x2F4 */ EnDnsFunc unk_2F4;
|
||||
/* 0x2F8 */ s32 animIndex;
|
||||
/* 0x2FC */ s32 unk_2FC;
|
||||
|
@ -8,7 +8,6 @@
|
||||
#include "overlays/actors/ovl_En_Bom/z_en_bom.h"
|
||||
#include "overlays/actors/ovl_En_Bombf/z_en_bombf.h"
|
||||
#include "overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.h"
|
||||
#include "objects/object_dodongo/object_dodongo.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4 | ACTOR_FLAG_400)
|
||||
|
||||
@ -297,7 +296,7 @@ void EnDodongo_Init(Actor* thisx, PlayState* play) {
|
||||
Math_Vec3f_Copy(&this->unk_314, &gOneVec3f);
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 48.0f);
|
||||
SkelAnime_Init(play, &this->skelAnime, &object_dodongo_Skel_008318, &object_dodongo_Anim_004C20, this->jointTable,
|
||||
this->morphTable, 31);
|
||||
this->morphTable, OBJECT_DODONGO_LIMB_MAX);
|
||||
CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit);
|
||||
Collider_InitAndSetJntSph(play, &this->collider2, &this->actor, &sJntSphInit2, this->collider2Elements);
|
||||
Collider_InitAndSetJntSph(play, &this->collider1, &this->actor, &sJntSphInit1, this->collider1Elements);
|
||||
@ -803,20 +802,20 @@ void func_80877E60(EnDodongo* this, PlayState* play) {
|
||||
|
||||
void func_80878354(EnDodongo* this) {
|
||||
s32 pad;
|
||||
AnimationHeader* sp18;
|
||||
AnimationHeader* anim;
|
||||
s16 yDiff = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
|
||||
|
||||
this->unk_306 = (0xFFFF - ABS_ALT(yDiff)) / 15;
|
||||
|
||||
if (yDiff >= 0) {
|
||||
sp18 = &object_dodongo_Anim_0042C4;
|
||||
anim = &object_dodongo_Anim_0042C4;
|
||||
this->unk_306 = -this->unk_306;
|
||||
} else {
|
||||
sp18 = &object_dodongo_Anim_003B14;
|
||||
anim = &object_dodongo_Anim_003B14;
|
||||
}
|
||||
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DODO_J_TAIL);
|
||||
Animation_PlayOnceSetSpeed(&this->skelAnime, sp18, 2.0f);
|
||||
Animation_PlayOnceSetSpeed(&this->skelAnime, anim, 2.0f);
|
||||
this->timer = 0;
|
||||
this->collider1.base.atFlags |= AT_ON;
|
||||
this->unk_304 = -1;
|
||||
@ -1066,9 +1065,9 @@ void EnDodongo_Update(Actor* thisx, PlayState* play2) {
|
||||
s32 EnDodongo_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnDodongo* this = THIS;
|
||||
|
||||
if (limbIndex == 1) {
|
||||
if (limbIndex == OBJECT_DODONGO_LIMB_01) {
|
||||
pos->z += 1000.0f;
|
||||
} else if ((limbIndex == 15) || (limbIndex == 16)) {
|
||||
} else if ((limbIndex == OBJECT_DODONGO_LIMB_0F) || (limbIndex == OBJECT_DODONGO_LIMB_10)) {
|
||||
Matrix_Scale(this->unk_314.x, this->unk_314.y, this->unk_314.z, MTXMODE_APPLY);
|
||||
}
|
||||
|
||||
@ -1121,16 +1120,17 @@ void EnDodongo_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s*
|
||||
Matrix_MultZero(&this->bodyPartsPos[sLimbToBodyParts[limbIndex]]);
|
||||
}
|
||||
|
||||
if (limbIndex == 7) {
|
||||
if (limbIndex == OBJECT_DODONGO_LIMB_07) {
|
||||
Matrix_MultVec3f(&D_80879370, &this->unk_308);
|
||||
Matrix_MultVec3f(&D_8087937C, &this->bodyPartsPos[DODONGO_BODYPART_0]);
|
||||
Matrix_MultZero(&this->actor.focus.pos);
|
||||
Matrix_MultVecY(-200.0f, &this->bodyPartsPos[DODONGO_BODYPART_1]);
|
||||
} else if (limbIndex == 13) {
|
||||
} else if (limbIndex == OBJECT_DODONGO_LIMB_0D) {
|
||||
Matrix_MultVecX(1600.0f, &this->unk_320);
|
||||
}
|
||||
|
||||
if ((limbIndex == 30) && (this->actionFunc == func_80878424) && (this->timer != this->unk_304)) {
|
||||
if ((limbIndex == OBJECT_DODONGO_LIMB_1E) && (this->actionFunc == func_80878424) &&
|
||||
(this->timer != this->unk_304)) {
|
||||
EffectBlure_AddVertex(Effect_GetByIndex(this->unk_338), &this->unk_320,
|
||||
&this->bodyPartsPos[DODONGO_BODYPART_4]);
|
||||
this->unk_304 = this->timer;
|
||||
|
@ -2,6 +2,7 @@
|
||||
#define Z_EN_DODONGO_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_dodongo/object_dodongo.h"
|
||||
|
||||
struct EnDodongo;
|
||||
|
||||
@ -23,8 +24,8 @@ typedef enum DodongoBodyPart {
|
||||
typedef struct EnDodongo {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ SkelAnime skelAnime;
|
||||
/* 0x188 */ Vec3s jointTable[31];
|
||||
/* 0x242 */ Vec3s morphTable[31];
|
||||
/* 0x188 */ Vec3s jointTable[OBJECT_DODONGO_LIMB_MAX];
|
||||
/* 0x242 */ Vec3s morphTable[OBJECT_DODONGO_LIMB_MAX];
|
||||
/* 0x2FC */ EnDodongoActionFunc actionFunc;
|
||||
/* 0x300 */ u8 drawDmgEffType;
|
||||
/* 0x302 */ s16 timer;
|
||||
|
@ -353,17 +353,48 @@ static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_U16(shape.rot.z, 0, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
static AnimationHeader* sAnimations[] = {
|
||||
&gameplay_keep_Anim_020658, &gameplay_keep_Anim_022CA8, &gameplay_keep_Anim_020658, &gameplay_keep_Anim_022E68,
|
||||
&gameplay_keep_Anim_0204B4, &gameplay_keep_Anim_022BE8, &gameplay_keep_Anim_022D90, &gameplay_keep_Anim_022BE8,
|
||||
&gameplay_keep_Anim_022FF0, &gameplay_keep_Anim_0205A0,
|
||||
static AnimationHeader* sAnimations[2 * PLAYER_FORM_MAX] = {
|
||||
// left
|
||||
&gameplay_keep_Anim_020658, // PLAYER_FORM_FIERCE_DEITY
|
||||
&gameplay_keep_Anim_022CA8, // PLAYER_FORM_GORON
|
||||
&gameplay_keep_Anim_020658, // PLAYER_FORM_ZORA
|
||||
&gameplay_keep_Anim_022E68, // PLAYER_FORM_DEKU
|
||||
&gameplay_keep_Anim_0204B4, // PLAYER_FORM_HUMAN
|
||||
// right
|
||||
&gameplay_keep_Anim_022BE8, // PLAYER_FORM_FIERCE_DEITY
|
||||
&gameplay_keep_Anim_022D90, // PLAYER_FORM_GORON
|
||||
&gameplay_keep_Anim_022BE8, // PLAYER_FORM_ZORA
|
||||
&gameplay_keep_Anim_022FF0, // PLAYER_FORM_DEKU
|
||||
&gameplay_keep_Anim_0205A0, // PLAYER_FORM_HUMAN
|
||||
};
|
||||
static u8 sAnimOpenFrames[10] = {
|
||||
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
|
||||
static u8 sAnimOpenFrames[2 * PLAYER_FORM_MAX] = {
|
||||
// left
|
||||
25, // PLAYER_FORM_FIERCE_DEITY
|
||||
25, // PLAYER_FORM_GORON
|
||||
25, // PLAYER_FORM_ZORA
|
||||
25, // PLAYER_FORM_DEKU
|
||||
25, // PLAYER_FORM_HUMAN
|
||||
// right
|
||||
25, // PLAYER_FORM_FIERCE_DEITY
|
||||
25, // PLAYER_FORM_GORON
|
||||
25, // PLAYER_FORM_ZORA
|
||||
25, // PLAYER_FORM_DEKU
|
||||
25, // PLAYER_FORM_HUMAN
|
||||
};
|
||||
|
||||
static u8 sAnimCloseFrames[10] = {
|
||||
60, 60, 60, 70, 70, 60, 60, 60, 60, 70,
|
||||
static u8 sAnimCloseFrames[2 * PLAYER_FORM_MAX] = {
|
||||
// left
|
||||
60, // PLAYER_FORM_FIERCE_DEITY
|
||||
60, // PLAYER_FORM_GORON
|
||||
60, // PLAYER_FORM_ZORA
|
||||
70, // PLAYER_FORM_DEKU
|
||||
70, // PLAYER_FORM_HUMAN
|
||||
// right
|
||||
60, // PLAYER_FORM_FIERCE_DEITY
|
||||
60, // PLAYER_FORM_GORON
|
||||
60, // PLAYER_FORM_ZORA
|
||||
60, // PLAYER_FORM_DEKU
|
||||
70, // PLAYER_FORM_HUMAN
|
||||
};
|
||||
|
||||
static Gfx* D_808679A4[14][2] = {
|
||||
@ -638,8 +669,9 @@ s32 EnDoor_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
|
||||
(transitionEntry->sides[0].room == transitionEntry->sides[1].room)) {
|
||||
s32 pad;
|
||||
|
||||
temp = (this->knobDoor.dyna.actor.shape.rot.y + this->knobDoor.skelAnime.jointTable[3].z + rot->z) -
|
||||
Math_Vec3f_Yaw(&play->view.eye, &this->knobDoor.dyna.actor.world.pos);
|
||||
temp =
|
||||
(this->knobDoor.dyna.actor.shape.rot.y + this->knobDoor.skelAnime.jointTable[DOOR_LIMB_3].z + rot->z) -
|
||||
Math_Vec3f_Yaw(&play->view.eye, &this->knobDoor.dyna.actor.world.pos);
|
||||
*dList = (ABS_ALT(temp) < 0x4000) ? dl[0] : dl[1];
|
||||
|
||||
} else {
|
||||
|
@ -25,13 +25,6 @@ void EnDragon_SetupAttack(EnDragon* this);
|
||||
void EnDragon_Attack(EnDragon* this, PlayState* play);
|
||||
void EnDragon_Dead(EnDragon* this, PlayState* play);
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ DEEP_PYTHON_ANIM_SMALL_SIDE_SWAY,
|
||||
/* 1 */ DEEP_PYTHON_ANIM_LARGE_SIDE_SWAY,
|
||||
/* 2 */ DEEP_PYTHON_ANIM_VERTICAL_SWAY,
|
||||
/* 3 */ DEEP_PYTHON_ANIM_IDLE
|
||||
} DeepPythonAnimation;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ DEEP_PYTHON_EXTEND_STATE_NOT_FULLY_EXTENDED,
|
||||
/* 1 */ DEEP_PYTHON_EXTEND_STATE_FULLY_EXTENDED,
|
||||
@ -256,26 +249,39 @@ void EnDragon_Destroy(Actor* thisx, PlayState* play) {
|
||||
Collider_DestroyJntSph(play, &this->collider);
|
||||
}
|
||||
|
||||
static AnimationHeader* sAnimations[] = {
|
||||
&gDeepPythonSmallSideSwayAnim,
|
||||
&gDeepPythonLargeSideSwayAnim,
|
||||
&gDeepPythonVerticalSwayAnim,
|
||||
&gDeepPythonSmallSideSwayAnim,
|
||||
typedef enum {
|
||||
/* 0 */ DEEP_PYTHON_ANIM_SMALL_SIDE_SWAY,
|
||||
/* 1 */ DEEP_PYTHON_ANIM_LARGE_SIDE_SWAY,
|
||||
/* 2 */ DEEP_PYTHON_ANIM_VERTICAL_SWAY,
|
||||
/* 3 */ DEEP_PYTHON_ANIM_IDLE,
|
||||
/* 4 */ DEEP_PYTHON_ANIM_MAX
|
||||
} DeepPythonAnimation;
|
||||
|
||||
static AnimationHeader* sAnimations[DEEP_PYTHON_ANIM_MAX] = {
|
||||
&gDeepPythonSmallSideSwayAnim, // DEEP_PYTHON_ANIM_SMALL_SIDE_SWAY
|
||||
&gDeepPythonLargeSideSwayAnim, // DEEP_PYTHON_ANIM_LARGE_SIDE_SWAY
|
||||
&gDeepPythonVerticalSwayAnim, // DEEP_PYTHON_ANIM_VERTICAL_SWAY
|
||||
&gDeepPythonSmallSideSwayAnim, // DEEP_PYTHON_ANIM_IDLE
|
||||
};
|
||||
|
||||
static u8 sAnimationModes[] = { ANIMMODE_LOOP, ANIMMODE_LOOP, ANIMMODE_ONCE, ANIMMODE_ONCE };
|
||||
static u8 sAnimationModes[DEEP_PYTHON_ANIM_MAX] = {
|
||||
ANIMMODE_LOOP, // DEEP_PYTHON_ANIM_SMALL_SIDE_SWAY
|
||||
ANIMMODE_LOOP, // DEEP_PYTHON_ANIM_LARGE_SIDE_SWAY
|
||||
ANIMMODE_ONCE, // DEEP_PYTHON_ANIM_VERTICAL_SWAY
|
||||
ANIMMODE_ONCE, // DEEP_PYTHON_ANIM_IDLE
|
||||
};
|
||||
|
||||
void EnDragon_ChangeAnim(EnDragon* this, s32 animIndex) {
|
||||
f32 startFrame;
|
||||
|
||||
this->animIndex = animIndex;
|
||||
this->endFrame = Animation_GetLastFrame(sAnimations[animIndex]);
|
||||
this->animEndFrame = Animation_GetLastFrame(sAnimations[animIndex]);
|
||||
startFrame = 0.0f;
|
||||
if (this->animIndex == DEEP_PYTHON_ANIM_IDLE) {
|
||||
startFrame = this->endFrame;
|
||||
startFrame = this->animEndFrame;
|
||||
}
|
||||
|
||||
Animation_Change(&this->skelAnime, sAnimations[animIndex], 1.0f, startFrame, this->endFrame,
|
||||
Animation_Change(&this->skelAnime, sAnimations[animIndex], 1.0f, startFrame, this->animEndFrame,
|
||||
sAnimationModes[this->animIndex], -4.0f);
|
||||
}
|
||||
|
||||
@ -370,7 +376,7 @@ void EnDragon_SetupExtend(EnDragon* this) {
|
||||
|
||||
void EnDragon_Extend(EnDragon* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
f32 currentFrame = this->skelAnime.curFrame;
|
||||
f32 curFrame = this->skelAnime.curFrame;
|
||||
s16 yaw;
|
||||
|
||||
EnDragon_SpawnBubbles(this, play, this->jawPos);
|
||||
@ -410,7 +416,7 @@ void EnDragon_Extend(EnDragon* this, PlayState* play) {
|
||||
Math_SmoothStepToS(&this->jawZRotation, 0, 5, 0xBB8, 0x14);
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
if (this->state == DEEP_PYTHON_EXTEND_STATE_FULLY_EXTENDED) {
|
||||
if (currentFrame < this->endFrame) {
|
||||
if (curFrame < this->animEndFrame) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -420,7 +426,7 @@ void EnDragon_Extend(EnDragon* this, PlayState* play) {
|
||||
yaw = ABS_ALT(BINANG_SUB(Math_Vec3f_Yaw(&this->jawPos, &player->actor.world.pos), this->actor.shape.rot.y));
|
||||
if (yaw < 0x5000) {
|
||||
// Player is in front of the jaw
|
||||
if ((this->endFrame <= currentFrame) && (this->largeSwayWaitTimer == 0)) {
|
||||
if ((curFrame >= this->animEndFrame) && (this->largeSwayWaitTimer == 0)) {
|
||||
if (this->animIndex != DEEP_PYTHON_ANIM_LARGE_SIDE_SWAY) {
|
||||
EnDragon_ChangeAnim(this, DEEP_PYTHON_ANIM_LARGE_SIDE_SWAY);
|
||||
}
|
||||
@ -433,7 +439,7 @@ void EnDragon_Extend(EnDragon* this, PlayState* play) {
|
||||
// Player is in behind the jaw
|
||||
if (this->state == DEEP_PYTHON_EXTEND_STATE_REPEAT_LARGE_SWAY) {
|
||||
EnDragon_ChangeAnim(this, DEEP_PYTHON_ANIM_SMALL_SIDE_SWAY);
|
||||
this->largeSwayWaitTimer = Rand_ZeroFloat(20.0f) + this->endFrame;
|
||||
this->largeSwayWaitTimer = Rand_ZeroFloat(20.0f) + this->animEndFrame;
|
||||
this->state = DEEP_PYTHON_EXTEND_STATE_REPEAT_SMALL_SWAY;
|
||||
}
|
||||
|
||||
@ -562,7 +568,7 @@ void EnDragon_SetupAttack(EnDragon* this) {
|
||||
|
||||
void EnDragon_Attack(EnDragon* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
f32 currentFrame = this->skelAnime.curFrame;
|
||||
f32 curFrame = this->skelAnime.curFrame;
|
||||
Vec3f pos; // used as both the extended position and the camera eye
|
||||
Vec3f subCamAt;
|
||||
|
||||
@ -603,7 +609,7 @@ void EnDragon_Attack(EnDragon* this, PlayState* play) {
|
||||
Math_ApproachF(&this->actor.world.pos.y, pos.y, 0.3f, 200.0f);
|
||||
Math_ApproachF(&this->actor.world.pos.z, pos.z, 0.3f, 200.0f);
|
||||
|
||||
if ((this->state <= DEEP_PYTHON_ATTACK_STATE_START) && (this->endFrame <= currentFrame)) {
|
||||
if ((this->state <= DEEP_PYTHON_ATTACK_STATE_START) && (curFrame >= this->animEndFrame)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_UTSUBO_BITE);
|
||||
if (this->animIndex != DEEP_PYTHON_ANIM_LARGE_SIDE_SWAY) {
|
||||
EnDragon_ChangeAnim(this, DEEP_PYTHON_ANIM_LARGE_SIDE_SWAY);
|
||||
@ -612,7 +618,7 @@ void EnDragon_Attack(EnDragon* this, PlayState* play) {
|
||||
this->state++;
|
||||
}
|
||||
|
||||
if (((this->state != DEEP_PYTHON_ATTACK_STATE_START) && (this->endFrame <= currentFrame)) ||
|
||||
if (((this->state != DEEP_PYTHON_ATTACK_STATE_START) && (curFrame >= this->animEndFrame)) ||
|
||||
(!(player->stateFlags2 & PLAYER_STATE2_80)) || ((this->collider.elements[0].info.bumperFlags & BUMP_HIT)) ||
|
||||
(this->collider.elements[1].info.bumperFlags & BUMP_HIT) ||
|
||||
(this->collider.elements[2].info.bumperFlags & BUMP_HIT)) {
|
||||
@ -625,7 +631,7 @@ void EnDragon_Attack(EnDragon* this, PlayState* play) {
|
||||
|
||||
this->actor.flags &= ~ACTOR_FLAG_100000;
|
||||
|
||||
if ((this->state != DEEP_PYTHON_ATTACK_STATE_START) && (this->endFrame <= currentFrame)) {
|
||||
if ((this->state != DEEP_PYTHON_ATTACK_STATE_START) && (curFrame >= this->animEndFrame)) {
|
||||
this->timer = 3;
|
||||
this->actionFunc = EnDragon_RetreatOnceTimerEnds;
|
||||
} else {
|
||||
@ -639,7 +645,7 @@ void EnDragon_SetupDead(EnDragon* this, PlayState* play) {
|
||||
CutsceneManager_Queue(this->deathCsId);
|
||||
} else {
|
||||
CutsceneManager_StartWithPlayerCs(this->deathCsId, &this->actor);
|
||||
this->endFrame = Animation_GetLastFrame(&gDeepPythonSmallSideSwayAnim);
|
||||
this->animEndFrame = Animation_GetLastFrame(&gDeepPythonSmallSideSwayAnim);
|
||||
Animation_Change(&this->skelAnime, &gDeepPythonSmallSideSwayAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f);
|
||||
this->timer = 20;
|
||||
this->actionFunc = EnDragon_Dead;
|
||||
|
@ -53,8 +53,7 @@ typedef struct EnDragon {
|
||||
/* 0x2C8 */ s16 subCamId;
|
||||
/* 0x2CA */ s16 grabTimer; // Counts up from the time a grab starts until the time the actor begins attacking
|
||||
/* 0x2CC */ s16 unk_2CC; // Initialized, but never used
|
||||
/* 0x2CE */ UNK_TYPE1 unk_2CE[0x2];
|
||||
/* 0x2D0 */ f32 endFrame;
|
||||
/* 0x2D0 */ f32 animEndFrame;
|
||||
/* 0x2D4 */ f32 scale;
|
||||
/* 0x2D8 */ UNK_TYPE1 unk_2D8[0x4];
|
||||
/* 0x2DC */ ColliderJntSph collider;
|
||||
|
@ -51,7 +51,14 @@ static ColliderCylinderInit sCylinderInit = {
|
||||
|
||||
static CollisionCheckInfoInit2 sColChkInfoInit = { 0, 0, 0, 0, MASS_IMMOVABLE };
|
||||
|
||||
static AnimationInfoS sAnimationInfo = { &gWeddingDressMannequinIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 };
|
||||
typedef enum {
|
||||
/* 0 */ WEDDING_DRESS_MANNEQUIN_ANIM_IDLE,
|
||||
/* 1 */ WEDDING_DRESS_MANNEQUIN_ANIM_MAX
|
||||
} WeddingDressMannequinAnimation;
|
||||
|
||||
static AnimationInfoS sAnimationInfo[WEDDING_DRESS_MANNEQUIN_ANIM_MAX] = {
|
||||
{ &gWeddingDressMannequinIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // WEDDING_DRESS_MANNEQUIN_ANIM_IDLE
|
||||
};
|
||||
|
||||
void EnDrs_CollisionUpdate(EnDrs* this, PlayState* play) {
|
||||
Collider_UpdateCylinder(&this->actor, &this->collider);
|
||||
@ -65,7 +72,7 @@ void EnDrs_Setup(EnDrs* this, PlayState* play) {
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gWeddingDressMannequinSkel, NULL, this->jointTable,
|
||||
this->morphTable, WEDDING_DRESS_MANNEQUIN_LIMB_MAX);
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, &sAnimationInfo, 0);
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo, WEDDING_DRESS_MANNEQUIN_ANIM_IDLE);
|
||||
Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
|
||||
CollisionCheck_SetInfo2(&this->actor.colChkInfo, DamageTable_Get(0x16), &sColChkInfoInit);
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
|
@ -32,14 +32,19 @@ ActorInit En_Ds2n_InitVars = {
|
||||
(ActorFunc)EnDs2n_Draw,
|
||||
};
|
||||
|
||||
static AnimationInfo sAnimationInfo[] = {
|
||||
{ &gDs2nIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
typedef enum {
|
||||
/* 0 */ ENDS2N_ANIM_IDLE,
|
||||
/* 1 */ ENDS2N_ANIM_MAX
|
||||
} EnDs2nAnimation;
|
||||
|
||||
static AnimationInfo sAnimationInfo[ENDS2N_ANIM_MAX] = {
|
||||
{ &gDs2nIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // ENDS2N_ANIM_IDLE
|
||||
};
|
||||
|
||||
void EnDs2n_SetupIdle(EnDs2n* this) {
|
||||
this->blinkTimer = 20;
|
||||
this->blinkState = 0;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 0);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, ENDS2N_ANIM_IDLE);
|
||||
this->actionFunc = EnDs2n_Idle;
|
||||
}
|
||||
|
||||
|
@ -85,16 +85,20 @@ void EnDyExtra_Update(Actor* thisx, PlayState* play) {
|
||||
Actor_MoveWithGravity(&this->actor);
|
||||
}
|
||||
|
||||
static Color_RGBA8 D_80A61740[] = {
|
||||
{ 255, 255, 170, 255 }, { 255, 170, 255, 255 }, { 255, 255, 170, 255 },
|
||||
{ 170, 255, 255, 255 }, { 255, 255, 170, 255 },
|
||||
};
|
||||
|
||||
static Color_RGBA8 D_80A61754[] = {
|
||||
{ 255, 100, 0, 255 }, { 255, 0, 100, 255 }, { 100, 255, 0, 255 }, { 0, 100, 255, 255 }, { 255, 230, 0, 255 }
|
||||
};
|
||||
|
||||
static u8 D_80A61768[] = {
|
||||
2, 1, 1, 2, 0, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 2, 1, 0, 1, 2, 0, 0,
|
||||
};
|
||||
|
||||
void EnDyExtra_Draw(Actor* thisx, PlayState* play) {
|
||||
static Color_RGBA8 D_80A61740[] = {
|
||||
{ 255, 255, 170, 255 }, { 255, 170, 255, 255 }, { 255, 255, 170, 255 },
|
||||
{ 170, 255, 255, 255 }, { 255, 255, 170, 255 },
|
||||
};
|
||||
static Color_RGBA8 D_80A61754[] = {
|
||||
{ 255, 100, 0, 255 }, { 255, 0, 100, 255 }, { 100, 255, 0, 255 }, { 0, 100, 255, 255 }, { 255, 230, 0, 255 }
|
||||
};
|
||||
static u8 D_80A61768[] = { 0x02, 0x01, 0x01, 0x02, 0x00, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01,
|
||||
0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x02, 0x01, 0x00, 0x01, 0x02, 0x00, 0x00 };
|
||||
EnDyExtra* this = THIS;
|
||||
s32 pad;
|
||||
GraphicsContext* gfxCtx = play->state.gfxCtx;
|
||||
|
@ -282,7 +282,7 @@ void EnFirefly_SetupFlyIdle(EnFirefly* this) {
|
||||
}
|
||||
|
||||
void EnFirefly_FlyIdle(EnFirefly* this, PlayState* play) {
|
||||
s32 isSkelAnimeUpdated;
|
||||
s32 onAnimFirstFrame;
|
||||
f32 rand;
|
||||
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
@ -290,11 +290,11 @@ void EnFirefly_FlyIdle(EnFirefly* this, PlayState* play) {
|
||||
this->timer--;
|
||||
}
|
||||
|
||||
isSkelAnimeUpdated = Animation_OnFrame(&this->skelAnime, 0.0f);
|
||||
onAnimFirstFrame = Animation_OnFrame(&this->skelAnime, 0.0f);
|
||||
this->actor.speed = (Rand_ZeroOne() * 1.5f) + 1.5f;
|
||||
|
||||
if (!EnFirefly_ReturnToPerch(this, play) && !EnFirefly_SeekTorch(this, play)) {
|
||||
if (isSkelAnimeUpdated) {
|
||||
if (onAnimFirstFrame) {
|
||||
rand = Rand_ZeroOne();
|
||||
|
||||
if (rand < 0.5f) {
|
||||
|
@ -296,15 +296,15 @@ void func_808D0CE4(EnFloormas* this) {
|
||||
}
|
||||
|
||||
void func_808D0D70(EnFloormas* this, PlayState* play) {
|
||||
s32 temp_v0;
|
||||
s32 onAnimFirstFrame;
|
||||
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
temp_v0 = Animation_OnFrame(&this->skelAnime, 0.0f);
|
||||
if ((temp_v0 != 0) && (this->unk_18E != 0)) {
|
||||
onAnimFirstFrame = Animation_OnFrame(&this->skelAnime, 0.0f);
|
||||
if (onAnimFirstFrame && (this->unk_18E != 0)) {
|
||||
this->unk_18E--;
|
||||
}
|
||||
|
||||
if ((temp_v0 != 0) || Animation_OnFrame(&this->skelAnime, 12.0f) || Animation_OnFrame(&this->skelAnime, 24.0f) ||
|
||||
if (onAnimFirstFrame || Animation_OnFrame(&this->skelAnime, 12.0f) || Animation_OnFrame(&this->skelAnime, 24.0f) ||
|
||||
Animation_OnFrame(&this->skelAnime, 36.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_FALL_WALK);
|
||||
}
|
||||
|
@ -750,7 +750,7 @@ void EnMushi2_Init(Actor* thisx, PlayState* play) {
|
||||
if (ENMUSHI2_GET_3(&this->actor) == ENMUSHI2_0) {
|
||||
func_80A68A78(this, play);
|
||||
}
|
||||
this->actor.shape.rot.y += Rand_S16Offset(-2000, 4000);
|
||||
this->actor.shape.rot.y += Rand_S16Offset(-0x7D0, 0xFA0);
|
||||
this->actor.home.rot.y = this->actor.shape.rot.y;
|
||||
this->actor.world.rot.y = this->actor.shape.rot.y;
|
||||
func_80A68F24(this);
|
||||
|
@ -326,9 +326,9 @@ void EnSsh_Stunned(EnSsh* this, PlayState* play) {
|
||||
|
||||
if (this->stunTimer < 30) {
|
||||
if (this->stunTimer & 1) {
|
||||
this->actor.shape.rot.y += 2000;
|
||||
this->actor.shape.rot.y += 0x7D0;
|
||||
} else {
|
||||
this->actor.shape.rot.y -= 2000;
|
||||
this->actor.shape.rot.y -= 0x7D0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -479,10 +479,10 @@ void func_80C11538(EnThiefbird* this) {
|
||||
|
||||
void func_80C11590(EnThiefbird* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
s32 sp38;
|
||||
s32 onAnimFirstFrame;
|
||||
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
sp38 = Animation_OnFrame(&this->skelAnime, 0.0f);
|
||||
onAnimFirstFrame = Animation_OnFrame(&this->skelAnime, 0.0f);
|
||||
this->actor.speed = (Rand_ZeroOne() * 1.5f) + 3.0f;
|
||||
|
||||
if (this->actor.bgCheckFlags & BGCHECKFLAG_WALL) {
|
||||
@ -493,7 +493,7 @@ void func_80C11590(EnThiefbird* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!Math_SmoothStepToS(&this->actor.shape.rot.y, this->unk_192, 5, 0x300, 0x10) && (sp38 != 0) &&
|
||||
if (!Math_SmoothStepToS(&this->actor.shape.rot.y, this->unk_192, 5, 0x300, 0x10) && onAnimFirstFrame &&
|
||||
(Rand_ZeroOne() < 0.1f)) {
|
||||
s16 yaw = Actor_WorldYawTowardPoint(&this->actor, &this->actor.home.pos) - this->actor.shape.rot.y;
|
||||
|
||||
@ -513,7 +513,7 @@ void func_80C11590(EnThiefbird* this, PlayState* play) {
|
||||
this->unk_190 = Rand_S16Offset(2048, 2048);
|
||||
}
|
||||
|
||||
if (!Math_SmoothStepToS(&this->actor.shape.rot.x, this->unk_190, 10, 0x100, 8) && (sp38 != 0) &&
|
||||
if (!Math_SmoothStepToS(&this->actor.shape.rot.x, this->unk_190, 10, 0x100, 8) && onAnimFirstFrame &&
|
||||
(Rand_ZeroOne() < 0.1f)) {
|
||||
if (this->actor.home.pos.y < this->actor.world.pos.y) {
|
||||
this->unk_190 -= Rand_S16Offset(0x400, 0x400);
|
||||
|
@ -253,7 +253,7 @@ void EnTuboTrap_Idle(EnTuboTrap* this, PlayState* play) {
|
||||
}
|
||||
|
||||
void EnTuboTrap_Levitate(EnTuboTrap* this, PlayState* play) {
|
||||
this->actor.shape.rot.y += 5000;
|
||||
this->actor.shape.rot.y += 0x1388;
|
||||
Math_ApproachF(&this->actor.world.pos.y, this->targetHeight, 0.8f, 3.0f);
|
||||
|
||||
if (fabsf(this->actor.world.pos.y - this->targetHeight) < 10.0f) {
|
||||
@ -279,7 +279,7 @@ void EnTuboTrap_FlyAtPlayer(EnTuboTrap* this, PlayState* play) {
|
||||
Math_ApproachF(&this->actor.gravity, -3.0f, 0.2f, 0.5f);
|
||||
}
|
||||
|
||||
this->actor.shape.rot.y += 5000;
|
||||
this->actor.shape.rot.y += 0x1388;
|
||||
EnTuboTrap_HandleImpact(this, play);
|
||||
}
|
||||
|
||||
|
@ -6088,9 +6088,9 @@ void Player_Door_Knob(PlayState* play, Player* this, Actor* door) {
|
||||
s32 temp = this->transformation - 1;
|
||||
PlayerAnimationHeader* anim;
|
||||
f32 temp_fv0; // sp5C
|
||||
KnobDoorActor* doorHandle = (KnobDoorActor*)door;
|
||||
KnobDoorActor* knobDoor = (KnobDoorActor*)door;
|
||||
|
||||
doorHandle->animIndex = this->transformation;
|
||||
knobDoor->animIndex = this->transformation;
|
||||
|
||||
if (this->doorDirection < 0) {
|
||||
if (this->transformation == PLAYER_FORM_FIERCE_DEITY) {
|
||||
@ -6101,7 +6101,7 @@ void Player_Door_Knob(PlayState* play, Player* this, Actor* door) {
|
||||
anim = D_8085D118[temp];
|
||||
}
|
||||
} else {
|
||||
doorHandle->animIndex += 5;
|
||||
knobDoor->animIndex += PLAYER_FORM_MAX;
|
||||
|
||||
if (this->transformation == PLAYER_FORM_FIERCE_DEITY) {
|
||||
anim = D_8085BE84[PLAYER_ANIMGROUP_10][this->modelAnimType];
|
||||
@ -6116,15 +6116,14 @@ void Player_Door_Knob(PlayState* play, Player* this, Actor* door) {
|
||||
this->stateFlags2 |= PLAYER_STATE2_800000;
|
||||
func_8082DE14(play, this);
|
||||
if (this->doorDirection < 0) {
|
||||
this->actor.shape.rot.y = doorHandle->dyna.actor.shape.rot.y;
|
||||
this->actor.shape.rot.y = knobDoor->dyna.actor.shape.rot.y;
|
||||
} else {
|
||||
this->actor.shape.rot.y = doorHandle->dyna.actor.shape.rot.y - 0x8000;
|
||||
this->actor.shape.rot.y = knobDoor->dyna.actor.shape.rot.y - 0x8000;
|
||||
}
|
||||
|
||||
this->currentYaw = this->actor.shape.rot.y;
|
||||
temp_fv0 = this->doorDirection * 22.0f;
|
||||
func_80835BF8(&doorHandle->dyna.actor.world.pos, doorHandle->dyna.actor.shape.rot.y, temp_fv0,
|
||||
&this->actor.world.pos);
|
||||
func_80835BF8(&knobDoor->dyna.actor.world.pos, knobDoor->dyna.actor.shape.rot.y, temp_fv0, &this->actor.world.pos);
|
||||
func_8082EC9C(play, this, anim);
|
||||
|
||||
if (this->doorTimer != 0) {
|
||||
@ -6134,19 +6133,19 @@ void Player_Door_Knob(PlayState* play, Player* this, Actor* door) {
|
||||
func_8082DAD4(this);
|
||||
func_8082E920(play, this,
|
||||
ANIM_FLAG_1 | ANIM_FLAG_UPDATE_Y | ANIM_FLAG_4 | ANIM_FLAG_8 | ANIM_FLAG_80 | ANIM_FLAG_200);
|
||||
doorHandle->playOpenAnim = true;
|
||||
knobDoor->playOpenAnim = true;
|
||||
if (this->doorType != PLAYER_DOORTYPE_FAKE) {
|
||||
CollisionPoly* poly;
|
||||
s32 bgId;
|
||||
Vec3f pos;
|
||||
s32 enDoorType = ENDOOR_GET_TYPE(&doorHandle->dyna.actor);
|
||||
s32 enDoorType = ENDOOR_GET_TYPE(&knobDoor->dyna.actor);
|
||||
|
||||
this->stateFlags1 |= PLAYER_STATE1_20000000;
|
||||
|
||||
if (this->actor.category == ACTORCAT_PLAYER) {
|
||||
Actor_DeactivateLens(play);
|
||||
func_80835BF8(&doorHandle->dyna.actor.world.pos, doorHandle->dyna.actor.shape.rot.y, -temp_fv0, &pos);
|
||||
pos.y = doorHandle->dyna.actor.world.pos.y + 10.0f;
|
||||
func_80835BF8(&knobDoor->dyna.actor.world.pos, knobDoor->dyna.actor.shape.rot.y, -temp_fv0, &pos);
|
||||
pos.y = knobDoor->dyna.actor.world.pos.y + 10.0f;
|
||||
BgCheck_EntityRaycastFloor5(&play->colCtx, &poly, &bgId, &this->actor, &pos);
|
||||
|
||||
if (Player_HandleExitsAndVoids(play, this, poly, BGCHECK_SCENE)) {
|
||||
@ -6157,8 +6156,8 @@ void Player_Door_Knob(PlayState* play, Player* this, Actor* door) {
|
||||
this->unk_AE7 = 38.0f * D_8085C3E8;
|
||||
mainCam = Play_GetCamera(play, CAM_ID_MAIN);
|
||||
|
||||
Camera_ChangeDoorCam(mainCam, &doorHandle->dyna.actor,
|
||||
play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(&doorHandle->dyna.actor)]
|
||||
Camera_ChangeDoorCam(mainCam, &knobDoor->dyna.actor,
|
||||
play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(&knobDoor->dyna.actor)]
|
||||
.sides[(this->doorDirection > 0) ? 0 : 1]
|
||||
.bgCamIndex,
|
||||
0.0f, this->unk_AE7, 26.0f * D_8085C3E8, 10.0f * D_8085C3E8);
|
||||
|
@ -7118,7 +7118,7 @@
|
||||
0x8092C550:("DemoShd_Update",),
|
||||
0x8092C560:("DemoShd_Draw",),
|
||||
0x8092C5C0:("func_8092C5C0",),
|
||||
0x8092C63C:("func_8092C63C",),
|
||||
0x8092C63C:("EnDns_ChangeAnim",),
|
||||
0x8092C6FC:("func_8092C6FC",),
|
||||
0x8092C740:("func_8092C740",),
|
||||
0x8092C86C:("func_8092C86C",),
|
||||
@ -7136,7 +7136,7 @@
|
||||
0x8092D320:("func_8092D320",),
|
||||
0x8092D330:("func_8092D330",),
|
||||
0x8092D4D8:("func_8092D4D8",),
|
||||
0x8092D5E8:("func_8092D5E8",),
|
||||
0x8092D5E8:("EnDns_HandleCutscene",),
|
||||
0x8092D6C0:("EnDns_Init",),
|
||||
0x8092D820:("EnDns_Destroy",),
|
||||
0x8092D84C:("EnDns_Update",),
|
||||
@ -7502,7 +7502,7 @@
|
||||
0x80942D34:("EnGoroiwa_Draw",),
|
||||
0x809434B0:("EnDaiku_Init",),
|
||||
0x80943710:("EnDaiku_Destroy",),
|
||||
0x8094373C:("func_8094373C",),
|
||||
0x8094373C:("EnDaiku_ChangeAnim",),
|
||||
0x809437C8:("func_809437C8",),
|
||||
0x80943820:("func_80943820",),
|
||||
0x809438F8:("func_809438F8",),
|
||||
@ -10574,10 +10574,10 @@
|
||||
0x80A510E0:("EnDnh_Update",),
|
||||
0x80A51168:("func_80A51168",),
|
||||
0x80A511B4:("EnDnh_Draw",),
|
||||
0x80A514F0:("func_80A514F0",),
|
||||
0x80A514F0:("EnDnk_ChangeAnim",),
|
||||
0x80A515C4:("func_80A515C4",),
|
||||
0x80A51648:("func_80A51648",),
|
||||
0x80A51890:("func_80A51890",),
|
||||
0x80A51890:("EnDnk_HandleCutscene",),
|
||||
0x80A518DC:("func_80A518DC",),
|
||||
0x80A518EC:("EnDnk_Init",),
|
||||
0x80A519A8:("EnDnk_Destroy",),
|
||||
@ -10592,7 +10592,7 @@
|
||||
0x80A52074:("func_80A52074",),
|
||||
0x80A52134:("func_80A52134",),
|
||||
0x80A52530:("EnDnq_ValidatePictograph",),
|
||||
0x80A5257C:("func_80A5257C",),
|
||||
0x80A5257C:("EnDnq_ChangeAnim",),
|
||||
0x80A52604:("func_80A52604",),
|
||||
0x80A52648:("func_80A52648",),
|
||||
0x80A526F8:("func_80A526F8",),
|
||||
@ -10604,7 +10604,7 @@
|
||||
0x80A52D44:("func_80A52D44",),
|
||||
0x80A52DC8:("func_80A52DC8",),
|
||||
0x80A52FB8:("func_80A52FB8",),
|
||||
0x80A53038:("func_80A53038",),
|
||||
0x80A53038:("EnDnq_HandleCutscene",),
|
||||
0x80A5313C:("EnDnq_Init",),
|
||||
0x80A53258:("EnDnq_Destroy",),
|
||||
0x80A53284:("EnDnq_Update",),
|
||||
@ -13640,7 +13640,7 @@
|
||||
0x80B3E168:("func_80B3E168",),
|
||||
0x80B3E460:("func_80B3E460",),
|
||||
0x80B3E5B4:("func_80B3E5B4",),
|
||||
0x80B3E5DC:("func_80B3E5DC",),
|
||||
0x80B3E5DC:("EnDai_ChangeAnim",),
|
||||
0x80B3E69C:("func_80B3E69C",),
|
||||
0x80B3E7C8:("func_80B3E7C8",),
|
||||
0x80B3E834:("func_80B3E834",),
|
||||
@ -13653,7 +13653,7 @@
|
||||
0x80B3EEDC:("func_80B3EEDC",),
|
||||
0x80B3EF90:("func_80B3EF90",),
|
||||
0x80B3F00C:("func_80B3F00C",),
|
||||
0x80B3F044:("func_80B3F044",),
|
||||
0x80B3F044:("EnDai_HandleCutscene",),
|
||||
0x80B3F318:("EnDai_Init",),
|
||||
0x80B3F494:("EnDai_Destroy",),
|
||||
0x80B3F4A4:("EnDai_Update",),
|
||||
@ -16117,7 +16117,7 @@
|
||||
0x80BE61D0:("func_80BE61D0",),
|
||||
0x80BE6228:("EnDaiku2_Init",),
|
||||
0x80BE63DC:("EnDaiku2_Destroy",),
|
||||
0x80BE6408:("func_80BE6408",),
|
||||
0x80BE6408:("EnDaiku2_ChangeAnim",),
|
||||
0x80BE64C0:("func_80BE64C0",),
|
||||
0x80BE65B4:("func_80BE65B4",),
|
||||
0x80BE66E4:("func_80BE66E4",),
|
||||
|
@ -7965,7 +7965,7 @@
|
||||
0x8092DD54:("D_8092DD54","UNK_PTR","",0x4),
|
||||
0x8092DD60:("sAnimations","UNK_TYPE1","",0x1),
|
||||
0x8092DE00:("D_8092DE00","UNK_TYPE1","",0x1),
|
||||
0x8092DE0C:("D_8092DE0C","UNK_TYPE1","",0x1),
|
||||
0x8092DE0C:("sCsAnimIndex","UNK_TYPE1","",0x1),
|
||||
0x8092DE1C:("D_8092DE1C","UNK_TYPE1","",0x1),
|
||||
0x8092DE30:("D_8092DE30","f32","",0x4),
|
||||
0x8092DE34:("D_8092DE34","f32","",0x4),
|
||||
@ -11563,7 +11563,7 @@
|
||||
0x80A5349C:("sAnimationInfo","UNK_TYPE1","",0x1),
|
||||
0x80A535DC:("D_80A535DC","UNK_TYPE1","",0x1),
|
||||
0x80A535F0:("D_80A535F0","UNK_TYPE4","",0x4),
|
||||
0x80A535FC:("D_80A535FC","UNK_TYPE1","",0x1),
|
||||
0x80A535FC:("sCsAnimIndex","UNK_TYPE1","",0x1),
|
||||
0x80A53620:("jtbl_80A53620","UNK_PTR","",0x4),
|
||||
0x80A53648:("jtbl_80A53648","UNK_PTR","",0x4),
|
||||
0x80A53B50:("Bg_Keikoku_Saku_InitVars","UNK_TYPE1","",0x1),
|
||||
@ -14161,7 +14161,7 @@
|
||||
0x80B3DCAC:("D_80B3DCAC","UNK_TYPE1","",0x1),
|
||||
0x80B3DCB8:("sAnimations","UNK_TYPE1","",0x1),
|
||||
0x80B3DE58:("D_80B3DE58","UNK_TYPE1","",0x1),
|
||||
0x80B3DE74:("sCsAnimations","UNK_TYPE1","",0x1),
|
||||
0x80B3DE74:("sCsAnimIndex","UNK_TYPE1","",0x1),
|
||||
0x80B3DEAC:("sEyeTextures","UNK_TYPE1","",0x1),
|
||||
0x80B3DEC0:("D_80B3DEC0","f32","",0x4),
|
||||
0x80B3DEC4:("D_80B3DEC4","f32","",0x4),
|
||||
@ -14183,7 +14183,7 @@
|
||||
0x80B3FDF4:("D_80B3FDF4","UNK_TYPE4","",0x4),
|
||||
0x80B3FE00:("D_80B3FE00","UNK_TYPE2","",0x2),
|
||||
0x80B3FE08:("D_80B3FE08","UNK_TYPE4","",0x4),
|
||||
0x80B3FE38:("D_80B3FE38","UNK_TYPE1","",0x1),
|
||||
0x80B3FE38:("sCsAnimIndex","UNK_TYPE1","",0x1),
|
||||
0x80B3FE4C:("D_80B3FE4C","f32","",0x4),
|
||||
0x80B3FE50:("D_80B3FE50","f32","",0x4),
|
||||
0x80B3FE54:("D_80B3FE54","f32","",0x4),
|
||||
@ -15939,7 +15939,7 @@
|
||||
0x80BE78F0:("sTextIds","s16","",0x1),
|
||||
0x80BE7900:("D_80BE7900","UNK_TYPE1","",0x1),
|
||||
0x80BE792C:("sAnimations","AnimationHeader*","",0x1),
|
||||
0x80BE7958:("D_80BE7958","UNK_TYPE1","",0x1),
|
||||
0x80BE7958:("sAnimationModes","UNK_TYPE1","",0x1),
|
||||
0x80BE7970:("D_80BE7970","f32","",0x4),
|
||||
0x80BE7974:("D_80BE7974","f32","",0x4),
|
||||
0x80BE7978:("D_80BE7978","f32","",0x4),
|
||||
|
Loading…
x
Reference in New Issue
Block a user