summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Athay <ko2fan@gmail.com>2009-04-22 18:48:09 +0100
committerDavid Athay <ko2fan@gmail.com>2009-04-22 18:48:09 +0100
commitb4864fb3a210dd2aea1ecfef4d5e34f0d1054cec (patch)
treedd3db0f3af3087a8a52b75083793ece43dd7efa2 /src
parent6108f98638e1c8d3fb81d0cf38c148c5dee90ee5 (diff)
downloadmanaserv-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.cpp58
-rw-r--r--src/scripting/lua.cpp3
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);