Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/src/game/behaviors/bowser_bomb.inc.c
7861 views
1
// bowser_bomb.c.inc
2
3
void bhv_bowser_bomb_loop(void) {
4
if (obj_check_if_collided_with_object(o, gMarioObject) == 1) {
5
o->oInteractStatus &= ~INT_STATUS_INTERACTED;
6
spawn_object(o, MODEL_EXPLOSION, bhvExplosion);
7
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
8
}
9
10
if (o->oInteractStatus & INT_STATUS_HIT_MINE)
11
{
12
spawn_object(o, MODEL_BOWSER_FLAMES, bhvBowserBombExplosion);
13
create_sound_spawner(SOUND_GENERAL_BOWSER_BOMB_EXPLOSION);
14
set_camera_shake_from_point(SHAKE_POS_LARGE, o->oPosX, o->oPosY, o->oPosZ);
15
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
16
}
17
18
set_object_visibility(o, 7000);
19
}
20
21
void bhv_bowser_bomb_explosion_loop(void) {
22
struct Object *mineSmoke;
23
24
cur_obj_scale((f32) o->oTimer / 14.0f * 9.0 + 1.0);
25
if ((o->oTimer % 4 == 0) && (o->oTimer < 20)) {
26
mineSmoke = spawn_object(o, MODEL_BOWSER_SMOKE, bhvBowserBombSmoke);
27
mineSmoke->oPosX += random_float() * 600.0f - 400.0f;
28
mineSmoke->oPosZ += random_float() * 600.0f - 400.0f;
29
mineSmoke->oVelY += random_float() * 10.0f;
30
}
31
32
if (o->oTimer % 2 == 0)
33
o->oAnimState++;
34
if (o->oTimer == 28)
35
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
36
}
37
38
void bhv_bowser_bomb_smoke_loop(void) {
39
cur_obj_scale((f32) o->oTimer / 14.0f * 9.0 + 1.0);
40
if (o->oTimer % 2 == 0)
41
o->oAnimState++;
42
43
o->oOpacity -= 10;
44
if (o->oOpacity < 10)
45
o->oOpacity = 0;
46
47
o->oPosY += o->oVelY;
48
49
if (o->oTimer == 28)
50
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
51
}
52
53