diff options
author | Erik Schilling <ablu.erikschilling@googlemail.com> | 2011-08-17 03:01:22 +0800 |
---|---|---|
committer | Yohann Ferreira <yohann.ferreira@orange.fr> | 2011-08-18 09:15:47 +0800 |
commit | 8900f7ccec26fb3e875c922ad5ececf3d6327441 (patch) | |
tree | 4e2d2b8d565e159b9a51ab083d94a8e351d20028 | |
parent | 0820d6632b0ce5887c49d16929ac7903aa185fe4 (diff) | |
download | manaserv-8900f7ccec26fb3e875c922ad5ececf3d6327441.tar.gz manaserv-8900f7ccec26fb3e875c922ad5ececf3d6327441.tar.bz2 manaserv-8900f7ccec26fb3e875c922ad5ececf3d6327441.tar.xz manaserv-8900f7ccec26fb3e875c922ad5ececf3d6327441.zip |
Added LUA function for changing anger of monsters.
You now can change the anger of a monster to a being using
mana.monster_change_anger(monster, being, anger)
Resolves: Mana-Mantis #366.
-rw-r--r-- | example/serverdata/scripts/maps/desert.lua | 5 | ||||
-rw-r--r-- | src/scripting/lua.cpp | 30 |
2 files changed, 34 insertions, 1 deletions
diff --git a/example/serverdata/scripts/maps/desert.lua b/example/serverdata/scripts/maps/desert.lua index 6d88b374..d11be2fb 100644 --- a/example/serverdata/scripts/maps/desert.lua +++ b/example/serverdata/scripts/maps/desert.lua @@ -100,5 +100,8 @@ function Tamer(npc, ch, list) end local m1 = mana.monster_create("Maggot", mana.posX(ch), mana.posY(ch)) - schedule_in(0.5, function() mana.being_say(m1, "Roaaarrrr!!!") end) + schedule_in(0.5, function() + mana.being_say(m1, "Roaaarrrr!!!") + mana.monster_change_anger(m1, ch, 100) + end) end diff --git a/src/scripting/lua.cpp b/src/scripting/lua.cpp index 47bf3358..cfc07f10 100644 --- a/src/scripting/lua.cpp +++ b/src/scripting/lua.cpp @@ -1124,6 +1124,35 @@ static int monster_get_name(lua_State *s) } /** + * mana.monster_change_anger(Monster*, Being*, int anger) + * Makes a monster angry at a being + */ +static int monster_change_anger(lua_State *s) +{ + const int anger = luaL_checkint(s, 3); + if (!lua_islightuserdata(s, 1)) + { + lua_pushboolean(s, false); + return 1; + } + Monster *m = dynamic_cast<Monster *>((Thing *)lua_touserdata(s, 1)); + if (!m) + { + raiseScriptError(s, "monster_change_anger called " + "for a nonexisting monster"); + return 0; + } + Being *being = getBeing(s, 2); + if (!being) + { + raiseScriptError(s, "monster_change_anger called " + "for a nonexisting being"); + } + m->changeAnger(being, anger); + return 0; +} + +/** * mana.monster_remove(Monster*): bool success * Remove a monster object without kill event. * return whether the monster was enqueued for removal. @@ -2147,6 +2176,7 @@ LuaScript::LuaScript(): { "exp_for_level", &exp_for_level }, { "monster_create", &monster_create }, { "monster_get_name", &monster_get_name }, + { "monster_change_anger", &monster_change_anger }, { "monster_remove", &monster_remove }, { "monster_load_script", &monster_load_script }, { "being_apply_status", &being_apply_status }, |