diff options
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
| -rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 2ac112f5400..d07ed98d2b3 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -4098,6 +4098,8 @@ void ObjectMgr::LoadQuests() case QUEST_OBJECTIVE_TALKTO: case QUEST_OBJECTIVE_PLAYERKILLS: case QUEST_OBJECTIVE_AREATRIGGER: + case QUEST_OBJECTIVE_WINPETBATTLEAGAINSTNPC: + case QUEST_OBJECTIVE_OBTAIN_CURRENCY: TC_LOG_ERROR("sql.sql", "Quest %u objective %u has invalid StorageIndex = %d for objective type %u", qinfo->GetQuestId(), obj.ID, obj.StorageIndex, obj.Type); break; default: @@ -4132,7 +4134,7 @@ void ObjectMgr::LoadQuests() case QUEST_OBJECTIVE_MIN_REPUTATION: case QUEST_OBJECTIVE_MAX_REPUTATION: if (!sFactionStore.LookupEntry(obj.ObjectID)) - TC_LOG_ERROR("sql.sql", "Quest %u objective %u has non existing faction id %u", qinfo->GetQuestId(), obj.ID, obj.ObjectID); + TC_LOG_ERROR("sql.sql", "Quest %u objective %u has non existing faction id %d", qinfo->GetQuestId(), obj.ID, obj.ObjectID); break; case QUEST_OBJECTIVE_PLAYERKILLS: qinfo->SetSpecialFlag(QUEST_SPECIAL_FLAGS_PLAYER_KILL); @@ -4140,13 +4142,42 @@ void ObjectMgr::LoadQuests() TC_LOG_ERROR("sql.sql", "Quest %u objective %u has invalid player kills count %d", qinfo->GetQuestId(), obj.ID, obj.Amount); break; case QUEST_OBJECTIVE_CURRENCY: + case QUEST_OBJECTIVE_HAVE_CURRENCY: + case QUEST_OBJECTIVE_OBTAIN_CURRENCY: if (!sCurrencyTypesStore.LookupEntry(obj.ObjectID)) - TC_LOG_ERROR("sql.sql", "Quest %u objective %u has non existing currency %u", qinfo->GetQuestId(), obj.ID, obj.ObjectID); + TC_LOG_ERROR("sql.sql", "Quest %u objective %u has non existing currency %d", qinfo->GetQuestId(), obj.ID, obj.ObjectID); if (obj.Amount <= 0) TC_LOG_ERROR("sql.sql", "Quest %u objective %u has invalid currency amount %d", qinfo->GetQuestId(), obj.ID, obj.Amount); break; + case QUEST_OBJECTIVE_LEARNSPELL: + if (!sSpellMgr->GetSpellInfo(obj.ObjectID)) + TC_LOG_ERROR("sql.sql", "Quest %u objective %u has non existing spell id %d", qinfo->GetQuestId(), obj.ID, obj.ObjectID); + break; + case QUEST_OBJECTIVE_WINPETBATTLEAGAINSTNPC: + if (obj.ObjectID && !sObjectMgr->GetCreatureTemplate(obj.ObjectID)) + TC_LOG_ERROR("sql.sql", "Quest %u objective %u has non existing creature entry %u, quest can't be done.", + qinfo->GetQuestId(), obj.ID, uint32(obj.ObjectID)); + break; + case QUEST_OBJECTIVE_DEFEATBATTLEPET: + if (!sBattlePetSpeciesStore.LookupEntry(obj.ObjectID)) + TC_LOG_ERROR("sql.sql", "Quest %u objective %u has non existing battlepet species id %d", qinfo->GetQuestId(), obj.ID, obj.ObjectID); + break; + case QUEST_OBJECTIVE_CRITERIA_TREE: + if (!sCriteriaTreeStore.LookupEntry(obj.ObjectID)) + TC_LOG_ERROR("sql.sql", "Quest %u objective %u has non existing criteria tree id %d", qinfo->GetQuestId(), obj.ID, obj.ObjectID); + break; + case QUEST_OBJECTIVE_AREATRIGGER: + if (sAreaTriggerStore.LookupEntry(uint32(obj.ObjectID))) + _questAreaTriggerStore[obj.ObjectID].insert(qinfo->ID); + else if (obj.ObjectID != -1) + TC_LOG_ERROR("sql.sql", "Quest %u objective %u has non existing areatrigger id %d", qinfo->GetQuestId(), obj.ID, obj.ObjectID); + break; + case QUEST_OBJECTIVE_MONEY: + case QUEST_OBJECTIVE_WINPVPPETBATTLES: + break; default: TC_LOG_ERROR("sql.sql", "Quest %u objective %u has unhandled type %u", qinfo->GetQuestId(), obj.ID, obj.Type); + break; } } @@ -5543,7 +5574,7 @@ void ObjectMgr::LoadQuestAreaTriggers() // continue; - quest modified to required objective and trigger can be allowed. } - _questAreaTriggerStore[trigger_ID] = quest_ID; + _questAreaTriggerStore[trigger_ID].insert(quest_ID); } while (result->NextRow()); |
