From 0dca0171ceb80878e8105e8ba4ea6e5503c0cb97 Mon Sep 17 00:00:00 2001 From: Foereaper Date: Thu, 12 Oct 2023 21:14:51 +0200 Subject: [PATCH] Add new environmental death hook --- Hooks.h | 2 +- LuaEngine.h | 1 + PlayerHooks.cpp | 8 ++++++++ TrinityCore/GlobalMethods.h | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/Hooks.h b/Hooks.h index 569ae1f191..77bd061534 100644 --- a/Hooks.h +++ b/Hooks.h @@ -201,7 +201,7 @@ namespace Hooks PLAYER_EVENT_ON_LOOT_MONEY = 37, // (event, player, amount) PLAYER_EVENT_ON_QUEST_ABANDON = 38, // (event, player, questId) PLAYER_EVENT_ON_LEARN_TALENTS = 39, // (event, player, talentId, talentRank, spellid) - // UNUSED = 40, // (event, player) + PLAYER_EVENT_ON_ENVIRONMENTAL_DEATH = 40, // (event, player, environmentalDamageType) // UNUSED = 41, // (event, player) PLAYER_EVENT_ON_COMMAND = 42, // (event, player, command) - player is nil if command used from console. Can return false diff --git a/LuaEngine.h b/LuaEngine.h index b778aeee60..a8c711184a 100644 --- a/LuaEngine.h +++ b/LuaEngine.h @@ -460,6 +460,7 @@ class ELUNA_GAME_API Eluna void OnPVPKill(Player* pKiller, Player* pKilled); void OnCreatureKill(Player* pKiller, Creature* pKilled); void OnPlayerKilledByCreature(Creature* pKiller, Player* pKilled); + void OnPlayerKilledByEnvironment(Player* pKilled, uint8 damageType); void OnLevelChanged(Player* pPlayer, uint8 oldLevel); void OnFreeTalentPointsChanged(Player* pPlayer, uint32 newPoints); void OnTalentsReset(Player* pPlayer, bool noCost); diff --git a/PlayerHooks.cpp b/PlayerHooks.cpp index a0aec36bcd..cae801c327 100644 --- a/PlayerHooks.cpp +++ b/PlayerHooks.cpp @@ -176,6 +176,14 @@ void Eluna::OnPlayerKilledByCreature(Creature* pKiller, Player* pKilled) CallAllFunctions(PlayerEventBindings, key); } +void Eluna::OnPlayerKilledByEnvironment(Player* pKilled, uint8 damageType) +{ + START_HOOK(PLAYER_EVENT_ON_ENVIRONMENTAL_DEATH); + Push(pKilled); + Push(damageType); + CallAllFunctions(PlayerEventBindings, key); +} + void Eluna::OnLevelChanged(Player* pPlayer, uint8 oldLevel) { START_HOOK(PLAYER_EVENT_ON_LEVEL_CHANGE); diff --git a/TrinityCore/GlobalMethods.h b/TrinityCore/GlobalMethods.h index e627130363..630e987475 100644 --- a/TrinityCore/GlobalMethods.h +++ b/TrinityCore/GlobalMethods.h @@ -649,7 +649,7 @@ namespace LuaGlobalFunctions * PLAYER_EVENT_ON_LOOT_MONEY = 37, // (event, player, amount) * PLAYER_EVENT_ON_QUEST_ABANDON = 38, // (event, player, questId) * PLAYER_EVENT_ON_LEARN_TALENTS = 39, // (event, player, talentId, talentRank, spellid) - * // UNUSED = 40, // (event, player) + * PLAYER_EVENT_ON_ENVIRONMENTAL_DEATH = 40, // (event, player, environmentalDamageType) * // UNUSED = 41, // (event, player) * PLAYER_EVENT_ON_COMMAND = 42, // (event, player, command) - player is nil if command used from console. Can return false * };