style(Core/Achievement): Improve error msg for achievement_reward (#2852)

* Change an outError to outDebug

* Fix typos and improve the texts to waste less time for the user

* Added some slightly useful comments for future devs
This commit is contained in:
Barbz
2020-05-12 19:34:13 +02:00
committed by GitHub
parent f301d817e7
commit db45f79cd6
+20 -19
View File
@@ -2797,35 +2797,35 @@ void AchievementGlobalMgr::LoadRewards()
AchievementEntry const* achievement = sAchievementStore.LookupEntry(entry); AchievementEntry const* achievement = sAchievementStore.LookupEntry(entry);
if (!achievement) if (!achievement)
{ {
sLog->outErrorDb("Table `achievement_reward` has wrong achievement (Entry: %u), ignore", entry); sLog->outErrorDb("Table `achievement_reward` has wrong achievement (Entry: %u). Ignoring.", entry);
continue; continue;
} }
AchievementReward reward; AchievementReward reward;
reward.titleId[0] = fields[1].GetUInt32(); reward.titleId[0] = fields[1].GetUInt32(); // Alliance title
reward.titleId[1] = fields[2].GetUInt32(); reward.titleId[1] = fields[2].GetUInt32(); // Horde title
reward.itemId = fields[3].GetUInt32(); reward.itemId = fields[3].GetUInt32();
reward.sender = fields[4].GetUInt32(); reward.sender = fields[4].GetUInt32(); // The sender of the mail (a creature from creature_template)
reward.subject = fields[5].GetString(); reward.subject = fields[5].GetString();
reward.text = fields[6].GetString(); reward.text = fields[6].GetString(); // Body in DB
reward.mailTemplate = fields[7].GetUInt32(); reward.mailTemplate = fields[7].GetUInt32();
// must be title or mail at least // Must reward a title or send a mail else, skip it.
if (!reward.titleId[0] && !reward.titleId[1] && !reward.sender) if (!reward.titleId[0] && !reward.titleId[1] && !reward.sender)
{ {
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) not have title or item reward data, ignore.", entry); sLog->outErrorDb("Table `achievement_reward` (Entry: %u) does not have any title or item reward data. Ignoring.", entry);
continue; continue;
} }
if (achievement->requiredFaction == ACHIEVEMENT_FACTION_ANY && (!reward.titleId[0] ^ !reward.titleId[1])) if (achievement->requiredFaction == ACHIEVEMENT_FACTION_ANY && (!reward.titleId[0] ^ !reward.titleId[1]))
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has title (A: %u H: %u) for only one team.", entry, reward.titleId[0], reward.titleId[1]); sLog->outDebug(LOG_FILTER_NONE, "Table `achievement_reward` (Entry: %u) has title (A: %u H: %u) set for only one team.", entry, reward.titleId[0], reward.titleId[1]);
if (reward.titleId[0]) if (reward.titleId[0])
{ {
CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(reward.titleId[0]); CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(reward.titleId[0]);
if (!titleEntry) if (!titleEntry)
{ {
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has invalid title id (%u) in `title_A`, set to 0", entry, reward.titleId[0]); sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has invalid title id (%u) in `title_A`. Setting it to 0.", entry, reward.titleId[0]);
reward.titleId[0] = 0; reward.titleId[0] = 0;
} }
} }
@@ -2835,51 +2835,52 @@ void AchievementGlobalMgr::LoadRewards()
CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(reward.titleId[1]); CharTitlesEntry const* titleEntry = sCharTitlesStore.LookupEntry(reward.titleId[1]);
if (!titleEntry) if (!titleEntry)
{ {
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has invalid title id (%u) in `title_H`, set to 0", entry, reward.titleId[1]); sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has invalid title id (%u) in `title_H`. Setting it to 0.", entry, reward.titleId[1]);
reward.titleId[1] = 0; reward.titleId[1] = 0;
} }
} }
//check mail data before item for report including wrong item case // Check mail data before item for report including wrong item case
if (reward.sender) if (reward.sender)
{ {
if (!sObjectMgr->GetCreatureTemplate(reward.sender)) if (!sObjectMgr->GetCreatureTemplate(reward.sender))
{ {
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has invalid creature entry %u as sender, mail reward skipped.", entry, reward.sender); sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has invalid creature_template entry %u as Sender. Will not send the mail reward.", entry, reward.sender);
reward.sender = 0; reward.sender = 0;
} }
} }
else else
{ {
if (reward.itemId) if (reward.itemId)
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) does not have sender data but has item reward, item will not be rewarded.", entry); sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has itemId reward set but does not have Sender data set. Item will not be sent.", entry);
if (!reward.subject.empty()) if (!reward.subject.empty())
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) does not have sender data but has mail subject.", entry); sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has mail Subject but does not have Sender data set.", entry); // Maybe add "Mail will not be sent." ?
if (!reward.text.empty()) if (!reward.text.empty())
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) does not have sender data but has mail text.", entry); sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has mail text (Body) set but does not have Sender data set.", entry); // Maybe add "Mail will not be sent." ?
if (reward.mailTemplate) if (reward.mailTemplate)
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) does not have sender data but has mailTemplate.", entry); sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has mailTemplate set does not have Sender data set.", entry); // Maybe add "Mail will not be sent." ?
} }
if (reward.mailTemplate) if (reward.mailTemplate)
{ {
if (!sMailTemplateStore.LookupEntry(reward.mailTemplate)) if (!sMailTemplateStore.LookupEntry(reward.mailTemplate))
{ {
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has invalid mailTemplate (%u).", entry, reward.mailTemplate); sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has invalid mailTemplate (%u) (check the DBC).", entry, reward.mailTemplate);
reward.mailTemplate = 0; reward.mailTemplate = 0;
} }
else if (!reward.subject.empty() || !reward.text.empty()) else if (!reward.subject.empty() || !reward.text.empty())
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has mailTemplate (%u) and mail subject/text.", entry, reward.mailTemplate); sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has mailTemplate (%u) and mail Subject/Body. To use the column mailTemplate, Subject and Body must be empty.", entry, reward.mailTemplate);
} }
if (reward.itemId) if (reward.itemId)
{ {
if (!sObjectMgr->GetItemTemplate(reward.itemId)) if (!sObjectMgr->GetItemTemplate(reward.itemId))
{ {
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has invalid item id %u, reward mail will not contain item.", entry, reward.itemId); // Not sure it's an error, it's probably an outDebug instead, because we can simply send a mail with no reward, right?
sLog->outErrorDb("Table `achievement_reward` (Entry: %u) has invalid item_template id %u. Reward mail will not contain any item.", entry, reward.itemId);
reward.itemId = 0; reward.itemId = 0;
} }
} }