Files
banjo-kazooie/src/MM/ch/grublin.c

92 lines
2.4 KiB
C

/*!!!DONE!!!*/
#include <ultra64.h>
#include "functions.h"
#include "variables.h"
typedef struct chgrublin_s{
f32 unk0;
f32 unk4;
u8 unk8;
u8 unk9;
u8 unkA;
u8 unkB;
u32 unkC_31:3;
u32 unkC_28:1;
u32 padC_27:28;
s16 unk10;
s16 unk12;
f32 unk14; //90
u8 unk18[0x18];
s32 unk30;
void (*unk34)(ActorMarker *, s32);
}ActorLocal_Grublin;
void subaddie_set_state_with_direction(Actor *, s32, f32, s32);
void func_80388A80(Actor *);
/* .data */
ActorAnimationInfo chGrublinAnimations[11] = {
{0, 0.0f},
{ASSET_62_ANIM_GRUBLIN_IDLE, 4.0f},
{ASSET_62_ANIM_GRUBLIN_IDLE, 0.7f},
{ASSET_63_ANIM_GRUBLIN_WALK, 0.7f},
{ASSET_64_ANIM_GRUBLIN_JUMP, 0.9f},
{ASSET_94_ANIM_GRUBLIN_DIE, 1.0f},
{ASSET_62_ANIM_GRUBLIN_IDLE, 1.5f},
{ASSET_63_ANIM_GRUBLIN_WALK, 0.5f},
{ASSET_62_ANIM_GRUBLIN_IDLE, 1.5f},
{ASSET_62_ANIM_GRUBLIN_IDLE, 1000000.0f},
{ASSET_62_ANIM_GRUBLIN_IDLE, 1000000.0f}
};
ActorInfo chgrublinInfo = { MARKER_5_GRUBLIN, ACTOR_6_GRUBLIN, ASSET_3C5_MODEL_GRUBLIN,
1, chGrublinAnimations,
func_80388A80, func_80326224, actor_draw,
2500, 0, 1.0f, 0
};
/* .code */
void func_803889A0(ActorMarker *this, s32 arg1){
Actor *actorPtr;
actorPtr = marker_getActor(this);
subaddie_set_state_with_direction(actorPtr, 5, 0.0f, 1);
actor_playAnimationOnce(actorPtr);
FUNC_8030E8B4(SFX_C2_GRUBLIN_EGH, 1.0f, 32000, actorPtr->position, 1250, 2500);
actor_collisionOff(actorPtr);
}
void func_80388A04(Actor *this){
ActorLocal_Grublin *local = (ActorLocal_Grublin *)&this->local;
local->unk0 = 1.5f;
local->unk4 = 2.3f;
local->unk8 = 5;
local->unk9 = 7;
local->unkC_31 = 2;
local->unkA = 9;
local->unkB = 9;
local->unk10 = 0x29;
local->unk12 = 25000;
local->unkC_28 = 1;
local->unk30 = 0;
local->unk34 = func_803889A0;
local->unk14 = 1.0f;
}
void func_80388A80(Actor *this) {
if (!this->volatile_initialized){
func_80388A04(this);
}
func_802DB5A0(this);
if (this->state == 5) {
if (actor_animationIsAt(this, 0.18f)) {
FUNC_8030E8B4(SFX_2_CLAW_SWIPE, 1.0f, 28000, this->position, 1250, 2500);
}
if (actor_animationIsAt(this, 0.7f)) {
FUNC_8030E8B4(SFX_1F_HITTING_AN_ENEMY_3, 1.0f, 28000, this->position, 1250, 2500);
}
}
}