Core/Spells: corrected damage formulas for Judgement's triggered spells

This commit is contained in:
Ovahlord committed 2021-12-26 22:34:46 +01:00
1 parent 8596cf6be2
commit ce73dec885
1 file changed
+29 -27
+29 -27
View File
@@ -77,11 +77,12 @@ enum PaladinSpells
SPELL_PALADIN_IMPROVED_DEVOTION_AURA = 63514, SPELL_PALADIN_IMPROVED_DEVOTION_AURA = 63514,
SPELL_PALADIN_ITEM_HEALING_TRANCE = 37706, SPELL_PALADIN_ITEM_HEALING_TRANCE = 37706,
SPELL_PALADIN_ITEM_T11_RETRIBUTION_4P_BONUS = 90299, SPELL_PALADIN_ITEM_T11_RETRIBUTION_4P_BONUS = 90299,
SPELL_PALADIN_JUDGEMENT_DAMAGE = 54158,
SPELL_PALADIN_JUDGEMENTS_OF_THE_BOLD = 89906, SPELL_PALADIN_JUDGEMENTS_OF_THE_BOLD = 89906,
SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE_PASSIVE = 31878, SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE_PASSIVE = 31878,
SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE = 31930, SPELL_PALADIN_JUDGEMENTS_OF_THE_WISE = 31930,
SPELL_PALADIN_JUDGEEMENT_OF_TRUTH = 31804, SPELL_PALADIN_JUDGEMENT_OF_TRUTH = 31804,
SPELL_PALADIN_JUDGEMENT_OF_RIGHTEOUSNESS = 20187,
SPELL_PALADIN_JUDGEMENT_DEFAULT = 54158,
SPELL_PALADIN_LIGHT_OF_THE_ANCIENT_KINGS = 86678, SPELL_PALADIN_LIGHT_OF_THE_ANCIENT_KINGS = 86678,
SPELL_PALADIN_LONG_ARM_OF_THE_LAW = 87173, SPELL_PALADIN_LONG_ARM_OF_THE_LAW = 87173,
SPELL_PALADIN_RIGHTEOUS_DEFENSE_TAUNT = 31790, SPELL_PALADIN_RIGHTEOUS_DEFENSE_TAUNT = 31790,
@@ -654,10 +655,10 @@ class spell_pal_judgement : public SpellScript
{ {
return ValidateSpellInfo( return ValidateSpellInfo(
{ {
SPELL_PALADIN_JUDGEMENT_DAMAGE, SPELL_PALADIN_JUDGEMENT_DEFAULT,
SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS, SPELL_PALADIN_JUDGEMENT_OF_TRUTH,
SPELL_PALADIN_SEAL_OF_TRUTH, SPELL_PALADIN_JUDGEMENT_OF_RIGHTEOUSNESS,
SPELL_PALADIN_CENSURE SPELL_PALADIN_CENSURE,
}); });
} }
@@ -668,35 +669,36 @@ class spell_pal_judgement : public SpellScript
return; return;
Unit* target = GetHitUnit(); Unit* target = GetHitUnit();
uint32 spellId = SPELL_PALADIN_JUDGEMENT_DAMAGE; uint32 spellId = SPELL_PALADIN_JUDGEMENT_DEFAULT;
int32 bp = 0;
float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK); float ap = caster->GetTotalAttackPowerValue(BASE_ATTACK);
int32 holy = caster->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_HOLY); int32 holy = caster->SpellBaseDamageBonusDone(SPELL_SCHOOL_MASK_HOLY);
// some seals have SPELL_AURA_DUMMY in EFFECT_2 // Some seals have a dummy aura effect which contains the spell Id of the triggered judgement damage spell
Unit::AuraEffectList const& auras = caster->GetAuraEffectsByType(SPELL_AURA_DUMMY); for (AuraEffect const* aurEff : caster->GetAuraEffectsByType(SPELL_AURA_DUMMY))
for (Unit::AuraEffectList::const_iterator i = auras.begin(); i != auras.end(); ++i)
{ {
if ((*i)->GetSpellInfo()->GetSpellSpecific() == SPELL_SPECIFIC_SEAL && (*i)->GetEffIndex() == EFFECT_2) if (aurEff->GetSpellInfo()->GetSpellSpecific() != SPELL_SPECIFIC_SEAL || aurEff->GetEffIndex() != EFFECT_2)
{ continue;
if (sSpellMgr->GetSpellInfo((*i)->GetAmount()))
{ spellId = aurEff->GetAmount();
spellId = (*i)->GetAmount();
break;
}
}
} }
if (caster->HasAura(SPELL_PALADIN_SEAL_OF_RIGHTEOUSNESS)) int32 bp = 0;
bp = 1 + int32(1 + ap * 0.2f + 0.32f * holy); switch (spellId)
else if (caster->HasAura(SPELL_PALADIN_SEAL_OF_TRUTH))
{ {
bp = 1 + int32(ap * 0.142f + 0.223f * holy); case SPELL_PALADIN_JUDGEMENT_OF_TRUTH:
if (Aura const* censure = target->GetAura(SPELL_PALADIN_CENSURE, caster->GetGUID())) bp = 1 + (0.223f * holy + 0.142f * ap);
AddPct(bp, censure->GetStackAmount() * 20); if (Aura const* censure = target->GetAura(SPELL_PALADIN_CENSURE, caster->GetGUID()))
AddPct(bp, censure->GetStackAmount() * 20.f);
break;
case SPELL_PALADIN_JUDGEMENT_OF_RIGHTEOUSNESS:
bp = 1 + (0.2f * ap + 0.32f * holy);
break;
case SPELL_PALADIN_JUDGEMENT_DEFAULT:
bp = 1 + (0.25f * holy + ap * 0.16f);
break;
default:
break;
} }
else
bp = 1 + int32(1 + ap * 0.16f + 0.25f * holy);
caster->CastSpell(target, spellId, CastSpellExtraArgs(true).AddSpellBP0(bp)); caster->CastSpell(target, spellId, CastSpellExtraArgs(true).AddSpellBP0(bp));
} }