summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Schilling <ablu.erikschilling@googlemail.com>2011-08-17 03:01:22 +0800
committerYohann Ferreira <yohann.ferreira@orange.fr>2011-08-18 09:15:47 +0800
commit8900f7ccec26fb3e875c922ad5ececf3d6327441 (patch)
tree4e2d2b8d565e159b9a51ab083d94a8e351d20028
parent0820d6632b0ce5887c49d16929ac7903aa185fe4 (diff)
downloadmanaserv-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.lua5
-rw-r--r--src/scripting/lua.cpp30
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 },