mirror of https://github.com/zeldaret/mm.git
Animation Cleanup: En_O* (#1506)
* anim O cleanup * fix bss * PR Review
This commit is contained in:
parent
282f84e3f3
commit
c75d3b97d3
|
@ -1049,10 +1049,10 @@ s32 Collider_ResetSphereOC(PlayState* play, Collider* collider) {
|
|||
* Initializes an OcLine to default values
|
||||
*/
|
||||
s32 Collider_InitLine(PlayState* play, OcLine* line) {
|
||||
static Vec3f defaultLinePoint = { 0.0f, 0.0f, 0.0f };
|
||||
static Vec3f sDefaultLinePoint = { 0.0f, 0.0f, 0.0f };
|
||||
|
||||
Math_Vec3f_Copy(&line->line.a, &defaultLinePoint);
|
||||
Math_Vec3f_Copy(&line->line.b, &defaultLinePoint);
|
||||
Math_Vec3f_Copy(&line->line.a, &sDefaultLinePoint);
|
||||
Math_Vec3f_Copy(&line->line.b, &sDefaultLinePoint);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -316,10 +316,10 @@ void EffectSsBlast_Spawn(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* ac
|
|||
|
||||
void EffectSsBlast_SpawnWhiteCustomScale(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scale,
|
||||
s16 scaleStep, s16 life) {
|
||||
static Color_RGBA8 primColor = { 255, 255, 255, 255 };
|
||||
static Color_RGBA8 envColor = { 200, 200, 200, 0 };
|
||||
static Color_RGBA8 sPrimColor = { 255, 255, 255, 255 };
|
||||
static Color_RGBA8 sEnvColor = { 200, 200, 200, 0 };
|
||||
|
||||
EffectSsBlast_Spawn(play, pos, velocity, accel, &primColor, &envColor, scale, scaleStep, 35, life);
|
||||
EffectSsBlast_Spawn(play, pos, velocity, accel, &sPrimColor, &sEnvColor, scale, scaleStep, 35, life);
|
||||
}
|
||||
|
||||
void EffectSsBlast_SpawnShockwave(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* accel, Color_RGBA8* primColor,
|
||||
|
@ -328,10 +328,10 @@ void EffectSsBlast_SpawnShockwave(PlayState* play, Vec3f* pos, Vec3f* velocity,
|
|||
}
|
||||
|
||||
void EffectSsBlast_SpawnWhiteShockwave(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* accel) {
|
||||
static Color_RGBA8 primColor = { 255, 255, 255, 255 };
|
||||
static Color_RGBA8 envColor = { 200, 200, 200, 0 };
|
||||
static Color_RGBA8 sPrimColor = { 255, 255, 255, 255 };
|
||||
static Color_RGBA8 sEnvColor = { 200, 200, 200, 0 };
|
||||
|
||||
EffectSsBlast_SpawnShockwave(play, pos, velocity, accel, &primColor, &envColor, 10);
|
||||
EffectSsBlast_SpawnShockwave(play, pos, velocity, accel, &sPrimColor, &sEnvColor, 10);
|
||||
}
|
||||
|
||||
// EffectSsGSpk Spawn Functions
|
||||
|
@ -756,8 +756,8 @@ void EffectSsIcePiece_Spawn(PlayState* play, Vec3f* pos, f32 scale, Vec3f* veloc
|
|||
}
|
||||
|
||||
void EffectSsIcePiece_SpawnBurst(PlayState* play, Vec3f* refPos, f32 scale) {
|
||||
static Vec3f accel = { 0.0f, 0.0f, 0.0f };
|
||||
static Vec3f vecScales[] = {
|
||||
static Vec3f sAccel = { 0.0f, 0.0f, 0.0f };
|
||||
static Vec3f sVecScales[] = {
|
||||
{ 0.0f, 70.0f, 0.0f },
|
||||
{ 0.0f, 45.0f, 20.0f },
|
||||
{ 17.320474f, 45.0f, 9.999695f },
|
||||
|
@ -774,20 +774,20 @@ void EffectSsIcePiece_SpawnBurst(PlayState* play, Vec3f* refPos, f32 scale) {
|
|||
Vec3f pos;
|
||||
f32 velocityScale;
|
||||
|
||||
accel.y = -0.2f;
|
||||
sAccel.y = -0.2f;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(vecScales); i++) {
|
||||
for (i = 0; i < ARRAY_COUNT(sVecScales); i++) {
|
||||
pos = *refPos;
|
||||
velocityScale = Rand_ZeroFloat(1.0f) + 0.5f;
|
||||
velocity.x = (vecScales[i].x * 0.18f) * velocityScale;
|
||||
velocity.y = (vecScales[i].y * 0.18f) * velocityScale;
|
||||
velocity.z = (vecScales[i].z * 0.18f) * velocityScale;
|
||||
pos.x += vecScales[i].x;
|
||||
pos.y += vecScales[i].y;
|
||||
pos.z += vecScales[i].z;
|
||||
velocity.x = (sVecScales[i].x * 0.18f) * velocityScale;
|
||||
velocity.y = (sVecScales[i].y * 0.18f) * velocityScale;
|
||||
velocity.z = (sVecScales[i].z * 0.18f) * velocityScale;
|
||||
pos.x += sVecScales[i].x;
|
||||
pos.y += sVecScales[i].y;
|
||||
pos.z += sVecScales[i].z;
|
||||
|
||||
EffectSsIcePiece_Spawn(play, &pos, (Rand_ZeroFloat(1.0f) + 0.5f) * ((scale * 1.3f) * 100.0f), &velocity, &accel,
|
||||
25);
|
||||
EffectSsIcePiece_Spawn(play, &pos, (Rand_ZeroFloat(1.0f) + 0.5f) * ((scale * 1.3f) * 100.0f), &velocity,
|
||||
&sAccel, 25);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -812,10 +812,10 @@ void EffectSsEnIce_SpawnFlying(PlayState* play, Actor* actor, Vec3f* pos, Color_
|
|||
}
|
||||
|
||||
void func_800B2B44(PlayState* play, Actor* actor, Vec3f* pos, f32 scale) {
|
||||
static Color_RGBA8 primColor = { 150, 150, 150, 250 };
|
||||
static Color_RGBA8 envColor = { 235, 245, 255, 255 };
|
||||
static Color_RGBA8 sPrimColor = { 150, 150, 150, 250 };
|
||||
static Color_RGBA8 sEnvColor = { 235, 245, 255, 255 };
|
||||
|
||||
EffectSsEnIce_SpawnFlying(play, actor, pos, &primColor, &envColor, scale);
|
||||
EffectSsEnIce_SpawnFlying(play, actor, pos, &sPrimColor, &sEnvColor, scale);
|
||||
}
|
||||
|
||||
void func_800B2B7C(PlayState* play, Actor* actor, Vec3s* arg2, f32 scale) {
|
||||
|
@ -863,17 +863,17 @@ void EffectSsFireTail_Spawn(PlayState* play, Actor* actor, Vec3f* pos, f32 scale
|
|||
|
||||
void EffectSsFireTail_SpawnFlame(PlayState* play, Actor* actor, Vec3f* pos, f32 arg3, s16 bodyPart,
|
||||
f32 colorIntensity) {
|
||||
static Color_RGBA8 primColor = { 255, 255, 0, 255 };
|
||||
static Color_RGBA8 envColor = { 255, 0, 0, 255 };
|
||||
static Color_RGBA8 sPrimColor = { 255, 255, 0, 255 };
|
||||
static Color_RGBA8 sEnvColor = { 255, 0, 0, 255 };
|
||||
|
||||
primColor.g = (s32)(255.0f * colorIntensity);
|
||||
primColor.b = 0;
|
||||
sPrimColor.g = (s32)(255.0f * colorIntensity);
|
||||
sPrimColor.b = 0;
|
||||
|
||||
envColor.g = 0;
|
||||
envColor.b = 0;
|
||||
primColor.r = envColor.r = (s32)(255.0f * colorIntensity);
|
||||
sEnvColor.g = 0;
|
||||
sEnvColor.b = 0;
|
||||
sPrimColor.r = sEnvColor.r = (s32)(255.0f * colorIntensity);
|
||||
|
||||
EffectSsFireTail_Spawn(play, actor, pos, arg3, &actor->velocity, 15, &primColor, &envColor,
|
||||
EffectSsFireTail_Spawn(play, actor, pos, arg3, &actor->velocity, 15, &sPrimColor, &sEnvColor,
|
||||
(colorIntensity == 1.0f) ? 0 : 1, bodyPart, 1);
|
||||
}
|
||||
|
||||
|
@ -962,15 +962,15 @@ void EffectSsDeadDb_Spawn(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* a
|
|||
|
||||
void func_800B3030(PlayState* play, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scale, s16 scaleStep,
|
||||
s32 colorIndex) {
|
||||
static Color_RGBA8 primColor = { 255, 255, 255, 255 };
|
||||
static Color_RGBA8 envColors[] = {
|
||||
static Color_RGBA8 sPrimColor = { 255, 255, 255, 255 };
|
||||
static Color_RGBA8 sEnvColors[] = {
|
||||
{ 255, 0, 0, 255 },
|
||||
{ 0, 255, 0, 255 },
|
||||
{ 0, 0, 255, 255 },
|
||||
{ 150, 150, 150, 255 },
|
||||
};
|
||||
|
||||
EffectSsDeadDb_Spawn(play, pos, velocity, accel, &primColor, &envColors[colorIndex], scale, scaleStep, 9);
|
||||
EffectSsDeadDb_Spawn(play, pos, velocity, accel, &sPrimColor, &sEnvColors[colorIndex], scale, scaleStep, 9);
|
||||
}
|
||||
|
||||
// EffectSsDeadDd Spawn Functions
|
||||
|
|
|
@ -2856,8 +2856,8 @@ void Player_DrawCouplesMask(PlayState* play, Player* player) {
|
|||
}
|
||||
|
||||
void Player_DrawCircusLeadersMask(PlayState* play, Player* player) {
|
||||
static Vec3f bubbleVelocity = { 0.0f, 0.0f, 0.0f };
|
||||
static Vec3f bubbleAccel = { 0.0f, 0.0f, 0.0f };
|
||||
static Vec3f sBubbleVelocity = { 0.0f, 0.0f, 0.0f };
|
||||
static Vec3f sBubbleAccel = { 0.0f, 0.0f, 0.0f };
|
||||
Gfx* gfx;
|
||||
s32 i;
|
||||
|
||||
|
@ -2897,8 +2897,8 @@ void Player_DrawCircusLeadersMask(PlayState* play, Player* player) {
|
|||
s16 phi_s0 = speedXZ * 2000.0f;
|
||||
f32 temp_f20;
|
||||
|
||||
bubbleVelocity.y = speedXZ * 0.4f;
|
||||
bubbleAccel.y = -0.3f;
|
||||
sBubbleVelocity.y = speedXZ * 0.4f;
|
||||
sBubbleAccel.y = -0.3f;
|
||||
|
||||
if (phi_s0 > 0x3E80) {
|
||||
phi_s0 = 0x3E80;
|
||||
|
@ -2908,10 +2908,10 @@ void Player_DrawCircusLeadersMask(PlayState* play, Player* player) {
|
|||
temp_f20 = speedXZ * 0.2f;
|
||||
temp_f20 = CLAMP_MAX(temp_f20, 4.0f);
|
||||
|
||||
bubbleVelocity.x = -Math_SinS(phi_s0) * temp_f20;
|
||||
bubbleVelocity.z = -Math_CosS(phi_s0) * temp_f20;
|
||||
sBubbleVelocity.x = -Math_SinS(phi_s0) * temp_f20;
|
||||
sBubbleVelocity.z = -Math_CosS(phi_s0) * temp_f20;
|
||||
|
||||
EffectSsDtBubble_SpawnColorProfile(play, &D_801F59B0[i], &bubbleVelocity, &bubbleAccel, 20, 20, 3, 0);
|
||||
EffectSsDtBubble_SpawnColorProfile(play, &D_801F59B0[i], &sBubbleVelocity, &sBubbleAccel, 20, 20, 3, 0);
|
||||
D_801F59C8[i] -= 400;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -97,9 +97,9 @@ void BgIcicle_Destroy(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
|
||||
void BgIcicle_Break(BgIcicle* this, PlayState* play, f32 arg2) {
|
||||
static Vec3f accel = { 0.0f, -1.0f, 0.0f };
|
||||
static Color_RGBA8 primColor = { 170, 255, 255, 255 };
|
||||
static Color_RGBA8 envColor = { 0, 50, 100, 255 };
|
||||
static Vec3f sAccel = { 0.0f, -1.0f, 0.0f };
|
||||
static Color_RGBA8 sPrimColor = { 170, 255, 255, 255 };
|
||||
static Color_RGBA8 sEnvColor = { 0, 50, 100, 255 };
|
||||
Vec3f velocity;
|
||||
Vec3f pos;
|
||||
s32 j;
|
||||
|
@ -117,7 +117,7 @@ void BgIcicle_Break(BgIcicle* this, PlayState* play, f32 arg2) {
|
|||
velocity.z = Rand_CenteredFloat(7.0f);
|
||||
velocity.y = (Rand_ZeroOne() * 4.0f) + 8.0f;
|
||||
|
||||
EffectSsEnIce_Spawn(play, &pos, (Rand_ZeroOne() * 0.2f) + 0.1f, &velocity, &accel, &primColor, &envColor,
|
||||
EffectSsEnIce_Spawn(play, &pos, (Rand_ZeroOne() * 0.2f) + 0.1f, &velocity, &sAccel, &sPrimColor, &sEnvColor,
|
||||
30);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -99,26 +99,6 @@ static ColliderJntSphInit sJntSphInit = {
|
|||
sJntSphElementsInit,
|
||||
};
|
||||
|
||||
static Vec3f eyeSparkleSpawnPositions[][2] = {
|
||||
{ { -215.0f, 139.0f, 50.0f }, { -193.0f, 139.0f, 50.0f } },
|
||||
|
||||
{ { -125.0f, 139.0f, 50.0f }, { -103.0f, 139.0f, 50.0f } },
|
||||
|
||||
{ { 103.0f, 139.0f, 50.0f }, { 125.0f, 139.0f, 50.0f } },
|
||||
|
||||
{ { 193.0f, 139.0f, 50.0f }, { 215.0f, 139.0f, 50.0f } },
|
||||
};
|
||||
|
||||
static Color_RGBA8 primColor = { 255, 255, 255, 0 };
|
||||
static Color_RGBA8 envColor = { 0, 128, 128, 0 };
|
||||
|
||||
static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_F32(uncullZoneForward, 2000, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneScale, 100, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneDownward, 100, ICHAIN_CONTINUE),
|
||||
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
s32 BgKin2Fence_CheckHitMask(BgKin2Fence* this) {
|
||||
s32 i;
|
||||
|
||||
|
@ -130,7 +110,16 @@ s32 BgKin2Fence_CheckHitMask(BgKin2Fence* this) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
static Vec3f sEyeSparkleSpawnPositions[][2] = {
|
||||
{ { -215.0f, 139.0f, 50.0f }, { -193.0f, 139.0f, 50.0f } },
|
||||
{ { -125.0f, 139.0f, 50.0f }, { -103.0f, 139.0f, 50.0f } },
|
||||
{ { 103.0f, 139.0f, 50.0f }, { 125.0f, 139.0f, 50.0f } },
|
||||
{ { 193.0f, 139.0f, 50.0f }, { 215.0f, 139.0f, 50.0f } },
|
||||
};
|
||||
|
||||
void BgKin2Fence_SpawnEyeSparkles(BgKin2Fence* this, PlayState* play, s32 mask) {
|
||||
static Color_RGBA8 sPrimColor = { 255, 255, 255, 0 };
|
||||
static Color_RGBA8 sEnvColor = { 0, 128, 128, 0 };
|
||||
s32 i;
|
||||
Vec3f sp58;
|
||||
s32 pad[2];
|
||||
|
@ -139,11 +128,18 @@ void BgKin2Fence_SpawnEyeSparkles(BgKin2Fence* this, PlayState* play, s32 mask)
|
|||
this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot);
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
Matrix_MultVec3f(&eyeSparkleSpawnPositions[mask][i], &sp58);
|
||||
EffectSsKirakira_SpawnDispersed(play, &sp58, &gZeroVec3f, &gZeroVec3f, &primColor, &envColor, 6000, -10);
|
||||
Matrix_MultVec3f(&sEyeSparkleSpawnPositions[mask][i], &sp58);
|
||||
EffectSsKirakira_SpawnDispersed(play, &sp58, &gZeroVec3f, &gZeroVec3f, &sPrimColor, &sEnvColor, 6000, -10);
|
||||
}
|
||||
}
|
||||
|
||||
static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_F32(uncullZoneForward, 2000, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneScale, 100, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneDownward, 100, ICHAIN_CONTINUE),
|
||||
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
void BgKin2Fence_Init(Actor* thisx, PlayState* play) {
|
||||
BgKin2Fence* this = THIS;
|
||||
s32 i = 0;
|
||||
|
|
|
@ -1885,7 +1885,7 @@ void DmStk_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
s32 DmStk_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 DmStk_OverrideLimbDrawOpa(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
DmStk* this = THIS;
|
||||
|
||||
if (limbIndex == SKULL_KID_LIMB_RIGHT_HAND) {
|
||||
|
@ -1919,7 +1919,7 @@ s32 DmStk_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
|||
return false;
|
||||
}
|
||||
|
||||
void DmStk_PostLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
void DmStk_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
s32 pad;
|
||||
s32 pad2;
|
||||
DmStk* this = THIS;
|
||||
|
@ -2080,10 +2080,10 @@ void DmStk_PostLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot
|
|||
}
|
||||
}
|
||||
|
||||
void DmStk_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void DmStk_PostLimbDrawOpa(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
DmStk* this = THIS;
|
||||
|
||||
DmStk_PostLimbDraw2(play, limbIndex, dList, rot, &this->actor, NULL);
|
||||
DmStk_PostLimbDraw(play, limbIndex, dList, rot, &this->actor, NULL);
|
||||
}
|
||||
|
||||
void DmStk_Draw(Actor* thisx, PlayState* play) {
|
||||
|
@ -2111,7 +2111,7 @@ void DmStk_Draw(Actor* thisx, PlayState* play) {
|
|||
|
||||
POLY_XLU_DISP =
|
||||
SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable,
|
||||
this->skelAnime.dListCount, NULL, DmStk_PostLimbDraw2, &this->actor, POLY_XLU_DISP);
|
||||
this->skelAnime.dListCount, NULL, DmStk_PostLimbDraw, &this->actor, POLY_XLU_DISP);
|
||||
} else {
|
||||
Scene_SetRenderModeXlu(play, 0, 1);
|
||||
|
||||
|
@ -2119,7 +2119,8 @@ void DmStk_Draw(Actor* thisx, PlayState* play) {
|
|||
gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 255, 255);
|
||||
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable,
|
||||
this->skelAnime.dListCount, DmStk_OverrideLimbDraw, DmStk_PostLimbDraw, &this->actor);
|
||||
this->skelAnime.dListCount, DmStk_OverrideLimbDrawOpa, DmStk_PostLimbDrawOpa,
|
||||
&this->actor);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
|
|
@ -31,12 +31,10 @@ void func_808B057C(EnAm* this);
|
|||
void func_808B05C8(EnAm* this, PlayState* play);
|
||||
void func_808B0640(EnAm* this);
|
||||
void func_808B066C(EnAm* this, PlayState* play);
|
||||
void EnAm_TakeDamage(EnAm* this, PlayState* play);
|
||||
void func_808B07A8(EnAm* this, PlayState* play);
|
||||
void func_808B0820(EnAm* this);
|
||||
void func_808B0894(EnAm* this, PlayState* play);
|
||||
void func_808B0B4C(EnAm* this, PlayState* play);
|
||||
void EnAm_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx);
|
||||
|
||||
ActorInit En_Am_InitVars = {
|
||||
/**/ ACTOR_EN_AM,
|
||||
|
|
|
@ -25,8 +25,8 @@ void EnAz_Draw(Actor* thisx, PlayState* play2);
|
|||
|
||||
void func_80A982E0(PlayState* play, ActorPathing* actorPathing);
|
||||
void func_80A98414(EnAz* this, PlayState* play);
|
||||
s32 func_80A98DA4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
|
||||
void func_80A98E48(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx);
|
||||
s32 EnAz_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
|
||||
void EnAz_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx);
|
||||
void func_80A98EFC(EnAz* this, PlayState* play, u16 textId, s32 animIndex, s32 brotherAnimIndex);
|
||||
void func_80A98F94(struct_80A98F94* yData, f32 frame, f32* yInterp);
|
||||
|
||||
|
@ -1896,14 +1896,14 @@ void EnAz_Draw(Actor* thisx, PlayState* play2) {
|
|||
|
||||
if (this->unk_374 & 2) {
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_80A98DA4, func_80A98E48, &this->actor);
|
||||
EnAz_OverrideLimbDraw, EnAz_PostLimbDraw, &this->actor);
|
||||
} else {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sYoungerBrotherEyeTextures[this->unk_37E]));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x09, Lib_SegmentedToVirtual(sYoungerBrotherBeltTextures[this->unk_380]));
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_80A98DA4, func_80A98E48, &this->actor);
|
||||
EnAz_OverrideLimbDraw, EnAz_PostLimbDraw, &this->actor);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
@ -1967,7 +1967,7 @@ void EnAz_Draw(Actor* thisx, PlayState* play2) {
|
|||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
||||
s32 func_80A98DA4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 EnAz_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnAz* this = THIS;
|
||||
|
||||
if ((limbIndex == BEAVER_OLDER_BROTHER_LIMB_NONE) && ((play->gameplayFrames % 2) != 0)) {
|
||||
|
@ -1990,7 +1990,7 @@ s32 func_80A98DA4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s
|
|||
return false;
|
||||
}
|
||||
|
||||
void func_80A98E48(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnAz_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
static Vec3f D_80A99410 = { 700.0f, 0.0f, 0.0f };
|
||||
static Vec3f D_80A9941C = { -500.0f, 0.0f, 0.0f };
|
||||
static Vec3f D_80A99428 = { -1200.0f, 0.0f, 1000.0f };
|
||||
|
|
|
@ -1965,7 +1965,7 @@ void EnBigslime_SetupMelt(EnBigslime* this) {
|
|||
}
|
||||
|
||||
void EnBigslime_Melt(EnBigslime* this, PlayState* play) {
|
||||
static Vec3f iceSmokeVelocity = { 0.0f, 2.0f, 0.0f };
|
||||
static Vec3f sIceSmokeVelocity = { 0.0f, 2.0f, 0.0f };
|
||||
Vec3f iceSmokePos;
|
||||
Vtx* targetVtx;
|
||||
Vtx* dynamicVtx;
|
||||
|
@ -1978,7 +1978,7 @@ void EnBigslime_Melt(EnBigslime* this, PlayState* play) {
|
|||
iceSmokePos.x = (dynamicVtx->n.ob[0] * this->actor.scale.x) + this->actor.world.pos.x;
|
||||
iceSmokePos.y = (dynamicVtx->n.ob[1] * this->actor.scale.y) + this->actor.world.pos.y;
|
||||
iceSmokePos.z = (dynamicVtx->n.ob[2] * this->actor.scale.z) + this->actor.world.pos.z;
|
||||
EffectSsIceSmoke_Spawn(play, &iceSmokePos, &iceSmokeVelocity, &gZeroVec3f, 600);
|
||||
EffectSsIceSmoke_Spawn(play, &iceSmokePos, &sIceSmokeVelocity, &gZeroVec3f, 600);
|
||||
}
|
||||
|
||||
Actor_PlaySfx_Flagged(&this->actor, NA_SE_EV_ICE_MELT_LEVEL - SFX_FLAG);
|
||||
|
@ -2418,9 +2418,9 @@ void EnBigslime_GekkoDespawn(EnBigslime* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void EnBigslime_SetupFrogSpawn(EnBigslime* this, PlayState* play) {
|
||||
static Color_RGBA8 dustPrimColor = { 250, 250, 250, 255 };
|
||||
static Color_RGBA8 dustEnvColor = { 180, 180, 180, 255 };
|
||||
static Vec3f hahenAccel = { 0.0f, -0.5f, 0.0f };
|
||||
static Color_RGBA8 sDustPrimColor = { 250, 250, 250, 255 };
|
||||
static Color_RGBA8 sDustEnvColor = { 180, 180, 180, 255 };
|
||||
static Vec3f sHahenAccel = { 0.0f, -0.5f, 0.0f };
|
||||
Camera* subCam = Play_GetCamera(play, this->subCamId);
|
||||
Vec3f* worldPos;
|
||||
Vec3f dustPos;
|
||||
|
@ -2442,13 +2442,13 @@ void EnBigslime_SetupFrogSpawn(EnBigslime* this, PlayState* play) {
|
|||
SoundSource_PlaySfxAtFixedWorldPos(play, worldPos, 40, NA_SE_EN_NPC_APPEAR);
|
||||
|
||||
// dust cloud where the red frog appears
|
||||
func_800B0DE0(play, &dustPos, &gZeroVec3f, &gZeroVec3f, &dustPrimColor, &dustEnvColor, 500, 50);
|
||||
func_800B0DE0(play, &dustPos, &gZeroVec3f, &gZeroVec3f, &sDustPrimColor, &sDustEnvColor, 500, 50);
|
||||
|
||||
for (i = 0; i < 25; i++) {
|
||||
hahenVel.x = Rand_CenteredFloat(5.0f);
|
||||
hahenVel.y = Rand_ZeroFloat(3.0f) + 4.0f;
|
||||
hahenVel.z = Rand_CenteredFloat(5.0f);
|
||||
EffectSsHahen_Spawn(play, worldPos, &hahenVel, &hahenAccel, 0, Rand_S16Offset(12, 3), HAHEN_OBJECT_DEFAULT, 10,
|
||||
EffectSsHahen_Spawn(play, worldPos, &hahenVel, &sHahenAccel, 0, Rand_S16Offset(12, 3), HAHEN_OBJECT_DEFAULT, 10,
|
||||
0);
|
||||
}
|
||||
|
||||
|
@ -3083,24 +3083,24 @@ void EnBigslime_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s*
|
|||
}
|
||||
|
||||
void EnBigslime_DrawGekko(Actor* thisx, PlayState* play) {
|
||||
static Color_RGBA8 gekkoDamageColor = { 255, 0, 0, 0 };
|
||||
static Color_RGBA8 gekkoStunColor = { 0, 0, 255, 0 };
|
||||
static Color_RGBA8 sGekkoDamageColor = { 255, 0, 0, 0 };
|
||||
static Color_RGBA8 sGekkoStunColor = { 0, 0, 255, 0 };
|
||||
Vec3f gekkoPos;
|
||||
EnBigslime* this = THIS;
|
||||
s32 pad;
|
||||
|
||||
Gfx_SetupDL25_Opa(play->state.gfxCtx);
|
||||
if (this->actionFunc == EnBigslime_DamageGekko) {
|
||||
func_800AE434(play, &gekkoDamageColor, this->damageSpinTimer, 20);
|
||||
func_800AE434(play, &sGekkoDamageColor, this->damageSpinTimer, 20);
|
||||
} else if ((this->actionFunc == EnBigslime_CutsceneDefeat) || (this->actionFunc == EnBigslime_GekkoDespawn)) {
|
||||
func_800AE434(play, &gekkoDamageColor, 20, 20);
|
||||
func_800AE434(play, &sGekkoDamageColor, 20, 20);
|
||||
} else if (this->actionFunc == EnBigslime_StunGekko) {
|
||||
if (this->gekkoDrawDmgEffType == ACTOR_DRAW_DMGEFF_FROZEN_NO_SFX) {
|
||||
func_800AE434(play, &gekkoDamageColor, this->stunTimer, 80);
|
||||
func_800AE434(play, &sGekkoDamageColor, this->stunTimer, 80);
|
||||
} else if (this->gekkoDrawDmgEffType == ACTOR_DRAW_DMGEFF_ELECTRIC_SPARKS_SMALL) {
|
||||
func_800AE434(play, &gekkoStunColor, this->stunTimer, 40);
|
||||
func_800AE434(play, &sGekkoStunColor, this->stunTimer, 40);
|
||||
} else {
|
||||
func_800AE434(play, &gekkoStunColor, this->stunTimer, 40);
|
||||
func_800AE434(play, &sGekkoStunColor, this->stunTimer, 40);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -442,7 +442,7 @@ void EnBombers2_Update(Actor* thisx, PlayState* play) {
|
|||
Math_Vec3f_Copy(&this->actor.world.pos, &sp34);
|
||||
}
|
||||
|
||||
s32 func_80C056D4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 EnBombers2_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnBombers2* this = THIS;
|
||||
|
||||
if (limbIndex == OBJECT_CS_LIMB_08) {
|
||||
|
@ -470,6 +470,6 @@ void EnBombers2_Draw(Actor* thisx, PlayState* play) {
|
|||
gSPSegment(POLY_OPA_DISP++, 0x0A, Lib_SegmentedToVirtual(sSetPrimColorDlPtr));
|
||||
Scene_SetRenderModeXlu(play, 0, 1);
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_80C056D4, NULL, &this->actor);
|
||||
EnBombers2_OverrideLimbDraw, NULL, &this->actor);
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
|
|
@ -1407,7 +1407,8 @@ void EnDinofos_Update(Actor* thisx, PlayState* play2) {
|
|||
}
|
||||
}
|
||||
|
||||
s32 func_8089DC4C(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
s32 EnDinofos_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
|
||||
Gfx** gfx) {
|
||||
EnDinofos* this = THIS;
|
||||
|
||||
if (limbIndex == DINOLFOS_LIMB_HEAD) {
|
||||
|
@ -1445,7 +1446,7 @@ static s8 sLimbToBodyParts[DINOLFOS_LIMB_MAX] = {
|
|||
BODYPART_NONE, // DINOLFOS_LIMB_KNIFE
|
||||
};
|
||||
|
||||
void func_8089DC84(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
void EnDinofos_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
EnDinofos* this = THIS;
|
||||
Vec3f sp80;
|
||||
Vec3f sp74;
|
||||
|
@ -1511,7 +1512,7 @@ void EnDinofos_Draw(Actor* thisx, PlayState* play) {
|
|||
Scene_SetRenderModeXlu(play, 0, 1);
|
||||
POLY_OPA_DISP =
|
||||
SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_8089DC4C, func_8089DC84, &this->actor, POLY_OPA_DISP);
|
||||
EnDinofos_OverrideLimbDraw, EnDinofos_PostLimbDraw, &this->actor, POLY_OPA_DISP);
|
||||
} else {
|
||||
Gfx_SetupDL25_Xlu(play->state.gfxCtx);
|
||||
func_800B8118(&this->actor, play, 0);
|
||||
|
@ -1522,7 +1523,7 @@ void EnDinofos_Draw(Actor* thisx, PlayState* play) {
|
|||
Scene_SetRenderModeXlu(play, 1, 2);
|
||||
POLY_XLU_DISP =
|
||||
SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_8089DC4C, func_8089DC84, &this->actor, POLY_XLU_DISP);
|
||||
EnDinofos_OverrideLimbDraw, EnDinofos_PostLimbDraw, &this->actor, POLY_XLU_DISP);
|
||||
}
|
||||
|
||||
Actor_DrawDamageEffects(play, &this->actor, this->bodyPartsPos, DINOFOS_BODYPART_MAX, this->drawDmgEffScale,
|
||||
|
|
|
@ -309,7 +309,7 @@ void EnDnk_Update(Actor* thisx, PlayState* play) {
|
|||
func_80A52134(this, play);
|
||||
}
|
||||
|
||||
s32 func_80A51A78(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 EnDnk_OverrideLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnDnk* this = THIS;
|
||||
|
||||
this->unk_260[limbIndex] = *dList;
|
||||
|
@ -317,7 +317,7 @@ s32 func_80A51A78(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s
|
|||
return false;
|
||||
}
|
||||
|
||||
void func_80A51AA4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnDnk_PostLimbDraw2(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
EnDnk* this = THIS;
|
||||
MtxF sp5C;
|
||||
Vec3f sp50 = gZeroVec3f;
|
||||
|
@ -379,13 +379,13 @@ void func_80A51CB8(EnDnk* this, PlayState* play) {
|
|||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80A5245C[this->unk_2A0]));
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
|
||||
SkelAnime_DrawOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, func_80A51A78, func_80A51AA4,
|
||||
&this->actor);
|
||||
SkelAnime_DrawOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, EnDnk_OverrideLimbDraw2,
|
||||
EnDnk_PostLimbDraw2, &this->actor);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
||||
s32 func_80A51D78(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 EnDnk_OverrideLimbDraw1(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnDnk* this = THIS;
|
||||
|
||||
this->unk_260[limbIndex] = *dList;
|
||||
|
@ -393,7 +393,7 @@ s32 func_80A51D78(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s
|
|||
return false;
|
||||
}
|
||||
|
||||
void func_80A51DA4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnDnk_PostLimbDraw1(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
EnDnk* this = THIS;
|
||||
MtxF sp5C;
|
||||
Vec3f sp50 = gZeroVec3f;
|
||||
|
@ -445,8 +445,8 @@ void func_80A51DA4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Acto
|
|||
|
||||
void func_80A51FC0(EnDnk* this, PlayState* play) {
|
||||
Gfx_SetupDL25_Opa(play->state.gfxCtx);
|
||||
SkelAnime_DrawOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, func_80A51D78, func_80A51DA4,
|
||||
&this->actor);
|
||||
SkelAnime_DrawOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, EnDnk_OverrideLimbDraw1,
|
||||
EnDnk_PostLimbDraw1, &this->actor);
|
||||
}
|
||||
|
||||
void func_80A52018(Actor* thisx, PlayState* play) {
|
||||
|
|
|
@ -1241,8 +1241,8 @@ void func_8088F214(EnElf* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_8088F5F4(EnElf* this, PlayState* play, s32 sparkleLife) {
|
||||
static Vec3f sparkleVelocity = { 0.0f, -0.05f, 0.0f };
|
||||
static Vec3f sparkleAccel = { 0.0f, -0.025f, 0.0f };
|
||||
static Vec3f sSparkleVelocity = { 0.0f, -0.05f, 0.0f };
|
||||
static Vec3f sSparkleAccel = { 0.0f, -0.025f, 0.0f };
|
||||
s32 pad;
|
||||
Vec3f sparklePos;
|
||||
Color_RGBA8 primColor;
|
||||
|
@ -1261,8 +1261,8 @@ void func_8088F5F4(EnElf* this, PlayState* play, s32 sparkleLife) {
|
|||
envColor.g = this->outerColor.g;
|
||||
envColor.b = this->outerColor.b;
|
||||
|
||||
EffectSsKirakira_SpawnDispersed(play, &sparklePos, &sparkleVelocity, &sparkleAccel, &primColor, &envColor, 1000,
|
||||
sparkleLife);
|
||||
EffectSsKirakira_SpawnDispersed(play, &sparklePos, &sSparkleVelocity, &sSparkleAccel, &primColor, &envColor,
|
||||
1000, sparkleLife);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1550,7 +1550,7 @@ void EnElf_Update(Actor* thisx, PlayState* play) {
|
|||
|
||||
s32 EnElf_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
|
||||
Gfx** gfx) {
|
||||
static Vec3f zeroVec = { 0.0f, 0.0f, 0.0f };
|
||||
static Vec3f sZeroVec = { 0.0f, 0.0f, 0.0f };
|
||||
s32 pad;
|
||||
EnElf* this = THIS;
|
||||
Vec3f sp34;
|
||||
|
@ -1563,7 +1563,7 @@ s32 EnElf_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
|||
}
|
||||
scale *= this->actor.scale.x * (1.0f / 0.008f);
|
||||
|
||||
Matrix_MultVec3f(&zeroVec, &sp34);
|
||||
Matrix_MultVec3f(&sZeroVec, &sp34);
|
||||
Matrix_Translate(sp34.x, sp34.y, sp34.z, MTXMODE_NEW);
|
||||
Matrix_Scale(scale, scale, scale, MTXMODE_APPLY);
|
||||
}
|
||||
|
|
|
@ -754,12 +754,12 @@ s32 EnFirefly_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3
|
|||
}
|
||||
|
||||
void EnFirefly_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
static Color_RGBA8 fireAuraPrimColor = { 255, 255, 100, 255 };
|
||||
static Color_RGBA8 fireAuraEnvColor = { 255, 50, 0, 0 };
|
||||
static Color_RGBA8 iceAuraPrimColor = { 100, 200, 255, 255 };
|
||||
static Color_RGBA8 iceAuraEnvColor = { 0, 0, 255, 0 };
|
||||
static Vec3f auraVelocity = { 0.0f, 0.5f, 0.0f };
|
||||
static Vec3f auraAccel = { 0.0f, 0.5f, 0.0f };
|
||||
static Color_RGBA8 sFireAuraPrimColor = { 255, 255, 100, 255 };
|
||||
static Color_RGBA8 sFireAuraEnvColor = { 255, 50, 0, 0 };
|
||||
static Color_RGBA8 sIceAuraPrimColor = { 100, 200, 255, 255 };
|
||||
static Color_RGBA8 sIceAuraEnvColor = { 0, 0, 255, 0 };
|
||||
static Vec3f sAuraVelocity = { 0.0f, 0.5f, 0.0f };
|
||||
static Vec3f sAuraAccel = { 0.0f, 0.5f, 0.0f };
|
||||
Vec3f auraPos;
|
||||
Color_RGBA8* auraPrimColor;
|
||||
Color_RGBA8* auraEnvColor;
|
||||
|
@ -795,14 +795,14 @@ void EnFirefly_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s*
|
|||
}
|
||||
|
||||
if (this->auraType == KEESE_AURA_FIRE) {
|
||||
auraPrimColor = &fireAuraPrimColor;
|
||||
auraEnvColor = &fireAuraEnvColor;
|
||||
auraPrimColor = &sFireAuraPrimColor;
|
||||
auraEnvColor = &sFireAuraEnvColor;
|
||||
} else {
|
||||
auraPrimColor = &iceAuraPrimColor;
|
||||
auraEnvColor = &iceAuraEnvColor;
|
||||
auraPrimColor = &sIceAuraPrimColor;
|
||||
auraEnvColor = &sIceAuraEnvColor;
|
||||
}
|
||||
|
||||
func_800B0F80(play, &auraPos, &auraVelocity, &auraAccel, auraPrimColor, auraEnvColor, 250, auraScaleStep,
|
||||
func_800B0F80(play, &auraPos, &sAuraVelocity, &sAuraAccel, auraPrimColor, auraEnvColor, 250, auraScaleStep,
|
||||
auraLife);
|
||||
}
|
||||
|
||||
|
|
|
@ -479,7 +479,8 @@ void EnGg2_Update(Actor* thisx, PlayState* play) {
|
|||
func_80B3ADD8(this);
|
||||
}
|
||||
|
||||
s32 func_80B3BD44(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
s32 EnGg2_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
|
||||
Gfx** gfx) {
|
||||
EnGg2* this = THIS;
|
||||
|
||||
if ((this->animIndex != ENGG2_ANIM_5) && (this->animIndex != ENGG2_ANIM_7)) {
|
||||
|
@ -494,7 +495,7 @@ s32 func_80B3BD44(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s
|
|||
return false;
|
||||
}
|
||||
|
||||
void func_80B3BDC0(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
void EnGg2_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
EnGg2* this = THIS;
|
||||
|
||||
if (limbIndex == OBJECT_GG_LIMB_04) {
|
||||
|
@ -514,7 +515,7 @@ void EnGg2_Draw(Actor* thisx, PlayState* play) {
|
|||
|
||||
POLY_XLU_DISP =
|
||||
SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_80B3BD44, func_80B3BDC0, &this->actor, POLY_XLU_DISP);
|
||||
EnGg2_OverrideLimbDraw, EnGg2_PostLimbDraw, &this->actor, POLY_XLU_DISP);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
|
|
@ -24,10 +24,8 @@ void EnHg_ChasePlayerWait(EnHg* this, PlayState* play);
|
|||
void EnHg_SetupReactToHit(EnHg* this);
|
||||
void EnHg_ReactToHit(EnHg* this, PlayState* play);
|
||||
void EnHg_PlayCutscene(EnHg* this, PlayState* play);
|
||||
void EnHg_SetupCsAction(EnHg* this);
|
||||
void EnHg_HandleCsAction(EnHg* this, PlayState* play);
|
||||
s32 EnHg_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
|
||||
void EnHg_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx);
|
||||
void EnHg_SetupHandleCutscene(EnHg* this);
|
||||
void EnHg_HandleCutscene(EnHg* this, PlayState* play);
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ HG_CS_FIRST_ENCOUNTER,
|
||||
|
@ -259,7 +257,7 @@ void EnHg_UpdateCollision(EnHg* this, PlayState* play) {
|
|||
Collider_UpdateCylinder(&this->actor, &this->collider);
|
||||
CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base);
|
||||
if ((this->actionFunc != EnHg_ReactToHit) && (this->actionFunc != EnHg_PlayCutscene) &&
|
||||
(this->actionFunc != EnHg_HandleCsAction)) {
|
||||
(this->actionFunc != EnHg_HandleCutscene)) {
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base);
|
||||
}
|
||||
}
|
||||
|
@ -272,7 +270,7 @@ void EnHg_SetupCutscene(EnHg* this) {
|
|||
void EnHg_PlayCutscene(EnHg* this, PlayState* play) {
|
||||
if (CutsceneManager_IsNext(this->csIdList[this->csIdIndex])) {
|
||||
CutsceneManager_Start(this->csIdList[this->csIdIndex], &this->actor);
|
||||
EnHg_SetupCsAction(this);
|
||||
EnHg_SetupHandleCutscene(this);
|
||||
} else {
|
||||
if (CutsceneManager_GetCurrentCsId() == CS_ID_GLOBAL_TALK) {
|
||||
CutsceneManager_Stop(CS_ID_GLOBAL_TALK);
|
||||
|
@ -281,13 +279,13 @@ void EnHg_PlayCutscene(EnHg* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
void EnHg_SetupCsAction(EnHg* this) {
|
||||
void EnHg_SetupHandleCutscene(EnHg* this) {
|
||||
this->csIdList[3] = 99;
|
||||
this->csIdList[2] = 0;
|
||||
this->actionFunc = EnHg_HandleCsAction;
|
||||
this->actionFunc = EnHg_HandleCutscene;
|
||||
}
|
||||
|
||||
void EnHg_HandleCsAction(EnHg* this, PlayState* play) {
|
||||
void EnHg_HandleCutscene(EnHg* this, PlayState* play) {
|
||||
if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_484)) {
|
||||
s32 cueChannel = Cutscene_GetCueChannel(play, CS_CMD_ACTOR_CUE_484);
|
||||
|
||||
|
@ -411,7 +409,7 @@ void EnHg_WaitForPlayerAction(EnHg* this, PlayState* play) {
|
|||
|
||||
} else {
|
||||
if ((this->actor.xzDistToPlayer < 60.0f) && (fabsf(this->actor.playerHeightRel) < 40.0f)) {
|
||||
if ((this->actionFunc != EnHg_PlayCutscene) && (this->actionFunc != EnHg_HandleCsAction)) {
|
||||
if ((this->actionFunc != EnHg_PlayCutscene) && (this->actionFunc != EnHg_HandleCutscene)) {
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_61_02)) {
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_61_02);
|
||||
this->csIdIndex = HG_CS_FIRST_ENCOUNTER;
|
||||
|
|
|
@ -23,9 +23,6 @@ void EnHgo_Talk(EnHgo* this, PlayState* play);
|
|||
void EnHgo_SetupDialogueHandler(EnHgo* this);
|
||||
void EnHgo_DefaultDialogueHandler(EnHgo* this, PlayState* play);
|
||||
void EnHgo_HandlePlayerChoice(EnHgo* this, PlayState* play);
|
||||
s32 EnHgo_HandleCsAction(EnHgo* this, PlayState* play);
|
||||
s32 EnHgo_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
|
||||
void EnHgo_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* pos, Actor* thisx);
|
||||
|
||||
#define TALK_FLAG_NONE 0
|
||||
#define TALK_FLAG_HAS_SPOKEN_WITH_HUMAN (1 << 0)
|
||||
|
@ -283,7 +280,7 @@ void EnHgo_HandlePlayerChoice(EnHgo* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
s32 EnHgo_HandleCsAction(EnHgo* this, PlayState* play) {
|
||||
s32 EnHgo_HandleCutscene(EnHgo* this, PlayState* play) {
|
||||
s32 cueChannel;
|
||||
|
||||
if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_486)) {
|
||||
|
@ -389,7 +386,7 @@ void EnHgo_Update(Actor* thisx, PlayState* play) {
|
|||
|
||||
this->actionFunc(this, play);
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
if (EnHgo_HandleCsAction(this, play)) {
|
||||
if (EnHgo_HandleCutscene(this, play)) {
|
||||
Actor_TrackNone(&this->headRot, &this->torsoRot);
|
||||
} else if (this->actionFunc != EnHgo_DoNothing) {
|
||||
if (this->actionFunc != EnHgo_UpdateCollision) {
|
||||
|
@ -433,7 +430,7 @@ void EnHgo_Draw(Actor* thisx, PlayState* play) {
|
|||
Gfx_SetupDL25_Opa(play->state.gfxCtx);
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeIndex]));
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
EnHgo_OverrideLimbDraw, &EnHgo_PostLimbDraw, &this->actor);
|
||||
EnHgo_OverrideLimbDraw, EnHgo_PostLimbDraw, &this->actor);
|
||||
Matrix_Put(&this->mf);
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, gPamelasFatherHumanEyebrowsDL);
|
||||
|
|
|
@ -1091,7 +1091,7 @@ void EnJs_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_8096A9F4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnJs_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
s32 pad;
|
||||
EnJs* this = THIS;
|
||||
|
||||
|
@ -1120,5 +1120,5 @@ void EnJs_Draw(Actor* thisx, PlayState* play) {
|
|||
|
||||
Gfx_SetupDL25_Opa(play->state.gfxCtx);
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, NULL,
|
||||
func_8096A9F4, &this->actor);
|
||||
EnJs_PostLimbDraw, &this->actor);
|
||||
}
|
||||
|
|
|
@ -313,7 +313,7 @@ void EnLookNuts_SendPlayerToSpawn(EnLookNuts* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
static Vec3f effectVecInitialize = { 0.0f, 0.0f, 0.0f };
|
||||
static Vec3f sEffectVecInitialize = { 0.0f, 0.0f, 0.0f };
|
||||
|
||||
void EnLookNuts_Update(Actor* thisx, PlayState* play) {
|
||||
s32 pad;
|
||||
|
@ -339,7 +339,7 @@ void EnLookNuts_Update(Actor* thisx, PlayState* play) {
|
|||
Actor_MoveWithGravity(&this->actor);
|
||||
if (D_80A6862C == 0) {
|
||||
if ((this->state < 2) && (this->actor.xzDistToPlayer < 320.0f) && (this->actor.playerHeightRel < 80.0f)) {
|
||||
effectVelOffset = effectVecInitialize;
|
||||
effectVelOffset = sEffectVecInitialize;
|
||||
Math_Vec3f_Copy(&effectPos, &this->actor.world.pos);
|
||||
effectPos.x += Math_SinS((this->actor.world.rot.y + (s16)this->headRotation.y)) * 10.0f;
|
||||
effectPos.y += 30.0f;
|
||||
|
|
|
@ -58,6 +58,7 @@ void func_8096B104(EnOkarinaEffect* this, PlayState* play) {
|
|||
|
||||
void func_8096B174(EnOkarinaEffect* this, PlayState* play) {
|
||||
DECR(this->timer);
|
||||
|
||||
if ((play->pauseCtx.state == PAUSE_STATE_OFF) && (play->gameOverCtx.state == GAMEOVER_INACTIVE) &&
|
||||
(play->msgCtx.msgLength == 0) && !FrameAdvance_IsEnabled(&play->state) && (this->timer == 0)) {
|
||||
EnOkarinaEffect_SetupAction(this, func_8096B1FC);
|
||||
|
|
|
@ -127,9 +127,11 @@ void func_8093E68C(EnOkarinaTag* this, PlayState* play) {
|
|||
case 0:
|
||||
Flags_SetSwitch(play, this->switchFlag);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
Flags_UnsetSwitch(play, this->switchFlag);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (Flags_GetSwitch(play, this->switchFlag)) {
|
||||
Flags_UnsetSwitch(play, this->switchFlag);
|
||||
|
@ -137,6 +139,9 @@ void func_8093E68C(EnOkarinaTag* this, PlayState* play) {
|
|||
Flags_SetSwitch(play, this->switchFlag);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
play->msgCtx.ocarinaMode = OCARINA_MODE_END;
|
||||
|
|
|
@ -123,6 +123,9 @@ void func_80B1202C(EnOnpuman* this, PlayState* play2) {
|
|||
this->unk_2A0->home.rot.x = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (this->unk_2A4 & 1) {
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
|
||||
#include "z_en_osk.h"
|
||||
#include "objects/gameplay_keep/gameplay_keep.h"
|
||||
#include "objects/object_ikn_demo/object_ikn_demo.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY)
|
||||
|
||||
|
@ -34,30 +33,87 @@ ActorInit En_Osk_InitVars = {
|
|||
/**/ EnOsk_Draw,
|
||||
};
|
||||
|
||||
AnimationHeader* D_80BF6FA0[] = {
|
||||
&object_ikn_demo_Anim_003CAC, &object_ikn_demo_Anim_004208, &object_ikn_demo_Anim_004514,
|
||||
&object_ikn_demo_Anim_004A58, &object_ikn_demo_Anim_0065D8,
|
||||
typedef enum OskType0Animation {
|
||||
/* 0 */ OSK_TYPE0_ANIM_0,
|
||||
/* 1 */ OSK_TYPE0_ANIM_1,
|
||||
/* 2 */ OSK_TYPE0_ANIM_2,
|
||||
/* 3 */ OSK_TYPE0_ANIM_3,
|
||||
/* 4 */ OSK_TYPE0_ANIM_4,
|
||||
/* 5 */ OSK_TYPE0_ANIM_MAX
|
||||
} OskType0Animation;
|
||||
|
||||
AnimationHeader* sAnimationsType0[OSK_TYPE0_ANIM_MAX] = {
|
||||
&object_ikn_demo_Anim_003CAC, // OSK_TYPE0_ANIM_0
|
||||
&object_ikn_demo_Anim_004208, // OSK_TYPE0_ANIM_1
|
||||
&object_ikn_demo_Anim_004514, // OSK_TYPE0_ANIM_2
|
||||
&object_ikn_demo_Anim_004A58, // OSK_TYPE0_ANIM_3
|
||||
&object_ikn_demo_Anim_0065D8, // OSK_TYPE0_ANIM_4
|
||||
};
|
||||
|
||||
AnimationHeader* D_80BF6FB4[] = {
|
||||
&object_ikn_demo_Anim_0067B8, &object_ikn_demo_Anim_0083F4, &object_ikn_demo_Anim_0081A8,
|
||||
&object_ikn_demo_Anim_008AF4, &object_ikn_demo_Anim_008724, &object_ikn_demo_Anim_008F1C,
|
||||
&object_ikn_demo_Anim_008CEC, &object_ikn_demo_Anim_009254, &object_ikn_demo_Anim_009044,
|
||||
&object_ikn_demo_Anim_0098E4, &object_ikn_demo_Anim_009CC8, &object_ikn_demo_Anim_009A44,
|
||||
typedef enum OskType1Animation {
|
||||
/* 0 */ OSK_TYPE1_ANIM_0,
|
||||
/* 1 */ OSK_TYPE1_ANIM_1,
|
||||
/* 2 */ OSK_TYPE1_ANIM_2,
|
||||
/* 3 */ OSK_TYPE1_ANIM_3,
|
||||
/* 4 */ OSK_TYPE1_ANIM_4,
|
||||
/* 5 */ OSK_TYPE1_ANIM_5,
|
||||
/* 6 */ OSK_TYPE1_ANIM_6,
|
||||
/* 7 */ OSK_TYPE1_ANIM_7,
|
||||
/* 8 */ OSK_TYPE1_ANIM_8,
|
||||
/* 9 */ OSK_TYPE1_ANIM_9,
|
||||
/* 10 */ OSK_TYPE1_ANIM_10,
|
||||
/* 11 */ OSK_TYPE1_ANIM_11,
|
||||
/* 12 */ OSK_TYPE1_ANIM_MAX
|
||||
} OskType1Animation;
|
||||
|
||||
AnimationHeader* sAnimationsType1[OSK_TYPE1_ANIM_MAX] = {
|
||||
&object_ikn_demo_Anim_0067B8, // OSK_TYPE1_ANIM_0
|
||||
&object_ikn_demo_Anim_0083F4, // OSK_TYPE1_ANIM_1
|
||||
&object_ikn_demo_Anim_0081A8, // OSK_TYPE1_ANIM_2
|
||||
&object_ikn_demo_Anim_008AF4, // OSK_TYPE1_ANIM_3
|
||||
&object_ikn_demo_Anim_008724, // OSK_TYPE1_ANIM_4
|
||||
&object_ikn_demo_Anim_008F1C, // OSK_TYPE1_ANIM_5
|
||||
&object_ikn_demo_Anim_008CEC, // OSK_TYPE1_ANIM_6
|
||||
&object_ikn_demo_Anim_009254, // OSK_TYPE1_ANIM_7
|
||||
&object_ikn_demo_Anim_009044, // OSK_TYPE1_ANIM_8
|
||||
&object_ikn_demo_Anim_0098E4, // OSK_TYPE1_ANIM_9
|
||||
&object_ikn_demo_Anim_009CC8, // OSK_TYPE1_ANIM_10
|
||||
&object_ikn_demo_Anim_009A44, // OSK_TYPE1_ANIM_11
|
||||
};
|
||||
|
||||
AnimationHeader* D_80BF6FE4[] = {
|
||||
&object_ikn_demo_Anim_009EA8, &object_ikn_demo_Anim_00B8C0, &object_ikn_demo_Anim_00B704,
|
||||
&object_ikn_demo_Anim_00BDB4, &object_ikn_demo_Anim_00B9E4, &object_ikn_demo_Anim_00C154,
|
||||
&object_ikn_demo_Anim_00BF04, &object_ikn_demo_Anim_00CA74, &object_ikn_demo_Anim_00C804,
|
||||
&object_ikn_demo_Anim_00D044, &object_ikn_demo_Anim_00CD28, &object_ikn_demo_Anim_00C59C,
|
||||
&object_ikn_demo_Anim_00C2C4,
|
||||
typedef enum OskType2Animation {
|
||||
/* 0 */ OSK_TYPE2_ANIM_0,
|
||||
/* 1 */ OSK_TYPE2_ANIM_1,
|
||||
/* 2 */ OSK_TYPE2_ANIM_2,
|
||||
/* 3 */ OSK_TYPE2_ANIM_3,
|
||||
/* 4 */ OSK_TYPE2_ANIM_4,
|
||||
/* 5 */ OSK_TYPE2_ANIM_5,
|
||||
/* 6 */ OSK_TYPE2_ANIM_6,
|
||||
/* 7 */ OSK_TYPE2_ANIM_7,
|
||||
/* 8 */ OSK_TYPE2_ANIM_8,
|
||||
/* 9 */ OSK_TYPE2_ANIM_9,
|
||||
/* 10 */ OSK_TYPE2_ANIM_10,
|
||||
/* 11 */ OSK_TYPE2_ANIM_11,
|
||||
/* 12 */ OSK_TYPE2_ANIM_12,
|
||||
/* 13 */ OSK_TYPE2_ANIM_MAX
|
||||
} OskType2Animation;
|
||||
|
||||
AnimationHeader* sAnimationsType2[OSK_TYPE2_ANIM_MAX] = {
|
||||
&object_ikn_demo_Anim_009EA8, // OSK_TYPE2_ANIM_0
|
||||
&object_ikn_demo_Anim_00B8C0, // OSK_TYPE2_ANIM_1
|
||||
&object_ikn_demo_Anim_00B704, // OSK_TYPE2_ANIM_2
|
||||
&object_ikn_demo_Anim_00BDB4, // OSK_TYPE2_ANIM_3
|
||||
&object_ikn_demo_Anim_00B9E4, // OSK_TYPE2_ANIM_4
|
||||
&object_ikn_demo_Anim_00C154, // OSK_TYPE2_ANIM_5
|
||||
&object_ikn_demo_Anim_00BF04, // OSK_TYPE2_ANIM_6
|
||||
&object_ikn_demo_Anim_00CA74, // OSK_TYPE2_ANIM_7
|
||||
&object_ikn_demo_Anim_00C804, // OSK_TYPE2_ANIM_8
|
||||
&object_ikn_demo_Anim_00D044, // OSK_TYPE2_ANIM_9
|
||||
&object_ikn_demo_Anim_00CD28, // OSK_TYPE2_ANIM_10
|
||||
&object_ikn_demo_Anim_00C59C, // OSK_TYPE2_ANIM_11
|
||||
&object_ikn_demo_Anim_00C2C4, // OSK_TYPE2_ANIM_12
|
||||
};
|
||||
|
||||
Vec3f D_80BF7018 = { 0.0f, 0.5f, 0.0f };
|
||||
|
||||
Vec3f D_80BF7024 = { 0.0f, 0.0f, 0.0f };
|
||||
|
||||
void EnOsk_Init(Actor* thisx, PlayState* play) {
|
||||
EnOsk* this = THIS;
|
||||
|
||||
|
@ -65,36 +121,36 @@ void EnOsk_Init(Actor* thisx, PlayState* play) {
|
|||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 10.0f);
|
||||
|
||||
this->actionFunc = func_80BF5F60;
|
||||
this->unk_254 = -1;
|
||||
this->animIndex = -1;
|
||||
this->cueId = -1;
|
||||
this->actor.flags &= ~ACTOR_FLAG_TARGETABLE;
|
||||
|
||||
switch (ENOSK_GET_F(&this->actor)) {
|
||||
case ENOSK_1:
|
||||
switch (ENOSK_GET_TYPE(&this->actor)) {
|
||||
case ENOSK_TYPE_1:
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_ikn_demo_Skel_007B48, &object_ikn_demo_Anim_006808,
|
||||
this->jointTable, this->morphTable, 7);
|
||||
this->jointTable, this->morphTable, OBJECT_IKN_DEMO_2_LIMB_MAX);
|
||||
Animation_PlayLoop(&this->skelAnime, &object_ikn_demo_Anim_006808);
|
||||
this->actionFunc = func_80BF656C;
|
||||
this->cueType = CS_CMD_ACTOR_CUE_528;
|
||||
break;
|
||||
|
||||
case ENOSK_2:
|
||||
case ENOSK_TYPE_2:
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_ikn_demo_Skel_00B490, &object_ikn_demo_Anim_009F00,
|
||||
this->jointTable, this->morphTable, 7);
|
||||
this->jointTable, this->morphTable, OBJECT_IKN_DEMO_3_LIMB_MAX);
|
||||
Animation_PlayLoop(&this->skelAnime, &object_ikn_demo_Anim_006808);
|
||||
this->actionFunc = func_80BF6A20;
|
||||
this->cueType = CS_CMD_ACTOR_CUE_529;
|
||||
break;
|
||||
|
||||
default:
|
||||
default: // ENOSK_TYPE_0
|
||||
Actor_SetScale(&this->actor, 0.017f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_ikn_demo_Skel_0038F0, &object_ikn_demo_Anim_0000B8,
|
||||
this->jointTable, this->morphTable, 17);
|
||||
this->jointTable, this->morphTable, OBJECT_IKN_DEMO_1_LIMB_MAX);
|
||||
Animation_PlayLoop(&this->skelAnime, &object_ikn_demo_Anim_0000B8);
|
||||
this->actionFunc = func_80BF61EC;
|
||||
this->cueType = CS_CMD_ACTOR_CUE_530;
|
||||
this->actor.home.rot.z = 0;
|
||||
this->unk_25C = 0.0f;
|
||||
this->animSfxFrame = 0.0f;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -102,20 +158,21 @@ void EnOsk_Init(Actor* thisx, PlayState* play) {
|
|||
void EnOsk_Destroy(Actor* thisx, PlayState* play) {
|
||||
}
|
||||
|
||||
void func_80BF5E00(EnOsk* this, AnimationHeader** animations, s16 index, f32 morphFrame) {
|
||||
if (index == this->unk_254) {
|
||||
void EnOsk_ChangeAnimLoop(EnOsk* this, AnimationHeader** animations, s16 animIndex, f32 morphFrame) {
|
||||
if (this->animIndex == animIndex) {
|
||||
return;
|
||||
}
|
||||
Animation_MorphToLoop(&this->skelAnime, animations[index], morphFrame);
|
||||
this->unk_254 = index;
|
||||
Animation_MorphToLoop(&this->skelAnime, animations[animIndex], morphFrame);
|
||||
this->animIndex = animIndex;
|
||||
}
|
||||
|
||||
void func_80BF5E68(EnOsk* this, AnimationHeader** animations, s16 index, f32 playSpeed) {
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, animations[index], playSpeed);
|
||||
this->unk_254 = index;
|
||||
void EnOsk_ChangeAnimOnce(EnOsk* this, AnimationHeader** animations, s16 animIndex, f32 playSpeed) {
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, animations[animIndex], playSpeed);
|
||||
this->animIndex = animIndex;
|
||||
}
|
||||
|
||||
void func_80BF5EBC(EnOsk* this, PlayState* play) {
|
||||
static Vec3f D_80BF7018 = { 0.0f, 0.5f, 0.0f };
|
||||
Vec3f sp2C;
|
||||
|
||||
sp2C.x = Rand_CenteredFloat(30.0f) + this->actor.world.pos.x;
|
||||
|
@ -140,29 +197,32 @@ void func_80BF5F70(EnOsk* this) {
|
|||
break;
|
||||
|
||||
case 2:
|
||||
func_80BF5E00(this, D_80BF6FA0, 3, -5.0f);
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType0, OSK_TYPE0_ANIM_3, -5.0f);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_80BF5E00(this, D_80BF6FA0, 2, -5.0f);
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType0, OSK_TYPE0_ANIM_2, -5.0f);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
func_80BF5E00(this, D_80BF6FA0, 1, -5.0f);
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType0, OSK_TYPE0_ANIM_1, -5.0f);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
func_80BF5E00(this, D_80BF6FA0, 0, -5.0f);
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType0, OSK_TYPE0_ANIM_0, -5.0f);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
func_80BF5E00(this, D_80BF6FA0, 1, -5.0f);
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType0, OSK_TYPE0_ANIM_1, -5.0f);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
func_80BF5E00(this, D_80BF6FA0, 4, -5.0f);
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType0, OSK_TYPE0_ANIM_4, -5.0f);
|
||||
this->actor.home.rot.z = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -174,29 +234,32 @@ void func_80BF609C(EnOsk* this, PlayState* play) {
|
|||
}
|
||||
} else {
|
||||
if (Animation_OnFrame(&this->skelAnime, 5.0f)) {
|
||||
this->unk_25C = Rand_ZeroFloat(3.0f);
|
||||
this->animSfxFrame = Rand_ZeroFloat(3.0f);
|
||||
}
|
||||
|
||||
switch (this->unk_254) {
|
||||
case 0:
|
||||
if (Animation_OnFrame(&this->skelAnime, this->unk_25C) ||
|
||||
Animation_OnFrame(&this->skelAnime, this->unk_25C + 8.0f)) {
|
||||
switch (this->animIndex) {
|
||||
case OSK_TYPE0_ANIM_0:
|
||||
if (Animation_OnFrame(&this->skelAnime, this->animSfxFrame) ||
|
||||
Animation_OnFrame(&this->skelAnime, this->animSfxFrame + 8.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_BOSU_TALK);
|
||||
}
|
||||
break;
|
||||
|
||||
case 1:
|
||||
if (Animation_OnFrame(&this->skelAnime, this->unk_25C)) {
|
||||
case OSK_TYPE0_ANIM_1:
|
||||
if (Animation_OnFrame(&this->skelAnime, this->animSfxFrame)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_BOSU_TALK);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
if (Animation_OnFrame(&this->skelAnime, this->unk_25C) ||
|
||||
Animation_OnFrame(&this->skelAnime, this->unk_25C + 6.0f)) {
|
||||
case OSK_TYPE0_ANIM_2:
|
||||
if (Animation_OnFrame(&this->skelAnime, this->animSfxFrame) ||
|
||||
Animation_OnFrame(&this->skelAnime, this->animSfxFrame + 6.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_BOSU_TALK);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -240,91 +303,100 @@ void func_80BF6314(EnOsk* this) {
|
|||
break;
|
||||
|
||||
case 2:
|
||||
func_80BF5E00(this, D_80BF6FB4, 9, -5.0f);
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType1, OSK_TYPE1_ANIM_9, -5.0f);
|
||||
Actor_SetScale(&this->actor, 0.0f);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_80BF5E68(this, D_80BF6FB4, 2, -5.0f);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType1, OSK_TYPE1_ANIM_2, -5.0f);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
func_80BF5E68(this, D_80BF6FB4, 4, 0);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType1, OSK_TYPE1_ANIM_4, 0);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
func_80BF5E68(this, D_80BF6FB4, 8, -5.0f);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType1, OSK_TYPE1_ANIM_8, -5.0f);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
func_80BF5E68(this, D_80BF6FB4, 11, -5.0f);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType1, OSK_TYPE1_ANIM_11, -5.0f);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
func_80BF5E68(this, D_80BF6FB4, 6, -5.0f);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType1, OSK_TYPE1_ANIM_6, -5.0f);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
func_80BF5E00(this, D_80BF6FB4, 0, -5.0f);
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType1, OSK_TYPE1_ANIM_0, -5.0f);
|
||||
break;
|
||||
|
||||
case 9:
|
||||
func_80BF5E00(this, D_80BF6FB4, 0, -5.0f);
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType1, OSK_TYPE1_ANIM_0, -5.0f);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80BF6478(EnOsk* this) {
|
||||
if (this->actor.draw != NULL) {
|
||||
switch (this->unk_254) {
|
||||
case 1:
|
||||
switch (this->animIndex) {
|
||||
case OSK_TYPE1_ANIM_1:
|
||||
if (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 6.0f) ||
|
||||
Animation_OnFrame(&this->skelAnime, 11.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DEBU_HEAD_UP);
|
||||
}
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case OSK_TYPE1_ANIM_3:
|
||||
if (Animation_OnFrame(&this->skelAnime, 11.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DEBU_HEAD_UP);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
case OSK_TYPE1_ANIM_4:
|
||||
if (Animation_OnFrame(&this->skelAnime, 5.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DEBU_HEAD_UP);
|
||||
}
|
||||
break;
|
||||
|
||||
case 10:
|
||||
case 11:
|
||||
case OSK_TYPE1_ANIM_10:
|
||||
case OSK_TYPE1_ANIM_11:
|
||||
Actor_PlaySfx_Flagged(&this->actor, NA_SE_EN_YASE_LAUGH_K - SFX_FLAG);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80BF656C(EnOsk* this, PlayState* play) {
|
||||
if (SkelAnime_Update(&this->skelAnime)) {
|
||||
switch (this->unk_254) {
|
||||
case 2:
|
||||
func_80BF5E00(this, D_80BF6FB4, 1, 0.0f);
|
||||
switch (this->animIndex) {
|
||||
case OSK_TYPE1_ANIM_2:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType1, OSK_TYPE1_ANIM_1, 0.0f);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
func_80BF5E00(this, D_80BF6FB4, 3, 0.0f);
|
||||
case OSK_TYPE1_ANIM_4:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType1, OSK_TYPE1_ANIM_3, 0.0f);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
func_80BF5E00(this, D_80BF6FB4, 7, -5.0f);
|
||||
case OSK_TYPE1_ANIM_8:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType1, OSK_TYPE1_ANIM_7, -5.0f);
|
||||
break;
|
||||
|
||||
case 11:
|
||||
func_80BF5E00(this, D_80BF6FB4, 10, -5.0f);
|
||||
case OSK_TYPE1_ANIM_11:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType1, OSK_TYPE1_ANIM_10, -5.0f);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
func_80BF5E00(this, D_80BF6FB4, 5, -5.0f);
|
||||
case OSK_TYPE1_ANIM_6:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType1, OSK_TYPE1_ANIM_5, -5.0f);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -340,13 +412,13 @@ void func_80BF656C(EnOsk* this, PlayState* play) {
|
|||
this->actor.draw = NULL;
|
||||
}
|
||||
|
||||
if ((this->cueId == 2) && (this->actor.scale.x < 13.0f * 0.001f)) {
|
||||
if ((this->cueId == 2) && (this->actor.scale.x < (13.0f * 0.001f))) {
|
||||
this->actor.scale.x += 0.65f * 0.001f;
|
||||
Actor_SetScale(&this->actor, this->actor.scale.x);
|
||||
}
|
||||
|
||||
if (this->cueId == 9) {
|
||||
if (this->actor.scale.x > 0.65f * 0.001f) {
|
||||
if (this->actor.scale.x > (0.65f * 0.001f)) {
|
||||
this->actor.scale.x -= 0.65f * 0.001f;
|
||||
Actor_SetScale(&this->actor, this->actor.scale.x);
|
||||
func_80BF5EBC(this, play);
|
||||
|
@ -369,99 +441,108 @@ void func_80BF67A8(EnOsk* this) {
|
|||
break;
|
||||
|
||||
case 2:
|
||||
func_80BF5E68(this, D_80BF6FE4, 2, -5.0f);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType2, OSK_TYPE2_ANIM_2, -5.0f);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
func_80BF5E68(this, D_80BF6FE4, 8, -5.0f);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType2, OSK_TYPE2_ANIM_8, -5.0f);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
func_80BF5E68(this, D_80BF6FE4, 4, -5.0f);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType2, OSK_TYPE2_ANIM_4, -5.0f);
|
||||
break;
|
||||
|
||||
case 5:
|
||||
func_80BF5E68(this, D_80BF6FE4, 6, -5.0f);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType2, OSK_TYPE2_ANIM_6, -5.0f);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
func_80BF5E68(this, D_80BF6FE4, 10, -5.0f);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType2, OSK_TYPE2_ANIM_10, -5.0f);
|
||||
break;
|
||||
|
||||
case 7:
|
||||
case 8:
|
||||
func_80BF5E00(this, D_80BF6FE4, 0, -5.0f);
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType2, OSK_TYPE2_ANIM_0, -5.0f);
|
||||
break;
|
||||
|
||||
case 9:
|
||||
func_80BF5E68(this, D_80BF6FE4, 12, -5.0f);
|
||||
EnOsk_ChangeAnimOnce(this, sAnimationsType2, OSK_TYPE2_ANIM_12, -5.0f);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80BF68E0(EnOsk* this) {
|
||||
if (this->actor.draw != NULL) {
|
||||
switch (this->unk_254) {
|
||||
case 1:
|
||||
case 7:
|
||||
switch (this->animIndex) {
|
||||
case OSK_TYPE2_ANIM_1:
|
||||
case OSK_TYPE2_ANIM_7:
|
||||
if (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 6.0f) ||
|
||||
Animation_OnFrame(&this->skelAnime, 11.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DEBU_HEAD_UP);
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case OSK_TYPE2_ANIM_2:
|
||||
if (Animation_OnFrame(&this->skelAnime, 4.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DEBU_HEAD_UP);
|
||||
}
|
||||
break;
|
||||
|
||||
case 4:
|
||||
case OSK_TYPE2_ANIM_4:
|
||||
if (Animation_OnFrame(&this->skelAnime, 5.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DEBU_HEAD_UP);
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
case OSK_TYPE2_ANIM_5:
|
||||
if (Animation_OnFrame(&this->skelAnime, 6.0f) || Animation_OnFrame(&this->skelAnime, 11.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DEBU_HEAD_UP);
|
||||
}
|
||||
break;
|
||||
|
||||
case 8:
|
||||
case OSK_TYPE2_ANIM_8:
|
||||
if (Animation_OnFrame(&this->skelAnime, 13.0f)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EN_DEBU_HEAD_UP);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80BF6A20(EnOsk* this, PlayState* play) {
|
||||
if (SkelAnime_Update(&this->skelAnime)) {
|
||||
switch (this->unk_254) {
|
||||
case 2:
|
||||
func_80BF5E00(this, D_80BF6FE4, 1, -5.0f);
|
||||
switch (this->animIndex) {
|
||||
case OSK_TYPE2_ANIM_2:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType2, OSK_TYPE2_ANIM_1, -5.0f);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
func_80BF5E00(this, D_80BF6FE4, 7, -5.0f);
|
||||
case OSK_TYPE2_ANIM_8:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType2, OSK_TYPE2_ANIM_7, -5.0f);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
func_80BF5E00(this, D_80BF6FE4, 3, -5.0f);
|
||||
case OSK_TYPE2_ANIM_4:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType2, OSK_TYPE2_ANIM_3, -5.0f);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
func_80BF5E00(this, D_80BF6FE4, 5, -5.0f);
|
||||
case OSK_TYPE2_ANIM_6:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType2, OSK_TYPE2_ANIM_5, -5.0f);
|
||||
break;
|
||||
|
||||
case 10:
|
||||
func_80BF5E00(this, D_80BF6FE4, 9, -5.0f);
|
||||
case OSK_TYPE2_ANIM_10:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType2, OSK_TYPE2_ANIM_9, -5.0f);
|
||||
break;
|
||||
|
||||
case 12:
|
||||
func_80BF5E00(this, D_80BF6FE4, 11, -5.0f);
|
||||
case OSK_TYPE2_ANIM_12:
|
||||
EnOsk_ChangeAnimLoop(this, sAnimationsType2, OSK_TYPE2_ANIM_11, -5.0f);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -495,10 +576,14 @@ void EnOsk_Update(Actor* thisx, PlayState* play) {
|
|||
this->actionFunc(this, play);
|
||||
}
|
||||
|
||||
void func_80BF6C54(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnOsk_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
static Vec3f D_80BF7024 = { 0.0f, 0.0f, 0.0f };
|
||||
EnOsk* this = THIS;
|
||||
|
||||
if (limbIndex == 1) {
|
||||
// OBJECT_IKN_DEMO_1_LIMB_01
|
||||
// OBJECT_IKN_DEMO_2_LIMB_01
|
||||
// OBJECT_IKN_DEMO_3_LIMB_01
|
||||
Matrix_MultVec3f(&D_80BF7024, &this->actor.focus.pos);
|
||||
}
|
||||
}
|
||||
|
@ -517,7 +602,7 @@ void EnOsk_Draw(Actor* thisx, PlayState* play) {
|
|||
gSPSegment(POLY_OPA_DISP++, 0x08, Gfx_PrimColor(play->state.gfxCtx, 0x80, 255, 255, 255, 255));
|
||||
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount, NULL,
|
||||
func_80BF6C54, &this->actor);
|
||||
EnOsk_PostLimbDraw, &this->actor);
|
||||
|
||||
{
|
||||
s16 sp62;
|
||||
|
@ -530,7 +615,7 @@ void EnOsk_Draw(Actor* thisx, PlayState* play) {
|
|||
sp60 = -Math_Vec3f_Pitch(&sp54, &this->actor.focus.pos);
|
||||
|
||||
sp80.x = -(15.0f * (Math_SinS(sp62)) * Math_CosS(sp60));
|
||||
sp80.y = -(Math_SinS(sp60) * 15.0f);
|
||||
sp80.y = -(15.0f * Math_SinS(sp60));
|
||||
sp80.z = -(15.0f * (Math_CosS(sp62)) * Math_CosS(sp60));
|
||||
|
||||
Matrix_Translate(this->actor.focus.pos.x + sp80.x, this->actor.focus.pos.y + sp80.y,
|
||||
|
|
|
@ -2,25 +2,31 @@
|
|||
#define Z_EN_OSK_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_ikn_demo/object_ikn_demo.h"
|
||||
|
||||
struct EnOsk;
|
||||
|
||||
typedef void (*EnOskActionFunc)(struct EnOsk*, PlayState*);
|
||||
|
||||
#define ENOSK_GET_F(thisx) ((thisx)->params & 0xF)
|
||||
#define ENOSK_GET_TYPE(thisx) ((thisx)->params & 0xF)
|
||||
|
||||
#define ENOSK_1 1
|
||||
#define ENOSK_2 2
|
||||
typedef enum EnOskType {
|
||||
/* 0 */ ENOSK_TYPE_0,
|
||||
/* 1 */ ENOSK_TYPE_1,
|
||||
/* 2 */ ENOSK_TYPE_2
|
||||
} EnOskType;
|
||||
|
||||
#define OSK_LIMB_MAX MAX(MAX((s32)OBJECT_IKN_DEMO_1_LIMB_MAX, (s32)OBJECT_IKN_DEMO_2_LIMB_MAX), (s32)OBJECT_IKN_DEMO_3_LIMB_MAX)
|
||||
|
||||
typedef struct EnOsk {
|
||||
/* 0x000 */ Actor actor;
|
||||
/* 0x144 */ SkelAnime skelAnime;
|
||||
/* 0x188 */ Vec3s jointTable[17];
|
||||
/* 0x1EE */ Vec3s morphTable[17];
|
||||
/* 0x254 */ s16 unk_254;
|
||||
/* 0x188 */ Vec3s jointTable[OSK_LIMB_MAX];
|
||||
/* 0x1EE */ Vec3s morphTable[OSK_LIMB_MAX];
|
||||
/* 0x254 */ s16 animIndex;
|
||||
/* 0x256 */ s16 cueId;
|
||||
/* 0x258 */ u16 cueType;
|
||||
/* 0x25C */ f32 unk_25C;
|
||||
/* 0x25C */ f32 animSfxFrame;
|
||||
/* 0x260 */ EnOskActionFunc actionFunc;
|
||||
} EnOsk; // size = 0x264
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ void EnOsn_Draw(Actor* thisx, PlayState* play);
|
|||
|
||||
void EnOsn_Idle(EnOsn* this, PlayState* play);
|
||||
void EnOsn_StartCutscene(EnOsn* this, PlayState* play);
|
||||
void EnOsn_HandleCsAction(EnOsn* this, PlayState* play);
|
||||
void EnOsn_HandleCutscene(EnOsn* this, PlayState* play);
|
||||
void EnOsn_Talk(EnOsn* this, PlayState* play);
|
||||
|
||||
#define OSN_STATE_SPECIAL_CONVERSTATION (1 << 0)
|
||||
|
@ -49,6 +49,18 @@ void EnOsn_Talk(EnOsn* this, PlayState* play);
|
|||
#define OSN_MASK_TEXT_ALL_NIGHT (1 << 18)
|
||||
#define OSN_MASK_TEXT_ROMANI (1 << 19)
|
||||
|
||||
ActorInit En_Osn_InitVars = {
|
||||
/**/ ACTOR_EN_OSN,
|
||||
/**/ ACTORCAT_NPC,
|
||||
/**/ FLAGS,
|
||||
/**/ OBJECT_OSN,
|
||||
/**/ sizeof(EnOsn),
|
||||
/**/ EnOsn_Init,
|
||||
/**/ EnOsn_Destroy,
|
||||
/**/ EnOsn_Update,
|
||||
/**/ EnOsn_Draw,
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ OSN_ANIM_IDLE,
|
||||
/* 1 */ OSN_ANIM_ARMS_OUT,
|
||||
|
@ -78,44 +90,33 @@ typedef enum {
|
|||
/* 25 */ OSN_ANIM_MAX
|
||||
} OsnAnimation;
|
||||
|
||||
ActorInit En_Osn_InitVars = {
|
||||
/**/ ACTOR_EN_OSN,
|
||||
/**/ ACTORCAT_NPC,
|
||||
/**/ FLAGS,
|
||||
/**/ OBJECT_OSN,
|
||||
/**/ sizeof(EnOsn),
|
||||
/**/ EnOsn_Init,
|
||||
/**/ EnOsn_Destroy,
|
||||
/**/ EnOsn_Update,
|
||||
/**/ EnOsn_Draw,
|
||||
};
|
||||
|
||||
static AnimationInfo sAnimationInfo[] = {
|
||||
{ &gHappyMaskSalesmanIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanArmsOutAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanBowingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanReminisceAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanHandsClaspedAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanBelieveAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanThinkAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanShakeHeadAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanOrganTalkAnim, 1.0f, 1.0f, 39.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanOrganPlayAnim, 1.0f, 1.0f, 70.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanShakeAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanChokeAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanDespairAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanFastBowsAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanHandOutAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanLyingDownAnim, 0.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gHappyMaskSalesmanLyingDownAnim, 0.0f, 1.0f, 1.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gHappyMaskSalesmanMaskLookAtAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanTurnAroundStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gHappyMaskSalesmanTurnAroundLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanWalkAwayAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||
static AnimationInfo sAnimationInfo[OSN_ANIM_MAX] = {
|
||||
{ &gHappyMaskSalesmanIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_IDLE
|
||||
{ &gHappyMaskSalesmanArmsOutAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_ARMS_OUT
|
||||
{ &gHappyMaskSalesmanBowingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_BOWING
|
||||
{ &gHappyMaskSalesmanReminisceAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_REMINISCE
|
||||
{ &gHappyMaskSalesmanHandsClaspedAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_HANDS_CLASPED
|
||||
{ &gHappyMaskSalesmanBelieveAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_BELIEVE
|
||||
{ &gHappyMaskSalesmanThinkAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_THINK
|
||||
{ &gHappyMaskSalesmanShakeHeadAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_SHAKE_HEAD
|
||||
{ &gHappyMaskSalesmanOrganTalkAnim, 1.0f, 1.0f, 39.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_ORGAN_TALK
|
||||
{ &gHappyMaskSalesmanOrganPlayAnim, 1.0f, 1.0f, 70.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_ORGAN_PLAY
|
||||
{ &gHappyMaskSalesmanShakeAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_SHAKE
|
||||
{ &gHappyMaskSalesmanChokeAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_CHOKE
|
||||
{ &gHappyMaskSalesmanDespairAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_DESPAIR
|
||||
{ &gHappyMaskSalesmanFastBowsAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_FAST_BOWS
|
||||
{ &gHappyMaskSalesmanHandOutAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_HAND_OUT
|
||||
{ &gHappyMaskSalesmanLyingDownAnim, 0.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, // OSN_ANIM_LYING_DOWN_FACE_UP
|
||||
{ &gHappyMaskSalesmanLyingDownAnim, 0.0f, 1.0f, 1.0f, ANIMMODE_ONCE, 0.0f }, // OSN_ANIM_LYING_DOWN_FACE_DOWN
|
||||
{ &gHappyMaskSalesmanMaskLookAtAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_MASK_LOOK_AT
|
||||
{ &gHappyMaskSalesmanTurnAroundStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, // OSN_ANIM_TURN_AROUND_START
|
||||
{ &gHappyMaskSalesmanTurnAroundLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_TURN_AROUND_LOOP
|
||||
{ &gHappyMaskSalesmanWalkAwayAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, // OSN_ANIM_WALK_AWAY
|
||||
// OSN_ANIM_MASK_LOOK_FROM_START
|
||||
{ &gHappyMaskSalesmanMaskLookFromStartAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gHappyMaskSalesmanMaskLookFromLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanHandOutAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f },
|
||||
{ &gHappyMaskSalesmanWalkAwayAnim, 0.0f, 77.0f, 0.0f, ANIMMODE_ONCE, 0.0f },
|
||||
{ &gHappyMaskSalesmanMaskLookFromLoopAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_MASK_LOOK_FROM_LOOP
|
||||
{ &gHappyMaskSalesmanHandOutAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, 0.0f }, // OSN_ANIM_HAND_OUT_2
|
||||
{ &gHappyMaskSalesmanWalkAwayAnim, 0.0f, 77.0f, 0.0f, ANIMMODE_ONCE, 0.0f }, // OSN_ANIM_WALK_AWAY_END
|
||||
};
|
||||
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
|
@ -256,9 +257,9 @@ s32 EnOsn_GetMaskText(PlayState* play) {
|
|||
|
||||
void EnOsn_TurnAround(EnOsn* this) {
|
||||
s16 curFrame = this->skelAnime.curFrame;
|
||||
s16 lastFrame = Animation_GetLastFrame(sAnimationInfo[this->animIndex].animation);
|
||||
s16 endFrame = Animation_GetLastFrame(sAnimationInfo[this->animIndex].animation);
|
||||
|
||||
if ((this->animIndex == OSN_ANIM_TURN_AROUND_START) && (curFrame == lastFrame)) {
|
||||
if ((this->animIndex == OSN_ANIM_TURN_AROUND_START) && (curFrame == endFrame)) {
|
||||
this->animIndex = OSN_ANIM_TURN_AROUND_LOOP;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, OSN_ANIM_TURN_AROUND_LOOP);
|
||||
}
|
||||
|
@ -266,9 +267,9 @@ void EnOsn_TurnAround(EnOsn* this) {
|
|||
|
||||
void EnOsn_LookFromMask(EnOsn* this) {
|
||||
s16 curFrame = this->skelAnime.curFrame;
|
||||
s16 lastFrame = Animation_GetLastFrame(sAnimationInfo[this->animIndex].animation);
|
||||
s16 endFrame = Animation_GetLastFrame(sAnimationInfo[this->animIndex].animation);
|
||||
|
||||
if ((this->animIndex == OSN_ANIM_MASK_LOOK_FROM_START) && (curFrame == lastFrame)) {
|
||||
if ((this->animIndex == OSN_ANIM_MASK_LOOK_FROM_START) && (curFrame == endFrame)) {
|
||||
this->animIndex = OSN_ANIM_MASK_LOOK_FROM_LOOP;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, OSN_ANIM_MASK_LOOK_FROM_LOOP);
|
||||
}
|
||||
|
@ -276,9 +277,9 @@ void EnOsn_LookFromMask(EnOsn* this) {
|
|||
|
||||
void EnOsn_FadeOut(EnOsn* this) {
|
||||
s16 curFrame = this->skelAnime.curFrame;
|
||||
s16 lastFrame = Animation_GetLastFrame(sAnimationInfo[this->animIndex].animation);
|
||||
s16 endFrame = Animation_GetLastFrame(sAnimationInfo[this->animIndex].animation);
|
||||
|
||||
if (curFrame == lastFrame) {
|
||||
if (curFrame == endFrame) {
|
||||
this->alpha -= 8;
|
||||
if (this->alpha < 8) {
|
||||
this->alpha = 0;
|
||||
|
@ -711,7 +712,7 @@ void EnOsn_ChooseAction(EnOsn* this, PlayState* play) {
|
|||
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, OSN_ANIM_IDLE);
|
||||
if (!isSwitchFlagSet) {
|
||||
this->actionFunc = EnOsn_HandleCsAction;
|
||||
this->actionFunc = EnOsn_HandleCutscene;
|
||||
} else {
|
||||
this->actionFunc = EnOsn_Idle;
|
||||
}
|
||||
|
@ -741,7 +742,7 @@ void EnOsn_Idle(EnOsn* this, PlayState* play) {
|
|||
void EnOsn_StartCutscene(EnOsn* this, PlayState* play) {
|
||||
if (CutsceneManager_IsNext(this->csId)) {
|
||||
CutsceneManager_Start(this->csId, &this->actor);
|
||||
this->actionFunc = EnOsn_HandleCsAction;
|
||||
this->actionFunc = EnOsn_HandleCutscene;
|
||||
} else {
|
||||
if (CutsceneManager_GetCurrentCsId() == CS_ID_GLOBAL_TALK) {
|
||||
CutsceneManager_Stop(CS_ID_GLOBAL_TALK);
|
||||
|
@ -750,7 +751,7 @@ void EnOsn_StartCutscene(EnOsn* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
void EnOsn_HandleCsAction(EnOsn* this, PlayState* play) {
|
||||
void EnOsn_HandleCutscene(EnOsn* this, PlayState* play) {
|
||||
u8 pad;
|
||||
s32 cueChannel;
|
||||
|
||||
|
@ -914,8 +915,8 @@ void EnOsn_Init(Actor* thisx, PlayState* play) {
|
|||
|
||||
switch (ENOSN_GET_TYPE(&this->actor)) {
|
||||
case OSN_TYPE_CHOOSE:
|
||||
if (((gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 2)) ||
|
||||
(gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 3))) ||
|
||||
if ((gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 2)) ||
|
||||
(gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 3)) ||
|
||||
(gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 6))) {
|
||||
this->stateFlags |= OSN_STATE_SPECIAL_CONVERSTATION;
|
||||
}
|
||||
|
@ -923,7 +924,7 @@ void EnOsn_Init(Actor* thisx, PlayState* play) {
|
|||
if (play->sceneId == SCENE_INSIDETOWER) {
|
||||
if ((gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 2)) ||
|
||||
(gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 6))) {
|
||||
this->actionFunc = EnOsn_HandleCsAction;
|
||||
this->actionFunc = EnOsn_HandleCutscene;
|
||||
} else if (gSaveContext.save.entrance == ENTRANCE(CLOCK_TOWER_INTERIOR, 3)) {
|
||||
EnOsn_InitCutscene(this);
|
||||
this->actionFunc = EnOsn_StartCutscene;
|
||||
|
@ -949,7 +950,7 @@ void EnOsn_Init(Actor* thisx, PlayState* play) {
|
|||
|
||||
case OSN_TYPE_CUTSCENE:
|
||||
this->actor.flags &= ~ACTOR_FLAG_TARGETABLE;
|
||||
this->actionFunc = EnOsn_HandleCsAction;
|
||||
this->actionFunc = EnOsn_HandleCutscene;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -1010,6 +1011,7 @@ void EnOsn_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
|||
if (limbIndex == HAPPY_MASK_SALESMAN_LIMB_HEAD) {
|
||||
Matrix_MultVec3f(&headOffset, &this->actor.focus.pos);
|
||||
}
|
||||
|
||||
if (((this->animIndex == OSN_ANIM_MASK_LOOK_AT) || (this->animIndex == OSN_ANIM_MASK_LOOK_FROM_START) ||
|
||||
(this->animIndex == OSN_ANIM_MASK_LOOK_FROM_LOOP)) &&
|
||||
(limbIndex == HAPPY_MASK_SALESMAN_LIMB_LEFT_HAND)) {
|
||||
|
|
|
@ -53,13 +53,25 @@ void EnOssan_GetCutscenes(EnOssan* this, PlayState* play);
|
|||
s32 EnOssan_ReturnItemToShelf(EnOssan* this);
|
||||
s32 EnOssan_TakeItemOffShelf(EnOssan* this);
|
||||
|
||||
typedef enum {
|
||||
typedef enum EnOssanCutsceneState {
|
||||
/* 0 */ ENOSSAN_CUTSCENESTATE_STOPPED,
|
||||
/* 1 */ ENOSSAN_CUTSCENESTATE_WAITING,
|
||||
/* 2 */ ENOSSAN_CUTSCENESTATE_PLAYING
|
||||
} EnOssanCutsceneState;
|
||||
|
||||
typedef enum {
|
||||
ActorInit En_Ossan_InitVars = {
|
||||
/**/ ACTOR_EN_OSSAN,
|
||||
/**/ ACTORCAT_NPC,
|
||||
/**/ FLAGS,
|
||||
/**/ GAMEPLAY_KEEP,
|
||||
/**/ sizeof(EnOssan),
|
||||
/**/ EnOssan_Init,
|
||||
/**/ EnOssan_Destroy,
|
||||
/**/ EnOssan_Update,
|
||||
/**/ NULL,
|
||||
};
|
||||
|
||||
typedef enum FsnAnimation {
|
||||
/* 0 */ FSN_ANIM_IDLE,
|
||||
/* 1 */ FSN_ANIM_SCRATCH_BACK,
|
||||
/* 2 */ FSN_ANIM_TURN_AROUND_FORWARD,
|
||||
|
@ -76,7 +88,23 @@ typedef enum {
|
|||
/* 13 */ FSN_ANIM_MAX
|
||||
} FsnAnimation;
|
||||
|
||||
typedef enum {
|
||||
static AnimationInfoS sCuriosityShopManAnimationInfo[FSN_ANIM_MAX] = {
|
||||
{ &gFsnIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // FSN_ANIM_IDLE
|
||||
{ &gFsnScratchBackAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // FSN_ANIM_SCRATCH_BACK
|
||||
{ &gFsnTurnAroundAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // FSN_ANIM_TURN_AROUND_FORWARD
|
||||
{ &gFsnTurnAroundAnim, -1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // FSN_ANIM_TURN_AROUND_REVERSE
|
||||
{ &gFsnHandsOnCounterStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // FSN_ANIM_HANDS_ON_COUNTER_START
|
||||
{ &gFsnHandsOnCounterLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // FSN_ANIM_HANDS_ON_COUNTER_LOOP
|
||||
{ &gFsnHandOnFaceStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // FSN_ANIM_HAND_ON_FACE_START
|
||||
{ &gFsnHandOnFaceLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // FSN_ANIM_HAND_ON_FACE_LOOP
|
||||
{ &gFsnLeanForwardStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // FSN_ANIM_LEAN_FORWARD_START
|
||||
{ &gFsnLeanForwardLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // FSN_ANIM_LEAN_FORWARD_LOOP
|
||||
{ &gFsnSlamCounterStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // FSN_ANIM_SLAM_COUNTER_START
|
||||
{ &gFsnSlamCounterLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // FSN_ANIM_SLAM_COUNTER_LOOP
|
||||
{ &gFsnMakeOfferAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // FSN_ANIM_MAKE_OFFER
|
||||
};
|
||||
|
||||
typedef enum AniAnimation {
|
||||
/* 0 */ ANI_ANIM_STANDING_NORMAL_LOOP_1,
|
||||
/* 1 */ ANI_ANIM_STANDING_NORMAL_LOOP_2,
|
||||
/* 2 */ ANI_ANIM_STANDING_NORMAL_ONCE_FORWARD_1,
|
||||
|
@ -92,52 +120,24 @@ typedef enum {
|
|||
/* 12 */ ANI_ANIM_MAX
|
||||
} AniAnimation;
|
||||
|
||||
ActorInit En_Ossan_InitVars = {
|
||||
/**/ ACTOR_EN_OSSAN,
|
||||
/**/ ACTORCAT_NPC,
|
||||
/**/ FLAGS,
|
||||
/**/ GAMEPLAY_KEEP,
|
||||
/**/ sizeof(EnOssan),
|
||||
/**/ EnOssan_Init,
|
||||
/**/ EnOssan_Destroy,
|
||||
/**/ EnOssan_Update,
|
||||
/**/ NULL,
|
||||
};
|
||||
|
||||
static AnimationInfoS sCuriosityShopManAnimationInfo[] = {
|
||||
{ &gFsnIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gFsnScratchBackAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gFsnTurnAroundAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gFsnTurnAroundAnim, -1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gFsnHandsOnCounterStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gFsnHandsOnCounterLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gFsnHandOnFaceStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gFsnHandOnFaceLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gFsnLeanForwardStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gFsnLeanForwardLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gFsnSlamCounterStartAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gFsnSlamCounterLoopAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gFsnMakeOfferAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
};
|
||||
|
||||
static AnimationInfoS sPartTimerAnimationInfo[] = {
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -10 },
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -10 },
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gAniStandingNormalAnim, -1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
{ &gAniHandBehindHeadApologyAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -5 },
|
||||
{ &gAniHandBehindHeadApologyAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -5 },
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
|
||||
static AnimationInfoS sPartTimerAnimationInfo[ANI_ANIM_MAX] = {
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -10 }, // ANI_ANIM_STANDING_NORMAL_LOOP_1
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -10 }, // ANI_ANIM_STANDING_NORMAL_LOOP_2
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // ANI_ANIM_STANDING_NORMAL_ONCE_FORWARD_1
|
||||
{ &gAniStandingNormalAnim, -1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // ANI_ANIM_STANDING_NORMAL_ONCE_REVERSE
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // ANI_ANIM_STANDING_NORMAL_ONCE_FORWARD_2
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ANI_ANIM_STANDING_NORMAL_LOOP_3
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // ANI_ANIM_STANDING_NORMAL_ONCE_FORWARD_3
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ANI_ANIM_STANDING_NORMAL_LOOP_4
|
||||
{ &gAniHandBehindHeadApologyAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -5 }, // ANI_ANIM_APOLOGY_START
|
||||
{ &gAniHandBehindHeadApologyAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -5 }, // ANI_ANIM_APOLOGY_LOOP
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 }, // ANI_ANIM_STANDING_NORMAL_ONCE_FORWARD_4
|
||||
{ &gAniStandingNormalAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 }, // ANI_ANIM_STANDING_NORMAL_LOOP_5
|
||||
};
|
||||
|
||||
static s16 sObjectIds[] = { OBJECT_FSN, OBJECT_ANI };
|
||||
|
||||
static AnimationInfoS* sAnimationInfo[] = { sCuriosityShopManAnimationInfo, sPartTimerAnimationInfo };
|
||||
static AnimationInfoS* sAnimationInfoList[] = { sCuriosityShopManAnimationInfo, sPartTimerAnimationInfo };
|
||||
|
||||
static f32 sActorScales[] = { 0.01f, 0.01f };
|
||||
|
||||
|
@ -393,12 +393,12 @@ void EnOssan_Idle(EnOssan* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void EnOssan_BeginInteraction(EnOssan* this, PlayState* play) {
|
||||
AnimationInfoS* animationInfo = sAnimationInfo[this->actor.params];
|
||||
AnimationInfoS* animationInfo = sAnimationInfoList[this->actor.params];
|
||||
s16 curFrame = this->skelAnime.curFrame;
|
||||
s16 frameCount = Animation_GetLastFrame(animationInfo[this->animIndex].animation);
|
||||
s16 endFrame = Animation_GetLastFrame(animationInfo[this->animIndex].animation);
|
||||
|
||||
if (this->animIndex == FSN_ANIM_TURN_AROUND_REVERSE) {
|
||||
frameCount = 0;
|
||||
endFrame = 0;
|
||||
}
|
||||
if (this->cutsceneState == ENOSSAN_CUTSCENESTATE_WAITING) {
|
||||
if (CutsceneManager_IsNext(this->csId)) {
|
||||
|
@ -409,7 +409,7 @@ void EnOssan_BeginInteraction(EnOssan* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
if (this->actor.params == ENOSSAN_CURIOSITY_SHOP_MAN) {
|
||||
if (curFrame == frameCount) {
|
||||
if (curFrame == endFrame) {
|
||||
switch (this->animIndex) {
|
||||
case FSN_ANIM_SCRATCH_BACK:
|
||||
this->animIndex = FSN_ANIM_TURN_AROUND_FORWARD;
|
||||
|
@ -566,7 +566,7 @@ u8 EnOssan_CursorLeft(EnOssan* this, u8 cursorIndex, u8 shelfSlotMax) {
|
|||
}
|
||||
|
||||
void EnOssan_Hello(EnOssan* this, PlayState* play) {
|
||||
AnimationInfoS* animationInfo = sAnimationInfo[this->actor.params];
|
||||
AnimationInfoS* animationInfo = sAnimationInfoList[this->actor.params];
|
||||
u8 talkState = Message_GetState(&play->msgCtx);
|
||||
s32 pad;
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
@ -575,7 +575,7 @@ void EnOssan_Hello(EnOssan* this, PlayState* play) {
|
|||
if ((talkState == TEXT_STATE_5) && Message_ShouldAdvance(play)) {
|
||||
if ((this->animIndex == ANI_ANIM_APOLOGY_LOOP) && (this->actor.params == ENOSSAN_PART_TIME_WORKER)) {
|
||||
this->animIndex = ANI_ANIM_STANDING_NORMAL_LOOP_2;
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, animationInfo, 1);
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, animationInfo, ANI_ANIM_STANDING_NORMAL_LOOP_2);
|
||||
}
|
||||
this->flags &= ~LOOKED_AT_PLAYER;
|
||||
if (player->transformation == PLAYER_FORM_DEKU) {
|
||||
|
@ -600,7 +600,7 @@ void EnOssan_Hello(EnOssan* this, PlayState* play) {
|
|||
}
|
||||
|
||||
s32 EnOssan_FacingShopkeeperDialogResult(EnOssan* this, PlayState* play) {
|
||||
AnimationInfoS* animationInfo = sAnimationInfo[this->actor.params];
|
||||
AnimationInfoS* animationInfo = sAnimationInfoList[this->actor.params];
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
switch (play->msgCtx.choiceIndex) {
|
||||
|
@ -608,7 +608,7 @@ s32 EnOssan_FacingShopkeeperDialogResult(EnOssan* this, PlayState* play) {
|
|||
Audio_PlaySfx_MessageDecide();
|
||||
if ((this->actor.params == ENOSSAN_PART_TIME_WORKER) && (player->transformation == PLAYER_FORM_ZORA)) {
|
||||
this->animIndex = ANI_ANIM_APOLOGY_LOOP;
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, animationInfo, 9);
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, animationInfo, ANI_ANIM_APOLOGY_LOOP);
|
||||
}
|
||||
EnOssan_SetupAction(this, EnOssan_TalkToShopkeeper);
|
||||
Message_ContinueTextbox(play, sTalkOptionTextIds[this->actor.params]);
|
||||
|
@ -643,30 +643,33 @@ void EnOssan_FaceShopkeeper(EnOssan* this, PlayState* play) {
|
|||
} else {
|
||||
if (talkState == TEXT_STATE_CHOICE) {
|
||||
func_8011552C(play, DO_ACTION_DECIDE);
|
||||
if (!EnOssan_TestEndInteraction(this, play, CONTROLLER1(&play->state)) &&
|
||||
(!Message_ShouldAdvance(play) || !EnOssan_FacingShopkeeperDialogResult(this, play))) {
|
||||
if (this->stickAccumX < 0) {
|
||||
cursorIndex = EnOssan_SetCursorIndexFromNeutral(this, 4);
|
||||
if (cursorIndex != CURSOR_INVALID) {
|
||||
this->cursorIndex = cursorIndex;
|
||||
EnOssan_SetupAction(this, EnOssan_LookToLeftShelf);
|
||||
func_8011552C(play, DO_ACTION_DECIDE);
|
||||
this->stickLeftPrompt.isEnabled = false;
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
} else if (this->stickAccumX > 0) {
|
||||
cursorIndex = EnOssan_SetCursorIndexFromNeutral(this, 0);
|
||||
if (cursorIndex != CURSOR_INVALID) {
|
||||
this->cursorIndex = cursorIndex;
|
||||
EnOssan_SetupAction(this, EnOssan_LookToRightShelf);
|
||||
func_8011552C(play, DO_ACTION_DECIDE);
|
||||
this->stickRightPrompt.isEnabled = false;
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (EnOssan_TestEndInteraction(this, play, CONTROLLER1(&play->state))) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Message_ShouldAdvance(play) && EnOssan_FacingShopkeeperDialogResult(this, play)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->stickAccumX < 0) {
|
||||
cursorIndex = EnOssan_SetCursorIndexFromNeutral(this, 4);
|
||||
if (cursorIndex != CURSOR_INVALID) {
|
||||
this->cursorIndex = cursorIndex;
|
||||
EnOssan_SetupAction(this, EnOssan_LookToLeftShelf);
|
||||
func_8011552C(play, DO_ACTION_DECIDE);
|
||||
this->stickLeftPrompt.isEnabled = false;
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
} else if (this->stickAccumX > 0) {
|
||||
cursorIndex = EnOssan_SetCursorIndexFromNeutral(this, 0);
|
||||
if (cursorIndex != CURSOR_INVALID) {
|
||||
this->cursorIndex = cursorIndex;
|
||||
EnOssan_SetupAction(this, EnOssan_LookToRightShelf);
|
||||
func_8011552C(play, DO_ACTION_DECIDE);
|
||||
this->stickRightPrompt.isEnabled = false;
|
||||
Audio_PlaySfx(NA_SE_SY_CURSOR);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((this->actor.params == ENOSSAN_PART_TIME_WORKER) && (player->transformation != PLAYER_FORM_ZORA)) {
|
||||
Math_SmoothStepToS(&this->partTimerHeadRot.y, 8000, 3, 2000, 0);
|
||||
|
@ -675,12 +678,12 @@ void EnOssan_FaceShopkeeper(EnOssan* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void EnOssan_TalkToShopkeeper(EnOssan* this, PlayState* play) {
|
||||
AnimationInfoS* animationInfo = sAnimationInfo[this->actor.params];
|
||||
AnimationInfoS* animationInfo = sAnimationInfoList[this->actor.params];
|
||||
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) {
|
||||
if ((this->animIndex == ANI_ANIM_APOLOGY_LOOP) && (this->actor.params == ENOSSAN_PART_TIME_WORKER)) {
|
||||
this->animIndex = ANI_ANIM_STANDING_NORMAL_LOOP_2;
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, animationInfo, 1);
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, animationInfo, ANI_ANIM_STANDING_NORMAL_LOOP_2);
|
||||
}
|
||||
EnOssan_StartShopping(play, this);
|
||||
}
|
||||
|
@ -1571,7 +1574,7 @@ void EnOssan_InitShop(EnOssan* this, PlayState* play) {
|
|||
|
||||
Actor_SetScale(&this->actor, sActorScales[this->actor.params]);
|
||||
this->animIndex = 1; // FSN_ANIM_SCRATCH_BACK and ANI_ANIM_STANDING_NORMAL_LOOP_2
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfo[this->actor.params], 1);
|
||||
SubS_ChangeAnimationByInfoS(&this->skelAnime, sAnimationInfoList[this->actor.params], 1);
|
||||
EnOssan_SpawnShopItems(this, play, shopItems);
|
||||
this->blinkTimer = 20;
|
||||
this->eyeTexIndex = 0;
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "z_en_ot.h"
|
||||
#include "objects/object_ot/object_ot.h"
|
||||
#include "objects/gameplay_keep/gameplay_keep.h"
|
||||
|
||||
#define FLAGS (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY | ACTOR_FLAG_10)
|
||||
|
@ -95,10 +94,17 @@ static ColliderCylinderInit sCylinderInit = {
|
|||
{ 5, 33, -20, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
static AnimationSpeedInfo sAnimations[] = {
|
||||
{ &object_ot_Anim_004B30, 1.0f, ANIMMODE_LOOP, -5.0f },
|
||||
{ &object_ot_Anim_0008D8, 1.0f, ANIMMODE_LOOP, -5.0f },
|
||||
{ &object_ot_Anim_000420, 1.0f, ANIMMODE_LOOP, 0.0f },
|
||||
typedef enum SeahorseAnimation {
|
||||
/* 0 */ SEAHORSE_ANIM_0,
|
||||
/* 1 */ SEAHORSE_ANIM_1,
|
||||
/* 2 */ SEAHORSE_ANIM_2,
|
||||
/* 3 */ SEAHORSE_ANIM_MAX
|
||||
} SeahorseAnimation;
|
||||
|
||||
static AnimationSpeedInfo sAnimationSpeedInfo[SEAHORSE_ANIM_MAX] = {
|
||||
{ &object_ot_Anim_004B30, 1.0f, ANIMMODE_LOOP, -5.0f }, // SEAHORSE_ANIM_0
|
||||
{ &object_ot_Anim_0008D8, 1.0f, ANIMMODE_LOOP, -5.0f }, // SEAHORSE_ANIM_1
|
||||
{ &object_ot_Anim_000420, 1.0f, ANIMMODE_LOOP, 0.0f }, // SEAHORSE_ANIM_2
|
||||
};
|
||||
|
||||
static InitChainEntry sInitChain[] = {
|
||||
|
@ -150,12 +156,12 @@ void EnOt_Init(Actor* thisx, PlayState* play) {
|
|||
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 30.0f);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &object_ot_Skel_004800, &object_ot_Anim_0008D8, this->jointTable,
|
||||
this->morphTable, 19);
|
||||
this->morphTable, OBJECT_OT_LIMB_MAX);
|
||||
Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit);
|
||||
Animation_Change(&this->skelAnime, sAnimations[0].animation, 1.0f,
|
||||
Animation_GetLastFrame(&sAnimations[0].animation->common) * Rand_ZeroOne(),
|
||||
Animation_GetLastFrame(&sAnimations[0].animation->common), sAnimations[0].mode,
|
||||
sAnimations[0].morphFrames);
|
||||
Animation_Change(&this->skelAnime, sAnimationSpeedInfo[SEAHORSE_ANIM_0].animation, 1.0f,
|
||||
Animation_GetLastFrame(&sAnimationSpeedInfo[SEAHORSE_ANIM_0].animation->common) * Rand_ZeroOne(),
|
||||
Animation_GetLastFrame(&sAnimationSpeedInfo[SEAHORSE_ANIM_0].animation->common),
|
||||
sAnimationSpeedInfo[SEAHORSE_ANIM_0].mode, sAnimationSpeedInfo[SEAHORSE_ANIM_0].morphFrames);
|
||||
this->pathIndex = SEAHORSE_GET_PATH_INDEX(&this->actor);
|
||||
this->unk_344 = this->actor.world.rot.z;
|
||||
this->actor.world.rot.z = 0;
|
||||
|
@ -163,7 +169,7 @@ void EnOt_Init(Actor* thisx, PlayState* play) {
|
|||
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
|
||||
this->actor.gravity = 0.0f;
|
||||
SubS_FillCutscenesList(&this->actor, this->csIdList, ARRAY_COUNT(this->csIdList));
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 0, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_0, &this->animIndex);
|
||||
this->skelAnime.curFrame = Rand_ZeroOne() * this->skelAnime.endFrame;
|
||||
this->lightNode = LightContext_InsertLight(play, &play->lightCtx, &this->lightInfo);
|
||||
this->unk_744.r = 255;
|
||||
|
@ -221,6 +227,9 @@ void EnOt_Init(Actor* thisx, PlayState* play) {
|
|||
case 1:
|
||||
Actor_Kill(&this->actor);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -260,6 +269,9 @@ void EnOt_Init(Actor* thisx, PlayState* play) {
|
|||
func_80B5CE6C(this, play);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -294,16 +306,16 @@ void func_80B5BAAC(LightInfo* lightInfo, Vec3f* arg1, Color_RGB8* arg2, s16 radi
|
|||
Lights_PointNoGlowSetInfo(lightInfo, arg1->x, arg1->y, arg1->z, arg2->r, arg2->g, arg2->b, radius);
|
||||
}
|
||||
|
||||
void func_80B5BB38(Color_RGB8* arg0, Color_RGB8* arg1, f32 arg2) {
|
||||
void EnOt_LerpColor(Color_RGB8* arg0, Color_RGB8* arg1, f32 lerp) {
|
||||
f32 rand = Rand_ZeroOne();
|
||||
|
||||
arg0->r = (arg1->r * arg2) + (arg1->r * (1.0f - arg2) * rand);
|
||||
arg0->g = (arg1->g * arg2) + (arg1->g * (1.0f - arg2) * rand);
|
||||
arg0->b = (arg1->b * arg2) + (arg1->b * (1.0f - arg2) * rand);
|
||||
arg0->r = (arg1->r * lerp) + (arg1->r * (1.0f - lerp) * rand);
|
||||
arg0->g = (arg1->g * lerp) + (arg1->g * (1.0f - lerp) * rand);
|
||||
arg0->b = (arg1->b * lerp) + (arg1->b * (1.0f - lerp) * rand);
|
||||
}
|
||||
|
||||
void func_80B5BDA8(EnOt* this, PlayState* play) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 1, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_1, &this->animIndex);
|
||||
SubS_FillCutscenesList(&this->actor, this->csIdList, ARRAY_COUNT(this->csIdList));
|
||||
this->actionFunc = func_80B5BE04;
|
||||
}
|
||||
|
@ -321,11 +333,14 @@ void func_80B5BE04(EnOt* this, PlayState* play) {
|
|||
func_80B5BF60(this, play);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80B5BE88(EnOt* this, PlayState* play) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 1, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_1, &this->animIndex);
|
||||
this->actionFunc = func_80B5BED4;
|
||||
}
|
||||
|
||||
|
@ -340,7 +355,7 @@ void func_80B5BED4(EnOt* this, PlayState* play) {
|
|||
|
||||
void func_80B5BF60(EnOt* this, PlayState* play) {
|
||||
this->unk_32C |= 0x40;
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 0, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_0, &this->animIndex);
|
||||
this->actionFunc = func_80B5BFB8;
|
||||
}
|
||||
|
||||
|
@ -414,8 +429,9 @@ void func_80B5C25C(EnOt* this, PlayState* play) {
|
|||
if ((this->type == SEAHORSE_TYPE_2) && (this->unk_32C & 0x80) && (this->unk_360->unk_32C & 0x80)) {
|
||||
this->unk_32C |= 0x100;
|
||||
this->unk_360->unk_32C |= 0x100;
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 2, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->unk_360->skelAnime, sAnimations, 2, &this->unk_360->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_2, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->unk_360->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_2,
|
||||
&this->unk_360->animIndex);
|
||||
this->actor.flags |= ACTOR_FLAG_CANT_LOCK_ON;
|
||||
this->actor.flags &= ~(ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY);
|
||||
this->unk_360->actor.flags |= ACTOR_FLAG_CANT_LOCK_ON;
|
||||
|
@ -493,7 +509,7 @@ void func_80B5C64C(EnOt* this, PlayState* play) {
|
|||
|
||||
void func_80B5C684(EnOt* this, PlayState* play) {
|
||||
this->actor.speed = 0.0f;
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 0, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_0, &this->animIndex);
|
||||
this->actionFunc = func_80B5C6DC;
|
||||
}
|
||||
|
||||
|
@ -518,6 +534,9 @@ void func_80B5C6DC(EnOt* this, PlayState* play) {
|
|||
case 1:
|
||||
CutsceneManager_Stop(this->csIdList[3]);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
this->unk_73C = -1;
|
||||
} else {
|
||||
|
@ -641,7 +660,7 @@ void func_80B5CCA0(EnOt* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_80B5CCF4(EnOt* this, PlayState* play) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 0, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_0, &this->animIndex);
|
||||
this->actionFunc = func_80B5CD40;
|
||||
}
|
||||
|
||||
|
@ -654,7 +673,10 @@ void func_80B5CD40(EnOt* this, PlayState* play) {
|
|||
temp = Math_SmoothStepToS(&this->actor.shape.rot.y,
|
||||
BINANG_ROT180(Camera_GetCamDirYaw(GET_ACTIVE_CAM(play))), 3, 0xE38, 0x38E);
|
||||
this->actor.world.rot.y = this->actor.shape.rot.y;
|
||||
|
||||
//! FAKE:
|
||||
if (1) {}
|
||||
|
||||
if (!temp) {
|
||||
SET_WEEKEVENTREG(WEEKEVENTREG_23_10);
|
||||
Message_StartTextbox(play, 0x1069, NULL);
|
||||
|
@ -685,7 +707,7 @@ void func_80B5CD40(EnOt* this, PlayState* play) {
|
|||
void func_80B5CE6C(EnOt* this, PlayState* play) {
|
||||
this->unk_384 = 0;
|
||||
this->unk_32C |= 0x20;
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 0, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_0, &this->animIndex);
|
||||
this->actionFunc = func_80B5CEC8;
|
||||
}
|
||||
|
||||
|
@ -700,6 +722,7 @@ void func_80B5CEC8(EnOt* this, PlayState* play) {
|
|||
}
|
||||
|
||||
Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 3, 0xE38, 0x38E);
|
||||
|
||||
if (this->unk_32C & 0x800) {
|
||||
this->actor.flags |= ACTOR_FLAG_10000;
|
||||
Actor_OfferTalkExchange(&this->actor, play, this->actor.xzDistToPlayer, this->actor.playerHeightRel,
|
||||
|
@ -712,7 +735,7 @@ void func_80B5CEC8(EnOt* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_84_10) && (SEAHORSE_GET_TYPE(&this->actor) == 1)) {
|
||||
if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_84_10) && (SEAHORSE_GET_TYPE(&this->actor) == SEAHORSE_TYPE_1)) {
|
||||
if ((fabsf(this->actor.xzDistToPlayer) <= 130.0f) && (fabsf(this->actor.playerHeightRel) <= 130.0f)) {
|
||||
player->unk_B2B = 29;
|
||||
}
|
||||
|
@ -742,7 +765,7 @@ void func_80B5CEC8(EnOt* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_80B5D114(EnOt* this, PlayState* play) {
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 0, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_0, &this->animIndex);
|
||||
this->actionFunc = func_80B5D160;
|
||||
}
|
||||
|
||||
|
@ -754,7 +777,7 @@ void func_80B5D160(EnOt* this, PlayState* play) {
|
|||
case TEXT_STATE_NONE:
|
||||
temp = Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 3, 0xE38, 0x38E);
|
||||
this->actor.world.rot.y = this->actor.shape.rot.y;
|
||||
if (temp == 0) {
|
||||
if (!temp) {
|
||||
switch (this->unk_384) {
|
||||
case 0:
|
||||
if ((this->type != SEAHORSE_TYPE_1) && (this->type == SEAHORSE_TYPE_2)) {
|
||||
|
@ -784,8 +807,10 @@ void func_80B5D160(EnOt* this, PlayState* play) {
|
|||
Message_StartTextbox(play, 0x106D, &this->actor);
|
||||
func_80B5D114(this, play);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -825,6 +850,9 @@ void func_80B5D160(EnOt* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -897,7 +925,7 @@ void func_80B5D648(EnOt* this, PlayState* play) {
|
|||
this->actorPath.pointOffset.z = 0.0f;
|
||||
this->actor.gravity = 0.0f;
|
||||
this->actor.speed = 0.0f;
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, 1, &this->animIndex);
|
||||
SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimationSpeedInfo, SEAHORSE_ANIM_1, &this->animIndex);
|
||||
this->actor.flags |= ACTOR_FLAG_CANT_LOCK_ON;
|
||||
this->actor.flags &= ~(ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY);
|
||||
Flags_SetSwitch(play, SEAHORSE_GET_SWITCH_FLAG(&this->actor));
|
||||
|
@ -928,7 +956,7 @@ void func_80B5D750(EnOt* this, PlayState* play) {
|
|||
if ((this->unk_32C & 1) && (this->actor.xzDistToPlayer <= 180.0f)) {
|
||||
this->actor.flags &= ~ACTOR_FLAG_CANT_LOCK_ON;
|
||||
this->actor.flags |= (ACTOR_FLAG_TARGETABLE | ACTOR_FLAG_FRIENDLY);
|
||||
if (D_80B5E884 != 0) {
|
||||
if (D_80B5E884 != NULL) {
|
||||
func_80B5C9A8(this, play);
|
||||
} else {
|
||||
func_80B5CBA0(this, play);
|
||||
|
@ -940,7 +968,7 @@ void EnOt_Update(Actor* thisx, PlayState* play) {
|
|||
s32 pad;
|
||||
EnOt* this = THIS;
|
||||
|
||||
if ((this->animIndex == 1) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
if ((this->animIndex == SEAHORSE_ANIM_1) && Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
Actor_PlaySfx(&this->actor, NA_SE_EV_SEAHORSE_SWIM);
|
||||
}
|
||||
|
||||
|
@ -969,10 +997,10 @@ void EnOt_Update(Actor* thisx, PlayState* play) {
|
|||
SkelAnime_Update(&this->skelAnime);
|
||||
Collider_UpdateCylinder(&this->actor, &this->collider);
|
||||
CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base);
|
||||
func_80B5BB38(&this->unk_747, &this->unk_744, 0.7f);
|
||||
EnOt_LerpColor(&this->unk_747, &this->unk_744, 0.7f);
|
||||
|
||||
if (this->unk_32C & 0x400) {
|
||||
func_80B5BAAC(&this->lightInfo, &this->unk_378, &this->unk_747, 0xD2);
|
||||
func_80B5BAAC(&this->lightInfo, &this->unk_378, &this->unk_747, 210);
|
||||
}
|
||||
|
||||
func_80B5E078(play, this->unk_3A4, 10);
|
||||
|
@ -985,7 +1013,7 @@ void func_80B5DAEC(Actor* thisx, PlayState* play) {
|
|||
this->actionFunc(this, play);
|
||||
Actor_SetFocus(&this->actor, 12.0f);
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
func_80B5BB38(&this->unk_747, &this->unk_744, 0.7f);
|
||||
EnOt_LerpColor(&this->unk_747, &this->unk_744, 0.7f);
|
||||
if (this->unk_32C & 0x400) {
|
||||
func_80B5BAAC(&this->lightInfo, &this->unk_378, &this->unk_747, 210);
|
||||
}
|
||||
|
@ -1037,7 +1065,7 @@ void EnOt_Draw(Actor* thisx, PlayState* play) {
|
|||
Gfx* gfx;
|
||||
|
||||
Matrix_Push();
|
||||
func_80B5E1D8(play, this->unk_3A4, 10);
|
||||
func_80B5E1D8(play, this->unk_3A4, ARRAY_COUNT(this->unk_3A4));
|
||||
Matrix_Pop();
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
@ -1074,7 +1102,7 @@ void EnOt_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
|||
static Vec3f D_80B5E410 = { 400.0f, 600.0f, 0.0f };
|
||||
EnOt* this = THIS;
|
||||
|
||||
if (limbIndex == 4) {
|
||||
if (limbIndex == OBJECT_OT_LIMB_04) {
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
Gfx* gfx = POLY_OPA_DISP;
|
||||
|
||||
|
@ -1083,7 +1111,7 @@ void EnOt_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
|||
Matrix_MultVec3f(&D_80B5E410, &this->unk_74C);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
} else if (limbIndex == 1) {
|
||||
} else if (limbIndex == OBJECT_OT_LIMB_01) {
|
||||
Matrix_MultZero(&this->unk_378);
|
||||
this->unk_32C |= 0x400;
|
||||
}
|
||||
|
@ -1092,7 +1120,7 @@ void EnOt_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
|||
EnOtUnkStruct* func_80B5DF58(EnOtUnkStruct* arg0, u8 arg1, Vec3f* arg2, Vec3s* arg3, s32 arg4) {
|
||||
s32 i = 0;
|
||||
|
||||
while (i < arg4 && arg0->unk_00) {
|
||||
while ((i < arg4) && arg0->unk_00) {
|
||||
i++;
|
||||
arg0++;
|
||||
}
|
||||
|
@ -1145,7 +1173,7 @@ void func_80B5E078(PlayState* play, EnOtUnkStruct* arg1, s32 arg2) {
|
|||
|
||||
void func_80B5E1D8(PlayState* play, EnOtUnkStruct* arg1, s32 arg2) {
|
||||
s32 i;
|
||||
s32 flag = 0;
|
||||
s32 flag = false;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define Z_EN_OT_H
|
||||
|
||||
#include "global.h"
|
||||
#include "objects/object_ot/object_ot.h"
|
||||
|
||||
struct EnOt;
|
||||
|
||||
|
@ -42,8 +43,8 @@ typedef struct EnOt {
|
|||
/* 0x144 */ EnOtActionFunc actionFunc;
|
||||
/* 0x148 */ SkelAnime skelAnime;
|
||||
/* 0x18C */ ColliderCylinder collider;
|
||||
/* 0x1D8 */ Vec3s jointTable[19];
|
||||
/* 0x24A */ Vec3s morphTable[19];
|
||||
/* 0x1D8 */ Vec3s jointTable[OBJECT_OT_LIMB_MAX];
|
||||
/* 0x24A */ Vec3s morphTable[OBJECT_OT_LIMB_MAX];
|
||||
/* 0x2BC */ s32 animIndex;
|
||||
/* 0x2C0 */ ActorPathing actorPath;
|
||||
/* 0x32C */ u16 unk_32C;
|
||||
|
|
|
@ -149,7 +149,7 @@ void EnOwl_Init(Actor* thisx, PlayState* play) {
|
|||
|
||||
switch (owlType) {
|
||||
case ENOWL_GET_TYPE_1:
|
||||
if ((switchFlag < 0x7F) && Flags_GetSwitch(play, switchFlag)) {
|
||||
if ((switchFlag < ENOWL_SWITCH_FLAG_NONE) && Flags_GetSwitch(play, switchFlag)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
@ -259,7 +259,7 @@ void func_8095AA70(EnOwl* this) {
|
|||
void func_8095AAD0(EnOwl* this, PlayState* play) {
|
||||
s32 switchFlag = ENOWL_GET_SWITCH_FLAG(&this->actor);
|
||||
|
||||
if (switchFlag < 0x7F) {
|
||||
if (switchFlag < ENOWL_SWITCH_FLAG_NONE) {
|
||||
Flags_SetSwitch(play, switchFlag);
|
||||
}
|
||||
|
||||
|
@ -406,7 +406,7 @@ s32 func_8095B06C(EnOwl* this) {
|
|||
return false;
|
||||
}
|
||||
|
||||
if (this->unk_3F0 < (this->actor.world.pos.y - 2.0f)) {
|
||||
if ((this->actor.world.pos.y - 2.0f) > this->unk_3F0) {
|
||||
this->actor.world.pos.y -= 2.0f;
|
||||
return false;
|
||||
}
|
||||
|
@ -464,7 +464,7 @@ void func_8095B2F8(EnOwl* this, PlayState* play) {
|
|||
|
||||
if ((this->actor.shape.rot.y == this->unk_3EC) && (this->actionFlags & 1)) {
|
||||
this->actionFunc = func_8095B254;
|
||||
Animation_Change(this->skelAnime3, this->skelAnime3->animation, 1.0f, 19.0f,
|
||||
Animation_Change(this->curSkelAnime, this->curSkelAnime->animation, 1.0f, 19.0f,
|
||||
Animation_GetLastFrame(&gOwlTakeoffAnim), ANIMMODE_ONCE, 0.0f);
|
||||
this->unk_414 = func_8095C484;
|
||||
}
|
||||
|
@ -475,7 +475,7 @@ void func_8095B2F8(EnOwl* this, PlayState* play) {
|
|||
void func_8095B3DC(EnOwl* this, PlayState* play) {
|
||||
if (this->actionFlags & 1) {
|
||||
this->actionFunc = func_8095B2F8;
|
||||
Animation_Change(this->skelAnime3, &gOwlTakeoffAnim, 1.0f, 0.0f, 35.0f, ANIMMODE_ONCE, 0.0f);
|
||||
Animation_Change(this->curSkelAnime, &gOwlTakeoffAnim, 1.0f, 0.0f, 35.0f, ANIMMODE_ONCE, 0.0f);
|
||||
this->unk_414 = func_8095C408;
|
||||
this->unk_3EC = 0x5500;
|
||||
this->actor.world.pos.y += 100.0f;
|
||||
|
@ -531,7 +531,7 @@ void func_8095B650(EnOwl* this, PlayState* play) {
|
|||
|
||||
void func_8095B6C8(EnOwl* this, PlayState* play) {
|
||||
if (this->actionFlags & 1) {
|
||||
Animation_Change(this->skelAnime3, &gOwlUnfoldWingsAnim, -1.0f, Animation_GetLastFrame(&gOwlUnfoldWingsAnim),
|
||||
Animation_Change(this->curSkelAnime, &gOwlUnfoldWingsAnim, -1.0f, Animation_GetLastFrame(&gOwlUnfoldWingsAnim),
|
||||
0.0f, ANIMMODE_ONCE, 0.0f);
|
||||
this->unk_414 = func_8095C484;
|
||||
this->actionFunc = func_8095B650;
|
||||
|
@ -553,13 +553,14 @@ void func_8095B76C(EnOwl* this, PlayState* play) {
|
|||
points = Lib_SegmentedToVirtual(this->path->points);
|
||||
points += this->unk_3F8;
|
||||
|
||||
do {
|
||||
//! FAKE:
|
||||
if (1) {
|
||||
this->actor.world.pos.x = points->x;
|
||||
this->actor.world.pos.z = points->z;
|
||||
} while (0);
|
||||
}
|
||||
|
||||
this->unk_3F8++;
|
||||
if (this->path->count <= this->unk_3F8) {
|
||||
if (this->unk_3F8 >= this->path->count) {
|
||||
this->actionFunc = func_8095B6C8;
|
||||
return;
|
||||
}
|
||||
|
@ -604,7 +605,7 @@ void func_8095B960(EnOwl* this, PlayState* play) {
|
|||
void func_8095B9FC(EnOwl* this, PlayState* play) {
|
||||
if (this->actionFlags & 1) {
|
||||
this->actionFunc = func_8095B960;
|
||||
Animation_Change(this->skelAnime3, &gOwlTakeoffAnim, 1.0f, 0.0f, 35.0f, ANIMMODE_ONCE, 0.0f);
|
||||
Animation_Change(this->curSkelAnime, &gOwlTakeoffAnim, 1.0f, 0.0f, 35.0f, ANIMMODE_ONCE, 0.0f);
|
||||
this->unk_414 = func_8095C408;
|
||||
func_8095B0C8(this);
|
||||
}
|
||||
|
@ -818,36 +819,36 @@ void func_8095C1C8(EnOwl* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_8095C258(EnOwl* this) {
|
||||
SkelAnime_Update(this->skelAnime3);
|
||||
SkelAnime_Update(this->curSkelAnime);
|
||||
if (this->unk_3EA > 0) {
|
||||
this->unk_3EA--;
|
||||
this->actor.shape.rot.z = Math_SinS(this->unk_3EA * 0x333) * 1000.0f;
|
||||
} else {
|
||||
this->unk_414 = func_8095C328;
|
||||
this->unk_3EA = 6;
|
||||
Animation_Change(this->skelAnime3, &gOwlFlyAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gOwlFlyAnim),
|
||||
Animation_Change(this->curSkelAnime, &gOwlFlyAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gOwlFlyAnim),
|
||||
ANIMMODE_ONCE, 5.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8095C328(EnOwl* this) {
|
||||
if (SkelAnime_Update(this->skelAnime3)) {
|
||||
if (SkelAnime_Update(this->curSkelAnime)) {
|
||||
if (this->unk_3EA > 0) {
|
||||
this->unk_3EA--;
|
||||
Animation_Change(this->skelAnime3, this->skelAnime3->animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(this->skelAnime3->animation), ANIMMODE_ONCE, 0.0f);
|
||||
Animation_Change(this->curSkelAnime, this->curSkelAnime->animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(this->curSkelAnime->animation), ANIMMODE_ONCE, 0.0f);
|
||||
} else {
|
||||
this->unk_3EA = 160;
|
||||
this->unk_414 = func_8095C258;
|
||||
Animation_Change(this->skelAnime3, &gOwlGlideAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gOwlGlideAnim),
|
||||
Animation_Change(this->curSkelAnime, &gOwlGlideAnim, 1.0f, 0.0f, Animation_GetLastFrame(&gOwlGlideAnim),
|
||||
ANIMMODE_LOOP, 5.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8095C408(EnOwl* this) {
|
||||
if (SkelAnime_Update(this->skelAnime3)) {
|
||||
Animation_Change(this->skelAnime3, this->skelAnime3->animation, 1.0f, 18.0f, 35.0f, ANIMMODE_ONCE, 0.0f);
|
||||
if (SkelAnime_Update(this->curSkelAnime)) {
|
||||
Animation_Change(this->curSkelAnime, this->curSkelAnime->animation, 1.0f, 18.0f, 35.0f, ANIMMODE_ONCE, 0.0f);
|
||||
this->actionFlags |= 1;
|
||||
} else {
|
||||
this->actionFlags &= ~1;
|
||||
|
@ -855,9 +856,9 @@ void func_8095C408(EnOwl* this) {
|
|||
}
|
||||
|
||||
void func_8095C484(EnOwl* this) {
|
||||
if (SkelAnime_Update(this->skelAnime3)) {
|
||||
Animation_Change(this->skelAnime3, this->skelAnime3->animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(this->skelAnime3->animation), ANIMMODE_ONCE, 0.0f);
|
||||
if (SkelAnime_Update(this->curSkelAnime)) {
|
||||
Animation_Change(this->curSkelAnime, this->curSkelAnime->animation, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(this->curSkelAnime->animation), ANIMMODE_ONCE, 0.0f);
|
||||
this->actionFlags |= 1;
|
||||
} else {
|
||||
this->actionFlags &= ~1;
|
||||
|
@ -1081,7 +1082,9 @@ void EnOwl_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
//! FAKE:
|
||||
if (sp36) {}
|
||||
|
||||
this->unk_3DC = (u16)((this->unk_3DA << 2) << 8) + sp36;
|
||||
this->unk_3D8 = ABS(this->unk_3DC) >> 3;
|
||||
} else {
|
||||
|
@ -1130,23 +1133,23 @@ s32 EnOwl_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* p
|
|||
EnOwl* this = THIS;
|
||||
|
||||
switch (limbIndex) {
|
||||
case 3:
|
||||
case OWL_FLYING_LIMB_HEAD: // OWL_PERCHING_LIMB_HEAD
|
||||
rot->x += this->unk_3DC;
|
||||
rot->z += this->unk_3D8;
|
||||
rot->z -= this->unk_3DE;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
case OWL_FLYING_LIMB_UPPER_BODY: // OWL_PERCHING_LIMB_UPPER_BODY
|
||||
rot->z += this->unk_3DE;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
case OWL_FLYING_LIMB_RIGHT_EYEBROW: // OWL_PERCHING_LIMB_RIGHT_EYEBROW
|
||||
if (!(this->actionFlags & 8)) {
|
||||
rot->y -= (s16)(this->unk_3D8 * 1.5f);
|
||||
}
|
||||
break;
|
||||
|
||||
case 5:
|
||||
case OWL_FLYING_LIMB_LEFT_EYEBROW: // OWL_PERCHING_LIMB_LEFT_EYEBROW
|
||||
if (!(this->actionFlags & 8)) {
|
||||
rot->y += (s16)(this->unk_3D8 * 1.5f);
|
||||
}
|
||||
|
@ -1172,13 +1175,13 @@ void EnOwl_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
|||
sp18.x = 1400.0f;
|
||||
}
|
||||
|
||||
if (limbIndex == 3) {
|
||||
if (limbIndex == OWL_FLYING_LIMB_HEAD) { // OWL_PERCHING_LIMB_HEAD
|
||||
Matrix_MultVec3f(&sp18, &this->actor.focus.pos);
|
||||
}
|
||||
}
|
||||
|
||||
void EnOwl_Draw(Actor* thisx, PlayState* play) {
|
||||
static TexturePtr eyeTextures[] = {
|
||||
static TexturePtr sEyeTextures[] = {
|
||||
gOwlEyeOpenTex,
|
||||
gOwlEyeHalfTex,
|
||||
gOwlEyeClosedTex,
|
||||
|
@ -1190,10 +1193,10 @@ void EnOwl_Draw(Actor* thisx, PlayState* play) {
|
|||
|
||||
Gfx_SetupDL37_Opa(play->state.gfxCtx);
|
||||
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(eyeTextures[this->eyeTexIndex]));
|
||||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(sEyeTextures[this->eyeTexIndex]));
|
||||
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime3->skeleton, this->skelAnime3->jointTable, this->skelAnime3->dListCount,
|
||||
EnOwl_OverrideLimbDraw, EnOwl_PostLimbDraw, &this->actor);
|
||||
SkelAnime_DrawFlexOpa(play, this->curSkelAnime->skeleton, this->curSkelAnime->jointTable,
|
||||
this->curSkelAnime->dListCount, EnOwl_OverrideLimbDraw, EnOwl_PostLimbDraw, &this->actor);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
@ -1229,8 +1232,8 @@ void func_8095D074(Actor* thisx, PlayState* play) {
|
|||
|
||||
void EnOwl_ChangeMode(EnOwl* this, EnOwlActionFunc actionFunc, EnOwlFunc unkFunc, SkelAnime* skelAnime,
|
||||
AnimationHeader* animation, f32 morphFrames) {
|
||||
this->skelAnime3 = skelAnime;
|
||||
Animation_Change(this->skelAnime3, animation, 1.0f, 0.0f, Animation_GetLastFrame(animation), ANIMMODE_ONCE,
|
||||
this->curSkelAnime = skelAnime;
|
||||
Animation_Change(this->curSkelAnime, animation, 1.0f, 0.0f, Animation_GetLastFrame(animation), ANIMMODE_ONCE,
|
||||
morphFrames);
|
||||
this->actionFunc = actionFunc;
|
||||
this->unk_414 = unkFunc;
|
||||
|
|
|
@ -13,6 +13,8 @@ typedef void (*EnOwlFunc)(struct EnOwl*);
|
|||
#define ENOWL_GET_TYPE(thisx) (((thisx)->params & 0xF80) >> 7)
|
||||
#define ENOWL_GET_SWITCH_FLAG(thisx) ((thisx)->params & 0x7F)
|
||||
|
||||
#define ENOWL_SWITCH_FLAG_NONE 0x7F
|
||||
|
||||
typedef enum {
|
||||
/* 0x001 */ ENOWL_GET_TYPE_1 = 1,
|
||||
/* 0x002 */ ENOWL_GET_TYPE_2,
|
||||
|
@ -30,7 +32,7 @@ typedef struct EnOwl {
|
|||
/* 0x2D0 */ SkelAnime skelAnimePerching;
|
||||
/* 0x314 */ Vec3s jointTablePerching[OWL_PERCHING_LIMB_MAX];
|
||||
/* 0x374 */ Vec3s morphTablePerching[OWL_PERCHING_LIMB_MAX];
|
||||
/* 0x3D4 */ SkelAnime* skelAnime3;
|
||||
/* 0x3D4 */ SkelAnime* curSkelAnime; // Points to the currently active SkelAnime
|
||||
/* 0x3D8 */ s16 unk_3D8;
|
||||
/* 0x3DA */ s16 unk_3DA;
|
||||
/* 0x3DC */ s16 unk_3DC;
|
||||
|
|
|
@ -949,8 +949,8 @@ void EnPametfrog_DefeatSnapper(EnPametfrog* this, PlayState* play) {
|
|||
|
||||
void EnPametfrog_SetupSpawnFrog(EnPametfrog* this, PlayState* play) {
|
||||
static Vec3f sAccel = { 0.0f, -0.5f, 0.0f };
|
||||
static Color_RGBA8 primColor = { 250, 250, 250, 255 };
|
||||
static Color_RGBA8 envColor = { 180, 180, 180, 255 };
|
||||
static Color_RGBA8 sPrimColor = { 250, 250, 250, 255 };
|
||||
static Color_RGBA8 sEnvColor = { 180, 180, 180, 255 };
|
||||
s16 yaw = BINANG_ROT180(Camera_GetCamDirYaw(GET_ACTIVE_CAM(play)));
|
||||
Vec3f vec1;
|
||||
Vec3f velocity;
|
||||
|
@ -962,7 +962,7 @@ void EnPametfrog_SetupSpawnFrog(EnPametfrog* this, PlayState* play) {
|
|||
vec1.y = this->actor.world.pos.y + 25.0f;
|
||||
vec1.z = (Math_CosS(yaw) * 20.0f) + this->actor.world.pos.z;
|
||||
this->collider.base.ocFlags1 &= ~OC1_ON;
|
||||
func_800B0DE0(play, &vec1, &gZeroVec3f, &gZeroVec3f, &primColor, &envColor, 800, 50);
|
||||
func_800B0DE0(play, &vec1, &gZeroVec3f, &gZeroVec3f, &sPrimColor, &sEnvColor, 800, 50);
|
||||
SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 40, NA_SE_EN_NPC_APPEAR);
|
||||
Flags_SetClearTemp(play, play->roomCtx.curRoom.num);
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ void EnPoFusen_InitFuse(EnPoFusen* this);
|
|||
void EnPoFusen_Pop(EnPoFusen* this, PlayState* play);
|
||||
void EnPoFusen_Idle(EnPoFusen* this, PlayState* play);
|
||||
void EnPoFusen_IdleFuse(EnPoFusen* this, PlayState* play);
|
||||
s32 EnPoFusen_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
|
||||
|
||||
ActorInit En_Po_Fusen_InitVars = {
|
||||
/**/ ACTOR_EN_PO_FUSEN,
|
||||
|
|
|
@ -711,7 +711,7 @@ void EnPr2_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
s32 func_80A758E8(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 EnPr2_OverrideLimbDrawOpa(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnPr2* this = THIS;
|
||||
|
||||
if (this->unk_1E0 < 10) {
|
||||
|
@ -724,7 +724,7 @@ s32 func_80A758E8(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s
|
|||
return false;
|
||||
}
|
||||
|
||||
void func_80A75950(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnPr2_PostLimbDrawOpa(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
EnPr2* this = THIS;
|
||||
|
||||
if (this->unk_1E0 < 10) {
|
||||
|
@ -736,7 +736,8 @@ void func_80A75950(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Acto
|
|||
}
|
||||
}
|
||||
|
||||
s32 func_80A759D8(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
s32 EnPr2_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
|
||||
Gfx** gfx) {
|
||||
EnPr2* this = THIS;
|
||||
|
||||
if (this->unk_1E0 < 10) {
|
||||
|
@ -763,7 +764,7 @@ void EnPr2_Draw(Actor* thisx, PlayState* play) {
|
|||
|
||||
Scene_SetRenderModeXlu(play, 0, 1);
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_80A758E8, func_80A75950, &this->actor);
|
||||
EnPr2_OverrideLimbDrawOpa, EnPr2_PostLimbDrawOpa, &this->actor);
|
||||
} else {
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, this->unk_1F4);
|
||||
|
@ -771,7 +772,7 @@ void EnPr2_Draw(Actor* thisx, PlayState* play) {
|
|||
Scene_SetRenderModeXlu(play, 1, 2);
|
||||
POLY_XLU_DISP =
|
||||
SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_80A759D8, NULL, &this->actor, POLY_XLU_DISP);
|
||||
EnPr2_OverrideLimbDraw, NULL, &this->actor, POLY_XLU_DISP);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
|
|
@ -498,7 +498,7 @@ void EnPrz_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
s32 func_80A76F70(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 EnPrz_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnPrz* this = THIS;
|
||||
|
||||
if (limbIndex == OBJECT_PR_2_LIMB_02) {
|
||||
|
@ -507,7 +507,7 @@ s32 func_80A76F70(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s
|
|||
return false;
|
||||
}
|
||||
|
||||
void func_80A76FCC(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnPrz_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
Vec3f sZeroVec = { 0.0f, 0.0f, 0.0f };
|
||||
EnPrz* this = THIS;
|
||||
|
||||
|
@ -531,7 +531,7 @@ void EnPrz_Draw(Actor* thisx, PlayState* play) {
|
|||
|
||||
Scene_SetRenderModeXlu(play, 0, 1);
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_80A76F70, func_80A76FCC, &this->actor);
|
||||
EnPrz_OverrideLimbDraw, EnPrz_PostLimbDraw, &this->actor);
|
||||
} else {
|
||||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
gDPSetEnvColor(POLY_XLU_DISP++, 0, 0, 0, this->unk_1EC);
|
||||
|
|
|
@ -824,7 +824,7 @@ void func_80BF547C(EnRg* this, PlayState* play) {
|
|||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
}
|
||||
|
||||
s32 func_80BF5588(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 EnRg_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnRg* this = THIS;
|
||||
s32 fidgetIndex;
|
||||
|
||||
|
@ -865,7 +865,7 @@ void EnRg_Draw(Actor* thisx, PlayState* play) {
|
|||
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_80BF59F8[this->unk_31E]));
|
||||
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_80BF5588, NULL, &this->actor);
|
||||
EnRg_OverrideLimbDraw, NULL, &this->actor);
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
} else {
|
||||
|
|
|
@ -305,7 +305,7 @@ void EnRu_Update(Actor* thisx, PlayState* play) {
|
|||
EnRu_UpdateCollider(this, play);
|
||||
}
|
||||
|
||||
s32 EnRu_OverrideLimbdraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
|
||||
s32 EnRu_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx,
|
||||
Gfx** gfx) {
|
||||
EnRu* this = THIS;
|
||||
|
||||
|
@ -330,7 +330,7 @@ s32 EnRu_OverrideLimbdraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* po
|
|||
return false;
|
||||
}
|
||||
|
||||
void EnRu_PostLimbdraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
void EnRu_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
EnRu* this = THIS;
|
||||
Vec3f headFocus = { 800.0f, 0, 0 };
|
||||
Vec3f bodyPartPos = { 0, 0, 0 };
|
||||
|
@ -384,7 +384,7 @@ void EnRu_Draw(Actor* thisx, PlayState* play) {
|
|||
|
||||
POLY_OPA_DISP =
|
||||
SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
EnRu_OverrideLimbdraw, EnRu_PostLimbdraw, &this->actor, POLY_OPA_DISP);
|
||||
EnRu_OverrideLimbDraw, EnRu_PostLimbDraw, &this->actor, POLY_OPA_DISP);
|
||||
|
||||
Matrix_RotateXS(0, MTXMODE_NEW);
|
||||
|
||||
|
|
|
@ -189,15 +189,6 @@ static TexturePtr sEyeTextures[] = {
|
|||
gGoronEyeClosed2Tex,
|
||||
};
|
||||
|
||||
u16 EnSGoro_ShrineGoron_NextTextId(EnSGoro* this, PlayState* play);
|
||||
u16 EnSGoro_BombshopGoron_NextTextId(EnSGoro* this, PlayState* play);
|
||||
|
||||
s32 EnSGoro_FindGoronElder(EnSGoro* this, PlayState* play);
|
||||
s32 EnSGoro_FindGoronChild(EnSGoro* this, PlayState* play);
|
||||
s32 EnSGoro_CheckLullaby(EnSGoro* this, PlayState* play);
|
||||
s32 EnSGoro_CheckGKBehavior(EnSGoro* this, PlayState* play);
|
||||
|
||||
void EnSGoro_SetupAction(EnSGoro* this, PlayState* play);
|
||||
void EnSGoro_WinterShrineGoron_Idle(EnSGoro* this, PlayState* play);
|
||||
void EnSGoro_WinterShrineGoron_Talk(EnSGoro* this, PlayState* play);
|
||||
void EnSGoro_SpringShrineGoron_Idle(EnSGoro* this, PlayState* play);
|
||||
|
@ -210,23 +201,6 @@ void EnSGoro_ShopGoron_FinishTransaction(EnSGoro* this, PlayState* play);
|
|||
void EnSGoro_Sleep(EnSGoro* this, PlayState* play);
|
||||
void EnSGoro_SleepTalk(EnSGoro* this, PlayState* play);
|
||||
|
||||
s32 EnSGoro_UpdateCheerAnimation(EnSGoro* this, PlayState* play);
|
||||
s32 EnSGoro_UpdateRotationToPlayer(EnSGoro* this, PlayState* play);
|
||||
s32 EnSGoro_UpdateAttentionTarget(EnSGoro* this, PlayState* play);
|
||||
void EnSGoro_UpdateToHandtapAnimation(EnSGoro* this);
|
||||
void EnSGoro_UpdateSleepyAnimation(EnSGoro* this);
|
||||
void EnSGoro_UpdateToIdleAnimation(EnSGoro* this);
|
||||
void EnSGoro_UpdateEyes(EnSGoro* this);
|
||||
void EnSGoro_UpdateActorFocus(EnSGoro* this);
|
||||
void EnSGoro_UpdateSleeping(EnSGoro* this, PlayState* play);
|
||||
void EnSGoro_UpdateCollider(EnSGoro* this, PlayState* play);
|
||||
|
||||
s32 EnSGoro_UpdateLimb(s16 newRotZ, s16 newRotY, Vec3f* pos, Vec3s* rot, s32 stepRot, s32 overrideRot);
|
||||
s32 EnSGoro_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
|
||||
void EnSGoro_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx);
|
||||
void EnSGoro_DrawUnrolled(EnSGoro* this, PlayState* play);
|
||||
void EnSGoro_DrawRolledUp(EnSGoro* this, PlayState* play);
|
||||
|
||||
/**
|
||||
* Dialogue tree for EnSGoro when use in Goron Shrine context. Returns ID of next message to display.
|
||||
*/
|
||||
|
|
|
@ -92,10 +92,10 @@ s32 EnSth2_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
|
|||
}
|
||||
|
||||
void EnSth2_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
static Vec3f focusOffset = { 700.0f, 400.0f, 0.0f };
|
||||
static Vec3f sFocusOffset = { 700.0f, 400.0f, 0.0f };
|
||||
|
||||
if (limbIndex == STH_LIMB_HEAD) {
|
||||
Matrix_MultVec3f(&focusOffset, &thisx->focus.pos);
|
||||
Matrix_MultVec3f(&sFocusOffset, &thisx->focus.pos);
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
||||
|
|
|
@ -16,10 +16,8 @@ void EnTakaraya_Destroy(Actor* thisx, PlayState* play);
|
|||
void EnTakaraya_Update(Actor* thisx, PlayState* play);
|
||||
void EnTakaraya_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void EnTakaraya_Blink(EnTakaraya* this);
|
||||
void EnTakaraya_SetupWait(EnTakaraya* this);
|
||||
void EnTakaraya_Wait(EnTakaraya* this, PlayState* play);
|
||||
void EnTakaraya_SpawnWalls(EnTakaraya* this, PlayState* play);
|
||||
void EnTakaraya_SetupTalk(EnTakaraya* this);
|
||||
void EnTakaraya_Talk(EnTakaraya* this, PlayState* play);
|
||||
void func_80ADF2D4(EnTakaraya* this);
|
||||
|
@ -32,8 +30,6 @@ void func_80ADF6DC(EnTakaraya* this);
|
|||
void func_80ADF730(EnTakaraya* this, PlayState* play);
|
||||
void func_80ADF7B8(EnTakaraya* this);
|
||||
void func_80ADF7CC(EnTakaraya* this, PlayState* play);
|
||||
s32 EnTakaraya_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx);
|
||||
void EnTakaraya_TransformLimbDraw(PlayState* play, s32 limbIndex, Actor* thisx);
|
||||
|
||||
ActorInit En_Takaraya_InitVars = {
|
||||
/**/ ACTOR_EN_TAKARAYA,
|
||||
|
|
|
@ -490,7 +490,7 @@ void EnWiz_KillMagicProjectile(EnWizFire* this, PlayState* play) {
|
|||
|
||||
void EnWizFire_Update(Actor* thisx, PlayState* play2) {
|
||||
// These are AmbientColor, DiffuseColor1, DiffuseColor2, and fogColor
|
||||
static Color_RGB8 lightSettingsColors[] = {
|
||||
static Color_RGB8 sLightSettingsColors[] = {
|
||||
{ 100, 40, 40 }, { 180, 120, 80 }, { 155, 80, 80 }, { 125, 20, 0 }, // Fire
|
||||
{ 0, 0, 0 }, { 200, 250, 250 }, { 100, 250, 250 }, { 225, 255, 235 }, // Ice
|
||||
};
|
||||
|
@ -522,35 +522,38 @@ void EnWizFire_Update(Actor* thisx, PlayState* play2) {
|
|||
(fogNear - (s16)play->envCtx.lightSettings.fogNear) * this->blendScaleFrac;
|
||||
|
||||
play->envCtx.adjLightSettings.ambientColor[0] =
|
||||
((f32)lightSettingsColors[index].r - play->envCtx.lightSettings.ambientColor[0]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].r - play->envCtx.lightSettings.ambientColor[0]) *
|
||||
this->blendScaleFrac;
|
||||
play->envCtx.adjLightSettings.ambientColor[1] =
|
||||
((f32)lightSettingsColors[index].g - play->envCtx.lightSettings.ambientColor[1]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].g - play->envCtx.lightSettings.ambientColor[1]) *
|
||||
this->blendScaleFrac;
|
||||
play->envCtx.adjLightSettings.ambientColor[2] =
|
||||
((f32)lightSettingsColors[index].b - play->envCtx.lightSettings.ambientColor[2]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].b - play->envCtx.lightSettings.ambientColor[2]) *
|
||||
this->blendScaleFrac;
|
||||
|
||||
index++;
|
||||
play->envCtx.adjLightSettings.light1Color[0] =
|
||||
((f32)lightSettingsColors[index].r - play->envCtx.lightSettings.light1Color[0]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].r - play->envCtx.lightSettings.light1Color[0]) * this->blendScaleFrac;
|
||||
play->envCtx.adjLightSettings.light1Color[1] =
|
||||
((f32)lightSettingsColors[index].g - play->envCtx.lightSettings.light1Color[1]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].g - play->envCtx.lightSettings.light1Color[1]) * this->blendScaleFrac;
|
||||
play->envCtx.adjLightSettings.light1Color[2] =
|
||||
((f32)lightSettingsColors[index].b - play->envCtx.lightSettings.light1Color[2]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].b - play->envCtx.lightSettings.light1Color[2]) * this->blendScaleFrac;
|
||||
|
||||
index++;
|
||||
play->envCtx.adjLightSettings.light2Color[0] =
|
||||
((f32)lightSettingsColors[index].r - play->envCtx.lightSettings.light2Color[0]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].r - play->envCtx.lightSettings.light2Color[0]) * this->blendScaleFrac;
|
||||
play->envCtx.adjLightSettings.light2Color[1] =
|
||||
((f32)lightSettingsColors[index].g - play->envCtx.lightSettings.light2Color[1]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].g - play->envCtx.lightSettings.light2Color[1]) * this->blendScaleFrac;
|
||||
play->envCtx.adjLightSettings.light2Color[2] =
|
||||
((f32)lightSettingsColors[index].b - play->envCtx.lightSettings.light2Color[2]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].b - play->envCtx.lightSettings.light2Color[2]) * this->blendScaleFrac;
|
||||
|
||||
index++;
|
||||
play->envCtx.adjLightSettings.fogColor[0] =
|
||||
((f32)lightSettingsColors[index].r - play->envCtx.lightSettings.fogColor[0]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].r - play->envCtx.lightSettings.fogColor[0]) * this->blendScaleFrac;
|
||||
play->envCtx.adjLightSettings.fogColor[1] =
|
||||
((f32)lightSettingsColors[index].g - play->envCtx.lightSettings.fogColor[1]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].g - play->envCtx.lightSettings.fogColor[1]) * this->blendScaleFrac;
|
||||
play->envCtx.adjLightSettings.fogColor[2] =
|
||||
((f32)lightSettingsColors[index].b - play->envCtx.lightSettings.fogColor[2]) * this->blendScaleFrac;
|
||||
((f32)sLightSettingsColors[index].b - play->envCtx.lightSettings.fogColor[2]) * this->blendScaleFrac;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -736,7 +736,7 @@ void EnZob_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
s32 func_80BA0F64(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 EnZob_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
EnZob* this = THIS;
|
||||
|
||||
if (limbIndex == 9) {
|
||||
|
@ -746,7 +746,7 @@ s32 func_80BA0F64(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s
|
|||
return false;
|
||||
}
|
||||
|
||||
void func_80BA0FAC(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnZob_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
EnZob* this = THIS;
|
||||
|
||||
if (limbIndex == 9) {
|
||||
|
@ -766,7 +766,7 @@ void EnZob_Draw(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_80BA0F64, func_80BA0FAC, &this->actor);
|
||||
EnZob_OverrideLimbDraw, EnZob_PostLimbDraw, &this->actor);
|
||||
|
||||
if (this->unk_2F4 & 0x20) {
|
||||
POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP);
|
||||
|
|
|
@ -971,7 +971,7 @@ void EnZog_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
void EnZog_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnZog_PostLimbDrawOpa(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
static Vec3f D_80B959B8 = { 0.0f, 0.0f, 0.0f };
|
||||
EnZog* this = THIS;
|
||||
|
||||
|
@ -994,7 +994,7 @@ void EnZog_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot,
|
|||
}
|
||||
}
|
||||
|
||||
void func_80B95598(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
void EnZog_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
static Vec3f D_80B959C4 = { 0.0f, 0.0f, 0.0f };
|
||||
EnZog* this = THIS;
|
||||
|
||||
|
@ -1039,7 +1039,7 @@ void EnZog_Draw(Actor* thisx, PlayState* play) {
|
|||
POLY_XLU_DISP = &gfx[3];
|
||||
POLY_XLU_DISP =
|
||||
SkelAnime_DrawFlex(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
NULL, func_80B95598, &this->actor, POLY_XLU_DISP);
|
||||
NULL, EnZog_PostLimbDraw, &this->actor, POLY_XLU_DISP);
|
||||
} else {
|
||||
Gfx_SetupDL25_Opa(play->state.gfxCtx);
|
||||
Scene_SetRenderModeXlu(play, 0, 1);
|
||||
|
@ -1052,7 +1052,7 @@ void EnZog_Draw(Actor* thisx, PlayState* play) {
|
|||
|
||||
POLY_OPA_DISP = &gfx[3];
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
NULL, EnZog_PostLimbDraw, &this->actor);
|
||||
NULL, EnZog_PostLimbDrawOpa, &this->actor);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
|
|
@ -714,11 +714,11 @@ void EnZos_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
s32 func_80BBC4E4(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
s32 EnZos_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void func_80BBC500(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnZos_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
static Vec3f D_80BBC750 = { 0.0f, 0.0f, 0.0f };
|
||||
|
||||
if (limbIndex == EVAN_LIMB_HEAD) {
|
||||
|
@ -760,7 +760,7 @@ void EnZos_Draw(Actor* thisx, PlayState* play) {
|
|||
Matrix_Pop();
|
||||
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable, this->skelAnime.dListCount,
|
||||
func_80BBC4E4, func_80BBC500, &this->actor);
|
||||
EnZos_OverrideLimbDraw, EnZos_PostLimbDraw, &this->actor);
|
||||
|
||||
if (this->unk_2B6 & 0x40) {
|
||||
POLY_OPA_DISP = Play_SetFog(play, POLY_OPA_DISP);
|
||||
|
|
|
@ -602,14 +602,14 @@ Gfx* func_80BDDA7C(GraphicsContext* gfxCtx) {
|
|||
|
||||
Vec3f D_80BDDD4C = { 400.0f, 0.0f, 0.0f };
|
||||
|
||||
void func_80BDDAA0(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
void EnZow_PostLimbDrawOpa(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
if (limbIndex == 15) {
|
||||
Matrix_MultVec3f(&D_80BDDD4C, &thisx->focus.pos);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80BDDAE0(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
func_80BDDAA0(play, limbIndex, dList, rot, thisx);
|
||||
void EnZow_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx, Gfx** gfx) {
|
||||
EnZow_PostLimbDrawOpa(play, limbIndex, dList, rot, thisx);
|
||||
}
|
||||
|
||||
void EnZow_Draw(Actor* thisx, PlayState* play) {
|
||||
|
@ -639,11 +639,11 @@ void EnZow_Draw(Actor* thisx, PlayState* play) {
|
|||
gSPSegment(POLY_OPA_DISP++, 0x0C, func_80BDDA7C(play->state.gfxCtx));
|
||||
|
||||
SkelAnime_DrawFlexOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable,
|
||||
this->skelAnime.dListCount, NULL, func_80BDDAA0, &this->actor);
|
||||
this->skelAnime.dListCount, NULL, EnZow_PostLimbDrawOpa, &this->actor);
|
||||
} else {
|
||||
gSPSegment(POLY_XLU_DISP++, 0x08, Lib_SegmentedToVirtual(sp54[this->unk_2C4]));
|
||||
|
||||
func_800BDAA0(play, &this->skelAnime, NULL, func_80BDDAE0, &this->actor, this->unk_2CE);
|
||||
func_800BDAA0(play, &this->skelAnime, NULL, EnZow_PostLimbDraw, &this->actor, this->unk_2CE);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(play->state.gfxCtx);
|
||||
|
|
|
@ -316,7 +316,7 @@ void ObjDora_Update(Actor* thisx, PlayState* play) {
|
|||
}
|
||||
|
||||
void ObjDora_Draw(Actor* thisx, PlayState* play) {
|
||||
static Vec3f position = { 0.0f, -61.5f, 0.0f };
|
||||
static Vec3f sPos = { 0.0f, -61.5f, 0.0f };
|
||||
ObjDora* this = THIS;
|
||||
f32 gongForceX;
|
||||
|
||||
|
@ -335,9 +335,9 @@ void ObjDora_Draw(Actor* thisx, PlayState* play) {
|
|||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, &gDoraChainDL);
|
||||
|
||||
Matrix_Translate(position.x, position.y + gongForceX, position.z + gongForceX, MTXMODE_APPLY);
|
||||
Matrix_Translate(sPos.x, sPos.y + gongForceX, sPos.z + gongForceX, MTXMODE_APPLY);
|
||||
Matrix_RotateXS(this->gongRotation.z - this->gongRotation.x, MTXMODE_APPLY);
|
||||
Matrix_Translate(-position.x, -position.y, -position.z, MTXMODE_APPLY);
|
||||
Matrix_Translate(-sPos.x, -sPos.y, -sPos.z, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, &gDoraGongDL);
|
||||
|
|
|
@ -20,8 +20,8 @@ void ObjHgdoor_SetupIdle(ObjHgdoor* this);
|
|||
void ObjHgdoor_Idle(ObjHgdoor* this, PlayState* play);
|
||||
void ObjHgdoor_SetupCutscene(ObjHgdoor* this);
|
||||
void ObjHgdoor_PlayCutscene(ObjHgdoor* this, PlayState* play);
|
||||
void ObjHgdoor_SetupCsAction(ObjHgdoor* this);
|
||||
void ObjHgdoor_HandleCsAction(ObjHgdoor* this, PlayState* play);
|
||||
void ObjHgdoor_SetupHandleCutscene(ObjHgdoor* this);
|
||||
void ObjHgdoor_HandleCutscene(ObjHgdoor* this, PlayState* play);
|
||||
void ObjHgdoor_SetupStopCs(ObjHgdoor* this);
|
||||
void ObjHgdoor_StopCs(ObjHgdoor* this, PlayState* play);
|
||||
s32 ObjHgdoor_Rotate(ObjHgdoor* this, PlayState* play);
|
||||
|
@ -110,8 +110,8 @@ void ObjHgdoor_SetupCutscene(ObjHgdoor* this) {
|
|||
void ObjHgdoor_PlayCutscene(ObjHgdoor* this, PlayState* play) {
|
||||
if (CutsceneManager_IsNext(this->csId)) {
|
||||
CutsceneManager_Start(this->csId, &this->dyna.actor);
|
||||
ObjHgdoor_SetupCsAction(this);
|
||||
ObjHgdoor_SetupCsAction((ObjHgdoor*)this->dyna.actor.child);
|
||||
ObjHgdoor_SetupHandleCutscene(this);
|
||||
ObjHgdoor_SetupHandleCutscene((ObjHgdoor*)this->dyna.actor.child);
|
||||
} else {
|
||||
if (CutsceneManager_GetCurrentCsId() == CS_ID_GLOBAL_TALK) {
|
||||
CutsceneManager_Stop(CS_ID_GLOBAL_TALK);
|
||||
|
@ -120,12 +120,12 @@ void ObjHgdoor_PlayCutscene(ObjHgdoor* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
void ObjHgdoor_SetupCsAction(ObjHgdoor* this) {
|
||||
void ObjHgdoor_SetupHandleCutscene(ObjHgdoor* this) {
|
||||
this->cueId = 99;
|
||||
this->actionFunc = ObjHgdoor_HandleCsAction;
|
||||
this->actionFunc = ObjHgdoor_HandleCutscene;
|
||||
}
|
||||
|
||||
void ObjHgdoor_HandleCsAction(ObjHgdoor* this, PlayState* play) {
|
||||
void ObjHgdoor_HandleCutscene(ObjHgdoor* this, PlayState* play) {
|
||||
s32 cueChannel;
|
||||
|
||||
if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_483)) {
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
* Description: Player
|
||||
*/
|
||||
|
||||
#include "prevent_bss_reordering.h"
|
||||
#include "global.h"
|
||||
#include "z64horse.h"
|
||||
#include "z64malloc.h"
|
||||
|
|
|
@ -22,7 +22,7 @@ EffectSsInit Effect_Ss_G_Splash_InitVars = {
|
|||
EffectSsGSplash_Init,
|
||||
};
|
||||
|
||||
static TexturePtr waterSplashTextures[] = {
|
||||
static TexturePtr sWaterSplashTextures[] = {
|
||||
gEffWaterSplash1Tex, gEffWaterSplash2Tex, gEffWaterSplash3Tex, gEffWaterSplash4Tex,
|
||||
gEffWaterSplash5Tex, gEffWaterSplash6Tex, gEffWaterSplash7Tex, gEffWaterSplash8Tex,
|
||||
};
|
||||
|
@ -105,7 +105,7 @@ void EffectSsGSplash_Draw(PlayState* play, u32 index, EffectSs* this) {
|
|||
if (texIndex > 7) {
|
||||
texIndex = 7;
|
||||
}
|
||||
EffectSs_DrawGEffect(play, this, waterSplashTextures[texIndex]);
|
||||
EffectSs_DrawGEffect(play, this, sWaterSplashTextures[texIndex]);
|
||||
break;
|
||||
|
||||
case EFFSSGSPLASH_TYPE_1:
|
||||
|
@ -113,7 +113,7 @@ void EffectSsGSplash_Draw(PlayState* play, u32 index, EffectSs* this) {
|
|||
if (texIndex > 7) {
|
||||
texIndex = 7;
|
||||
}
|
||||
EffectSs_DrawGEffect(play, this, waterSplashTextures[texIndex]);
|
||||
EffectSs_DrawGEffect(play, this, sWaterSplashTextures[texIndex]);
|
||||
break;
|
||||
|
||||
case EFFSSGSPLASH_TYPE_2:
|
||||
|
@ -121,7 +121,7 @@ void EffectSsGSplash_Draw(PlayState* play, u32 index, EffectSs* this) {
|
|||
if (texIndex > 7) {
|
||||
texIndex = 7;
|
||||
}
|
||||
EffectSs_DrawGEffect(play, this, waterSplashTextures[texIndex]);
|
||||
EffectSs_DrawGEffect(play, this, sWaterSplashTextures[texIndex]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5599,8 +5599,8 @@
|
|||
0x8089D42C:("func_8089D42C",),
|
||||
0x8089D60C:("func_8089D60C",),
|
||||
0x8089D960:("EnDinofos_Update",),
|
||||
0x8089DC4C:("func_8089DC4C",),
|
||||
0x8089DC84:("func_8089DC84",),
|
||||
0x8089DC4C:("EnDinofos_OverrideLimbDraw",),
|
||||
0x8089DC84:("EnDinofos_PostLimbDraw",),
|
||||
0x8089DF54:("EnDinofos_Draw",),
|
||||
0x8089E8E0:("EnHata_Init",),
|
||||
0x8089E9DC:("EnHata_Destroy",),
|
||||
|
@ -7981,7 +7981,7 @@
|
|||
0x8096A38C:("func_8096A38C",),
|
||||
0x8096A6F4:("func_8096A6F4",),
|
||||
0x8096A8A4:("EnJs_Update",),
|
||||
0x8096A9F4:("func_8096A9F4",),
|
||||
0x8096A9F4:("EnJs_PostLimbDraw",),
|
||||
0x8096AB20:("EnJs_Draw",),
|
||||
0x8096B0A0:("EnOkarinaEffect_SetupAction",),
|
||||
0x8096B0AC:("EnOkarinaEffect_Destroy",),
|
||||
|
@ -10263,8 +10263,8 @@
|
|||
0x80A38E04:("EnRu_Init",),
|
||||
0x80A38F10:("EnRu_Destroy",),
|
||||
0x80A38F3C:("EnRu_Update",),
|
||||
0x80A38FB4:("EnRu_OverrideLimbdraw",),
|
||||
0x80A390F8:("EnRu_PostLimbdraw",),
|
||||
0x80A38FB4:("EnRu_OverrideLimbDraw",),
|
||||
0x80A390F8:("EnRu_PostLimbDraw",),
|
||||
0x80A39204:("EnRu_Draw",),
|
||||
0x80A396B0:("EnElfgrp_SetCutscene",),
|
||||
0x80A3970C:("EnElfgrp_Init",),
|
||||
|
@ -10582,11 +10582,11 @@
|
|||
0x80A518EC:("EnDnk_Init",),
|
||||
0x80A519A8:("EnDnk_Destroy",),
|
||||
0x80A519D4:("EnDnk_Update",),
|
||||
0x80A51A78:("func_80A51A78",),
|
||||
0x80A51AA4:("func_80A51AA4",),
|
||||
0x80A51A78:("EnDnk_OverrideLimbDraw2",),
|
||||
0x80A51AA4:("EnDnk_PostLimbDraw2",),
|
||||
0x80A51CB8:("func_80A51CB8",),
|
||||
0x80A51D78:("func_80A51D78",),
|
||||
0x80A51DA4:("func_80A51DA4",),
|
||||
0x80A51D78:("EnDnk_OverrideLimbDraw1",),
|
||||
0x80A51DA4:("EnDnk_PostLimbDraw1",),
|
||||
0x80A51FC0:("func_80A51FC0",),
|
||||
0x80A52018:("func_80A52018",),
|
||||
0x80A52074:("func_80A52074",),
|
||||
|
@ -11030,9 +11030,9 @@
|
|||
0x80A75310:("func_80A75310",),
|
||||
0x80A755D8:("func_80A755D8",),
|
||||
0x80A756A8:("EnPr2_Update",),
|
||||
0x80A758E8:("func_80A758E8",),
|
||||
0x80A75950:("func_80A75950",),
|
||||
0x80A759D8:("func_80A759D8",),
|
||||
0x80A758E8:("EnPr2_OverrideLimbDrawOpa",),
|
||||
0x80A75950:("EnPr2_PostLimbDrawOpa",),
|
||||
0x80A759D8:("EnPr2_OverrideLimbDraw",),
|
||||
0x80A75A40:("EnPr2_Draw",),
|
||||
0x80A75DC0:("EnPrz_Init",),
|
||||
0x80A75F08:("EnPrz_Destroy",),
|
||||
|
@ -11049,8 +11049,8 @@
|
|||
0x80A76A1C:("func_80A76A1C",),
|
||||
0x80A76B14:("func_80A76B14",),
|
||||
0x80A76D48:("EnPrz_Update",),
|
||||
0x80A76F70:("func_80A76F70",),
|
||||
0x80A76FCC:("func_80A76FCC",),
|
||||
0x80A76F70:("EnPrz_OverrideLimbDraw",),
|
||||
0x80A76FCC:("EnPrz_PostLimbDraw",),
|
||||
0x80A77040:("EnPrz_Draw",),
|
||||
0x80A773C0:("EnJso2_Init",),
|
||||
0x80A77664:("EnJso2_Destroy",),
|
||||
|
@ -11403,8 +11403,8 @@
|
|||
0x80A98414:("func_80A98414",),
|
||||
0x80A984CC:("EnAz_Update",),
|
||||
0x80A98734:("EnAz_Draw",),
|
||||
0x80A98DA4:("func_80A98DA4",),
|
||||
0x80A98E48:("func_80A98E48",),
|
||||
0x80A98DA4:("EnAz_OverrideLimbDraw",),
|
||||
0x80A98E48:("EnAz_PostLimbDraw",),
|
||||
0x80A98EFC:("func_80A98EFC",),
|
||||
0x80A98F94:("func_80A98F94",),
|
||||
0x80A99EA0:("EnEstone_Init",),
|
||||
|
@ -11502,9 +11502,9 @@
|
|||
0x80AA2720:("DmStk_ClockTower_IdleWithOcarina",),
|
||||
0x80AA27EC:("DmStk_ClockTower_Idle",),
|
||||
0x80AA2884:("DmStk_Update",),
|
||||
0x80AA2B14:("DmStk_OverrideLimbDraw",),
|
||||
0x80AA2BC0:("DmStk_PostLimbDraw2",),
|
||||
0x80AA33A4:("DmStk_PostLimbDraw",),
|
||||
0x80AA2B14:("DmStk_OverrideLimbDrawOpa",),
|
||||
0x80AA2BC0:("DmStk_PostLimbDraw",),
|
||||
0x80AA33A4:("DmStk_PostLimbDrawOpa",),
|
||||
0x80AA33CC:("DmStk_Draw",),
|
||||
0x80AA5580:("DmChar00_ChangeAnim",),
|
||||
0x80AA561C:("func_80AA561C",),
|
||||
|
@ -12147,7 +12147,7 @@
|
|||
0x80AD144C:("EnOsn_ChooseAction",),
|
||||
0x80AD14C8:("EnOsn_Idle",),
|
||||
0x80AD1634:("EnOsn_StartCutscene",),
|
||||
0x80AD16A8:("EnOsn_HandleCsAction",),
|
||||
0x80AD16A8:("EnOsn_HandleCutscene",),
|
||||
0x80AD19A0:("EnOsn_Talk",),
|
||||
0x80AD1A4C:("EnOsn_DoNothing",),
|
||||
0x80AD1A5C:("EnOsn_Init",),
|
||||
|
@ -13601,8 +13601,8 @@
|
|||
0x80B3B958:("EnGg2_Init",),
|
||||
0x80B3BBE0:("EnGg2_Destroy",),
|
||||
0x80B3BBF0:("EnGg2_Update",),
|
||||
0x80B3BD44:("func_80B3BD44",),
|
||||
0x80B3BDC0:("func_80B3BDC0",),
|
||||
0x80B3BD44:("EnGg2_OverrideLimbDraw",),
|
||||
0x80B3BDC0:("EnGg2_PostLimbDraw",),
|
||||
0x80B3BE00:("EnGg2_Draw",),
|
||||
0x80B3C260:("func_80B3C260",),
|
||||
0x80B3C29C:("func_80B3C29C",),
|
||||
|
@ -14081,7 +14081,7 @@
|
|||
0x80B5B3E4:("EnOt_Init",),
|
||||
0x80B5BA64:("EnOt_Destroy",),
|
||||
0x80B5BAAC:("func_80B5BAAC",),
|
||||
0x80B5BB38:("func_80B5BB38",),
|
||||
0x80B5BB38:("EnOt_LerpColor",),
|
||||
0x80B5BDA8:("func_80B5BDA8",),
|
||||
0x80B5BE04:("func_80B5BE04",),
|
||||
0x80B5BE88:("func_80B5BE88",),
|
||||
|
@ -14870,8 +14870,8 @@
|
|||
0x80B95128:("func_80B95128",),
|
||||
0x80B95240:("func_80B95240",),
|
||||
0x80B95260:("EnZog_Update",),
|
||||
0x80B954C4:("EnZog_PostLimbDraw",),
|
||||
0x80B95598:("func_80B95598",),
|
||||
0x80B954C4:("EnZog_PostLimbDrawOpa",),
|
||||
0x80B95598:("EnZog_PostLimbDraw",),
|
||||
0x80B95668:("EnZog_Draw",),
|
||||
0x80B95E20:("func_80B95E20",),
|
||||
0x80B95F10:("ObjRotlift_Init",),
|
||||
|
@ -15039,8 +15039,8 @@
|
|||
0x80BA0C14:("func_80BA0C14",),
|
||||
0x80BA0CF4:("func_80BA0CF4",),
|
||||
0x80BA0D64:("EnZob_Update",),
|
||||
0x80BA0F64:("func_80BA0F64",),
|
||||
0x80BA0FAC:("func_80BA0FAC",),
|
||||
0x80BA0F64:("EnZob_OverrideLimbDraw",),
|
||||
0x80BA0FAC:("EnZob_PostLimbDraw",),
|
||||
0x80BA0FEC:("EnZob_Draw",),
|
||||
0x80BA15A0:("func_80BA15A0",),
|
||||
0x80BA165C:("func_80BA165C",),
|
||||
|
@ -15411,8 +15411,8 @@
|
|||
0x80BBC298:("func_80BBC298",),
|
||||
0x80BBC37C:("func_80BBC37C",),
|
||||
0x80BBC3F0:("EnZos_Update",),
|
||||
0x80BBC4E4:("func_80BBC4E4",),
|
||||
0x80BBC500:("func_80BBC500",),
|
||||
0x80BBC4E4:("EnZos_OverrideLimbDraw",),
|
||||
0x80BBC500:("EnZos_PostLimbDraw",),
|
||||
0x80BBC540:("EnZos_Draw",),
|
||||
0x80BBCA80:("EnSGoro_ShrineGoron_NextTextId",),
|
||||
0x80BBD348:("EnSGoro_BombshopGoron_NextTextId",),
|
||||
|
@ -15685,8 +15685,8 @@
|
|||
0x80BCF7D8:("EnHg_UpdateCollision",),
|
||||
0x80BCF88C:("EnHg_SetupCutscene",),
|
||||
0x80BCF8A0:("EnHg_PlayCutscene",),
|
||||
0x80BCF93C:("EnHg_SetupCsAction",),
|
||||
0x80BCF95C:("EnHg_HandleCsAction",),
|
||||
0x80BCF93C:("EnHg_SetupHandleCutscene",),
|
||||
0x80BCF95C:("EnHg_HandleCutscene",),
|
||||
0x80BCFC0C:("EnHg_WaitForPlayerAction",),
|
||||
0x80BCFDC4:("EnHg_Update",),
|
||||
0x80BCFE54:("EnHg_OverrideLimbDraw",),
|
||||
|
@ -15703,7 +15703,7 @@
|
|||
0x80BD064C:("EnHgo_SetupDialogueHandler",),
|
||||
0x80BD0660:("EnHgo_DefaultDialogueHandler",),
|
||||
0x80BD06FC:("EnHgo_HandlePlayerChoice",),
|
||||
0x80BD0898:("EnHgo_HandleCsAction",),
|
||||
0x80BD0898:("EnHgo_HandleCutscene",),
|
||||
0x80BD0B8C:("EnHgo_UpdateModel",),
|
||||
0x80BD0C30:("EnHgo_Update",),
|
||||
0x80BD0CF0:("EnHgo_OverrideLimbDraw",),
|
||||
|
@ -15769,8 +15769,8 @@
|
|||
0x80BD41FC:("ObjHgdoor_Idle",),
|
||||
0x80BD42AC:("ObjHgdoor_SetupCutscene",),
|
||||
0x80BD42C0:("ObjHgdoor_PlayCutscene",),
|
||||
0x80BD433C:("ObjHgdoor_SetupCsAction",),
|
||||
0x80BD4358:("ObjHgdoor_HandleCsAction",),
|
||||
0x80BD433C:("ObjHgdoor_SetupHandleCutscene",),
|
||||
0x80BD4358:("ObjHgdoor_HandleCutscene",),
|
||||
0x80BD4460:("ObjHgdoor_SetupStopCs",),
|
||||
0x80BD4478:("ObjHgdoor_StopCs",),
|
||||
0x80BD44D0:("ObjHgdoor_Rotate",),
|
||||
|
@ -15991,8 +15991,8 @@
|
|||
0x80BDD79C:("func_80BDD79C",),
|
||||
0x80BDD830:("EnZow_Update",),
|
||||
0x80BDDA7C:("func_80BDDA7C",),
|
||||
0x80BDDAA0:("func_80BDDAA0",),
|
||||
0x80BDDAE0:("func_80BDDAE0",),
|
||||
0x80BDDAA0:("EnZow_PostLimbDrawOpa",),
|
||||
0x80BDDAE0:("EnZow_PostLimbDraw",),
|
||||
0x80BDDB04:("EnZow_Draw",),
|
||||
0x80BDDFE0:("EnTalk_Init",),
|
||||
0x80BDE048:("EnTalk_Destroy",),
|
||||
|
@ -16348,12 +16348,12 @@
|
|||
0x80BF5340:("EnRg_Destroy",),
|
||||
0x80BF5390:("EnRg_Update",),
|
||||
0x80BF547C:("func_80BF547C",),
|
||||
0x80BF5588:("func_80BF5588",),
|
||||
0x80BF5588:("EnRg_OverrideLimbDraw",),
|
||||
0x80BF5670:("EnRg_Draw",),
|
||||
0x80BF5C20:("EnOsk_Init",),
|
||||
0x80BF5DF0:("EnOsk_Destroy",),
|
||||
0x80BF5E00:("func_80BF5E00",),
|
||||
0x80BF5E68:("func_80BF5E68",),
|
||||
0x80BF5E00:("EnOsk_ChangeAnimLoop",),
|
||||
0x80BF5E68:("EnOsk_ChangeAnimOnce",),
|
||||
0x80BF5EBC:("func_80BF5EBC",),
|
||||
0x80BF5F60:("func_80BF5F60",),
|
||||
0x80BF5F70:("func_80BF5F70",),
|
||||
|
@ -16366,7 +16366,7 @@
|
|||
0x80BF68E0:("func_80BF68E0",),
|
||||
0x80BF6A20:("func_80BF6A20",),
|
||||
0x80BF6C30:("EnOsk_Update",),
|
||||
0x80BF6C54:("func_80BF6C54",),
|
||||
0x80BF6C54:("EnOsk_PostLimbDraw",),
|
||||
0x80BF6C94:("EnOsk_Draw",),
|
||||
0x80BF74E0:("EnSth2_Init",),
|
||||
0x80BF7590:("EnSth2_Destroy",),
|
||||
|
@ -16542,7 +16542,7 @@
|
|||
0x80C050B8:("func_80C050B8",),
|
||||
0x80C0520C:("func_80C0520C",),
|
||||
0x80C053F8:("EnBombers2_Update",),
|
||||
0x80C056D4:("func_80C056D4",),
|
||||
0x80C056D4:("EnBombers2_OverrideLimbDraw",),
|
||||
0x80C05758:("EnBombers2_Draw",),
|
||||
0x80C05A70:("EnBombal_Init",),
|
||||
0x80C05AF8:("EnBombal_Destroy",),
|
||||
|
|
|
@ -15998,9 +15998,9 @@
|
|||
0x80BF5A44:("D_80BF5A44","f32","",0x4),
|
||||
0x80BF5C10:("D_80BF5C10","UNK_TYPE1","",0x1),
|
||||
0x80BF6F80:("En_Osk_InitVars","UNK_TYPE1","",0x1),
|
||||
0x80BF6FA0:("D_80BF6FA0","UNK_PTR","",0x4),
|
||||
0x80BF6FB4:("D_80BF6FB4","UNK_TYPE1","",0x1),
|
||||
0x80BF6FE4:("D_80BF6FE4","UNK_PTR","",0x4),
|
||||
0x80BF6FA0:("sAnimationsType0","UNK_PTR","",0x4),
|
||||
0x80BF6FB4:("sAnimationsType1","UNK_TYPE1","",0x1),
|
||||
0x80BF6FE4:("sAnimationsType2","UNK_PTR","",0x4),
|
||||
0x80BF7018:("D_80BF7018","UNK_TYPE1","",0x1),
|
||||
0x80BF7024:("D_80BF7024","UNK_TYPE1","",0x1),
|
||||
0x80BF7030:("jtbl_80BF7030","UNK_PTR","",0x4),
|
||||
|
|
Loading…
Reference in New Issue