diff options
author | gvcoman <none@none> | 2008-11-16 14:38:02 -0500 |
---|---|---|
committer | gvcoman <none@none> | 2008-11-16 14:38:02 -0500 |
commit | 478ca470836b4f28935b1a26f89337a09ed3f3dc (patch) | |
tree | 7bfea1b57a904074dee3c6e745b5480c340538dd /src | |
parent | 4b6072f9c3ea8d97e711e4ef6e77822c3c2ef4ba (diff) |
Delete possessed AI only on creature delete.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Creature.cpp | 11 | ||||
-rw-r--r-- | src/game/Creature.h | 2 | ||||
-rw-r--r-- | src/game/Player.cpp | 4 |
3 files changed, 9 insertions, 8 deletions
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index 5e3d3ac9f8e..646feb4951f 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 be421f26ad2..fbebcb1e06e 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 ec882ef1154..0ebd331ed04 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(); } } |