What bug does the patch fix? What features does the patch add?
This will fix non-offensive seals (Wisdom, Light, Justice) dealing no damage at Judgement. They have no dummy aura with damage judgemnts spell that is triggered when seal is judged. Instead there is one spell for them - 54158, as they have same formula. I suggested that this spell is used this way before but was able to find proof only recently in combat logs from offy.
For which repository revision was the patch created?
8512
Who has been writing this patch?
Me
Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread.
Bunch of them.
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index fe7a4e5..36770fb 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -669,6 +669,12 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
{
damage+=int32(m_caster->GetShieldBlockValue());
}
+ // Judgement
+ else if (m_spellInfo->Id == 54158)
+ {
+ // [1 + 0.25 * SPH + 0.16 * AP]
+ damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.16f);
+ }
break;
}
}
@@ -5404,12 +5410,15 @@ void Spell::EffectScriptEffect(uint32 effIndex)
sLog.outError("Unsupported Judgement (seal trigger) spell (Id: %u) in Spell::EffectScriptEffect",m_spellInfo->Id);
return;
}
- // all seals have aura dummy in 2 effect
+ // offensive seals have aura dummy in 2 effect
Unit::AuraList const& m_dummyAuras = m_caster->GetAurasByType(SPELL_AURA_DUMMY);
for(Unit::AuraList::const_iterator itr = m_dummyAuras.begin(); itr != m_dummyAuras.end(); ++itr)
{
SpellEntry const *spellInfo = (*itr)->GetSpellProto();
- // search seal (all seals have judgement's aura dummy spell id in 2 effect
+ // search seal (offensive seals have judgement's aura dummy spell id in 2 effect
if ((*itr)->GetEffIndex() != 2 || !spellInfo || !IsSealSpell(spellInfo))
continue;
spellId2 = (*itr)->GetModifier()->m_amount;
@@ -5418,6 +5427,18 @@ void Spell::EffectScriptEffect(uint32 effIndex)
continue;
break;
}
+ // if there were no offensive seals than there is seal with proc trigger aura
+ if (!spellId2)
+ {
+ Unit::AuraList const& procTriggerAuras = m_caster->GetAurasByType(SPELL_AURA_PROC_TRIGGER_SPELL);
+ for(Unit::AuraList::const_iterator itr = procTriggerAuras.begin(); itr != procTriggerAuras.end(); ++itr)
+ {
+ SpellEntry const * spellInfo = (*itr)->GetSpellProto();
+ if ((*itr)->GetEffIndex() != 0 || !spellInfo || !IsSealSpell(spellInfo))
+ continue;
+ spellId2 = 54158;
+ }
+ }
if (spellId1)
m_caster->CastSpell(unitTarget, spellId1, true);
if (spellId2)
Issues:
- For some reason other judgement spells have ther AP coefficient hardcoded (for example judgement of righteousness, which is practically same as 54158), so i did same.
- Spell is 28lvl spell and suffer from downranking so the damage is lower than expected.
DELETE FROM `spell_bonus_data` WHERE `entry` IN (54158);
INSERT INTO `spell_bonus_data` VALUES
(54158, 0.25, 0, 0, 'Paladin - Judgement');