|
|
@@ -6,41 +6,42 @@ extern void spawnQueue_bundle_f32(s32, s32, s32, s32);
|
|
|
|
extern f32 func_80257204(f32, f32, f32, f32);
|
|
|
|
extern f32 func_80257204(f32, f32, f32, f32);
|
|
|
|
extern ActorProp * func_80320EB0(ActorMarker *, f32, s32);
|
|
|
|
extern ActorProp * func_80320EB0(ActorMarker *, f32, s32);
|
|
|
|
|
|
|
|
|
|
|
|
void chClam_update(Actor *this);
|
|
|
|
void TTC_Clam_updateFunc(Actor *this);
|
|
|
|
|
|
|
|
|
|
|
|
/* .data */
|
|
|
|
/* .data */
|
|
|
|
ActorAnimationInfo chClamAnimations[] = {
|
|
|
|
ActorAnimationInfo TTC_CLAM_ANIMATIONS[4] = {
|
|
|
|
{0x00, 0.0f},
|
|
|
|
{0x00, 0.0f},
|
|
|
|
{ASSET_AA_ANIM_CLAM_IDLE, 2.0f},
|
|
|
|
{ASSET_AA_ANIM_CLAM_IDLE, 2.0f},
|
|
|
|
{ASSET_24_ANIM_CLAM_HOP, 1.0f},
|
|
|
|
{ASSET_24_ANIM_CLAM_HOP, 1.0f},
|
|
|
|
{ASSET_AB_ANIM_CLAM_EAT, 0.6f}
|
|
|
|
{ASSET_AB_ANIM_CLAM_EAT, 0.6f}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
ActorInfo chClam = {
|
|
|
|
ActorInfo TTC_CLAM_ACTOR = {
|
|
|
|
MARKER_15_CLAM, ACTOR_69_CLAM, ASSET_351_MODEL_CLAM,
|
|
|
|
MARKER_15_CLAM, ACTOR_69_CLAM, ASSET_351_MODEL_CLAM,
|
|
|
|
0x1, chClamAnimations,
|
|
|
|
0x1, TTC_CLAM_ANIMATIONS,
|
|
|
|
chClam_update, func_80326224, actor_draw,
|
|
|
|
TTC_Clam_updateFunc, func_80326224, actor_draw,
|
|
|
|
4500, 0x366, 1.6f, 0
|
|
|
|
4500, 0x366, 1.6f, 0
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* .code */
|
|
|
|
/* .code */
|
|
|
|
void __chClam_func_803863F0(enum sfx_e sfx_id, f32 arg1, s32 arg2, f32 position[3], f32 arg4, f32 arg5){
|
|
|
|
void TTC_Clam_playSfx(enum sfx_e sfx_id, f32 volume, s32 sampleRate, f32 position[3], f32 minFadeDistance, f32 maxFadeDistance){
|
|
|
|
if(func_803114B0()){
|
|
|
|
if(func_803114B0()){
|
|
|
|
arg2 -= 10000;
|
|
|
|
sampleRate -= 10000;
|
|
|
|
if(arg2 < 0)
|
|
|
|
if(sampleRate < 0)
|
|
|
|
arg2 = 0;
|
|
|
|
sampleRate = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
func_8030E878(sfx_id, arg1, arg2, position, arg4, arg5);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void __chClam_func_80386454(Actor *this){
|
|
|
|
func_8030E878(sfx_id, volume, sampleRate, position, minFadeDistance, maxFadeDistance);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void TTC_Clam_func_80386454(Actor *this){
|
|
|
|
subaddie_set_state_with_direction(this, 1, 0.01f, 1);
|
|
|
|
subaddie_set_state_with_direction(this, 1, 0.01f, 1);
|
|
|
|
actor_loopAnimation(this);
|
|
|
|
actor_loopAnimation(this);
|
|
|
|
animctrl_setDuration(this->animctrl, randf2(1.9f, 2.1f));
|
|
|
|
animctrl_setDuration(this->animctrl, randf2(1.9f, 2.1f));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool __chClam_updateTarget(Actor *this, f32 arg1) {
|
|
|
|
bool TTC_Clam_updateFuncTarget(Actor *this, f32 arg1) {
|
|
|
|
f32 egg_dist;
|
|
|
|
f32 egg_dist;
|
|
|
|
f32 red_feather_dist;
|
|
|
|
f32 red_feather_dist;
|
|
|
|
f32 pad;
|
|
|
|
f32 pad;
|
|
|
@@ -88,13 +89,13 @@ bool __chClam_updateTarget(Actor *this, f32 arg1) {
|
|
|
|
if ((volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) ? 0 : 0x11) < this->actor_specific_1_f) {
|
|
|
|
if ((volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) ? 0 : 0x11) < this->actor_specific_1_f) {
|
|
|
|
this->actor_specific_1_f = (volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) != 0) ? 0.0f : 17.0f;
|
|
|
|
this->actor_specific_1_f = (volatileFlag_get(VOLATILE_FLAG_C1_IN_FINAL_CHARACTER_PARADE) != 0) ? 0.0f : 17.0f;
|
|
|
|
} else if (sp38 == 0) {
|
|
|
|
} else if (sp38 == 0) {
|
|
|
|
__chClam_func_803863F0(SFX_AE_YUMYUM_TALKING, randf2(0.9f, 1.0f), 22000, this->position, 500.0f, 2000.0f);
|
|
|
|
TTC_Clam_playSfx(SFX_AE_YUMYUM_TALKING, randf2(0.9f, 1.0f), 22000, this->position, 500.0f, 2000.0f);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return TRUE;
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool __chClam_rotateTowardTarget(Actor *this, s32 arg1) {
|
|
|
|
bool TTC_Clam_rotateTowardTarget(Actor *this, s32 arg1) {
|
|
|
|
f32 temp_f0_2;
|
|
|
|
f32 temp_f0_2;
|
|
|
|
s32 position;
|
|
|
|
s32 position;
|
|
|
|
s32 sp2C;
|
|
|
|
s32 sp2C;
|
|
|
@@ -104,7 +105,7 @@ bool __chClam_rotateTowardTarget(Actor *this, s32 arg1) {
|
|
|
|
|
|
|
|
|
|
|
|
animctrl_setDuration(this->animctrl, 1.0f);
|
|
|
|
animctrl_setDuration(this->animctrl, 1.0f);
|
|
|
|
sp2C = (s32) ((f64) (60.0f / (f32) func_8033DD90()) * 0.5);
|
|
|
|
sp2C = (s32) ((f64) (60.0f / (f32) func_8033DD90()) * 0.5);
|
|
|
|
if ((this->unk1C[0] != 0.0f) || !__chClam_updateTarget(this, sp2C)) {
|
|
|
|
if ((this->unk1C[0] != 0.0f) || !__TTC_Clam_updateFuncTarget(this, sp2C)) {
|
|
|
|
if (((f64) animctrl_getAnimTimer(this->animctrl) < 0.1) && ((f64) randf() < 0.5)) {
|
|
|
|
if (((f64) animctrl_getAnimTimer(this->animctrl) < 0.1) && ((f64) randf() < 0.5)) {
|
|
|
|
if (this->unk1C[0] != 0.0f) {
|
|
|
|
if (this->unk1C[0] != 0.0f) {
|
|
|
|
arg1 *= 2;
|
|
|
|
arg1 *= 2;
|
|
|
@@ -136,7 +137,7 @@ bool __chClam_rotateTowardTarget(Actor *this, s32 arg1) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void __chClam_particalEmitterInit(ParticleEmitter *pCtrl, f32 position[3]){
|
|
|
|
void TTC_Clam_particalEmitterInit(ParticleEmitter *pCtrl, f32 position[3]){
|
|
|
|
particleEmitter_setPosition(pCtrl, position);
|
|
|
|
particleEmitter_setPosition(pCtrl, position);
|
|
|
|
func_802EF9F8(pCtrl, 0.7f);
|
|
|
|
func_802EF9F8(pCtrl, 0.7f);
|
|
|
|
func_802EFA18(pCtrl, 3);
|
|
|
|
func_802EFA18(pCtrl, 3);
|
|
|
@@ -156,7 +157,7 @@ void __chClam_emitLargeShellParticles(f32 position[3], s32 count){
|
|
|
|
ParticleEmitter *pCtrl;
|
|
|
|
ParticleEmitter *pCtrl;
|
|
|
|
|
|
|
|
|
|
|
|
pCtrl = partEmitMgr_newEmitter(count);
|
|
|
|
pCtrl = partEmitMgr_newEmitter(count);
|
|
|
|
__chClam_particalEmitterInit(pCtrl, position);
|
|
|
|
TTC_Clam_particalEmitterInit(pCtrl, position);
|
|
|
|
particleEmitter_setModel(pCtrl, ASSET_37C_MODEL_CLAM_LARGE_SHELL_PIECE);
|
|
|
|
particleEmitter_setModel(pCtrl, ASSET_37C_MODEL_CLAM_LARGE_SHELL_PIECE);
|
|
|
|
particleEmitter_setVelocityAndAccelerationRanges(pCtrl, &D_8038C3F4);
|
|
|
|
particleEmitter_setVelocityAndAccelerationRanges(pCtrl, &D_8038C3F4);
|
|
|
|
particleEmitter_setAngularVelocityRange(pCtrl, -600.0f, -600.0f, -600.0f, 600.0f, 600.0f, 600.0f);
|
|
|
|
particleEmitter_setAngularVelocityRange(pCtrl, -600.0f, -600.0f, -600.0f, 600.0f, 600.0f, 600.0f);
|
|
|
@@ -164,7 +165,7 @@ void __chClam_emitLargeShellParticles(f32 position[3], s32 count){
|
|
|
|
particleEmitter_emitN(pCtrl, count);
|
|
|
|
particleEmitter_emitN(pCtrl, count);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void __chClam_emitEyeParticles(f32 position[3], s32 count){
|
|
|
|
void TTC_Clam_emitEyeParticles(f32 position[3], s32 count){
|
|
|
|
static struct41s D_8038C424 = {
|
|
|
|
static struct41s D_8038C424 = {
|
|
|
|
{{-80.0f, 400.0f, -80.0f}, {160.0f, 860.0f, 160.0f}},
|
|
|
|
{{-80.0f, 400.0f, -80.0f}, {160.0f, 860.0f, 160.0f}},
|
|
|
|
{{ 0.0f, -1400.0f, 0.0f}, { 0.0f, -1400.0f, 0.0f}}
|
|
|
|
{{ 0.0f, -1400.0f, 0.0f}, { 0.0f, -1400.0f, 0.0f}}
|
|
|
@@ -172,7 +173,7 @@ void __chClam_emitEyeParticles(f32 position[3], s32 count){
|
|
|
|
ParticleEmitter *pCtrl;
|
|
|
|
ParticleEmitter *pCtrl;
|
|
|
|
|
|
|
|
|
|
|
|
pCtrl = partEmitMgr_newEmitter(count);
|
|
|
|
pCtrl = partEmitMgr_newEmitter(count);
|
|
|
|
__chClam_particalEmitterInit(pCtrl, position);
|
|
|
|
TTC_Clam_particalEmitterInit(pCtrl, position);
|
|
|
|
particleEmitter_setModel(pCtrl, ASSET_37D_MODEL_CLAM_EYE);
|
|
|
|
particleEmitter_setModel(pCtrl, ASSET_37D_MODEL_CLAM_EYE);
|
|
|
|
particleEmitter_setVelocityAndAccelerationRanges(pCtrl, &D_8038C424);
|
|
|
|
particleEmitter_setVelocityAndAccelerationRanges(pCtrl, &D_8038C424);
|
|
|
|
particleEmitter_setAngularVelocityRange(pCtrl, -300.0f, -300.0f, -300.0f, 300.0f, 300.0f, 300.0f);
|
|
|
|
particleEmitter_setAngularVelocityRange(pCtrl, -300.0f, -300.0f, -300.0f, 300.0f, 300.0f, 300.0f);
|
|
|
@@ -180,7 +181,7 @@ void __chClam_emitEyeParticles(f32 position[3], s32 count){
|
|
|
|
particleEmitter_emitN(pCtrl, count);
|
|
|
|
particleEmitter_emitN(pCtrl, count);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void __chClam_emitSmallShellParticles(f32 position[3], s32 count){
|
|
|
|
void TTC_Clam_emitSmallShellParticles(f32 position[3], s32 count){
|
|
|
|
static struct41s D_8038C454 = {
|
|
|
|
static struct41s D_8038C454 = {
|
|
|
|
{{-200.0f, 850.0f, -200.0f}, {400.0f, 1000.0f, 400.0f}},
|
|
|
|
{{-200.0f, 850.0f, -200.0f}, {400.0f, 1000.0f, 400.0f}},
|
|
|
|
{{ 0.0f, -1800.0f, 0.0f}, { 0.0f, -1800.0f, 0.0f}}
|
|
|
|
{{ 0.0f, -1800.0f, 0.0f}, { 0.0f, -1800.0f, 0.0f}}
|
|
|
@@ -188,7 +189,7 @@ void __chClam_emitSmallShellParticles(f32 position[3], s32 count){
|
|
|
|
ParticleEmitter *pCtrl;
|
|
|
|
ParticleEmitter *pCtrl;
|
|
|
|
|
|
|
|
|
|
|
|
pCtrl = partEmitMgr_newEmitter(count);
|
|
|
|
pCtrl = partEmitMgr_newEmitter(count);
|
|
|
|
__chClam_particalEmitterInit(pCtrl, position);
|
|
|
|
TTC_Clam_particalEmitterInit(pCtrl, position);
|
|
|
|
particleEmitter_setModel(pCtrl, ASSET_37E_MODEL_CLAM_SMALL_SHELL_PIECE);
|
|
|
|
particleEmitter_setModel(pCtrl, ASSET_37E_MODEL_CLAM_SMALL_SHELL_PIECE);
|
|
|
|
particleEmitter_setVelocityAndAccelerationRanges(pCtrl, &D_8038C454);
|
|
|
|
particleEmitter_setVelocityAndAccelerationRanges(pCtrl, &D_8038C454);
|
|
|
|
particleEmitter_setAngularVelocityRange(pCtrl, -800.0f, -800.0f, -800.0f, 800.0f, 800.0f, 800.0f);
|
|
|
|
particleEmitter_setAngularVelocityRange(pCtrl, -800.0f, -800.0f, -800.0f, 800.0f, 800.0f, 800.0f);
|
|
|
@@ -196,7 +197,7 @@ void __chClam_emitSmallShellParticles(f32 position[3], s32 count){
|
|
|
|
particleEmitter_emitN(pCtrl, count);
|
|
|
|
particleEmitter_emitN(pCtrl, count);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void __chClam_emitEatencollectibleParticles(f32 position[3], enum asset_e sprite_id, s32 count){
|
|
|
|
void TTC_Clam_emitEatencollectibleParticles(f32 position[3], enum asset_e sprite_id, s32 count){
|
|
|
|
static ParticleScaleAndLifetimeRanges D_8038C484 = {
|
|
|
|
static ParticleScaleAndLifetimeRanges D_8038C484 = {
|
|
|
|
{0.2f, 0.35f},
|
|
|
|
{0.2f, 0.35f},
|
|
|
|
{0.0f, 0.0f},
|
|
|
|
{0.0f, 0.0f},
|
|
|
@@ -221,22 +222,22 @@ void __chClam_emitEatencollectibleParticles(f32 position[3], enum asset_e sprite
|
|
|
|
particleEmitter_emitN(pCtrl, count);
|
|
|
|
particleEmitter_emitN(pCtrl, count);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void __chClam_takeDamage(ActorMarker *this_marker, ActorMarker *other_marker){
|
|
|
|
void TTC_Clam_takeDamage(ActorMarker *this_marker, ActorMarker *other_marker){
|
|
|
|
Actor *this;
|
|
|
|
Actor *this;
|
|
|
|
|
|
|
|
|
|
|
|
this = marker_getActor(this_marker);
|
|
|
|
this = marker_getActor(this_marker);
|
|
|
|
this->marker->collidable = FALSE;
|
|
|
|
this->marker->collidable = FALSE;
|
|
|
|
this->unk138_27 = TRUE;
|
|
|
|
this->unk138_27 = TRUE;
|
|
|
|
__chClam_func_803863F0(SFX_1D_HITTING_AN_ENEMY_1, 1.0f, 26000, this->position, 1500.0f, 2000.0f);
|
|
|
|
TTC_Clam_playSfx(SFX_1D_HITTING_AN_ENEMY_1, 1.0f, 26000, this->position, 1500.0f, 2000.0f);
|
|
|
|
__chClam_func_803863F0(SFX_115_BUZZBOMB_DEATH, 1.2f, 26000, this->position, 1500.0f, 2000.0f);
|
|
|
|
TTC_Clam_playSfx(SFX_115_BUZZBOMB_DEATH, 1.2f, 26000, this->position, 1500.0f, 2000.0f);
|
|
|
|
__chClam_emitLargeShellParticles(this->position, 2);
|
|
|
|
TTC_Clam_emitLargeShellParticles(this->position, 2);
|
|
|
|
__chClam_emitEyeParticles(this->position, 2);
|
|
|
|
TTC_Clam_emitEyeParticles(this->position, 2);
|
|
|
|
__chClam_emitSmallShellParticles(this->position, 0xC);
|
|
|
|
TTC_Clam_emitSmallShellParticles(this->position, 0xC);
|
|
|
|
func_803115C4(0xa14);
|
|
|
|
func_803115C4(0xa14);
|
|
|
|
marker_despawn(this->marker);
|
|
|
|
marker_despawn(this->marker);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void __chClam_playerDropsItem(s32 index, enum item_e item_id){
|
|
|
|
void TTC_Clam_playerDropsItem(s32 index, enum item_e item_id){
|
|
|
|
f32 position[3];
|
|
|
|
f32 position[3];
|
|
|
|
|
|
|
|
|
|
|
|
player_getPosition(position);
|
|
|
|
player_getPosition(position);
|
|
|
@@ -245,22 +246,22 @@ void __chClam_playerDropsItem(s32 index, enum item_e item_id){
|
|
|
|
item_dec(item_id);
|
|
|
|
item_dec(item_id);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void __chClam_attackOther(ActorMarker *this_marker, ActorMarker *other_marker){
|
|
|
|
void TTC_Clam_attackOther(ActorMarker *this_marker, ActorMarker *other_marker){
|
|
|
|
|
|
|
|
|
|
|
|
if(func_80297C6C() == 3) return;
|
|
|
|
if(func_80297C6C() == 3) return;
|
|
|
|
|
|
|
|
|
|
|
|
if( !mapSpecificFlags_get(5) && gcdialog_showText(ASSET_A14_TEXT_UNKNOWN, 0, NULL, NULL, NULL, NULL)){
|
|
|
|
if( !mapSpecificFlags_get(5) && gcdialog_showText(ASSET_A14_TEXT_CLAM_TAUNT, 0, NULL, NULL, NULL, NULL)){
|
|
|
|
mapSpecificFlags_set(5, TRUE);
|
|
|
|
mapSpecificFlags_set(5, TRUE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(item_getCount(ITEM_D_EGGS) != 0)
|
|
|
|
if(item_getCount(ITEM_D_EGGS) != 0)
|
|
|
|
__chClam_playerDropsItem(0xe, ITEM_D_EGGS);
|
|
|
|
TTC_Clam_playerDropsItem(0xe, ITEM_D_EGGS);
|
|
|
|
|
|
|
|
|
|
|
|
if(item_getCount(ITEM_F_RED_FEATHER) != 0)
|
|
|
|
if(item_getCount(ITEM_F_RED_FEATHER) != 0)
|
|
|
|
__chClam_playerDropsItem(0xf, ITEM_F_RED_FEATHER);
|
|
|
|
TTC_Clam_playerDropsItem(0xf, ITEM_F_RED_FEATHER);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void chClam_update(Actor *this){
|
|
|
|
void TTC_Clam_updateFunc(Actor *this){
|
|
|
|
ActorProp *sp4C = func_80320EB0(this->marker, 30.0f, 1);
|
|
|
|
ActorProp *sp4C = func_80320EB0(this->marker, 30.0f, 1);
|
|
|
|
f32 sp48;
|
|
|
|
f32 sp48;
|
|
|
|
s32 sp44;
|
|
|
|
s32 sp44;
|
|
|
@@ -273,7 +274,7 @@ void chClam_update(Actor *this){
|
|
|
|
|
|
|
|
|
|
|
|
if(!this->volatile_initialized){
|
|
|
|
if(!this->volatile_initialized){
|
|
|
|
this->volatile_initialized = TRUE;
|
|
|
|
this->volatile_initialized = TRUE;
|
|
|
|
marker_setCollisionScripts(this->marker, NULL, __chClam_attackOther, __chClam_takeDamage);
|
|
|
|
marker_setCollisionScripts(this->marker, NULL, TTC_Clam_attackOther, TTC_Clam_takeDamage);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(this->state != 3){
|
|
|
|
if(this->state != 3){
|
|
|
@@ -292,16 +293,16 @@ void chClam_update(Actor *this){
|
|
|
|
animctrl_setDuration(this->animctrl, 0.6f);
|
|
|
|
animctrl_setDuration(this->animctrl, 0.6f);
|
|
|
|
marker_despawn(sp4C->marker);
|
|
|
|
marker_despawn(sp4C->marker);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}//L80387140
|
|
|
|
}
|
|
|
|
}//L80387144
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
switch(this->state){
|
|
|
|
switch(this->state){
|
|
|
|
case 1://L80387170
|
|
|
|
case 1://L80387170
|
|
|
|
if(__chClam_rotateTowardTarget(this, 140)){
|
|
|
|
if(__TTC_Clam_rotateTowardTarget(this, 140)){
|
|
|
|
subaddie_set_state_with_direction(this, 2, 0.01f, 1);
|
|
|
|
subaddie_set_state_with_direction(this, 2, 0.01f, 1);
|
|
|
|
actor_playAnimationOnce(this);
|
|
|
|
actor_playAnimationOnce(this);
|
|
|
|
animctrl_setDuration(this->animctrl, 1.0f);
|
|
|
|
animctrl_setDuration(this->animctrl, 1.0f);
|
|
|
|
__chClam_func_803863F0(SFX_3F2_UNKNOWN, randf2(1.0f, 1.1f), 22000, this->position, 1500.0f, 2000.0f);
|
|
|
|
TTC_Clam_playSfx(SFX_3F2_UNKNOWN, randf2(1.0f, 1.1f), 22000, this->position, 1500.0f, 2000.0f);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
else{
|
|
|
|
animctrl_setDuration(this->animctrl, 2.0f);
|
|
|
|
animctrl_setDuration(this->animctrl, 2.0f);
|
|
|
@@ -312,13 +313,13 @@ void chClam_update(Actor *this){
|
|
|
|
this->position_y += this->velocity_y;
|
|
|
|
this->position_y += this->velocity_y;
|
|
|
|
this->velocity_y += -5.0f;
|
|
|
|
this->velocity_y += -5.0f;
|
|
|
|
if(actor_animationIsAt(this, 0.63f)){
|
|
|
|
if(actor_animationIsAt(this, 0.63f)){
|
|
|
|
__chClam_func_803863F0(SFX_80_YUMYUM_CLACK, 1.0f, 20000, this->position, 1500.0f, 2000.0f);
|
|
|
|
TTC_Clam_playSfx(SFX_80_YUMYUM_CLACK, 1.0f, 20000, this->position, 1500.0f, 2000.0f);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(this->position_y <= sp48){
|
|
|
|
if(this->position_y <= sp48){
|
|
|
|
this->position_y = sp48;
|
|
|
|
this->position_y = sp48;
|
|
|
|
if(actor_animationIsAt(this, 0.99f) || 0.98 < animctrl_getAnimTimer(this->animctrl)){
|
|
|
|
if(actor_animationIsAt(this, 0.99f) || 0.98 < animctrl_getAnimTimer(this->animctrl)){
|
|
|
|
__chClam_func_80386454(this);
|
|
|
|
TTC_Clam_func_80386454(this);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else{//L803872D4
|
|
|
|
else{//L803872D4
|
|
|
@@ -334,12 +335,12 @@ void chClam_update(Actor *this){
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(3.0f <= this->velocity_x){
|
|
|
|
if(3.0f <= this->velocity_x){
|
|
|
|
__chClam_func_80386454(this);
|
|
|
|
TTC_Clam_func_80386454(this);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(actor_animationIsAt(this, 0.8f) && 2.0f == this->velocity_x){
|
|
|
|
if(actor_animationIsAt(this, 0.8f) && 2.0f == this->velocity_x){
|
|
|
|
__chClam_func_803863F0(SFX_4B_GULPING, randf2(0.8f, 0.9f), 22000, this->position, 700.0f, 2000.0f);
|
|
|
|
TTC_Clam_playSfx(SFX_4B_GULPING, randf2(0.8f, 0.9f), 22000, this->position, 700.0f, 2000.0f);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}//L803873C4
|
|
|
|
}//L803873C4
|
|
|
|
|
|
|
|
|
|
|
@@ -347,15 +348,15 @@ void chClam_update(Actor *this){
|
|
|
|
|
|
|
|
|
|
|
|
if(!this->marker->unk14_21) break;
|
|
|
|
if(!this->marker->unk14_21) break;
|
|
|
|
|
|
|
|
|
|
|
|
__chClam_func_803863F0(SFX_4C_LIP_SMACK, 1.0f, 20000, this->position, 500.0f, 2000.0f);
|
|
|
|
TTC_Clam_playSfx(SFX_4C_LIP_SMACK, 1.0f, 20000, this->position, 500.0f, 2000.0f);
|
|
|
|
func_8034A174(this->marker->unk44, 5, sp38);
|
|
|
|
func_8034A174(this->marker->unk44, 5, sp38);
|
|
|
|
|
|
|
|
|
|
|
|
switch(this->unk38_31){
|
|
|
|
switch(this->unk38_31){
|
|
|
|
case MARKER_60_BLUE_EGG_COLLECTIBLE:
|
|
|
|
case MARKER_60_BLUE_EGG_COLLECTIBLE:
|
|
|
|
__chClam_emitEatencollectibleParticles(sp38, ASSET_718_SPRITE_SPARKLE_WHITE_2, 8);
|
|
|
|
TTC_Clam_emitEatencollectibleParticles(sp38, ASSET_718_SPRITE_SPARKLE_WHITE_2, 8);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case MARKER_B5_RED_FEATHER_COLLECTIBLE:
|
|
|
|
case MARKER_B5_RED_FEATHER_COLLECTIBLE:
|
|
|
|
__chClam_emitEatencollectibleParticles(sp38, ASSET_715_SPRITE_SPARKLE_RED, 8);
|
|
|
|
TTC_Clam_emitEatencollectibleParticles(sp38, ASSET_715_SPRITE_SPARKLE_RED, 8);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|