You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1857 lines
85 KiB

-- PaladinRetribution.lua
-- October 2022
if UnitClassBase( "player" ) ~= "PALADIN" then return end
local addon, ns = ...
local Hekili = _G[ addon ]
local class, state = Hekili.Class, Hekili.State
local spec = Hekili:NewSpecialization( 70 )
spec:RegisterResource( Enum.PowerType.HolyPower )
spec:RegisterResource( Enum.PowerType.Mana )
-- Talents
spec:RegisterTalents( {
-- Paladin
afterimage = { 81613, 385414, 1 }, -- After you spend 20 holy power, your next Word of Glory echoes onto a nearby ally at 30% effectiveness
aspiration_of_divinity = { 81622, 385416, 2 }, -- Your Crusader Strike now also grants you 1% increased Strength for 6 sec. Multiple applications may overlap.
avenging_wrath = { 81606, 31884 , 1 }, -- Call upon the Light to become an avatar of retribution, allowing Hammer of Wrath to be used on any target, increasing your damage and healing by 20% for 20 sec.
blessing_of_freedom = { 81600, 1044 , 1 }, -- Blesses a party or raid member, granting immunity to movement impairing effects for 8 sec.
blessing_of_protection = { 81616, 1022 , 1 }, -- Blesses a party or raid member, granting immunity to Physical damage and harmful effects for 10 sec. Cannot be used on a target with Forbearance. Causes Forbearance for 30 sec.
blessing_of_sacrifice = { 81614, 6940 , 1 }, -- Blesses a party or raid member, reducing their damage taken by 30%, but you suffer 100% of damage prevented. Last 12 sec, or until transferred damage would cause you to fall below 20% health.
blinding_light = { 81598, 115750, 1 }, -- Emits dazzling light in all directions, blinding enemies within 10 yards, causing them to wander disoriented for 6 sec. Non-Holy damage will break the disorient effect.
cavalier = { 81605, 230332, 1 }, -- Divine Steed now has 2 charges.
divine_purpose = { 81618, 223817, 1 }, -- Holy Power abilities have a 15% chance to make your next Holy Power ability free and deal 15% increased damage and healing.
divine_steed = { 81632, 190784, 1 }, -- Leap atop your Charger for 6.8 sec, increasing movement speed by 100%. Usable while indoors or in combat.
fist_of_justice = { 81602, 234299, 2 }, -- Each Holy Power spent reduces the remaining cooldown on Hammer of Justice by 1 sec.
golden_path = { 81610, 377128, 1 }, -- Consecration heals you and up to 5 allies for 97 every 0.9 sec while standing within it.
hallowed_ground = { 81509, 377043, 1 }, -- Consecration's damage is increased by 10%.
holy_aegis = { 81609, 385515, 2 }, -- Armor and critical strike chance increased by 2%.
holy_avenger = { 81618, 105809, 1 }, -- Your Holy Power generation is tripled for 20 sec.
improved_blessing_of_protection = { 81617, 384909, 1 }, -- Reduces the cooldown of Blessing of Protection by 60 sec.
incandescence = { 81628, 385464, 1 }, -- Each Holy Power you spend has a 5% chance to cause your Consecration to flare up, dealing 776 Holy damage to up to 5 enemies standing within it.
judgment_of_light = { 81608, 183778, 1 }, -- Judgment causes the next 25 successful attacks against the target to heal the attacker for 72.
obduracy = { 81627, 385427, 1 }, -- Speed and Avoidance increased by 2%.
of_dusk_and_dawn = { 81624, 385125, 1 }, -- When you reach 5 Holy Power, you gain Blessing of Dawn. When you reach 0 Holy Power, you gain Blessing of Dusk. Blessing of Dawn Damage and healing increased by 10% for 15 sec, and Holy Power-spending abilities dealing 10% additional increased damage and healing. Blessing of Dusk Damage taken reduced by 4% for 15 sec. Armor increased by 10% and Holy Power generating abilities cooling down 10% faster.
rebuke = { 81604, 96231 , 1 }, -- Interrupts spellcasting and prevents any spell in that school from being cast for 4 sec.
recompense = { 81607, 384914, 1 }, -- After your Blessing of Sacrifice ends, 50% of the total damage it diverted is added to your next Judgment as bonus damage, or your next Word of Glory as bonus healing. This effect's bonus damage cannot exceed 30% of your maximum health and its bonus healing cannot exceed 100% of your maximum health.
repentance = { 81598, 20066 , 1 }, -- Forces an enemy target to meditate, incapacitating them for 1 min. Usable against Humanoids, Demons, Undead, Dragonkin, and Giants.
sacrifice_of_the_just = { 81607, 384820, 1 }, -- Reduces the cooldown of Blessing of Sacrifice by 60 sec.
sanctified_wrath = { 81620, 31884 , 1 }, -- Call upon the Light to become an avatar of retribution, allowing Hammer of Wrath to be used on any target, increasing your damage and healing by 20% for 20 sec.
seal_of_alacrity = { 81619, 385425, 2 }, -- Haste increased by 2%.
seal_of_clarity = { 81612, 384815, 2 }, -- Spending Holy Power has a 5% chance to reduce the Holy Power cost of your next Word of Glory or Shield of the Righteous by 1.
seal_of_mercy = { 81611, 384897, 2 }, -- Golden Path strikes the lowest health ally within it an additional time for 50.0% of its effect.
seal_of_might = { 81621, 385450, 2 }, -- During Avenging Wrath, your Mastery is increased by 4%.
seal_of_order = { 81623, 385129, 1 }, -- In the Dawn, your Holy Power-spending abilities deal 10% increased damage and healing. In the Dusk, your armor is increased by 10% and your Holy Power generating abilities cool down 10% faster.
seal_of_reprisal = { 81629, 377053, 2 }, -- Your damaging Holy Power spending abilities deal 5% increased damage.
seal_of_the_crusader = { 81626, 385728, 2 }, -- Your attacks have a chance to cause your target to take 3% increased Holy damage for 5 sec.
seal_of_the_templar = { 81631, 377016, 1 }, -- While mounted on your Charger or under the effects of Crusader Aura, the ranges of Crusader Strike, Templar's Verdict, and Hammer of Justice are increased by 3 yards.
seasoned_warhorse = { 81631, 376996, 1 }, -- Increases the duration of Divine Steed by 1 sec.
seraphim = { 81620, 152262, 1 }, -- The Light magnifies your power for 15 sec, granting 8% Haste, Critical Strike, and Versatility, and 13% Mastery.
touch_of_light = { 81628, 385349, 1 }, -- Your spells and abilities have a chance to cause your target to erupt in a blinding light dealing 97 Holy damage or healing an ally for 102 health.
turn_evil = { 81630, 10326 , 1 }, -- The power of the Light compels an Undead, Aberration, or Demon target to flee for up to 40 sec. Damage may break the effect. Lesser creatures have a chance to be destroyed. Only one target can be turned at a time.
unbreakable_spirit = { 81615, 114154, 1 }, -- Reduces the cooldown of your Divine Shield, Shield of Vengeance, and Lay on Hands by 30%.
zealots_paragon = { 81625, 391142, 1 }, -- Hammer of Wrath and Judgment deal 10% additional damage and extend the duration of Avenging Wrath by 0.5 sec.
-- Retribution
art_of_war = { 81547, 267344, 1 }, -- Your auto attacks have a 18% chance to reset the cooldown of Blade of Justice.
ashes_to_ashes = { 81550, 383276, 2 }, -- When you benefit from Art of War, you gain Seraphim for 2 sec. Seraphim: The Light magnifies your power for 15 sec, granting 8% Haste, Critical Strike, and Versatility, and 13% Mastery.
ashes_to_dust = { 81523, 383300, 1 }, -- Art of War has a 35% chance to reset the cooldown of Wake of Ashes instead of Blade of Justice.
auras_of_swift_vengeance = { 81601, 385639, 1 }, -- Learn Retribution Aura and Crusader Aura:
auras_of_the_resolute = { 81599, 385633, 1 }, -- Learn Concentration Aura and Devotion Aura:
avenging_wrath_might = { 81525, 31884 , 1 }, -- Call upon the Light to become an avatar of retribution, allowing Hammer of Wrath to be used on any target, increasing your damage and healing by 20% for 20 sec.
blade_of_condemnation = { 81513, 383263, 1 }, -- Increases the critical strike chance of Blade of Justice by 5%.
blade_of_justice = { 81526, 184575, 1 }, -- Pierces an enemy with a blade of light, dealing 3,125 Physical damage. Generates 2 Holy Power.
blade_of_wrath = { 81521, 231832, 1 }, -- Art of War resets the cooldown of Blade of Justice 50% more often and increases its damage by 25% for 10 sec.
boundless_judgment = { 81534, 383876, 1 }, -- Judgment has a 25% chance to chain to a nearby enemy.
cleanse_toxins = { 81507, 213644, 1 }, -- Cleanses a friendly target, removing all Poison and Disease effects.
consecrated_blade = { 81553, 382275, 1 }, -- Art of War causes Blade of Justice to cast Consecration at the target's location. The limit on Consecration does not apply to this effect.
consecrated_ground = { 81535, 204054, 1 }, -- Your Consecration is 15% larger, and enemies within it have 50% reduced movement speed.
crusade = { 81525, 231895, 1 }, -- Call upon the Light and begin a crusade, increasing your haste and damage by 3% for 25 sec. Each Holy Power spent during Crusade increases haste and damage by an additional 3%. Maximum 10 stacks. Hammer of Wrath may be cast on any target. Combines with Avenging Wrath.
divine_protection = { 81545, 498 , 1 }, -- Reduces all damage you take by 20% for 8 sec.
divine_resonance = { 81538, 384027, 1 }, -- After casting Divine Toll, you instantly cast Judgment every 5 sec for 15 sec.
divine_storm = { 81529, 53385 , 1 }, -- Unleashes a whirl of divine energy, dealing 3,014 Holy damage to all nearby enemies. Deals reduced damage beyond 5 targets.
divine_toll = { 81539, 375576, 1 }, -- Instantly cast Judgment on up to 5 targets within 30 yds. Divine Toll's Judgment deals 100% increased damage.
empyrean_legacy = { 81511, 387170, 1 }, -- Judgment empowers your next Templar's Verdict to automatically activate Divine Storm with 25% increased effectiveness. This effect can only occur every 30 sec.
empyrean_power = { 81532, 326732, 1 }, -- Crusader Strike has a 15% chance to make your next Divine Storm free and deal 25% additional damage.
execution_sentence = { 81537, 343527, 1 }, -- A hammer slowly falls from the sky upon the target. After 8 sec, they suffer 8,738 Holy damage, plus 10% of damage taken from your abilities in that time.
executioners_will = { 81536, 384162, 1 }, -- Templar's Verdict extends the duration of Execution Sentence on the target by 1 sec. This duration cannot extend beyond an additional 8 sec.
executioners_wrath = { 81536, 387196, 1 }, -- When Execution Sentence expires, 20% of damage done during its duration is also dealt to nearby enemies within 8 yards.
exorcism = { 81542, 383185, 1 }, -- Blasts the target with Holy Light, causing 3,178 Holy damage and burns the target for an additional 4,385 Holy Damage over 12 sec. Stuns Demon and Undead targets for 5 sec. Applies the damage over time effect to nearby enemies if the target is standing within your Consecration.
expurgation = { 81519, 383344, 1 }, -- Your Blade of Justice critical strikes cause the target to burn for 60% of the damage dealt over 6 sec.
eye_for_an_eye = { 81517, 205191, 1 }, -- Surround yourself with a bladed bulwark, reducing Physical damage taken by 35% and dealing 760 Physical damage to any melee attackers for 10 sec.
final_reckoning = { 81548, 343721, 1 }, -- Call down a blast of heavenly energy, dealing 7,943 Holy damage to all targets in the target area and causing them to take 50% increased damage from your Holy Power abilities for 8 sec. Passive: While off cooldown, your attacks have a high chance to call down a bolt that deals 1,588 Holy damage and causes the target to take 10% increased damage from your next Holy Power ability.
final_verdict = { 81515, 383328, 1 }, -- Unleashes a powerful weapon strike that deals 4,771 Holy damage to an enemy target, Final Verdict has a 10% chance to reset the cooldown of Hammer of Wrath and make it usable on any target, regardless of their health.
fires_of_justice = { 81552, 203316, 1 }, -- Reduces the cooldown of Crusader Strike by 15% and grants it a 15% chance to make your next ability consume 1 less Holy Power.
greater_judgment = { 81603, 231663, 1 }, -- Judgment causes the target to take 20% increased damage from your next Holy Power ability.
hammer_of_wrath = { 81510, 24275 , 1 }, -- Hurls a divine hammer that strikes an enemy for 3,813 Holy damage. Only usable on enemies that have less than 20% health, or during Avenging Wrath. Generates 1 Holy Power.
hand_of_hindrance = { 81541, 183218, 1 }, -- Burdens an enemy target with the weight of their misdeeds, reducing movement speed by 70% for 10 sec.
healing_hands = { 81551, 326734, 1 }, -- The cooldown of Lay on Hands is reduced up to 60%, based on the target's missing health. Word of Glory's healing is increased by up to 100%, based on the target's missing health.
highlords_judgment = { 81533, 383271, 2 }, -- Increases Judgment damage by 8%.
holy_blade = { 81546, 383342, 1 }, -- Blade of Justice generates 1 additional Holy Power.
holy_crusader = { 81527, 386967, 1 }, -- Increases your Mastery by 2%.
improved_crusader_strike = { 81528, 383254, 1 }, -- Crusader Strike now has 2 charges.
improved_judgment = { 81530, 383228, 1 }, -- Reduces the cooldown of Judgment by 1 sec.
inner_grace = { 81543, 383334, 1 }, -- Every 12 sec in combat, you gain 1 Holy Power.
justicars_vengeance = { 81517, 215661, 1 }, -- Focuses Holy energy to deliver a powerful weapon strike that deals 4,893 Holy damage, and restores health equal to the damage done. Damage is increased by 50% when used against a stunned target.
lay_on_hands = { 81597, 633 , 1 }, -- Heals a friendly target for an amount equal to 100% your maximum health. Cannot be used on a target with Forbearance. Causes Forbearance for 30 sec.
radiant_decree = { 81523, 384052, 1 }, -- Replaces Wake of Ashes with Radiant Decree.
relentless_inquisitor = { 81540, 383388, 2 }, -- Spending Holy Power grants you 1% haste per finisher for 12 sec, stacking up to 3 times.
righteous_verdict = { 81531, 267610, 1 }, -- Templar's Verdict increases the damage of your next Templar's Verdict by 5% for 6 sec.
sanctification = { 81543, 382430, 1 }, -- Consecration periodic damage has a chance to grant you 1 Holy Power. Chances increase up to 4 targets within Consecration.
sanctified_ground = { 81535, 387479, 1 }, -- Your Consecration is 15% larger, and you cannot be slowed below 80% of normal movement speed within Consecration. This effect lasts for 2 sec after leaving Consecration.
sanctify = { 81544, 382536, 1 }, -- Enemies hit by Divine Storm take 100% more damage from Consecration for 8 sec.
seal_of_wrath = { 81520, 386901, 1 }, -- Judgment has a 25% chance to throw a second hammer dealing an additional 603 Holy damage to the target.
sealed_verdict = { 81518, 387640, 2 }, -- Abilities that spend Holy Power increase the damage of Blade of Justice by 8%.
selfless_healer = { 81551, 85804 , 1 }, -- Your Holy Power spending abilities reduce the cast time of your next Flash of Light by 25%, and increase its healing done by 10%. Stacks up to 4 times.
shield_of_vengeance = { 81545, 184662, 1 }, -- Creates a barrier of holy light that absorbs 16,850 damage for 15 sec. When the shield expires, it bursts to inflict Holy damage equal to the total amount absorbed, divided among all nearby enemies.
tempest_of_the_lightbringer = { 81512, 383396, 1 }, -- Divine Storm projects an additional wave of light, striking all enemies up to 20 yards in front of you for 20% of Divine Storm's damage.
templars_vindication = { 81516, 383274, 2 }, -- Templar's Verdict has a 15% chance to strike again for 10% of its damage.
truths_wake = { 81522, 383350, 1 }, -- Wake of Ashes burns the target for an additional 10% damage over 6 sec.
vanguards_momentum = { 81514, 383314, 2 }, -- Hammer of Wrath has 1 extra charge and increases Holy damage done by 2% for 10 sec, stacking 3 times.
virtuous_command = { 81549, 383304, 2 }, -- Judgment grants you Virtuous Command for 5 sec, which causes your Templar's Verdict, Crusader Strike, Blade of Justice, and auto attacks to deal 5% additional Holy damage.
wake_of_ashes = { 81524, 255937, 1 }, -- Lash out at your enemies, dealing 11,010 Radiant damage to all enemies within 12 yd in front of you and reducing their movement speed by 50% for 5 sec. Damage reduced on secondary targets. Demon and Undead enemies are also stunned for 5 sec. Generates 3 Holy Power.
zeal = { 81552, 269569, 1 }, -- Judgment empowers you with holy zeal, causing your next 2 auto attacks to occur 30% faster and deal an additional 270 Holy damage.
} )
-- PvP Talents
spec:RegisterPvpTalents( {
aura_of_reckoning = 756 , -- (247675) When you or allies within your Aura are critically struck, gain Reckoning. Gain 1 additional stack if you are the victim. At 50 stacks of Reckoning, your next weapon swing deals 200% increased damage, will critically strike, and activates Avenging Wrath for 6 sec.
blessing_of_sanctuary = 752 , -- (210256) Instantly removes all stun, silence, fear and horror effects from the friendly target and reduces the duration of future such effects by 60% for 5 sec.
divine_punisher = 755 , -- (204914) Casting two consecutive Judgments on the same enemy will generate 3 Holy Power.
hallowed_ground = 5535, -- (216868) Your Consecration clears and suppresses all snare effects on allies within its area of effect.
judgments_of_the_pure = 5422, -- (355858) Casting Judgment on an enemy cleanses 1 Poison, Disease, and Magic effect they have caused on allies within your Aura.
jurisdiction = 757 , -- (204979) Increase the range of Blade of Justice and Hammer of Justice by 10 yds, and radius of Divine Storm by 4 yds.
law_and_order = 858 , -- (204934) When your Hand of Hindrance is dispelled or otherwise removed early, the cooldown is reduced by 15 sec. Your Blade of Justice applies Hand of Hindrance to the target for 3 sec.
lawbringer = 754 , -- (246806) Judgment now applies Lawbringer to initial targets hit for 1 min. Casting Judgment on an enemy causes all other enemies with your Lawbringer effect to suffer up to 10% of their maximum health in Holy damage.
luminescence = 81 , -- (199428) When healed by an ally, allies within your Aura gain 4% increased damage and healing for 6 sec.
ultimate_retribution = 753 , -- (355614) Mark an enemy player for retribution after they kill an ally within your Retribution Aura. If the marked enemy is slain within 8 sec, cast Redemption on the fallen ally.
unbound_freedom = 641 , -- (305394) Blessing of Freedom increases movement speed by 30%, and you gain Blessing of Freedom when cast on a friendly target. Unbound Freedom also causes any Blessing of Freedom applied to yourself to be undispellable.
vengeance_aura = 751 , -- (210323) When a full loss of control effect is applied to you or an ally within your Aura, gain 6% critical strike chance for 8 sec. Max 2 stacks.
} )
-- Auras
spec:RegisterAuras( {
-- Damage taken reduced by $w1%. The next attack that would otherwise kill you will instead bring you to $w2% of your maximum health.
-- https://wowhead.com/beta/spell=31850
ardent_defender = {
id = 31850,
duration = 8,
type = "Magic",
max_stack = 1
},
-- Talent: $pri increased by $s1%.
-- https://wowhead.com/beta/spell=385417
aspiration_of_divinity = {
id = 385417,
duration = 6,
max_stack = 3
},
-- Silenced.
-- https://wowhead.com/beta/spell=31935
avengers_shield = {
id = 31935,
duration = 3,
type = "Magic",
max_stack = 1
},
-- Crusader Strike and Judgment cool down $w2% faster.$?a384376[ Judgment, Crusader Strike, and auto-attack damage increased by $s1%.][] $w6 nearby allies will be healed for $w5% of the damage done.
-- https://wowhead.com/beta/spell=216331
avenging_crusader = {
id = 216331,
duration = 20,
max_stack = 1
},
-- Talent: $?$w2>0&$w4>0[Damage, healing and critical strike chance increased by $w2%.]?$w4==0&$w2>0[Damage and healing increased by $w2%.]?$w2==0&$w4>0[Critical strike chance increased by $w4%.][]$?a53376[ ][]$?a53376&a137029[Holy Shock's cooldown reduced by $w6%.]?a53376&a137028[Judgment generates $53376s3 additional Holy Power.]?a53376[Each Holy Power spent deals $326731s1 Holy damage to nearby enemies.][]
-- https://wowhead.com/beta/spell=31884
avenging_wrath = {
id = 31884,
duration = function() return talent.sanctified_wrath.enabled and 25 or 20 end,
max_stack = 1
},
avenging_wrath_autocrit = {
id = 294027,
duration = 20,
max_stack = 1,
copy = "avenging_wrath_crit"
},
-- Will be healed for $w1 upon expiration.
-- https://wowhead.com/beta/spell=223306
bestow_faith = {
id = 223306,
duration = 5,
type = "Magic",
max_stack = 1
},
blade_of_wrath = {
id = 281178,
duration = 10,
max_stack = 1,
},
-- Damage against $@auracaster reduced by $w2.
-- https://wowhead.com/beta/spell=204301
blessed_hammer = {
id = 204301,
duration = 10,
max_stack = 1
},
-- Damage and healing increased by $w1%$?s385129[, and Holy Power-spending abilities dealing $w4% additional increased damage and healing.][.]
-- https://wowhead.com/beta/spell=385127
blessing_of_dawn = {
id = 385127,
duration = 15,
max_stack = 1,
copy = 337767
},
blessing_of_dusk = {
id = 385126,
duration = 15,
max_stack = 1,
copy = 337757
},
-- Talent: Immune to movement impairing effects. $?s199325[Movement speed increased by $199325m1%][]
-- https://wowhead.com/beta/spell=1044
blessing_of_freedom = {
id = 1044,
duration = 8,
type = "Magic",
max_stack = 1
},
-- Talent: Immune to Physical damage and harmful effects.
-- https://wowhead.com/beta/spell=1022
blessing_of_protection = {
id = 1022,
duration = 10,
mechanic = "invulneraility",
type = "Magic",
max_stack = 1
},
-- Talent: $?$w1>0[$w1% of damage taken is redirected to $@auracaster.][Taking ${$s1*$e1}% of damage taken by target ally.]
-- https://wowhead.com/beta/spell=6940
blessing_of_sacrifice = {
id = 6940,
duration = 12,
type = "Magic",
max_stack = 1
},
-- Immune to magical damage and harmful effects.
-- https://wowhead.com/beta/spell=204018
blessing_of_spellwarding = {
id = 204018,
duration = 10,
mechanic = "invulneraility",
type = "Magic",
max_stack = 1
},
-- Attack speed reduced by $w3%. Movement speed reduced by $w4%.
-- https://wowhead.com/beta/spell=388012
blessing_of_winter = {
id = 388012,
duration = 6,
type = "Magic",
max_stack = 10,
copy = 328506
},
-- Talent:
-- https://wowhead.com/beta/spell=115750
blinding_light = {
id = 115750,
duration = 6,
type = "Magic",
max_stack = 1
},
-- Interrupt and Silence effects reduced by $w1%. $?s339124[Fear effects are reduced by $w4%.][]
-- https://wowhead.com/beta/spell=317920
concentration_aura = {
id = 317920,
duration = 3600,
max_stack = 1
},
consecrated_blade = {
id = 382522,
duration = 10,
max_stack = 1,
},
-- Damage every $t1 sec.
-- https://wowhead.com/beta/spell=26573
consecration = {
id = 26573,
duration = 12,
tick_time = 1,
type = "Magic",
max_stack = 1,
generate = function( c, type )
local dropped, expires
c.count = 0
c.expires = 0
c.applied = 0
c.caster = "unknown"
for i = 1, 5 do
local up, name, start, duration = GetTotemInfo( i )
if up and name == class.abilities.consecration.name then
dropped = start
expires = dropped + duration
break
end
end
if dropped and expires > query_time then
c.expires = expires
c.applied = dropped
c.count = 1
c.caster = "player"
end
end
},
crusade = {
id = 231895,
duration = 25,
type = "Magic",
max_stack = 10,
},
-- Mounted speed increased by $w1%.$?$w5>0[ Incoming fear duration reduced by $w5%.][]
-- https://wowhead.com/beta/spell=32223
crusader_aura = {
id = 32223,
duration = 3600,
max_stack = 1
},
-- Damage taken reduced by $w1%.
-- https://wowhead.com/beta/spell=465
devotion_aura = {
id = 465,
duration = 3600,
max_stack = 1
},
-- Talent: Damage taken reduced by $w1%.
-- https://wowhead.com/beta/spell=498
divine_protection = {
id = 498,
duration = 8,
max_stack = 1
},
divine_purpose = {
id = 223819,
duration = 12,
max_stack = 1,
},
divine_resonance = {
id = 387895,
duration = 15,
max_stack = 1,
copy = { 355455, 384029, 386730 }
},
-- Immune to all attacks and harmful effects.
-- https://wowhead.com/beta/spell=642
divine_shield = {
id = 642,
duration = 8,
mechanic = "invulneraility",
type = "Magic",
max_stack = 1
},
-- Talent: Increases ground speed by $s4%$?$w1<0[, and reduces damage taken by $w1%][].
-- https://wowhead.com/beta/spell=221883
divine_steed = {
id = 221883,
duration = function () return ( 3 + talent.seasoned_warhorse.rank + pvptalent.steed_of_glory.rank ) * ( 1 + ( conduit.lights_barding.mod * 0.01 ) ) end,
max_stack = 1,
copy = { 221885, 221886 },
},
empyrean_legacy = {
id = 387178,
duration = 20,
max_stack = 1
},
empyrean_legacy_icd = {
duration = 30,
max_stack = 1
},
-- Talent: Your next Divine Storm is free and deals $w1% additional damage.
-- https://wowhead.com/beta/spell=326733
empyrean_power = {
id = 326733,
duration = 15,
max_stack = 1
},
-- Talent: Sentenced to suffer $w1 Holy damage.
-- https://wowhead.com/beta/spell=343527
execution_sentence = {
id = 343527,
duration = 8,
type = "Magic",
max_stack = 1
},
-- Talent: Suffering $s1 damage every $t1 sec
-- https://wowhead.com/beta/spell=383208
exorcism = {
id = 383208,
duration = 12,
tick_time = 2,
type = "Magic",
max_stack = 1
},
exorcism_stun = {
id = 385149,
duration = 5,
max_stack = 1,
},
-- Talent: Deals $w1 damage over $d1.
-- https://wowhead.com/beta/spell=273481
expurgation = {
id = 273481,
duration = 6,
tick_time = 2,
type = "Magic",
max_stack = 1,
copy = 344067
},
-- Talent: Counterattacking all melee attacks.
-- https://wowhead.com/beta/spell=205191
eye_for_an_eye = {
id = 205191,
duration = 10,
max_stack = 1
},
-- Talent: Taking $w3% increased damage from $@auracaster's Holy Power abilities.
-- https://wowhead.com/beta/spell=343721
final_reckoning = {
id = 343721,
duration = 8,
type = "Magic",
max_stack = 1
},
final_verdict = {
id = 383329,
duration = 15,
max_stack = 1,
copy = 337228
},
-- Talent: Your next Holy Power spender costs $s2 less Holy Power.
-- https://wowhead.com/beta/spell=209785
fires_of_justice = {
id = 209785,
duration = 15,
max_stack = 1,
copy = "the_fires_of_justice" -- backward compatibility
},
forbearance = {
id = 25771,
duration = 30,
max_stack = 1,
},
-- Damaged or healed whenever the Paladin casts Holy Shock.
-- https://wowhead.com/beta/spell=287280
glimmer_of_light = {
id = 287280,
duration = 30,
type = "Magic",
max_stack = 1
},
-- Stunned.
-- https://wowhead.com/beta/spell=853
hammer_of_justice = {
id = 853,
duration = 6,
mechanic = "stun",
type = "Magic",
max_stack = 1
},
-- Talent: Movement speed reduced by $w1%.
-- https://wowhead.com/beta/spell=183218
hand_of_hindrance = {
id = 183218,
duration = 10,
mechanic = "snare",
type = "Magic",
max_stack = 1
},
-- Taunted.
-- https://wowhead.com/beta/spell=62124
hand_of_reckoning = {
id = 62124,
duration = 3,
mechanic = "taunt",
max_stack = 1
},
-- Talent: Your Holy Power generation is tripled.
-- https://wowhead.com/beta/spell=105809
holy_avenger = {
id = 105809,
duration = 20,
max_stack = 1
},
inquisition = {
id = 84963,
duration = 45,
max_stack = 1,
},
-- Taking $w1% increased damage from $@auracaster's next Holy Power ability.
-- https://wowhead.com/beta/spell=197277
judgment = {
id = 197277,
duration = 15,
max_stack = 1,
copy = 214222
},
-- Talent: Attackers are healed for $183811s1.
-- https://wowhead.com/beta/spell=196941
judgment_of_light = {
id = 196941,
duration = 30,
max_stack = 25
},
-- Healing for $w1 every $t1 sec.
-- https://wowhead.com/beta/spell=378412
light_of_the_titans = {
id = 378412,
duration = 15,
type = "Magic",
max_stack = 1
},
-- Talent: Movement speed reduced by $s2%.
-- https://wowhead.com/beta/spell=383469
radiant_decree = {
id = 383469,
duration = 5,
type = "Magic",
max_stack = 1
},
-- Burning with holy fire for $w1 Holy damage every $t1 sec.
-- https://wowhead.com/beta/spell=278145
radiant_incandescence = {
id = 278145,
duration = 3,
tick_time = 1,
type = "Magic",
max_stack = 1,
copy = 278147
},
recompense = {
id = 397191,
duration = 12,
max_stack = 1,
},
-- Taking $w2% increased damage from $@auracaster's next Holy Power ability.
-- https://wowhead.com/beta/spell=343724
reckoning = {
id = 343724,
duration = 15,
type = "Magic",
max_stack = 1,
},
-- Talent: Haste increased by $w1%.
-- https://wowhead.com/beta/spell=383389
relentless_inquisitor = {
id = 383389,
duration = 12,
max_stack = 3,
copy = 337315
},
-- Talent: Incapacitated.
-- https://wowhead.com/beta/spell=20066
repentance = {
id = 20066,
duration = 60,
mechanic = "incapacitate",
type = "Magic",
max_stack = 1
},
-- When any party or raid member within $a1 yards dies, you gain Avenging Wrath for $w1 sec. When any party or raid member within $a1 yards takes more than $s3% of their health in damage, you gain Seraphim for $s4 sec. This cannot occur more than once every 30 sec.
-- https://wowhead.com/beta/spell=183435
retribution_aura = {
id = 183435,
duration = 3600,
max_stack = 1
},
righteous_verdict = {
id = 267611,
duration = 6,
max_stack = 1,
},
sanctified_ground = {
id = 387480,
duration = 3600,
max_stack = 1,
},
sanctify = {
id = 382538,
duration = 8,
max_stack = 1,
},
-- Talent: $@spellaura385728
-- https://wowhead.com/beta/spell=385723
seal_of_the_crusader = {
id = 385723,
duration = 5,
max_stack = 1
},
sealed_verdict = {
id = 387643,
duration = 15,
max_stack = 1
},
-- Talent: Flash of Light cast time reduced by $w1%. Flash of Light heals for $w2% more.
-- https://wowhead.com/beta/spell=114250
selfless_healer = {
id = 114250,
duration = 15,
max_stack = 4
},
-- Damage taken reduced by $s12%. Maximum health increased by $s11%. $?s53376[ Judgment generates $53376s3~ additional Holy Power.][] $?s384376[ Damage and healing increased by $384376s1~%. Hammer of Wrath may be cast on any target.][]
-- https://wowhead.com/beta/spell=389539
sentinel = {
id = 389539,
duration = 20,
max_stack = 15
},
-- Talent: Haste, Critical Strike, and Versatility increased by $s1%, and Mastery increased by $?c1[${$s4*$183997bc1}]?c2[${$s4*$76671bc1}][${$s4*$267316bc1}]%.
-- https://wowhead.com/beta/spell=152262
seraphim = {
id = 152262,
duration = 15,
max_stack = 1
},
-- Talent: Absorbs $w1 damage and deals damage when the barrier fades or is fully consumed.
-- https://wowhead.com/beta/spell=184662
shield_of_vengeance = {
id = 184662,
duration = 15,
mechanic = "shield",
type = "Magic",
max_stack = 1
},
-- $?$w2>1[Absorbs the next ${$w2-1} damage.][Absorption exhausted.] Refreshed to $w1 absorption every $t1 sec.
-- https://wowhead.com/beta/spell=337824
shock_barrier = {
id = 337824,
duration = 18,
tick_time = 6,
type = "Magic",
max_stack = 1
},
the_magistrates_judgment = {
id = 337682,
duration = 15,
max_stack = 1,
},
-- Talent: Disoriented.
-- https://wowhead.com/beta/spell=10326
turn_evil = {
id = 10326,
duration = 40,
mechanic = "turn",
type = "Magic",
max_stack = 1
},
-- Talent: Holy Damage increased by $w1%.
-- https://wowhead.com/beta/spell=383311
vanguards_momentum = {
id = 383311,
duration = 10,
max_stack = 3,
copy = 345046
},
-- Covenant: Your next $?c3[Templar's Verdict automatically triggers Divine Storm]?c1[Word of Glory automatically triggers Light of Dawn][Word of Glory automatically triggers Shield of the Righteous] with $s2% increased effectiveness.
-- https://wowhead.com/beta/spell=328204
vanquishers_hammer = {
id = 328204,
duration = 20,
type = "Magic",
max_stack = 1
},
virtuous_command = {
id = 383307,
duration = 5,
max_stack = 1,
copy = 339664
},
-- Talent: Movement speed reduced by $s2%.
-- https://wowhead.com/beta/spell=255937
wake_of_ashes = {
id = 255937,
duration = 5,
type = "Magic",
max_stack = 1
},
wake_of_ashes_stun = {
id = 255941,
duration = 5,
max_stack = 1,
},
-- Talent: Auto attack speed increased and deals additional Holy damage.
-- https://wowhead.com/beta/spell=269571
zeal = {
id = 269571,
duration = 20,
max_stack = 1
},
paladin_aura = {
alias = { "concentration_aura", "crusader_aura", "devotion_aura", "retribution_aura" },
aliasMode = "first",
aliasType = "buff",
duration = 3600,
},
empyreal_ward = {
id = 387792,
duration = 60,
max_stack = 1,
copy = 287731
},
-- Power: 335069
negative_energy_token_proc = {
id = 345693,
duration = 5,
max_stack = 1,
},
reckoning_pvp = {
id = 247677,
max_stack = 30,
duration = 30
},
truths_wake = {
id = 383351,
duration = 6,
max_stack = 1,
copy = 339376
},
} )
-- Legacy sets.
spec:RegisterAuras( {
sacred_judgment = {
id = 246973,
duration = 8
},
hidden_retribution_t21_4p = {
id = 253806,
duration = 15
},
whisper_of_the_nathrezim = {
id = 207633,
duration = 3600
},
ashes_to_dust = {
id = 236106,
duration = 6
},
chain_of_thrayn = {
id = 236328,
duration = 3600
},
liadrins_fury_unleashed = {
id = 208410,
duration = 3600,
},
scarlet_inquisitors_expurgation = {
id = 248289,
duration = 3600,
max_stack = 3
}
} )
spec:RegisterHook( "prespend", function( amt, resource, overcap )
if resource == "holy_power" and amt < 0 and buff.holy_avenger.up then
return amt * 3, resource, overcap
end
end )
spec:RegisterHook( "spend", function( amt, resource )
if amt > 0 and resource == "holy_power" then
if talent.crusade.enabled and buff.crusade.up then
addStack( "crusade", buff.crusade.remains, amt )
end
if talent.fist_of_justice.enabled then
setCooldown( "hammer_of_justice", max( 0, cooldown.hammer_of_justice.remains - talent.fist_of_justice.rank * amt ) )
end
if legendary.uthers_devotion.enabled then
setCooldown( "blessing_of_freedom", max( 0, cooldown.blessing_of_freedom.remains - 1 ) )
setCooldown( "blessing_of_protection", max( 0, cooldown.blessing_of_protection.remains - 1 ) )
setCooldown( "blessing_of_sacrifice", max( 0, cooldown.blessing_of_sacrifice.remains - 1 ) )
setCooldown( "blessing_of_spellwarding", max( 0, cooldown.blessing_of_spellwarding.remains - 1 ) )
end
if legendary.relentless_inquisitor.enabled or talent.relentless_inquisitor.enabled then
if buff.relentless_inquisitor.stack < ( 3 * talent.relentless_inquisitor.rank ) then
stat.haste = stat.haste + 0.01
end
addStack( "relentless_inquisitor" )
end
if ( talent.of_dusk_and_dawn.enabled or legendary.of_dusk_and_dawn.enabled ) and holy_power.current == 0 then applyBuff( "blessing_of_dusk" ) end
if talent.sealed_verdict.enabled then applyBuff( "sealed_verdict" ) end
if talent.selfless_healer.enabled then addStack( "selfless_healer" ) end
end
end )
spec:RegisterHook( "gain", function( amt, resource, overcap )
if ( talent.of_dusk_and_dawn.enabled or legendary.of_dusk_and_dawn.enabled ) and amt > 0 and resource == "holy_power" and holy_power.current == 5 then
applyBuff( "blessing_of_dawn" )
end
end )
spec:RegisterStateExpr( "time_to_hpg", function ()
return max( gcd.remains, min( cooldown.judgment.true_remains, cooldown.crusader_strike.true_remains, cooldown.blade_of_justice.true_remains, ( state:IsUsable( "hammer_of_wrath" ) and cooldown.hammer_of_wrath.true_remains or 999 ), action.wake_of_ashes.known and cooldown.wake_of_ashes.true_remains or 999, ( race.blood_elf and cooldown.arcane_torrent.true_remains or 999 ), ( action.divine_toll.known and cooldown.divine_toll.true_remains or 999 ) ) )
end )
local last_empyrean_legacy_icd_expires = 0
spec:RegisterCombatLogEvent( function( _, subtype, _, sourceGUID, sourceName, _, _, destGUID, destName, destFlags, _, spellID, spellName )
if destGUID == state.GUID and subtype == "SPELL_AURA_APPLIED" and spellID == class.auras.empyrean_legacy.id then
last_empyrean_legacy_icd_expires = GetTime() + 30
end
end )
spec:RegisterStateExpr( "consecration", function () return buff.consecration end )
spec:RegisterHook( "reset_precast", function ()
if buff.divine_resonance.up then
state:QueueAuraEvent( "divine_toll", class.abilities.judgment.handler, buff.divine_resonance.expires, "AURA_PERIODIC" )
if buff.divine_resonance.remains > 5 then state:QueueAuraEvent( "divine_toll", class.abilities.judgment.handler, buff.divine_resonance.expires - 5, "AURA_PERIODIC" ) end
if buff.divine_resonance.remains > 10 then state:QueueAuraEvent( "divine_toll", class.abilities.judgment.handler, buff.divine_resonance.expires - 10, "AURA_PERIODIC" ) end
end
if last_empyrean_legacy_icd_expires > query_time then
applyDebuff( "player", "empyrean_legacy_icd", last_empyrean_legacy_icd_expires - query_time )
end
end )
spec:RegisterStateFunction( "apply_aura", function( name )
removeBuff( "concentration_aura" )
removeBuff( "crusader_aura" )
removeBuff( "devotion_aura" )
removeBuff( "retribution_aura" )
if name then applyBuff( name ) end
end )
spec:RegisterStateFunction( "foj_cost", function( amt )
if buff.fires_of_justice.up then return max( 0, amt - 1 ) end
return amt
end )
-- Abilities
spec:RegisterAbilities( {
-- Talent: Call upon the Light to become an avatar of retribution, $?s53376&c2[causing Judgment to generate $53376s3 additional Holy Power, ]?s53376&c3[each Holy Power spent causing you to explode with Holy light for $326731s1 damage to nearby enemies, ]?s53376&c1[reducing Holy Shock's cooldown by $53376s2%, ][]$?s326730[allowing Hammer of Wrath to be used on any target, ][]$?s384442&s384376[increasing your damage, healing and critical strike chance by $s2% for $d.]?!s384442[increasing your damage and healing by $s1% for $d.]?!s384376[increasing your critical strike chance by $s3% for $d.][and activating all the effects learned for Avenging Wrath for $d.]
avenging_wrath = {
id = 31884,
cast = 0,
cooldown = function () return 120 * ( essence.vision_of_perfection.enabled and 0.87 or 1 ) end,
gcd = "off",
school = "holy",
notalent = "crusade",
startsCombat = false,
toggle = "cooldowns",
usable = function() return talent.avenging_wrath.enabled or talent.sanctified_wrath.enabled or talent.avenging_wrath_might.enabled, "requires avenging_wrath/avenging_wrath_might/sanctified_wrath" end,
handler = function ()
applyBuff( "avenging_wrath" )
end,
},
-- Talent: Pierces an enemy with a blade of light, dealing $s1 Physical damage. |cFFFFFFFFGenerates $s2 Holy Power.|r
blade_of_justice = {
id = 184575,
cast = 0,
cooldown = function() return 12 * ( talent.seal_of_order.enabled and buff.blessing_of_dusk.up and 0.9 or 1 ) end,
gcd = "spell",
school = "physical",
spend = function() return talent.holy_blade.enabled and -3 or -2 end,
spendType = "holy_power",
talent = "blade_of_justice",
startsCombat = true,
handler = function ()
if buff.consecrated_blade.up then
class.abilities.consecration.handler()
removeBuff( "consecrated_blade" )
end
removeBuff( "blade_of_wrath" )
removeBuff( "sacred_judgment" )
end,
},
-- Talent: Blesses a party or raid member, granting immunity to movement impairing effects $?s199325[and increasing movement speed by $199325m1% ][]for $d.
blessing_of_freedom = {
id = 1044,
cast = 0,
cooldown = 25,
gcd = "spell",
school = "holy",
spend = 0.07,
spendType = "mana",
talent = "blessing_of_freedom",
startsCombat = false,
handler = function ()
applyBuff( "blessing_of_freedom" )
end,
},
-- Talent: Blesses a party or raid member, granting immunity to Physical damage and harmful effects for $d. Cannot be used on a target with Forbearance. Causes Forbearance for $25771d.$?c2[ Shares a cooldown with Blessing of Spellwarding.][]
blessing_of_protection = {
id = 1022,
cast = 0,
cooldown = function() return talent.improved_blessing_of_protection.enabled and 240 or 300 end,
gcd = "spell",
school = "holy",
spend = 0.15,
spendType = "mana",
talent = "blessing_of_protection",
startsCombat = false,
handler = function ()
applyBuff( "blessing_of_protection" )
applyDebuff( "player", "forbearance" )
if talent.blessing_of_spellwarding.enabled then setCooldown( "blessing_of_spellwarding", action.blessing_of_spellwarding.cooldown ) end
end,
},
-- Talent: Blesses a party or raid member, reducing their damage taken by $s1%, but you suffer ${100*$e1}% of damage prevented. Last $d, or until transferred damage would cause you to fall below $s3% health.
blessing_of_sacrifice = {
id = 6940,
cast = 0,
cooldown = function() return talent.sacrifice_of_the_just.enabled and 60 or 120 end,
gcd = "off",
school = "holy",
spend = 0.07,
spendType = "mana",
talent = "blessing_of_sacrifice",
startsCombat = false,
handler = function ()
applyBuff( "blessing_of_sacrifice" )
end,
},
-- Talent: Emits dazzling light in all directions, blinding enemies within $105421A1 yards, causing them to wander disoriented for $105421d. Non-Holy damage will break the disorient effect.
blinding_light = {
id = 115750,
cast = 0,
cooldown = 90,
gcd = "spell",
school = "holy",
spend = 0.06,
spendType = "mana",
talent = "blinding_light",
startsCombat = false,
toggle = "cooldowns",
handler = function ()
applyDebuff( "target", "blinding_light" )
active_dot.blinding_light = active_enemies
end,
},
-- Talent: Cleanses a friendly target, removing all Poison and Disease effects.
cleanse_toxins = {
id = 213644,
cast = 0,
cooldown = 8,
gcd = "spell",
school = "holy",
spend = 0.065,
spendType = "mana",
talent = "cleanse_toxins",
startsCombat = false,
usable = function ()
return buff.dispellable_poison.up or buff.dispellable_disease.up, "requires poison or disease"
end,
handler = function ()
removeBuff( "dispellable_poison" )
removeBuff( "dispellable_disease" )
end,
},
-- Interrupt and Silence effects on party and raid members within $a1 yards are $s1% shorter. $?s339124[Fear effects are also reduced.][]
concentration_aura = {
id = 317920,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "holy",
talent = "auras_of_the_resolute",
startsCombat = false,
nobuff = "paladin_aura",
handler = function ()
apply_aura( "concentration_aura" )
end,
},
-- Consecrates the land beneath you, causing $<dmg> Holy damage over $d to enemies who enter the area$?s204054[ and reducing their movement speed by $204054s2%.][.] Limit $s2.
consecration = {
id = 26573,
cast = 0,
cooldown = 9,
gcd = "spell",
school = "holy",
startsCombat = false,
handler = function ()
applyBuff( "consecration" )
end,
},
crusade = {
id = 231895,
cast = 0,
cooldown = 120,
gcd = "off",
talent = "crusade",
toggle = "cooldowns",
startsCombat = false,
texture = 236262,
nobuff = "crusade",
handler = function ()
applyBuff( "crusade" )
end,
},
-- Increases mounted speed by $s1% for all party and raid members within $a1 yards.
crusader_aura = {
id = 32223,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "holy",
talent = "auras_of_swift_vengeance",
startsCombat = false,
nobuff = "paladin_aura",
handler = function ()
apply_aura( "crusader_aura" )
end,
},
-- Strike the target for $<damage> Physical damage.$?a196926[ Reduces the cooldown of Holy Shock by ${$196926m1/-1000}.1 sec.][] |cFFFFFFFFGenerates $s2 Holy Power.
crusader_strike = {
id = 35395,
cast = 0,
charges = function() return talent.improved_crusader_strike.enabled and 2 or nil end,
cooldown = function () return 6 * ( talent.seal_of_order.enabled and buff.blessing_of_dusk.up and 0.9 or 1 ) * ( talent.fires_of_justice.enabled and 0.85 or 1 ) * haste end,
recharge = function () return talent.improved_crusader_strike.enabled and ( 6 * ( talent.seal_of_order.enabled and buff.blessing_of_dusk.up and 0.9 or 1 ) * ( talent.fires_of_justice.enabled and 0.85 or 1 ) * haste ) or nil end,
gcd = "spell",
school = "physical",
spend = 0.11,
spendType = "mana",
startsCombat = true,
handler = function ()
gain( buff.holy_avenger.up and 3 or 1, "holy_power" )
if talent.aspiration_of_divinity.enabled then addStack( "aspiration_of_divinity" ) end
if talent.crusaders_might.enabled then reduceCooldown( "holy_shock", 1 ) end
end,
},
-- Party and raid members within $a1 yards are bolstered by their devotion, reducing damage taken by $s1%.
devotion_aura = {
id = 465,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "holy",
talent = "auras_of_the_resolute",
startsCombat = false,
nobuff = "paladin_aura",
handler = function ()
apply_aura( "devotion_aura" )
end,
},
-- Talent: Reduces all damage you take by $s1% for $d.
divine_protection = {
id = 498,
cast = 0,
cooldown = function () return 60 * ( talent.unbreakable_spirit.enabled and 0.7 or 1 ) end,
gcd = "off",
school = "holy",
spend = 0.035,
spendType = "mana",
talent = "divine_protection",
startsCombat = false,
handler = function ()
applyBuff( "divine_protection" )
end,
},
-- Grants immunity to all damage and harmful effects for $d. $?a204077[Taunts all targets within 15 yd.][] Cannot be used if you have Forbearance. Causes Forbearance for $25771d.
divine_shield = {
id = 642,
cast = 0,
cooldown = function () return 300 * ( talent.unbreakable_spirit.enabled and 0.7 or 1 ) end,
gcd = "spell",
school = "holy",
startsCombat = false,
toggle = "cooldowns",
nodebuff = "forbearance",
handler = function ()
applyBuff( "divine_shield" )
applyDebuff( "player", "forbearance" )
end,
},
-- Talent: Leap atop your Charger for $221883d, increasing movement speed by $221883s4%. Usable while indoors or in combat.
divine_steed = {
id = 190784,
cast = 0,
charges = function () return talent.cavalier.enabled and 2 or nil end,
cooldown = 45,
recharge = function () return talent.cavalier.enabled and 45 or nil end,
gcd = "spell",
school = "holy",
talent = "divine_steed",
startsCombat = false,
handler = function ()
applyBuff( "divine_steed" )
end,
copy = 221883
},
-- Talent: Unleashes a whirl of divine energy, dealing $s1 Holy damage to all nearby enemies. Deals reduced damage beyond $s2 targets.
divine_storm = {
id = 53385,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "holy",
spend = function ()
if buff.divine_purpose.up then return 0 end
if buff.empyrean_power.up then return 0 end
return 3 - ( buff.fires_of_justice.up and 1 or 0 ) - ( buff.hidden_retribution_t21_4p.up and 1 or 0 ) - ( buff.the_magistrates_judgment.up and 1 or 0 )
end,
spendType = "holy_power",
talent = "divine_storm",
startsCombat = true,
handler = function ()
removeDebuff( "target", "judgment" )
removeDebuff( "target", "reckoning" )
if buff.empyrean_power.up then
removeBuff( "empyrean_power" )
elseif buff.divine_purpose.up then
removeBuff( "divine_purpose" )
else
removeBuff( "fires_of_justice" )
removeBuff( "hidden_retribution_t21_4p" )
end
if buff.avenging_wrath_crit.up then removeBuff( "avenging_wrath_crit" ) end
end,
},
-- Talent: Instantly cast $?a137029[Holy Shock]?a137028[Avenger's Shield]?a137027[Judgment][Holy Shock, Avenger's Shield, or Judgment] on up to $s1 targets within $A2 yds.$?(a384027|a386738|a387893)[ After casting Divine Toll, you instantly cast ][]$?(a387893&c1)[Holy Shock]?(a386738&c2)[Avenger's Shield]?(a384027&c3)[Judgment][]$?a387893[ every $387895t1 sec. This effect lasts $387895d.][]$?a384027[ every $384029t1 sec. This effect lasts $384029d.][]$?a386738[ every $386730t1 sec. This effect lasts $386730d.][]$?c3[ Divine Toll's Judgment deals $326011s1% increased damage.][]$?c2[ Generates $s5 Holy Power per target hit.][]
divine_toll = {
id = function() return talent.divine_toll.enabled and 375576 or 304971 end,
cast = 0,
cooldown = 60,
gcd = "spell",
school = "arcane",
spend = 0.15,
spendType = "mana",
startsCombat = false,
handler = function ()
local spellToCast
if state.spec.protection then spellToCast = class.abilities.avengers_shield.handler
elseif state.spec.retribution then spellToCast = class.abilities.judgment.handler
else spellToCast = class.abilities.holy_shock.handler end
for i = 1, min( 5, true_active_enemies ) do
spellToCast()
end
if legendary.divine_resonance.enabled then
applyBuff( "divine_resonance" )
state:QueueAuraEvent( "divine_toll", spellToCast, buff.divine_resonance.expires, "AURA_PERIODIC" )
state:QueueAuraEvent( "divine_toll", spellToCast, buff.divine_resonance.expires - 5, "AURA_PERIODIC" )
state:QueueAuraEvent( "divine_toll", spellToCast, buff.divine_resonance.expires - 10, "AURA_PERIODIC" )
end
end,
copy = { 375576, 304971 }
},
-- Talent: A hammer slowly falls from the sky upon the target. After $d, they suffer ${$387113s1*$<mult>} Holy damage$?s387196[ and enemies within $387200a2 yards will suffer $387196s1% of the damage taken from your abilities in that time.][, plus $s2% of damage taken from your abilities in that time.]
execution_sentence = {
id = 343527,
cast = 0,
cooldown = 60,
gcd = "spell",
school = "holy",
spend = function ()
if buff.divine_purpose.up then return 0 end
return 3 - ( buff.fires_of_justice.up and 1 or 0 ) - ( buff.hidden_retribution_t21_4p.up and 1 or 0 ) - ( buff.the_magistrates_judgment.up and 1 or 0 )
end,
spendType = "holy_power",
talent = "execution_sentence",
startsCombat = false,
handler = function ()
removeDebuff( "target", "reckoning" )
if buff.divine_purpose.up then removeBuff( "divine_purpose" )
else
removeBuff( "fires_of_justice" )
removeBuff( "hidden_retribution_t21_4p" )
end
applyDebuff( "target", "execution_sentence" )
end,
},
-- Talent: Blasts the target with Holy Light, causing $383921s1 Holy damage and burns the target for an additional ${$383208s1*($383208d/$383208t)} Holy Damage over $383208d. Stuns Demon and Undead targets for $385149d. Applies the damage over time effect to up to $s2 nearby enemies if the target is standing within your Consecration.
exorcism = {
id = 383185,
cast = 0,
cooldown = 20,
gcd = "spell",
school = "holy",
talent = "exorcism",
startsCombat = false,
handler = function ()
applyDebuff( "target", "exorcism" )
if target.is_demon or target.is_undead then applyDebuff( "target", "exorcism_stun" ) end
end,
},
-- Talent: Surround yourself with a bladed bulwark, reducing Physical damage taken by $s2% and dealing $205202sw1 Physical damage to any melee attackers for $d.
eye_for_an_eye = {
id = 205191,
cast = 0,
cooldown = 60,
gcd = "spell",
school = "physical",
talent = "eye_for_an_eye",
startsCombat = false,
handler = function ()
applyBuff( "eye_for_an_eye" )
end,
},
-- Talent: Call down a blast of heavenly energy, dealing $s2 Holy damage to all targets in the target area and causing them to take $s3% increased damage from your Holy Power abilities for $d. |cFFFFFFFFPassive:|r $@spelldesc343723
final_reckoning = {
id = 343721,
cast = 0,
cooldown = 60,
gcd = "spell",
school = "holy",
talent = "final_reckoning",
startsCombat = true,
toggle = "cooldowns",
handler = function ()
applyDebuff( "target", "final_reckoning" )
end,
},
-- Expends a large amount of mana to quickly heal a friendly target for $?$c1&$?a134735[${$s1*1.15}][$s1].
flash_of_light = {
id = 19750,
cast = function () return ( 1.5 - ( buff.selfless_healer.stack * 0.5 ) ) * haste end,
cooldown = 0,
gcd = "spell",
school = "holy",
spend = 0.22,
spendType = "mana",
startsCombat = false,
handler = function ()
removeBuff( "selfless_healer" )
end,
},
-- Stuns the target for $d.
hammer_of_justice = {
id = 853,
cast = 0,
cooldown = 60,
gcd = "spell",
school = "holy",
spend = 0.035,
spendType = "mana",
startsCombat = false,
handler = function ()
applyDebuff( "target", "hammer_of_justice" )
end,
},
hammer_of_reckoning = {
id = 247675,
cast = 0,
cooldown = 60,
gcd = "spell",
startsCombat = true,
-- texture = ???,
pvptalent = "hammer_of_reckoning",
usable = function () return buff.reckoning.stack >= 50 end,
handler = function ()
removeStack( "reckoning", 50 )
if talent.crusade.enabled then
applyBuff( "crusade", 12 )
else
applyBuff( "avenging_wrath", 6 )
end
end,
},
-- Talent: Hurls a divine hammer that strikes an enemy for $<damage> Holy damage. Only usable on enemies that have less than 20% health$?s326730[, or during Avenging Wrath][]. |cFFFFFFFFGenerates $s2 Holy Power.
hammer_of_wrath = {
id = 24275,
cast = 0,
charges = function() return talent.vanguards_momentum.enabled and 2 or nil end,
cooldown = function() return 7.5 * ( talent.seal_of_order.enabled and buff.blessing_of_dusk.up and 0.9 or 1 ) end,
recharge = function() return talent.vanguards_momentum.enabled and ( 7.5 * ( talent.seal_of_order.enabled and buff.blessing_of_dusk.up and 0.9 or 1 ) ) or nil end,
hasteCD = true,
gcd = "spell",
school = "holy",
spend = -1,
spendType = "holy_power",
talent = "hammer_of_wrath",
startsCombat = false,
usable = function () return target.health_pct < 20 or ( talent.avenging_wrath.enabled and ( buff.avenging_wrath.up or buff.crusade.up ) ) or buff.final_verdict.up or buff.hammer_of_wrath_hallow.up or buff.negative_energy_token_proc.up end,
handler = function ()
removeBuff( "final_verdict" )
if legendary.the_mad_paragon.enabled then
if buff.avenging_wrath.up then buff.avenging_wrath.expires = buff.avenging_wrath.expires + 1 end
if buff.crusade.up then buff.crusade.expires = buff.crusade.expires + 1 end
end
if talent.vanguards_momentum.enabled or legendary.vanguards_momentum.enabled then addStack( "vanguards_momentum" ) end
if talent.zealots_paragon.enabled then
if buff.crusade.up then buff.crusade.expires = buff.crusade.expires + 0.5 end
if buff.avenging_wrath.up then buff.avenging_wrath.expires = buff.avenging_wrath.expires + 0.5 end
end
end,
},
-- Talent: Burdens an enemy target with the weight of their misdeeds, reducing movement speed by $s1% for $d.
hand_of_hindrance = {
id = 183218,
cast = 0,
cooldown = 30,
gcd = "spell",
school = "holy",
spend = 0.1,
spendType = "mana",
talent = "hand_of_hindrance",
startsCombat = true,
handler = function ()
applyDebuff( "target", "hand_of_hindrance" )
end,
},
-- Commands the attention of an enemy target, forcing them to attack you.
hand_of_reckoning = {
id = 62124,
cast = 0,
cooldown = 8,
gcd = "off",
school = "holy",
spend = 0.03,
spendType = "mana",
startsCombat = false,
handler = function ()
applyDebuff( "target", "hand_of_reckoning" )
end,
},
-- Talent: Your Holy Power generation is tripled for $d.
holy_avenger = {
id = 105809,
cast = 0,
cooldown = 180,
gcd = "off",
school = "physical",
talent = "holy_avenger",
startsCombat = false,
toggle = "cooldowns",
handler = function ()
applyBuff( "holy_avenger" )
end,
},
-- Petition the Light on the behalf of a fallen ally, restoring spirit to body and allowing them to reenter battle with $s2% health and at least $s1% mana.
intercession = {
id = 391054,
cast = 2,
cooldown = 600,
gcd = "spell",
school = "holy",
spend = 3,
spendType = "holy_power",
startsCombat = false,
handler = function ()
-- brez.
end,
},
-- Judges the target, dealing $s1 Holy damage$?s231663[, and causing them to take $197277s1% increased damage from your next Holy Power ability.][]$?s315867[ |cFFFFFFFFGenerates $220637s1 Holy Power.][]
judgment = {
id = 20271,
cast = 0,
-- charges = 1,
cooldown = function() return ( talent.improved_judgment.enabled and 11 or 12 ) * ( talent.seal_of_order.enabled and buff.blessing_of_dusk.up and 0.9 or 1 ) end,
-- recharge = function() return ( talent.improved_judgment.enabled and 11 or 12) * ( talent.seal_of_order.enabled and buff.blessing_of_dusk.up and 0.9 or 1 ) end,
hasteCD = true,
gcd = "spell",
school = "holy",
spend = 0.03,
spendType = "mana",
startsCombat = true,
handler = function ()
removeBuff( "recompense" )
applyDebuff( "target", "judgment" )
gain( buff.holy_avenger.up and 3 or 1, "holy_power" )
if talent.empyrean_legacy.enabled and debuff.empyrean_legacy_icd.down then
applyBuff( "empyrean_legacy" )
applyDebuff( "player", "empyrean_legacy_icd" )
end
if talent.judgment_of_light.enabled then applyDebuff( "target", "judgment_of_light", nil, 25 ) end
if talent.virtuous_command.enabled or conduit.virtuous_command.enabled then applyBuff( "virtuous_command" ) end
if talent.zeal.enabled then applyBuff( "zeal", 20, 2 ) end
if talent.zealots_paragon.enabled then
if buff.crusade.up then buff.crusade.expires = buff.crusade.expires + 0.5 end
if buff.avenging_wrath.up then buff.avenging_wrath.expires = buff.avenging_wrath.expires + 0.5 end
end
end,
},
-- Talent: Focuses Holy energy to deliver a powerful weapon strike that deals $s1 Holy damage, and restores health equal to the damage done. Damage is increased by $s2% when used against a stunned target.
justicars_vengeance = {
id = 215661,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "holy",
spend = function ()
if buff.divine_purpose.up then return 0 end
return 3 - ( buff.fires_of_justice.up and 1 or 0 ) - ( buff.hidden_retribution_t21_4p.up and 1 or 0 ) - ( buff.the_magistrates_judgment.up and 1 or 0 )
end,
spendType = "holy_power",
talent = "justicars_vengeance",
startsCombat = true,
handler = function ()
removeDebuff( "target", "reckoning" )
if buff.divine_purpose.up then removeBuff( "divine_purpose" )
else
removeBuff( "fires_of_justice" )
removeBuff( "hidden_retribution_t21_4p" )
end
end,
},
-- Talent: Heals a friendly target for an amount equal to $s2% your maximum health.$?a387791[ Grants the target $387792s1% increased armor for $387792d.][] Cannot be used on a target with Forbearance. Causes Forbearance for $25771d.
lay_on_hands = {
id = 633,
cast = 0,
cooldown = function () return 600 * ( talent.unbreakable_spirit.enabled and 0.7 or 1 ) end,
gcd = "off",
school = "holy",
talent = "lay_on_hands",
startsCombat = false,
toggle = "cooldowns",
nodebuff = "forbearance",
handler = function ()
gain( health.max, "health" )
applyDebuff( "player", "forbearance", 30 )
if talent.liadrins_fury_reborn.enabled then
gain( 5, "holy_power" )
end
if azerite.empyreal_ward.enabled then applyBuff( "empyreal_ward" ) end
end,
},
-- Talent: Lash out at your enemies, dealing $s1 Radiant damage to all enemies within $a1 yd in front of you and reducing their movement speed by $s2% for $d. Damage reduced on secondary targets. Demon and Undead enemies are also stunned for $255941d. |cFFFFFFFFGenerates $s3 Holy Power.
radiant_decree = {
id = 383469,
known = 255937,
cast = 0,
cooldown = 15,
gcd = "spell",
school = "holyfire",
spend = 3,
spendType = "holy_power",
talent = "radiant_decree",
startsCombat = true,
usable = function ()
if settings.check_wake_range and not ( target.exists and target.within12 ) then return false, "target is outside of 12 yards" end
return true
end,
handler = function ()
removeDebuff( "target", "judgment" )
removeDebuff( "target", "reckoning" )
if target.is_undead or target.is_demon then applyDebuff( "target", "radiant_decree" ) end
if talent.divine_judgment.enabled then addStack( "divine_judgment", 15, 1 ) end
if talent.truths_wake.enabled or conduit.truths_wake.enabled then applyDebuff( "target", "truths_wake" ) end
end,
},
-- Talent: Interrupts spellcasting and prevents any spell in that school from being cast for $d.
rebuke = {
id = 96231,
cast = 0,
cooldown = 15,
gcd = "off",
school = "physical",
talent = "rebuke",
startsCombat = false,
toggle = "interrupts",
debuff = "casting",
readyTime = state.timeToInterrupt,
handler = function ()
interrupt()
end,
},
-- Talent: Forces an enemy target to meditate, incapacitating them for $d. Usable against Humanoids, Demons, Undead, Dragonkin, and Giants.
repentance = {
id = 20066,
cast = 1.7,
cooldown = 15,
gcd = "spell",
school = "holy",
spend = 0.06,
spendType = "mana",
talent = "repentance",
startsCombat = false,
handler = function ()
interrupt()
applyDebuff( "target", "repentance" )
end,
},
-- When any party or raid member within $a1 yards dies, you gain Avenging Wrath for $s1 sec. When any party or raid member within $a1 yards takes more than $s3% of their health in damage, you gain Seraphim for $s4 sec. This cannot occur more than once every 30 sec.
retribution_aura = {
id = 183435,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "physical",
talent = "auras_of_swift_vengeance",
startsCombat = false,
nobuff = "paladin_aura",
handler = function ()
apply_aura( "retribution_aura" )
end,
},
-- Talent: The Light magnifies your power for $d, granting $s1% Haste, Critical Strike, and Versatility, and $?c1[${$s4*$183997bc1}]?c2[${$s4*$76671bc1}][${$s4*$267316bc1}]% Mastery.
seraphim = {
id = 152262,
cast = 0,
cooldown = 45,
gcd = "spell",
school = "holy",
spend = function () return 3 - ( buff.the_magistrates_judgment.up and 1 or 0 ) end,
spendType = "holy_power",
talent = "seraphim",
startsCombat = false,
handler = function ()
applyBuff( "seraphim" )
end,
},
-- Slams enemies in front of you with your shield, causing $s1 Holy damage, and increasing your Armor by $?c1[${$132403s1*$INT/100}][${$132403s1*$STR/100}] for $132403d.$?a386568[ $@spelldesc386568][]$?a280373[ $@spelldesc280373][]
shield_of_the_righteous = {
id = 53600,
cast = 0,
cooldown = 1,
gcd = "off",
school = "holy",
spend = function () return 3 - ( buff.the_magistrates_judgment.up and 1 or 0 ) - ( buff.seal_of_clarity.up and 1 or 0 ) end,
spendType = "holy_power",
startsCombat = true,
usable = function() return equipped.shield, "requires a shield" end,
handler = function ()
removeBuff( "seal_of_clarity" )
removeBuff( "the_magistrates_judgment" )
applyBuff( "shield_of_the_righteous" )
end,
},
-- Talent: Creates a barrier of holy light that absorbs $<shield> damage for $d. When the shield expires, it bursts to inflict Holy damage equal to the total amount absorbed, divided among all nearby enemies.
shield_of_vengeance = {
id = 184662,
cast = 0,
cooldown = 120,
gcd = "spell",
school = "holy",
talent = "shield_of_vengeance",
startsCombat = false,
toggle = "defensives",
usable = function () return incoming_damage_3s > 0.2 * health.max, "incoming damage over 3s is less than 20% of max health" end,
handler = function ()
applyBuff( "shield_of_vengeance" )
end,
},
-- Unleashes a powerful weapon strike that deals $224266s1 Holy damage to an enemy target.
templars_verdict = {
id = function() return talent.final_verdict.enabled and 383328 or runeforge.final_verdict.enabled and 336872 or 85256 end,
known = 85256,
flash = { 85256, 336872, 383328 },
cast = 0,
cooldown = 0,
gcd = "spell",
school = "holy",
spend = function ()
if buff.divine_purpose.up then return 0 end
return 3 - ( buff.fires_of_justice.up and 1 or 0 ) - ( buff.hidden_retribution_t21_4p.up and 1 or 0 ) - ( buff.the_magistrates_judgment.up and 1 or 0 )
end,
spendType = "holy_power",
startsCombat = true,
handler = function ()
removeDebuff( "target", "judgment" )
removeDebuff( "target", "reckoning" )
removeStack( "vanquishers_hammer" )
if buff.divine_purpose.up then removeBuff( "divine_purpose" )
else
removeBuff( "fires_of_justice" )
removeBuff( "hidden_retribution_t21_4p" )
end
if buff.avenging_wrath_crit.up then removeBuff( "avenging_wrath_crit" ) end
if buff.empyrean_legacy.up then
class.abilities.divine_storm.handler() -- TODO: Check for resource gain?
removeBuff( "empyrean_legacy" )
end
if talent.executioners_will.enabled and debuff.execution_sentence.up and debuff.execution_sentence.expires - debuff.execution_sentence.applied < 16 then
debuff.execution_sentence.expires = debuff.execution_sentence.expires + 1
end
if talent.righteous_verdict.enabled then applyBuff( "righteous_verdict" ) end
if talent.divine_judgment.enabled then addStack( "divine_judgment", 15, 1 ) end
end,
copy = { "final_verdict", 336872, 383328 },
},
-- Talent: The power of the Light compels an Undead, Aberration, or Demon target to flee for up to $d. Damage may break the effect. Lesser creatures have a chance to be destroyed. Only one target can be turned at a time.
turn_evil = {
id = 10326,
cast = 1.5,
cooldown = 15,
gcd = "spell",
school = "holy",
spend = 0.105,
spendType = "mana",
talent = "turn_evil",
startsCombat = false,
handler = function ()
applyBuff( "turn_evil" )
end,
},
-- Talent: Lash out at your enemies, dealing $s1 Radiant damage to all enemies within $a1 yd in front of you and reducing their movement speed by $s2% for $d. Damage reduced on secondary targets. Demon and Undead enemies are also stunned for $255941d. |cFFFFFFFFGenerates $s3 Holy Power.
wake_of_ashes = {
id = function() return talent.radiant_decree.enabled and 384052 or 255937 end,
cast = 0,
cooldown = function() return talent.radiant_decree.enabled and 15 or 45 end,
gcd = "spell",
school = "holyfire",
spend = function() return talent.radiant_decree.enabled and 3 or ( -3 + ( buff.holy_avenger.up and -6 or 0 ) ) end,
spendType = "holy_power",
talent = "wake_of_ashes",
notalent = "radiant_decree",
startsCombat = true,
usable = function ()
if settings.check_wake_range and not ( target.exists and target.within12 ) then return false, "target is outside of 12 yards" end
return true
end,
handler = function ()
if target.is_undead or target.is_demon then applyDebuff( "target", "wake_of_ashes" ) end
if talent.divine_judgment.enabled then addStack( "divine_judgment", 15, 1 ) end
if conduit.truths_wake.enabled then applyDebuff( "target", "truths_wake" ) end
end,
copy = { 384052, 255937 }
},
-- Calls down the Light to heal a friendly target for $130551s1$?a378405[ and an additional $378412s1 over $378412d][].$?a379043[ Your block chance is increased by$379043s1% for $379041d.][]$?a315921&!a315924[ |cFFFFFFFFProtection:|r If cast on yourself, healing increased by up to $315921s1% based on your missing health.][]$?a315924[ |cFFFFFFFFProtection:|r Healing increased by up to $315921s1% based on the target's missing health.][]
word_of_glory = {
id = 85673,
cast = 0,
cooldown = 0,
gcd = "spell",
school = "holy",
spend = function ()
if buff.divine_purpose.up then return 0 end
return 3 - ( buff.fires_of_justice.up and 1 or 0 ) - ( buff.hidden_retribution_t21_4p.up and 1 or 0 ) - ( buff.the_magistrates_judgment.up and 1 or 0 ) - ( buff.seal_of_clarity.up and 1 or 0 )
end,
spendType = "holy_power",
startsCombat = false,
handler = function ()
removeBuff( "recompense" )
if buff.divine_purpose.up then removeBuff( "divine_purpose" )
else
removeBuff( "fires_of_justice" )
removeBuff( "hidden_retribution_t21_4p" )
removeBuff( "the_magistrates_judgment" )
removeBuff( "seal_of_clarity" )
end
gain( 1.33 * stat.spell_power * 8, "health" )
if conduit.shielding_words.enabled then applyBuff( "shielding_words" ) end
end,
},
} )
spec:RegisterOptions( {
enabled = true,
aoe = 3,
nameplates = true,
nameplateRange = 8,
damage = true,
damageExpiration = 8,
potion = "spectral_strength",
package = "Retribution",
} )
spec:RegisterSetting( "check_wake_range", false, {
name = "Check |T1112939:0|t Wake of Ashes Range",
desc = "If checked, when your target is outside of |T1112939:0|t Wake of Ashes' range, it will not be recommended.",
type = "toggle",
width = 1.5
} )
spec:RegisterPack( "Retribution", 20221101, [[Hekili:T3twVnoZr(BXyb0y9LbA15y7SwcytWIfFdwmpeNG8qqefnzljgtrQWd7Xlm0V9uDZR(QA2uI2tcY8YapIDxD11DvD1KRNS(pU(bF3mY6VnD80PtMmEYOX3o72zZx)q2RhjRF4OR3tU7G)iY9a8V)bswsWJ5zbXr0N9AySRpfgPX5jEWZx)WJ5bHz)A06h1c4X3aJ9iXB93Uz86h2h47tkgkj1Jo7JjXBdcba56rxJ0rhtiEXhE0n73S8)CBijDVxI72SphSDjSKHpge5p6yEAwEiXHKKFKoP3ER(rphh6MbWZjno8zsu2PVQdUUjEUreNS4KeymuyN5gc)1OTbrUHoWiFkokiA3GYFoLK4ECFWb9q7raltHr7eV1jn)Wbss7JZnpl)qu7J7LGOmBGx6Xe4V0pU09bKqF6OakYoIBKh50xp91)JtB(F(oXlpJ4FAd5zsYRN2KfCGa)7E4FaifNCAtqk8Np7ge6cl3O6faaBc5X8Ni8)INByOtX)1jmin7ZurOLEXXH(XVeL2(qjPoBtCocta2mu2Y1xL4g47qOSYrU((PJiFhgD6BVj)75hv)TGO7Vt3VUA24HdUUK3sy0akEKc)xcqCguHXAE2OeYb3GO07VBaivd7Hm3KDKS0r(bphaIuPar7W9lE7nebQAql9Gg4oCqbihr5fGiQJFaz1T2s7O)8ZekPZhypB3QBlqjvLpvglYp2(cTJebQdW(mLkfvjWvZLxEmM(luuGTeUuHoQu6lWK2ZwC2V7LKN66tXMbc))0mWa0YjJF7TTb72N5uryMUqZIbiziDuPo)TC)DhkvMf5msdy1YPV9M1IvGWYnl0jTPhz2gaAfHXX(mH3lA)pCWvOsOil(fBT8ZmRn0X5ea2X8da75lNW9R7cJF0nu4N4xkCRV84Pg7rf66O733EZgvYfthoqqMz1eezgtwSXgNSfBSXjBXgDDLSyZpU8uItqg5qPchicfsNcyx2bKWsZCCtEmaDveNDs565fhg6EKT6BHTscjLs0VIj7bd(yMlfsm5trfpmIO4Y4gf7h8)t8D8jGCOxH5H2NwZwknyxqy)B1ySnybjABmentsky)opYzhevaa0Fqidmsaqzu)To)9C3iqSdiQph41)i0mRqOyi2Gx2tcpqxXJXVqsC8sEfGz)ZUStwZ3n5PdXGjaFWXLZZXjUEbzV27iJDSRdUEUpMaM82tizohYtd8(bHjBDZdZEfu0ZPwGoqCtbTCMsEPH1YLrbjopXc)eIRp1HhygpnLeAZCsFkp8jQE2l2A7lj4aSJ8jF3MrFGCio5vQ1UJUmtkrwzek9OlSlacwMZ(44NSAkUHpdzj5d2stPoJCpCmmyBGDMK3faA1oXj0)teWBCosCtSI(bKn)up3ehqFmdI1mcjuaXzXIibKTGau9D27g5dSapWj82p79QhyLPmsjQBDiUXyMGc4XzNBssCgbce17jlzxzXeNNIiqSOqEDhcsTc9aXoyzC2Lh4tJfO0yNnZKsksPS7TG(fjHglBkKU6wsJRn0H4mxNKVv2F82thmfO(WMmI540M5bC5S9GTcxMkqWbivBKqKeN3E6eRcai9f3Kdn7pftmdUss72MvyxOlnypWPTZJU(7UqpnRyMWQdztcgvbNnFb3yQMFZdnJ2i61IlflQY9XHVw41A1Y5dOjvrtpJ)xNb5cc)8kAC(5reiuGDGqpqQp4UdYkGk30K(WqX5oDqZuE2nAxUBIFQZHy6qZpmqFwG1zhYGedNjjnPgY)RveKL0mwVsQCeqEmylqnWQgBnLD8q9KUsoaLMXVbxGqYkOyiCbWxyeyOjmm(f9JGFlYk)szUU7pUB54bnR09abgnnkrVAdUgtyA5yfH2HQEyrilsuwmrQB1lsTe(D86eqfFkwZQFodcsF0trWApCi3gcrdANNpUkeiUO4MxVQkDP4yaRgZVxwUqRGxHT1kzlGGo4slvZQ5mrCmMnpgXTP37sZEJL3fpP5SP68L0GVIklRZSx)Z)nyvlbKFca1HKurfl6MOSgmvwwmxxMbxJ8Okjyqyy0b3V32ohpj7H1RU2Agna)HsOakfIJClsna1C0jbwv)75fKqNcUn6qFbCSYsvhgDQYkGsbB2BgOT)cq6Am1xUtGKOJJCzfO4YjDM5ClgGV6dW5PO0Qhbp(mI1FlpnRm3sV4i)8akCoMNSJfwdvTgFD5PVZ41rbYn(sZxQURuvcgiyFDYG29jl5sgFLBrf9mfS6enwGKDUKi05jzoeNqu4diHflmxr8LhN4bLGomY3Jt8cszHLw8JoKiYHacKtb1yDukXlPQ(s4if34uTdxEQalRC6iBpTXlfEWqy63lPk4Z4C0DULGSaqyv)NUafBkvppCWN)znhlac9ODPAuhpQ2bTj4(7NmghvunwxNjbxWc4Zxs(LoztXxJdOwCfuYFypLDglGckEaKTMlJbMtNTb0m1oAeaLkAqYr0mqHparAq1Zgbj9cmbkakGMBiyCE0nl4nxFp9Sve2Dnz1iti4JI9xeMgetTLZQzC10fHNBGVWBgbXWHvNdyHg)pefBR5R4du9GW55EZXN4fzXxpx4FFTFJ43RMrV8z3Ka65buw41uhp3u2be85NDdZjlngYFPrDYHJVMqCJkyUScfPj2RI8VkHaef4X4uXAivJuYCV2swDIPY9mzrZXDkRfAKPAmK5UKuklbuTTqal0C1CyViHb1Z9q6Klx0zxX8mgvkfJfjabk2naNHixZKYQfmRvFHRMWxQQoRlZMUUoGyW1w1Wf1BD2PmqrSH6Prj0kEgLrpdPesNPpY8h7jplUiQZcKDdp1GUxQSymIZyrPYTAmASKUUw5uIq389K1wgC(I9dD(aHcVrz5YIj33s92w0uY0kJx24LVmAIlHXjVxnnoLnkooBcmthEgfA((spGmrfHbyD6biIO0MmiKEympts8d8Ye85)V6cD)uQ69wQIpYOMwqBzNt(9ADLDLp5JHd4JbQUyxnyQe(RdTqtfMVAA5zV(yCEKVdRbFqpmhdLSvomIBrWfJPvxuvnFNJUjU7OThwzun8NItrynn8yHNvjDmLpCeH1)YYgxVJuCtfdrWctLFwBWW985EWA8u9HsEwX(kX7Bpy42cnPLq0vwrmc9hybEnlMXTqlhlvFABRXqh5Wtr4WAKLQraLZODrTsO6juD5EaNS4ScD6ICuPt6PvbYURI3jVb0JP1sxpAxSZSgicWW2JHbPKHDrTZoFdDapTbNSGHCDPS4EIBiW7p6LbANvPF2E)NGvEdureo(cJsjXOm0x)R4pRhrG(VpfsTlS3ZKfyhrgzuyhzfkgS(biHeAt8vEZLgpB8OjRF4f3eQfS01p8N)V)dF7x)2)7V90MtB(J0RgtWHJXjzN2SLEbz(udG)0PnjeiOVe6nQjnMEvACZZIp4YUInaFhIymD0PV()bsuN2mfa4VpocwC2J)eAKHayZInnGrKiA(9(WaVEY3hIUc6TExbE9pTJWw1TJe414xczfMHsFKIyvL(inaSvyU(9GqCOsOVWZWG7c9WTYnVeiR9(3nO1lCrey3JCXV0cxunypm2P6iXwZB6v6pc06rAeYk0lC4jJLaUMOlQGSMhPc2tFTf7H(ewJO3nJHYk79prgzfUqICRuJ6lIz3OhtKWw0BZvfcJoaubdSvq(sCPScYdOJUiUqkUry3zv8w5Fvbg1rN7V)YZYoV6Fje0vO3KqE)D)mHkO8NIsZpszQ0fPQdYz3WzaeN28xG)u92R9x)VoTbao9wr7hKYaEduVtpIxgHQe2wLRcMO8DwHIkxTcti4mzxkT7m9txSBxdlQAR7OUCQJX6fQpTSGbC(Q(kbzHcc3rW2zlwFaKG5YXmCjI3ZLD0CUB8wnvxN2z3mv)dWnvpAG79jSg7CIvFe7yyF9aS1ftFI9ioxolH43Fhv)lFoJ9lMEHwBLZ68s49iWQh59iRWzsrrGwVW7)qW0ZM33Qhc(go)t9HtIEuiqwra)Ax8jLqNuoR6)jAn6FkLSyZLwrd9q99G28XgvULQdLnIA30hqcQRxmYGa7Euc69e7LdP59kjie9SlU41kfmSpjotEpdmbd49PGZ7d(F6R)6HQK)VPjRF6jQrv5w)a7VOV29AoSj4)9n2BZVsOT(3T(bVe6BfOa31p0CiGN2SeewoT5T3GL70gnNlm7rsty(PndpTzWPny9cvXS01puvVk)a0r60bl2ho0ZiC9d1zRToB93MIUrUcml125EvGlWintVz7NMrHZ1lGNq7kCAZ9N2CBZwtT7UOBJzOBJwpBQI1eT1Ry4UX2V60Mvqyktg3GJsNSpfbNBLaZ9GaWu2kAYWbBaxZJvABIJIngwJCaIzniSq)7qr3fDeDVsV8DbE2W5LJlLtwM)wQvQbumv9TauXmvBdigZy2y9pUb02jYE9fk1w8a82Aaq2ctedTMLUIAkSnol3G0IvCCEU2CIY3)IjZb4CyEHc6wAc7b2h6KQLWvfIwCyA1COO5nOO51kguhRc8g52w7sdgXCNhGH)sbcDzsMtBvY0c9f02xJTelemOP0gBAxN2KTTO52eK6uBYTZvHWcfvbeuEu2RtyTk45Bv9wRSQsjbZAcbOPHRu)nwFYX2b8UFS37)DOiKyB1XuKMuT1fAzOMLTQR8OagqhmiBiZq2guwrDwZkiRKYwj8qX0AYsVbLjS4GW8FZbE6yXd2OR4oEubxxRe10DELgUgZ51uPl94EgVGt9pQ0TEcsS2l5mbpcHRuKry81206NYHg8njgDXWDl1HM9R010OBwOZTvPpbDUkMDEUk0hC)5aj(5i3MGkoO4iJIKegLu2Z5zW5XTIPY5nWtVJxJtgvf14MoMFSI9zO8qNiawHUnKFGz0xe6S2Lrx6C03r6jbhlMwNFxD3S(fVPU1LNLv096wGWCkoDpAKktc6IsbCMCxRrxx7T0Iaigyz8dflClwkUVoaN2clyGnrfuSMdlt5snOLvc5EAKzjutpZP8z6vwuXMd9ffsNqMcN46YNZkGWvYdMctDhvzUciT2UlLrb2wpR0GLnVFTnxYclejqcSg16sLIxJBC5xG1sgGMJn6IxJ1sJEb2OlEzwln6VGIjSxP1sJ(g(rR5v)TIbXgZng5VDkWdKiwPoIhJfn(0fn4DX70EZSDJV15RtLKUwD0mzPbVBwGzfTbpLw1wny3Jer5kAGBlMtJQ6LQNzdv9NQm)RTEo4kpbHbw9IWF9dt0Al4b5xp(0bAS4v9FsVu)r1LfqsuMLYPzvqJk16mVCtNmVCBNmVCxNmVOKIxPtdxS3z(nW2Wy0LrxD0uLOJ6luFPGqzklcVA9Xm1q5pf4TbGxNFyfo9y1K009IR1LHy1oq6LU)hRv1XvyTmwOlt0kmw)lO)FqiocYOlD0k8pa9D6)h6Eyw9EWacPlt3Q9b(NcGp09rJ(IbeYuEM6)cc8HUhAKNqqgDj5wH)A(Od8dc51Hj15vRbZ1(rkqYWzPNrP(YYqnLmjPRFbRtNxXZH8N1aoHg5NuNOVcqe(ohW57v4NPtxoCYsVx1F1d48w18B0jkBBVKBO(bqGtOrZdPGs2OB5wq8JIa3Mq6buqiB3ReeyFKe4ag6qOGv2muj1r7NpbokL(NtbOS9GcaQ(vvObyAEgfqYkMfac9dTaiGZ)LwGMxdxio4tQjxDSVkdmS5oTHfOCJbyPdOxQpr73GbUGE0)CkaXItc9lVGUWKm)zAavlV2pa(Irrr9Az6(mo0G(AFkfy61809TDGl(fDpLcmSaEu)KpOJQPXeFroyswjRqsnqLIeyrTi)vHOVDXSIZhtRN3fKgZCBoY551YekOpDVkKNt9xtcPKkMz9j7UQUC6fLJTPWG6plTRRgyZrK2LZNEOEyxuCEB6Im(Qpz8OmlhJUgUvSOMcJOMruCI3wFwYD98v1EKZJfo2br5igx1(d(CrhyPn8toJhfcMSvviFw(o3rsOBo(HvY91zOI0Q5ikNwrTnPBIfB1aXtDwrZQPfgu0UhIhLOahHxsHTHXlUx7Az3ANw2sRpU)cQxbUI0Vc2F48vhgMzRv16gAdQ1KftEKrq4yL2onzjw3m8E3juMoHhQTAjBeMeC13rJnMH0)HaPN49C5ViAFAnRK1nNmPMswhdUFtjCbdu9U5K(xH5e5khRf9QzlAo58bMA8TkQQYR0xgEuEelCVKqzXtAsV0gzFR7nS3T2GRns6IZxMMt2f7X3ZP(3wpwHl1jqb18EeM7Cd1B)DsHBm16bVOBXPj1ypvwgyE3mjQial)y5UyvRqHoNmCg)MjrwmjeQpae7cWWydCnUTZQTAv70riJFRjfmaPk5Z8L2Z8bDsiNhB49Qn6wiqveFBotPi4h)IU3nYc2k1(gsUApiSn0wIkJe2QEKz27AhqwTkF58M2CL4llJaRqC9c7Qs6WmfcYGUJWtFNeYWOJ2mhJerB3)2SqtRDbCHjTDVG4zT(V0974m8DCstVEZKjOkQ4Dv3pv1mQQzRmKLyYp1H(NADOgfi5xK6f5Gi0RvvPH0K1svJwiwZb8i91NUf2ThdTrXQeOm)b2RISX(6bALBKPsjoysBEOaoI0UBdmnanOjxTESUNvTVJTNQyUS6QXi0yxAUfAI83UEbQW5uI0Ow4JCDm8vc3FpK7jDFZGStgQi7iBWUb2jNXDQrY35ctToU5lIW1wtdhOTNXPucnm7H8haLRYDcaVa44LAqtr7EVVbwyNpU96K439ed6KkSxdx0efwIzc)pQlsIuLRrAb(jcMFm2c8gUAgfoPo)B1JWz4yS56f7g6oEJP75qHOm)pGqsLwgUqAqX)EUCu6Ru0zgQHo)qxqSt2Bya3zTC5Xn6p2yTzS5e7WvJpd)7Lsc2DFUvYPsqcaRKpNNxWoALSJUNm48WoBK4EjKPw)8MFH7lXSJslm0ABwTs2aF)nUH2SW2BVr0LDlUHTptI5OURZ00VT9NpAl7(9F6t9Ie7Sosi6XpMNTpgsq8HGd)E2VS(F8]] )