diff --git a/Source/Game/Globals/ObjectManager.cs b/Source/Game/Globals/ObjectManager.cs index be84d6c64..51b5bb969 100644 --- a/Source/Game/Globals/ObjectManager.cs +++ b/Source/Game/Globals/ObjectManager.cs @@ -29,6 +29,7 @@ using Game.Misc; using Game.Scripting; using Game.Spells; using System; +using System.Collections; using System.Collections.Generic; using System.Linq; using System.Numerics; @@ -2956,21 +2957,23 @@ namespace Game npcText.Data[i].BroadcastTextID = result.Read(9 + i); } + BitSet erasedBroadcastTexts = new(SharedConst.MaxNpcTextOptions); for (int i = 0; i < SharedConst.MaxNpcTextOptions; i++) { if (npcText.Data[i].BroadcastTextID != 0) { if (!CliDB.BroadcastTextStorage.ContainsKey(npcText.Data[i].BroadcastTextID)) { - Log.outError(LogFilter.Sql, "NPCText (Id: {0}) has a non-existing or incompatible BroadcastText (ID: {1}, Index: {2})", textID, npcText.Data[i].BroadcastTextID, i); + Log.outError(LogFilter.Sql, "NPCText (Id: {0}) has a non-existing BroadcastText (ID: {1}, Index: {2})", textID, npcText.Data[i].BroadcastTextID, i); npcText.Data[i].BroadcastTextID = 0; + erasedBroadcastTexts[i] = true; } } } for (byte i = 0; i < SharedConst.MaxNpcTextOptions; i++) { - if (npcText.Data[i].Probability > 0 && npcText.Data[i].BroadcastTextID == 0) + if (npcText.Data[i].Probability > 0 && npcText.Data[i].BroadcastTextID == 0 && !erasedBroadcastTexts[i]) { Log.outError(LogFilter.Sql, "NPCText (ID: {0}) has a probability (Index: {1}) set, but no BroadcastTextID to go with it", textID, i); npcText.Data[i].Probability = 0;