diff options
| author | Xanadu <none@none> | 2010-03-15 02:59:21 +0100 |
|---|---|---|
| committer | Xanadu <none@none> | 2010-03-15 02:59:21 +0100 |
| commit | 8cc3d2ad7f01cf5a707f72fbd6e7d79cb7c02f53 (patch) | |
| tree | 2a5383c953e8773f68e1680959c48d28883975ea /src/game/SpellAuraEffects.cpp | |
| parent | 1845a9588d78e669f8d9b10661f4addc39b6a6ea (diff) | |
Fixed Drain Soul and Shadowburn Soul Shard on target death. Closes issue 1058.
--HG--
branch : trunk
Diffstat (limited to 'src/game/SpellAuraEffects.cpp')
| -rw-r--r-- | src/game/SpellAuraEffects.cpp | 12 |
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; |
