diff options
Diffstat (limited to 'src/scripting/luautil.cpp')
-rw-r--r-- | src/scripting/luautil.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/scripting/luautil.cpp b/src/scripting/luautil.cpp index c9738694..5a0cf883 100644 --- a/src/scripting/luautil.cpp +++ b/src/scripting/luautil.cpp @@ -226,13 +226,22 @@ AbilityManager::AbilityInfo *checkAbility(lua_State *s, int p) return abilityInfo; } -const AttributeManager::AttributeInfo *checkAttribute(lua_State *s, int p) +AttributeManager::AttributeInfo *checkAttribute(lua_State *s, int p) { - const AttributeManager::AttributeInfo *attributeInfo; - if (lua_isnumber(s, p)) + AttributeManager::AttributeInfo *attributeInfo; + + switch (lua_type(s, p)) + { + case LUA_TNUMBER: attributeInfo = attributeManager->getAttributeInfo(luaL_checkint(s, p)); - else + break; + case LUA_TSTRING: attributeInfo = attributeManager->getAttributeInfo(luaL_checkstring(s, p)); + break; + case LUA_TUSERDATA: + attributeInfo = LuaAttributeInfo::check(s, p); + break; + } luaL_argcheck(s, attributeInfo != nullptr, p, "invalid attribute"); return attributeInfo; |