diff options
author | QAston <none@none> | 2009-05-19 20:33:11 +0200 |
---|---|---|
committer | QAston <none@none> | 2009-05-19 20:33:11 +0200 |
commit | e348b671e7cbe8ce328a4bf07c635328a4accb3c (patch) | |
tree | 669e62463079ba5af3826a50300f77bd7d0ca649 /src | |
parent | 2b47f0c0f7756b89384a3c6969a8a133b3a18ee8 (diff) |
*Corret proc from bloodsurge and judgements of the wise
*Do not proc backfire dmg from sw:death if target is killed
*Allow hots to proc from selfcast
*Fix glyph of corruption.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/SpellAuras.cpp | 7 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 4 | ||||
-rw-r--r-- | src/game/Unit.cpp | 4 |
3 files changed, 7 insertions, 8 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 457b020864c..2145c19e6de 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -2777,7 +2777,6 @@ void AuraEffect::HandleAuraDummy(bool apply, bool Real, bool changeAmount) { if(apply) { - // Reduce backfire damage (dot damage) from Shadow Word: Death SpellModifier *mod = new SpellModifier; mod->op = SPELLMOD_CHANCE_OF_SUCCESS; mod->value = 100; @@ -6030,15 +6029,13 @@ void AuraEffect::PeriodicTick() if( BattleGround *bg = ((Player*)pCaster)->GetBattleGround() ) bg->UpdatePlayerScore(((Player*)pCaster), SCORE_HEALING_DONE, gain); - //Do check before because m_modifier.auraName can be invalidate by DealDamage. - bool procSpell = (m_auraName == SPELL_AURA_PERIODIC_HEAL && m_target != pCaster); - m_target->getHostilRefManager().threatAssist(pCaster, float(gain) * 0.5f, GetSpellProto()); Unit* target = m_target; // aura can be deleted in DealDamage SpellEntry const* spellProto = GetSpellProto(); bool haveCastItem = GetParentAura()->GetCastItemGUID()!=0; + // Health Funnel // heal for caster damage if(m_target!=pCaster && spellProto->SpellVisual[0]==163) { @@ -6074,7 +6071,7 @@ void AuraEffect::PeriodicTick() uint32 procVictim = PROC_FLAG_ON_TAKE_PERIODIC; uint32 procEx = PROC_EX_INTERNAL_HOT | PROC_EX_NORMAL_HIT; // ignore item heals - if(procSpell && !haveCastItem) + if(!haveCastItem) pCaster->ProcDamageAndSpell(target, procAttacker, procVictim, procEx, pdamage, BASE_ATTACK, spellProto); break; } diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 09807fe6cd0..3d1cdbf595b 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -471,7 +471,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx) case SPELLFAMILY_PRIEST: { // Shadow Word: Death - deals damage equal to damage done to caster - if (m_spellInfo->SpellFamilyFlags[1] & 0x2) + if ((m_spellInfo->SpellFamilyFlags[1] & 0x2 )&& m_damage < unitTarget->GetHealth()) m_caster->CastCustomSpell(m_caster, 32409, &damage, 0, 0, true); break; } @@ -1489,7 +1489,7 @@ void Spell::EffectDummy(uint32 i) // Penance if (m_spellInfo->SpellFamilyFlags[1] & 0x00800000) { - if (!unitTarget) + if (!unitTarget || !unitTarget->isAlive()) return; int hurt = 0; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 725d934910a..68dc580bc19 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5533,6 +5533,8 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger // Nightfall case 18094: case 18095: + // Glyph of corruption + case 56218: { target = this; triggered_spell_id = 17941; @@ -5795,7 +5797,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger // Glyph of Rejuvenation case 54754: { - if (pVictim->GetHealth() >= triggerAmount * pVictim->GetMaxHealth()/100) + if (!pVictim || pVictim->GetHealth() >= triggerAmount * pVictim->GetMaxHealth()/100) return false; basepoints0 = int32(triggerAmount * damage / 100); triggered_spell_id = 54755; |