Path: blob/master/src/game/behaviors/castle_floor_trap.inc.c
7861 views
// castle_floor_trap.c.inc1#include "../settings.h"23void bhv_floor_trap_in_castle_loop(void) {4if (gMarioObject->platform == o)5o->parentObj->oInteractStatus |= INT_STATUS_TRAP_TURN;6o->oFaceAngleRoll = o->parentObj->oFaceAngleRoll;7}89void bhv_castle_floor_trap_init(void) {10struct Object *sp2C;11sp2C = spawn_object_relative(0, -358, 0, 0, o, MODEL_CASTLE_BOWSER_TRAP, bhvFloorTrapInCastle);12sp2C = spawn_object_relative(0, 358, 0, 0, o, MODEL_CASTLE_BOWSER_TRAP, bhvFloorTrapInCastle);13sp2C->oMoveAngleYaw += 0x8000;14}1516void bhv_castle_floor_trap_open_detect(void) {17if (gMarioStates[0].action == ACT_SPECIAL_EXIT_AIRBORNE18|| gMarioStates[0].action == ACT_SPECIAL_DEATH_EXIT)19o->oAction = 4; // rotates trapdoor so it looks always open20else {21o->oAngleVelRoll = 0x400;22if (o->oInteractStatus & INT_STATUS_TRAP_TURN)23o->oAction = 1; // detects interact then opens the trapdoor24}25}2627void bhv_castle_floor_trap_open(void) {28if (o->oTimer == 0) {29if (configRestoreUnusedSounds) {30play_sound(SOUND_GENERAL_CASTLE_TRAP_OPEN, gGlobalSoundSource);31}32else {33cur_obj_play_sound_2(SOUND_GENERAL_CASTLE_TRAP_OPEN);34}35}36o->oAngleVelRoll -= 0x100;37o->oFaceAngleRoll += o->oAngleVelRoll;38if (o->oFaceAngleRoll < -0x4000) {39o->oFaceAngleRoll = -0x4000;40o->oAction = 2; // after opening is done, enable close detection41}42}4344void bhv_castle_floor_trap_close_detect(void) {45if (o->oDistanceToMario > 1000.0f)46o->oAction = 3; // close trapdoor47}4849void bhv_castle_floor_trap_close(void) {50o->oFaceAngleRoll += 0x400;51if (o->oFaceAngleRoll > 0) {52o->oFaceAngleRoll = 0;53o->oAction = 0; // after closing, reloads open detection54o->oInteractStatus &= ~INT_STATUS_TRAP_TURN;55}56}5758void bhv_castle_floor_trap_rotate(void) {59o->oFaceAngleRoll = -0x3C00;60}6162void bhv_castle_floor_trap_loop(void) {63UNUSED s32 unused[3];64switch (o->oAction) {65case 0:66bhv_castle_floor_trap_open_detect();67break;68case 1:69bhv_castle_floor_trap_open();70break;71case 2:72bhv_castle_floor_trap_close_detect();73break;74case 3:75bhv_castle_floor_trap_close();76break;77case 4:78bhv_castle_floor_trap_rotate();79break;80}81}828384