aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Phasing
diff options
context:
space:
mode:
authorSeyden <saiifii@live.de>2023-01-28 15:36:28 +0100
committerGitHub <noreply@github.com>2023-01-28 15:36:28 +0100
commitb5886f6a2d1756357a9240703306e9efc82771d7 (patch)
treea4581ccb1436817693f480fcaa076fadfab3365a /src/server/game/Phasing
parentb5176eb6c2ae640a1cdf22d3d0a483d1b48ecbb6 (diff)
Core/Quests: Dont immediately update object visibility at PhaseShift and wait for the AI Hooks to be called in Player::RewardQuest (#28516)
Diffstat (limited to 'src/server/game/Phasing')
-rw-r--r--src/server/game/Phasing/PhasingHandler.cpp5
-rw-r--r--src/server/game/Phasing/PhasingHandler.h2
2 files changed, 4 insertions, 3 deletions
diff --git a/src/server/game/Phasing/PhasingHandler.cpp b/src/server/game/Phasing/PhasingHandler.cpp
index 5521d7f0d57..b4eef7b5e90 100644
--- a/src/server/game/Phasing/PhasingHandler.cpp
+++ b/src/server/game/Phasing/PhasingHandler.cpp
@@ -366,7 +366,7 @@ void PhasingHandler::OnAreaChange(WorldObject* object)
UpdateVisibilityIfNeeded(object, true, changed);
}
-void PhasingHandler::OnConditionChange(WorldObject* object)
+bool PhasingHandler::OnConditionChange(WorldObject* object, bool updateVisibility /*= true*/)
{
PhaseShift& phaseShift = object->GetPhaseShift();
PhaseShift& suppressedPhaseShift = object->GetSuppressedPhaseShift();
@@ -478,7 +478,8 @@ void PhasingHandler::OnConditionChange(WorldObject* object)
unit->RemoveNotOwnSingleTargetAuras(true);
}
- UpdateVisibilityIfNeeded(object, true, changed);
+ UpdateVisibilityIfNeeded(object, updateVisibility, changed);
+ return changed;
}
void PhasingHandler::SendToPlayer(Player const* player, PhaseShift const& phaseShift)
diff --git a/src/server/game/Phasing/PhasingHandler.h b/src/server/game/Phasing/PhasingHandler.h
index 6da249558a7..5a751dcc725 100644
--- a/src/server/game/Phasing/PhasingHandler.h
+++ b/src/server/game/Phasing/PhasingHandler.h
@@ -52,7 +52,7 @@ public:
static void OnMapChange(WorldObject* object);
static void OnAreaChange(WorldObject* object);
- static void OnConditionChange(WorldObject* object);
+ static bool OnConditionChange(WorldObject* object, bool updateVisibility = true);
static void SendToPlayer(Player const* player, PhaseShift const& phaseShift);
static void SendToPlayer(Player const* player);