Core/Spells: fixed all remaining T11 bonus effects for all classes

This commit is contained in:
Ovahlord committed 2020-03-25 20:47:45 +01:00
1 parent 623ba2af34
commit ded981ac59
5 files changed
+239 -29

No files matched your search

+65 -25
View File
@@ -43,6 +43,7 @@ enum PriestSpells
SPELL_PRIEST_CHAKRA_SANCTUARY = 81206,
SPELL_PRIEST_CHAKRA_SANCTUARY_LINKED = 81207,
SPELL_PRIEST_CHAKRA_CHASTISE = 81209,
SPELL_PRIEST_CHAKRA_FLOW = 89912,
SPELL_PRIEST_CURE_DISEASE = 528,
SPELL_PRIEST_DARK_ARCHANGEL_TRIGGERED = 87153,
SPELL_PRIEST_DARK_EVANGELISM_TRIGGERED_1 = 87117,
@@ -67,8 +68,10 @@ enum PriestSpells
SPELL_PRIEST_GUARDIAN_SPIRIT_HEAL = 48153,
SPELL_PRIEST_HOLY_WORD_CHASTISE = 88625,
SPELL_PRIEST_HOLY_WORD_SANCTUARY = 88686,
SPELL_PRIEST_INDULGENCE_OF_THE_PENITENT = 89913,
SPELL_PRIEST_INNER_FOCUS = 89485,
SPELL_PRIEST_ITEM_EFFICIENCY = 37595,
SPELL_PRIEST_ITEM_T11_HEALER_4P_BONUS = 89911,
SPELL_PRIEST_LEAP_OF_FAITH = 73325,
SPELL_PRIEST_LEAP_OF_FAITH_EFFECT = 92832,
SPELL_PRIEST_LEAP_OF_FAITH_EFFECT_TRIGGER = 92833,
@@ -76,9 +79,8 @@ enum PriestSpells
SPELL_PRIEST_MANA_LEECH_PROC = 34650,
SPELL_PRIEST_MIND_FLAY = 15407,
SPELL_PRIEST_MIND_TRAUMA = 48301,
SPELL_PRIEST_PENANCE_R1 = 47540,
SPELL_PRIEST_PENANCE_R1_DAMAGE = 47758,
SPELL_PRIEST_PENANCE_R1_HEAL = 47757,
SPELL_PRIEST_PENANCE_DAMAGE = 47758,
SPELL_PRIEST_PENANCE_HEAL = 47757,
SPELL_PRIEST_REFLECTIVE_SHIELD_R1 = 33201,
SPELL_PRIEST_REFLECTIVE_SHIELD_TRIGGERED = 33619,
SPELL_PRIEST_RENEW = 139,
@@ -602,23 +604,15 @@ class spell_pri_penance : public SpellScript
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
bool Validate(SpellInfo const* spellInfo) override
bool Validate(SpellInfo const* /*spellInfo*/) override
{
SpellInfo const* firstRankSpellInfo = sSpellMgr->GetSpellInfo(SPELL_PRIEST_PENANCE_R1);
if (!firstRankSpellInfo)
return false;
// can't use other spell than this penance due to spell_ranks dependency
if (!spellInfo->IsRankOf(firstRankSpellInfo))
return false;
uint8 rank = spellInfo->GetRank();
if (!sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_DAMAGE, rank, true))
return false;
if (!sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_HEAL, rank, true))
return false;
return true;
return ValidateSpellInfo(
{
SPELL_PRIEST_PENANCE_DAMAGE,
SPELL_PRIEST_PENANCE_HEAL,
SPELL_PRIEST_ITEM_T11_HEALER_4P_BONUS,
SPELL_PRIEST_INDULGENCE_OF_THE_PENITENT
});
}
void HandleDummy(SpellEffIndex /*effIndex*/)
@@ -629,12 +623,16 @@ class spell_pri_penance : public SpellScript
if (!unitTarget->IsAlive())
return;
uint8 rank = GetSpellInfo()->GetRank();
if (caster->IsFriendlyTo(unitTarget))
caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_HEAL, rank), TRIGGERED_DISALLOW_PROC_EVENTS);
{
caster->CastSpell(unitTarget, SPELL_PRIEST_PENANCE_HEAL, TRIGGERED_DISALLOW_PROC_EVENTS);
// T11 Bonus
if (caster->GetAuraEffect(SPELL_PRIEST_ITEM_T11_HEALER_4P_BONUS, EFFECT_0))
caster->CastSpell(caster, SPELL_PRIEST_INDULGENCE_OF_THE_PENITENT, true);
}
else
caster->CastSpell(unitTarget, sSpellMgr->GetSpellWithRank(SPELL_PRIEST_PENANCE_R1_DAMAGE, rank), TRIGGERED_DISALLOW_PROC_EVENTS);
caster->CastSpell(unitTarget, SPELL_PRIEST_PENANCE_DAMAGE, TRIGGERED_DISALLOW_PROC_EVENTS);
}
}
@@ -1160,6 +1158,7 @@ class spell_pri_chakra : public AuraScript
SPELL_PRIEST_CHAKRA_SANCTUARY,
SPELL_PRIEST_CHAKRA_SANCTUARY_LINKED,
SPELL_PRIEST_CHAKRA_CHASTISE,
SPELL_PRIEST_CHAKRA_FLOW,
SPELL_PRIEST_REVELATIONS,
SPELL_PRIEST_HOLY_WORD_CHASTISE
});
@@ -1205,6 +1204,10 @@ class spell_pri_chakra : public AuraScript
// Chakra: Chastise
if (spell->SpellFamilyFlags.HasFlag(0x00000080) || spell->SpellFamilyFlags.HasFlag(0, 0x00010000))
caster->CastSpell(caster, SPELL_PRIEST_CHAKRA_CHASTISE, true, nullptr, aurEff);
// T11 Bonus
if (caster->GetAuraEffect(SPELL_PRIEST_ITEM_T11_HEALER_4P_BONUS, EFFECT_0))
caster->CastSpell(caster, SPELL_PRIEST_CHAKRA_FLOW);
}
}
@@ -1222,12 +1225,18 @@ class spell_pri_chakra_sanctuary : public AuraScript
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_PRIEST_CHAKRA_SANCTUARY_LINKED });
return ValidateSpellInfo(
{
SPELL_PRIEST_CHAKRA_SANCTUARY_LINKED,
SPELL_PRIEST_CHAKRA_FLOW
});
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
GetTarget()->RemoveAurasDueToSpell(SPELL_PRIEST_CHAKRA_SANCTUARY_LINKED);
Unit* target = GetTarget();
target->RemoveAurasDueToSpell(SPELL_PRIEST_CHAKRA_SANCTUARY_LINKED);
target->RemoveAurasDueToSpell(SPELL_PRIEST_CHAKRA_FLOW);
}
void Register() override
@@ -1236,6 +1245,36 @@ class spell_pri_chakra_sanctuary : public AuraScript
}
};
// 81208 - Chakra: Serenety
// 81209 - Chakra: Chastise
class spell_pri_chakra_flow_removal: public AuraScript
{
PrepareAuraScript(spell_pri_chakra_flow_removal);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo(
{
SPELL_PRIEST_CHAKRA_CHASTISE,
SPELL_PRIEST_CHAKRA_SERENITY,
SPELL_PRIEST_CHAKRA_FLOW
});
}
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
GetTarget()->RemoveAurasDueToSpell(SPELL_PRIEST_CHAKRA_FLOW);
}
void Register() override
{
if (m_scriptSpellId == SPELL_PRIEST_CHAKRA_SERENITY)
AfterEffectRemove += AuraEffectRemoveFn(spell_pri_chakra_flow_removal::HandleEffectRemove, EFFECT_0, SPELL_AURA_ADD_FLAT_MODIFIER, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
else if (m_scriptSpellId == SPELL_PRIEST_CHAKRA_CHASTISE)
AfterEffectRemove += AuraEffectRemoveFn(spell_pri_chakra_flow_removal::HandleEffectRemove, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
}
};
// 81585 - Chakra: Serenity
class spell_pri_chakra_serenity_script : public SpellScript
{
@@ -1788,6 +1827,7 @@ void AddSC_priest_spell_scripts()
RegisterAuraScript(spell_pri_chakra);
RegisterAuraScript(spell_pri_chakra_sanctuary);
RegisterSpellScript(spell_pri_chakra_serenity_script);
RegisterAuraScript(spell_pri_chakra_flow_removal);
RegisterSpellScript(spell_pri_circle_of_healing);
RegisterSpellScript(spell_pri_dispel_magic);
RegisterAuraScript(spell_pri_divine_aegis);