diff options
-rw-r--r-- | gameserver.cbp | 5 | ||||
-rw-r--r-- | src/game-server/mapcomposite.cpp | 29 |
2 files changed, 19 insertions, 15 deletions
diff --git a/gameserver.cbp b/gameserver.cbp index 9af1aa7c..6ff1d140 100644 --- a/gameserver.cbp +++ b/gameserver.cbp @@ -61,6 +61,8 @@ <Unit filename="src/defines.h" /> <Unit filename="src/game-server/accountconnection.cpp" /> <Unit filename="src/game-server/accountconnection.hpp" /> + <Unit filename="src/game-server/actor.cpp" /> + <Unit filename="src/game-server/actor.hpp" /> <Unit filename="src/game-server/attackzone.cpp" /> <Unit filename="src/game-server/attackzone.hpp" /> <Unit filename="src/game-server/being.cpp" /> @@ -97,11 +99,8 @@ <Unit filename="src/game-server/monster.hpp" /> <Unit filename="src/game-server/monstermanager.cpp" /> <Unit filename="src/game-server/monstermanager.hpp" /> - <Unit filename="src/game-server/movingobject.cpp" /> - <Unit filename="src/game-server/movingobject.hpp" /> <Unit filename="src/game-server/npc.cpp" /> <Unit filename="src/game-server/npc.hpp" /> - <Unit filename="src/game-server/object.hpp" /> <Unit filename="src/game-server/postman.hpp" /> <Unit filename="src/game-server/quest.cpp" /> <Unit filename="src/game-server/quest.hpp" /> diff --git a/src/game-server/mapcomposite.cpp b/src/game-server/mapcomposite.cpp index df252761..448b3e45 100644 --- a/src/game-server/mapcomposite.cpp +++ b/src/game-server/mapcomposite.cpp @@ -512,6 +512,23 @@ bool MapComposite::insert(Thing *ptr) void MapComposite::remove(Thing *ptr) { + for (std::vector<Thing*>::iterator i = mContent->things.begin(), + i_end = mContent->things.end(); i != i_end; ++i) + { + if ((*i)->canFight()) + { + Being *being = static_cast<Being*>(*i); + if (being->getTarget() == ptr) + { + being->setTarget(NULL); + } + } + if (*i == ptr) + { + i = mContent->things.erase(i); + } + } + if (ptr->isVisible()) { Actor *obj = static_cast< Actor * >(ptr); @@ -525,18 +542,6 @@ void MapComposite::remove(Thing *ptr) mContent->deallocate(static_cast< Being * >(ptr)); } } - - for (std::vector< Thing * >::iterator i = mContent->things.begin(), - i_end = mContent->things.end(); i != i_end; ++i) - { - if (*i == ptr) - { - *i = *(i_end - 1); - mContent->things.pop_back(); - return; - } - } - assert(false); } void MapComposite::setMap(Map *m) |