aboutsummaryrefslogtreecommitdiff
path: root/src/game/SpellAuraEffects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/SpellAuraEffects.cpp')
-rw-r--r--src/game/SpellAuraEffects.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/game/SpellAuraEffects.cpp b/src/game/SpellAuraEffects.cpp
index 51e6a7fe4f6..fbd0289103d 100644
--- a/src/game/SpellAuraEffects.cpp
+++ b/src/game/SpellAuraEffects.cpp
@@ -5988,13 +5988,12 @@ void AuraEffect::HandleChannelDeathItem(AuraApplication const * aurApp, uint8 mo
{
Unit * caster = GetCaster();
- if(!caster || caster->GetTypeId() != TYPEID_PLAYER)// || m_removeMode!=AURA_REMOVE_BY_DEATH)
+ if(!caster || caster->GetTypeId() != TYPEID_PLAYER)
return;
- //we cannot check removemode = death
- //talent will remove the caster's aura->interrupt channel->remove victim aura
- if(target->GetHealth() > 0)
+ if(target->getDeathState() != JUST_DIED)
return;
+
// Item amount
if (GetAmount() <= 0)
return;
@@ -6002,11 +6001,12 @@ void AuraEffect::HandleChannelDeathItem(AuraApplication const * aurApp, uint8 mo
if(GetSpellProto()->EffectItemType[m_effIndex] == 0)
return;
- // Soul Shard only from non-grey units
+ // Soul Shard only from units that grant XP or honor
if( GetSpellProto()->EffectItemType[m_effIndex] == 6265 &&
- (target->getLevel() <= Trinity::XP::GetGrayLevel(caster->getLevel()) ||
+ (!caster->ToPlayer()->isHonorOrXPTarget(target) ||
target->GetTypeId() == TYPEID_UNIT && !target->ToCreature()->isTappedBy(caster->ToPlayer())) )
return;
+
//Adding items
uint32 noSpaceForCount = 0;
uint32 count = m_amount;