mirror of https://github.com/zeldaret/mm.git
Document EnSyatekiWf and do some slight cleanup on object_wf and other Syateki actors (#1168)
This commit is contained in:
parent
a7fd595136
commit
50bd6056e2
|
|
@ -65,11 +65,11 @@
|
|||
<Skeleton Name="gWolfosWhiteSkel" Type="Flex" LimbType="Standard" LimbNone="WOLFOS_WHITE_LIMB_NONE" LimbMax="WOLFOS_WHITE_LIMB_MAX" EnumName="WolfosWhiteLimb" Offset="0x3BC0" />
|
||||
|
||||
<!-- Wolfos/White Wolfos Animations -->
|
||||
<Animation Name="gWolfosSlashingAnim" Offset="0x4638" /> <!-- Original name is "wolfman_attack" -->
|
||||
<Animation Name="gWolfosBackflippingAnim" Offset="0x4A90" /> <!-- Original name is "wolfman_back_jump" -->
|
||||
<Animation Name="gWolfosBlockingAnim" Offset="0x4C44" /> <!-- Original name is "wolfman_defense" -->
|
||||
<Animation Name="gWolfosRearingUpFallingOverAnim" Offset="0x53D0" /> <!-- Original name is "wolfman_down" -->
|
||||
<Animation Name="gWolfosRunningAnim" Offset="0x5700" /> <!-- Original name is "wolfman_run" -->
|
||||
<Animation Name="gWolfosSlashAnim" Offset="0x4638" /> <!-- Original name is "wolfman_attack" -->
|
||||
<Animation Name="gWolfosBackflipAnim" Offset="0x4A90" /> <!-- Original name is "wolfman_back_jump" -->
|
||||
<Animation Name="gWolfosBlockAnim" Offset="0x4C44" /> <!-- Original name is "wolfman_defense" -->
|
||||
<Animation Name="gWolfosRearUpFallOverAnim" Offset="0x53D0" /> <!-- Original name is "wolfman_down" -->
|
||||
<Animation Name="gWolfosRunAnim" Offset="0x5700" /> <!-- Original name is "wolfman_run" -->
|
||||
|
||||
<!-- Wolfos Limb DisplayLists -->
|
||||
<DList Name="gWolfosNormalAbdomenDL" Offset="0x6D10" />
|
||||
|
|
@ -135,8 +135,8 @@
|
|||
<Skeleton Name="gWolfosNormalSkel" Type="Flex" LimbType="Standard" LimbNone="WOLFOS_NORMAL_LIMB_NONE" LimbMax="WOLFOS_NORMAL_LIMB_MAX" EnumName="WolfosNormalLimb" Offset="0x95D0" />
|
||||
|
||||
<!-- Wolfos/White Wolfos Animations -->
|
||||
<Animation Name="gWolfosSidesteppingAnim" Offset="0x9808" /> <!-- Original name is "wolfman_side_walk" -->
|
||||
<Animation Name="gWolfosSidestepAnim" Offset="0x9808" /> <!-- Original name is "wolfman_side_walk" -->
|
||||
<Animation Name="gWolfosDamagedAnim" Offset="0x9A50" /> <!-- Originla name is "wolfman_tail_hit" -->
|
||||
<Animation Name="gWolfosWaitingAnim" Offset="0xA3CC" /> <!-- Original name is "wolfman_wait" -->
|
||||
<Animation Name="gWolfosWaitAnim" Offset="0xA3CC" /> <!-- Original name is "wolfman_wait" -->
|
||||
</File>
|
||||
</Root>
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ void EnSyatekiCrow_Destroy(Actor* thisx, PlayState* play);
|
|||
void EnSyatekiCrow_Update(Actor* thisx, PlayState* play);
|
||||
void EnSyatekiCrow_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void EnSyatekiCrow_SetupWaitForSpawn(EnSyatekiCrow* this);
|
||||
void EnSyatekiCrow_WaitForSpawn(EnSyatekiCrow* this, PlayState* play);
|
||||
void EnSyatekiCrow_SetupWaitForSignal(EnSyatekiCrow* this);
|
||||
void EnSyatekiCrow_WaitForSignal(EnSyatekiCrow* this, PlayState* play);
|
||||
void EnSyatekiCrow_SetupWaitToMove(EnSyatekiCrow* this);
|
||||
void EnSyatekiCrow_WaitToMove(EnSyatekiCrow* this, PlayState* play);
|
||||
void EnSyatekiCrow_Fly(EnSyatekiCrow* this, PlayState* play);
|
||||
|
|
@ -105,7 +105,7 @@ void EnSyatekiCrow_Init(Actor* thisx, PlayState* play2) {
|
|||
this->maxPointIndex = path->count;
|
||||
this->deathTimer = 20;
|
||||
this->waitTimer = 0;
|
||||
EnSyatekiCrow_SetupWaitForSpawn(this);
|
||||
EnSyatekiCrow_SetupWaitForSignal(this);
|
||||
}
|
||||
|
||||
void EnSyatekiCrow_Destroy(Actor* thisx, PlayState* play) {
|
||||
|
|
@ -114,7 +114,7 @@ void EnSyatekiCrow_Destroy(Actor* thisx, PlayState* play) {
|
|||
Collider_DestroyJntSph(play, &this->collider);
|
||||
}
|
||||
|
||||
void EnSyatekiCrow_SetupWaitForSpawn(EnSyatekiCrow* this) {
|
||||
void EnSyatekiCrow_SetupWaitForSignal(EnSyatekiCrow* this) {
|
||||
Actor_SetScale(&this->actor, 0.03f);
|
||||
this->actor.speedXZ = 0.0f;
|
||||
this->actor.gravity = 0.0f;
|
||||
|
|
@ -123,13 +123,13 @@ void EnSyatekiCrow_SetupWaitForSpawn(EnSyatekiCrow* this) {
|
|||
this->actor.shape.rot = this->actor.world.rot;
|
||||
this->currentPointIndex = 1;
|
||||
this->actor.draw = NULL;
|
||||
this->actionFunc = EnSyatekiCrow_WaitForSpawn;
|
||||
this->actionFunc = EnSyatekiCrow_WaitForSignal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Waits until the shooting gallery man sets the appropriate Guay flag to spawn.
|
||||
* Waits until the shooting gallery man sets the appropriate Guay flag.
|
||||
*/
|
||||
void EnSyatekiCrow_WaitForSpawn(EnSyatekiCrow* this, PlayState* play) {
|
||||
void EnSyatekiCrow_WaitForSignal(EnSyatekiCrow* this, PlayState* play) {
|
||||
EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
|
||||
if ((syatekiMan->shootingGameState == SG_GAME_STATE_RUNNING) && (this->isActive == true) &&
|
||||
|
|
@ -144,6 +144,10 @@ void EnSyatekiCrow_WaitForSpawn(EnSyatekiCrow* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Positions the Guay at the start of its assigned path and rotates it to face the
|
||||
* next point on the path, then sets it up to start waiting.
|
||||
*/
|
||||
void EnSyatekiCrow_SetupWaitToMove(EnSyatekiCrow* this) {
|
||||
Vec3f targetPos;
|
||||
|
||||
|
|
@ -181,7 +185,7 @@ void EnSyatekiCrow_Fly(EnSyatekiCrow* this, PlayState* play) {
|
|||
EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
|
||||
if (syatekiMan->shootingGameState != SG_GAME_STATE_RUNNING) {
|
||||
EnSyatekiCrow_SetupWaitForSpawn(this);
|
||||
EnSyatekiCrow_SetupWaitForSignal(this);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -203,7 +207,7 @@ void EnSyatekiCrow_Fly(EnSyatekiCrow* this, PlayState* play) {
|
|||
} else {
|
||||
this->isActive = false;
|
||||
syatekiMan->guayFlags &= ~(1 << EN_SYATEKI_CROW_GET_INDEX(&this->actor));
|
||||
EnSyatekiCrow_SetupWaitForSpawn(this);
|
||||
EnSyatekiCrow_SetupWaitForSignal(this);
|
||||
}
|
||||
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
|
|
@ -242,7 +246,7 @@ void EnSyatekiCrow_Dead(EnSyatekiCrow* this, PlayState* play) {
|
|||
func_800B3030(play, &this->actor.world.pos, &sZeroVec, &sZeroVec, this->actor.scale.x * 10000.0f, 0, 0);
|
||||
syatekiMan->guayHitCounter++;
|
||||
syatekiMan->guayFlags &= ~(1 << EN_SYATEKI_CROW_GET_INDEX(&this->actor));
|
||||
EnSyatekiCrow_SetupWaitForSpawn(this);
|
||||
EnSyatekiCrow_SetupWaitForSignal(this);
|
||||
}
|
||||
|
||||
this->deathTimer++;
|
||||
|
|
|
|||
|
|
@ -17,10 +17,10 @@ void EnSyatekiDekunuts_Destroy(Actor* thisx, PlayState* play);
|
|||
void EnSyatekiDekunuts_Update(Actor* thisx, PlayState* play);
|
||||
void EnSyatekiDekunuts_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void EnSyatekiDekunuts_SetupWaitForSpawn(EnSyatekiDekunuts* this);
|
||||
void EnSyatekiDekunuts_WaitForSpawn(EnSyatekiDekunuts* this, PlayState* play);
|
||||
void EnSyatekiDekunuts_SetupSpawn(EnSyatekiDekunuts* this);
|
||||
void EnSyatekiDekunuts_Spawn(EnSyatekiDekunuts* this, PlayState* play);
|
||||
void EnSyatekiDekunuts_SetupWaitForSignal(EnSyatekiDekunuts* this);
|
||||
void EnSyatekiDekunuts_WaitForSignal(EnSyatekiDekunuts* this, PlayState* play);
|
||||
void EnSyatekiDekunuts_SetupWaitToStart(EnSyatekiDekunuts* this);
|
||||
void EnSyatekiDekunuts_WaitToStart(EnSyatekiDekunuts* this, PlayState* play);
|
||||
void EnSyatekiDekunuts_SetupWaitToEmerge(EnSyatekiDekunuts* this);
|
||||
void EnSyatekiDekunuts_WaitToEmerge(EnSyatekiDekunuts* this, PlayState* play);
|
||||
void EnSyatekiDekunuts_SetupEmerge(EnSyatekiDekunuts* this);
|
||||
|
|
@ -152,7 +152,7 @@ void EnSyatekiDekunuts_Init(Actor* thisx, PlayState* play2) {
|
|||
this->timer = 0;
|
||||
this->unk_1DC = 0;
|
||||
this->waitTimer = 0;
|
||||
EnSyatekiDekunuts_SetupWaitForSpawn(this);
|
||||
EnSyatekiDekunuts_SetupWaitForSignal(this);
|
||||
}
|
||||
|
||||
void EnSyatekiDekunuts_Destroy(Actor* thisx, PlayState* play) {
|
||||
|
|
@ -161,7 +161,7 @@ void EnSyatekiDekunuts_Destroy(Actor* thisx, PlayState* play) {
|
|||
Collider_DestroyCylinder(play, &this->collider);
|
||||
}
|
||||
|
||||
void EnSyatekiDekunuts_SetupWaitForSpawn(EnSyatekiDekunuts* this) {
|
||||
void EnSyatekiDekunuts_SetupWaitForSignal(EnSyatekiDekunuts* this) {
|
||||
Animation_PlayOnceSetSpeed(&this->skelAnime, &gDekuScrubUpAnim, 0.0f);
|
||||
|
||||
this->actor.speedXZ = 0.0f;
|
||||
|
|
@ -176,18 +176,18 @@ void EnSyatekiDekunuts_SetupWaitForSpawn(EnSyatekiDekunuts* this) {
|
|||
this->isAlive = true;
|
||||
}
|
||||
|
||||
this->actionFunc = EnSyatekiDekunuts_WaitForSpawn;
|
||||
this->actionFunc = EnSyatekiDekunuts_WaitForSignal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Waits until the shooting gallery man sets the appropriate Deku Scrub flag to spawn.
|
||||
* Waits until the shooting gallery man sets the appropriate Deku Scrub flag.
|
||||
*/
|
||||
void EnSyatekiDekunuts_WaitForSpawn(EnSyatekiDekunuts* this, PlayState* play) {
|
||||
void EnSyatekiDekunuts_WaitForSignal(EnSyatekiDekunuts* this, PlayState* play) {
|
||||
EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
|
||||
if ((syatekiMan->shootingGameState == SG_GAME_STATE_RUNNING) && (this->isAlive == true) &&
|
||||
(syatekiMan->dekuScrubFlags & (1 << this->index))) {
|
||||
EnSyatekiDekunuts_SetupSpawn(this);
|
||||
EnSyatekiDekunuts_SetupWaitToStart(this);
|
||||
} else if (syatekiMan->shootingGameState != SG_GAME_STATE_RUNNING) {
|
||||
this->isAlive = true;
|
||||
}
|
||||
|
|
@ -201,7 +201,7 @@ void EnSyatekiDekunuts_WaitForSpawn(EnSyatekiDekunuts* this, PlayState* play) {
|
|||
/**
|
||||
* Positions the Deku Scrub to match up with its flower, then sets it up to start waiting.
|
||||
*/
|
||||
void EnSyatekiDekunuts_SetupSpawn(EnSyatekiDekunuts* this) {
|
||||
void EnSyatekiDekunuts_SetupWaitToStart(EnSyatekiDekunuts* this) {
|
||||
Vec3f pos;
|
||||
EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
|
||||
|
|
@ -221,13 +221,13 @@ void EnSyatekiDekunuts_SetupSpawn(EnSyatekiDekunuts* this) {
|
|||
this->headdressType = EN_SYATEKI_DEKUNUTS_HEADDRESS_TYPE_NORMAL;
|
||||
}
|
||||
|
||||
this->actionFunc = EnSyatekiDekunuts_Spawn;
|
||||
this->actionFunc = EnSyatekiDekunuts_WaitToStart;
|
||||
}
|
||||
|
||||
/**
|
||||
* Waits 20 frames, then plays a sound and starts the process of making the Deku Scrubs emerge.
|
||||
*/
|
||||
void EnSyatekiDekunuts_Spawn(EnSyatekiDekunuts* this, PlayState* play) {
|
||||
void EnSyatekiDekunuts_WaitToStart(EnSyatekiDekunuts* this, PlayState* play) {
|
||||
EnSyatekiMan* syatekiMan;
|
||||
|
||||
if (this->waitTimer > 20) {
|
||||
|
|
@ -357,7 +357,7 @@ void EnSyatekiDekunuts_SetupGameEnd(EnSyatekiDekunuts* this) {
|
|||
*/
|
||||
void EnSyatekiDekunuts_GameEnd(EnSyatekiDekunuts* this, PlayState* play) {
|
||||
if (this->waitTimer > 20) {
|
||||
EnSyatekiDekunuts_SetupWaitForSpawn(this);
|
||||
EnSyatekiDekunuts_SetupWaitForSignal(this);
|
||||
this->waitTimer = 0;
|
||||
} else {
|
||||
this->waitTimer++;
|
||||
|
|
@ -411,7 +411,7 @@ void EnSyatekiDekunuts_Dead(EnSyatekiDekunuts* this, PlayState* play) {
|
|||
syatekiMan->dekuScrubFlags &= ~(1 << this->index);
|
||||
}
|
||||
|
||||
EnSyatekiDekunuts_SetupWaitForSpawn(this);
|
||||
EnSyatekiDekunuts_SetupWaitForSignal(this);
|
||||
}
|
||||
} else if (this->timer < 160) {
|
||||
this->timer--;
|
||||
|
|
@ -424,7 +424,7 @@ void EnSyatekiDekunuts_Update(Actor* thisx, PlayState* play) {
|
|||
|
||||
this->actionFunc(this, play);
|
||||
|
||||
if ((this->actionFunc != EnSyatekiDekunuts_WaitForSpawn) && (this->timer < this->timeToBurrow) &&
|
||||
if ((this->actionFunc != EnSyatekiDekunuts_WaitForSignal) && (this->timer < this->timeToBurrow) &&
|
||||
(this->timer > 10)) {
|
||||
if ((this->collider.base.acFlags & AC_HIT) && (this->isAlive == true)) {
|
||||
if (EN_SYATEKI_DEKUNUTS_GET_TYPE(&this->actor) == EN_SYATEKI_DEKUNUTS_TYPE_BONUS) {
|
||||
|
|
@ -463,7 +463,7 @@ void EnSyatekiDekunuts_Draw(Actor* thisx, PlayState* play) {
|
|||
Vec3f flowerPos;
|
||||
s32 i;
|
||||
|
||||
if (this->actionFunc != EnSyatekiDekunuts_WaitForSpawn) {
|
||||
if (this->actionFunc != EnSyatekiDekunuts_WaitForSignal) {
|
||||
SkelAnime_DrawOpa(play, this->skelAnime.skeleton, this->skelAnime.jointTable,
|
||||
EnSyatekiDekunuts_OverrideLimbDraw, NULL, &this->actor);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,19 +16,19 @@ void EnSyatekiWf_Destroy(Actor* thisx, PlayState* play);
|
|||
void EnSyatekiWf_Update(Actor* thisx, PlayState* play2);
|
||||
void EnSyatekiWf_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_80A201CC(EnSyatekiWf* this);
|
||||
void func_80A20284(EnSyatekiWf* this, PlayState* play);
|
||||
void func_80A2030C(EnSyatekiWf* this);
|
||||
void func_80A20320(EnSyatekiWf* this, PlayState* play);
|
||||
void func_80A20378(EnSyatekiWf* this);
|
||||
void func_80A203DC(EnSyatekiWf* this, PlayState* play);
|
||||
void func_80A20670(EnSyatekiWf* this);
|
||||
void func_80A206DC(EnSyatekiWf* this, PlayState* play);
|
||||
void func_80A20710(EnSyatekiWf* this);
|
||||
void func_80A2075C(EnSyatekiWf* this, PlayState* play);
|
||||
void func_80A2079C(EnSyatekiWf* this);
|
||||
void func_80A20800(EnSyatekiWf* this, PlayState* play);
|
||||
void func_80A208F8(EnSyatekiWf* this, PlayState* play);
|
||||
void EnSyatekiWf_SetupWaitForSignal(EnSyatekiWf* this);
|
||||
void EnSyatekiWf_WaitForSignal(EnSyatekiWf* this, PlayState* play);
|
||||
void EnSyatekiWf_SetupWaitToMove(EnSyatekiWf* this);
|
||||
void EnSyatekiWf_WaitToMove(EnSyatekiWf* this, PlayState* play);
|
||||
void EnSyatekiWf_SetupRun(EnSyatekiWf* this);
|
||||
void EnSyatekiWf_Run(EnSyatekiWf* this, PlayState* play);
|
||||
void EnSyatekiWf_SetupJump(EnSyatekiWf* this);
|
||||
void EnSyatekiWf_Jump(EnSyatekiWf* this, PlayState* play);
|
||||
void EnSyatekiWf_SetupLand(EnSyatekiWf* this);
|
||||
void EnSyatekiWf_Land(EnSyatekiWf* this, PlayState* play);
|
||||
void EnSyatekiWf_SetupHowl(EnSyatekiWf* this);
|
||||
void EnSyatekiWf_Howl(EnSyatekiWf* this, PlayState* play);
|
||||
void EnSyatekiWf_Dead(EnSyatekiWf* this, PlayState* play);
|
||||
|
||||
static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
||||
{
|
||||
|
|
@ -40,11 +40,11 @@ static ColliderJntSphElementInit sJntSphElementsInit[1] = {
|
|||
BUMP_ON,
|
||||
OCELEM_ON,
|
||||
},
|
||||
{ 17, { { 800, 0, 0 }, 25 }, 100 },
|
||||
{ WOLFOS_NORMAL_LIMB_HEAD, { { 800, 0, 0 }, 25 }, 100 },
|
||||
},
|
||||
};
|
||||
|
||||
static ColliderCylinderInit sCylinderInit1 = {
|
||||
static ColliderCylinderInit sBodyCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT5,
|
||||
AT_NONE,
|
||||
|
|
@ -77,7 +77,7 @@ static ColliderJntSphInit sJntSphInit = {
|
|||
sJntSphElementsInit,
|
||||
};
|
||||
|
||||
static ColliderCylinderInit sCylinderInit2 = {
|
||||
static ColliderCylinderInit sTailCylinderInit = {
|
||||
{
|
||||
COLTYPE_HIT5,
|
||||
AT_NONE,
|
||||
|
|
@ -97,9 +97,9 @@ static ColliderCylinderInit sCylinderInit2 = {
|
|||
{ 15, 20, -15, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
static Vec3f D_80A20EDC = { 0.0f, 20.0f, 0.0f };
|
||||
static Vec3f sVelocity = { 0.0f, 20.0f, 0.0f };
|
||||
|
||||
static Vec3f D_80A20EE8 = { 0.0f, 0.0f, 0.0f };
|
||||
static Vec3f sAccel = { 0.0f, 0.0f, 0.0f };
|
||||
|
||||
ActorInit En_Syateki_Wf_InitVars = {
|
||||
ACTOR_EN_SYATEKI_WF,
|
||||
|
|
@ -113,14 +113,24 @@ ActorInit En_Syateki_Wf_InitVars = {
|
|||
(ActorFunc)EnSyatekiWf_Draw,
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ EN_SYATEKI_WF_ANIM_WAIT, // unused
|
||||
/* 1 */ EN_SYATEKI_WF_ANIM_RUN,
|
||||
/* 2 */ EN_SYATEKI_WF_ANIM_JUMP,
|
||||
/* 3 */ EN_SYATEKI_WF_ANIM_LAND,
|
||||
/* 4 */ EN_SYATEKI_WF_ANIM_BACKFLIP, // unused
|
||||
/* 5 */ EN_SYATEKI_WF_ANIM_DAMAGED,
|
||||
/* 6 */ EN_SYATEKI_WF_ANIM_REAR_UP_FALL_OVER,
|
||||
} EnSyatekiWfAnimation;
|
||||
|
||||
static AnimationInfo sAnimationInfo[] = {
|
||||
{ &gWolfosWaitingAnim, 2.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
|
||||
{ &gWolfosRunningAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
|
||||
{ &gWolfosRunningAnim, 1.0f, 0.0f, 4.0f, ANIMMODE_ONCE, 1.0f },
|
||||
{ &gWolfosRunningAnim, 1.0f, 4.0f, 8.0f, ANIMMODE_ONCE, 1.0f },
|
||||
{ &gWolfosBackflippingAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gWolfosWaitAnim, 2.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -1.0f },
|
||||
{ &gWolfosRunAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_LOOP, -8.0f },
|
||||
{ &gWolfosRunAnim, 1.0f, 0.0f, 4.0f, ANIMMODE_ONCE, 1.0f },
|
||||
{ &gWolfosRunAnim, 1.0f, 4.0f, 8.0f, ANIMMODE_ONCE, 1.0f },
|
||||
{ &gWolfosBackflipAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gWolfosDamagedAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, 8.0f },
|
||||
{ &gWolfosRearingUpFallingOverAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
{ &gWolfosRearUpFallOverAnim, 1.0f, 0.0f, 0.0f, ANIMMODE_ONCE, -1.0f },
|
||||
};
|
||||
|
||||
static InitChainEntry sInitChain[] = {
|
||||
|
|
@ -128,17 +138,6 @@ static InitChainEntry sInitChain[] = {
|
|||
ICHAIN_F32_DIV1000(gravity, -2000, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
static Vec3f D_80A20FC4 = { 0.0f, 0.5f, 0.0f };
|
||||
|
||||
static Vec3f D_80A20FD0 = { 1200.0f, 0.0f, 0.0f };
|
||||
|
||||
static TexturePtr sEyeTextures[] = {
|
||||
gWolfosNormalEyeOpenTex,
|
||||
gWolfosNormalEyeHalfTex,
|
||||
gWolfosNormalEyeNarrowTex,
|
||||
gWolfosNormalEyeHalfTex,
|
||||
};
|
||||
|
||||
void EnSyatekiWf_Init(Actor* thisx, PlayState* play) {
|
||||
s32 pad;
|
||||
EnSyatekiWf* this = THIS;
|
||||
|
|
@ -160,12 +159,12 @@ void EnSyatekiWf_Init(Actor* thisx, PlayState* play) {
|
|||
return;
|
||||
}
|
||||
|
||||
this->unk_2A0 = Lib_SegmentedToVirtual(path->points);
|
||||
this->unk_2A4 = 1;
|
||||
this->unk_2A6 = path->count;
|
||||
this->pathPoints = Lib_SegmentedToVirtual(path->points);
|
||||
this->currentPointIndex = 1;
|
||||
this->maxPointIndex = path->count;
|
||||
|
||||
Actor_ProcessInitChain(&this->actor, sInitChain);
|
||||
this->unk_29C = 0;
|
||||
this->waitTimer = 0;
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 0.0f);
|
||||
this->actor.focus.pos = this->actor.world.pos;
|
||||
this->actor.colChkInfo.mass = MASS_IMMOVABLE;
|
||||
|
|
@ -175,45 +174,46 @@ void EnSyatekiWf_Init(Actor* thisx, PlayState* play) {
|
|||
this->eyeIndex = 0;
|
||||
this->unk_2AC = 10.0f;
|
||||
|
||||
Collider_InitCylinder(play, &this->unk_2B4);
|
||||
Collider_SetCylinder(play, &this->unk_2B4, &this->actor, &sCylinderInit1);
|
||||
Collider_InitCylinder(play, &this->unk_300);
|
||||
Collider_SetCylinder(play, &this->unk_300, &this->actor, &sCylinderInit2);
|
||||
Collider_InitJntSph(play, &this->unk_34C);
|
||||
Collider_SetJntSph(play, &this->unk_34C, &this->actor, &sJntSphInit, this->unk_36C);
|
||||
this->unk_34C.elements->dim.worldSphere.radius = sJntSphInit.elements[0].dim.modelSphere.radius;
|
||||
Collider_InitCylinder(play, &this->bodyCollider);
|
||||
Collider_SetCylinder(play, &this->bodyCollider, &this->actor, &sBodyCylinderInit);
|
||||
Collider_InitCylinder(play, &this->tailCollider);
|
||||
Collider_SetCylinder(play, &this->tailCollider, &this->actor, &sTailCylinderInit);
|
||||
Collider_InitJntSph(play, &this->headCollider);
|
||||
Collider_SetJntSph(play, &this->headCollider, &this->actor, &sJntSphInit, this->headColliderElements);
|
||||
this->headCollider.elements->dim.worldSphere.radius = sJntSphInit.elements[0].dim.modelSphere.radius;
|
||||
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gWolfosNormalSkel, &gWolfosWaitingAnim, this->jointTable,
|
||||
this->morphTable, WOLFOS_NORMAL_LIMB_MAX);
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gWolfosNormalSkel, &gWolfosWaitAnim, this->jointTable, this->morphTable,
|
||||
WOLFOS_NORMAL_LIMB_MAX);
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
this->actor.hintId = TATL_HINT_ID_WOLFOS;
|
||||
|
||||
func_80A201CC(this);
|
||||
EnSyatekiWf_SetupWaitForSignal(this);
|
||||
}
|
||||
|
||||
void EnSyatekiWf_Destroy(Actor* thisx, PlayState* play) {
|
||||
EnSyatekiWf* this = THIS;
|
||||
|
||||
Collider_DestroyCylinder(play, &this->unk_2B4);
|
||||
Collider_DestroyCylinder(play, &this->unk_300);
|
||||
Collider_DestroyCylinder(play, &this->bodyCollider);
|
||||
Collider_DestroyCylinder(play, &this->tailCollider);
|
||||
}
|
||||
|
||||
void func_80A200E0(EnSyatekiWf* this) {
|
||||
Vec3f sp24;
|
||||
s16 temp;
|
||||
/**
|
||||
* Positions the Wolfos at the start of its assigned path and rotates it to face
|
||||
* the next point on the path.
|
||||
*/
|
||||
void EnSyatekiWf_InitPathStart(EnSyatekiWf* this) {
|
||||
Vec3f targetPos;
|
||||
|
||||
this->actor.world.pos.x = this->unk_2A0[0].x;
|
||||
this->actor.world.pos.y = this->unk_2A0[0].y;
|
||||
this->actor.world.pos.z = this->unk_2A0[0].z;
|
||||
sp24.x = this->unk_2A0[this->unk_2A4].x;
|
||||
sp24.y = this->unk_2A0[this->unk_2A4].y;
|
||||
sp24.z = this->unk_2A0[this->unk_2A4].z;
|
||||
temp = Math_Vec3f_Yaw(&this->actor.world.pos, &sp24);
|
||||
this->actor.shape.rot.y = temp;
|
||||
this->actor.world.rot.y = temp;
|
||||
this->actor.world.pos.x = this->pathPoints[0].x;
|
||||
this->actor.world.pos.y = this->pathPoints[0].y;
|
||||
this->actor.world.pos.z = this->pathPoints[0].z;
|
||||
targetPos.x = this->pathPoints[this->currentPointIndex].x;
|
||||
targetPos.y = this->pathPoints[this->currentPointIndex].y;
|
||||
targetPos.z = this->pathPoints[this->currentPointIndex].z;
|
||||
this->actor.world.rot.y = this->actor.shape.rot.y = Math_Vec3f_Yaw(&this->actor.world.pos, &targetPos);
|
||||
}
|
||||
|
||||
void func_80A201CC(EnSyatekiWf* this) {
|
||||
void EnSyatekiWf_SetupWaitForSignal(EnSyatekiWf* this) {
|
||||
EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
|
||||
this->actor.speedXZ = 0.0f;
|
||||
|
|
@ -222,67 +222,79 @@ void func_80A201CC(EnSyatekiWf* this) {
|
|||
this->actor.shape.rot = this->actor.world.rot;
|
||||
this->actor.colChkInfo.health = 2;
|
||||
this->actor.draw = NULL;
|
||||
this->unk_2A4 = 1;
|
||||
this->unk_298 = 0;
|
||||
this->currentPointIndex = 1;
|
||||
this->isActive = false;
|
||||
syatekiMan->wolfosFlags &= ~(1 << EN_SYATEKI_WF_GET_INDEX(&this->actor));
|
||||
this->actionFunc = func_80A20284;
|
||||
this->actionFunc = EnSyatekiWf_WaitForSignal;
|
||||
}
|
||||
|
||||
void func_80A20284(EnSyatekiWf* this, PlayState* play) {
|
||||
/**
|
||||
* Waits until the shooting gallery man sets the appropriate Wolfos flag.
|
||||
*/
|
||||
void EnSyatekiWf_WaitForSignal(EnSyatekiWf* this, PlayState* play) {
|
||||
EnSyatekiMan* syatekiMan;
|
||||
|
||||
if (this->actor.parent != NULL) {
|
||||
syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
if ((syatekiMan->shootingGameState == SG_GAME_STATE_RUNNING) && (this->unk_298 == 1)) {
|
||||
func_80A200E0(this);
|
||||
func_80A2030C(this);
|
||||
if ((syatekiMan->shootingGameState == SG_GAME_STATE_RUNNING) && (this->isActive == true)) {
|
||||
EnSyatekiWf_InitPathStart(this);
|
||||
EnSyatekiWf_SetupWaitToMove(this);
|
||||
} else if (syatekiMan->wolfosFlags & (1 << EN_SYATEKI_WF_GET_INDEX(&this->actor))) {
|
||||
this->unk_298 = 1;
|
||||
this->isActive = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A2030C(EnSyatekiWf* this) {
|
||||
this->actionFunc = func_80A20320;
|
||||
void EnSyatekiWf_SetupWaitToMove(EnSyatekiWf* this) {
|
||||
this->actionFunc = EnSyatekiWf_WaitToMove;
|
||||
}
|
||||
|
||||
void func_80A20320(EnSyatekiWf* this, PlayState* play) {
|
||||
if (this->unk_29C >= 11) {
|
||||
/**
|
||||
* Waits 11 frames, then makes the Wolfos start running forward.
|
||||
*/
|
||||
void EnSyatekiWf_WaitToMove(EnSyatekiWf* this, PlayState* play) {
|
||||
if (this->waitTimer >= 11) {
|
||||
Actor_PlaySfxAtPos(this->actor.parent, NA_SE_EN_WOLFOS_APPEAR);
|
||||
this->unk_29C = 0;
|
||||
func_80A20378(this);
|
||||
this->waitTimer = 0;
|
||||
EnSyatekiWf_SetupRun(this);
|
||||
} else {
|
||||
this->unk_29C++;
|
||||
this->waitTimer++;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A20378(EnSyatekiWf* this) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 1);
|
||||
void EnSyatekiWf_SetupRun(EnSyatekiWf* this) {
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, EN_SYATEKI_WF_ANIM_RUN);
|
||||
this->actor.speedXZ = 10.0f;
|
||||
this->actor.world.rot.y = this->actor.shape.rot.y;
|
||||
this->actor.draw = EnSyatekiWf_Draw;
|
||||
this->actionFunc = func_80A203DC;
|
||||
this->actionFunc = EnSyatekiWf_Run;
|
||||
}
|
||||
|
||||
void func_80A203DC(EnSyatekiWf* this, PlayState* play) {
|
||||
Vec3f sp54;
|
||||
f32 sp50;
|
||||
s16 temp_v0;
|
||||
/**
|
||||
* Runs forward along its assigned path. If the Wolfos encounters a wall directly
|
||||
* in front of it, this function will make it jump. If the Wolfos reaches a certain
|
||||
* point along the path (which is specified via its params), this function will make
|
||||
* it stop running and howl in place.
|
||||
*/
|
||||
void EnSyatekiWf_Run(EnSyatekiWf* this, PlayState* play) {
|
||||
Vec3f targetPoint;
|
||||
f32 distToTarget;
|
||||
s16 wallYawDiff;
|
||||
EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
|
||||
if (syatekiMan->shootingGameState != SG_GAME_STATE_RUNNING) {
|
||||
func_80A201CC(this);
|
||||
EnSyatekiWf_SetupWaitForSignal(this);
|
||||
}
|
||||
|
||||
sp54.x = this->unk_2A0[this->unk_2A4].x;
|
||||
sp54.y = this->unk_2A0[this->unk_2A4].y;
|
||||
sp54.z = this->unk_2A0[this->unk_2A4].z;
|
||||
temp_v0 = (this->actor.wallYaw - this->actor.world.rot.y) + 0x8000;
|
||||
targetPoint.x = this->pathPoints[this->currentPointIndex].x;
|
||||
targetPoint.y = this->pathPoints[this->currentPointIndex].y;
|
||||
targetPoint.z = this->pathPoints[this->currentPointIndex].z;
|
||||
wallYawDiff = (this->actor.wallYaw - this->actor.world.rot.y) + 0x8000;
|
||||
|
||||
if (this->actor.bgCheckFlags & 1) {
|
||||
if (this->actor.bgCheckFlags & 8) {
|
||||
if ((ABS(temp_v0) < 0x1555) && (this->actor.wallPoly != this->actor.floorPoly)) {
|
||||
func_80A20670(this);
|
||||
if ((ABS(wallYawDiff) < 0x1555) && (this->actor.wallPoly != this->actor.floorPoly)) {
|
||||
EnSyatekiWf_SetupJump(this);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -291,13 +303,13 @@ void func_80A203DC(EnSyatekiWf* this, PlayState* play) {
|
|||
this->actor.velocity.y = 2.0f;
|
||||
}
|
||||
|
||||
sp50 = Math_Vec3f_DistXZ(&this->actor.world.pos, &sp54);
|
||||
this->unk_2A8 = Math_Vec3f_Yaw(&this->actor.world.pos, &sp54);
|
||||
distToTarget = Math_Vec3f_DistXZ(&this->actor.world.pos, &targetPoint);
|
||||
this->yawTarget = Math_Vec3f_Yaw(&this->actor.world.pos, &targetPoint);
|
||||
|
||||
if (sp50 > 15.0f) {
|
||||
Math_SmoothStepToS(&this->actor.world.rot.y, this->unk_2A8, 5, 0x3000, 0x100);
|
||||
if (distToTarget > 15.0f) {
|
||||
Math_SmoothStepToS(&this->actor.world.rot.y, this->yawTarget, 5, 0x3000, 0x100);
|
||||
this->actor.shape.rot.y = this->actor.world.rot.y;
|
||||
if (sp50 < 50.0f) {
|
||||
if (distToTarget < 50.0f) {
|
||||
if (this->actor.speedXZ > 3.0f) {
|
||||
this->actor.speedXZ = this->actor.speedXZ - 0.5f;
|
||||
} else {
|
||||
|
|
@ -305,16 +317,16 @@ void func_80A203DC(EnSyatekiWf* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
if (this->unk_2A4 < (this->unk_2A6 - 1)) {
|
||||
if (this->unk_2A4 == EN_SYATEKI_WF_GET_PARAM_F0(&this->actor)) {
|
||||
func_80A2079C(this);
|
||||
if (this->currentPointIndex < (this->maxPointIndex - 1)) {
|
||||
if (this->currentPointIndex == EN_SYATEKI_WF_GET_POINT_TO_HOWL(&this->actor)) {
|
||||
EnSyatekiWf_SetupHowl(this);
|
||||
}
|
||||
|
||||
this->unk_2A4++;
|
||||
this->currentPointIndex++;
|
||||
} else {
|
||||
this->unk_298 = 0;
|
||||
this->unk_2A4 = 1;
|
||||
func_80A201CC(this);
|
||||
this->isActive = false;
|
||||
this->currentPointIndex = 1;
|
||||
EnSyatekiWf_SetupWaitForSignal(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -324,76 +336,82 @@ void func_80A203DC(EnSyatekiWf* this, PlayState* play) {
|
|||
}
|
||||
}
|
||||
|
||||
void func_80A20670(EnSyatekiWf* this) {
|
||||
void EnSyatekiWf_SetupJump(EnSyatekiWf* this) {
|
||||
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_TEKU_JUMP);
|
||||
this->actor.velocity.y = 20.0f;
|
||||
this->actor.speedXZ = 5.0f;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 2);
|
||||
this->actionFunc = func_80A206DC;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, EN_SYATEKI_WF_ANIM_JUMP);
|
||||
this->actionFunc = EnSyatekiWf_Jump;
|
||||
}
|
||||
|
||||
void func_80A206DC(EnSyatekiWf* this, PlayState* play) {
|
||||
void EnSyatekiWf_Jump(EnSyatekiWf* this, PlayState* play) {
|
||||
if (this->actor.bgCheckFlags & 2) {
|
||||
func_80A20710(this);
|
||||
EnSyatekiWf_SetupLand(this);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A20710(EnSyatekiWf* this) {
|
||||
void EnSyatekiWf_SetupLand(EnSyatekiWf* this) {
|
||||
this->actor.speedXZ = 0.0f;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 3);
|
||||
this->actionFunc = func_80A2075C;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, EN_SYATEKI_WF_ANIM_LAND);
|
||||
this->actionFunc = EnSyatekiWf_Land;
|
||||
}
|
||||
|
||||
void func_80A2075C(EnSyatekiWf* this, PlayState* play) {
|
||||
/**
|
||||
* Freezes the Wolfos in place until its landing animation is complete, then makes it start running.
|
||||
*/
|
||||
void EnSyatekiWf_Land(EnSyatekiWf* this, PlayState* play) {
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
func_80A20378(this);
|
||||
EnSyatekiWf_SetupRun(this);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A2079C(EnSyatekiWf* this) {
|
||||
this->unk_29A = 40;
|
||||
void EnSyatekiWf_SetupHowl(EnSyatekiWf* this) {
|
||||
this->timer = 40;
|
||||
this->actor.speedXZ = 0.0f;
|
||||
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_WOLFOS_APPEAR);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 5);
|
||||
this->actionFunc = func_80A20800;
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, EN_SYATEKI_WF_ANIM_DAMAGED);
|
||||
this->actionFunc = EnSyatekiWf_Howl;
|
||||
}
|
||||
|
||||
void func_80A20800(EnSyatekiWf* this, PlayState* play) {
|
||||
/**
|
||||
* Makes the Wolfos stand completely still until 40 frames after its damaged animation is complete.
|
||||
*/
|
||||
void EnSyatekiWf_Howl(EnSyatekiWf* this, PlayState* play) {
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
this->unk_29A--;
|
||||
if (this->unk_29A == 0) {
|
||||
func_80A20378(this);
|
||||
this->timer--;
|
||||
if (this->timer == 0) {
|
||||
EnSyatekiWf_SetupRun(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A20858(EnSyatekiWf* this, PlayState* play) {
|
||||
void EnSyatekiWf_SetupDead(EnSyatekiWf* this, PlayState* play) {
|
||||
EnSyatekiMan* syatekiMan = (EnSyatekiMan*)this->actor.parent;
|
||||
|
||||
this->unk_298 = 0;
|
||||
this->isActive = false;
|
||||
this->actor.speedXZ = 0.0f;
|
||||
EffectSsExtra_Spawn(play, &this->actor.world.pos, &D_80A20EDC, &D_80A20EE8, 5, 2);
|
||||
EffectSsExtra_Spawn(play, &this->actor.world.pos, &sVelocity, &sAccel, 5, 2);
|
||||
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_WOLFOS_DEAD);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, 6);
|
||||
Actor_ChangeAnimationByInfo(&this->skelAnime, sAnimationInfo, EN_SYATEKI_WF_ANIM_REAR_UP_FALL_OVER);
|
||||
syatekiMan->score += 100;
|
||||
this->actionFunc = func_80A208F8;
|
||||
this->actionFunc = EnSyatekiWf_Dead;
|
||||
}
|
||||
|
||||
void func_80A208F8(EnSyatekiWf* this, PlayState* play) {
|
||||
void EnSyatekiWf_Dead(EnSyatekiWf* this, PlayState* play) {
|
||||
s32 pad;
|
||||
|
||||
if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) {
|
||||
func_80A201CC(this);
|
||||
EnSyatekiWf_SetupWaitForSignal(this);
|
||||
} else {
|
||||
Vec3f sp68;
|
||||
Vec3f sp5C = D_80A20FC4;
|
||||
Vec3f firePos;
|
||||
Vec3f sFireVelocityAndAccel = { 0.0f, 0.5f, 0.0f };
|
||||
s32 i;
|
||||
|
||||
for (i = (s32)this->skelAnime.animLength - (s32)this->skelAnime.curFrame; i >= 0; i--) {
|
||||
sp68.x = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.x;
|
||||
sp68.z = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.z;
|
||||
sp68.y = randPlusMinusPoint5Scaled(50.0f) + (this->actor.world.pos.y + 20.0f);
|
||||
func_800B3030(play, &sp68, &sp5C, &sp5C, 0x64, 0, 2);
|
||||
firePos.x = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.x;
|
||||
firePos.z = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.z;
|
||||
firePos.y = randPlusMinusPoint5Scaled(50.0f) + (this->actor.world.pos.y + 20.0f);
|
||||
func_800B3030(play, &firePos, &sFireVelocityAndAccel, &sFireVelocityAndAccel, 100, 0, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -402,7 +420,7 @@ void EnSyatekiWf_Update(Actor* thisx, PlayState* play2) {
|
|||
PlayState* play = play2;
|
||||
EnSyatekiWf* this = THIS;
|
||||
|
||||
if (this->actionFunc != func_80A20284) {
|
||||
if (this->actionFunc != EnSyatekiWf_WaitForSignal) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
}
|
||||
|
||||
|
|
@ -417,26 +435,34 @@ void EnSyatekiWf_Update(Actor* thisx, PlayState* play2) {
|
|||
Math_SmoothStepToS(&this->actor.shape.rot.z, 0, 1, 0x3E8, 0);
|
||||
}
|
||||
|
||||
if ((this->unk_2B4.base.acFlags & AC_HIT) || (this->unk_300.base.acFlags & AC_HIT) ||
|
||||
(this->unk_34C.base.acFlags & AC_HIT)) {
|
||||
this->unk_2B4.base.acFlags &= ~AC_HIT;
|
||||
this->unk_300.base.acFlags &= ~AC_HIT;
|
||||
this->unk_34C.base.acFlags &= ~AC_HIT;
|
||||
if ((this->bodyCollider.base.acFlags & AC_HIT) || (this->tailCollider.base.acFlags & AC_HIT) ||
|
||||
(this->headCollider.base.acFlags & AC_HIT)) {
|
||||
this->bodyCollider.base.acFlags &= ~AC_HIT;
|
||||
this->tailCollider.base.acFlags &= ~AC_HIT;
|
||||
this->headCollider.base.acFlags &= ~AC_HIT;
|
||||
|
||||
// The Wolfos always starts with 2 health, so the subtraction below is guaranteed to kill it;
|
||||
// the else-block is never reached in practice. If you *could* damage the Wolfos without killing
|
||||
// it, then the number "30" would appear every time you hit it, and the player's displayed score
|
||||
// would increase by 30. However, the else-block doesn't increase the shooting gallery man's
|
||||
// "score" variable, so it would become desynchronized from the displayed score. This could cause
|
||||
// weird behavior, like not getting a free replay after finishing a game with 2000 or more points.
|
||||
this->actor.colChkInfo.health -= 2;
|
||||
if (this->actor.colChkInfo.health == 0) {
|
||||
Audio_PlayFanfare(NA_BGM_GET_ITEM | 0x900);
|
||||
func_80A20858(this, play);
|
||||
EnSyatekiWf_SetupDead(this, play);
|
||||
} else {
|
||||
play_sound(NA_SE_SY_TRE_BOX_APPEAR);
|
||||
EffectSsExtra_Spawn(play, &this->actor.world.pos, &D_80A20EDC, &D_80A20EE8, 3, 0);
|
||||
EffectSsExtra_Spawn(play, &this->actor.world.pos, &sVelocity, &sAccel, 3, 0);
|
||||
}
|
||||
}
|
||||
|
||||
Collider_UpdateCylinder(&this->actor, &this->unk_2B4);
|
||||
if ((this->actionFunc != func_80A20284) && (this->actionFunc != func_80A208F8) && (this->actor.draw != NULL)) {
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->unk_300.base);
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->unk_2B4.base);
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->unk_34C.base);
|
||||
Collider_UpdateCylinder(&this->actor, &this->bodyCollider);
|
||||
if ((this->actionFunc != EnSyatekiWf_WaitForSignal) && (this->actionFunc != EnSyatekiWf_Dead) &&
|
||||
(this->actor.draw != NULL)) {
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->tailCollider.base);
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->bodyCollider.base);
|
||||
CollisionCheck_SetAC(play, &play->colChkCtx, &this->headCollider.base);
|
||||
this->actor.focus.pos = this->actor.world.pos;
|
||||
this->actor.focus.pos.y += 25.0f;
|
||||
}
|
||||
|
|
@ -455,19 +481,26 @@ s32 EnSyatekiWf_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Ve
|
|||
}
|
||||
|
||||
void EnSyatekiWf_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* thisx) {
|
||||
static Vec3f sTailColliderOffset = { 1200.0f, 0.0f, 0.0f };
|
||||
EnSyatekiWf* this = THIS;
|
||||
Vec3f sp18;
|
||||
Vec3f tailColliderPos;
|
||||
|
||||
Collider_UpdateSpheres(limbIndex, &this->unk_34C);
|
||||
Collider_UpdateSpheres(limbIndex, &this->headCollider);
|
||||
if (limbIndex == WOLFOS_NORMAL_LIMB_TAIL) {
|
||||
Matrix_MultVec3f(&D_80A20FD0, &sp18);
|
||||
this->unk_300.dim.pos.x = sp18.x;
|
||||
this->unk_300.dim.pos.y = sp18.y;
|
||||
this->unk_300.dim.pos.z = sp18.z;
|
||||
Matrix_MultVec3f(&sTailColliderOffset, &tailColliderPos);
|
||||
this->tailCollider.dim.pos.x = tailColliderPos.x;
|
||||
this->tailCollider.dim.pos.y = tailColliderPos.y;
|
||||
this->tailCollider.dim.pos.z = tailColliderPos.z;
|
||||
}
|
||||
}
|
||||
|
||||
void EnSyatekiWf_Draw(Actor* thisx, PlayState* play) {
|
||||
static TexturePtr sEyeTextures[] = {
|
||||
gWolfosNormalEyeOpenTex,
|
||||
gWolfosNormalEyeHalfTex,
|
||||
gWolfosNormalEyeNarrowTex,
|
||||
gWolfosNormalEyeHalfTex,
|
||||
};
|
||||
EnSyatekiWf* this = THIS;
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx);
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
#include "global.h"
|
||||
#include "objects/object_wf/object_wf.h"
|
||||
|
||||
#define EN_SYATEKI_WF_GET_PARAM_F0(thisx) (((thisx)->params & 0xF0) >> 4)
|
||||
#define EN_SYATEKI_WF_GET_POINT_TO_HOWL(thisx) (((thisx)->params & 0xF0) >> 4)
|
||||
#define EN_SYATEKI_WF_GET_INDEX(thisx) (((thisx)->params & 0xFF00) >> 8)
|
||||
#define EN_SYATEKI_WF_PARAMS(index, unkF0, unused) (((index << 8) & 0xFF00) | ((unkF0 << 4) & 0xF0) | (unused & 0xF))
|
||||
#define EN_SYATEKI_WF_PARAMS(index, pointToHowl, unused) (((index << 8) & 0xFF00) | ((pointToHowl << 4) & 0xF0) | (unused & 0xF))
|
||||
|
||||
struct EnSyatekiWf;
|
||||
|
||||
|
|
@ -19,19 +19,19 @@ typedef struct EnSyatekiWf {
|
|||
/* 0x20C */ Vec3s morphTable[WOLFOS_NORMAL_LIMB_MAX];
|
||||
/* 0x290 */ UNK_TYPE1 unk_290[0x4];
|
||||
/* 0x294 */ EnSyatekiWfActionFunc actionFunc;
|
||||
/* 0x298 */ s16 unk_298;
|
||||
/* 0x29A */ s16 unk_29A;
|
||||
/* 0x29C */ s16 unk_29C;
|
||||
/* 0x2A0 */ Vec3s* unk_2A0;
|
||||
/* 0x2A4 */ s16 unk_2A4;
|
||||
/* 0x2A6 */ s16 unk_2A6;
|
||||
/* 0x2A8 */ s16 unk_2A8;
|
||||
/* 0x2AC */ f32 unk_2AC;
|
||||
/* 0x298 */ s16 isActive;
|
||||
/* 0x29A */ s16 timer;
|
||||
/* 0x29C */ s16 waitTimer;
|
||||
/* 0x2A0 */ Vec3s* pathPoints;
|
||||
/* 0x2A4 */ s16 currentPointIndex;
|
||||
/* 0x2A6 */ s16 maxPointIndex;
|
||||
/* 0x2A8 */ s16 yawTarget;
|
||||
/* 0x2AC */ f32 unk_2AC; // set to 10.0f, but never used
|
||||
/* 0x2B0 */ u8 eyeIndex;
|
||||
/* 0x2B4 */ ColliderCylinder unk_2B4;
|
||||
/* 0x300 */ ColliderCylinder unk_300;
|
||||
/* 0x34C */ ColliderJntSph unk_34C;
|
||||
/* 0x36C */ ColliderJntSphElement unk_36C[1];
|
||||
/* 0x2B4 */ ColliderCylinder bodyCollider;
|
||||
/* 0x300 */ ColliderCylinder tailCollider;
|
||||
/* 0x34C */ ColliderJntSph headCollider;
|
||||
/* 0x36C */ ColliderJntSphElement headColliderElements[1];
|
||||
/* 0x3AC */ UNK_TYPE1 unk_3AC[0x20];
|
||||
} EnSyatekiWf; // size = 0x3CC
|
||||
|
||||
|
|
|
|||
|
|
@ -317,7 +317,7 @@ void EnWf_Init(Actor* thisx, PlayState* play) {
|
|||
Actor_SetScale(&this->actor, 0.0075f);
|
||||
|
||||
if (this->actor.params == 0) {
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gWolfosNormalSkel, &gWolfosWaitingAnim, this->jointTable,
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gWolfosNormalSkel, &gWolfosWaitAnim, this->jointTable,
|
||||
this->morphTable, WOLFOS_NORMAL_LIMB_MAX);
|
||||
this->actor.hintId = TATL_HINT_ID_WOLFOS;
|
||||
CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable2, &sColChkInfoInit);
|
||||
|
|
@ -325,7 +325,7 @@ void EnWf_Init(Actor* thisx, PlayState* play) {
|
|||
this->collider1.elements[1].info.toucher.damage = 8;
|
||||
this->actor.colChkInfo.health = 6;
|
||||
} else {
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gWolfosWhiteSkel, &gWolfosWaitingAnim, this->jointTable,
|
||||
SkelAnime_InitFlex(play, &this->skelAnime, &gWolfosWhiteSkel, &gWolfosWaitAnim, this->jointTable,
|
||||
this->morphTable, WOLFOS_WHITE_LIMB_MAX);
|
||||
this->actor.hintId = TATL_HINT_ID_WHITE_WOLFOS;
|
||||
CollisionCheck_SetInfo(&this->actor.colChkInfo, &sDamageTable1, &sColChkInfoInit);
|
||||
|
|
@ -549,7 +549,7 @@ void func_80990F50(EnWf* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_80990FC8(EnWf* this) {
|
||||
Animation_Change(&this->skelAnime, &gWolfosRearingUpFallingOverAnim, 0.5f, 0.0f, 7.0f, ANIMMODE_ONCE_INTERP, 0.0f);
|
||||
Animation_Change(&this->skelAnime, &gWolfosRearUpFallOverAnim, 0.5f, 0.0f, 7.0f, ANIMMODE_ONCE_INTERP, 0.0f);
|
||||
this->unk_2A0 = 5;
|
||||
this->actor.flags |= ACTOR_FLAG_1;
|
||||
this->actionFunc = func_80991040;
|
||||
|
|
@ -572,7 +572,7 @@ void func_80991040(EnWf* this, PlayState* play) {
|
|||
void func_809910F0(EnWf* this) {
|
||||
this->collider2.base.acFlags &= ~AC_ON;
|
||||
this->actor.speedXZ = 0.0f;
|
||||
Animation_Change(&this->skelAnime, &gWolfosRearingUpFallingOverAnim, 0.5f, 0.0f, 7.0f, ANIMMODE_ONCE_INTERP, -5.0f);
|
||||
Animation_Change(&this->skelAnime, &gWolfosRearUpFallOverAnim, 0.5f, 0.0f, 7.0f, ANIMMODE_ONCE_INTERP, -5.0f);
|
||||
this->unk_2A0 = 5;
|
||||
this->actionFunc = func_80991174;
|
||||
}
|
||||
|
|
@ -591,7 +591,7 @@ void func_80991174(EnWf* this, PlayState* play) {
|
|||
|
||||
void func_80991200(EnWf* this) {
|
||||
this->collider2.base.acFlags |= AC_ON;
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosWaitingAnim, -4.0f);
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosWaitAnim, -4.0f);
|
||||
this->unk_2A0 = (s32)Rand_ZeroFloat(10.0f) + 2;
|
||||
this->actor.world.rot.y = this->actor.shape.rot.y;
|
||||
this->actionFunc = func_80991280;
|
||||
|
|
@ -642,7 +642,7 @@ void func_80991280(EnWf* this, PlayState* play) {
|
|||
|
||||
void func_80991438(EnWf* this) {
|
||||
this->collider2.base.acFlags |= AC_ON;
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunAnim, -4.0f);
|
||||
this->actor.world.rot.y = this->actor.shape.rot.y;
|
||||
this->actor.speedXZ = 8.0f;
|
||||
this->actionFunc = func_8099149C;
|
||||
|
|
@ -703,7 +703,7 @@ void func_8099149C(EnWf* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_80991738(EnWf* this) {
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosSidesteppingAnim, -4.0f);
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosSidestepAnim, -4.0f);
|
||||
this->actionFunc = func_8099177C;
|
||||
}
|
||||
|
||||
|
|
@ -755,7 +755,7 @@ void func_8099177C(EnWf* this, PlayState* play) {
|
|||
|
||||
void func_80991948(EnWf* this) {
|
||||
this->collider2.base.acFlags |= AC_ON;
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunAnim, -4.0f);
|
||||
if (Rand_ZeroOne() > 0.5f) {
|
||||
this->unk_29A = 16000;
|
||||
} else {
|
||||
|
|
@ -809,7 +809,7 @@ void func_809919F4(EnWf* this, PlayState* play) {
|
|||
|
||||
void func_80991C04(EnWf* this) {
|
||||
this->collider2.base.acFlags |= AC_ON;
|
||||
Animation_PlayOnce(&this->skelAnime, &gWolfosSlashingAnim);
|
||||
Animation_PlayOnce(&this->skelAnime, &gWolfosSlashAnim);
|
||||
this->collider1.base.atFlags &= ~AT_BOUNCED;
|
||||
this->actor.shape.rot.y = this->actor.yawTowardsPlayer;
|
||||
this->unk_2A0 = 7;
|
||||
|
|
@ -879,7 +879,7 @@ void func_80991FD8(EnWf* this) {
|
|||
if (this->skelAnime.curFrame > 15.0f) {
|
||||
phi_f0 = 15.0f;
|
||||
}
|
||||
Animation_Change(&this->skelAnime, &gWolfosSlashingAnim, -0.5f, this->skelAnime.curFrame - 1.0f, phi_f0,
|
||||
Animation_Change(&this->skelAnime, &gWolfosSlashAnim, -0.5f, this->skelAnime.curFrame - 1.0f, phi_f0,
|
||||
ANIMMODE_ONCE_INTERP, 0.0f);
|
||||
this->collider1.base.atFlags &= ~AT_ON;
|
||||
this->actionFunc = func_80992068;
|
||||
|
|
@ -923,7 +923,7 @@ void func_80992068(EnWf* this, PlayState* play) {
|
|||
|
||||
void func_8099223C(EnWf* this) {
|
||||
this->collider2.base.acFlags &= ~AC_ON;
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &gWolfosBackflippingAnim, -3.0f);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &gWolfosBackflipAnim, -3.0f);
|
||||
this->unk_2A0 = 0;
|
||||
this->actor.speedXZ = -6.0f;
|
||||
this->actor.shape.rot.y = this->actor.yawTowardsPlayer;
|
||||
|
|
@ -1021,8 +1021,8 @@ void func_809924EC(EnWf* this, PlayState* play) {
|
|||
|
||||
void func_809926D0(EnWf* this) {
|
||||
this->collider2.base.acFlags &= ~AC_ON;
|
||||
Animation_Change(&this->skelAnime, &gWolfosBackflippingAnim, -1.0f,
|
||||
Animation_GetLastFrame(&gWolfosBackflippingAnim.common), 0.0f, ANIMMODE_ONCE, -3.0f);
|
||||
Animation_Change(&this->skelAnime, &gWolfosBackflipAnim, -1.0f, Animation_GetLastFrame(&gWolfosBackflipAnim.common),
|
||||
0.0f, ANIMMODE_ONCE, -3.0f);
|
||||
this->unk_2A0 = 0;
|
||||
this->actor.speedXZ = 6.5f;
|
||||
this->actor.velocity.y = 15.0f;
|
||||
|
|
@ -1053,8 +1053,8 @@ void func_8099282C(EnWf* this) {
|
|||
this->collider1.base.atFlags &= ~AT_ON;
|
||||
this->unk_2A0 = 10;
|
||||
this->actor.speedXZ = 0.0f;
|
||||
Animation_Change(&this->skelAnime, &gWolfosBlockingAnim, -1.0f, Animation_GetLastFrame(&gWolfosBlockingAnim.common),
|
||||
0.0f, ANIMMODE_ONCE, -2.0f);
|
||||
Animation_Change(&this->skelAnime, &gWolfosBlockAnim, -1.0f, Animation_GetLastFrame(&gWolfosBlockAnim.common), 0.0f,
|
||||
ANIMMODE_ONCE, -2.0f);
|
||||
this->actionFunc = func_809928CC;
|
||||
}
|
||||
|
||||
|
|
@ -1091,7 +1091,7 @@ void func_80992A74(EnWf* this, PlayState* play) {
|
|||
f32 temp_f0;
|
||||
|
||||
this->collider2.base.acFlags |= AC_ON;
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunAnim, -4.0f);
|
||||
player = GET_PLAYER(play);
|
||||
temp_f0 = Math_SinS((player->actor.shape.rot.y + this->unk_29A) - this->actor.yawTowardsPlayer);
|
||||
if (temp_f0 > 0.0f) {
|
||||
|
|
@ -1153,7 +1153,7 @@ void func_80992B8C(EnWf* this, PlayState* play) {
|
|||
|
||||
void func_80992D6C(EnWf* this) {
|
||||
this->collider2.base.acFlags &= ~AC_ON;
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &gWolfosRearingUpFallingOverAnim, -4.0f);
|
||||
Animation_MorphToPlayOnce(&this->skelAnime, &gWolfosRearUpFallOverAnim, -4.0f);
|
||||
this->actor.world.rot.y = this->actor.yawTowardsPlayer;
|
||||
if (this->actor.bgCheckFlags & 1) {
|
||||
this->actor.speedXZ = -6.0f;
|
||||
|
|
@ -1205,7 +1205,7 @@ void func_80992E0C(EnWf* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_80992FD4(EnWf* this) {
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosWaitingAnim, -4.0f);
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosWaitAnim, -4.0f);
|
||||
this->actionFunc = func_80993018;
|
||||
}
|
||||
|
||||
|
|
@ -1232,7 +1232,7 @@ void func_80993018(EnWf* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_80993148(EnWf* this) {
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunAnim, -4.0f);
|
||||
this->actor.speedXZ = 0.0f;
|
||||
this->actionFunc = func_80993194;
|
||||
}
|
||||
|
|
@ -1277,7 +1277,7 @@ void func_80993194(EnWf* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_80993350(EnWf* this) {
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunAnim, -4.0f);
|
||||
Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_WOLFOS_APPEAR);
|
||||
this->actionFunc = func_809933A0;
|
||||
}
|
||||
|
|
@ -1317,7 +1317,7 @@ void func_809933A0(EnWf* this, PlayState* play) {
|
|||
}
|
||||
|
||||
void func_80993524(EnWf* this) {
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunningAnim, -4.0f);
|
||||
Animation_MorphToLoop(&this->skelAnime, &gWolfosRunAnim, -4.0f);
|
||||
this->actor.speedXZ = 6.0f;
|
||||
this->actor.world.rot.y = this->actor.shape.rot.y;
|
||||
this->actionFunc = func_8099357C;
|
||||
|
|
|
|||
|
|
@ -9125,8 +9125,8 @@
|
|||
0x809CA27C:("BgIcicle_Draw",),
|
||||
0x809CA3F0:("EnSyatekiCrow_Init",),
|
||||
0x809CA5A8:("EnSyatekiCrow_Destroy",),
|
||||
0x809CA5D4:("EnSyatekiCrow_SetupWaitForSpawn",),
|
||||
0x809CA67C:("EnSyatekiCrow_WaitForSpawn",),
|
||||
0x809CA5D4:("EnSyatekiCrow_SetupWaitForSignal",),
|
||||
0x809CA67C:("EnSyatekiCrow_WaitForSignal",),
|
||||
0x809CA71C:("EnSyatekiCrow_SetupWaitToMove",),
|
||||
0x809CA840:("EnSyatekiCrow_WaitToMove",),
|
||||
0x809CA8E4:("EnSyatekiCrow_Fly",),
|
||||
|
|
@ -9876,21 +9876,21 @@
|
|||
0x80A1FC50:("DmHina_Draw",),
|
||||
0x80A1FE50:("EnSyatekiWf_Init",),
|
||||
0x80A200A0:("EnSyatekiWf_Destroy",),
|
||||
0x80A200E0:("func_80A200E0",),
|
||||
0x80A201CC:("func_80A201CC",),
|
||||
0x80A20284:("func_80A20284",),
|
||||
0x80A2030C:("func_80A2030C",),
|
||||
0x80A20320:("func_80A20320",),
|
||||
0x80A20378:("func_80A20378",),
|
||||
0x80A203DC:("func_80A203DC",),
|
||||
0x80A20670:("func_80A20670",),
|
||||
0x80A206DC:("func_80A206DC",),
|
||||
0x80A20710:("func_80A20710",),
|
||||
0x80A2075C:("func_80A2075C",),
|
||||
0x80A2079C:("func_80A2079C",),
|
||||
0x80A20800:("func_80A20800",),
|
||||
0x80A20858:("func_80A20858",),
|
||||
0x80A208F8:("func_80A208F8",),
|
||||
0x80A200E0:("EnSyatekiWf_InitPathStart",),
|
||||
0x80A201CC:("EnSyatekiWf_SetupWaitForSignal",),
|
||||
0x80A20284:("EnSyatekiWf_WaitForSignal",),
|
||||
0x80A2030C:("EnSyatekiWf_SetupWaitToMove",),
|
||||
0x80A20320:("EnSyatekiWf_WaitToMove",),
|
||||
0x80A20378:("EnSyatekiWf_SetupRun",),
|
||||
0x80A203DC:("EnSyatekiWf_Run",),
|
||||
0x80A20670:("EnSyatekiWf_SetupJump",),
|
||||
0x80A206DC:("EnSyatekiWf_Jump",),
|
||||
0x80A20710:("EnSyatekiWf_SetupLand",),
|
||||
0x80A2075C:("EnSyatekiWf_Land",),
|
||||
0x80A2079C:("EnSyatekiWf_SetupHowl",),
|
||||
0x80A20800:("EnSyatekiWf_Howl",),
|
||||
0x80A20858:("EnSyatekiWf_SetupDead",),
|
||||
0x80A208F8:("EnSyatekiWf_Dead",),
|
||||
0x80A20A50:("EnSyatekiWf_Update",),
|
||||
0x80A20CF4:("EnSyatekiWf_OverrideLimbDraw",),
|
||||
0x80A20D10:("EnSyatekiWf_PostLimbDraw",),
|
||||
|
|
@ -10063,10 +10063,10 @@
|
|||
0x80A2B390:("BgDblueMovebg_Draw",),
|
||||
0x80A2BC00:("EnSyatekiDekunuts_Init",),
|
||||
0x80A2BE28:("EnSyatekiDekunuts_Destroy",),
|
||||
0x80A2BE54:("EnSyatekiDekunuts_SetupWaitForSpawn",),
|
||||
0x80A2BF18:("EnSyatekiDekunuts_WaitForSpawn",),
|
||||
0x80A2BFC4:("EnSyatekiDekunuts_SetupSpawn",),
|
||||
0x80A2C0F8:("EnSyatekiDekunuts_Spawn",),
|
||||
0x80A2BE54:("EnSyatekiDekunuts_SetupWaitForSignal",),
|
||||
0x80A2BF18:("EnSyatekiDekunuts_WaitForSignal",),
|
||||
0x80A2BFC4:("EnSyatekiDekunuts_SetupWaitToStart",),
|
||||
0x80A2C0F8:("EnSyatekiDekunuts_WaitToStart",),
|
||||
0x80A2C150:("EnSyatekiDekunuts_SetupWaitToEmerge",),
|
||||
0x80A2C168:("EnSyatekiDekunuts_WaitToEmerge",),
|
||||
0x80A2C1AC:("EnSyatekiDekunuts_SetupEmerge",),
|
||||
|
|
|
|||
|
|
@ -10954,13 +10954,13 @@
|
|||
0x80A20EA0:("D_80A20EA0","UNK_TYPE1","",0x1),
|
||||
0x80A20EAC:("D_80A20EAC","UNK_PTR","",0x4),
|
||||
0x80A20EB0:("D_80A20EB0","UNK_TYPE1","",0x1),
|
||||
0x80A20EDC:("D_80A20EDC","UNK_TYPE1","",0x1),
|
||||
0x80A20EE8:("D_80A20EE8","UNK_TYPE1","",0x1),
|
||||
0x80A20EDC:("sVelocity","UNK_TYPE1","",0x1),
|
||||
0x80A20EE8:("sAccel","UNK_TYPE1","",0x1),
|
||||
0x80A20EF4:("En_Syateki_Wf_InitVars","UNK_TYPE1","",0x1),
|
||||
0x80A20F14:("D_80A20F14","UNK_PTR","",0x4),
|
||||
0x80A20FBC:("D_80A20FBC","UNK_TYPE1","",0x1),
|
||||
0x80A20FC4:("D_80A20FC4","UNK_TYPE4","",0x4),
|
||||
0x80A20FD0:("D_80A20FD0","UNK_TYPE1","",0x1),
|
||||
0x80A20FC4:("sFireVelocityAndAccel","UNK_TYPE4","",0x4),
|
||||
0x80A20FD0:("sTailColliderOffset","UNK_TYPE1","",0x1),
|
||||
0x80A20FDC:("D_80A20FDC","UNK_TYPE1","",0x1),
|
||||
0x80A20FF0:("D_80A20FF0","f32","",0x4),
|
||||
0x80A229F0:("Obj_Skateblock_InitVars","UNK_TYPE1","",0x1),
|
||||
|
|
|
|||
Loading…
Reference in New Issue