aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgvcoman <none@none>2008-11-16 14:38:02 -0500
committergvcoman <none@none>2008-11-16 14:38:02 -0500
commit478ca470836b4f28935b1a26f89337a09ed3f3dc (patch)
tree7bfea1b57a904074dee3c6e745b5480c340538dd /src
parent4b6072f9c3ea8d97e711e4ef6e77822c3c2ef4ba (diff)
Delete possessed AI only on creature delete.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/Creature.cpp11
-rw-r--r--src/game/Creature.h2
-rw-r--r--src/game/Player.cpp4
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();
}
}