From 34fb5df5698470f19c733e34bd0c28450130a55f Mon Sep 17 00:00:00 2001 From: Xanadu Date: Sat, 20 Mar 2010 04:18:08 +0100 Subject: Fixed KILL proc to occur for the unit that lands the killing blow, not for the loot recipient. --HG-- branch : trunk --- src/game/Unit.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 8608daa55fc..f95d58bbf88 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -14585,12 +14585,16 @@ void Unit::Kill(Unit *pVictim, bool durabilityLoss) loot->generateMoneyLoot(creature->GetCreatureInfo()->mingold,creature->GetCreatureInfo()->maxgold); } + } - if (player->RewardPlayerAndGroupAtKill(pVictim)) - player->ProcDamageAndSpell(pVictim, PROC_FLAG_KILL, PROC_FLAG_KILLED, PROC_EX_NONE, 0); - else - player->ProcDamageAndSpell(pVictim, PROC_FLAG_NONE, PROC_FLAG_KILLED, PROC_EX_NONE, 0); + // Do KILL and KILLED procs. KILL proc is called only for the unit who landed the killing blow (or its owner - for pets) regardless of who tapped the victim + if (isPet()) + { + if (Unit *owner = GetOwner()) + owner->ProcDamageAndSpell(pVictim, PROC_FLAG_KILL, PROC_FLAG_KILLED, PROC_EX_NONE, 0); } + else + ProcDamageAndSpell(pVictim, PROC_FLAG_KILL, PROC_FLAG_KILLED, PROC_EX_NONE, 0); // Proc auras on death - must be before aura/combat remove pVictim->ProcDamageAndSpell(NULL, PROC_FLAG_DEATH, PROC_FLAG_NONE, PROC_EX_NONE, 0, BASE_ATTACK, 0); -- cgit v1.2.3