diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2011-07-28 20:27:13 +0200 |
---|---|---|
committer | Yohann Ferreira <yohann_dot_ferreira_at_orange_dot_efer> | 2011-08-03 20:16:47 +0200 |
commit | 23f2c4c4ac4f81f0410f26bfcb7fde8c640be684 (patch) | |
tree | a22b485016ffac08ba47be02deff1cc3eead04b8 /src | |
parent | 17e800c6edd889c6b7b4826adb944ab32a45f1b2 (diff) | |
download | manaserv-23f2c4c4ac4f81f0410f26bfcb7fde8c640be684.tar.gz manaserv-23f2c4c4ac4f81f0410f26bfcb7fde8c640be684.tar.bz2 manaserv-23f2c4c4ac4f81f0410f26bfcb7fde8c640be684.tar.xz manaserv-23f2c4c4ac4f81f0410f26bfcb7fde8c640be684.zip |
Added monster_remove lua function.
mana.monster_remove(monster) can now be used to remove a monster
from a map.
Resolves: Mana-Mantis #352.
Reviewed-by: Bertram.
Diffstat (limited to 'src')
-rw-r--r-- | src/scripting/lua.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/scripting/lua.cpp b/src/scripting/lua.cpp index 553c8593..c3a38bf9 100644 --- a/src/scripting/lua.cpp +++ b/src/scripting/lua.cpp @@ -1019,6 +1019,30 @@ static int monster_create(lua_State *s) } /** + * mana.monster_remove(mob) + * Remove a monster object without kill event. + * return whether the monster was enqueued for removal. + */ +static int monster_remove(lua_State *s) +{ + if (!lua_islightuserdata(s, 1)) + { + lua_pushboolean(s, false); + return 1; + } + + bool monsterEnqueued = false; + Monster *m = dynamic_cast<Monster *>((Thing *)lua_touserdata(s, 1)); + if (m) + { + GameState::enqueueRemove(m); + monsterEnqueued = true; + } + lua_pushboolean(s, monsterEnqueued); + return 1; +} + +/** * mana.monster_load_script(mob, scriptfilename) * loads a LUA script given for mob */ @@ -1951,6 +1975,7 @@ LuaScript::LuaScript(): { "chr_take_special", &chr_take_special }, { "exp_for_level", &exp_for_level }, { "monster_create", &monster_create }, + { "monster_remove", &monster_remove }, { "monster_load_script", &monster_load_script }, { "being_apply_status", &being_apply_status }, { "being_remove_status", &being_remove_status }, |