void InstanceScript::UpdatePhasing() { PhaseUpdateData phaseUdateData; phaseUdateData.AddConditionType(CONDITION_INSTANCE_INFO); Map::PlayerList const& players = instance->GetPlayers(); for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) if (Player* player = itr->GetSource()) player->GetPhaseMgr().NotifyConditionChanged(phaseUdateData); }
bool PhaseMgr::NeedsPhaseUpdateWithData(PhaseUpdateData const updateData) const { PhaseDefinitionStore::const_iterator itr = _PhaseDefinitionStore->find(player->GetZoneId()); if (itr != _PhaseDefinitionStore->end()) { for (PhaseDefinitionContainer::const_iterator phase = itr->second.begin(); phase != itr->second.end(); ++phase) { ConditionList conditionList = sConditionMgr->GetConditionsForPhaseDefinition(phase->zoneId, phase->entry); for (ConditionList::const_iterator condition = conditionList.begin(); condition != conditionList.end(); ++condition) if (updateData.IsConditionRelated(*condition)) return true; } } return false; }
bool PhaseMgr::NeedsPhaseUpdateWithData(PhaseUpdateData const updateData) { PhaseDefinitionStore::const_iterator itr = _PhaseDefinitionStore->find(player->GetZoneId()); if (itr != _PhaseDefinitionStore->end()) { for (PhaseDefinitionContainer::const_iterator phase = itr->second.begin(); phase != itr->second.end(); ++phase) { std::vector<PlayerCondition const*> conditions; sObjectMgr.GetConditions((*phase)->conditionId, conditions); for (std::vector<PlayerCondition const*>::const_iterator itr = conditions.begin(); itr != conditions.end(); ++itr) if (updateData.IsConditionRelated(*itr)) return true; } } return false; }