void QuestMgr::OnPlayerExploreArea(Player* plr, uint32 AreaID) { uint32 i, j; QuestLogEntry *qle; for(i = 0; i < 25; ++i) { if((qle = plr->GetQuestLogInSlot(i))) { // dont waste time on quests without mobs if(qle->GetQuest()->count_requiredtriggers == 0) continue; for(j = 0; j < 4; ++j) { if(qle->GetQuest()->required_triggers[j] == AreaID && !qle->m_explored_areas[j]) { qle->SetTrigger(j); CALL_QUESTSCRIPT_EVENT(qle, OnExploreArea)(qle->m_explored_areas[j], plr); qle->UpdatePlayerFields(); if(qle->CanBeFinished()) { plr->UpdateNearbyGameObjects(); qle->SendQuestComplete(); } break; } } } } }
// public interface for the affray quest void OnPlayerEnteredCircle(Player *pPlayer) { QuestLogEntry *qle = pPlayer->GetQuestLogForEntry(QUEST_THEAFFRAY); if(qle->CanBeFinished() || qle->HasFailed()) return; // try to start the affray if(Start()) { qle->SetTrigger(0); qle->UpdatePlayerFields(); } }