white_puff_explode.inc.c (1179B)
1 // white_puff_explode.inc.c 2 3 void bhv_white_puff_exploding_loop(void) { 4 if (o->oTimer == 0) { 5 cur_obj_compute_vel_xz(); 6 o->oWhitePuffUnkF4 = o->header.gfx.scale[0]; 7 switch (o->oBhvParams2ndByte) { 8 case 2: 9 o->oOpacity = 254; 10 o->oWhitePuffUnkF8 = -21; 11 o->oWhitePuffUnkFC = 0; 12 break; 13 case 3: 14 o->oOpacity = 254; 15 o->oWhitePuffUnkF8 = -13; 16 o->oWhitePuffUnkFC = 1; 17 break; 18 } 19 } 20 21 cur_obj_move_using_vel_and_gravity(); 22 cur_obj_apply_drag_xz(o->oDragStrength); 23 24 if (o->oVelY > 100.0f) { 25 o->oVelY = 100.0f; 26 } 27 28 if (o->oTimer > 20) { 29 obj_mark_for_deletion(o); 30 } 31 32 if (o->oOpacity) { 33 f32 scale; 34 o->oOpacity += o->oWhitePuffUnkF8; 35 if (o->oOpacity < 2) { 36 obj_mark_for_deletion(o); 37 } 38 if (o->oWhitePuffUnkFC) { 39 scale = o->oWhitePuffUnkF4 * ((254 - o->oOpacity) / 254.0); 40 } else { 41 scale = o->oWhitePuffUnkF4 * (o->oOpacity / 254.0); 42 } 43 cur_obj_scale(scale); 44 } 45 }