From d683039bdd3645be2c81f125e693b5ed2e1d2e28 Mon Sep 17 00:00:00 2001 From: DakkJaniels <6080734+DakkJaniels@users.noreply.github.com> Date: Fri, 27 Jan 2023 18:06:06 -0500 Subject: [PATCH] stop shaking camera if dead diablo loaded from save. (#4149) --- Source/diablo.cpp | 13 ++++++++++++- Source/diablo.h | 1 + Source/loadsave.cpp | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Source/diablo.cpp b/Source/diablo.cpp index ab5dff3ba..312f3f7e0 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -789,7 +789,7 @@ void RunGameLoop(interface_mode uMsg) EventHandler previousHandler = SetEventHandler(GameEventHandler); run_delta_info(); gbRunGame = true; - gbProcessPlayers = true; + gbProcessPlayers = IsDiabloAlive(true); gbRunGameResult = true; RedrawEverything(); @@ -2980,4 +2980,15 @@ void diablo_color_cyc_logic() } } +bool IsDiabloAlive(bool playSFX) +{ + if (Quests[Q_DIABLO]._qactive == QUEST_DONE && !gbIsMultiplayer) { + if (playSFX) + PlaySFX(USFX_DIABLOD); + return false; + } + + return true; +} + } // namespace devilution diff --git a/Source/diablo.h b/Source/diablo.h index c1d1d130d..f5b617602 100644 --- a/Source/diablo.h +++ b/Source/diablo.h @@ -94,6 +94,7 @@ void diablo_focus_unpause(); bool PressEscKey(); void DisableInputEventHandler(const SDL_Event &event, uint16_t modState); void LoadGameLevel(bool firstflag, lvl_entry lvldir); +bool IsDiabloAlive(bool playSFX); /** * @param bStartup Process additional ticks before returning diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index 1dd22829a..8fb824dc5 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -2212,7 +2212,7 @@ void LoadGame(bool firstflag) missiles_process_charge(); RedoMissileFlags(); NewCursor(CURSOR_HAND); - gbProcessPlayers = true; + gbProcessPlayers = IsDiabloAlive(!firstflag); if (gbIsHellfireSaveGame != gbIsHellfire) { SaveGame();