Path: blob/master/src/game/behaviors/bullet_bill.inc.c
7861 views
// bullet_bill.inc.c12// bullet bill smoke3void bhv_white_puff_smoke_init(void) {4cur_obj_scale(random_float() * 2 + 2.0);5}67void bhv_bullet_bill_init(void) {8o->oBulletBillInitialMoveYaw = o->oMoveAngleYaw;9}1011void bullet_bill_act_0(void) {12cur_obj_become_tangible();13o->oForwardVel = 0.0f;14o->oMoveAngleYaw = o->oBulletBillInitialMoveYaw;15o->oFaceAnglePitch = 0;16o->oFaceAngleRoll = 0;17o->oMoveFlags = 0;18cur_obj_set_pos_to_home();19o->oAction = 1;20}2122void bullet_bill_act_1(void) {23s16 sp1E = abs_angle_diff(o->oAngleToMario, o->oMoveAngleYaw);24if (sp1E < 0x2000 && 400.0f < o->oDistanceToMario && o->oDistanceToMario < 1500.0f)25o->oAction = 2;26}2728void bullet_bill_act_2(void) {29if (o->oTimer < 40)30o->oForwardVel = 3.0f;31else if (o->oTimer < 50) {32if (o->oTimer % 2)33o->oForwardVel = 3.0f;34else35o->oForwardVel = -3.0f;36} else {37if (o->oTimer > 70)38cur_obj_update_floor_and_walls();39spawn_object(o, MODEL_SMOKE, bhvWhitePuffSmoke);40o->oForwardVel = 30.0f;41if (o->oDistanceToMario > 300.0f)42cur_obj_rotate_yaw_toward(o->oAngleToMario, 0x100);43if (o->oTimer == 50) {44cur_obj_play_sound_2(SOUND_OBJ_POUNDING_CANNON);45cur_obj_shake_screen(SHAKE_POS_SMALL);46}47if (o->oTimer > 150 || o->oMoveFlags & OBJ_MOVE_HIT_WALL) {48o->oAction = 3;49spawn_mist_particles();50}51}52}5354void bullet_bill_act_3(void) {55o->oAction = 0;56}5758void bullet_bill_act_4(void) {59if (o->oTimer == 0) {60o->oForwardVel = -30.0f;61cur_obj_become_intangible();62}63o->oFaceAnglePitch += 0x1000;64o->oFaceAngleRoll += 0x1000;65o->oPosY += 20.0f;66if (o->oTimer > 90)67o->oAction = 0;68}6970void (*sBulletBillActions[])(void) = { bullet_bill_act_0, bullet_bill_act_1, bullet_bill_act_2,71bullet_bill_act_3, bullet_bill_act_4 };7273void bhv_bullet_bill_loop(void) {74cur_obj_call_action_function(sBulletBillActions);75if (cur_obj_check_interacted())76o->oAction = 4;77}787980