Document object_dekunuts (and minor cleanup of object_dnk) (#803)

* Name all animations

* Skeleton, limbs, and limb display lists

* Remaning dlists

* Limb enum

* Name all textures

* Minor cleanup on object_dnk

* hair -> headdress
This commit is contained in:
Tom Overton 2022-04-21 18:11:33 -07:00 committed by GitHub
parent 232b901ccf
commit 25f00ef995
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 126 additions and 112 deletions

View File

@ -1,42 +1,55 @@
<Root>
<!-- Assets for Deku Scrubs and their flowers -->
<File Name="object_dekunuts" Segment="6">
<Animation Name="object_dekunuts_Anim_000168" Offset="0x168" />
<DList Name="object_dekunuts_DL_000A00" Offset="0xA00" />
<DList Name="object_dekunuts_DL_000AA8" Offset="0xAA8" />
<DList Name="object_dekunuts_DL_000B40" Offset="0xB40" />
<DList Name="object_dekunuts_DL_000BE8" Offset="0xBE8" />
<DList Name="object_dekunuts_DL_000C80" Offset="0xC80" />
<DList Name="object_dekunuts_DL_000D90" Offset="0xD90" />
<DList Name="object_dekunuts_DL_000E30" Offset="0xE30" />
<DList Name="object_dekunuts_DL_000F20" Offset="0xF20" />
<DList Name="object_dekunuts_DL_001050" Offset="0x1050" />
<Texture Name="object_dekunuts_Tex_0010F0" OutName="tex_0010F0" Format="rgba16" Width="8" Height="8" Offset="0x10F0" />
<Texture Name="object_dekunuts_Tex_001170" OutName="tex_001170" Format="rgba16" Width="8" Height="8" Offset="0x1170" />
<Texture Name="object_dekunuts_Tex_0011F0" OutName="tex_0011F0" Format="rgba16" Width="32" Height="32" Offset="0x11F0" />
<Texture Name="object_dekunuts_Tex_0019F0" OutName="tex_0019F0" Format="rgba16" Width="8" Height="8" Offset="0x19F0" />
<Texture Name="object_dekunuts_Tex_001A70" OutName="tex_001A70" Format="rgba16" Width="16" Height="16" Offset="0x1A70" />
<DList Name="object_dekunuts_DL_001E50" Offset="0x1E50" />
<DList Name="object_dekunuts_DL_001F50" Offset="0x1F50" />
<Texture Name="object_dekunuts_Tex_001FD8" OutName="tex_001FD8" Format="rgba16" Width="16" Height="32" Offset="0x1FD8" />
<Limb Name="object_dekunuts_Standardlimb_0023D8" Type="Standard" EnumName="OBJECT_DEKUNUTS_LIMB_01" Offset="0x23D8" />
<Limb Name="object_dekunuts_Standardlimb_0023E4" Type="Standard" EnumName="OBJECT_DEKUNUTS_LIMB_02" Offset="0x23E4" />
<Limb Name="object_dekunuts_Standardlimb_0023F0" Type="Standard" EnumName="OBJECT_DEKUNUTS_LIMB_03" Offset="0x23F0" />
<Limb Name="object_dekunuts_Standardlimb_0023FC" Type="Standard" EnumName="OBJECT_DEKUNUTS_LIMB_04" Offset="0x23FC" />
<Limb Name="object_dekunuts_Standardlimb_002408" Type="Standard" EnumName="OBJECT_DEKUNUTS_LIMB_05" Offset="0x2408" />
<Limb Name="object_dekunuts_Standardlimb_002414" Type="Standard" EnumName="OBJECT_DEKUNUTS_LIMB_06" Offset="0x2414" />
<Limb Name="object_dekunuts_Standardlimb_002420" Type="Standard" EnumName="OBJECT_DEKUNUTS_LIMB_07" Offset="0x2420" />
<Limb Name="object_dekunuts_Standardlimb_00242C" Type="Standard" EnumName="OBJECT_DEKUNUTS_LIMB_08" Offset="0x242C" />
<Limb Name="object_dekunuts_Standardlimb_002438" Type="Standard" EnumName="OBJECT_DEKUNUTS_LIMB_09" Offset="0x2438" />
<Skeleton Name="object_dekunuts_Skel_002468" Type="Normal" LimbType="Standard" LimbNone="OBJECT_DEKUNUTS_LIMB_NONE" LimbMax="OBJECT_DEKUNUTS_LIMB_MAX" EnumName="object_dekunuts_Limbs" Offset="0x2468" />
<Animation Name="object_dekunuts_Anim_00259C" Offset="0x259C" />
<Animation Name="object_dekunuts_Anim_002950" Offset="0x2950" />
<Animation Name="object_dekunuts_Anim_002A5C" Offset="0x2A5C" />
<Animation Name="object_dekunuts_Anim_002BD4" Offset="0x2BD4" />
<Animation Name="object_dekunuts_Anim_002DD4" Offset="0x2DD4" />
<Animation Name="object_dekunuts_Anim_002FA4" Offset="0x2FA4" />
<Animation Name="object_dekunuts_Anim_003180" Offset="0x3180" />
<Animation Name="object_dekunuts_Anim_00326C" Offset="0x326C" />
<Animation Name="object_dekunuts_Anim_0033E4" Offset="0x33E4" />
<Animation Name="object_dekunuts_Anim_003780" Offset="0x3780" />
<Animation Name="gDekuScrubSpitAnim" Offset="0x168" /> <!-- Original name is "dn_atack" -->
<!-- Deku Scrub Limb DisplayLists -->
<DList Name="gDekuScrubRightFootDL" Offset="0xA00" />
<DList Name="gDekuScrubRightLegDL" Offset="0xAA8" />
<DList Name="gDekuScrubLeftFootDL" Offset="0xB40" />
<DList Name="gDekuScrubLeftLegDL" Offset="0xBE8" />
<DList Name="gDekuScrubSnoutDL" Offset="0xC80" />
<DList Name="gDekuScrubCrestDL" Offset="0xD90" />
<DList Name="gDekuScrubHeaddressDL" Offset="0xE30" />
<DList Name="gDekuScrubHeadDL" Offset="0xF20" />
<DList Name="gDekuScrubBodyDL" Offset="0x1050" />
<!-- Deku Scrub Textures -->
<Texture Name="gDekuScrubSnoutTex" OutName="deku_scrub_snout" Format="rgba16" Width="8" Height="8" Offset="0x10F0" />
<Texture Name="gDekuScrubMouthTex" OutName="deku_scrub_mouth" Format="rgba16" Width="8" Height="8" Offset="0x1170" />
<Texture Name="gDekuScrubLeafTex" OutName="deku_scrub_leaf" Format="rgba16" Width="32" Height="32" Offset="0x11F0" />
<Texture Name="gDekuScrubEyeTex" OutName="deku_scrub_eye" Format="rgba16" Width="8" Height="8" Offset="0x19F0" />
<Texture Name="gDekuScrubSkinTex" OutName="deku_scrub_skin" Format="rgba16" Width="16" Height="16" Offset="0x1A70" />
<!-- Deku Scrub Flower and Flower Fragment DisplayLists and Textures -->
<DList Name="gDekuScrubFlowerDL" Offset="0x1E50" />
<DList Name="gDekuScrubFlowerFragmentDL" Offset="0x1F50" />
<Texture Name="gDekuScrubFlowerFragmentTex" OutName="deku_scrub_flower_fragment" Format="rgba16" Width="16" Height="32" Offset="0x1FD8" />
<!-- Deku Scrub Limbs -->
<Limb Name="gDekuScrubBodyLimb" Type="Standard" EnumName="DEKU_SCRUB_LIMB_BODY" Offset="0x23D8" />
<Limb Name="gDekuScrubHeadLimb" Type="Standard" EnumName="DEKU_SCRUB_LIMB_HEAD" Offset="0x23E4" />
<Limb Name="gDekuScrubHeaddressLimb" Type="Standard" EnumName="DEKU_SCRUB_LIMB_HEADDRESS" Offset="0x23F0" />
<Limb Name="gDekuScrubCrestLimb" Type="Standard" EnumName="DEKU_SCRUB_LIMB_CREST" Offset="0x23FC" />
<Limb Name="gDekuScrubSnoutLimb" Type="Standard" EnumName="DEKU_SCRUB_LIMB_SNOUT" Offset="0x2408" />
<Limb Name="gDekuScrubLeftLegLimb" Type="Standard" EnumName="DEKU_SCRUB_LIMB_LEFT_LEG" Offset="0x2414" />
<Limb Name="gDekuScrubLeftFootLimb" Type="Standard" EnumName="DEKU_SCRUB_LIMB_LEFT_FOOT" Offset="0x2420" />
<Limb Name="gDekuScrubRightLegLimb" Type="Standard" EnumName="DEKU_SCRUB_LIMB_RIGHT_LEG" Offset="0x242C" />
<Limb Name="gDekuScrubRightFootLimb" Type="Standard" EnumName="DEKU_SCRUB_LIMB_RIGHT_FOOT" Offset="0x2438" />
<!-- Deku Scrub Skeleton -->
<Skeleton Name="gDekuScrubSkel" Type="Normal" LimbType="Standard" LimbNone="DEKU_SCRUB_LIMB_NONE" LimbMax="DEKU_SCRUB_LIMB_MAX" EnumName="DekuScrubLimbs" Offset="0x2468" />
<!-- Deku Scrub Animations -->
<Animation Name="gDekuScrubDamageAnim" Offset="0x259C" /> <!-- Original name is "dn_damage" -->
<Animation Name="gDekuScrubStandingIdleAnim" Offset="0x2950" /> <!-- Original name is "dn_demowait" -->
<Animation Name="gDekuScrubBurrowAnim" Offset="0x2A5C" /> <!-- Original name is "dn_dig" -->
<Animation Name="gDekuScrubDieAnim" Offset="0x2BD4" /> <!-- Original name is "dn_down" -->
<Animation Name="gDekuScrubUnburrowAnim" Offset="0x2DD4" /> <!-- Original name is "dn_jump" -->
<Animation Name="gDekuScrubLookAroundAnim" Offset="0x2FA4" /> <!-- Original name is "dn_lookaround" -->
<Animation Name="gDekuScrubUpAnim" Offset="0x3180" /> <!-- Original name is "dn_start" -->
<Animation Name="gDekuScrubIdleAnim" Offset="0x326C" /> <!-- Original name is "dn_wait" -->
<Animation Name="gDekuScrubPantingAnim" Offset="0x33E4" /> <!-- Original name is "dn_wait02" -->
<Animation Name="gDekuScrubRunAnim" Offset="0x3780" /> <!-- Original name is "dn_walk" -->
</File>
</Root>

View File

@ -1,4 +1,5 @@
<Root>
<!-- Assets for Deku Palace Guards -->
<File Name="object_dnk" Segment="6">
<Animation Name="gDekuPalaceGuardAttackAnim" Offset="0x31C" /> <!-- Original named: dnk_attack -->
<Animation Name="gDekuPalaceGuardDigAnim" Offset="0x430" /> <!-- Original named: dnk_dig -->
@ -33,17 +34,17 @@
<DList Name="gDekuPalaceGuardSnoutDL" Offset="0x2410" />
<DList Name="gDekuPalaceGuardSnout2DL" Offset="0x2510" />
<DList Name="gDekuPalaceGuardFlower" Offset="0x2700" />
<Limb Name="gDekuPalaceGuardTorsoLimb" Type="Standard" EnumName="OBJECT_DNK_LIMB_TORSO" Offset="0x27A8" />
<Limb Name="gDekuPalaceGuardHeadLimb" Type="Standard" EnumName="OBJECT_DNK_LIMB_HEAD" Offset="0x27B4" />
<Limb Name="gDekuPalaceGuardLeftLeafLimb" Type="Standard" EnumName="OBJECT_DNK_LIMB_LEFT_LEAF" Offset="0x27C0" />
<Limb Name="gDekuPalaceGuardRightLeafLimb" Type="Standard" EnumName="OBJECT_DNK_LIMB_RIGHT_LEAF" Offset="0x27CC" />
<Limb Name="gDekuPalaceGuardCenterLeafLimb" Type="Standard" EnumName="OBJECT_DNK_LIMB_CENTER_LEAF" Offset="0x27D8" />
<Limb Name="gDekuPalaceGuardRearLeafLimb" Type="Standard" EnumName="OBJECT_DNK_LIMB_REAR_LEAF" Offset="0x27E4" />
<Limb Name="gDekuPalaceGuardSnoutLimb" Type="Standard" EnumName="OBJECT_DNK_LIMB_SNOUT" Offset="0x27F0" />
<Limb Name="gDekuPalaceGuardEyesLimb" Type="Standard" EnumName="OBJECT_DNK_LIMB_EYES" Offset="0x27FC" />
<Limb Name="gDekuPalaceGuardLeftFootLimb" Type="Standard" EnumName="OBJECT_DNK_LIMB_LEFT_FOOT" Offset="0x2808" />
<Limb Name="gDekuPalaceGuardRightFootLimb" Type="Standard" EnumName="OBJECT_DNK_LIMB_RIGHT_FOOT" Offset="0x2814" />
<Skeleton Name="gDekuPalaceGuardSkel" Type="Normal" LimbType="Standard" LimbNone="OBJECT_DNK_LIMB_NONE" LimbMax="OBJECT_DNK_LIMB_MAX" EnumName="ObjectDnkLimbs" Offset="0x2848" />
<Limb Name="gDekuPalaceGuardTorsoLimb" Type="Standard" EnumName="DEKU_PALACE_GUARD_LIMB_TORSO" Offset="0x27A8" />
<Limb Name="gDekuPalaceGuardHeadLimb" Type="Standard" EnumName="DEKU_PALACE_GUARD_LIMB_HEAD" Offset="0x27B4" />
<Limb Name="gDekuPalaceGuardLeftLeafLimb" Type="Standard" EnumName="DEKU_PALACE_GUARD_LIMB_LEFT_LEAF" Offset="0x27C0" />
<Limb Name="gDekuPalaceGuardRightLeafLimb" Type="Standard" EnumName="DEKU_PALACE_GUARD_LIMB_RIGHT_LEAF" Offset="0x27CC" />
<Limb Name="gDekuPalaceGuardCenterLeafLimb" Type="Standard" EnumName="DEKU_PALACE_GUARD_LIMB_CENTER_LEAF" Offset="0x27D8" />
<Limb Name="gDekuPalaceGuardRearLeafLimb" Type="Standard" EnumName="DEKU_PALACE_GUARD_LIMB_REAR_LEAF" Offset="0x27E4" />
<Limb Name="gDekuPalaceGuardSnoutLimb" Type="Standard" EnumName="DEKU_PALACE_GUARD_LIMB_SNOUT" Offset="0x27F0" />
<Limb Name="gDekuPalaceGuardEyesLimb" Type="Standard" EnumName="DEKU_PALACE_GUARD_LIMB_EYES" Offset="0x27FC" />
<Limb Name="gDekuPalaceGuardLeftFootLimb" Type="Standard" EnumName="DEKU_PALACE_GUARD_LIMB_LEFT_FOOT" Offset="0x2808" />
<Limb Name="gDekuPalaceGuardRightFootLimb" Type="Standard" EnumName="DEKU_PALACE_GUARD_LIMB_RIGHT_FOOT" Offset="0x2814" />
<Skeleton Name="gDekuPalaceGuardSkel" Type="Normal" LimbType="Standard" LimbNone="DEKU_PALACE_GUARD_LIMB_NONE" LimbMax="DEKU_PALACE_GUARD_LIMB_MAX" EnumName="DekuPalaceGuardLimbs" Offset="0x2848" />
<Animation Name="gDekuPalaceGuardWaitAnim" Offset="0x2A08" /> <!-- Original named: dnk_wait -->
<Animation Name="gDekuPalaceGuardWalkAnim" Offset="0x2B6C" /> <!-- Original named: dnk_walk -->
</File>

View File

@ -6,7 +6,6 @@
#include "z_en_dekunuts.h"
#include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h"
#include "objects/object_dekunuts/object_dekunuts.h"
#define FLAGS (ACTOR_FLAG_1 | ACTOR_FLAG_4)
@ -119,8 +118,8 @@ void EnDekunuts_Init(Actor* thisx, GlobalContext* globalCtx) {
Actor_ProcessInitChain(&this->actor, sInitChain);
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 35.0f);
SkelAnime_Init(globalCtx, &this->skelAnime, &object_dekunuts_Skel_002468, &object_dekunuts_Anim_00326C,
this->jointTable, this->morphTable, 10);
SkelAnime_Init(globalCtx, &this->skelAnime, &gDekuScrubSkel, &gDekuScrubIdleAnim, this->jointTable,
this->morphTable, DEKU_SCRUB_LIMB_MAX);
Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable, &sColChkInfoInit);
this->unk_194 = ENDEKUNUTS_GET_FF00(&this->actor);
@ -166,7 +165,7 @@ void func_808BD3B4(EnDekunuts* this, GlobalContext* globalCtx) {
}
void func_808BD428(EnDekunuts* this) {
Animation_PlayOnceSetSpeed(&this->skelAnime, &object_dekunuts_Anim_003180, 0.0f);
Animation_PlayOnceSetSpeed(&this->skelAnime, &gDekuScrubUpAnim, 0.0f);
this->unk_190 = Rand_S16Offset(100, 50);
this->collider.dim.height = 5;
Math_Vec3f_Copy(&this->actor.world.pos, &this->actor.home.pos);
@ -221,7 +220,7 @@ void func_808BD49C(EnDekunuts* this, GlobalContext* globalCtx) {
}
void func_808BD78C(EnDekunuts* this) {
Animation_PlayLoop(&this->skelAnime, &object_dekunuts_Anim_002FA4);
Animation_PlayLoop(&this->skelAnime, &gDekuScrubLookAroundAnim);
this->unk_190 = 2;
this->actionFunc = func_808BD7D4;
}
@ -241,7 +240,7 @@ void func_808BD7D4(EnDekunuts* this, GlobalContext* globalCtx) {
}
void func_808BD870(EnDekunuts* this) {
Animation_MorphToLoop(&this->skelAnime, &object_dekunuts_Anim_00326C, -3.0f);
Animation_MorphToLoop(&this->skelAnime, &gDekuScrubIdleAnim, -3.0f);
if (this->actionFunc == func_808BDA4C) {
this->unk_190 = 4098;
} else {
@ -280,7 +279,7 @@ void func_808BD8D8(EnDekunuts* this, GlobalContext* globalCtx) {
}
void func_808BDA08(EnDekunuts* this) {
Animation_PlayOnce(&this->skelAnime, &object_dekunuts_Anim_000168);
Animation_PlayOnce(&this->skelAnime, &gDekuScrubSpitAnim);
this->unk_190 = this->unk_194;
this->actionFunc = func_808BDA4C;
}
@ -324,7 +323,7 @@ void func_808BDA4C(EnDekunuts* this, GlobalContext* globalCtx) {
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_NUTS_THROW);
}
} else if ((this->unk_190 >= 2) && Animation_OnFrame(&this->skelAnime, 12.0f)) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_dekunuts_Anim_000168, -3.0f);
Animation_MorphToPlayOnce(&this->skelAnime, &gDekuScrubSpitAnim, -3.0f);
if (this->unk_190 != 0) {
this->unk_190--;
}
@ -332,14 +331,14 @@ void func_808BDA4C(EnDekunuts* this, GlobalContext* globalCtx) {
}
void func_808BDC9C(EnDekunuts* this) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_dekunuts_Anim_002A5C, -5.0f);
Animation_MorphToPlayOnce(&this->skelAnime, &gDekuScrubBurrowAnim, -5.0f);
this->unk_190 = 0;
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_NUTS_DOWN);
this->actionFunc = func_808BDD54;
}
void func_808BDCF0(EnDekunuts* this) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_dekunuts_Anim_002A5C, -5.0f);
Animation_MorphToPlayOnce(&this->skelAnime, &gDekuScrubBurrowAnim, -5.0f);
this->collider.base.acFlags &= ~AC_ON;
this->unk_190 = 80;
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_NUTS_DOWN);
@ -367,7 +366,7 @@ void func_808BDD54(EnDekunuts* this, GlobalContext* globalCtx) {
}
void func_808BDE7C(EnDekunuts* this) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_dekunuts_Anim_002DD4, -3.0f);
Animation_MorphToPlayOnce(&this->skelAnime, &gDekuScrubUnburrowAnim, -3.0f);
this->collider.dim.height = 37;
this->actor.colChkInfo.mass = 50;
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_NUTS_DAMAGE);
@ -387,7 +386,7 @@ void func_808BDEF8(EnDekunuts* this, GlobalContext* globalCtx) {
}
void func_808BDF60(EnDekunuts* this) {
Animation_PlayLoop(&this->skelAnime, &object_dekunuts_Anim_003780);
Animation_PlayLoop(&this->skelAnime, &gDekuScrubRunAnim);
this->unk_190 = 2;
this->unk_18C = 0;
this->collider.base.acFlags |= AC_ON;
@ -444,7 +443,7 @@ void func_808BDFB8(EnDekunuts* this, GlobalContext* globalCtx) {
}
void func_808BE1CC(EnDekunuts* this) {
Animation_PlayLoop(&this->skelAnime, &object_dekunuts_Anim_0033E4);
Animation_PlayLoop(&this->skelAnime, &gDekuScrubPantingAnim);
this->unk_190 = 3;
this->actor.speedXZ = 0.0f;
if (this->unk_18D != 0) {
@ -467,7 +466,7 @@ void func_808BE22C(EnDekunuts* this, GlobalContext* globalCtx) {
}
void func_808BE294(EnDekunuts* this, s32 arg1) {
Animation_MorphToPlayOnce(&this->skelAnime, &object_dekunuts_Anim_00259C, -3.0f);
Animation_MorphToPlayOnce(&this->skelAnime, &gDekuScrubDamageAnim, -3.0f);
if (this->actor.params == ENDEKUNUTS_GET_FF00_0) {
this->actor.speedXZ = 10.0f;
if (arg1 != 0) {
@ -480,7 +479,7 @@ void func_808BE294(EnDekunuts* this, s32 arg1) {
this->actionFunc = func_808BE358;
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_NUTS_DAMAGE);
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_CUTBODY);
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, Animation_GetLastFrame(&object_dekunuts_Anim_00259C));
Actor_SetColorFilter(&this->actor, 0x4000, 255, 0, Animation_GetLastFrame(&gDekuScrubDamageAnim));
}
void func_808BE358(EnDekunuts* this, GlobalContext* globalCtx) {
@ -519,7 +518,7 @@ void func_808BE3FC(EnDekunuts* this, GlobalContext* globalCtx) {
}
void func_808BE484(EnDekunuts* this) {
Animation_PlayOnce(&this->skelAnime, &object_dekunuts_Anim_002BD4);
Animation_PlayOnce(&this->skelAnime, &gDekuScrubDieAnim);
this->actionFunc = func_808BE4D4;
this->actor.speedXZ = 0.0f;
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_NUTS_DEAD);
@ -543,13 +542,13 @@ void func_808BE4D4(EnDekunuts* this, GlobalContext* globalCtx) {
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_OBJ_ETCETERA, this->actor.home.pos.x, this->actor.home.pos.y,
this->actor.home.pos.z, 0, this->actor.home.rot.y, 0, 0x80);
EffectSsHahen_SpawnBurst(globalCtx, &this->actor.home.pos, 6.0f, 0, 6, 2, 15, 64, 10,
object_dekunuts_DL_001F50);
gDekuScrubFlowerFragmentDL);
Actor_MarkForDeath(&this->actor);
}
}
void func_808BE680(EnDekunuts* this) {
Animation_MorphToLoop(&this->skelAnime, &object_dekunuts_Anim_00326C, -3.0f);
Animation_MorphToLoop(&this->skelAnime, &gDekuScrubIdleAnim, -3.0f);
this->actionFunc = func_808BE6C4;
}
@ -669,7 +668,7 @@ s32 EnDekunuts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** d
f32 currentFrame;
if (this->actionFunc == func_808BDA4C) {
if (limbIndex == 5) {
if (limbIndex == DEKU_SCRUB_LIMB_SNOUT) {
currentFrame = this->skelAnime.curFrame;
if (currentFrame <= 6.0f) {
arg2 = 1.0f - (currentFrame * 0.0833f);
@ -688,7 +687,7 @@ s32 EnDekunuts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** d
return 0;
}
Matrix_Scale(arg1, arg2, arg3, MTXMODE_APPLY);
} else if ((limbIndex == 2) && (this->actor.params == ENDEKUNUTS_GET_FF00_2)) {
} else if ((limbIndex == DEKU_SCRUB_LIMB_HEAD) && (this->actor.params == ENDEKUNUTS_GET_FF00_2)) {
rot->z = this->actor.world.rot.x;
}
}
@ -723,7 +722,7 @@ void EnDekunuts_PostLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx** dLis
}
}
if (limbIndex == 2) {
if (limbIndex == DEKU_SCRUB_LIMB_HEAD) {
Matrix_GetStateTranslation(&this->actor.focus.pos);
}
}
@ -739,7 +738,7 @@ void EnDekunuts_Draw(Actor* thisx, GlobalContext* globalCtx) {
if (this->actor.colorFilterTimer != 0) {
func_800AE5A0(globalCtx);
}
Gfx_DrawDListOpa(globalCtx, object_dekunuts_DL_001E50);
Gfx_DrawDListOpa(globalCtx, gDekuScrubFlowerDL);
Actor_DrawDamageEffects(globalCtx, &this->actor, this->limbPos, ARRAY_COUNT(this->limbPos), this->drawDmgEffScale,
this->drawDmgEffFrozenSteamScale, this->drawDmgEffAlpha, this->drawDmgEffType);
}

View File

@ -2,6 +2,7 @@
#define Z_EN_DEKUNUTS_H
#include "global.h"
#include "objects/object_dekunuts/object_dekunuts.h"
struct EnDekunuts;
@ -26,8 +27,8 @@ typedef struct EnDekunuts {
/* 0x190 */ s16 unk_190;
/* 0x192 */ s16 unk_192;
/* 0x194 */ s16 unk_194;
/* 0x196 */ Vec3s jointTable[10];
/* 0x1D2 */ Vec3s morphTable[10];
/* 0x196 */ Vec3s jointTable[DEKU_SCRUB_LIMB_MAX];
/* 0x1D2 */ Vec3s morphTable[DEKU_SCRUB_LIMB_MAX];
/* 0x210 */ f32 drawDmgEffAlpha;
/* 0x214 */ f32 drawDmgEffScale;
/* 0x218 */ f32 drawDmgEffFrozenSteamScale;

View File

@ -116,20 +116,20 @@ static AnimationInfoS sAnimations[] = {
{ &object_hintnuts_Anim_003128, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &object_hintnuts_Anim_0029BC, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &object_hintnuts_Anim_002E84, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &object_dekunuts_Anim_000168, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &object_dekunuts_Anim_00259C, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &object_dekunuts_Anim_002A5C, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
{ &object_dekunuts_Anim_002A5C, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &object_dekunuts_Anim_002BD4, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &object_dekunuts_Anim_002DD4, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &object_dekunuts_Anim_002FA4, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &object_dekunuts_Anim_003180, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &object_dekunuts_Anim_00326C, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_dekunuts_Anim_00326C, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &object_dekunuts_Anim_0033E4, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &object_dekunuts_Anim_003780, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &object_dekunuts_Anim_003780, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &object_dekunuts_Anim_002950, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gDekuScrubSpitAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gDekuScrubDamageAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &gDekuScrubBurrowAnim, 1.0f, 0, -1, ANIMMODE_ONCE, 0 },
{ &gDekuScrubBurrowAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &gDekuScrubDieAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &gDekuScrubUnburrowAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &gDekuScrubLookAroundAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gDekuScrubUpAnim, 1.0f, 0, -1, ANIMMODE_ONCE, -4 },
{ &gDekuScrubIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gDekuScrubIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gDekuScrubPantingAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gDekuScrubRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
{ &gDekuScrubRunAnim, 1.0f, 0, -1, ANIMMODE_LOOP, -4 },
{ &gDekuScrubStandingIdleAnim, 1.0f, 0, -1, ANIMMODE_LOOP, 0 },
};
s32 func_80A514F0(SkelAnime* skelAnime, s16 animIndex) {
@ -179,7 +179,7 @@ void func_80A51648(EnDnk* this, GlobalContext* globalCtx) {
switch (ENDNK_GET_3(&this->actor)) {
case ENDNK_GET_3_0:
SkelAnime_Init(globalCtx, &this->skelAnime, &gDekuPalaceGuardSkel, NULL, this->jointTable,
this->morphTable, 11);
this->morphTable, DEKU_PALACE_GUARD_LIMB_MAX);
func_80A514F0(&this->skelAnime, 7);
break;
@ -190,8 +190,8 @@ void func_80A51648(EnDnk* this, GlobalContext* globalCtx) {
break;
case ENDNK_GET_3_2:
SkelAnime_Init(globalCtx, &this->skelAnime, &object_dekunuts_Skel_002468, NULL, this->jointTable,
this->morphTable, 10);
SkelAnime_Init(globalCtx, &this->skelAnime, &gDekuScrubSkel, NULL, this->jointTable, this->morphTable,
DEKU_SCRUB_LIMB_MAX);
func_80A514F0(&this->skelAnime, 35);
break;
}

View File

@ -98,7 +98,7 @@ void EnGuardNuts_Init(Actor* thisx, GlobalContext* globalCtx) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 20.0f);
SkelAnime_Init(globalCtx, &this->skelAnime, &gDekuPalaceGuardSkel, &gDekuPalaceGuardWaitAnim, this->jointTable,
this->morphTable, OBJECT_DNK_LIMB_MAX);
this->morphTable, DEKU_PALACE_GUARD_LIMB_MAX);
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
this->actor.targetMode = 1;
Collider_InitAndSetCylinder(globalCtx, &this->collider, &this->actor, &sCylinderInit);
@ -355,7 +355,7 @@ s32 EnGuardNuts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex, Gfx**
Actor* thisx) {
EnGuardNuts* this = THIS;
if (limbIndex == OBJECT_DNK_LIMB_HEAD) {
if (limbIndex == DEKU_PALACE_GUARD_LIMB_HEAD) {
rot->x += this->headRot.x;
rot->y += this->headRot.y;
rot->z += this->headRot.z;

View File

@ -11,8 +11,8 @@ typedef void (*EnGuardNutsActionFunc)(struct EnGuardNuts*, GlobalContext*);
typedef struct EnGuardNuts {
/* 0x000 */ Actor actor;
/* 0x144 */ SkelAnime skelAnime;
/* 0x188 */ Vec3s jointTable[OBJECT_DNK_LIMB_MAX];
/* 0x1CA */ Vec3s morphTable[OBJECT_DNK_LIMB_MAX];
/* 0x188 */ Vec3s jointTable[DEKU_PALACE_GUARD_LIMB_MAX];
/* 0x1CA */ Vec3s morphTable[DEKU_PALACE_GUARD_LIMB_MAX];
/* 0x20C */ EnGuardNutsActionFunc actionFunc;
/* 0x210 */ s16 eyeState;
/* 0x212 */ s16 blinkTimer;

View File

@ -104,7 +104,7 @@ void EnLookNuts_Init(Actor* thisx, GlobalContext* globalCtx) {
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 20.0f);
SkelAnime_Init(globalCtx, &this->skelAnime, &gDekuPalaceGuardSkel, &gDekuPalaceGuardDigAnim, this->jointTable,
this->morphTable, OBJECT_DNK_LIMB_MAX);
this->morphTable, DEKU_PALACE_GUARD_LIMB_MAX);
Actor_SetScale(&this->actor, 0.01f);
this->actor.colChkInfo.damageTable = &sDamageTable;
this->actor.colChkInfo.mass = MASS_IMMOVABLE;

View File

@ -15,8 +15,8 @@ typedef void (*EnLookNutsActionFunc)(struct EnLookNuts*, GlobalContext*);
typedef struct EnLookNuts {
/* 0x0000 */ Actor actor;
/* 0x0144 */ SkelAnime skelAnime;
/* 0x0188 */ Vec3s jointTable[OBJECT_DNK_LIMB_MAX];
/* 0x01CA */ Vec3s morphTable[OBJECT_DNK_LIMB_MAX];
/* 0x0188 */ Vec3s jointTable[DEKU_PALACE_GUARD_LIMB_MAX];
/* 0x01CA */ Vec3s morphTable[DEKU_PALACE_GUARD_LIMB_MAX];
/* 0x020C */ EnLookNutsActionFunc actionFunc;
/* 0x0210 */ Path *path;
/* 0x0214 */ s16 currentPathIndex; // Index for the point where the deku guard is in its path

View File

@ -7,7 +7,6 @@
#include "z_en_syateki_dekunuts.h"
#include "overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.h"
#include "overlays/effects/ovl_Effect_Ss_Hahen/z_eff_ss_hahen.h"
#include "objects/object_dekunuts/object_dekunuts.h"
#define FLAGS (ACTOR_FLAG_10 | ACTOR_FLAG_20 | ACTOR_FLAG_8000000)
@ -70,13 +69,13 @@ static ColliderCylinderInit sCylinderInit = {
static Cylinder16 D_80A2CADC[] = { { 24, 40, 0, { 0, 0, 0 } } };
static AnimationInfo sAnimations[] = {
{ &object_dekunuts_Anim_003180, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
{ &object_dekunuts_Anim_002A5C, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
{ &object_dekunuts_Anim_00326C, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
{ &object_dekunuts_Anim_002FA4, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
{ &object_dekunuts_Anim_00259C, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
{ &object_dekunuts_Anim_002BD4, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
{ &object_dekunuts_Anim_002DD4, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
{ &gDekuScrubUpAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
{ &gDekuScrubBurrowAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
{ &gDekuScrubIdleAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
{ &gDekuScrubLookAroundAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
{ &gDekuScrubDamageAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
{ &gDekuScrubDieAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
{ &gDekuScrubUnburrowAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
};
static InitChainEntry sInitChain[] = {
@ -124,8 +123,8 @@ void EnSyatekiDekunuts_Init(Actor* thisx, GlobalContext* globalCtx2) {
Actor_ProcessInitChain(&this->actor, sInitChain);
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 35.0f);
SkelAnime_Init(globalCtx, &this->skelAnime, &object_dekunuts_Skel_002468, &object_dekunuts_Anim_002A5C,
this->jointTable, this->morphTable, 10);
SkelAnime_Init(globalCtx, &this->skelAnime, &gDekuScrubSkel, &gDekuScrubBurrowAnim, this->jointTable,
this->morphTable, DEKU_SCRUB_LIMB_MAX);
if (path == NULL) {
Actor_MarkForDeath(&this->actor);
return;
@ -147,7 +146,7 @@ void EnSyatekiDekunuts_Destroy(Actor* thisx, GlobalContext* globalCtx) {
}
void func_80A2BE54(EnSyatekiDekunuts* this) {
Animation_PlayOnceSetSpeed(&this->skelAnime, &object_dekunuts_Anim_003180, 0.0f);
Animation_PlayOnceSetSpeed(&this->skelAnime, &gDekuScrubUpAnim, 0.0f);
this->actor.speedXZ = 0.0f;
this->actor.world = this->actor.home;
@ -398,7 +397,7 @@ s32 EnSyatekiDekunuts_OverrideLimbDraw(GlobalContext* globalCtx, s32 limbIndex,
Actor* thisx) {
EnSyatekiDekunuts* this = THIS;
if ((limbIndex == OBJECT_DEKUNUTS_LIMB_03) && (this->unk_1F0 == 1)) {
if ((limbIndex == DEKU_SCRUB_LIMB_HEADDRESS) && (this->unk_1F0 == 1)) {
rot->z += this->unk_1F2;
}
@ -428,7 +427,7 @@ void EnSyatekiDekunuts_Draw(Actor* thisx, GlobalContext* globalCtx) {
Matrix_Scale(0.02f, 0.02f, 0.02f, MTXMODE_APPLY);
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, &object_dekunuts_DL_001E50);
gSPDisplayList(POLY_OPA_DISP++, gDekuScrubFlowerDL);
CLOSE_DISPS(globalCtx->state.gfxCtx);
}

View File

@ -2,6 +2,7 @@
#define Z_EN_SYATEKI_DEKUNUTS_H
#include "global.h"
#include "objects/object_dekunuts/object_dekunuts.h"
#define EN_SYATEKI_DEKUNUTS_GET_PARAM_F(thisx) ((thisx)->params & 0xF)
#define EN_SYATEKI_DEKUNUTS_GET_PARAM_F0(thisx) (((thisx)->params & 0xF0) >> 4)
@ -28,8 +29,8 @@ typedef struct EnSyatekiDekunuts {
/* 0x1EE */ s16 unk_1EE;
/* 0x1F0 */ s16 unk_1F0;
/* 0x1F2 */ s16 unk_1F2;
/* 0x1F4 */ Vec3s jointTable[10];
/* 0x230 */ Vec3s morphTable[10];
/* 0x1F4 */ Vec3s jointTable[DEKU_SCRUB_LIMB_MAX];
/* 0x230 */ Vec3s morphTable[DEKU_SCRUB_LIMB_MAX];
/* 0x26C */ UNK_TYPE1 unk_26C[0x4];
} EnSyatekiDekunuts; // size = 0x270