void PoolGroup<Quest>::Spawn1Object(PoolObject* obj) { // Creatures QuestRelations* questMap = sObjectMgr->GetCreatureQuestRelationMap(); PooledQuestRelationBoundsNC qr = sPoolMgr->mQuestCreatureRelation.equal_range(obj->guid); for (PooledQuestRelation::iterator itr = qr.first; itr != qr.second; ++itr) { sLog->outDebug(LOG_FILTER_POOLSYS, "PoolGroup<Quest>: Adding quest %u to creature %u", itr->first, itr->second); questMap->insert(QuestRelations::value_type(itr->second, itr->first)); } // Gameobjects questMap = sObjectMgr->GetGOQuestRelationMap(); qr = sPoolMgr->mQuestGORelation.equal_range(obj->guid); for (PooledQuestRelation::iterator itr = qr.first; itr != qr.second; ++itr) { sLog->outDebug(LOG_FILTER_POOLSYS, "PoolGroup<Quest>: Adding quest %u to GO %u", itr->first, itr->second); questMap->insert(QuestRelations::value_type(itr->second, itr->first)); } }
void ObjectMgr::LoadQuests() { sQuestsStorage.Load (); // create multimap previous quest for each existed quest // some quests can have many previous maps setted by NextQuestId in previouse quest // for example set of race quests can lead to single not race specific quest for(uint32 i = 1; i < sQuestsStorage.MaxEntry; ++i ) { QuestInfo const* qinfo = GetQuestInfo(i); if(!qinfo) continue; if(qinfo->PrevQuestId ) sPrevQuests.insert(QuestRelations::value_type(qinfo->QuestId,qinfo->PrevQuestId)); if(qinfo->NextQuestId ) sPrevQuests.insert(QuestRelations::value_type(qinfo->NextQuestId,qinfo->QuestId)); }; sLog.outString( ">> Loaded %u quests definitions", sQuestsStorage.RecordCount ); sLog.outString( "" ); }