diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-01-11 20:56:24 +0100 |
---|---|---|
committer | funjoker <funjoker109@gmail.com> | 2024-01-14 19:53:38 +0100 |
commit | ce5c1ad40973fe0730f3d82dd54ee3888afcadcf (patch) | |
tree | c7435b59c9abd2268ade6fd13d2ae89ddf2d4b1a /src/server/game/Globals/ObjectMgr.cpp | |
parent | c740c695378673036b2e925925029e797fee815a (diff) |
Core/Conditions: Refactor ConditionMgr internals to get rid of separate containers for some condition source types
(cherry picked from commit 0b5406dd882c6d96bc1be6fd0a78375c3b316415)
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 78540a5c6eb..b040b78c18a 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6921,7 +6921,7 @@ WorldSafeLocsEntry const* ObjectMgr::GetClosestGraveyardInZone(WorldLocation con if (conditionObject) { - if (!sConditionMgr->IsObjectMeetToConditions(conditionSource, data.Conditions)) + if (!data.Conditions.Meets(conditionSource)) continue; if (int16(entry->Loc.GetMapId()) == mapEntry->ParentMapID && !conditionObject->GetPhaseShift().HasVisibleMapId(entry->Loc.GetMapId())) @@ -6930,15 +6930,18 @@ WorldSafeLocsEntry const* ObjectMgr::GetClosestGraveyardInZone(WorldLocation con else if (team != 0) { bool teamConditionMet = true; - for (Condition const* cond : data.Conditions) + if (std::shared_ptr<std::vector<Condition>> conditions = data.Conditions.Conditions.lock()) { - if (cond->ConditionType != CONDITION_TEAM) - continue; + for (Condition const& cond : *conditions) + { + if (cond.ConditionType != CONDITION_TEAM) + continue; - if (cond->ConditionValue1 == team) - continue; + if (cond.ConditionValue1 == team) + continue; - teamConditionMet = false; + teamConditionMet = false; + } } if (!teamConditionMet) |