diff options
-rw-r--r-- | sql/updates/3409_world_spell_proc_event.sql | 9 | ||||
-rw-r--r-- | sql/world_spell_full.sql | 12 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 7 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 4 | ||||
-rw-r--r-- | src/game/Unit.cpp | 4 |
5 files changed, 22 insertions, 14 deletions
diff --git a/sql/updates/3409_world_spell_proc_event.sql b/sql/updates/3409_world_spell_proc_event.sql new file mode 100644 index 00000000000..47b1fab8aa9 --- /dev/null +++ b/sql/updates/3409_world_spell_proc_event.sql @@ -0,0 +1,9 @@ +DELETE FROM `spell_proc_event` WHERE `entry` IN (31878, 31877, 31876, 46913, 46914, 46915); + +INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES +(31876, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(31877, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(31878, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(46913, 0, 4, 0, 1024, 0, 0, 0, 0, 0, 0), +(46914, 0, 4, 0, 1024, 0, 0, 0, 0, 0, 0), +(46915, 0, 4, 0, 1024, 0, 0, 0, 0, 0, 0); diff --git a/sql/world_spell_full.sql b/sql/world_spell_full.sql index fd5746770a2..4c89df7adc6 100644 --- a/sql/world_spell_full.sql +++ b/sql/world_spell_full.sql @@ -923,9 +923,9 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell (31836, 0, 10, 2147483648, 0, 0, 0, 0, 0, 0, 0), (31871, 0, 10, 16, 0, 0, 16384, 0, 0, 0, 0), (31872, 0, 10, 16, 0, 0, 16384, 0, 0, 0, 0), -(31876, 0, 10, 538444800, 8, 0, 0, 0, 0, 0, 0), -(31877, 0, 10, 538444800, 8, 0, 0, 0, 0, 0, 0), -(31878, 0, 10, 538444800, 8, 0, 0, 0, 0, 0, 0), +(31876, 0, 10, 8388608 0, 0, 0, 0, 0, 0, 0), +(31877, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), +(31878, 0, 10, 8388608, 0, 0, 0, 0, 0, 0, 0), (31904, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0), (3232, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), (32385, 0, 5, 1, 262144, 0, 0, 0, 0, 0, 0), @@ -1149,9 +1149,9 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell (46867, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0), (46910, 0, 0, 0, 0, 0, 0, 1, 5.5, 0, 0), (46911, 0, 0, 0, 0, 0, 0, 1, 7.5, 0, 0), -(46913, 0, 4, 0, 1024, 0, 0, 2, 0, 0, 0), -(46914, 0, 4, 0, 1024, 0, 0, 2, 0, 0, 0), -(46915, 0, 4, 64, 1028, 0, 0, 2, 0, 0, 0), +(46913, 0, 4, 0, 1024, 0, 0, 0, 0, 0, 0), +(46914, 0, 4, 0, 1024, 0, 0, 0, 0, 0, 0), +(46915, 0, 4, 0, 1024, 0, 0, 0, 0, 0, 0), (46916, 0, 4, 0, 1024, 0, 0, 2, 0, 0, 0), (46951, 0, 4, 1024, 64, 0, 0, 0, 0, 0, 0), (46952, 0, 0, 1024, 64, 0, 0, 0, 0, 0, 0), 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; |