diff options
| author | Sebastian Valle Herrera <subv2112@gmail.com> | 2014-06-24 08:13:16 -0500 |
|---|---|---|
| committer | Sebastian Valle Herrera <subv2112@gmail.com> | 2014-06-24 08:13:16 -0500 |
| commit | 7f0d283599a81c9272a5b29ed5d745c22e0b226e (patch) | |
| tree | 5f42c82f6526129c4b51f5f4e5ecbb985cb8748e | |
| parent | 34b4be59027ce713e83b874749ea7d332b69377b (diff) | |
| parent | c22d51f4683048a43fbffbe079bae1907d5b9019 (diff) | |
Merge pull request #12332 from Rochet2/unitphase
Core/Phasing: Fix pet dismiss on phase with update
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 492197db64e..5e12022312d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -16378,19 +16378,25 @@ void Unit::SetPhaseMask(uint32 newPhaseMask, bool update) } } - WorldObject::SetPhaseMask(newPhaseMask, update); + // Phase player, dont update + WorldObject::SetPhaseMask(newPhaseMask, false); - if (!IsInWorld()) - return; + // Phase pets and summons + if (IsInWorld()) + { + for (ControlList::const_iterator itr = m_Controlled.begin(); itr != m_Controlled.end(); ++itr) + if ((*itr)->GetTypeId() == TYPEID_UNIT) + (*itr)->SetPhaseMask(newPhaseMask, true); - for (ControlList::const_iterator itr = m_Controlled.begin(); itr != m_Controlled.end(); ++itr) - if ((*itr)->GetTypeId() == TYPEID_UNIT) - (*itr)->SetPhaseMask(newPhaseMask, true); + for (uint8 i = 0; i < MAX_SUMMON_SLOT; ++i) + if (m_SummonSlot[i]) + if (Creature* summon = GetMap()->GetCreature(m_SummonSlot[i])) + summon->SetPhaseMask(newPhaseMask, true); + } - for (uint8 i = 0; i < MAX_SUMMON_SLOT; ++i) - if (m_SummonSlot[i]) - if (Creature* summon = GetMap()->GetCreature(m_SummonSlot[i])) - summon->SetPhaseMask(newPhaseMask, true); + // Update visibility after phasing pets and summons so they wont despawn + if (update) + UpdateObjectVisibility(); } void Unit::UpdateObjectVisibility(bool forced) |
