19 {
21 f32 resetPosX, resetPosY, resetPosZ;
22 f32 returnRadians;
23 f32 dx, dy;
24 f32 componentSpeed;
25 s32 completeAxes;
26
27 static f32 LaunchVelocity;
28 static f32 LaunchInterpPhase;
29 static f32 ReturnAngle;
30 static f32 InitialPosY;
31
33 playerStatus->
flags &= ~PS_FLAG_ACTION_STATE_CHANGED;
40 } else {
42 }
43 InitialPosY = playerStatus->
pos.
y;
45 LaunchVelocity = 0.0f;
46
48 LaunchInterpPhase = 90.0f;
53 }
54
59 }
60 break;
64 }
65 playerStatus->
pos.
y -= 4.0f;
66 break;
69 fx_smoke_burst(0, playerStatus->
pos.
x, playerStatus->
pos.
y, playerStatus->
pos.
z, 1.0f, 40);
70 }
84 break;
88 }
89 break;
92 fx_smoke_burst(0, playerStatus->
pos.
x, playerStatus->
pos.
y, playerStatus->
pos.
z, 0.7f, 18);
93 }
97 if (LaunchVelocity < -1.0f) {
98 LaunchVelocity = -1.0f;
99 }
100 playerStatus->
pos.
y += LaunchVelocity;
101 LaunchInterpPhase += 3.0f;
102 if (LaunchInterpPhase > 180.0f) {
103 LaunchInterpPhase = 180.0f;
105 }
106 } else {
109 }
110 break;
113 fx_smoke_burst(0, playerStatus->
pos.
x, playerStatus->
pos.
y, playerStatus->
pos.
z, 0.7f, 18);
114 }
116 resetPosX = playerStatus->
pos.
x;
117 resetPosZ = playerStatus->
pos.
z;
118 }
124 break;
129 break;
133
135 playerStatus->
pos.
x += componentSpeed;
136 completeAxes = 0;
137 if (componentSpeed >= 0.0f) {
140 completeAxes++;
141 }
142 } else {
145 completeAxes++;
146 }
147 }
148
150 playerStatus->
pos.
z -= componentSpeed;
151 if (componentSpeed >= 0.0f) {
154 completeAxes++;
155 }
156 } else {
159 completeAxes++;
160 }
161 }
162
163 if (completeAxes == 2) {
165 }
166 break;
169 fx_smoke_burst(0, playerStatus->
pos.
x, playerStatus->
pos.
y, playerStatus->
pos.
z, 0.7f, 18);
170 }
172 if (completeAxes >= 0) {
179 playerStatus->
flags &= ~PS_FLAG_HIT_FIRE;
180 playerStatus->
flags &= ~PS_FLAG_FLYING;
183 playerStatus->
pos.
y += 6.0f;
185 }
186 break;
190 if (completeAxes >= 0) {
193 }
194 break;
198 playerStatus->
flags &= ~PS_FLAG_SCRIPTED_FALL;
200 }
201 break;
202 }
205 }
206}
@ CAM_SHAKE_DECAYING_VERTICAL
@ PS_FLAG_ACTION_STATE_CHANGED
@ PA_FLAG_INTERRUPT_USE_PARTNER
forces actions with bow, parakarry, watt, and lakilester to end (sushie not tested)
@ CAMERA_MOVE_IGNORE_PLAYER_Y
@ CAMERA_MOVE_NO_INTERP_Y
void start_rumble(s32, s32)
s32 get_lava_reset_pos(f32 *x, f32 *y, f32 *z)
void suggest_player_anim_always_forward(AnimID anim)
f32 player_check_collision_below(f32, s32 *colliderID)
s32 phys_adjust_cam_on_landing(void)
void set_action_state(s32 actionState)
void subtract_hp(s32 amt)
void exec_ShakeCamX(s32 arg0, s32 arg1, s32 arg2, f32 arg3)
void sin_cos_rad(f32 rad, f32 *outSinTheta, f32 *outCosTheta)
f32 get_xz_dist_to_player(f32, f32)
void open_status_bar_slowly(void)
f32 player_fall_distance(void)
void sfx_play_sound_at_player(s32 soundID, s32 arg1)
#define LOAD_INTEGRATOR_FALL(ptr)
PlayerStatus gPlayerStatus