diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 009c33c9e2..627e90f810 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -7583,6 +7583,7 @@ void Unit::UpdatePetCombatState() void Unit::AtExitCombat() { RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_LEAVE_COMBAT); + sScriptMgr->OnUnitExitCombat(this); } void Unit::AtEngage(Unit* /*target*/) diff --git a/src/server/game/Scripting/ScriptDefines/UnitScript.cpp b/src/server/game/Scripting/ScriptDefines/UnitScript.cpp index c36cfcd25a..71d5a24745 100644 --- a/src/server/game/Scripting/ScriptDefines/UnitScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/UnitScript.cpp @@ -124,6 +124,11 @@ void ScriptMgr::OnUnitEnterCombat(Unit* unit, Unit* victim) CALL_ENABLED_HOOKS(UnitScript, UNITHOOK_ON_UNIT_ENTER_COMBAT, script->OnUnitEnterCombat(unit, victim)); } +void ScriptMgr::OnUnitExitCombat(Unit* unit) +{ + CALL_ENABLED_HOOKS(UnitScript, UNITHOOK_ON_UNIT_EXIT_COMBAT, script->OnUnitExitCombat(unit)); +} + void ScriptMgr::OnUnitDeath(Unit* unit, Unit* killer) { CALL_ENABLED_HOOKS(UnitScript, UNITHOOK_ON_UNIT_DEATH, script->OnUnitDeath(unit, killer)); diff --git a/src/server/game/Scripting/ScriptDefines/UnitScript.h b/src/server/game/Scripting/ScriptDefines/UnitScript.h index 046f9cc117..b0cba45a3d 100644 --- a/src/server/game/Scripting/ScriptDefines/UnitScript.h +++ b/src/server/game/Scripting/ScriptDefines/UnitScript.h @@ -41,6 +41,7 @@ enum UnitHook UNITHOOK_ON_DISPLAYID_CHANGE, UNITHOOK_ON_UNIT_ENTER_EVADE_MODE, UNITHOOK_ON_UNIT_ENTER_COMBAT, + UNITHOOK_ON_UNIT_EXIT_COMBAT, UNITHOOK_ON_UNIT_DEATH, UNITHOOK_ON_UNIT_SET_SHAPESHIFT_FORM, UNITHOOK_END @@ -106,6 +107,7 @@ public: virtual void OnUnitEnterEvadeMode(Unit* /*unit*/, uint8 /*evadeReason*/) { } virtual void OnUnitEnterCombat(Unit* /*unit*/, Unit* /*victim*/) { } + virtual void OnUnitExitCombat(Unit* /*unit*/) { } virtual void OnUnitDeath(Unit* /*unit*/, Unit* /*killer*/) { } virtual void OnUnitSetShapeshiftForm(Unit* /*unit*/, uint8 /*form*/) { } }; diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 64b38be07b..d35f718525 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -564,6 +564,7 @@ public: /* UnitScript */ void OnDisplayIdChange(Unit* unit, uint32 displayId); void OnUnitEnterEvadeMode(Unit* unit, uint8 why); void OnUnitEnterCombat(Unit* unit, Unit* victim); + void OnUnitExitCombat(Unit* unit); void OnUnitDeath(Unit* unit, Unit* killer); void OnUnitSetShapeshiftForm(Unit* unit, uint8 form);