diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 46d81e56c..758a91a4e 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -4484,6 +4484,7 @@ void Player::KillPlayer() if (corpseReclaimDelay >= 0) SendCorpseReclaimDelay(corpseReclaimDelay); + sScriptMgr->OnPlayerJustDied(this); // don't create corpse at this moment, player might be falling // update visibility diff --git a/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp b/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp index cb4dc5afa..8060d5e32 100644 --- a/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp @@ -67,6 +67,14 @@ void ScriptMgr::OnBattlegroundDesertion(Player* player, BattlegroundDesertionTyp }); } +void ScriptMgr::OnPlayerJustDied(Player* player) +{ + ExecuteScript([&](PlayerScript* script) + { + script->OnPlayerJustDied(player); + }); +} + void ScriptMgr::OnPlayerReleasedGhost(Player* player) { ExecuteScript([&](PlayerScript* script) diff --git a/src/server/game/Scripting/ScriptDefines/PlayerScript.h b/src/server/game/Scripting/ScriptDefines/PlayerScript.h index 23bf4cadf..7bab66fe4 100644 --- a/src/server/game/Scripting/ScriptDefines/PlayerScript.h +++ b/src/server/game/Scripting/ScriptDefines/PlayerScript.h @@ -29,6 +29,10 @@ protected: PlayerScript(const char* name); public: + // Called when a player dies + virtual void OnPlayerJustDied(Player* /*player*/) { } + + // Called when clicking the release button virtual void OnPlayerReleasedGhost(Player* /*player*/) { } // Called on Send Initial Packets Before Add To Map diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 16346ab2b..6499e177b 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -297,6 +297,7 @@ public: /* PlayerScript */ void OnBeforePlayerUpdate(Player* player, uint32 p_time); void OnPlayerUpdate(Player* player, uint32 p_time); void OnSendInitialPacketsBeforeAddToMap(Player* player, WorldPacket& data); + void OnPlayerJustDied(Player* player); void OnPlayerReleasedGhost(Player* player); void OnPVPKill(Player* killer, Player* killed); void OnPlayerPVPFlagChange(Player* player, bool state);