diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 5e3d3ac9f8..646feb4951 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -147,7 +147,11 @@ Creature::~Creature() delete i_AI; i_AI = NULL; - DeletePossessedAI(); + if (i_AI_possessed) + { + delete i_AI_possessed; + i_AI_possessed = NULL; + } } void Creature::AddToWorld() @@ -555,13 +559,10 @@ void Creature::InitPossessedAI() i_AI->OnPossess(true); } -void Creature::DeletePossessedAI() +void Creature::DisablePossessedAI() { if (!i_AI_possessed) return; - delete i_AI_possessed; - i_AI_possessed = NULL; - // Signal the old AI that it's been re-enabled i_AI->OnPossess(false); } diff --git a/src/game/Creature.h b/src/game/Creature.h index be421f26ad..fbebcb1e06 100644 --- a/src/game/Creature.h +++ b/src/game/Creature.h @@ -457,7 +457,7 @@ class TRINITY_DLL_SPEC Creature : public Unit bool AIM_Initialize(); void InitPossessedAI(); - void DeletePossessedAI(); + void DisablePossessedAI(); void AI_SendMoveToPacket(float x, float y, float z, uint32 time, uint32 MovementFlags, uint8 type); CreatureAI* AI() { return isPossessed() && i_AI_possessed ? i_AI_possessed : i_AI; } diff --git a/src/game/Player.cpp b/src/game/Player.cpp index ec882ef115..0ebd331ed0 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -18896,8 +18896,8 @@ void Player::RemovePossess(bool attack) if(attack) target->AddThreat(this, 1000000.0f); } - // Delete the assigned possessed AI - ((Creature*)target)->DeletePossessedAI(); + // Disable the assigned possessed AI + ((Creature*)target)->DisablePossessedAI(); } }