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
This commit is contained in:
Emagi 2025-08-18 17:44:12 -04:00
parent eb6da37e3b
commit d593ceafff

View File

@ -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<LuaArg> 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;
}