From fd025374d4fb013af498b513a2000fd3cfd15890 Mon Sep 17 00:00:00 2001 From: Evan Ramos Date: Sun, 29 Mar 2020 08:41:21 +0000 Subject: [PATCH] Implement WT episode 5 ending From-SVN: r8790 --- source/duke3d/src/screens.cpp | 43 +++++++++++++++++++++++++++++++++ source/duke3d/src/soundsdyn.cpp | 2 ++ source/duke3d/src/soundsdyn.h | 2 ++ 3 files changed, 47 insertions(+) diff --git a/source/duke3d/src/screens.cpp b/source/duke3d/src/screens.cpp index 497fe2537..e72c3da48 100644 --- a/source/duke3d/src/screens.cpp +++ b/source/duke3d/src/screens.cpp @@ -1703,6 +1703,49 @@ static void G_BonusCutscenes(void) videoClearScreen(0L); break; + + case 4: + if (!WORLDTOUR) + return; + + if (ud.lockout == 0) + { + S_StopMusic(); + totalclocklock = totalclock = 0; + + videoClearScreen(0L); + rotatesprite_fs(160<<16, 100<<16, 65536L, 0, FIREFLYGROWEFFECT, 0, 0, 2+8+64+BGSTRETCH); + videoNextPage(); + + fadepal(0, 0, 0, 252, 0, -4); + + I_ClearAllInput(); + + S_PlaySound(E5L7_DUKE_QUIT_YOU); + + do + { + if (engineFPSLimit()) + { + totalclocklock = totalclock; + + videoClearScreen(0L); + rotatesprite_fs(160<<16, 100<<16, 65536L, 0, FIREFLYGROWEFFECT, 0, 0, 2+8+64+BGSTRETCH); + videoNextPage(); + } + + gameHandleEvents(); + + if (I_GeneralTrigger()) break; + } while (1); + + fadepal(0, 0, 0, 0, 252, 4); + } + + S_StopMusic(); + FX_StopAllSounds(); + S_ClearSoundLocks(); + break; } } #endif diff --git a/source/duke3d/src/soundsdyn.cpp b/source/duke3d/src/soundsdyn.cpp index 1646e11b4..7dccd5b3d 100644 --- a/source/duke3d/src/soundsdyn.cpp +++ b/source/duke3d/src/soundsdyn.cpp @@ -190,6 +190,7 @@ LUNATIC_EXTERN struct dynitem g_dynSoundList[] = { "FLAMETHROWER_INTRO", DVPTR(FLAMETHROWER_INTRO), FLAMETHROWER_INTRO__STATIC }, { "FLAMETHROWER_LOOP", DVPTR(FLAMETHROWER_LOOP), FLAMETHROWER_LOOP__STATIC }, { "FLAMETHROWER_END", DVPTR(FLAMETHROWER_END), FLAMETHROWER_END__STATIC }, + { "E5L7_DUKE_QUIT_YOU", DVPTR(E5L7_DUKE_QUIT_YOU), E5L7_DUKE_QUIT_YOU__STATIC }, }; #ifdef DYNSOUNDREMAP_ENABLE @@ -335,6 +336,7 @@ int32_t WIND_REPEAT = WIND_REPEAT__STATIC; int32_t FLAMETHROWER_INTRO = FLAMETHROWER_INTRO__STATIC; int32_t FLAMETHROWER_LOOP = FLAMETHROWER_LOOP__STATIC; int32_t FLAMETHROWER_END = FLAMETHROWER_END__STATIC; +int32_t E5L7_DUKE_QUIT_YOU = E5L7_DUKE_QUIT_YOU__STATIC; #if !defined LUNATIC static hashtable_t h_names = {512, NULL}; diff --git a/source/duke3d/src/soundsdyn.h b/source/duke3d/src/soundsdyn.h index 38438d1e4..0de753893 100644 --- a/source/duke3d/src/soundsdyn.h +++ b/source/duke3d/src/soundsdyn.h @@ -168,6 +168,7 @@ BEGIN_DUKE_NS #define FLAMETHROWER_INTRO__STATIC 398 #define FLAMETHROWER_LOOP__STATIC 399 #define FLAMETHROWER_END__STATIC 400 +#define E5L7_DUKE_QUIT_YOU__STATIC 401 extern int16_t DynamicSoundMap[MAXSOUNDS]; @@ -323,6 +324,7 @@ extern int32_t WIND_REPEAT; extern int32_t FLAMETHROWER_INTRO; extern int32_t FLAMETHROWER_LOOP; extern int32_t FLAMETHROWER_END; +extern int32_t E5L7_DUKE_QUIT_YOU; #define DYNAMICSOUNDMAP(Soundnum) (DynamicSoundMap[Soundnum])