aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Conditions/ConditionMgr.cpp12
-rw-r--r--src/server/game/Conditions/ConditionMgr.h2
-rw-r--r--src/server/game/Maps/PhaseMgr.cpp30
-rw-r--r--src/server/game/Maps/PhaseMgr.h18
4 files changed, 35 insertions, 27 deletions
diff --git a/src/server/game/Conditions/ConditionMgr.cpp b/src/server/game/Conditions/ConditionMgr.cpp
index 01d675a35c1..15fd5e02985 100644
--- a/src/server/game/Conditions/ConditionMgr.cpp
+++ b/src/server/game/Conditions/ConditionMgr.cpp
@@ -727,20 +727,20 @@ ConditionList ConditionMgr::GetConditionsForSmartEvent(int32 entryOrGuid, uint32
return cond;
}
-ConditionList ConditionMgr::GetConditionsForPhaseDefinition(uint32 zone, uint32 entry)
+ConditionList const* ConditionMgr::GetConditionsForPhaseDefinition(uint32 zone, uint32 entry)
{
- ConditionList cond;
PhaseDefinitionConditionContainer::const_iterator itr = PhaseDefinitionsConditionStore.find(zone);
if (itr != PhaseDefinitionsConditionStore.end())
{
- ConditionTypeContainer::const_iterator i = (*itr).second.find(entry);
- if (i != (*itr).second.end())
+ ConditionTypeContainer::const_iterator i = itr->second.find(entry);
+ if (i != itr->second.end())
{
- cond = (*i).second;
sLog->outDebug(LOG_FILTER_CONDITIONSYS, "GetConditionsForPhaseDefinition: found conditions for zone %u entry %u", zone, entry);
+ return &i->second;
}
}
- return cond;
+
+ return NULL;
}
ConditionList ConditionMgr::GetConditionsForNpcVendorEvent(uint32 creatureId, uint32 itemId)
diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h
index 4db03d8f7df..2547e6bc8a8 100644
--- a/src/server/game/Conditions/ConditionMgr.h
+++ b/src/server/game/Conditions/ConditionMgr.h
@@ -254,7 +254,7 @@ class ConditionMgr
ConditionList GetConditionsForSpellClickEvent(uint32 creatureId, uint32 spellId);
ConditionList GetConditionsForSmartEvent(int32 entryOrGuid, uint32 eventId, uint32 sourceType);
ConditionList GetConditionsForVehicleSpell(uint32 creatureId, uint32 spellId);
- ConditionList GetConditionsForPhaseDefinition(uint32 zone, uint32 entry);
+ ConditionList const* GetConditionsForPhaseDefinition(uint32 zone, uint32 entry);
ConditionList GetConditionsForNpcVendorEvent(uint32 creatureId, uint32 itemId);
private:
diff --git a/src/server/game/Maps/PhaseMgr.cpp b/src/server/game/Maps/PhaseMgr.cpp
index 99eee8d7c08..a7393dfba7f 100644
--- a/src/server/game/Maps/PhaseMgr.cpp
+++ b/src/server/game/Maps/PhaseMgr.cpp
@@ -107,18 +107,26 @@ void PhaseMgr::Recalculate()
inline bool PhaseMgr::CheckDefinition(PhaseDefinition const* phaseDefinition)
{
- return sConditionMgr->IsObjectMeetToConditions(player, sConditionMgr->GetConditionsForPhaseDefinition(phaseDefinition->zoneId, phaseDefinition->entry));
+ ConditionList const* conditions = sConditionMgr->GetConditionsForPhaseDefinition(phaseDefinition->zoneId, phaseDefinition->entry);
+ if (!conditions)
+ return true;
+
+ ConditionSourceInfo srcInfo(player);
+ return sConditionMgr->IsObjectMeetToConditions(srcInfo, *conditions);
}
-bool PhaseMgr::NeedsPhaseUpdateWithData(PhaseUpdateData const updateData) const
+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)
+ ConditionList const* conditionList = sConditionMgr->GetConditionsForPhaseDefinition(phase->zoneId, phase->entry);
+ if (!conditionList)
+ continue;
+
+ for (ConditionList::const_iterator condition = conditionList->begin(); condition != conditionList->end(); ++condition)
if (updateData.IsConditionRelated(*condition))
return true;
}
@@ -203,7 +211,7 @@ void PhaseMgr::SendDebugReportToPlayer(Player* const debugger)
ChatHandler(debugger->GetSession()).PSendSysMessage(LANG_PHASING_PHASEMASK, phaseData.GetPhaseMaskForSpawn(), player->GetPhaseMask());
}
-void PhaseMgr::SetCustomPhase(uint32 const phaseMask)
+void PhaseMgr::SetCustomPhase(uint32 phaseMask)
{
phaseData._CustomPhasemask = phaseMask;
@@ -291,7 +299,7 @@ void PhaseData::AddPhaseDefinition(PhaseDefinition const* phaseDefinition)
activePhaseDefinitions.push_back(phaseDefinition);
}
-void PhaseData::AddAuraInfo(uint32 const spellId, PhaseInfo phaseInfo)
+void PhaseData::AddAuraInfo(uint32 spellId, PhaseInfo const& phaseInfo)
{
if (phaseInfo.phasemask)
_PhasemaskThroughAuras |= phaseInfo.phasemask;
@@ -299,7 +307,7 @@ void PhaseData::AddAuraInfo(uint32 const spellId, PhaseInfo phaseInfo)
spellPhaseInfo[spellId] = phaseInfo;
}
-uint32 PhaseData::RemoveAuraInfo(uint32 const spellId)
+uint32 PhaseData::RemoveAuraInfo(uint32 spellId)
{
PhaseInfoContainer::const_iterator rAura = spellPhaseInfo.find(spellId);
if (rAura != spellPhaseInfo.end())
@@ -323,14 +331,14 @@ uint32 PhaseData::RemoveAuraInfo(uint32 const spellId)
return updateflag;
}
- else
- return 0;
+
+ return 0;
}
//////////////////////////////////////////////////////////////////
// Phase Update Data
-void PhaseUpdateData::AddQuestUpdate(uint32 const questId)
+void PhaseUpdateData::AddQuestUpdate(uint32 questId)
{
AddConditionType(CONDITION_QUESTREWARDED);
AddConditionType(CONDITION_QUESTTAKEN);
@@ -354,7 +362,7 @@ bool PhaseUpdateData::IsConditionRelated(Condition const* condition) const
}
}
-bool PhaseMgr::IsConditionTypeSupported(ConditionTypes const conditionType)
+bool PhaseMgr::IsConditionTypeSupported(ConditionTypes conditionType)
{
switch (conditionType)
{
diff --git a/src/server/game/Maps/PhaseMgr.h b/src/server/game/Maps/PhaseMgr.h
index bf3da7b4cb7..ec41146ded7 100644
--- a/src/server/game/Maps/PhaseMgr.h
+++ b/src/server/game/Maps/PhaseMgr.h
@@ -99,8 +99,8 @@ struct PhaseData
void AddPhaseDefinition(PhaseDefinition const* phaseDefinition);
bool HasActiveDefinitions() const { return !activePhaseDefinitions.empty(); }
- void AddAuraInfo(uint32 const spellId, PhaseInfo phaseInfo);
- uint32 RemoveAuraInfo(uint32 const spellId);
+ void AddAuraInfo(uint32 spellId, PhaseInfo const& phaseInfo);
+ uint32 RemoveAuraInfo(uint32 spellId);
void SendPhaseMaskToPlayer();
void SendPhaseshiftToPlayer();
@@ -113,8 +113,8 @@ private:
struct PhaseUpdateData
{
- void AddConditionType(ConditionTypes const conditionType) { _conditionTypeFlags |= (1 << conditionType); }
- void AddQuestUpdate(uint32 const questId);
+ void AddConditionType(ConditionTypes conditionType) { _conditionTypeFlags |= (1 << conditionType); }
+ void AddQuestUpdate(uint32 questId);
bool IsConditionRelated(Condition const* condition) const;
@@ -143,23 +143,23 @@ public:
void UnRegisterPhasingAuraEffect(AuraEffect const* auraEffect);
// Update flags (delayed phasing)
- void AddUpdateFlag(PhaseUpdateFlag const updateFlag) { _UpdateFlags |= updateFlag; }
- void RemoveUpdateFlag(PhaseUpdateFlag const updateFlag);
+ void AddUpdateFlag(PhaseUpdateFlag updateFlag) { _UpdateFlags |= updateFlag; }
+ void RemoveUpdateFlag(PhaseUpdateFlag updateFlag);
// Needed for modify phase command
- void SetCustomPhase(uint32 const phaseMask);
+ void SetCustomPhase(uint32 phaseMask);
// Debug
void SendDebugReportToPlayer(Player* const debugger);
- static bool IsConditionTypeSupported(ConditionTypes const conditionType);
+ static bool IsConditionTypeSupported(ConditionTypes conditionType);
private:
void Recalculate();
inline bool CheckDefinition(PhaseDefinition const* phaseDefinition);
- bool NeedsPhaseUpdateWithData(PhaseUpdateData const updateData) const;
+ bool NeedsPhaseUpdateWithData(PhaseUpdateData const& updateData) const;
inline bool IsUpdateInProgress() const { return (_UpdateFlags & PHASE_UPDATE_FLAG_ZONE_UPDATE) || (_UpdateFlags & PHASE_UPDATE_FLAG_AREA_UPDATE); }