#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#include "core2/ba/physics.h"
extern Actor *actor_spawnWithYaw_f32(enum actor_e, f32[3], s32);
u8 D_8037BFA0;
static s32 __maybe(int arg0, s32 arg1){
if(arg0)
return arg1;
return 0;
}
void func_8028DAD8(void){
D_8037BFA0 = 0;
}
void func_8028DAE4(void){
if(D_8037BFA0 != 0)
D_8037BFA0--;
}
void func_8028DB04(void){
D_8037BFA0 = 2;
}
enum hitbox_e hitbox_getHitboxForActor(ActorMarker *arg0){
s32 retVal;
if(D_8037BFA0)
return HITBOX_3_BEAK_BOMB;
switch(bs_getState()){
case BS_F_BBUSTER:
return __maybe(bsbbuster_hitboxActive(), HITBOX_1_BEAK_BUSTER);
break;
case BS_13_BBARGE:
return __maybe(bsbbarge_hitboxActive(), HITBOX_2_BEAK_BARGE);
break;
case BS_2A_BOMB:
return __maybe(bsbfly_bombHitboxActive(), HITBOX_3_BEAK_BOMB);
break;
case BS_6_CLAW:
if(arg0 && !func_8028AED4(marker_getActor(arg0)->position, 90.0f))
return HITBOX_0_NONE;
retVal = __maybe(bsclaw_hitboxActive(), HITBOX_4_CLAW);
if(retVal != 0)
return retVal;
return HITBOX_8_CLAW_DOWN;
break;
case BS_11_BPECK:
if(arg0 && !func_8028AED4(marker_getActor(arg0)->position, 60.0f))
return HITBOX_0_NONE;
return __maybe(bsbpeck_hitboxActive(),HITBOX_5_PECK);
break;
case BS_1A_WONDERWING_ENTER:
case BS_1B_WONDERWING_IDLE:
case BS_1C_WONDERWING_WALK:
case BS_1D_WONDERWING_JUMP:
case BS_1E_WONDERWING_EXIT:
case BS_A4_WONDERWING_DRONE:
case BS_A5_WONDERWING_UNKA5:
return HITBOX_6_WONDERWING;
break;
case BS_31_ROLL:
return __maybe(bstwirl_hitboxActive(),HITBOX_7_ROLL);
break;
case BS_6E_CROC_BITE:
return __maybe(bscroc_hitboxActive(),HITBOX_9_CROC_BITE);
break;
case BS_5_JUMP:
case BS_3D_FALL_TUMBLING:
if(baphysics_get_vertical_velocity() < 0.0f && !player_isStable())
return HITBOX_A_FAST_FALLING;
case BS_2F_FALL:
if(baphysics_get_vertical_velocity() < -1400.0f && !player_isStable())
return HITBOX_A_FAST_FALLING;
default:
return HITBOX_0_NONE;
break;
}
}