sm64pc/src/game/behaviors/snow_mound.inc.c

44 lines
1.1 KiB
C

// snow_mound.c.inc
void bhv_sliding_snow_mound_loop(void) {
switch (o->oAction) {
case 0:
o->oVelX = -40.0f;
o->oPosX += o->oVelX;
if (o->oTimer >= 118)
o->oAction = 1;
cur_obj_play_sound_1(SOUND_ENV_SINK_QUICKSAND);
break;
case 1:
o->oVelX = -5.0f;
o->oPosX += o->oVelX;
o->oVelY = -10.0f;
o->oPosY += o->oVelY;
o->oPosZ = o->oHomeZ - 2.0f;
if (o->oTimer > 50)
o->activeFlags = 0;
break;
}
}
void bhv_snow_mound_spawn_loop(void) {
struct Object *sp1C;
if (!is_point_within_radius_of_mario(o->oPosX, o->oPosY, o->oPosZ, 6000)
|| o->oPosY + 1000.0f < gMarioObject->header.gfx.pos[1])
return;
if (o->oTimer == 64 || o->oTimer == 128 || o->oTimer == 192 || o->oTimer == 224 || o->oTimer == 256)
sp1C = spawn_object(o, MODEL_SL_SNOW_TRIANGLE, bhvSlidingSnowMound);
if (o->oTimer == 256) {
sp1C->header.gfx.scale[0] = 2.0f;
sp1C->header.gfx.scale[1] = 2.0f;
}
if (o->oTimer >= 256)
o->oTimer = 0;
}