710 lines
17 KiB
C
710 lines
17 KiB
C
#include <ultra64.h>
|
|
#include "functions.h"
|
|
#include "variables.h"
|
|
#include "core2/statetimer.h"
|
|
#include "core2/ba/anim.h"
|
|
|
|
int bscroc_inSet(enum bs_e state);
|
|
|
|
/* .data */
|
|
const f32 bsCrocMinWalkVelocity = 30.0f;
|
|
const f32 bsCrocMaxWalkVelocity = 375.0f;
|
|
const f32 bsCrocMaxTurboVelocity = 500.0f;
|
|
const f32 bsCrocSlowestWalkDuration = 0.5f;
|
|
const f32 bsCrocFastestWalkDuration = 0.3f;
|
|
const f32 D_80364B14 = 0.2f;
|
|
const f32 bsCrocInitialJumpVelocity = 693.5f; //jump initial velocity
|
|
const f32 bsCrocGravity = -1200.0f; //jump gravity
|
|
u8 bsCrocJumpSfxIndex = 0;
|
|
s16 bsCrocJumpSfxList[] = {
|
|
SFX_54_BANJO_HOO_1,
|
|
SFX_55_BANJO_HOO_2,
|
|
SFX_56_BANJO_HUI
|
|
};
|
|
|
|
/* .bss */
|
|
f32 D_8037D3E0;
|
|
u8 _bscrocHitboxActive; //8037D3e4
|
|
void *D_8037D3E8;
|
|
u8 D_8037D3EC;
|
|
f32 D_8037D3F0;
|
|
u8 D_8037D3F4;
|
|
u8 D_8037D3F5;
|
|
|
|
/* .code */
|
|
f32 __bscroc_getMaxVelocity(void){
|
|
if(stateTimer_get(STATE_TIMER_3_TURBO_TALON) != 0.0f)
|
|
return bsCrocMaxTurboVelocity;
|
|
else
|
|
return bsCrocMaxWalkVelocity;
|
|
}
|
|
|
|
void __bscroc_jumpSfx(void){
|
|
func_8030EB00(bsCrocJumpSfxList[bsCrocJumpSfxIndex], 1.35f, 1.45f);
|
|
if(!(++bsCrocJumpSfxIndex < 3))
|
|
bsCrocJumpSfxIndex = 0;
|
|
}
|
|
|
|
void func_802ABE70(void){
|
|
f32 sp1C = stateTimer_get(STATE_TIMER_3_TURBO_TALON);
|
|
func_80299650(stateTimer_getPrevious(STATE_TIMER_3_TURBO_TALON), sp1C);
|
|
if(miscflag_isTrue(MISC_FLAG_10_TOUCHING_TURBO_TRAINERS) && bs_getState() != BS_17_BTROT_EXIT){
|
|
miscflag_clear(MISC_FLAG_10_TOUCHING_TURBO_TRAINERS);
|
|
stateTimer_set(STATE_TIMER_3_TURBO_TALON, get_turbo_duration());
|
|
func_8025A6EC(COMUSIC_8A_GETTING_TURBO_TRAINERS, -1);
|
|
func_8029E0DC(1);
|
|
}
|
|
|
|
if(sp1C != 0.0f ){
|
|
func_8029C3E8(0.0f, 30.0f);
|
|
}
|
|
|
|
if(stateTimer_isAt(STATE_TIMER_3_TURBO_TALON, 0.01f)){
|
|
func_8029E0DC(0);
|
|
func_8030E58C(SFX_3EB_UNKNOWN, 1.35f);
|
|
}
|
|
}
|
|
|
|
void func_802ABF54(void){
|
|
f32 sp1C = func_8029B30C();
|
|
if(func_8029B300() == 0){
|
|
func_80297970(0.0f);
|
|
}
|
|
else{
|
|
func_80297970(ml_interpolate_f(sp1C, bsCrocMinWalkVelocity, __bscroc_getMaxVelocity()));
|
|
}
|
|
}
|
|
|
|
void func_802ABFBC(void){
|
|
if(!bscroc_inSet(bs_getNextState())){
|
|
func_8029B0C0();
|
|
func_8029E070(0);
|
|
func_8029E064(0);
|
|
miscflag_clear(3);
|
|
miscflag_clear(4);
|
|
func_80293D74();
|
|
}
|
|
baanim_setUpdateType(BAANIM_UPDATE_1_NORMAL);
|
|
}
|
|
|
|
int bscroc_inSet(enum bs_e state){
|
|
return state == BS_5E_CROC_IDLE
|
|
|| state == BS_CROC_WALK
|
|
|| state == BS_CROC_JUMP
|
|
|| state == BS_61_CROC_FALL
|
|
|| state == BS_CROC_OW
|
|
|| state == BS_CROC_DIE
|
|
|| state == BS_6E_CROC_BITE
|
|
|| state == BS_CROC_EAT_BAD
|
|
|| state == BS_70_CROC_EAT_GOOD
|
|
|| state == BS_8D_CROC_LOCKED
|
|
|| state == BS_94_CROC_DRONE;
|
|
}
|
|
|
|
void bscroc_idle_init(void){
|
|
baanim_playForDuration_loopSmooth(0xe1, 1.0f);
|
|
func_8029C7F4(1,1,1,2);
|
|
func_80297970(0.0f);
|
|
pitch_setAngVel(1000.0f, 12.0f);
|
|
roll_setAngularVelocity(1000.0f, 12.0f);
|
|
func_80293D48(50.0f, 25.0f);
|
|
miscflag_set(3);
|
|
miscflag_set(4);
|
|
func_802900B4();
|
|
}
|
|
|
|
void bscroc_idle_update(void){
|
|
enum bs_e next_state = 0;
|
|
func_802ABE70();
|
|
func_80299628(0);
|
|
if(func_8028B094())
|
|
next_state = BS_61_CROC_FALL;
|
|
|
|
if(func_80294F78())
|
|
next_state = func_802926C0();
|
|
|
|
if(func_8029B300() > 0)
|
|
next_state = BS_CROC_WALK;
|
|
|
|
if(button_pressed(BUTTON_B))
|
|
next_state = BS_6E_CROC_BITE;
|
|
|
|
if(button_pressed(BUTTON_A))
|
|
next_state = BS_CROC_JUMP;
|
|
|
|
next_state = func_8029CA94(next_state);
|
|
bs_setState(next_state);
|
|
|
|
}
|
|
|
|
void bscroc_idle_end(void){
|
|
func_802ABFBC();
|
|
func_802900FC();
|
|
}
|
|
|
|
void bscroc_walk_init(void){
|
|
baanim_playForDuration_loopStartingAt(ASSET_E0_ANIM_BSCROC_WALK, 0.8f, 0.4f);
|
|
func_8029C7F4(BAANIM_UPDATE_2_SCALE_HORZ,1,1,2);
|
|
baanim_setVelocityMapRanges(bsCrocMinWalkVelocity, bsCrocMaxWalkVelocity, bsCrocSlowestWalkDuration, bsCrocFastestWalkDuration);
|
|
func_802900B4();
|
|
}
|
|
|
|
void bscroc_walk_update(void){
|
|
enum bs_e next_state = 0;
|
|
|
|
func_802ABE70();
|
|
func_80299628(0);
|
|
func_802ABF54();
|
|
|
|
func_8029AD28(0.1f, 4);
|
|
func_8029AD28(0.6f, 3);
|
|
if(func_8029B300() == 0 && func_80297C04(1.0f))
|
|
next_state = BS_5E_CROC_IDLE;
|
|
|
|
if(func_8028B094())
|
|
next_state = BS_61_CROC_FALL;
|
|
|
|
if(button_pressed(BUTTON_B))
|
|
next_state = BS_6E_CROC_BITE;
|
|
|
|
if(button_pressed(BUTTON_A))
|
|
next_state = BS_CROC_JUMP;
|
|
|
|
bs_setState(next_state);
|
|
}
|
|
|
|
void bscroc_walk_end(void){
|
|
func_802ABFBC();
|
|
func_802900FC();
|
|
}
|
|
|
|
void bscroc_jump_init(void){
|
|
AnimCtrl *aCtrl = baanim_getAnimCtrlPtr();
|
|
|
|
animctrl_reset(aCtrl);
|
|
animctrl_setSmoothTransition(aCtrl, FALSE);
|
|
animctrl_setIndex(aCtrl, ASSET_11C_ANIM_BSCROC_JUMP);
|
|
animctrl_setSubRange(aCtrl, 0.0f, 0.35f);
|
|
animctrl_setDuration(aCtrl, 1.0f);
|
|
animctrl_setStart(aCtrl, 0.1f);
|
|
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
|
animctrl_start(aCtrl, "bscroc.c", 0x1ac);
|
|
func_8029C7F4(1,1,3,6);
|
|
if(func_8029B2E8() != 0.0f){
|
|
yaw_setIdeal(func_8029B33C());
|
|
}
|
|
func_8029797C(yaw_getIdeal());
|
|
func_802ABF54();
|
|
func_802979AC(yaw_getIdeal(), func_80297A64());
|
|
player_setYVelocity(bsCrocInitialJumpVelocity);
|
|
gravity_set(bsCrocGravity);
|
|
__bscroc_jumpSfx();
|
|
D_8037D3EC = 0;
|
|
}
|
|
|
|
void bscroc_jump_update(void){
|
|
enum bs_e sp2C = 0;
|
|
AnimCtrl *aCtrl = baanim_getAnimCtrlPtr();
|
|
f32 player_velocity[3];
|
|
|
|
func_802ABE70();
|
|
func_802ABF54();
|
|
_get_velocity(player_velocity);
|
|
if(button_released(BUTTON_A) && 0.0f < player_velocity[1])
|
|
gravity_reset();
|
|
|
|
switch(D_8037D3EC){
|
|
case 0:
|
|
if(func_8028B254(0x82))
|
|
{
|
|
baanim_setEndAndDuration(0.6538f, 0.7f);
|
|
D_8037D3EC = 2;
|
|
}
|
|
else if(animctrl_isStopped(aCtrl))
|
|
{
|
|
baanim_setEndAndDuration(0.5036f, 3.0f);
|
|
D_8037D3EC = 1;
|
|
}
|
|
break;
|
|
case 1:
|
|
if(func_8028B254(0x82)){
|
|
baanim_setEndAndDuration(0.6538f, 1.0f);
|
|
D_8037D3EC = 2;
|
|
}
|
|
break;
|
|
case 2:
|
|
func_80299628(0);
|
|
if(func_8028B2E8()){
|
|
func_8029AE48();
|
|
baanim_setEndAndDuration(1.0f, 1.0f);
|
|
D_8037D3EC = 3;
|
|
}
|
|
break;
|
|
case 3:
|
|
func_80299628(0);
|
|
if(animctrl_isStopped(aCtrl)){
|
|
func_80297970(0.0f);
|
|
sp2C = BS_5E_CROC_IDLE;
|
|
}
|
|
break;
|
|
}//L802AC66C
|
|
|
|
if(func_8028B2E8()){
|
|
if(func_8029B300() > 0)
|
|
sp2C = BS_CROC_WALK;
|
|
|
|
if(button_pressed(BUTTON_A))
|
|
sp2C = BS_CROC_JUMP;
|
|
}
|
|
|
|
if(button_pressed(BUTTON_B))
|
|
sp2C = BS_6E_CROC_BITE;
|
|
|
|
bs_setState(sp2C);
|
|
}
|
|
|
|
void bscroc_jump_end(void){
|
|
gravity_reset();
|
|
func_802ABFBC();
|
|
}
|
|
|
|
void bscroc_fall_init(void){
|
|
AnimCtrl *aCtrl = baanim_getAnimCtrlPtr();
|
|
|
|
animctrl_reset(aCtrl);
|
|
animctrl_setIndex(aCtrl, ASSET_11C_ANIM_BSCROC_JUMP);
|
|
animctrl_setStart(aCtrl, 0.5036f);
|
|
animctrl_setDuration(aCtrl, 0.7f);
|
|
animctrl_setPlaybackType(aCtrl, ANIMCTRL_STOPPED);
|
|
animctrl_start(aCtrl, "bscroc.c", 0x235);
|
|
func_8029C7F4(1,1,3,6);
|
|
D_8037D3EC = 0;
|
|
}
|
|
|
|
void bscroc_fall_update(void){
|
|
enum bs_e next_state = 0;
|
|
AnimCtrl * aCtrl = baanim_getAnimCtrlPtr();
|
|
f32 player_velocity[3];
|
|
|
|
func_802ABE70();
|
|
func_80299628(0);
|
|
func_802ABF54();
|
|
_get_velocity(player_velocity);
|
|
|
|
switch(D_8037D3EC){
|
|
case 0:
|
|
if(func_8028B254(0x82)){
|
|
baanim_setEnd(0.6538f);
|
|
D_8037D3EC = 1;
|
|
}
|
|
break;
|
|
case 1:
|
|
if(func_8028B2E8()){
|
|
func_8029AE48();
|
|
func_80297970(0.0f);
|
|
baanim_setEndAndDuration(1.0f, 1.0f);
|
|
D_8037D3EC = 2;
|
|
}
|
|
case 2:
|
|
break;
|
|
}//L802AC850
|
|
|
|
if(func_8028B2E8()){
|
|
if(func_8029B300() > 0 || (D_8037D3EC == 2 && animctrl_isStopped(aCtrl))){
|
|
if(miscflag_isTrue(0x19)){
|
|
next_state = func_80292738();
|
|
}else{
|
|
next_state = BS_5E_CROC_IDLE;
|
|
}
|
|
}
|
|
}//L802AC8B4
|
|
|
|
bs_setState(next_state);
|
|
}
|
|
|
|
void bscroc_fall_end(void){
|
|
func_802ABFBC();
|
|
}
|
|
|
|
static void __bscroc_recoil_init(s32 damage){
|
|
AnimCtrl *aCtrl = baanim_getAnimCtrlPtr();
|
|
f32 sp38;
|
|
f32 player_position[3];
|
|
f32 sp20[3];
|
|
|
|
animctrl_reset(aCtrl);
|
|
animctrl_setIndex(aCtrl, ASSET_11D_ANIM_BSCROC_BOUNCE);
|
|
animctrl_setDuration(aCtrl, 1.0f);
|
|
animctrl_setSubRange(aCtrl, 0.0f, 0.7518f);
|
|
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
|
animctrl_start(aCtrl, "bscroc.c", 0x2a5);
|
|
if(damage == 1)
|
|
func_8030E58C(SFX_38_BANJO_AYE_1, 1.8f);
|
|
else
|
|
func_8030E58C(SFX_56_BANJO_HUI, 1.8f);
|
|
|
|
_player_getPosition(player_position);
|
|
func_80294980(sp20);
|
|
func_80257F18(sp20, player_position, &sp38);
|
|
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
|
yaw_applyIdeal();
|
|
func_80297970(200.0f);
|
|
func_8029797C(sp38);
|
|
func_802979AC(sp38, func_80297A64());
|
|
func_8029C7F4(1,1,2,3);
|
|
player_setYVelocity(510.0f);
|
|
gravity_set(-1200.0f);
|
|
baMarker_collisionOff();
|
|
func_80292E48();
|
|
D_8037D3EC = 0;
|
|
}
|
|
|
|
static void __bscroc_recoil_update(void){
|
|
enum bs_e next_state = 0;
|
|
func_802ABE70();
|
|
if(baanim_isAt(0.5f))
|
|
func_80292EA4();
|
|
|
|
switch(D_8037D3EC){
|
|
case 0:
|
|
if(func_8028B254(0x5A)){
|
|
baanim_setEnd(1.0f);
|
|
D_8037D3EC = 1;
|
|
}
|
|
break;
|
|
case 1:
|
|
break;
|
|
}
|
|
if(func_8028B2E8())
|
|
next_state = BS_5E_CROC_IDLE;
|
|
|
|
bs_setState(next_state);
|
|
}
|
|
|
|
void __bscroc_recoil_end(void){
|
|
func_80297CA8();
|
|
gravity_reset();
|
|
baMarker_collisionOn();
|
|
func_80292EA4();
|
|
func_802ABFBC();
|
|
}
|
|
|
|
void bscroc_ow_init(void){
|
|
__bscroc_recoil_init(1);
|
|
}
|
|
|
|
void bscroc_ow_update(void){
|
|
__bscroc_recoil_update();
|
|
}
|
|
|
|
void bscroc_ow_end(void){
|
|
__bscroc_recoil_end();
|
|
}
|
|
|
|
void bscroc_bounce_init(void){
|
|
__bscroc_recoil_init(2);
|
|
}
|
|
|
|
void bscroc_bounce_update(void){
|
|
__bscroc_recoil_update();
|
|
}
|
|
|
|
void bscroc_bounce_end(void){
|
|
__bscroc_recoil_end();
|
|
}
|
|
|
|
void bscroc_die_init(void){
|
|
AnimCtrl * aCtrl = baanim_getAnimCtrlPtr();
|
|
f32 sp38;
|
|
f32 player_position[3];
|
|
f32 sp20[3];
|
|
|
|
func_8029B930();
|
|
animctrl_reset(aCtrl);
|
|
animctrl_setSmoothTransition(aCtrl, FALSE);
|
|
animctrl_setIndex(aCtrl, ASSET_11E_ANIM_BSCROC_DIE);
|
|
animctrl_setSubRange(aCtrl, 0.0f, 0.3966f);
|
|
animctrl_setDuration(aCtrl, 1.7f);
|
|
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
|
animctrl_start(aCtrl, "bscroc.c", 0x32b);
|
|
func_8029C7F4(1,1,2,3);
|
|
_player_getPosition(player_position);
|
|
func_80294980(sp20);
|
|
func_80257F18(sp20, player_position, &sp38);
|
|
yaw_setIdeal(mlNormalizeAngle(sp38 + 180.0f));
|
|
yaw_applyIdeal();
|
|
D_8037D3E0 = 250.0f;
|
|
func_80297970(D_8037D3E0);
|
|
func_8029797C(sp38);
|
|
func_802979AC(sp38, func_80297A64());
|
|
player_setYVelocity(420.0f);
|
|
gravity_set(-1200.0f);
|
|
pitch_setAngVel(1000.0f, 12.0f);
|
|
baMarker_collisionOff();
|
|
func_80292E48();
|
|
func_802914CC(0xd);
|
|
func_802BF2C0(30.0f);
|
|
func_8029C984();
|
|
func_8030E58C(SFX_36_BANJO_DOH, 1.8f);
|
|
func_8029E3C0(0, 2.9f);
|
|
D_8037D3EC = 0;
|
|
}
|
|
|
|
void bscroc_die_update(void){
|
|
enum bs_e next_state = 0;
|
|
func_802ABE70();
|
|
func_80297970(D_8037D3E0);
|
|
func_80299628(0);
|
|
switch(D_8037D3EC){
|
|
case 0:
|
|
if(func_8028B2E8()){
|
|
baanim_setEnd(0.7453f);
|
|
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
|
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.8f, 18000);
|
|
player_setYVelocity(400.0f);
|
|
D_8037D3EC = 1;
|
|
}
|
|
break;
|
|
case 1:
|
|
if(func_8028B2E8()){
|
|
baanim_setEnd(1.0f);
|
|
FUNC_8030E624(SFX_1F_HITTING_AN_ENEMY_3, 0.8f, 18000);
|
|
FUNC_8030E624(SFX_39_BANJO_AYE_2, 1.8f, 18000);
|
|
D_8037D3EC = 2;
|
|
}
|
|
break;
|
|
case 2:
|
|
D_8037D3EC = 3;
|
|
break;
|
|
case 3:
|
|
if(0.0f < D_8037D3E0)
|
|
D_8037D3E0 = ml_max_f(0.0f, D_8037D3E0 - 10.0f);
|
|
break;
|
|
}//L802ACECC
|
|
|
|
if(func_8029E1A8(0))
|
|
func_8029B890();
|
|
|
|
bs_setState(next_state);
|
|
}
|
|
|
|
void bscroc_die_end(void){
|
|
func_8024BD08(0);
|
|
gravity_reset();
|
|
pitch_setIdeal(0.0f);
|
|
roll_setIdeal(0.0f);
|
|
func_80291548();
|
|
func_80292EA4();
|
|
}
|
|
|
|
int bscroc_hitboxActive(void){
|
|
return _bscrocHitboxActive;
|
|
}
|
|
|
|
static void func_802ACF58(void){
|
|
f32 sp2C;
|
|
f32 sp20[3];
|
|
sp2C = func_8028B2E8() ? 500.0f : 400.0f;
|
|
func_802589E4(sp20, yaw_get(), sp2C);
|
|
sp20[1] = 200.0f;
|
|
func_80297A0C(sp20);
|
|
}
|
|
|
|
void bscroc_bite_init(void){
|
|
baanim_playForDuration_loopStartingAt(ASSET_122_ANIM_BSCROC_BITE, 0.25f, 0.2f);
|
|
func_8029C7F4(1,1,1,3);
|
|
func_802ACF58();
|
|
D_8037D3F4 = 0;
|
|
_bscrocHitboxActive = TRUE;
|
|
}
|
|
|
|
void bscroc_bite_update(void){
|
|
enum bs_e next_state = 0;
|
|
AnimCtrl *aCtrl = baanim_getAnimCtrlPtr();
|
|
|
|
func_802ABE70();
|
|
func_80299628(0);
|
|
if(animctrl_isAt(aCtrl, 0.99f)){
|
|
switch(++D_8037D3F4){
|
|
case 1:
|
|
func_802ACF58();
|
|
animctrl_setDuration(aCtrl, 0.28f);
|
|
break;
|
|
case 2:
|
|
func_802ACF58();
|
|
animctrl_setDuration(aCtrl, 0.32f);
|
|
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
|
break;
|
|
}
|
|
}
|
|
if(animctrl_isAt(aCtrl, 0.6f)){
|
|
func_8030EB00(SFX_6D_CROC_BITE, 1.0f, 1.1f);
|
|
}
|
|
|
|
if(D_8037D3F4 == 3){
|
|
if(func_8028B094())
|
|
next_state = BS_61_CROC_FALL;
|
|
else
|
|
next_state = BS_CROC_WALK;
|
|
}
|
|
|
|
if(func_8028B2E8() && button_pressed(BUTTON_A))
|
|
next_state = BS_CROC_JUMP;
|
|
|
|
bs_setState(next_state);
|
|
}
|
|
|
|
void bscroc_bite_end(void){
|
|
_bscrocHitboxActive = FALSE;
|
|
func_802ABFBC();
|
|
}
|
|
|
|
void bscroc_eat_bad_init(void){
|
|
baanim_playForDuration_once(ASSET_123_ANIM_BSCROC_EAT_BAD, 2.41f);
|
|
func_8029C7F4(1,1,2,3);
|
|
func_80297970(0.0f);
|
|
}
|
|
|
|
void bscroc_eat_bad_update(void){
|
|
enum bs_e next_state = 0;
|
|
AnimCtrl *aCtrl = baanim_getAnimCtrlPtr();
|
|
|
|
func_802ABE70();
|
|
func_80299628(0);
|
|
if(animctrl_isAt(aCtrl, 0.3518f)){
|
|
func_8030E58C(SFX_A0_COUGHING, 0.9f);
|
|
}
|
|
|
|
if(animctrl_isAt(aCtrl, 0.5282f)){
|
|
func_8030E58C(SFX_A0_COUGHING, 0.85f);
|
|
}
|
|
|
|
if(animctrl_isAt(aCtrl, 0.6671f)){
|
|
func_8030E484(SFX_C6_SHAKING_MOUTH);
|
|
}
|
|
|
|
if(animctrl_isStopped(aCtrl)){
|
|
next_state = BS_5E_CROC_IDLE;
|
|
}
|
|
|
|
bs_setState(next_state);
|
|
}
|
|
|
|
void bscroc_eat_bad_end(void){
|
|
func_802ABFBC();
|
|
}
|
|
|
|
|
|
void func_802AD2A8(Gfx **gdl, Mtx **mPtr, void *arg2){
|
|
f32 player_rotation[3];
|
|
f32 sp28[3];
|
|
|
|
player_getRotation(player_rotation);
|
|
func_8028E9C4(2, sp28);
|
|
modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL);
|
|
modelRender_draw(gdl, mPtr, sp28, player_rotation, D_8037D3F0, NULL, D_8037D3E8);
|
|
|
|
}
|
|
|
|
void func_802AD318(void){
|
|
D_8037D3F5 = 1;
|
|
}
|
|
|
|
void bscroc_eat_good_init(void){
|
|
baanim_playForDuration_loopSmooth(ASSET_122_ANIM_BSCROC_BITE, 0.25f);
|
|
func_8029C7F4(1,1,1,2);
|
|
baModel_setPostDraw(func_802AD2A8);
|
|
D_8037D3E8 = assetcache_get(func_80294974());
|
|
D_8037D3F0 = 1.0f;
|
|
D_8037D3F5 = 0;
|
|
D_8037D3F4 = 0;
|
|
}
|
|
|
|
int func_802AD3A0(void){
|
|
return D_8037D3F5;
|
|
}
|
|
|
|
void bscroc_eat_good_update(void){
|
|
enum bs_e next_state = 0;
|
|
AnimCtrl *aCtrl = baanim_getAnimCtrlPtr();
|
|
|
|
func_802ABE70();
|
|
D_8037D3F0 = ml_max_f(0.1f, D_8037D3F0 - 0.05);
|
|
func_80299628(0);
|
|
func_802ABF54();
|
|
if(animctrl_isAt(aCtrl, 0.99f)){
|
|
switch(++D_8037D3F4){
|
|
case 1:
|
|
animctrl_setDuration(aCtrl, 0.28f);
|
|
break;
|
|
case 2:
|
|
animctrl_setDuration(aCtrl, 0.32f);
|
|
animctrl_setPlaybackType(aCtrl, ANIMCTRL_ONCE);
|
|
break;
|
|
case 3:
|
|
if(D_8037D3F5)
|
|
next_state = BS_CROC_EAT_BAD;
|
|
else
|
|
next_state = BS_5E_CROC_IDLE;
|
|
break;
|
|
}
|
|
}//L802AD4B0
|
|
|
|
if(animctrl_isAt(aCtrl, 0.62f))
|
|
func_8030EB00(SFX_4C_LIP_SMACK, 1.2f, 1.3f);
|
|
|
|
if(D_8037D3F4 == 2 && animctrl_isAt(aCtrl, 0.9))
|
|
func_8030EB00(SFX_AE_YUMYUM_TALKING, 1.45f, 1.55f);
|
|
|
|
bs_setState(next_state);
|
|
}
|
|
|
|
void bscroc_eat_good_end(void){
|
|
D_8037D3F5 = 0;
|
|
assetcache_release(D_8037D3E8);
|
|
baModel_setPostDraw(0);
|
|
func_802ABFBC();
|
|
}
|
|
|
|
void func_802AD56C(void){
|
|
baanim_playForDuration_loopSmooth(ASSET_E1_ANIM_BSCROC_IDLE, 1.0f);
|
|
func_8029C7F4(1,1,3,2);
|
|
func_80297970(0.0f);
|
|
func_8029C674();
|
|
func_802B3A50();
|
|
}
|
|
|
|
void func_802AD5C0(void){
|
|
enum bs_e next_state = 0;
|
|
func_802ABE70();
|
|
func_802B3A50();
|
|
func_80299628(0);
|
|
func_8029C6D0();
|
|
if(!func_80298850()){
|
|
next_state = BS_5E_CROC_IDLE;
|
|
}
|
|
|
|
bs_setState(next_state);
|
|
}
|
|
|
|
void func_802AD614(void){
|
|
pitch_setIdeal(0.0f);
|
|
roll_setIdeal(0.0f);
|
|
func_8029C748();
|
|
func_802ABFBC();
|
|
}
|
|
|
|
void bscroc_drone_init(void){
|
|
bsdrone_init();
|
|
}
|
|
|
|
void bscroc_drone_update(void){
|
|
func_802ABE70();
|
|
bsdrone_update();
|
|
}
|
|
|
|
void bscroc_drone_end(void){
|
|
bsdrone_end();
|
|
func_802ABFBC();
|
|
}
|