Scripts/Spells: Update priest talent Evangelism implementation (#31661)

This commit is contained in:
Cristian Vintila
2026-02-27 17:37:14 +02:00
committed by GitHub
parent 6da8e45580
commit 733488037b
2 changed files with 55 additions and 13 deletions

View File

@@ -0,0 +1,8 @@
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_evangelism','spell_pri_power_word_radiance_evangelism');
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(472433,'spell_pri_evangelism'),
(194509,'spell_pri_power_word_radiance_evangelism');
DELETE FROM `spell_proc` WHERE `SpellId` IN (472433);
INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
(472433,0x00,6,0x00400000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x0,0x0,0x10,0x0,0,0,0,0); -- Evangelism

View File

@@ -116,6 +116,7 @@ enum PriestSpells
SPELL_PRIEST_ESSENCE_DEVOURER = 415479,
SPELL_PRIEST_ESSENCE_DEVOURER_SHADOWFIEND_HEAL = 415673,
SPELL_PRIEST_ESSENCE_DEVOURER_MINDBENDER_HEAL = 415676,
SPELL_PRIEST_EVANGELISM = 472433,
SPELL_PRIEST_EXPIATION = 390832,
SPELL_PRIEST_EXPIATION_DAMAGE = 390844,
SPELL_PRIEST_FLASH_HEAL = 2061,
@@ -1960,32 +1961,40 @@ class spell_pri_eternal_sanctity : public AuraScript
}
};
// 246287 - Evangelism
// 472433 - Evangelism
class spell_pri_evangelism : public SpellScript
{
public:
struct TriggerArgs
{
int32 EffectivenessPct = 100;
};
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_PRIEST_ATONEMENT_EFFECT });
return ValidateSpellInfo({ SPELL_PRIEST_POWER_WORD_RADIANCE });
}
void HandleScriptEffect(SpellEffIndex /*effIndex*/) const
void HandleCast() const
{
GetSpell()->SetSpellValue({ SPELLVALUE_AURA_STACK, GetEffectInfo(EFFECT_0).CalcValue(GetCaster()) });
}
void HandleDummy(SpellEffIndex /*effIndex*/) const
{
Unit* caster = GetCaster();
Unit* target = GetHitUnit();
Aura* atonementAura = target->GetAura(SPELL_PRIEST_ATONEMENT_EFFECT, caster->GetGUID());
if (!atonementAura)
return;
Milliseconds extraDuration = Seconds(GetEffectValue());
atonementAura->SetDuration(atonementAura->GetDuration() + extraDuration.count());
atonementAura->SetMaxDuration(atonementAura->GetDuration() + extraDuration.count());
caster->CastSpell(GetHitUnit(), SPELL_PRIEST_POWER_WORD_RADIANCE, CastSpellExtraArgsInit{
.TriggerFlags = TRIGGERED_CAST_DIRECTLY | TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_TIME | TRIGGERED_IGNORE_POWER_COST
| TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
.CustomArg = TriggerArgs{ .EffectivenessPct = GetEffectInfo(EFFECT_1).CalcValue(caster, &GetSpellValue()->EffectBasePoints[EFFECT_1], target) }
});
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_pri_evangelism::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
BeforeCast += SpellCastFn(spell_pri_evangelism::HandleCast);
OnEffectLaunch += SpellEffectFn(spell_pri_evangelism::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
@@ -3360,6 +3369,30 @@ class spell_pri_power_word_radiance : public SpellScript
std::vector<ObjectGuid> _visualTargets;
};
// 472433 - Evangelism (attached to 194509 - Power Word: Radiance)
class spell_pri_power_word_radiance_evangelism : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellEffect({ { SPELL_PRIEST_EVANGELISM, EFFECT_1 } })
&& sSpellMgr->AssertSpellInfo(SPELL_PRIEST_EVANGELISM, DIFFICULTY_NONE)->GetEffect(EFFECT_1).TargetA.GetTarget() == Targets();
}
void CalculateHealing(SpellEffectInfo const& /*effectInfo*/, Unit* /*victim*/, int32& /*healing*/, int32& /*flatMod*/, float& pctMod) const
{
spell_pri_evangelism::TriggerArgs const* evangelism = std::any_cast<spell_pri_evangelism::TriggerArgs>(&GetSpell()->m_customArg);
if (!evangelism)
return;
ApplyPct(pctMod, evangelism->EffectivenessPct);
}
void Register() override
{
CalcHealing += SpellCalcHealingFn(spell_pri_power_word_radiance_evangelism::CalculateHealing);
}
};
// 17 - Power Word: Shield
class spell_pri_power_word_shield : public AuraScript
{
@@ -5402,6 +5435,7 @@ void AddSC_priest_spell_scripts()
RegisterSpellScriptWithArgs(spell_pri_power_surge_periodic, "spell_pri_power_surge_periodic_holy", SPELL_PRIEST_HALO_HOLY);
RegisterSpellScriptWithArgs(spell_pri_power_surge_periodic, "spell_pri_power_surge_periodic_shadow", SPELL_PRIEST_HALO_SHADOW);
RegisterSpellScript(spell_pri_power_word_radiance);
RegisterSpellScript(spell_pri_power_word_radiance_evangelism);
RegisterSpellScript(spell_pri_power_word_shield);
RegisterSpellScript(spell_pri_power_word_solace);
RegisterSpellScript(spell_pri_prayer_of_mending_dummy);