bomp.inc.c (3073B)
1 // bomp.inc.c 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 > 100) { 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.0f; 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.0f; 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.0f; 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 > 100) { 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.0f; 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.0f; 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.0f; 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 }