diff --git a/source/WorldServer/LuaFunctions.cpp b/source/WorldServer/LuaFunctions.cpp index 0fdc601..c72969a 100644 --- a/source/WorldServer/LuaFunctions.cpp +++ b/source/WorldServer/LuaFunctions.cpp @@ -14462,3 +14462,25 @@ int EQ2Emu_lua_GetZonePlayerFirstLevel(lua_State* state) { lua_interface->SetInt32Value(state, level); return 1; } + +int EQ2Emu_lua_GetSpellRequiredLevel(lua_State* state) { + if (!lua_interface) + return 0; + + LuaSpell* spell = lua_interface->GetCurrentSpell(state); + Spawn* spawn = lua_interface->GetSpawn(state); + lua_interface->ResetFunctionStack(state); + + if (!spell) { + lua_interface->LogError("%s: LUA GetSpellRequiredLevel command error: you must use this function in a spellscript!", lua_interface->GetScriptName(state)); + return 0; + } + if(!spawn || !spawn->IsPlayer()) { + lua_interface->LogError("%s: LUA GetSpellRequiredLevel command error: spawn is not provided as first argument or is invalid (not player or null)!", lua_interface->GetScriptName(state)); + return 0; + } + + lua_interface->SetInt32Value(state, spell->spell->GetLevelRequired((Player*)spawn)); + + return 1; +} \ No newline at end of file diff --git a/source/WorldServer/LuaFunctions.h b/source/WorldServer/LuaFunctions.h index d4c75f6..79d0103 100644 --- a/source/WorldServer/LuaFunctions.h +++ b/source/WorldServer/LuaFunctions.h @@ -672,4 +672,6 @@ int EQ2Emu_lua_GetZonePlayerMinLevel(lua_State* state); int EQ2Emu_lua_GetZonePlayerMaxLevel(lua_State* state); int EQ2Emu_lua_GetZonePlayerAvgLevel(lua_State* state); int EQ2Emu_lua_GetZonePlayerFirstLevel(lua_State* state); + +int EQ2Emu_lua_GetSpellRequiredLevel(lua_State* state); #endif \ No newline at end of file diff --git a/source/WorldServer/LuaInterface.cpp b/source/WorldServer/LuaInterface.cpp index b2e4f5b..0e26420 100644 --- a/source/WorldServer/LuaInterface.cpp +++ b/source/WorldServer/LuaInterface.cpp @@ -1577,6 +1577,8 @@ void LuaInterface::RegisterFunctions(lua_State* state) { lua_register(state,"GetZonePlayerMaxLevel", EQ2Emu_lua_GetZonePlayerMaxLevel); lua_register(state,"GetZonePlayerAvgLevel", EQ2Emu_lua_GetZonePlayerAvgLevel); lua_register(state,"GetZonePlayerFirstLevel", EQ2Emu_lua_GetZonePlayerFirstLevel); + + lua_register(state,"GetSpellRequiredLevel", EQ2Emu_lua_GetSpellRequiredLevel); } void LuaInterface::LogError(const char* error, ...) {