mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Auras: Implemented SPELL_AURA_PHASE_ALWAYS_VISIBLE
This commit is contained in:
@@ -2104,12 +2104,12 @@ void Player::SetGameMaster(bool on)
|
||||
getHostileRefManager().setOnlineOfflineState(false);
|
||||
CombatStopWithPets();
|
||||
|
||||
PhasingHandler::SetAlwaysVisible(GetPhaseShift(), true);
|
||||
PhasingHandler::SetAlwaysVisible(this, true, false);
|
||||
m_serverSideVisibilityDetect.SetValue(SERVERSIDE_VISIBILITY_GM, GetSession()->GetSecurity());
|
||||
}
|
||||
else
|
||||
{
|
||||
PhasingHandler::SetAlwaysVisible(GetPhaseShift(), false);
|
||||
PhasingHandler::SetAlwaysVisible(this, !HasAuraType(SPELL_AURA_PHASE_ALWAYS_VISIBLE), false);
|
||||
|
||||
m_ExtraFlags &= ~ PLAYER_EXTRA_GM_ON;
|
||||
setFactionForRace(getRace());
|
||||
|
||||
@@ -494,22 +494,26 @@ uint32 PhasingHandler::GetTerrainMapId(PhaseShift const& phaseShift, Map const*
|
||||
return map->GetId();
|
||||
}
|
||||
|
||||
void PhasingHandler::SetAlwaysVisible(PhaseShift& phaseShift, bool apply)
|
||||
void PhasingHandler::SetAlwaysVisible(WorldObject* object, bool apply, bool updateVisibility)
|
||||
{
|
||||
if (apply)
|
||||
phaseShift.Flags |= PhaseShiftFlags::AlwaysVisible;
|
||||
object->GetPhaseShift().Flags |= PhaseShiftFlags::AlwaysVisible;
|
||||
else
|
||||
phaseShift.Flags &= ~PhaseShiftFlags::AlwaysVisible;
|
||||
object->GetPhaseShift().Flags &= ~PhaseShiftFlags::AlwaysVisible;
|
||||
|
||||
UpdateVisibilityIfNeeded(object, updateVisibility, true);
|
||||
}
|
||||
|
||||
void PhasingHandler::SetInversed(PhaseShift& phaseShift, bool apply)
|
||||
void PhasingHandler::SetInversed(WorldObject* object, bool apply, bool updateVisibility)
|
||||
{
|
||||
if (apply)
|
||||
phaseShift.Flags |= PhaseShiftFlags::Inverse;
|
||||
object->GetPhaseShift().Flags |= PhaseShiftFlags::Inverse;
|
||||
else
|
||||
phaseShift.Flags &= PhaseShiftFlags::Inverse;
|
||||
object->GetPhaseShift().Flags &= PhaseShiftFlags::Inverse;
|
||||
|
||||
phaseShift.UpdateUnphasedFlag();
|
||||
object->GetPhaseShift().UpdateUnphasedFlag();
|
||||
|
||||
UpdateVisibilityIfNeeded(object, updateVisibility, true);
|
||||
}
|
||||
|
||||
void PhasingHandler::PrintToChat(ChatHandler* chat, PhaseShift const& phaseShift)
|
||||
|
||||
@@ -63,8 +63,8 @@ public:
|
||||
|
||||
static uint32 GetTerrainMapId(PhaseShift const& phaseShift, Map const* map, float x, float y);
|
||||
|
||||
static void SetAlwaysVisible(PhaseShift& phaseShift, bool apply);
|
||||
static void SetInversed(PhaseShift& phaseShift, bool apply);
|
||||
static void SetAlwaysVisible(WorldObject* object, bool apply, bool updateVisibility);
|
||||
static void SetInversed(WorldObject* object, bool apply, bool updateVisibility);
|
||||
|
||||
static void PrintToChat(ChatHandler* chat, PhaseShift const& phaseShift);
|
||||
static std::string FormatPhases(PhaseShift const& phaseShift);
|
||||
|
||||
@@ -399,7 +399,7 @@ enum AuraType : uint32
|
||||
SPELL_AURA_OVERRIDE_UNLOCKED_AZERITE_ESSENCE_RANK = 324, // testing aura
|
||||
SPELL_AURA_LEARN_PVP_TALENT = 325, // NYI
|
||||
SPELL_AURA_PHASE_GROUP = 326, // Puts the player in all the phases that are in the group with id = miscB
|
||||
SPELL_AURA_PHASE_ALWAYS_VISIBLE = 327, // NYI - sets PhaseShiftFlags::AlwaysVisible
|
||||
SPELL_AURA_PHASE_ALWAYS_VISIBLE = 327, // Sets PhaseShiftFlags::AlwaysVisible
|
||||
SPELL_AURA_TRIGGER_SPELL_ON_POWER_PCT = 328, // NYI Triggers spell when power goes above (MiscB = 0) or falls below (MiscB = 1) specified percent value (once, not every time condition has meet)
|
||||
SPELL_AURA_MOD_POWER_GAIN_PCT = 329,
|
||||
SPELL_AURA_CAST_WHILE_WALKING = 330,
|
||||
|
||||
@@ -395,7 +395,7 @@ NonDefaultConstructible<pAuraEffectHandler> AuraEffectHandler[TOTAL_AURAS]=
|
||||
&AuraEffect::HandleNULL, //324 SPELL_AURA_OVERRIDE_UNLOCKED_AZERITE_ESSENCE_RANK
|
||||
&AuraEffect::HandleUnused, //325 SPELL_AURA_LEARN_PVP_TALENT
|
||||
&AuraEffect::HandlePhaseGroup, //326 SPELL_AURA_PHASE_GROUP
|
||||
&AuraEffect::HandleNULL, //327 SPELL_AURA_PHASE_ALWAYS_VISIBLE
|
||||
&AuraEffect::HandlePhaseAlwaysVisible, //327 SPELL_AURA_PHASE_ALWAYS_VISIBLE
|
||||
&AuraEffect::HandleNULL, //328 SPELL_AURA_TRIGGER_SPELL_ON_POWER_PCT
|
||||
&AuraEffect::HandleNULL, //329 SPELL_AURA_MOD_POWER_GAIN_PCT
|
||||
&AuraEffect::HandleNoImmediateEffect, //330 SPELL_AURA_CAST_WHILE_WALKING
|
||||
@@ -1722,6 +1722,24 @@ void AuraEffect::HandlePhaseGroup(AuraApplication const* aurApp, uint8 mode, boo
|
||||
PhasingHandler::RemovePhaseGroup(target, uint32(GetMiscValueB()), true);
|
||||
}
|
||||
|
||||
void AuraEffect::HandlePhaseAlwaysVisible(AuraApplication const* aurApp, uint8 mode, bool apply) const
|
||||
{
|
||||
if (!(mode & AURA_EFFECT_HANDLE_REAL))
|
||||
return;
|
||||
|
||||
Unit* target = aurApp->GetTarget();
|
||||
|
||||
if (!apply)
|
||||
PhasingHandler::SetAlwaysVisible(target, true, true);
|
||||
else
|
||||
{
|
||||
if (target->HasAuraType(SPELL_AURA_PHASE_ALWAYS_VISIBLE) || (target->IsPlayer() && target->ToPlayer()->IsGameMaster()))
|
||||
return;
|
||||
|
||||
PhasingHandler::SetAlwaysVisible(target, false, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**********************/
|
||||
/*** UNIT MODEL ***/
|
||||
/**********************/
|
||||
|
||||
@@ -153,6 +153,7 @@ class TC_GAME_API AuraEffect
|
||||
void HandleAuraGhost(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||
void HandlePhase(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||
void HandlePhaseGroup(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||
void HandlePhaseAlwaysVisible(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||
|
||||
// unit model
|
||||
void HandleAuraModShapeshift(AuraApplication const* aurApp, uint8 mode, bool apply) const;
|
||||
|
||||
Reference in New Issue
Block a user