Merga Aloxado320's changes to SSL cutscene

This commit is contained in:
Colton Rushton 2021-02-16 08:44:41 -04:00
parent c28b7b2b19
commit 2ce60d18c5
2 changed files with 22 additions and 8 deletions

View File

@ -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);
}

View File

@ -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 }
};