From c8c3f9366c2208d871e8a784595f0161dafd6e35 Mon Sep 17 00:00:00 2001 From: obligaron Date: Sun, 13 Nov 2022 21:32:35 +0100 Subject: [PATCH] Play skeleton kings speech only once and also in multiplayer --- Source/diablo.cpp | 5 +---- Source/player.cpp | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Source/diablo.cpp b/Source/diablo.cpp index de7fb1bde..804c4d265 100644 --- a/Source/diablo.cpp +++ b/Source/diablo.cpp @@ -2781,7 +2781,7 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir) } } IncProgress(); - + PlayDungMsgs(); InitMultiView(); IncProgress(); @@ -2852,9 +2852,6 @@ void LoadGameLevel(bool firstflag, lvl_entry lvldir) CompleteProgress(); - if (!gbIsSpawn && setlevel && setlvlnum == SL_SKELKING && Quests[Q_SKELKING]._qactive == QUEST_ACTIVE) - PlaySFX(USFX_SKING1); - // Reset mouse selection of entities pcursmonst = -1; ObjectUnderCursor = nullptr; diff --git a/Source/player.cpp b/Source/player.cpp index c834a26cf..c56959ec4 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -3701,36 +3701,39 @@ void PlayDungMsgs() assert(MyPlayer != nullptr); Player &myPlayer = *MyPlayer; - if (currlevel == 1 && !myPlayer._pLvlVisited[1] && (myPlayer.pDungMsgs & DungMsgCathedral) == 0) { + if (!setlevel && currlevel == 1 && !myPlayer._pLvlVisited[1] && (myPlayer.pDungMsgs & DungMsgCathedral) == 0) { myPlayer.Say(HeroSpeech::TheSanctityOfThisPlaceHasBeenFouled, 40); myPlayer.pDungMsgs = myPlayer.pDungMsgs | DungMsgCathedral; - } else if (currlevel == 5 && !myPlayer._pLvlVisited[5] && (myPlayer.pDungMsgs & DungMsgCatacombs) == 0) { + } else if (!setlevel && currlevel == 5 && !myPlayer._pLvlVisited[5] && (myPlayer.pDungMsgs & DungMsgCatacombs) == 0) { myPlayer.Say(HeroSpeech::TheSmellOfDeathSurroundsMe, 40); myPlayer.pDungMsgs |= DungMsgCatacombs; - } else if (currlevel == 9 && !myPlayer._pLvlVisited[9] && (myPlayer.pDungMsgs & DungMsgCaves) == 0) { + } else if (!setlevel && currlevel == 9 && !myPlayer._pLvlVisited[9] && (myPlayer.pDungMsgs & DungMsgCaves) == 0) { myPlayer.Say(HeroSpeech::ItsHotDownHere, 40); myPlayer.pDungMsgs |= DungMsgCaves; - } else if (currlevel == 13 && !myPlayer._pLvlVisited[13] && (myPlayer.pDungMsgs & DungMsgHell) == 0) { + } else if (!setlevel && currlevel == 13 && !myPlayer._pLvlVisited[13] && (myPlayer.pDungMsgs & DungMsgHell) == 0) { myPlayer.Say(HeroSpeech::IMustBeGettingClose, 40); myPlayer.pDungMsgs |= DungMsgHell; - } else if (currlevel == 16 && !myPlayer._pLvlVisited[16] && (myPlayer.pDungMsgs & DungMsgDiablo) == 0) { + } else if (!setlevel && currlevel == 16 && !myPlayer._pLvlVisited[16] && (myPlayer.pDungMsgs & DungMsgDiablo) == 0) { sfxdelay = 40; sfxdnum = PS_DIABLVLINT; myPlayer.pDungMsgs |= DungMsgDiablo; - } else if (currlevel == 17 && !myPlayer._pLvlVisited[17] && (myPlayer.pDungMsgs2 & 1) == 0) { + } else if (!setlevel && currlevel == 17 && !myPlayer._pLvlVisited[17] && (myPlayer.pDungMsgs2 & 1) == 0) { sfxdelay = 10; sfxdnum = USFX_DEFILER1; Quests[Q_DEFILER]._qactive = QUEST_ACTIVE; Quests[Q_DEFILER]._qlog = true; Quests[Q_DEFILER]._qmsg = TEXT_DEFILER1; myPlayer.pDungMsgs2 |= 1; - } else if (currlevel == 19 && !myPlayer._pLvlVisited[19] && (myPlayer.pDungMsgs2 & 4) == 0) { + } else if (!setlevel && currlevel == 19 && !myPlayer._pLvlVisited[19] && (myPlayer.pDungMsgs2 & 4) == 0) { sfxdelay = 10; sfxdnum = USFX_DEFILER3; myPlayer.pDungMsgs2 |= 4; - } else if (currlevel == 21 && !myPlayer._pLvlVisited[21] && (myPlayer.pDungMsgs & 32) == 0) { + } else if (!setlevel && currlevel == 21 && !myPlayer._pLvlVisited[21] && (myPlayer.pDungMsgs & 32) == 0) { myPlayer.Say(HeroSpeech::ThisIsAPlaceOfGreatPower, 30); myPlayer.pDungMsgs |= 32; + } else if (setlevel && setlvlnum == SL_SKELKING && !gbIsSpawn && !myPlayer._pSLvlVisited[SL_SKELKING] && Quests[Q_SKELKING]._qactive == QUEST_ACTIVE) { + sfxdelay = 10; + sfxdnum = USFX_SKING1; } else { sfxdelay = 0; }