From fbc14ae1af5d078d6a1edc6db55327f537c6274f Mon Sep 17 00:00:00 2001 From: iThorgrim Date: Fri, 16 Jan 2026 22:38:59 +0100 Subject: [PATCH] feat: Add Player Event OnReleasedGhost --- src/ALE_SC.cpp | 10 ++++++++-- src/LuaEngine/Hooks.h | 1 + src/LuaEngine/LuaEngine.h | 1 + src/LuaEngine/hooks/PlayerHooks.cpp | 7 +++++++ src/LuaEngine/methods/GlobalMethods.h | 1 + 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/ALE_SC.cpp b/src/ALE_SC.cpp index 2c60dda823..5151e083d8 100644 --- a/src/ALE_SC.cpp +++ b/src/ALE_SC.cpp @@ -643,7 +643,8 @@ class ALE_PlayerScript : public PlayerScript PLAYERHOOK_ON_CAN_UPDATE_SKILL, PLAYERHOOK_ON_BEFORE_UPDATE_SKILL, PLAYERHOOK_ON_UPDATE_SKILL, - PLAYERHOOK_CAN_RESURRECT + PLAYERHOOK_CAN_RESURRECT, + PLAYERHOOK_ON_PLAYER_RELEASED_GHOST }) { } void OnPlayerResurrect(Player* player, float /*restore_percent*/, bool /*applySickness*/) override @@ -955,11 +956,16 @@ class ALE_PlayerScript : public PlayerScript { sALE->OnPlayerUpdateSkill(player, skill_id, value, max, step, new_value); } - + bool OnPlayerCanResurrect(Player* player) override { return sALE->CanPlayerResurrect(player); } + + void OnPlayerReleasedGhost(Player* player) override + { + sALE->OnPlayerReleasedGhost(player); + } }; class ALE_ServerScript : public ServerScript diff --git a/src/LuaEngine/Hooks.h b/src/LuaEngine/Hooks.h index f871986b2d..f83dd99e31 100644 --- a/src/LuaEngine/Hooks.h +++ b/src/LuaEngine/Hooks.h @@ -237,6 +237,7 @@ namespace Hooks PLAYER_EVENT_ON_MODIFY_SPELL_DAMAGE_TAKEN = 70, // (event, player, target, damage, spellInfo) - Can return new damage amount PLAYER_EVENT_ON_MODIFY_HEAL_RECEIVED = 71, // (event, player, target, heal, spellInfo) - Can return new heal amount PLAYER_EVENT_ON_DEAL_DAMAGE = 72, // (event, player, target, damage, damagetype) - Can return new damage amount + PLAYER_EVENT_ON_RELEASED_GHOST = 73, // (event, player) PLAYER_EVENT_COUNT }; diff --git a/src/LuaEngine/LuaEngine.h b/src/LuaEngine/LuaEngine.h index 3db6bb4411..46d1561afc 100644 --- a/src/LuaEngine/LuaEngine.h +++ b/src/LuaEngine/LuaEngine.h @@ -512,6 +512,7 @@ class ALE_GAME_API ALE void OnPlayerModifySpellDamageTaken(Player* player, Unit* target, int32& damage, SpellInfo const* spellInfo); void OnPlayerModifyHealReceived(Player* player, Unit* target, uint32& heal, SpellInfo const* spellInfo); uint32 OnPlayerDealDamage(Player* player, Unit* pVictim, uint32 damage, DamageEffectType damagetype); + void OnPlayerReleasedGhost(Player* player); /* Vehicle */ void OnInstall(Vehicle* vehicle); diff --git a/src/LuaEngine/hooks/PlayerHooks.cpp b/src/LuaEngine/hooks/PlayerHooks.cpp index 5ad27f8b32..7649274840 100644 --- a/src/LuaEngine/hooks/PlayerHooks.cpp +++ b/src/LuaEngine/hooks/PlayerHooks.cpp @@ -761,6 +761,13 @@ bool ALE::CanPlayerResurrect(Player* player) return CallAllFunctionsBool(PlayerEventBindings, key); } +void ALE::OnPlayerReleasedGhost(Player* player) +{ + START_HOOK(PLAYER_EVENT_ON_RELEASED_GHOST); + Push(player); + CallAllFunctions(PlayerEventBindings, key); +} + void ALE::OnPlayerQuestAccept(Player* player, Quest const* quest) { START_HOOK(PLAYER_EVENT_ON_QUEST_ACCEPT); diff --git a/src/LuaEngine/methods/GlobalMethods.h b/src/LuaEngine/methods/GlobalMethods.h index 367f6b34d1..cebb7bc6d6 100644 --- a/src/LuaEngine/methods/GlobalMethods.h +++ b/src/LuaEngine/methods/GlobalMethods.h @@ -793,6 +793,7 @@ namespace LuaGlobalFunctions * PLAYER_EVENT_ON_MODIFY_SPELL_DAMAGE_TAKEN = 70, // (event, player, target, damage, spellInfo) - Can return new damage amount * PLAYER_EVENT_ON_MODIFY_HEAL_RECEIVED = 71, // (event, player, target, heal, spellInfo) - Can return new heal amount * PLAYER_EVENT_ON_DEAL_DAMAGE = 72, // (event, player, target, damage, damagetype) - Can return new damage amount + * PLAYER_EVENT_ON_RELEASED_GHOST = 73, // (event, player) * }; * *