mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 03:32:28 -04:00
Scripts/Spells: Update priest talent Evangelism implementation (#31661)
This commit is contained in:
8
sql/updates/world/master/2026_02_27_00_world.sql
Normal file
8
sql/updates/world/master/2026_02_27_00_world.sql
Normal 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
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user