diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 9a67fa5d1..828e85567 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -3060,8 +3060,15 @@ void Aura::HandleModPossess(bool apply, bool Real) { m_target->SetCharmerGUID(GetCasterGUID()); m_target->SetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE,caster->getFaction()); + caster->SetCharm(m_target); + if(caster->GetTypeId() == TYPEID_PLAYER) + { + ((Player*)caster)->SetFarSightGUID(m_target->GetGUID()); + ((Player*)caster)->SetClientControl(m_target, 1); + } + m_target->CombatStop(); m_target->DeleteThreatList(); if(m_target->GetTypeId() == TYPEID_UNIT) @@ -3094,11 +3101,15 @@ void Aura::HandleModPossess(bool apply, bool Real) if(caster->GetTypeId() == TYPEID_PLAYER) { + ((Player*)caster)->SetFarSightGUID(0); + ((Player*)caster)->SetClientControl(m_target,0); + WorldPacket data(SMSG_PET_SPELLS, 8+4); data << uint64(0); data << uint32(0); ((Player*)caster)->GetSession()->SendPacket(&data); } + if(m_target->GetTypeId() == TYPEID_UNIT) { ((Creature*)m_target)->AIM_Initialize(); @@ -3107,8 +3118,6 @@ void Aura::HandleModPossess(bool apply, bool Real) ((Creature*)m_target)->AI()->AttackStart(caster); } } - if(caster->GetTypeId() == TYPEID_PLAYER) - ((Player*)caster)->SetFarSightGUID(apply ? m_target->GetGUID() : 0); } void Aura::HandleModPossessPet(bool apply, bool Real) diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 2000e45e9..10a46fe5a 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "7530" + #define REVISION_NR "7531" #endif // __REVISION_NR_H__