mirror of https://github.com/sm64pc/sm64pc.git
Merga Aloxado320's changes to SSL cutscene
This commit is contained in:
parent
c28b7b2b19
commit
2ce60d18c5
|
@ -53,6 +53,9 @@ void bhv_pyramid_top_spinning(void) {
|
|||
// with a random velocity and angle.
|
||||
if (o->oTimer < 90) {
|
||||
pyramidFragment = spawn_object(o, MODEL_DIRT_ANIMATION, bhvPyramidTopFragment);
|
||||
#ifdef QOL_FIXES
|
||||
pyramidFragment->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;
|
||||
#endif
|
||||
pyramidFragment->oForwardVel = random_float() * 10.0f + 20.0f;
|
||||
pyramidFragment->oMoveAngleYaw = random_u16();
|
||||
pyramidFragment->oPyramidTopFragmentsScale = 0.8f;
|
||||
|
@ -72,6 +75,9 @@ void bhv_pyramid_top_explode(void) {
|
|||
struct Object *pyramidFragment;
|
||||
s16 i;
|
||||
|
||||
#ifdef QOL_FIXES
|
||||
if (o->oTimer == 0) {
|
||||
#endif
|
||||
spawn_mist_particles_variable(0, 0, 690);
|
||||
|
||||
// Generate 30 pyramid fragments with random properties.
|
||||
|
@ -79,6 +85,9 @@ void bhv_pyramid_top_explode(void) {
|
|||
pyramidFragment = spawn_object(
|
||||
o, MODEL_DIRT_ANIMATION, bhvPyramidTopFragment
|
||||
);
|
||||
#ifdef QOL_FIXES
|
||||
pyramidFragment->activeFlags |= ACTIVE_FLAG_INITIATED_TIME_STOP;
|
||||
#endif
|
||||
pyramidFragment->oForwardVel = random_float() * 50 + 80;
|
||||
pyramidFragment->oVelY = random_float() * 80 + 20;
|
||||
pyramidFragment->oMoveAngleYaw = random_u16();
|
||||
|
@ -87,10 +96,17 @@ void bhv_pyramid_top_explode(void) {
|
|||
}
|
||||
|
||||
#ifdef QOL_FIXES
|
||||
disable_time_stop_including_mario();
|
||||
cur_obj_disable();
|
||||
}
|
||||
|
||||
if (o->oTimer == 30) {
|
||||
disable_time_stop_including_mario();
|
||||
#endif
|
||||
// Deactivate the pyramid top.
|
||||
o->activeFlags = ACTIVE_FLAG_DEACTIVATED;
|
||||
#ifdef QOL_FIXES
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void bhv_pyramid_top_loop(void) {
|
||||
|
@ -100,6 +116,7 @@ void bhv_pyramid_top_loop(void) {
|
|||
play_puzzle_jingle();
|
||||
#ifdef QOL_FIXES
|
||||
cutscene_object(CUTSCENE_SSL_PYRAMID_EXPLODE, o);
|
||||
enable_time_stop_including_mario();
|
||||
#endif
|
||||
o->oAction = PYRAMID_TOP_ACT_SPINNING;
|
||||
}
|
||||
|
@ -107,9 +124,6 @@ void bhv_pyramid_top_loop(void) {
|
|||
|
||||
case PYRAMID_TOP_ACT_SPINNING:
|
||||
if (o->oTimer == 0) {
|
||||
#ifdef QOL_FIXES
|
||||
enable_time_stop_including_mario();
|
||||
#endif
|
||||
cur_obj_play_sound_2(SOUND_GENERAL2_PYRAMID_TOP_SPIN);
|
||||
}
|
||||
|
||||
|
|
|
@ -8992,7 +8992,9 @@ BAD_RETURN(s32) cutscene_pyramid_top_explode(struct Camera *c) {
|
|||
* End the pyramid top explosion cutscene.
|
||||
*/
|
||||
BAD_RETURN(s32) cutscene_pyramid_top_explode_end(struct Camera *c) {
|
||||
#ifndef QOL_FIXES
|
||||
cutscene_stop_dialog(c);
|
||||
#endif
|
||||
stop_cutscene_and_retrieve_stored_info(c);
|
||||
// Move the camera back to Mario
|
||||
transition_next_state(c, 30);
|
||||
|
@ -10763,12 +10765,10 @@ struct Cutscene sCutsceneEnterPyramidTop[] = {
|
|||
* Unused cutscene for when the pyramid explodes.
|
||||
*/
|
||||
struct Cutscene sCutscenePyramidTopExplode[] = {
|
||||
#ifndef QOL_FIXES
|
||||
#ifndef QOL_FIXES
|
||||
{ cutscene_mario_dialog, CUTSCENE_LOOP },
|
||||
#endif
|
||||
{ cutscene_pyramid_top_explode, 150 },
|
||||
#else
|
||||
{ cutscene_pyramid_top_explode, 170 },
|
||||
#endif
|
||||
{ cutscene_pyramid_top_explode_end, 0 }
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue