From 8fabe5a3aacf7797f03d074ab8434f445be64955 Mon Sep 17 00:00:00 2001 From: Matan Shukry Date: Tue, 28 Dec 2021 14:24:10 +0200 Subject: Core/Phasing: Implemented db spawns in personal phases (#26345) Co-authored-by: Shauren --- src/server/game/Phasing/PhasingHandler.cpp | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) (limited to 'src/server/game/Phasing/PhasingHandler.cpp') diff --git a/src/server/game/Phasing/PhasingHandler.cpp b/src/server/game/Phasing/PhasingHandler.cpp index e1432b49351..31a28010c71 100644 --- a/src/server/game/Phasing/PhasingHandler.cpp +++ b/src/server/game/Phasing/PhasingHandler.cpp @@ -496,6 +496,13 @@ void PhasingHandler::InitDbPhaseShift(PhaseShift& phaseShift, uint8 phaseUseFlag phaseShift.Flags = flags; } +void PhasingHandler::InitDbPersonalOwnership(PhaseShift& phaseShift, ObjectGuid const& personalGuid) +{ + ASSERT(phaseShift.IsDbPhaseShift); + ASSERT(phaseShift.HasPersonalPhase()); + phaseShift.PersonalGuid = personalGuid; +} + void PhasingHandler::InitDbVisibleMapId(PhaseShift& phaseShift, int32 visibleMapId) { phaseShift.VisibleMapIds.clear(); @@ -551,9 +558,18 @@ void PhasingHandler::SetInversed(WorldObject* object, bool apply, bool updateVis UpdateVisibilityIfNeeded(object, updateVisibility, true); } -void PhasingHandler::PrintToChat(ChatHandler* chat, PhaseShift const& phaseShift) +void PhasingHandler::PrintToChat(ChatHandler* chat, WorldObject const* target) { - chat->PSendSysMessage(LANG_PHASESHIFT_STATUS, phaseShift.Flags.AsUnderlyingType(), phaseShift.PersonalGuid.ToString().c_str()); + PhaseShift const& phaseShift = target->GetPhaseShift(); + + std::string phaseOwnerName = "N/A"; + if (phaseShift.HasPersonalPhase()) + if (WorldObject* personalGuid = ObjectAccessor::GetWorldObject(*target, phaseShift.PersonalGuid)) + phaseOwnerName = personalGuid->GetName(); + + chat->PSendSysMessage(LANG_PHASESHIFT_STATUS, phaseShift.Flags.AsUnderlyingType(), + phaseShift.PersonalGuid.ToString().c_str(), phaseOwnerName.c_str()); + if (!phaseShift.Phases.empty()) { std::ostringstream phases; @@ -601,6 +617,14 @@ std::string PhasingHandler::FormatPhases(PhaseShift const& phaseShift) return phases.str(); } +bool PhasingHandler::IsPersonalPhase(uint32 phaseId) +{ + if (PhaseEntry const* phase = sPhaseStore.LookupEntry(phaseId)) + return phase->GetFlags().HasFlag(PhaseEntryFlags::Personal); + + return false; +} + void PhasingHandler::UpdateVisibilityIfNeeded(WorldObject* object, bool updateVisibility, bool changed) { if (changed && object->IsInWorld()) -- cgit v1.2.3