Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/src/game/behaviors/bomp.inc.c
7861 views
1
// bomp.c.inc
2
3
void bhv_small_bomp_init(void) {
4
o->oFaceAngleYaw -= 0x4000;
5
o->oSmallBompInitX = o->oPosX;
6
o->oTimer = random_float() * 100.0f;
7
}
8
9
void bhv_small_bomp_loop(void) {
10
switch (o->oAction) {
11
case BOMP_ACT_WAIT:
12
if (o->oTimer >= 101) {
13
o->oAction = BOMP_ACT_POKE_OUT;
14
o->oForwardVel = 30.0f;
15
}
16
break;
17
18
case BOMP_ACT_POKE_OUT:
19
if (o->oPosX > 3450.0f) {
20
o->oPosX = 3450.0f;
21
o->oForwardVel = 0;
22
}
23
24
if (o->oTimer == 15.0) {
25
o->oAction = BOMP_ACT_EXTEND;
26
o->oForwardVel = 40.0f;
27
cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2);
28
}
29
break;
30
31
case BOMP_ACT_EXTEND:
32
if (o->oPosX > 3830.0f) {
33
o->oPosX = 3830.0f;
34
o->oForwardVel = 0;
35
}
36
37
if (o->oTimer == 60) {
38
o->oAction = BOMP_ACT_RETRACT;
39
o->oForwardVel = 10.0f;
40
o->oMoveAngleYaw -= 0x8000;
41
cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2);
42
}
43
break;
44
45
case BOMP_ACT_RETRACT:
46
if (o->oPosX < 3330.0f) {
47
o->oPosX = 3330.0f;
48
o->oForwardVel = 0;
49
}
50
51
if (o->oTimer == 90) {
52
o->oAction = BOMP_ACT_POKE_OUT;
53
o->oForwardVel = 25.0f;
54
o->oMoveAngleYaw -= 0x8000;
55
}
56
break;
57
}
58
}
59
60
void bhv_large_bomp_init(void) {
61
o->oMoveAngleYaw += 0x4000;
62
o->oTimer = random_float() * 100.0f;
63
}
64
65
void bhv_large_bomp_loop(void) {
66
switch (o->oAction) {
67
case BOMP_ACT_WAIT:
68
if (o->oTimer >= 101) {
69
o->oAction = BOMP_ACT_POKE_OUT;
70
o->oForwardVel = 30.0f;
71
}
72
break;
73
74
case BOMP_ACT_POKE_OUT:
75
if (o->oPosX > 3450.0f) {
76
o->oPosX = 3450.0f;
77
o->oForwardVel = 0;
78
}
79
80
if (o->oTimer == 15.0) {
81
o->oAction = BOMP_ACT_EXTEND;
82
o->oForwardVel = 10.0f;
83
cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2);
84
}
85
break;
86
87
case BOMP_ACT_EXTEND:
88
if (o->oPosX > 3830.0f) {
89
o->oPosX = 3830.0f;
90
o->oForwardVel = 0;
91
}
92
93
if (o->oTimer == 60) {
94
o->oAction = BOMP_ACT_RETRACT;
95
o->oForwardVel = 10.0f;
96
o->oMoveAngleYaw -= 0x8000;
97
cur_obj_play_sound_2(SOUND_OBJ_UNKNOWN2);
98
}
99
break;
100
101
case BOMP_ACT_RETRACT:
102
if (o->oPosX < 3330.0f) {
103
o->oPosX = 3330.0f;
104
o->oForwardVel = 0;
105
}
106
107
if (o->oTimer == 90) {
108
o->oAction = BOMP_ACT_POKE_OUT;
109
o->oForwardVel = 25.0f;
110
o->oMoveAngleYaw -= 0x8000;
111
}
112
break;
113
}
114
}
115
116