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

23 lines
601 B
C

void bhv_ddd_pole_init(void) {
if (!(save_file_get_flags() & (SAVE_FLAG_HAVE_KEY_2 | SAVE_FLAG_UNLOCKED_UPSTAIRS_DOOR))) {
obj_mark_for_deletion(o);
} else {
o->hitboxDownOffset = 100.0f;
o->oDDDPoleMaxOffset = 100.0f * o->oBehParams2ndByte;
}
}
void bhv_ddd_pole_update(void) {
if (o->oTimer > 20) {
o->oDDDPoleOffset += o->oDDDPoleVel;
if (clamp_f32(&o->oDDDPoleOffset, 0.0f, o->oDDDPoleMaxOffset)) {
o->oDDDPoleVel = -o->oDDDPoleVel;
o->oTimer = 0;
}
}
obj_set_dist_from_home(o->oDDDPoleOffset);
}