Startup/DB: Print errors on npc_text vs broadcast_text mismatches.

This commit is contained in:
Treeston
2018-08-16 11:33:41 +02:00
parent 2c96b874c3
commit 6eb7f06b1f

View File

@@ -5768,28 +5768,36 @@ void ObjectMgr::LoadGossipText()
for (uint8 i = 0; i < MAX_GOSSIP_TEXT_OPTIONS; ++i) for (uint8 i = 0; i < MAX_GOSSIP_TEXT_OPTIONS; ++i)
{ {
gText.Options[i].Text_0 = fields[cic++].GetString(); GossipTextOption& gOption = gText.Options[i];
gText.Options[i].Text_1 = fields[cic++].GetString(); gOption.Text_0 = fields[cic++].GetString();
gText.Options[i].BroadcastTextID = fields[cic++].GetUInt32(); gOption.Text_1 = fields[cic++].GetString();
gText.Options[i].Language = fields[cic++].GetUInt8(); gOption.BroadcastTextID = fields[cic++].GetUInt32();
gText.Options[i].Probability = fields[cic++].GetFloat(); gOption.Language = fields[cic++].GetUInt8();
gOption.Probability = fields[cic++].GetFloat();
for (uint8 j = 0; j < MAX_GOSSIP_TEXT_EMOTES; ++j) for (uint8 j = 0; j < MAX_GOSSIP_TEXT_EMOTES; ++j)
{ {
gText.Options[i].Emotes[j]._Delay = fields[cic++].GetUInt16(); gOption.Emotes[j]._Delay = fields[cic++].GetUInt16();
gText.Options[i].Emotes[j]._Emote = fields[cic++].GetUInt16(); gOption.Emotes[j]._Emote = fields[cic++].GetUInt16();
} }
}
for (uint8 i = 0; i < MAX_GOSSIP_TEXT_OPTIONS; i++) // check broadcast_text correctness
{ if (gOption.BroadcastTextID)
if (gText.Options[i].BroadcastTextID)
{ {
if (!sObjectMgr->GetBroadcastText(gText.Options[i].BroadcastTextID)) if (BroadcastText const* bcText = sObjectMgr->GetBroadcastText(gOption.BroadcastTextID))
{ {
TC_LOG_ERROR("sql.sql", "GossipText (Id: %u) in table `npc_text` has non-existing or incompatible BroadcastTextID%u %u.", id, i, gText.Options[i].BroadcastTextID); if (bcText->MaleText[DEFAULT_LOCALE] != gOption.Text_0)
gText.Options[i].BroadcastTextID = 0; TC_LOG_ERROR("sql.sql", "Row %u in table `npc_text` has mismatch between text%u_0 and the corresponding MaleText in `broadcast_text` row %u", id, i, gOption.BroadcastTextID);
if (bcText->FemaleText[DEFAULT_LOCALE] != gOption.Text_1)
TC_LOG_ERROR("sql.sql", "Row %u in table `npc_text` has mismatch between text%u_1 and the corresponding FemaleText in `broadcast_text` row %u", id, i, gOption.BroadcastTextID);
} }
else
{
TC_LOG_ERROR("sql.sql", "GossipText (Id: %u) in table `npc_text` has non-existing or incompatible BroadcastTextID%u %u.", id, i, gOption.BroadcastTextID);
gOption.BroadcastTextID = 0;
}
} }
} }