From d593ceaffff7ed749d03e3b7dca0e668e0c0ffbc Mon Sep 17 00:00:00 2001 From: Emagi Date: Mon, 18 Aug 2025 17:44:12 -0400 Subject: [PATCH] Added playerscripts lua function on_level_up_complete called at the end of level change returning -1 in the global.lua for on_level_up_complete will abort the zone script if necessary --- source/WorldServer/client.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/source/WorldServer/client.cpp b/source/WorldServer/client.cpp index 186af6a..c183f44 100644 --- a/source/WorldServer/client.cpp +++ b/source/WorldServer/client.cpp @@ -5745,6 +5745,21 @@ bool Client::ChangeLevel(int16 old_level, int16 new_level, int32 xp_earned) { if (GetPlayer()->GetHP() < GetPlayer()->GetTotalHP() || GetPlayer()->GetPower() < GetPlayer()->GetTotalPower()) GetPlayer()->GetZone()->AddDamagedSpawn(GetPlayer()); + if(playerScript || playerZoneScript) { + std::vector args = { + LuaArg(GetPlayer()->GetZone()), + LuaArg(GetPlayer()), + LuaArg(old_level), + LuaArg(new_level), + LuaArg(xp_earned) + }; + if(playerScript && lua_interface->RunPlayerScriptWithReturn(playerScript, "on_level_up_complete", args, &returnValue) && returnValue == -1) { + return true; + } + if(playerZoneScript && lua_interface->RunPlayerScriptWithReturn(playerZoneScript, "on_level_up_complete", args, &returnValue) && returnValue == -1) { + return true; + } + } return true; }