mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 22:37:03 +00:00
[11536] Override Unit::SetPhaseMask for players, move some functionality from Aura::HandlePhase
This commit is contained in:
parent
78a4460501
commit
4bb2d662a2
4 changed files with 32 additions and 35 deletions
|
|
@ -19980,6 +19980,20 @@ template void Player::UpdateVisibilityOf(WorldObject const* viewPoint, Corpse*
|
||||||
template void Player::UpdateVisibilityOf(WorldObject const* viewPoint, GameObject* target, UpdateData& data, std::set<WorldObject*>& visibleNow);
|
template void Player::UpdateVisibilityOf(WorldObject const* viewPoint, GameObject* target, UpdateData& data, std::set<WorldObject*>& visibleNow);
|
||||||
template void Player::UpdateVisibilityOf(WorldObject const* viewPoint, DynamicObject* target, UpdateData& data, std::set<WorldObject*>& visibleNow);
|
template void Player::UpdateVisibilityOf(WorldObject const* viewPoint, DynamicObject* target, UpdateData& data, std::set<WorldObject*>& visibleNow);
|
||||||
|
|
||||||
|
void Player::SetPhaseMask(uint32 newPhaseMask, bool update)
|
||||||
|
{
|
||||||
|
// GM-mode have mask PHASEMASK_ANYWHERE always
|
||||||
|
if (isGameMaster())
|
||||||
|
newPhaseMask = PHASEMASK_ANYWHERE;
|
||||||
|
|
||||||
|
// phase auras normally not expected at BG but anyway better check
|
||||||
|
if (BattleGround *bg = GetBattleGround())
|
||||||
|
bg->EventPlayerDroppedFlag(this);
|
||||||
|
|
||||||
|
Unit::SetPhaseMask(newPhaseMask, update);
|
||||||
|
GetSession()->SendSetPhaseShift(GetPhaseMask());
|
||||||
|
}
|
||||||
|
|
||||||
void Player::InitPrimaryProfessions()
|
void Player::InitPrimaryProfessions()
|
||||||
{
|
{
|
||||||
SetFreePrimaryProfessions(sWorld.getConfig(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL));
|
SetFreePrimaryProfessions(sWorld.getConfig(CONFIG_UINT32_MAX_PRIMARY_TRADE_SKILL));
|
||||||
|
|
|
||||||
|
|
@ -2235,6 +2235,8 @@ class MANGOS_DLL_SPEC Player : public Unit
|
||||||
|
|
||||||
Camera& GetCamera() { return m_camera; }
|
Camera& GetCamera() { return m_camera; }
|
||||||
|
|
||||||
|
virtual void SetPhaseMask(uint32 newPhaseMask, bool update);// overwrite Unit::SetPhaseMask
|
||||||
|
|
||||||
uint8 m_forced_speed_changes[MAX_MOVE_TYPE];
|
uint8 m_forced_speed_changes[MAX_MOVE_TYPE];
|
||||||
|
|
||||||
bool HasAtLoginFlag(AtLoginFlags f) const { return m_atLoginFlags & f; }
|
bool HasAtLoginFlag(AtLoginFlags f) const { return m_atLoginFlags & f; }
|
||||||
|
|
|
||||||
|
|
@ -8214,23 +8214,9 @@ void Aura::HandlePhase(bool apply, bool Real)
|
||||||
target->RemoveAurasDueToSpell(phases.front()->GetId(), GetHolder());
|
target->RemoveAurasDueToSpell(phases.front()->GetId(), GetHolder());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
target->SetPhaseMask(apply ? GetMiscValue() : PHASEMASK_NORMAL, true);
|
||||||
// no-phase is also phase state so same code for apply and remove
|
// no-phase is also phase state so same code for apply and remove
|
||||||
|
if (GetEffIndex() == EFFECT_INDEX_0 && target->GetTypeId() == TYPEID_PLAYER)
|
||||||
// phase auras normally not expected at BG but anyway better check
|
|
||||||
if(target->GetTypeId() == TYPEID_PLAYER)
|
|
||||||
{
|
|
||||||
// drop flag at invisible in bg
|
|
||||||
if(((Player*)target)->InBattleGround())
|
|
||||||
if(BattleGround *bg = ((Player*)target)->GetBattleGround())
|
|
||||||
bg->EventPlayerDroppedFlag((Player*)target);
|
|
||||||
|
|
||||||
// GM-mode have mask 0xFFFFFFFF
|
|
||||||
if(!((Player*)target)->isGameMaster())
|
|
||||||
target->SetPhaseMask(apply ? GetMiscValue() : PHASEMASK_NORMAL, false);
|
|
||||||
|
|
||||||
((Player*)target)->GetSession()->SendSetPhaseShift(apply ? GetMiscValue() : PHASEMASK_NORMAL);
|
|
||||||
|
|
||||||
if (GetEffIndex() == EFFECT_INDEX_0)
|
|
||||||
{
|
{
|
||||||
SpellAreaForAreaMapBounds saBounds = sSpellMgr.GetSpellAreaForAuraMapBounds(GetId());
|
SpellAreaForAreaMapBounds saBounds = sSpellMgr.GetSpellAreaForAuraMapBounds(GetId());
|
||||||
if(saBounds.first != saBounds.second)
|
if(saBounds.first != saBounds.second)
|
||||||
|
|
@ -8253,11 +8239,6 @@ void Aura::HandlePhase(bool apply, bool Real)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
target->SetPhaseMask(apply ? GetMiscValue() : PHASEMASK_NORMAL, false);
|
|
||||||
|
|
||||||
target->UpdateVisibilityAndView();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Aura::HandleAuraSafeFall( bool Apply, bool Real )
|
void Aura::HandleAuraSafeFall( bool Apply, bool Real )
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "11535"
|
#define REVISION_NR "11536"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue