diff options
author | David Athay <ko2fan@gmail.com> | 2009-04-22 18:48:09 +0100 |
---|---|---|
committer | David Athay <ko2fan@gmail.com> | 2009-04-22 18:48:09 +0100 |
commit | b4864fb3a210dd2aea1ecfef4d5e34f0d1054cec (patch) | |
tree | dd3db0f3af3087a8a52b75083793ece43dd7efa2 /src | |
parent | 6108f98638e1c8d3fb81d0cf38c148c5dee90ee5 (diff) | |
download | manaserv-b4864fb3a210dd2aea1ecfef4d5e34f0d1054cec.tar.gz manaserv-b4864fb3a210dd2aea1ecfef4d5e34f0d1054cec.tar.bz2 manaserv-b4864fb3a210dd2aea1ecfef4d5e34f0d1054cec.tar.xz manaserv-b4864fb3a210dd2aea1ecfef4d5e34f0d1054cec.zip |
Fixed non combat beings taking damage. Added some debugging info on inserting and removing objects.
Diffstat (limited to 'src')
-rw-r--r-- | src/game-server/state.cpp | 58 | ||||
-rw-r--r-- | src/scripting/lua.cpp | 3 |
2 files changed, 61 insertions, 0 deletions
diff --git a/src/game-server/state.cpp b/src/game-server/state.cpp index 43c242a6..35eb55c8 100644 --- a/src/game-server/state.cpp +++ b/src/game-server/state.cpp @@ -553,6 +553,35 @@ bool GameState::insert(Thing *ptr) obj->inserted(); + // DEBUG INFO + switch (obj->getType()) + { + case OBJECT_ACTOR: + case OBJECT_ITEM: + LOG_DEBUG("Item inserted: " << static_cast<Item*>(obj)->getItemClass()->getDatabaseID()); + break; + + case OBJECT_NPC: + LOG_DEBUG("NPC inserted: " << static_cast<NPC*>(obj)->getNPC()); + break; + + case OBJECT_CHARACTER: + LOG_DEBUG("Player inserted: " << static_cast<Being*>(obj)->getName()); + break; + + case OBJECT_EFFECT: + LOG_DEBUG("Effect inserted: " << static_cast<Effect*>(obj)->getEffectId()); + break; + + case OBJECT_MONSTER: + LOG_DEBUG("Monster inserted: " << static_cast<Monster*>(obj)->getSpecy()->getType()); + break; + + case OBJECT_OTHER: + default: + LOG_DEBUG("Thing inserted: " << obj->getType()); + } + obj->raiseUpdateFlags(UPDATEFLAG_NEW_ON_MAP); if (obj->getType() != OBJECT_CHARACTER) return true; @@ -587,6 +616,35 @@ void GameState::remove(Thing *ptr) ptr->removed(); + // DEBUG INFO + switch (ptr->getType()) + { + case OBJECT_ACTOR: + case OBJECT_ITEM: + LOG_DEBUG("Item removed: " << static_cast<Item*>(ptr)->getItemClass()->getDatabaseID()); + break; + + case OBJECT_NPC: + LOG_DEBUG("NPC removed: " << static_cast<NPC*>(ptr)->getNPC()); + break; + + case OBJECT_CHARACTER: + LOG_DEBUG("Player removed: " << static_cast<Being*>(ptr)->getName()); + break; + + case OBJECT_EFFECT: + LOG_DEBUG("Effect removed: " << static_cast<Effect*>(ptr)->getEffectId()); + break; + + case OBJECT_MONSTER: + LOG_DEBUG("Monster removed: " << static_cast<Monster*>(ptr)->getSpecy()->getType()); + break; + + case OBJECT_OTHER: + default: + LOG_DEBUG("Thing removed: " << ptr->getType()); + } + if (ptr->canMove()) { if (ptr->getType() == OBJECT_CHARACTER) diff --git a/src/scripting/lua.cpp b/src/scripting/lua.cpp index e6e7860a..2b148ef0 100644 --- a/src/scripting/lua.cpp +++ b/src/scripting/lua.cpp @@ -453,6 +453,9 @@ static int being_damage(lua_State *s) { Being *being = getBeing(s, 1); + if (!being->canFight()) + return 0; + Damage damage; damage.base = lua_tointeger(s, 2); damage.delta = lua_tointeger(s, 3); |