summaryrefslogtreecommitdiff
path: root/src/beingmanager.cpp
diff options
context:
space:
mode:
authorJared Adams <jaxad0127@gmail.com>2009-02-25 07:54:38 -0700
committerJared Adams <jaxad0127@gmail.com>2009-02-25 07:54:38 -0700
commit7a65eb17a322cb22e7940504797844114fb77d79 (patch)
treec961a8bb4d43f557bf7b4d3b1977fd27a0f8303f /src/beingmanager.cpp
parenta996d4bff3cc5a35ee5cdb6cb5bdef920cf44120 (diff)
downloadmana-7a65eb17a322cb22e7940504797844114fb77d79.tar.gz
mana-7a65eb17a322cb22e7940504797844114fb77d79.tar.bz2
mana-7a65eb17a322cb22e7940504797844114fb77d79.tar.xz
mana-7a65eb17a322cb22e7940504797844114fb77d79.zip
Fix some problems with deleting NPCs early
Diffstat (limited to 'src/beingmanager.cpp')
-rw-r--r--src/beingmanager.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/beingmanager.cpp b/src/beingmanager.cpp
index 3c8edf86..3b73d29f 100644
--- a/src/beingmanager.cpp
+++ b/src/beingmanager.cpp
@@ -96,7 +96,10 @@ Being* BeingManager::createBeing(Uint32 id, Uint16 job)
void BeingManager::destroyBeing(Being *being)
{
mBeings.remove(being);
- delete being;
+ if (being == current_npc)
+ current_npc->handleDeath();
+ else
+ delete being;
}
Being* BeingManager::findBeing(Uint32 id)
@@ -193,6 +196,12 @@ void BeingManager::clear()
mBeings.remove(player_node);
}
+ if (current_npc)
+ {
+ mBeings.remove(current_npc);
+ current_npc->handleDeath();
+ }
+
delete_all(mBeings);
mBeings.clear();