From f8e816d9185c09d1c17d921b775e483d132982e5 Mon Sep 17 00:00:00 2001 From: Erik Schilling Date: Tue, 3 Apr 2012 13:29:05 +0200 Subject: Enhanced special support - Made the current charge being saved. - Added script binds: - chr_set_special_recharge_speed - chr_get_special_recharge_speed - chr_set_special_mana - chr_get_special_mana - get_special_info - Added special info lua class. Functions: - name - needed_mana - rechargeable - on_use - on_recharged - category Further the engine no longer sets charge to 0 after using of specials this allows more flexbilillity (like failing specials). Changes on the xml database: - recharge renamed to rechargeable (needed by client and server) - needed - the needed mana to trigger a special (server only) - rechargespeed - the defailt recharge speed in mana per tick (server only) - target - the type of target (either being or point) (server and client) I also made the lua engine pushing nil instead of a 0 light userdata when the pointer was 0. Database update needed. Change is tested. Mana-Mantis: #167, #156 Reviewed-by: bjorn. --- src/scripting/luautil.cpp | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/scripting/luautil.cpp') diff --git a/src/scripting/luautil.cpp b/src/scripting/luautil.cpp index 67dd739..feed756 100644 --- a/src/scripting/luautil.cpp +++ b/src/scripting/luautil.cpp @@ -255,13 +255,22 @@ NPC *checkNPC(lua_State *s, int p) int checkSkill(lua_State *s, int p) { - if (lua_isstring(s, p)) - { - int id = skillManager->getId(luaL_checkstring(s, p)); - luaL_argcheck(s, id != 0, p, "invalid skill name"); - return id; - } - return luaL_checkint(s, 2); + if (lua_isnumber(s, p)) + return luaL_checkint(s, p); + + int id = skillManager->getId(luaL_checkstring(s, p)); + luaL_argcheck(s, id != 0, p, "invalid special name"); + return id; +} + +int checkSpecial(lua_State *s, int p) +{ + if (lua_isnumber(s, p)) + return luaL_checkint(s, p); + + int id = specialManager->getId(luaL_checkstring(s, p)); + luaL_argcheck(s, id != 0, p, "invalid special name"); + return id; } -- cgit