sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

thi_top.inc.c (1702B)


      1 // thi_top.inc.c
      2 
      3 static struct SpawnParticlesInfo sTHITopPuffs = {
      4     /* bhvParam:        */ 0,
      5     /* count:           */ 30,
      6     /* model:           */ MODEL_WHITE_PARTICLE_SMALL,
      7     /* offsetY:         */ 0,
      8     /* forwardVelBase:  */ 40,
      9     /* forwardVelRange: */ 0,
     10     /* velYBase:        */ 20,
     11     /* velYRange:       */ 40,
     12     /* gravity:         */ 252,
     13     /* dragStrength:    */ 30,
     14     /* sizeBase:        */ 20.0f,
     15     /* sizeRange:       */ 0.0f,
     16 };
     17 
     18 void bhv_thi_huge_island_top_loop(void) {
     19     if (gTHIWaterDrained & 1) {
     20         if (o->oTimer == 0) {
     21             gEnvironmentRegions[18] = 3000;
     22         }
     23         cur_obj_hide();
     24     } else {
     25         load_object_collision_model();
     26     }
     27 }
     28 
     29 void bhv_thi_tiny_island_top_loop(void) {
     30     if (!(gTHIWaterDrained & 1)) {
     31         if (o->oAction == 0) {
     32             if (o->oDistanceToMario < 500.0f) {
     33                 if (gMarioStates[0].action == ACT_GROUND_POUND_LAND) {
     34                     o->oAction++;
     35                     cur_obj_spawn_particles(&sTHITopPuffs);
     36                     spawn_triangle_break_particles(20, MODEL_DIRT_ANIMATION, 0.3f, 3);
     37                     cur_obj_play_sound_2(SOUND_GENERAL_ACTIVATE_CAP_SWITCH);
     38                     cur_obj_hide();
     39                 }
     40             }
     41         } else {
     42             if (o->oTimer < 50) {
     43                 gEnvironmentRegions[18]--;
     44                 cur_obj_play_sound_1(SOUND_ENV_WATER_DRAIN);
     45             } else {
     46                 gTHIWaterDrained |= 1;
     47                 play_puzzle_jingle();
     48                 o->oAction++;
     49             }
     50         }
     51     } else {
     52         if (o->oTimer == 0) {
     53             gEnvironmentRegions[18] = 700;
     54         }
     55         cur_obj_hide();
     56     }
     57 }