aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp37
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());