#include <ultra64.h>
#include "functions.h"
#include "variables.h"
#include "core2/abilityprogress.h"
#include "core2/ba/physics.h"
#include "core2/yaw.h"
void func_802915CC(f32);
void func_8029AD28(f32, s32);
u8 _bsclawHitboxActive;
int bsclaw_hitboxActive(void){
return _bsclawHitboxActive;
}
void bsclaw_init(void){
baanim_playForDuration_onceSmooth(ASSET_5_ANIM_BSPUNCH, 1.3f);
code_14420_setUpdateTypes(1, YAW_STATE_1_DEFAULT, 3, BA_PHYSICS_LOCKED_ROTATION);
baphysics_set_target_yaw(yaw_getIdeal());
baphysics_set_target_horizontal_velocity(160.0f);
func_802915CC(80.0f);
_bsclawHitboxActive = 0;
}
void bsclaw_update(void){
enum bs_e sp2C = 0;
AnimCtrl * aCtrl = baanim_getAnimCtrlPtr();
f32 sp24;
sp24 = anctrl_getAnimTimer(aCtrl);
_bsclawHitboxActive = anctrl_isAt(aCtrl, 0.1488f)
|| (0.04879999999999998 < sp24 && sp24 < 0.2488)
|| anctrl_isAt(aCtrl, 0.3288f)
|| (0.22879999999999998 < sp24 && sp24 < 0.42879999999999998)
|| anctrl_isAt(aCtrl, 0.5788f)
|| (0.4788 < sp24 && sp24 < 0.6788);
if(anctrl_isAt(aCtrl, 0.5788f))
baphysics_set_target_horizontal_velocity(0.0f);
func_8029AD28(0.08f, 3);
func_8029AD28(0.34f, 4);
func_8029AD28(0.53f, 3);
if(anctrl_isAt(aCtrl, 0.1188f))
func_8030EB00(SFX_2_CLAW_SWIPE, 0.98f, 1.0f);
if(anctrl_isAt(aCtrl, 0.2888f))
func_8030EB00(SFX_2_CLAW_SWIPE, 1.04f, 1.06f);
if(anctrl_isAt(aCtrl, 0.4888f))
func_8030EB00(SFX_2_CLAW_SWIPE, 1.1f, 1.12f);
if(anctrl_isStopped(aCtrl))
sp2C = BS_1_IDLE;
if(!player_isStable())
sp2C = BS_2F_FALL;
if(player_inWater())
sp2C = BS_4C_LANDING_IN_WATER;
if(bakey_pressed(BUTTON_A))
sp2C = bs_getTypeOfJump();
bs_setState(sp2C);
}
void bsclaw_end(void){
ability_setUsedWithDialog(ABILITY_USED_B_CLAW);
_bsclawHitboxActive = 0;
func_802915B8();
}