Beispiel #1
0
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));
    }
}
Beispiel #2
0
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( "" );
}