diff --git a/Cataclysm/APLs/PriestShadow.simc b/Cataclysm/APLs/PriestShadow.simc new file mode 100644 index 000000000..d0622c86a --- /dev/null +++ b/Cataclysm/APLs/PriestShadow.simc @@ -0,0 +1,44 @@ +# Opener +actions.precombat+=/mind_spike +actions.precombat+=/shadow_word_pain +actions+=/shadowfiend,if=!pet.alive +actions+=/shadow_word_pain,if=!ticking&target.debuff.shadow_word_pain.remains=1&buff.evangelism.stack=5 +actions+=/mind_blast,if=buff.shadow_orb.react +actions+=/devouring_plague,if=!ticking&target.debuff.devouring_plague.remains=2 +actions+=/run_action_list,name=st + + +# Main Rotation +actions.st+=/mind_blast,if=cooldown.mind_blast.remains=0&target.debuff.vampiric_touch.up +actions.st+=/mind_flay,if=buff.mind_flay.stack<3&target.debuff.shadow_word_pain.remains>1 +actions.st+=/devouring_plague,if=target.debuff.devouring_plague.remains6&target.debuff.devouring_plague.remains>6&target.debuff.shadow_word_pain.remains>6) +actions.st+=/dispersion,if=mana.pct<15 +actions.st+=/pain_suppression,if=health.pct<50&!buff.dispersion.up + +# AoE Rotation +actions.aoe+=/mind_sear +actions.aoe+=/shadow_word_pain,if=target.debuff.shadow_word_pain.remains<3 +actions.aoe+=/vampiric_touch,if=target.debuff.vampiric_touch.remains<3 +actions.aoe+=/devouring_plague,if=target.debuff.devouring_plague.remains<3 +actions.aoe+=/mind_blast,if=buff.shadow_orb.react + +# Talent-Specific Actions (Adjust based on your talent choices) +actions.st+=/mind_spike,if=talent.mind_spike.enabled&buff.archangel.up + +# Fillers +actions.st+=/mind_flay,if=buff.evangelism.stack<5 + + +# Precombat Buffs +actions.precombat+=/power_word_fortitude,if=buff.power_word_fortitude.down +actions.precombat+=/inner_fire diff --git a/Cataclysm/APLs/RogueAssasination.simc b/Cataclysm/APLs/RogueAssasination.simc index c04e17619..ddfb8125a 100644 --- a/Cataclysm/APLs/RogueAssasination.simc +++ b/Cataclysm/APLs/RogueAssasination.simc @@ -1,39 +1,47 @@ Smufrik assassination rogue actions.precombat=tol_vir_potion,if=!stealthed.all +actions.precombat+=/variable,name=trinket_sync_slot,value=1,if=trinket.1.has_stat.any_dps&(!trinket.2.has_stat.any_dps|trinket.1.cooldown.duration>=trinket.2.cooldown.duration) +actions.precombat+=/variable,name=trinket_sync_slot,value=2,if=trinket.2.has_stat.any_dps&(!trinket.1.has_stat.any_dps|trinket.2.cooldown.duration>trinket.1.cooldown.duration) actions=stealth,if=!stealthed.all actions+=/garrote,if=stealthed.all actions+=/slice_and_dice,if=!buff.slice_and_dice.up actions+=/call_action_list,name=st +actions+=/variable,name=regen_saturated,value=energy.regen_combined>settings.regen_threshold actions+=/variable,name=single_target,value=spell_targets.fan_of_knives<2 actions+=/variable,name=cold_blood_casted,value=1,if=prev_gcd.1.cold_blood actions+=/variable,name=priority_rotation,value=priority_rotation +actions+=/variable,name=not_pooling,if=(debuff.shiv.up|cooldown.thistle_tea.full_recharge_time<20)|(buff.envenom.up&buff.envenom.remains<=2)|energy.pct>=80|fight_remains<=90,value_else=|debuff.shiv.up|cooldown.thistle_tea.full_recharge_time<20)|energy.pct>=80 + actions+=/expose_armor,if=settings.maintain_expose&combo_points.current>=4 actions+=/kick,if=!stealthed.all actions+=/envenom,if=talent.cut_to_the_chase.enabled&buff.slice_and_dice.up&buff.slice_and_dice.remains<5&combo_points>=2 actions+=/recuperate,if=health.pct<30&combo_points>=3 actions+=/call_action_list,name=cds actions+=/shiv,if=debuff.dispellable_enrage.up -actions+=/call_action_list,name=defensives +actions+=/call_action_list,name=defensives,if=toggle.defensives -actions.st+=/variable,name=use_filler,value=combo_points.deficit>1|!variable.single_target +actions.st+=/variable,name=use_filler,value=combo_points.deficit>1|variable.not_pooling|!variable.single_target actions.st+=/garrote,if=stealthed.all -actions.st+=/rupture,if=buff.overkill.up&dot.rupture.remains6&dot.rupture.remains1&buff.overkill.up&refreshable&target.time_to_die-remains>20|combo_points>1&target.time_to_die>6&refreshable actions.st+=/berserking,if=buff.bloodlust.up|target.time_to_die<20 actions.st+=/envenom,if=target.health.pct>35&combo_points>4&energy>80&buff.envenom.up|target.health.pct>35&buff.envenom.down&energy>55&combo_points>4 actions.st+=/fan_of_knives,target_if=!dot.deadly_poison_dot.ticking&(!priority_rotation|dot.garrote.ticking|dot.rupture.ticking),if=variable.use_filler&spell_targets.fan_of_knives>=5 -actions.st+=/fan_of_knives,if=variable.use_filler&(!priority_rotation&spell_targets.fan_of_knives>=5) -actions.st+=/mutilate,cycle_targets=1,if=!dot.deadly_poison_dot.ticking&(combo_points.deficit>1|!variable.single_target)&spell_targets.fan_of_knives=2 +actions.st+=/fan_of_knives,target_if=!dot.deadly_poison_dot.ticking&(!priority_rotation|dot.garrote.ticking|dot.rupture.ticking),if=variable.use_filler&spell_targets.fan_of_knives>=3 +actions.st+=/mutilate,cycle_targets=1,if=!dot.deadly_poison_dot.ticking&(combo_points.deficit>1|variable.not_pooling|!variable.single_target)&spell_targets.fan_of_knives=2 + actions.st+=/mutilate,if=variable.use_filler&((target.health.pct>35)|(target.health.pct<35&!settings.backstab)) actions.st+=/backstab,if=settings.backstab&variable.use_filler&target.health.pct<35 actions.st+=/envenom,if=target.health.pct<35&combo_points=5&energy>65 -actions.cds+=/vendetta,if=cooldown.vandetta.charges=2&target.debuff.garrote.duration>6 -actions.cds+=/cold_blood,if=buff.vendetta.up|target.time_to_die<=120 +actions.cds+=/vendetta,if=cooldown.vendetta.charges=2&target.debuff.garrote.duration>6 +actions.cds+=/cold_blood,if=debuff.vendetta.up&combo_points=5|target.time_to_die<=120& combo_points=5 actions.cds+=/vendetta,if=target.time_to_die>30&buff.slice_and_dice.up&debuff.rupture.up actions.cds+=/vanish,if=energy<50&!buff.stealth.up&!buff.overkill.up +actions.cds+=/synapse_springs,if=buff.swordguard_embroidery.down&debuff.vendetta.up + actions.cds+=/call_action_list,name=misc_cds actions.misc_cds+=/blood_fury,if=debuff.vendetta.up @@ -41,7 +49,8 @@ actions.misc_cds+=/berserking,if=debuff.vendetta.up actions.misc_cds+=/tol_vir_potion,if=buff.bloodlust.react & target.time_to_die<=120 actions.misc_cds+=/unsolvable_riddle,if=buff.vandetta.up|target.time_to_die<120&buff.bloodlust.up actions.misc_cds+=/swordguard_embroidery,if=buff.vandetta.up -actions.misc_cds+=/synapse_springs,if=buff.swordguard_embroidery.down&buff.vandetta.up +actions.misc_cds+=/synapse_springs,if=buff.swordguard_embroidery.down&debuff.vendetta.up actions.defensives+=/cloak_of_shadows,if=health.pct<=20&!buff.cloak_of_shadows.up actions.defensives+=/evasion,if=health.pct<=35&!buff.evasion.up +actions.defensives+=/recuperate,if=health.pct<30&combo_points>=3 diff --git a/Cataclysm/APLs/RogueSubtlety.simc b/Cataclysm/APLs/RogueSubtlety.simc index f8667e2b2..33ba30393 100644 --- a/Cataclysm/APLs/RogueSubtlety.simc +++ b/Cataclysm/APLs/RogueSubtlety.simc @@ -1,38 +1,38 @@ -Smufrik Rogue Subtlety +# Opener +actions.precombat+=/slice_and_dice,if=combo_points>=5 -actions+=/call_action_list,name=init -actions+=/call_action_list,name=opener,if=target.time_to_die>0&!dot.rupture.ticking -actions+=/run_action_list,name=st +actions+=/premeditation +actions+=/ambush,if=stealthed.all +actions+=/rupture,if=combo_points>1&debuff.rupture.down +actions+=/hemorrhage,if=debuff.hemorrhage.down +actions+=/shadow_dance,if=buff.shadow_dance.down +actions+=/shadowstep +actions+=/ambush,if=buff.shadowstep.react +actions+=/recuperate,if=combo_points>1&buff.recupate.down +actions+=/ambush,if=combo_points<5&stealthed.all +actions+=/eviscerate,if=combo_points>=5 +actions+=/run_action_list,name=mr,if=buff.find_weakness.up +actions+=/run_action_list,name=sr,if=buff.find_weakness.down -actions.init+=/variable,name=rupture_maintain,value=combo_points.current=5&buff.master_of_subtlety.up -actions.init+=/variable,name=eviscerate_use,value=combo_points.current=5&!variable.rupture_maintain -actions.init+=/variable,name=recuperate_maintain,value=buff.energetic_recovery.down -actions.init+=/variable,name=find_weakness_apply,value=buff.vanish.up|buff.shadow_dance.up +# Main Rotation (Find Weakness Uptime) +actions.mr+=/eviscerate,if=combo_points>=6&target.debuff.rupture.remains<3 +actions.mr+=/eviscerate,if=buff.shadow_dance.up&combo_points>=5 +actions.mr+=/rupture,if=combo_points>=5&target.debuff.rupture.remains<3 +actions.mr+=/vanish,if=buff.find_weakness.remains<=3 +actions.mr+=/premeditation,if=buff.vanish.up +actions.mr+=/ambush,if=buff.vanish.up -actions.opener+=/tricks_of_the_trade -actions.opener+=/slice_and_dice,if=combo_points.current=5 -actions.opener+=/potion,name=potion_of_the_tol_vir -actions.opener+=/stealth -actions.opener+=/premeditation -actions.opener+=/shadowstep -actions.opener+=/ambush -actions.opener+=/rupture,if=combo_points.current=5 -actions.opener+=/hemorrhage -actions.opener+=/backstab,if=combo_points.current<4 -actions.opener+=/slice_and_dice,if=combo_points.current=5&buff.slice_and_dice.down -actions.opener+=/recuperate,if=combo_points.current=5&buff.slice_and_dice.up +# Standard Rotation (Find Weakness Downtime) +actions.sr+=/eviscerate,if=combo_points>=6&target.debuff.rupture.remains<3 +actions.sr+=/rupture,if=combo_points>=5&target.debuff.rupture.remains<3 +actions.sr+=/hemorrhage,if=target.debuff.hemorrhage.remains<3 +actions.sr+=/recuperate,if=buff.recuperate.down&energy.time_to_max>2.5 +actions.sr+=/preparation,if=(buff.vanish.down&cooldown.vanish.remains<5)|(buff.shadow_dance.down&cooldown.shadow_dance.remains<5) +# Filler +actions.sr+=/backstab,if=combo_points<5 -actions.st+=/rupture,if=variable.rupture_maintain -actions.st+=/slice_and_dice,if=buff.slice_and_dice.down -actions.st+=/recuperate,if=variable.recuperate_maintain -actions.st+=/preparation -actions.st+=/tricks_of_the_trade -actions.st+=/shadow_dance,if=energy.current>80 -actions.st+=/shadowstep,if=buff.shadow_dance.up&combo_points.current<5 -actions.st+=/premeditation,if=buff.vanish.up|buff.shadow_dance.up -actions.st+=/ambush,if=variable.find_weakness_apply -actions.st+=/hemorrhage,if=debuff.hemorrhage.down -actions.st+=/eviscerate,if=variable.eviscerate_use -actions.st+=/backstab -actions.st+=/hemorrhage,if=!action.backstab.usable -actions.st+=/expose_armor,if=settings.maintain_expose&combo_points.current>=4 +# Cooldowns (Shadow Dance and Vanish) +actions.cooldowns+=/shadow_dance,if=cooldown.shadow_dance.ready +actions.cooldowns+=/vanish,if=cooldown.vanish.ready&energy.time_to_max>2.5 +actions.cooldowns+=/shadowstep,if=buff.shadow_dance.up +actions.cooldowns+=/ambush,if=buff.shadow_dance.up|buff.stealth.up diff --git a/Cataclysm/APLs/WarlockAfflictionBeta.simc b/Cataclysm/APLs/WarlockAfflictionBeta.simc new file mode 100644 index 000000000..0f09e4217 --- /dev/null +++ b/Cataclysm/APLs/WarlockAfflictionBeta.simc @@ -0,0 +1,45 @@ +# Opener +actions.precombat+=/volcanic_potion +actions.precombat+=/fel_armor,if=buff.armor.down +actions.precombat+=/summon_felhunter,if=!pet.alive +actions.precombat+=/soul_harvest,if=soul_shards<3 +actions+=/shadow_bolt,if=debuff.shadow_embrace.down & target.health.pct > 25 +actions+=/group_curse,if=debuff.my_curse.down&curse_grouped +actions+=/solo_curse,if=debuff.my_curse.down +actions+=/haunt,use_off_gcd=1,if=!target.debuff.haunt.up|dot.haunt.remains1 + +# Single Target Rotation +actions.st+=/summon_felhunter,if=!pet.alive +actions.st+=/group_curse,if=debuff.my_curse.down&curse_grouped +actions.st+=/solo_curse,if=debuff.my_curse.down +actions.st+=/corruption,if=debuff.corruption.remains25 +actions.st+=/drain_soul,if=target.health.pct<=25 +actions.st+=/shadowflame,if=target.distance<7 +actions.st+=/soulburn,if=moving +actions.st+=/soul_fire,if=buff.soulburn.up +actions.st+=/demon_soul +actions.st+=/fel_flame,if=buff.fel_spark.up|moving +actions.st+=/shadow_bolt,if=target.health.pct > 25 & target.distance > 7 |debuff.shadow_embrace.down & target.health.pct > 25|target.distance<7&cooldown.shadowflame.remains>3 +actions.st+=/life_tap,if=mana.pct<10|glyph.life_tap.enabled&buff.life_tap.remains<5 +actions.st+=/call_action_list,name=aoe,if=active_enemies>2 + +# AoE Rotation +actions.aoe+=/corruption,if=target.debuff.corruption.remains<3,target_if=debuff.corruption.remains +actions.aoe+=/unstable_affliction,if=target.debuff.unstable_affliction.remains<3 +actions.aoe+=/bane_of_agony,if=debuff.bane_of_agony.remains2 +actions.aoe+=/seed_of_corruption,if=buff.soulburn.up&active_enemies>2 +actions.aoe+=/seed_of_corruption,if=active_enemies>=6 +actions.aoe+=/shadowflame,if=target.distance<7 +actions.aoe+=/shadow_bolt,cycle_targets=1 +actions.aoe+=/curse_of_the_elements,if=active_enemies>5&debuff.curse_of_elements.remains<3&!target.distance.yard>5 + +# Soul Swap Logic (2 targets) +actions.aoe+=/soul_swap,if=target.debuff.bane_of_agony.up&active_enemies=2 diff --git a/Cataclysm/APLs/WarlockDemonologybeta.simc b/Cataclysm/APLs/WarlockDemonology.simc similarity index 77% rename from Cataclysm/APLs/WarlockDemonologybeta.simc rename to Cataclysm/APLs/WarlockDemonology.simc index 4b084a329..626db1963 100644 --- a/Cataclysm/APLs/WarlockDemonologybeta.simc +++ b/Cataclysm/APLs/WarlockDemonology.simc @@ -1,7 +1,7 @@ -Smufrik beta demo +Smufrik demo # Start the fight with Felguard for the Demon Soul buff and Felstorm actions.precombat+=/summon_felguard,if=settings.pet_twisting&!pet.alive -actions.precombat+=/summon_felhunter,if=!setting.pet_twisting&!pet.alive +actions.precombat+=/summon_felhunter,if=!settings.pet_twisting&!pet.alive actions.precombat+=/fel_armor,if=buff.fel_armor.down actions.precombat+=/soul_link,if=!buff.soul_link.up actions.precombat+=/volcanic_potion @@ -9,8 +9,8 @@ actions.precombat+=/metamorphosis actions.precombat+=/demon_soul,if=pet.alive&settings.pet_twisting actions.precombat+=/soul_harvest,if=soul_shards<3 -actions+=/immolate,if=!ticking -actions+=/corruption,if=!ticking +actions+=/immolate,if=!ticking&debuff.immolate.remains61 @@ -28,12 +28,12 @@ actions.sdr+=/immolation_aura,if=buff.metamorphosis.up actions.sdr+=/felstorm,if=buff.demon_soul_felguard.up actions.sdr+=/bane_of_doom,if=!ticking&target.time_to_die>15 actions.sdr+=/bane_of_agony,if=!ticking&target.time_to_die<30&!debuff.bane_of_doom.up -actions.sdr+=/summon_doomguard,if=buff.demonic_pact.stack>=4&buff.molten_core.stack>=1&cooldown.hand_of_gul_dan.remains<10 -actions.sdr+=/summon_infernal,if=settings.inferno_enabled +actions.sdr+=/summon_infernal,if=settings.inferno_enabled&target.time_to_die>45&soul_shards=3 actions.sdr+=/hand_of_guldan,use_off_gcd=1 -actions.sdr+=/shadowflame,if=!debuff.shadowflame.up +actions.sdr+=/shadowflame,if=!debuff.shadowflame.up&buff.fel_spark.up actions.sdr+=/soulburn,if=soul_shard>1&settings.pet_twisting&!buff.fel_intelligence.up & buff.demon_soul_felguard.down -actions.sdr+=/summon_felhunter,if=soul_shard>1&buff.soulburn_up&!buff.fel_intelligence.up&settings.pet_twisting&buff.demon_soul_felguard.down +actions.sdr+=/summon_felhunter,if=soul_shard>1&buff.soulburn.up&!buff.fel_intelligence.up&settings.pet_twisting&buff.demon_soul_felguard.down +actions.sdr+=/summon_doomguard,if=buff.demonic_pact.up&buff.molten_core.stack>=1&cooldown.hand_of_gul_dan.remains<10 actions.sdr+=call_action_list,name=nr @@ -43,18 +43,18 @@ actions.nr+=/shadow_bolt,if=!ticking&dot.shadow_and_flame.remains30 -actions.nr+=/bane_of_agony,if=!ticking&target.time_to_die<30&!debuff.barn_of_doom.up +actions.nr+=/bane_of_agony,if=!ticking&target.time_to_die<30&!debuff.bane_of_doom.up actions.nr+=/corruption,if=!ticking -actions.nr+=/shadowflame,if=!debuff.shadowflame.up +actions.nr+=/shadowflame,if=!debuff.shadowflame.up&buff.fel_spark.up actions.nr+=/incinerate,if=buff.molten_core.up actions.nr+=/soul_fire,if=target.health.pct<25&buff.decimation.up actions.nr+=/shadow_bolt actions.aoe+=/metamorphosis actions.aoe+=/immolation_aura,if=buff.metamorphosis.up -actions.aoe+=/shadowflame,if=target.in_melee_range +actions.aoe+=/shadowflame,if=target.distance<7 actions.aoe+=/hellfire,if=spell_targets.hellfire>6 actions.aoe+=/corruption,cycle_targets=1,if=spell_targets.corruption<6 actions.aoe+=/immolate,cycle_targets=1,if=spell_targets.immolate<6 -actions.aoe+=/doom,cycle_targets=1,if=spell_targets.doom<6 +actions.aoe+=/bane_of_doom,cycle_targets=1,if=spell_targets.doom<6 actions.aoe+=/felstorm,if=pet.alive diff --git a/Cataclysm/APLs/WarlockDestructionbeta.simc b/Cataclysm/APLs/WarlockDestructionbeta.simc new file mode 100644 index 000000000..5b866e2e4 --- /dev/null +++ b/Cataclysm/APLs/WarlockDestructionbeta.simc @@ -0,0 +1,30 @@ +actions.precombat+=/fel_armor,if=buff.armor.down|buff.armor.remains<180 +actions.precombat+=/summon_imp,if=!pet.active +actions.precombat+=/life_tap,if=glyph.life_tap.enabled&buff.life_tap.down +actions.precombat+=/volcanic_potion + +actions+=/run_action_list,name=st,if=active_enemies<2 +actions+=/run_action_list,name=aoe,if=active_enemies>1 +actions+=/run_action_list,name=life,if=health.pct<25 + + +actions.st+=/group_curse,if=debuff.my_curse.down&curse_grouped +actions.st+=/immolate,if=!ticking&dot.immolate.remains20&setting.inferno_enabled|target.health.pct<40&setting.inferno_enabled +actions.st+=/life_tap,if=moving&mana.pct<80|mana.pct<10 +actions.st+=/incinerate +actions.st+=/curse_of_doom,if=target.time_to_die>60&debuff.my_curse.down +actions.st+=/curse_of_agony,if=target.time_to_die<60&!debuff.curse_of_doom.remains>tick_time + +actions.aoe+=/shadowflame,cycle_targets=1,if=active_enemies>3&target.distance<10 +actions.aoe+=/seed_of_corruption,cycle_targets=1,if=active_enemies>3&!ticking +actions.aoe+=/immolate,cycle_targets=1,if=!ticking +actions.aoe+=/corruption,line_cd=6,cycle_targets=1,if=moving + +actions.life+=/death_coil +actions.life+=/drain_life diff --git a/Cataclysm/Priest.lua b/Cataclysm/Priest.lua index 4068be05b..c69c94612 100644 --- a/Cataclysm/Priest.lua +++ b/Cataclysm/Priest.lua @@ -16,88 +16,85 @@ spec:RegisterResource( Enum.PowerType.Mana ) -- Talents spec:RegisterTalents( { - absolution = { 1769, 3, 33167, 33171, 33172 }, - aspiration = { 1894, 2, 47507, 47508 }, - blessed_recovery = { 1636, 3, 27811, 27815, 27816 }, - blessed_resilience = { 1765, 3, 33142, 33145, 33146 }, - body_and_soul = { 2279, 2, 64127, 64129 }, - borrowed_time = { 1202, 5, 52795, 52797, 52798, 52799, 52800 }, - circle_of_healing = { 1815, 1, 34861 }, - darkness = { 462, 5, 15259, 15307, 15308, 15309, 15310 }, - desperate_prayer = { 442, 1, 19236 }, - dispersion = { 1910, 1, 47585 }, - divine_aegis = { 1895, 3, 47509, 47511, 47515 }, - divine_fury = { 1181, 5, 18530, 18531, 18533, 18534, 18535 }, - divine_providence = { 1905, 5, 47562, 47564, 47565, 47566, 47567 }, - empowered_healing = { 1767, 5, 33158, 33159, 33160, 33161, 33162 }, - empowered_renew = { 1902, 3, 63534, 63542, 63543 }, - enlightenment = { 1772, 3, 34908, 34909, 34910 }, - focused_mind = { 1777, 3, 33213, 33214, 33215 }, - focused_power = { 1771, 2, 33186, 33190 }, - focused_will = { 1858, 3, 45234, 45243, 45244 }, - grace = { 1901, 2, 47516, 47517 }, - guardian_spirit = { 1911, 1, 47788 }, - healing_focus = { 410, 2, 14913, 15012 }, - healing_prayers = { 413, 2, 14911, 15018 }, - holy_concentration = { 1768, 3, 34753, 34859, 34860 }, - holy_reach = { 1635, 2, 27789, 27790 }, - holy_specialization = { 401, 5, 14889, 15008, 15009, 15010, 15011 }, - improved_devouring_plague = { 2267, 3, 63625, 63626, 63627 }, - improved_flash_heal = { 1773, 3, 63504, 63505, 63506 }, - improved_healing = { 408, 3, 14912, 15013, 15014 }, - improved_inner_fire = { 346, 3, 14747, 14770, 14771 }, - improved_mana_burn = { 350, 2, 14750, 14772 }, - improved_mind_blast = { 481, 5, 15273, 15312, 15313, 15314, 15316 }, - improved_power_word_fortitude = { 344, 2, 14749, 14767 }, - improved_power_word_shield = { 343, 3, 14748, 14768, 14769 }, - improved_psychic_scream = { 542, 2, 15392, 15448 }, - improved_renew = { 406, 3, 14908, 15020, 17191 }, - improved_shadow_word_pain = { 482, 2, 15275, 15317 }, - improved_shadowform = { 1906, 2, 47569, 47570 }, - improved_spirit_tap = { 2027, 2, 15337, 15338 }, - improved_vampiric_embrace = { 1638, 2, 27839, 27840 }, - inner_focus = { 348, 1, 14751 }, - inspiration = { 361, 3, 14892, 15362, 15363 }, - lightwell = { 1637, 1, 724 }, - martyrdom = { 321, 2, 14531, 14774 }, - meditation = { 347, 3, 14521, 14776, 14777 }, - mental_agility = { 341, 3, 14520, 14780, 14781 }, - mental_strength = { 1201, 5, 18551, 18552, 18553, 18554, 18555 }, - mind_flay = { 501, 1, 15407 }, - mind_melt = { 1781, 2, 14910, 33371 }, - misery = { 1816, 3, 33191, 33192, 33193 }, - pain_and_suffering = { 1909, 3, 47580, 47581, 47582 }, - pain_suppression = { 1774, 1, 33206 }, - penance = { 1897, 1, 47540 }, - power_infusion = { 322, 1, 10060 }, - psychic_horror = { 1908, 1, 64044 }, - rapture = { 1896, 3, 47535, 47536, 47537 }, - reflective_shield = { 2268, 2, 33201, 33202 }, - renewed_hope = { 2235, 2, 57470, 57472 }, - searing_light = { 403, 2, 14909, 15017 }, - serendipity = { 1904, 3, 63730, 63733, 63737 }, - shadow_affinity = { 466, 3, 15318, 15272, 15320 }, - shadow_focus = { 463, 3, 15260, 15327, 15328 }, - shadow_power = { 1778, 5, 33221, 33222, 33223, 33224, 33225 }, - shadow_reach = { 881, 2, 17322, 17323 }, - shadow_weaving = { 461, 3, 15257, 15331, 15332 }, - shadowform = { 521, 1, 15473 }, - silence = { 541, 1, 15487 }, - silent_resolve = { 352, 3, 14523, 14784, 14785 }, - soul_warding = { 351, 1, 63574 }, - spell_warding = { 411, 5, 27900, 27901, 27902, 27903, 27904 }, - spirit_of_redemption = { 1561, 1, 20711 }, - spirit_tap = { 465, 3, 15270, 15335, 15336 }, - spiritual_guidance = { 402, 5, 14901, 15028, 15029, 15030, 15031 }, - spiritual_healing = { 404, 5, 14898, 15349, 15354, 15355, 15356 }, - surge_of_light = { 1766, 2, 33150, 33154 }, - test_of_faith = { 1903, 3, 47558, 47559, 47560 }, - twin_disciplines = { 1898, 5, 47586, 47587, 47588, 52802, 52803 }, - twisted_faith = { 1907, 5, 47573, 47577, 47578, 51166, 51167 }, - unbreakable_will = { 342, 5, 14522, 14788, 14789, 14790, 14791 }, - vampiric_embrace = { 484, 1, 15286 }, - vampiric_touch = { 1779, 1, 34914 }, - veiled_shadows = { 483, 2, 15274, 15311 }, + archangel = { 11608, 2, 87151, 81700 }, + atonement = { 11812, 2, 81749, 14523 }, + binding_prayers = { 413, 2, 15018, 14911 }, + blessed_recovery = { 1636, 3, 27811, 27815, 27816 }, + blessed_resilience = { 11672, 2, 33145, 33142 }, + body_and_soul = { 9587, 2, 64129, 64127 }, + borrowed_time = { 1202, 3, 52797, 52798, 52795 }, + chakra = { 348, 1, 14751 }, + circle_of_healing = { 1815, 1, 34861 }, + darkness = { 462, 3, 15308, 15307, 15259 }, + designer_notes = { 7449, 1, 80556 }, + desperate_prayer = { 2829, 1, 19236 }, + dispersion = { 9080, 1, 47585 }, + divine_accuracy = { 7578, 2, 81762, 81763 }, + divine_aegis = { 8609, 3, 47515, 47509, 47511 }, + divine_fury = { 9549, 3, 18530, 18531, 18533 }, + divine_providence = { 1905, 5, 47562, 47567, 47565, 47564, 47566 }, + divine_touch = { 1902, 2, 63534, 63542 }, + empowered_healing = { 2859, 3, 33158, 33159, 33160 }, + evangelism = { 8593, 2, 81662, 81659 }, + focused_will = { 8621, 2, 45243, 45234 }, + grace = { 8625, 2, 47517, 47516 }, + guardian_spirit = { 9601, 1, 47788 }, + harnessed_shadows = { 1816, 2, 33191, 78228 }, + heavenly_voice = { 11668, 2, 87430, 87431 }, + holy_concentration = { 1768, 2, 34859, 34753 }, + holy_reach = { 1635, 2, 27789, 27790 }, + holy_specialization = { 2823, 5, 15008, 15009, 15010, 15011, 14889 }, + improved_devouring_plague = { 9062, 2, 63626, 63625 }, + improved_healing = { 408, 2, 14912, 15013 }, + improved_holy_nova = { 7580, 2, 81766, 81830 }, + improved_mind_blast = { 481, 3, 15312, 15273, 15313 }, + improved_power_word_shield = { 10736, 2, 14768, 14748 }, + improved_psychic_scream = { 9040, 2, 15448, 15392 }, + improved_renew = { 10746, 2, 15020, 14908 }, + improved_shadow_word_pain = { 482, 2, 15317, 15275 }, + inner_focus = { 8591, 1, 89485 }, + inner_sanctum = { 346, 3, 14747, 14771, 14770 }, + inspiration = { 361, 2, 15362, 14892 }, + lightwell = { 1637, 1, 724 }, + masochism = { 11778, 2, 88995, 88994 }, + mental_agility = { 341, 3, 14781, 14520, 14780 }, + mind_flay = { 501, 1, 15407 }, + mind_melt = { 1781, 2, 14910, 33371 }, + pain_and_suffering = { 1909, 2, 47581, 47580 }, + pain_suppression = { 1774, 1, 33206 }, + paralysis = { 11663, 2, 87192, 87195 }, + penance = { 1897, 1, 47540 }, + penitence = { 7576, 2, 81656, 81657 }, + phantasm = { 1906, 2, 47569, 47570 }, + power_infusion = { 8611, 1, 10060 }, + power_word_barrier = { 5564, 2, 62618, 14769 }, + psychic_horror = { 1908, 1, 64044 }, + rapid_renewal = { 14738, 1, 95649 }, + rapture = { 1896, 3, 47537, 47536, 47535 }, + reflective_shield = { 2268, 2, 33202, 33201 }, + renewed_hope = { 2235, 2, 57472, 57470 }, + revelations = { 11755, 1, 88627 }, + searing_light = { 403, 3, 14909, 15017, 78069 }, + serendipity = { 1904, 2, 63733, 63730 }, + shadowform = { 521, 1, 15473 }, + shadowy_apparition = { 5791, 3, 78204, 78202, 78203 }, + silence = { 98008, 1, 15487 }, + sin_and_punishment = { 11605, 2, 87100, 87099 }, + soul_warding = { 351, 3, 78501, 78500, 63574 }, + spirit_of_redemption = { 1561, 1, 20711 }, + spiritual_guidance = { 2845, 4, 15031, 15028, 15029, 15030 }, + strength_of_soul = { 11813, 2, 89488, 89489 }, + surge_of_light = { 11765, 2, 88690, 88687 }, + test_of_faith = { 1903, 3, 47559, 47558, 47560 }, + thriving_light = { 5795, 2, 78245, 78244 }, + tome_of_light = { 12184, 2, 81625, 14898 }, + train_of_thought = { 12183, 2, 92295, 92297 }, + twin_disciplines = { 1898, 3, 47588, 47586, 47587 }, + twisted_faith = { 1907, 2, 47577, 47573 }, + unbreakable_will = { 342, 5, 14788, 14789, 14522, 14790, 14791 }, + vampiric_embrace = { 484, 1, 15286 }, + vampiric_touch = { 1779, 1, 34914 }, + veiled_shadows = { 9046, 2, 15311, 15274 }, } ) -- Auras @@ -109,15 +106,21 @@ spec:RegisterAuras( { tick_time = 3, max_stack = 1, }, - absolution = { -- TODO: Check Aura (https://wowhead.com/wotlk/spell=33172) - id = 33172, + absolution = { + id = 33167, duration = 3600, max_stack = 1, - copy = { 33172, 33171, 33167 }, + + }, + -- + archangel = { + id = 81700, + duration = 18, + max_stack = 1, }, -- Prevents you from being critically hit. blessed_resilience = { - id = 33143, + id = 33145, duration = 6, max_stack = 1, copy = { 33143 }, @@ -131,7 +134,7 @@ spec:RegisterAuras( { }, -- $s1% spell haste until next spell cast. borrowed_time = { - id = 59891, + id = 52797, duration = 6, max_stack = 1, copy = { 59891, 59890, 59889, 59888, 59887 }, @@ -170,14 +173,19 @@ spec:RegisterAuras( { copy = { 2944, 19276, 19277, 19278, 19279, 19280, 25467, 48299, 48300 }, }, + dark_archangel = { + id = 87153, + duration = 90, + max_stack = 1, + }, -- Reduces all damage by $s1%, and you regenerate $49766s1% mana every $60069t1 sec for $d. Cannot attack or cast spells. Immune to snare and movement impairing effects. dispersion = { id = 47585, duration = 6, max_stack = 1, }, - divine_fury = { -- TODO: Check Aura (https://wowhead.com/wotlk/spell=18535) - id = 18535, + divine_fury = { + id = 18533, duration = 3600, max_stack = 1, copy = { 18535, 18534, 18533, 18531, 18530 }, @@ -189,6 +197,17 @@ spec:RegisterAuras( { max_stack = 1, copy = { 64844, 64843 }, }, + dark_evangelism = { + id = 87118, + duration = 18, + max_stack = 5, + }, + + evangelism = { + id = 81661, + duration = 18, + max_stack = 5, + }, -- Reduced threat level. fade = { id = 586, @@ -357,6 +376,13 @@ spec:RegisterAuras( { max_stack = 1, copy = { 2096, 10909 }, }, + + mind_spike = { + id = 73510, + duration = 3600, + max_stack = 3, + copy = { 87178, 87179 }, + }, -- Chance to hit with spells on the target increased by $s1%. misery = { id = 33198, @@ -383,6 +409,13 @@ spec:RegisterAuras( { max_stack = 1, copy = { 17, 592, 600, 3747, 6065, 6066, 10898, 10899, 10900, 10901, 25217, 25218, 27607, 48065, 48066 }, }, + + power_word_fortitude = { + id = 79105, + duration = 60, + max_stack = 1, + copy = { 1244, 1245, 2791, 10937, 10938, 21562, 25389, 48161, 79014, 79105 }, + }, -- Increases Shadow Resistance by $s1. prayer_of_shadow_protection = { id = 27683, @@ -520,42 +553,68 @@ spec:RegisterAuras( { -- Glyphs spec:RegisterGlyphs( { - [55675] = "circle_of_healing", - [55677] = "dispel_magic", - [63229] = "dispersion", - [55684] = "fade", - [57985] = "fading", - [55678] = "fear_ward", - [55679] = "flash_heal", - [58009] = "fortitude", - [55683] = "holy_nova", - [63246] = "hymn_of_hope", - [55686] = "inner_fire", - [57987] = "levitate", - [55673] = "lightwell", - [55691] = "mass_dispel", - [55688] = "mind_control", - [55687] = "mind_flay", - [63237] = "mind_sear", - [63248] = "pain_suppression", - [63235] = "penance", - [55672] = "power_word_shield", - [55680] = "prayer_of_healing", - [55676] = "psychic_scream", - [55674] = "renew", - [55690] = "scourge_imprisonment", - [57986] = "shackle_undead", - [55689] = "shadow", - [58015] = "shadow_protection", - [55682] = "shadow_word_death", - [55681] = "shadow_word_pain", - [58228] = "shadowfiend", - [55692] = "smite", - [55685] = "spirit_of_redemption", + [55675] = "circle_of_healing", + [63248] = "desperation", + [55677] = "dispel_magic", + [63229] = "dispersion", + [63246] = "divine_accuracy", + [55684] = "fade", + [57985] = "fading", + [55678] = "fear_ward", + [55679] = "flash_heal", + [58009] = "fortitude", + [63231] = "guardian_spirit", + [55683] = "holy_nova", + [55686] = "inner_fire", + [57987] = "levitate", + [55673] = "lightwell", + [55691] = "mass_dispel", + [55687] = "mind_flay", + [63235] = "penance", + [55689] = "power_word:_barrier", + [55672] = "power_word:_shield", + [55680] = "prayer_of_healing", + [55685] = "prayer_of_mending", + [55688] = "psychic_horror", + [55676] = "psychic_scream", + [55674] = "renew", + [55690] = "scourge_imprisonment", + [57986] = "shackle_undead", + [107906] = "shadow", + [58015] = "shadow_protection", + [55682] = "shadow_word:_death", + [55681] = "shadow_word:_pain", + [58228] = "shadowfiend", + [55692] = "smite", + [63237] = "spirit_tap" } ) -- Abilities spec:RegisterAbilities( { + archangel = { + id = 81700, + cast = 0, + cooldown = 30, + gcd = "spell", + + startsCombat = false, + texture = 463560, + + handler = function () + -- Check if there are Evangelism stacks + if evangelismStacks > 0 then + if evangelismType == "Dark Evangelism" then + + -- Apply Dark Archangel effect for 18 seconds + applyBuff("dark_archangel", 18) + else + + -- Apply Archangel effect for 18 seconds + applyBuff("archangel", 18) + end + end + end, + }, -- Heals a friendly target and the caster for 1055 to 1352. Low threat. binding_heal = { id = 32546, @@ -1211,7 +1270,21 @@ spec:RegisterAbilities( { end, }, + mind_spike = { + id = 73510, + cast = 0, + cooldown = 0, + gcd = "spell", + spend = 0.12, + spendType = "mana", + + startsCombat = true, + texture = 457655 , + + handler = function () + end, + }, -- Launches a volley of holy light at the target, causing 240 Holy damage to an enemy, or 670 to 756 healing to an ally instantly and every 1 sec for 2 sec. penance = { id = 47540, @@ -1257,7 +1330,7 @@ spec:RegisterAbilities( { -- Power infuses the target, increasing their Stamina by 3 for 30 min. power_word_fortitude = { - id = 21562, + id = 79105, cast = 0, cooldown = 0, gcd = "spell", @@ -1272,7 +1345,7 @@ spec:RegisterAbilities( { applyBuff( "power_word_fortitude" ) end, - copy = { 1244, 1245, 2791, 10937, 10938, 25389, 48161 }, + copy = { 1244, 1245, 2791, 10937, 10938, 21562, 25389, 48161, 79014, 79105 }, }, @@ -1531,7 +1604,7 @@ spec:RegisterAbilities( { shadow_word_death = { id = 32379, cast = 0, - cooldown = 12, + cooldown = 10, gcd = "spell", spend = 0.12, @@ -1541,6 +1614,7 @@ spec:RegisterAbilities( { texture = 136149, handler = function () + end, copy = { 32996, 48157, 48158 }, @@ -1731,7 +1805,7 @@ spec:RegisterOptions( { -- Packs --- spec:RegisterPack( "Shadow", 20231124, [[Hekili:vN1wVTTnu4FlbfWWg1vXxAU0bR8W2EynpemaTNLeTeDmr0nirfpdeOF77qsDHsIK2UnDffOOjrMN7NZ35JYUlD)hxNqef7(0QfRwVC5QVyT8(f3S4wxh6XmSRtgk4f0ZWVKGIH)3zpkm9a7XhJsrHmXlslZdGp6q6HcsCH1Ze6(YTwK0k)jv(Wt3JrHwbPXxFiLg9IRZ2sse9RjUBvz6pV6lGkZWbUpDJRZEsyiwCsCrqJ5R8)7CcUGw5NLtsZj0Jv(re2FVlnVY)VWVqIiUoShvW9qsYZry43EIhV4e02iCO7V76eacJZjixNxrWpGhBrjXypAQxibx5VXUYhfqjPjwXKKqVDrOJwHL5i2JQ8F7Tk)Pv(XPVcwGhUxv5hMsTcXVczf4HEzrONlXw54yejPOYFMRJqHSqQ)HCPqQqRdUTC3olssco3BxAqzHvzwRdWmzbp14Dinp0ldSvNj3u5V06gU7z(GpOkAPKGx8yjLk)pcPzOGLeCSxC0EwwaS(cZWpu5VOtvcFBhbNeYu2N1QmipZCSM0(u()4POMWdJyffRck0ax5drMidOXlGp)o4aZAtPg0f7WRnOSnT6A2WiRlRZcVB0gES60RO4msoja0BzW(UQKCvamvaQGwxFmgER78L(AM5j3AkrBQH2C38DxAZG9W4bQeSolV0xH((Tri2qoRcXlp54SiCcPyFmoH2RFF94guUWmN6EZJy67F6uO0yitJFzGgla0lhZzT(LA9WfmaOfwR6m9beHhflxOYO1yb6AD(u789GtiL0NDI(q5XUrGfb7rqQjQ5Zn5lSiB6z4pAaDAZd6H0VQUnPUArYXCmtJtjlxmQkdYXnKEOzWqxKIBdwC82CuGq96boVQzdJkixWlHJLxMr9i7GZQynXewjR4b7vC7OhtDOrKHScXikhPyPEqRHYRcryPEKMyucYkddCjsOI2JBLYzHeGuqEb73z1Dq57qLruvl1Bejaff5j(dpgxabJapbrgsIO)HxvBKOSa7bUtCHS(AwQ1COSuXp7DIHzvgDLCsM4K7rc(b1B3sZJR8ja9H8uAnrITLpdJePL0oZS)ilEZW4qigcWrybPdHtMUBN3ZbHSy34EeMYEf7HtWXaHj(22LDMiVmrB(jicaaXQ2nCosxZ4IxPYYXa5VTiJ1QUuZGC3taYF8wmqRJXsudAntol4NjNbfQqcumWEfSjqkxi(Kl)ZYYrhHbN0DYFSCpOKOMj7iux6bqB85hWdPeAziwRf7Fc52TXkXm3OHGE8vy18a1cVPVhIJUzg862tnFqBBOmscFu7kacC)auVcmk3Cz(7IYYWsQce3GJqS4rr5pJH7xaHZfHbd4C)RxFv4CNs4(gcq)uy3BSd7BGk)W(RrTtcUOksUNkF9dHRSbCVrm5)g85FrU(YP508Rhj)3xwHdP()otkCij)lm3EnS1S51siHPOcMDTgywd8Rplxq24Vl8x1J7FE8x1VZ(S4VAG(8fXFLZ)uXYW0m2v5OY9fISm73IaNGFhpmpnrZHzbM)fwghFSPnE9IfTibc0h5cexH1S0KFSInQN2vQv)EmkIU3klGYNlxTq2i4)fhusXEz7rfcgHGgFTov08Q)(m7cD5Sybqk)ACgq0bhYX8e2w8(9kSQEKXNmDhH5eFO59a(Bv(1VyWh)a)noEoVhs(z7ZUS6r4HCTwZyT6rH5lSAjX(r7R74CoNSZwfnu1Y1J(yROJ5Jorpxu1kwffXw9RLe6qZmGIQsl1b(1Q)ren3SCHAHhIWXuXvqtRMyIx3RRi)P42EThfoWWB3nN1UzZgRKpv7n6KFyJUbfFbxndoFNk63dC1WMaPOcoSMRYnx6MC2lLfyWvReHMGanZC9XVF40IkUowtY8RSCK)FJYHpcWU6snwSShVqjMZfclHsmNp3Bpvh(Zea7z2BVng15eMOhgrTrgHTSz1IMi4p4PIoLksnGABxDPinzFVcbgIXZRMgFLCAmkBz28Eu(SxoFenq77MlVVZ246oUViwknzQjU9BGlamX0bEWw40Qi()XAcYZuezsC4zoJQf(pSqHC9PJFEPLD26jY34JBAjwmrPVyVwBq0Luox35QAg6tMovlBA7B04i3DdmhOxoWtvk4gqUzAu5svz6owVAlq2DjTPdOz)2B6PyVzTQoI(laUAmt6lX51Sq4surVb(te(xVAsZ40qObv9nDJ1x2i7Pkc1(Wj6u5ewzQt7PvbDP)WT0p5htIQ6g7BBXvDQ3t0iUyVHgBPS)DmqtZ3wkmouN8nIVotH1LQe9jDuN(bv))j8yRFDHWJdKtcr6NjAJc)Ba897o0SX2QZC7B)MJF8iGT2tQ1Ba9)HflfcZ(wRAYN6IXn2lSwnVahy8uNq5Q)s7MmQpV7lSBI(A8g7P1cQ7RPRDkH73t1RQpDcfziJ)DTZzCV9fVZrfC0fTyyeWVsabTa)gNA0FyJa)WD7lP7tZDDCkHhNuwuWVGU7)n]] ) +spec:RegisterPack( "Shadow", 20240621, [[Hekili:DJ1AVTTnx4FlbdiTfR1Z2PoTRZoaPdB7nbyzdvPyFyOYIwIkIlsIAKujZab63(ohkzDHIsrPTF5DiOn2sh(CU)WZjUlCV21jGOOUxTC(Yxp)nZF7SLlNVy1sxh1(mQRtgX)wYnWhsjjW)7erc43)EQIGVAFmNeGqi55cF41Uo7YzXQlsD3zf3tCDi5QiUaqkjpuWU11jIfeqlpav676CDetw4H)Ju4vP(cpEi8DFfJNw4fZKk41HCrH3)JEllMnZ1r)q0wiCk8RR0UgnLSlMg4((sWfSmebxNZ5)uH3h4ks5xlb21jHLgSvsjcxfy4gaaNwrfmWXveXnu1Sa6U8WWzsDiz79CrW2mclDMGMa)cmW1fEN0aUPCOoozI64ossgtW83Q45(rdPHUsH4)6jIFa9oidYsVzBwm5MC6qAWuouhRguhTdpCXoauahJO9UyIu5I)aGhsYJv2sEnyEeuta2njMDh1m2gYOPbJN6GJRy(3cEqH3XWNNEMep2wflPNwNAg1mAivqTDH3zBk8wOngTa07iP3qHI5KdcaVFLrqlmMSF807tj0psgC0W1Ofnwcx2kEo9Zt1J0pyrX97lEZGQfpZD0T0uAcJkltplBGsKNUT8ZBrcNsANTLCJiXdG9BnWEkh9qlG0A1VLSwx6SFf8(28znUJpNhd1aPZAoBt0cCT5pEWnpB8wk9zQllpu1I8gpPwSZG2GbkZNkl5xJcYPYy(LwboCpxLEIOKyv0SmFLg0LRk8E4HcVeskP(HlwzNmkGsurJ3E9KiimBxSr72TI8hRQ7GlTtdk8(OcUKwT3ALzlq6wAARzYWbSZwQR7E(u5mGcVtFsSBdCGrlTHd8IM4gr4hPnC0f)(bDXbZ1bmzgviXpdaSy(GiyueTQSD)OQ7AAGbBYRrhn(TY8SmbvwRJr5KKzSBPgvaxtIPPQx5Kr9zHm)cVZ1Nachp)8G)kxcw0oIKcfh4iD7HyngqXZu45hXz(u5l62wGVBwJ(Mvznn3DwhwR4SwysA1NDPRn)ZS4yiGmHYmmywszdrjFEYoIvM7oO)BzWTkcRHUdeSdozrlqTqiwN543tfLNcgowXu5bMPLF)G5w49EW167R2Wyg2OwZoEqBSuWD2gYe0UMNoSCxv9z58)NUe42VNisH(jqL)X5F4QlU6xExHxH31rW09SKmqxvJ0)m4I0Nv4jO)DoGnKFL8eqgyXbEcSsrawFG5d5SIl1NoKhhZVxpPajxqGsmWfGNNRlVWRgvOyL2D56dyfJ6GCPCTQZt7iDqakmSedbRtFxXLfEVcSLAkt4bx(ioIu9Fd)OAY8)pXzkxGmtWdzX0YnjtyatgAkiTwJJDd2qICtkGO)wQcmEiaCHQ8q6oLe4Aj0GvryldfkR3JyZ4qxZE0Y8JHgeqAkdSqXbl6p)OKIirtKF6LGlfX8JAlnjDFJwRCw6)KfZ8zQ4gCB77hu6pamMIdQ56siGRh(u1vTnpAzlnFpWS1YJQGuDquD0q)O08KD0YeCmxbjZl0vc4dETXg4WlbMkGFhNMXPkE768nfELmDfxwkUCwnh53U57Ay9S)EtQVAPQFNEuHxYc3Cu9MG9fQbaTKvRsC80UYED9iCTbU(wderRBZD2MfhB9cJnR6bKE4kBiPNeRT4MtImIdn0ql2DOUtencS2hDYoOgR58sCbNnaJocp(8MLRoBZYh9GaPWL4pqrv3LCAkEKQEH0r26zZ8X9T8mBi3jRBSRZ6tMyv1zlmG2wI9ZoFwcz)u6NzMSeUElv0cXMzlxVC1dpCyy11lwnAUzGYDDk2(wdwTPAsGX2JyZCJZwpHyTL0Vt94NpLq2zNoXwVEcoy5XPVWS(OE(C0ChoaBoWokDRSZQ5hFu)59Rc5D(lH2Gl0WwZvtjcZxyJJDAE56tmX6ZSKThoFbDt9WA6LSFnwZXw)I(gYsxyG9EoU3op4qbAJQApMhLjZS4F9QA2wZ9eSFzTTLfQrFWnjSJvR1jWniC)3p]] ) spec:RegisterPackSelector( "discipline", "none", "|T135987:0|t Discipline", @@ -1788,4 +1862,4 @@ spec:RegisterSetting( "min_shadowfiend_mana", 25, { min = 0, max = 100, step = 1, -} ) \ No newline at end of file +} ) diff --git a/Cataclysm/Rogue.lua b/Cataclysm/Rogue.lua index 9eaa1e6de..f49f07148 100644 --- a/Cataclysm/Rogue.lua +++ b/Cataclysm/Rogue.lua @@ -7,13 +7,16 @@ local class, state = Hekili.Class, Hekili.State local spec = Hekili:NewSpecialization( 4 ) local strformat = string.format +local UA_GetPlayerAuraBySpellID = C_UnitAuras.GetPlayerAuraBySpellID - +local tracked_bleeds = {} -- TODO: Check gains from Cold Blood, Seal Fate; i.e., guaranteed crits. spec:RegisterResource( Enum.PowerType.ComboPoints ) spec:RegisterResource( Enum.PowerType.Energy ) +spec:RegisterGear( "tier11", 60300, 60299, 60298, 60301, 65239, 65240, 65241, 65242, 65243 ) + -- Talents spec:RegisterTalents( { adrenaline_rush = { 205, 1, 13750 }, @@ -138,7 +141,7 @@ spec:RegisterGlyphs( { -- Auras -spec:RegisterAuras( { +spec:RegisterAuras({ -- Energy regeneration increased by $s1%. adrenaline_rush = { id = 13750, @@ -199,6 +202,24 @@ spec:RegisterAuras( { max_stack = 5, copy = { 2819, 11353, 11354, 25349, 26968, 27187, 57970, 57969 }, }, + deadly_poison_dot = { + id = 2818, + duration = function () return 12 * haste end, + tick_time = 3, + max_stack = 5, + copy = { 2818, 11353, 11354, 25349, 26968, 27187, 57970, 57969 }, + meta = { + last_tick = function( t ) return t.up and ( tracked_bleeds.deadly_poison_dot.last_tick[ target.unit ] or t.applied ) or 0 end, + tick_time = function( t ) + if t.down then return haste * 2 end + local hasteMod = tracked_bleeds.deadly_poison_dot.haste[ target.unit ] + hasteMod = 2 * ( hasteMod and ( 100 / hasteMod ) or haste ) + return hasteMod + end, + haste_pct = function( t ) return ( 100 / haste ) end, + haste_pct_next_tick = function( t ) return t.up and ( tracked_bleeds.deadly_poison_dot.haste[ target.unit ] or ( 100 / haste ) ) or 0 end, + }, + }, -- Movement slowed by $s2%. deadly_throw = { id = 48674, @@ -312,8 +333,8 @@ spec:RegisterAuras( { }, -- Restless Blades logic restless_blades = { - id = 79096, - max_stack = 1, + id = 79096, + max_stack = 1, }, -- Melee attack speed slowed by $s2%. @@ -325,15 +346,25 @@ spec:RegisterAuras( { -- Causes damage every $t1 seconds. rupture = { id = 1943, - duration = function() return ( glyph.rupture.enabled and 10 or 6 ) + ( 2 * combo_points.current ) end, + duration = function() return ( glyph.rupture.enabled and 10 or 6 ) + ( 1 + effective_combo_points ) end, tick_time = 2, max_stack = 1, - copy = { 1943, 8639, 8640, 11273, 11274, 11275, 26867, 48671, 48672 }, + meta = { + last_tick = function( t ) return t.up and ( tracked_bleeds.rupture.last_tick[ target.unit ] or t.applied ) or 0 end, + tick_time = function( t ) + if t.down then return haste * 2 end + local hasteMod = tracked_bleeds.rupture.haste[ target.unit ] + hasteMod = 2 * ( hasteMod and ( 100 / hasteMod ) or haste ) + return hasteMod + end, + haste_pct = function( t ) return ( 100 / haste ) end, + haste_pct_next_tick = function( t ) return t.up and ( tracked_bleeds.rupture.haste[ target.unit ] or ( 100 / haste ) ) or 0 end, + copy = { 1943, 8639, 8640, 11273, 11274, 11275, 26867, 48671, 48672 }, + }, }, bandits_guile = { id = 84654, max_stack = 1, - }, -- Sapped. sap = { @@ -405,7 +436,6 @@ spec:RegisterAuras( { id = 76577, duration = 5, max_stack = 1, - }, -- $s1% increased critical strike chance with combo moves. turn_the_tables = { @@ -458,7 +488,6 @@ spec:RegisterAuras( { redirect = { id = 73981, max_stack = 1, - }, rend = { id = 47465, @@ -515,15 +544,200 @@ spec:RegisterAuras( { aliasType = "debuff", aliasMode = "longest" } -} ) +}) +spec:RegisterStateExpr( "envenom_pool_deficit", function () + return energy.max * ( ( 100 - ( settings.envenom_pool_pct or 100 ) ) / 100 ) +end ) -spec:RegisterStateExpr( "cp_max_spend", function () - return combo_points.max +spec:RegisterStateExpr( "pmultiplier", function () + if not this_action then return 0 end + + local a = class.abilities[ this_action ] + if not a then return 0 end + + local aura = a.aura or this_action + if not aura then return 0 end + + if debuff[ aura ] and debuff[ aura ].up then + return debuff[ aura ].pmultiplier or 1 + end + + return 0 end ) +-- Bleed Modifiers + +local function NewBleed( key, spellID ) + tracked_bleeds[ key ] = { + id = spellID, + rate = {}, + last_tick = {}, + haste = {} + } + + tracked_bleeds[ spellID ] = tracked_bleeds[ key ] +end + +local function ApplyBleed( key, target ) + local bleed = tracked_bleeds[ key ] + bleed.haste[ target ] = 100 + GetHaste() +end + +local function UpdateBleed( key, target ) + local bleed = tracked_bleeds[ key ] + + if not bleed.rate[ target ] then + return + end + + + bleed.haste[ target ] = 100 + GetHaste() +end + +local function UpdateBleedTick( key, target, time ) + local bleed = tracked_bleeds[ key ] + + if not bleed.rate[ target ] then return end + + bleed.last_tick[ target ] = time or GetTime() +end + +local function RemoveBleed( key, target ) + local bleed = tracked_bleeds[ key ] + + bleed.rate[ target ] = nil + bleed.last_tick[ target ] = nil + bleed.haste[ target ] = nil +end + + +NewBleed( "garrote", 703 ) +NewBleed( "rupture", 1943 ) +NewBleed( "deadly_poison_dot", 2823 ) +local tick_events = { + SPELL_PERIODIC_DAMAGE = true, +} + +local death_events = { + UNIT_DIED = true, + UNIT_DESTROYED = true, + UNIT_DISSIPATES = true, + PARTY_KILL = true, + SPELL_INSTAKILL = true, +} + +local application_events = { + SPELL_AURA_APPLIED = true, + SPELL_AURA_APPLIED_DOSE = true, + SPELL_AURA_REFRESH = true, +} + +local removal_events = { + SPELL_AURA_REMOVED = true, + SPELL_AURA_BROKEN = true, + SPELL_AURA_BROKEN_SPELL = true, +} + +local stealth_spells = { + [1784] = true, + [1856] = true, +} +local function isStealthed() + return ( UA_GetPlayerAuraBySpellID( 1784 ) or UA_GetPlayerAuraBySpellID( 1856 ) or GetTime() - stealth_dropped < 0.2 ) +end + +local calculate_multiplier = setfenv( function( spellID ) + local mult = 1 + + if talent.nightstalker.enabled and isStealthed() then + mult = mult * 1.08 + end + + + return mult +end, state ) + +spec:RegisterCombatLogEvent( function( _, subtype, _, sourceGUID, sourceName, _, _, destGUID, destName, destFlags, _, spellID, spellName ) + if sourceGUID == state.GUID then + if removal_events[ subtype ] then + if stealth_spells[ spellID ] then + stealth_dropped = GetTime() + return + end + end + + if tracked_bleeds[ spellID ] then + if application_events[ subtype ] then + -- TODO: Modernize basic debuff tracking and snapshotting. + ns.saveDebuffModifier( spellID, calculate_multiplier( spellID ) ) + ns.trackDebuff( spellID, destGUID, GetTime(), true ) + + ApplyBleed( spellID, destGUID ) + return + end + + if tick_events[ subtype ] then + UpdateBleedTick( spellID, destGUID, GetTime() ) + return + end + + if removal_events[ subtype ] then + RemoveBleed( spellID, destGUID ) + return + end + end + end +end ) +local energySpent = 0 + +local ENERGY = Enum.PowerType.Energy +local lastEnergy = -1 + +spec:RegisterUnitEvent( "UNIT_POWER_FREQUENT", "player", nil, function( event, unit, powerType ) + if powerType == "ENERGY" then + local current = UnitPower( "player", ENERGY ) + + if current < lastEnergy then + energySpent = ( energySpent + lastEnergy - current ) % 30 + end + + lastEnergy = current + return + elseif powerType == "COMBO_POINTS" then + Hekili:ForceUpdate( powerType, true ) + end +end ) +spec:RegisterStateExpr( "energy_spent", function () + return energySpent +end ) +-- Enemies with either Deadly Poison or Wound Poison applied. +spec:RegisterStateExpr( "poisoned_enemies", function () + return ns.countUnitsWithDebuffs( "deadly_poison_dot", "wound_poison_dot", "crippling_poison_dot", "amplifying_poison_dot" ) +end ) +-- Count of bleeds on targets. +spec:RegisterStateExpr( "bleeds", function () + local n = 0 + + for _, aura in pairs( valid_bleeds ) do + if debuff[ aura ].up then + n = n + 1 + end + end + + return n +end ) +-- Count of bleeds on all poisoned (Deadly/Wound) targets. +spec:RegisterStateExpr( "poisoned_bleeds", function () + return ns.conditionalDebuffCount( "deadly_poison_dot", "wound_poison_dot", "amplifying_poison_dot", "garrote", "rupture" ) +end ) + +spec:RegisterStateExpr( "cp_max_spend", function () + return combo_points.max +end ) + local stealth = { rogue = { "stealth", "vanish", "shadow_dance" }, mantle = { "stealth", "vanish" }, @@ -689,8 +903,6 @@ spec:RegisterAbilities( { handler = function () - - if glyph.backstab.enabled and debuff.rupture.up then debuff.rupture.expires = debuff.rupture.expires + 2 end gain( 1, "combo_points" ) removeBuff( "remorseless" ) if talent.waylay.rank == 2 then applyDebuff( "target", "waylay" ) end @@ -883,18 +1095,9 @@ spec:RegisterAbilities( { startsCombat = true, texture = 132287, + + usable = function() return combo_points.current > 0, "requires combo_points" end, - usable = function() - if combo_points.current == 0 then - return false, "requires combo_points" - end - - if not debuff.deadly_poison.up then - return false, "requires deadly_poison debuff" - end - - return true - end, handler = function () if not ( glyph.envenom.enabled or talent.master_poisoner.rank == 3 ) then @@ -1291,7 +1494,10 @@ spec:RegisterAbilities( { startsCombat = true, texture = 132302, - usable = function() return combo_points.current > 0, "requires combo_points" end, + usable = function () + if combo_points.current == 0 then return false, "requires combo_points" end + + end, handler = function () applyDebuff( "target", "rupture" ) @@ -1616,6 +1822,32 @@ spec:RegisterSetting( "rogue_general_footer", nil, { name = "\n\n" } ) +spec:RegisterSetting( "envenom_pool_pct", 60, { + name = "Energy % for |T132292:0|t Envenom", + desc = "If set above 0, the addon will pool to this Energy threshold before recommending |T132292:0|t Envenom.", + type = "range", + min = 0, + max = 100, + step = 1, + width = 1.5 +} ) + +spec:RegisterSetting( "dot_threshold", 7, { + name = "Remaining Time DoT Threshold", + desc = "If set above 0, the DoT priority will not be used if your enemy or enemies will not survive longer than the specified time.", + type = "range", + min = 0, + max = 10, + step = 0.1, + width = "full" +} ) + +spec:RegisterSetting( "solo_vanish", true, { + name = "Allow |T132292:0|t Vanish when Solo", + desc = "If unchecked, the addon will not recommend |T132292:0|t Vanish when you are alone (to avoid resetting combat).", + type = "toggle", + width = "full" +} ) spec:RegisterOptions( { enabled = true, @@ -1633,11 +1865,11 @@ spec:RegisterOptions( { } ) -spec:RegisterPack( "Assassination", 20240615, [[Hekili:LI1sZnoUr4Fl(I2rvC4QhwAD2iPQ2Cjz8bFiAsThsTKcIeYcLPiuaaLJQsf)TNUb4dqqqkptomtjd24RFGU)qJoCA43c3Mqu0WxNnz2ttwoDzWSjZFE(VeUvD9mnC7zs87K3GFKrob))VjLePKLrumEwXo87xt5KeehjpxedYeUDFolv91SW9oG)uWSPtFEXZGSNPXHV(u42JSKeQrsQmoC73oYKf7W)rk2vQ8ID8dWFhB0zktQGpFGlk29pOVZszbHB1lQDg6bsEQc(5RANJMr2Nstc)BHBJfmfvWiHBFOyNurjPQJ0KasAA4wd4GDzwoub2CVBVN9(gri4G3c7D(qQEF(HdbYuwmnIKLeLa)ii)SLn06tiCp5axLKXG(Jm)regbmXHiZrf8NWwx4SvoOijv1GXfcyxWxXFLMt1hnaQkI4nQsgCGKfXpe9Eg7cfI6Rk2ntVNkLWYElLwknQVLF36BQnEX80KO9PCEsumbIZj2XUZc6LO3ItcMg0ihQ0F57wPNfmoG71i4eJultPr09JGoEU)0bQsbHbzWjcltb)lI(FpZLqA7OIDX8t75rN5WxKbX5cbntvSBZ6IDp1yEg5JiItCbQR)YpqM77S43X9oDsVBwrsbTdwHksXJaiIIpsK0GsH12R)KZE)KGIoTjXyrhh24OZSC0Sl0m(jTD2F55rTdgCowPXD(KEaEEdWcAC(zQGyk)M6w7(PkyItK6n3FXBcvhdsy6AeuGiAMayOAx)EKDrd0puzlqGrZKy1wiwqHj9ONt(HP0u80Olmbe5ktLbqpXKXrO)oiMLUlCKLaP4KwoPPg9qU46WCLdIbviPI3HANH5m1iOvyAUub5CemZasjm0obk2jkMrNWGAUvqIX0ztgW)7qN6OPlKABTy3TB9OgTwAQlAmpBpmptYtVOtueWfDPuFuY9RERCQp4IK3YjIKi6P9colHAI8U8ToG5DFbj8pYAmD)k8Ag5mWjjbYqGBZK2C3mMyoWldG3GjWWabpOGfjcSp0ktmkV0mijxu2tXMIDlTyUltCgolZnhBGZn30J23K0FsOpW2utonaTzPJkYpRYfTzkSDU(tkPzuXBxnuSgTv3eHPIVstvlZVGvvPPT1fjJjp6l)7trlvZyOteSiPgmFOftoMb02(JHwhFhBVqEKaPnYwgS7hhodWvtZx0st0lejGAlfuUMXJKE5xVFJeTUFhclSyMsNym1Kdcgq1EcA3SKvdh5qH2b4aJkg2j))PXt3mdtUjxvNyAFvUcAMict17Vqclt)CyyDlTrSpbhSnD6GKW2LYTVpPFA2sOStz2uNX40Mb0NME5QIqyHNTk5lBOX1k9dDRDuZbBH8I(mbVDq1p1FDgxtILg4bBTh7OArJIA91Qywe7GUvd8mpHsssVIMPeimWvWtCi4Rv1x0P(D6K2eLqHRi(R3u1hQYLQ)W4qpT4FFNTxl4tfiq12tSyWhd8zdo)W8gGHDFxODx3NYvSuS14TXxJRbsI0Dd(yJbISFzOu9XgxWVmRS5MRF60E4L(sfzVEZJ9y6d)Ygp4mYka6y)9zvwmjLWeo8dvg09AxfVU69rwL7lx4RUwFD0herMUVRT)(V9pF9RV(3)1IDf7(2rG0JD6mxOkhaYpvDV8pvStq)p5mb(oojhzUj5k(ji2blaDHLbDHfu8IgId80u(h6Src03fyEFqfW6qCceMb1ikumJTzM4cYEPQKlJR1FEwlPtsqHtiqCdEv5Vw8sXU)mEiy6Xb(Zxmd35SGdhguZuEa7xQnez(zl)6nmmXIbOH2pFhZWr))RkZM0pj6e28ucQCcSmfUz7At5oAxXP5jyXaLb2NOYE(3)l8L5Fvrpj)Jhbh6il(OT0KSRnAT0vH3NNIfOPn4A75vk9VwSdS9s18ndeqb9FGGMyV0mln)bKxA5rLqQQevhn0lLLFcUGtF8Mc8jfV8vDIaUWsNPJbFeYSYvh5IWTqn0bb7D8LK64E9kWMApnpb)TCAXlgOKb1V8CD7Nq9i7W6hA1kcE2wUR1LFWNqLI8Nw)ZLK)Oq9kt7UP141tx2wBYTh2hXgSaDyltfTq53SjxFu3v36b4wxnRFO6m8Qs4MIgV3Hx1pwDU3QeRU3NzbH9CK0X2EMm1iFtLAZ6NSXcNN0WhILuwOq3zYsJ8FW5D5YwixTOLrUzDR4EZ4EqT3W)UA(eNTn)(zha7zR8UJSliQdnSN7dAZlKSkoGhS15GU5UPYtyFDgSz6TBp0t)aTb)UvwgXkBYcfZ9HbJ80q)Q6M5VDRBJ4Bwo8EC0DtB61Q3UDFFAyf8Wr3WyR0pN7H3m3j95PrM7D388KronUxRV2BVtZ6viSWfAh7QfDXJ19nV(Hb7lC0xEOtP9TBEAu2SOttYJXOGN2Dgnat2M1lg0Y7brp25D0Yyh1u1t3JT6g1WsEVG03zXX4HmnlkfhdRpx)l(YugF7w31xbzqp0PR0XJ7Kfx9Pw01vloYNv4txFhLgRCknwVOkXE5cBRdyfrUQYjuHq17W9wpRYO6zOEBw6IBZvG1CawJVZlfWACERdyEE4LMpPVBE6muUoiRhxgIRj6SAXKrp4m0TYfShQIRB69UHQE2Td3vRHPe1Jw36Ai7HB6DtTiv)KBQBFDoSXdnQDNdely7m17MZyYWNXaIJ6o)hF6W7GT9Ph)7U90TR3x)JlFuxCBqU5YE8m3zULoDOSEwvIKNPF2dKLtQ0fjKJXD6M4Rhd)Fp]] ) +spec:RegisterPack( "Assassination", 20240710, [[Hekili:vNv3UnoUv4NLCJNy0SQ2YXzMzBKb22lANbfZf1trlqXkzgjABbll5ksLmgWWp79CiPKiPOKDMmBlkWolCOip)Xd)o)fon8RHltiCA4x8N4F)K3pDIN)m)j3ppCj)4bA4YdK4DKnWpYj7H))VWyeglnNWtlYXVEmRGKGuHvuvgd7iC5tvPz8pLh(Ktsp7dHljv8TfLHlxUVADz6UWLBttsOYtqzXHl)62u25v4)iNxPeHZRkwd)DmY5ZRYszC4ZRlkpV6Vq3LML6fUuSOqLORjvzC4NFrOI0CYtz0KW)y4Y4YuoTmLeU8MZRyCkjJVLM4rYYa5kwQwQLd5GS37X75SBiLLfGwdND2qS(PQ1R9yzPX0isEsuc8dVQdAYGXNqYDVf5Q3zmW)i5FeHwaPDisEHb)jC05whTayeJYBPXZeqUGVI)kRIIBMwU5OxjDdnpkUy)tP50KZRwa2mkNNMVHP(gFBjLTTilrqefxLFIr4vLGhqckcp8Qfb2bkOyCs5gkN5TMKhvSoAxE6Zu4I)XZR815i4tUjJQ2nYV3)Q53u9BOdL0NJ2eN4n1lguUONYkkmuX2vJIjmLs(HxntpuMwam9ye40qA2JIhD)iWJp(A4rnLYl4rhkkYaRKI1r0mg8HtNoVkHkDg3M(m4cEEfUwmS5KIxY94WtroAzPeV1vWfsjnElALJ4P7PYlIjNxnwEmLBZHyo4ReCE1hMOBuV9hkVUv9iIM)mnVyVGCJSwRKUNKMJ(lGW4pGykxFD6MT8iJd9XjOrF6K(XbQFpGhId)lI(TdfmQqyWxofGLh(cZlUQSKMRy59TxyY9hrk3dGIiZ(EWS2LgVtC4(rS4KmG9GyWJ4fWdxAeyDzup1MBTEDGL69tTMQZRM3rJLAQVMMkVweYz)OJBfkO82bO7Sj9q4zTegCuQoqrWgbT)UGkJtyIdBdw2kykN3Kub0eUHiAEjeBYe5g8TfeYgYt7MOydGw5bHPO5meq7kfrTdGGCikfAwiF3r64fzrpNwcM1A4fB3NldHzGBYltZ3r5E8PEGVvedWT8i5hJsoWe3IWJwqAA2LVJDHpe1itd6qcgmre8hV81iHJDmwh8tT1i2X84iwwb3vW5lRN(o1txAqx90L1WqpDQflUKH4IQjOp7tzXrOV9GUikxB45zcGNrmCOLr5wxvEC4mIgKg0sgTChg)zWmJeuqWWSkghWxiikayqLr29Wabi6vskvIpp1FYqUZ2ibwC6zsJSQUqCXgbxAXaBfpDnSkNvK9SauOesNnJ6kXR(zVg(XlfLjBQiLjr09pvwKMqLw((XtKqZUoNh6Xie9HUDaxgYbieedY4acLjDCUOptJdzdnLrRbFBz022RnfZvjhB6I)G2BofHET(zocqeici17vAq7DA3ZPHg3M73GUTU4XIMqxdeuvPlLvhGCLnJJOBm63nwMkJmaSKBnfxiH8R5u9YfpJVdZYm5fjpLT9k8y)H6K1XJ(Qcc2aOj8s1cjoOZQrsfbYej1SkXqDS7WcmyBjG2WmKC7poS7PnNMn3Gt0NjmGQgmqT2W(yV10I4IQbDyKUCOpJ0yblEACkx4Gpv(eR(aEA1zi)YnAF0SgnTixvGxXAWLKwoSL9TuYTLDcsaV9PP2tcXIL01yrTiv6n2ZpHBtL87cP7KSwgl2mTxkGqF2St7QtIiCfXW0dhnyqm9iLMXJ7)rVIu6(ElACP7XMwdjTqwyLDnzwsPBsBCIg4fnkpVprWz1g9b0y0vbD9UXPT13uWVbBkXczWd5xJsxlY8oPad)rsYoIIjdq0Wv4q5AIhjn5k2PyFPvc3CDyZMdv)H6WgnFyCOJwF8BNYo7)9kRDlxQv29v80me4ZSoORsa)naUt06HlzsLflhFmU5ymeT2rtFU8D3TI)R)3yTnrXXEEupQvtdoEIeVdkH5jXHh7WuFLnkPLoJ0mxwYFFsLgeMImHd3YKbvpx5mAIZ8WCxakIOPqudruBzdUFW)9HlFHuMlsUz5)4x(BF5tF5p)ZNxDE1x3caWP7puuYvTS(DQou)oe9)FxLwITFHvGn5IuXl2JDnfKUTKCiDAVZFwqH1fzzfVi81iqc0Ga)cTewhSCWMtH3qCCBsPv2ICeiLxVpWBfjsvUXUtsWnNqaljHr)5ZFweBdBIb8ZpFb1OPbexRI8xtZHp5d07pvawZsXNFxDvUt9(NaH4fAlXLRDR)3gFXJ7744(Dp(S3g3774xK7x0AwNz71Am)VUxrD9QOUiNrZHYc4rlvoSgq(zcbHvDqtV2GpNsJBAMbi6G()jU8qcpO9ybdjiZjWYuW2ESnibkxXzvjiejnfKVYA55F93X(S(joDp7xVduOTPXB13nj)ylxvQk9BhYqa9Sw6QR51m9pCEfi7k28vjjGaa)ks0e9L8148la(LMgPijVERcRHyP8Q9qgyIR3mi(Z5p)jHJaUWdwd5c(OywiXyIGlv27MzNbBwFKCaZl2urp)zjjyEnpqdm7nYDPRdUXiFAhN53f87RHNVdZupOtlMUtuGqWuKCTpJS711OBVP9rI9hpDQ9GDAX1IG2d25JJFlISVUi3vQ0e5U6tRi7qQwmG6mgF4OK5aL1FGBcqzuzdHBQ39y2zbb96PJdAhYUeBP1cWg02JPL0AOEk7OZbfUOVHe2p1nYwsr7bsw6r)(jvNrZP7L6CWE9tRojQQOv3ey7LeAjjIcWTMJa70PRC8xp6pz8Pt3Avk1ixJ76XaFyRTd5ArWhMC6KXWTEm4JtURDqGbNo9MeltEP5Ldwd9XBj8J7zGzJCnSSfb3RtlCkxd)GrzkeVUhEExJC)iX5Y1wT5gc5IadVW2UTGCVnHZhNnX6yZU8lrinaJ34W1cs1Hgb1LjABZYe2h7PqPDV5X6cL2MHU6rGR6Kwm90jx1hD60n9uzKjlViGNCBQIbXTzyAVFKDhDgP1ELrD7mYpPUAx4pb951i1uh7EXd6KZsMA7PckwD6nde1Od9GxpDm6gEWw1USyMLh49JKp9w8HjJSGgA4N5X70zLAkm3M0wYLb(7Dn19hCZG1udbs7GvcGnDl0xUOvr(JrRGJsehnqOHfbZ))wjFMLKxxA9Dgnfqgj7ss)pKxNJhsEr4V(e4E0(BV1LtjgyRZ6pcoR30PPbJh3HN1FYi4s9IJCjfU41R4v4JwVcdMx)g6H56shGHJGOQHHiXQ6zKzb(1cvpJkBXd20Tn9fTadAtEXseDc)em1FIvBq0F90vbCajoBsFrs7mCRouwm2jKUs73JZNm6gRHxPwqVh9wuXAWsnGV9pRQrogHyN7n3HqRRrxF)1RH(InZk39LI7dze44kpu365SI4m0SZfx8ojBNXy3qzTHv70xcDL6oqcx8W5fJl(4(0)OVUBtacV1TM1NvQCb(1EOoMyypKunDpBkHWBYGXnteShc8ksSu0zYW)Z]] ) -spec:RegisterPack( "Combat", 20240614, [[Hekili:DE1YsoQnu0VLzd1mv64a2T70jX4fjBY0lMnEYQudpmimQmgrjjCNUkx8TN7vcmsyG(XIUlSK4CUV1HaVGVhSlnwsc(2s3L37(G39lw6594Y7d2jFPIeSRko5y8b4HY4tW)tyN2hlBIKeHe38LcwCkcIGvZtGdeSBFnTq(1YG9tISOIKe8n4HCAAkrFsIijy33ZPIMi8V4MOwMBIyzWVtKuwztubviHTZy8MO)MCKwqxeStTOYtizX1fs4XVP8msz8(csAWFcgoNkjCAmEO91zzlsPGzuuGhiKuYbMwuxfStteyJ50ZbsW4rC6w8in5OjQW(RgWt3rtIlkc1)ieTpTvg2gftf47E)K2igMzHvmAj6T(nrR7rMxxojWz0sQihXE9hXUWuxk(2p8rEBi6tkf0ZeLZ9Rt6CYy(bICHKEIekzHPuihVbCXMihDI(mMriNOeW332eT0W3jPuojrIe84KeOsSHAAel2xeNscZkQ58xu45Pi6tnrQ6aZTTQam3a573EJ8LfxgYYcpwIrcfHApdCj(Hx0UQRAfDDiHufsH42HCPf)w4GgGN7B0cS9y)opEE3njUmHueIhcleYY6QjSddyxpKbuJbU2N1HHKveEMYHcx9Vn7uKDLxJ0CkKCAc6Hg9FyLm4DH4EhjMoRYpef0esyCzku)KqwKYEUu5K3054ETl(vi0cWpiFBB5B4uHr4loLdhOGwsc51qp7RqiKQEhtmGASvkZRDyhNCMGCDOnC2B)JXfNCkgQi11UMnF2Gm2yMzgHD)SgKzP4bw9bYyJHMXDxpDPZSdJEVDLWvoAZg6ciZpgA2q71m0yjUlxgpXGzTjRyvTy4nlZE7NH)(OBRbWkqGxy5AwfbERNUUD4DK7lyS0WSAyAXi3uE9ueUGWpc0DZucJRrM1tYHciz(IQeqoYgO(APR1C9eqzYrCaQipgCpH9WUbBo2mIPzA1AlMiNJfaQwe0U2yZcMaxaw3XMO43vO0rhm9TUIWbPvwm2VSom2kfy2q4CYmiNPIKo8Mj4ClgDwReulbjy1p)my8mHqxAp8oE9nu4ocwbRj6lw(7GwX5U82AVbfQDBpM6dSeF5aGHQ4IAHDZpVUswZjZNvNiGmHQhVLteYvjXNJ5Lqiu0jnUIZYOfeTg5tuHqfFf1vvmUSvw8bSfNMamYPLhr9anrnrFvQFj1D3NiLPKu4e5OwEyumQtOItzGtaprltkQtXmdHkZj8FV5PMOFUj6F)hbbrICs8J7AIEoNMKBE64Yx6zTjQKHG)FvWykQSOh3u8jKCspP)biZN3rZ31qabNFGGMAU0sdMFggyz4rTqk7oQkAOwQS(emWbjwuWKlAE6RNWagUWdd(2cytiHulZz8GD7ovNbxHGsEuX9RRaE3FP)sON0VTyXvvr(2QGUEIFY)xWpQ4oAM)CFcI55XV3W83dLFFhkrZhM5BEObFFG(m6Pbi3MLN(RFD0vI2E9J1p1gYIMwtRIDK6BBb2S2XEyW2LMVSz7ncW0YC3658PrNiyGMLG6BHZA7TRD03uUzTRZOJHSIixLo3gZEZ2TVNZ4MDFHLkbGfp2YAUtRP03djykXcowzB3ra16DE)yUDemhm49vb1iyEfJH6dhw5UzLZCsBDMr71213sNsX5nDh3pjhJzYdZpdT4rO1sXf(cVXAUPsFteGBDCiMzhcVCzYpT5jZkq9WdGU(lOMzss)XBVU82Z68PwTboFgvfC5I9qaFVlxqLaFPTNEqyy8o92vV9wFNBh7S1B5vq6VN)D6WJG7gqfHrCdgmps7qFA(rxN5fFV1B9q06LxFZoxLuBAd9ZLXbvdK9I2sVi0n(lDBdlJiEEciBf6oePvRBrQxC8ea0RBDagRCTN04VQfsBbWOoPG))d]] ) +spec:RegisterPack( "Combat", 20240614, [[Hekili:DEvttoQnq0Fl7fx7wzIJbBVzsITpKCj7EyV4nNsT8HbHrLXaLKWtMQCXV90TeFibcgVBn1mdi161TEDRwp8C8(Q3X4qbX7lURC3S6JUUlD(1vBwVX7O41sI3XYWOlHNHhYdVc)nQ46PqrDGGWf4KVMvegJGWlQyrGbEhpvrZeFk37KjYoBw6648SlGCyLiTG5D841Qeg9I3XuACmrTccpY74xtP86a83W6GMiOoOibEpsqlYRdYOCbmDsbRo4VjxOz0Lq4WksOzKoGbd(lv8(z164llze1wyVOiZ)gL5xwirS1IFA)VWtP3EIMSpMCQkjzzmLxsYYcpLr8j5miuwwvQB)fA0f93JcZY8vV6JX5ti1TpkMRBeRkFSnj0Ckpf9ngKfqSrZf89BFB0rsp(TnlMKqY50BeiwmIgsmfygb6Ari7mrSuqVs8ff(XuYUTlqtVH7FYvkHFWvFXNYcJj(jzvm2Rias6YxbdFP(ShCw8ojNQp4a2mjm3ViX)sogLJHZy6dBxare78R72UAHkzriL(uylEovma4OW8isMpAwdN9WX9ENf2d7(clzcalEWuOGW85cOcK8e(ViXEh0bsm4z0iIFyEmWSrKLXfVKVWiBVYcOgR57hZdwWmmMrYdZO5eFwfu09wGQrMDyWi3iieNB3TdQC3TErZHOHwQIrB(HrUgcjWdBh7UZfvNh5J9BM0h2c5H5NHrSf3cDxuOcnpKl4bR5Mk9nbb3SXboZKcVFFQCmw)17nvZdWDKBuEeHb9ENPtsV5SQsrfZITlENa6Sb78fV)ubNF)UztG9o3VZlYk(qZz6b0G9t6nJoO4dNyCBNdoUDGuueNvXnP3hAdBb3DoU68g0y2YXH(08ZRGesrgs4lnkf6kvD2oenza7NuXED0megNWqwvpg67lJnQG7uVGn54PHGxLnbtHkBr6YYiXU9URAOLHgAWogqsUfYHrhI06Tni1m)0aaxouv2rXAySELzNM9RBGSFfaQEhFjKLdBAE7L7n3vRUL)kLZrgjGxvwwWenxSFgZa0iqTbJMFbBkxhuh8jHArYBYVsYJjXGfPOQeObaW4a20cgvaprZJYQanfWuurkH97aPh8Z1b)7)WjisKR8V9uDWlP0OuDRdZFT3R1b5fi4)xjCeKkY6XngFcDoP3P)biuH16MVQGOoW5BiOX6d5Q55xG6kTDudKIwtLSHCO8QRqfe6yEwHyz9N)0vKWWb(4a1rWKGSSssK3xanxYHKQ9ijHvzc4XViv)bv9GYMyV)ee3bXpq4HOrtl9b0VjDdaoiuYtac8qCAhevdPJkm)6b(P10HAuurPFJsZyoU2ntS2b6N0dE96X6G91bBnaw12aXE7psCjBQJR(J)iRU)qfcXVozcyCxR6GDWoPoyHkn33hUo4aumPXmnA5qh88KoyAXos8CKo6D1b2AI37l9jq)9BpO)muXjDOANPA5Q2QRKJy7QLE)BGdgaoRWiaxuB6spcTNU6Kf(O8Z(w(Xk5Ge)XUVZO7CwR)m)UdZtkIUQZzpDARaVf((7c7oz(Gy0MXBU0x(67H9iC1FDW97Jl7u0aodkdOo4dg1mdvfnt9KXCJLgiN22bcSo1DaW9cf07viv4yRv0BsitCq0XDckxO6CnB(tRk)zvv(8cmu7uTK8aoAup4E5h26e3zvNuKrvHATPMDN0lea2naN5UYiDyrGI2bVbtoF96qpTERHN6fWONxKJnFA3axa228HEXWb0FgUBG4M(wVTdROr1Dfwyq1hBHJ3FzQ5hMOhJtQ)FCOcr6kBePnhAa4pO)o04VHeSf)nSO9nCOSt6OR)N686U2m0CFVzFpB7F6L6Ii90Pji20mmtdKnZgq61nYpS1MMIz2UBNU0zwLfFVxXA0rAEnfZsTDziBjo8sKPQ6MSIv09J3)d]] ) -spec:RegisterPack( "Subtlety", 20240517, [[Hekili:LIvZYTTnq4NfFX5qDzLCSCCsJ8mTxATp4dHUtp0jKeKeseJijyXpsvZ4bp7DbaPijeeLD8bNqdS4B)b7UFlC08ONJcZrcC0txp76BMTy(NcMFZ1F8JFokuSVbhf2GY2GwdFuJQG)nuMkkXI96n2xsr5Aa4ujld2mkmvskfpuhL6h17azBWzrpDtuybjphBLeZZIcFUGWvj6FqQKwTQsORGFptqO1QKscxaBVIYuj)jEdPKeaMbJUIuQTSk5kgzJk5B01s4KDwQ6r1Jwe4)0YFjdvwgB)1ynExPDRLKAI48srBW1y2vKvlfi2ASiqqQWXcACobF)SlViNkcyYgHKHHTY2qQxpeuMS(ym5Ib2xG2oaj3IyeuAj2kslKXvisTa(5QTOsjEzgTkLg3qHf5bzsgdxlwU4Yu5QvbviUaZIPRI5TrHazZzudElHNHzWTwSKJNwjx0D0axJ7C(cot2yvIJ7ySBD8fcSKSyqq6wmBFqoD35aDfPopEhgTPgZ5XOMMY9dbDlQMWlGaWlVy(DEbcanohvNHnHLE4T3WGcem4(JRdGIc4kMHYXEKIxsYWXiq75Wh6ed)XlphTHQxWA)2VpOmAz8wcZN6eyuPOWhAmCfoNiqMcfpN04YW5B8SjQkvY9HA7D7BYVkWvugRqx7E8MPqvnxGspfIF9M3rq2M5pwANSNEp7qA4BeVXPlCX4O0ROQWCKJDPZB7wDnYU7v3XvvohesqAqmN0dZotMPBT2b1lA1Aks33fOU)UzELxNS17zJl5U07L)IJT5(K6dqD2Q5ryyZThfS80TW5q95W6dMJn6PFrFxm9nphPRX9uDotx1WKA)c7EbDchi5AKDv))1q5qQddoQ(uCSqaSp8GU0HyReEd83VeyJHETCaVde23gfUdXQ1Gef(3)23E6HN(JVOsujpxaCRKQgkt0sf)bDt5pOsy4)vsy4CvcNwbcHKcAf46WczfO61yEG6rZXxrllP700JGqmeWPVdZG1HyeimK8Mi0IzDrlVVkjvk6KRMA0TSEK055AHHXoqPio(lqHAYpRsoMsrxbBh2OD2b7uhveo3ysCzZaVBTgasgOegPEdgcB6OWdc7H0ywvHRZ1gUOablJn6aWMqzey8dWcZkLWmoWweWszDw2)8xqkbGeUI)9RaxRGKvmuAu9(ET260W1i0KGik7XDymOtP)km4eRtnpBHqLm)7AqZhU01d08osz5apQfsrNOMOHzPAzvk2ErxcJ8OE8bt6GEHBCMwd2mk08LEorB)x4RNmZDALeg084wqrH4ADEEE0VhjGKsT49ReMbojCRGGV8KqRswQsw0J)4(QA8(OdEwg4U)3HjUhOwXe65xhy)T8Yo28IHImQxMJG3ocRdnpDK6tdLY2wZrI7ExbPwklnqFEOQ6Bh5OU5ZEJ67Rq6rpUDn0mqn)ncL20vjxQBk4N3CQl)5)iztNuBYMbXWd8WGEe6h2Scjlfhs4hOZUJ4(sdB1sS9Xw6gRtN(F8druj3RsMzm3lGUHh)KKxPUBRv9uS0NXuFYtZf2iGXd84(uiQbKu9G1rzQ)cMC)1Dv49zogSAnd35W8fmF3MceMp5GFdnMXdd4lYEEtzQxjnYXpEIWdTTE7k8WmxQKxEPRmy8CxdvUNjSSzdCV5c9zZteg90M60vf)iDfCVl8zvEcQ(R9hZpmy47P4iopn4TN0ghptUPhWDZCzvSxwhitMi05mtTol)K90x4L8As(OxFsLF(ZooQPVU8Lg6YGonpM)r)9Ynonl2jEqqps9R3ZqDetPd)7PZyVOBkm3NnCst3TXqpwN6PetKuC)Yrm9dFCITpqJziZuKUDGzb4PcfWMD)n8mlg9)]]) +spec:RegisterPack( "Subtlety", 20240710, [[Hekili:vJ16UTTnu4hMbKMGLPzhxNK1fhGDbDlbyzavPT)yOYIwI2IisIAKuX1ag6zFhsQlusuYodbdyOOgoKNZ35(fAVPEp65gIeyVhUyYfVDYvtN6mzYKPZU2ZvSld75MHcEcTb(skkb(0nFLigl2jVyxmffkbGtZzbWLEURYjXI7s9w1b1joxmB(1ZFlqBgoW7b4lrKWqSMsmpWZ9XicVWx(FuHFPul8PRH)oqqOPf(XeUaUEnLv4)74NiXehqny01Kyq4FtH)FMHtXSI71mWDYy4aAYkK4Bx898ysaEjknCzi8LZjRxiVIUmJssf8BxmVWV4(AwbgaMtWHebsjCJlqjRY5rse4cmkweHdDqXXMKWYZe5S(sz6jH4v5Rx7usGtiDBlSJWjuglcmDjVLe3Cyp65ri4OLHOuTnPO38Wb4a08m72KbcsICyyGQw2goipdZGORfZtBCskG77j7gPyY2nZpzqhj(zcpWUWGiwlpE6s9FTuMMCUmBDrcR2IwtGi)wm6PumN7KNDqE5dXR2OkUhY3(debsl)aTmhX)03duw4)5ssl8)yMGKGpRjJmHDaJ6Ytei2gSWPtIcKmccJFZSrXQF4pp7KH8AAagkvDX8xOM8mkLyKc12PvX0IzYYSw81QoRMDnAMbkn1DsunitfrCfqfoIfoAu5xHiyN4c)vmUWFTCRkGA3rOnVgnggupAvT2uEQosLlFISN5MDospYsbDzc6R3EHZ8o4arPmeRogDQP3xHsaLgl)s1Hvk08Z2V)u7TLA4P1vnCQcPVNehB2uxPoRG5dCbAv)EjLjc)sj0q4(uxf6qCxcpmorMn8jLwAKbuPl26QoKEIc3zhGMAH(UfGPd6Y7RmYEXdvHBNpRT0R5z)E9P6gVWbEUpJzCaLYz2ZNELN7welLKUH75(5F6dpC3d)27GYx)hJaVijjJYeLtJFtc7nf(m8FNtyyW7YPjshDUGMaPzWbbrO0nyUtX9kMxtJJPBbKLeXqqqAlMbNNZLelBQkKKHmg8x4Vkxurxkvj580wuhgkjg27aTcXXVdYe8)oGmZgrYSJdykH41O8yX)BSh5zvtCLMNEpQY1I0luLq4CLYXZZmm1nY0qsaiogj9jSamhWLCNqZKA3PeCAO0eeri4ymKIStInHYiIDsDniohwFdUIa6mRsh)RpYXsKWj8VCoyKrKGitQrP7AKAP5J)AgSIgre3GRP3OsO)iStiRsmpQHOWF6xkRRBo6cdjVf6HyyrLqkQiv5nuhLMNScRd5XubeEVtLBipyENfrHl9CHuIikdwlojFnJ8KNR6k5oXjm4Zhu7xJtrRIXHE)mqVcb4O6rn61FzKm9fh7kfEUapci8HGVz0aSW)2ff(xw4FcyrJnOPW)Mc)zEcOCVJo2aS1MnsK7lX5wTna9zdIUfqoA1UwyLxlL0Bh3oSUqca3Iw4PBtlHB(4WvV5rdVT2KrcXLVyi0nTbEfY8cvJO60i7IXa)rJLTwX2Iap(afuTPItwEkZlmUy)9nnG0CXreq6TErdoMxvhxAFPC(AhF5vhJ8AEJKnF61VuFA)3pz4sR3Btc9pCKqFtvz1btaMo5iHC069PDB5nAzOzUFNNHP7LUu)ZoaDtLyFGwv9FO2XHoNPR4Q)9cgR1D7FiHoTV1)cehY1Pew9UAJkmZm32I6i3WTTUm4ESJ38W6wSQSQ(BYQYMHTzT1tD4Em2g1yTg9Wn67nWA)(YclZTDT1XL)VBM9l7rN)Nm5(1E26WbUd9I0UG2UN(bcLDEQ6rNX1Uv5WdooTmXW4HSL73y9XSvDtptNtvXD)FVTwyy7XT1i1ASE1lSTT7qfzvV8TtoO(vYJpgqLKR)N3)8]]) spec:RegisterPackSelector( "assassination", "Assassination", "T132292:0|t Assassination", diff --git a/Cataclysm/Warlock.lua b/Cataclysm/Warlock.lua index 6a62e7594..572fe26fc 100644 --- a/Cataclysm/Warlock.lua +++ b/Cataclysm/Warlock.lua @@ -185,6 +185,12 @@ spec:RegisterAuras( { max_stack = 1, shared = "target", }, + + curse_of_guldan = { + id = 86000, + duration = 15, + max_stack = 1, + }, -- Speaking Demonic increasing casting time by $s1%. curse_of_tongues = { id = 1714, @@ -364,6 +370,11 @@ spec:RegisterAuras( { duration = 3600, max_stack = 1, }, + fel_spark = { + id = 89937, + duration = 15, + max_stack = 1, + }, -- Increases speed by $s2%. felsteed = { id = 5784, @@ -820,9 +831,9 @@ local aliasesSet = {} spec:RegisterHook( "reset_precast", function() if settings.solo_curse == "bane_of_doom" and target.time_to_die < 65 then - class.abilities.solo_curse = class.abilities.bane_of_agony + class.abilities.solo_curse = class.abilities.solo_curse else - class.abilities.solo_curse = class.abilities[ settings.solo_curse or "bane_of_agony" ] + class.abilities.solo_curse= class.abilities[ settings.solo_curse or "bane_of_agony" ] end if settings.group_curse == "bane_of_doom" and target.time_to_die < 65 then @@ -841,8 +852,16 @@ spec:RegisterHook( "reset_precast", function() aliasesSet.group_curse = true end - + if settings.bane_priority == "bane_of_doom" then + class.abilities.bane = class.abilities.bane_of_doom + else + class.abilities.bane = class.abilities.bane_of_agony + end + if not aliasesSet.bane_priority then + class.abilityList.bane = "|cff00ccff[Bane]|r" + aliasesSet.bane = true + end --[[ if IsCurrentSpell( class.abilities.shadow_cleave.id ) then start_shadow_cleave() @@ -1436,7 +1455,6 @@ spec:RegisterAbilities( { if dot.unstable_affliction.ticking then dot.unstable_affliction.expires = dot.unstable_affliction.expires + 6 end end, }, - felstorm = { id = 89751, cast = 0, @@ -1488,7 +1506,7 @@ spec:RegisterAbilities( { -- You send a ghostly soul into the target, dealing [((Spell power * 0.5577) * 1.25) + 922] Shadow damage and increasing all damage done by your Shadow damage-over-time effects on the target by 20% for 12 sec. When the Haunt spell ends or is dispelled, the soul returns to you, healing you for 100% of the damage it did to the target. haunt = { id = 48181, - cast = 0, + cast = 1.5, cooldown = 8, gcd = "spell", @@ -1822,6 +1840,7 @@ spec:RegisterAbilities( { if talent.shadow_embrace.enabled then applyDebuff( "target", "shadow_embrace", nil, debuff.shadow_embrace.stack + 1 ) end if talent.everlasting_affliction.rank == 3 and dot.corruption.ticking then dot.corruption.expires = query_time + dot.corruption.duration end removeStack( "backdraft" ) + applyDebuff( "target", "shadow_and_flame" ) end, }, @@ -2048,7 +2067,6 @@ spec:RegisterAbilities( { handler = function() applyBuff( "soulburn" ) - soul_shards = max( 0, soul_shards - 1 ) end, }, @@ -2141,7 +2159,6 @@ spec:RegisterAbilities( { dismissPet( "succubus" ) summonPet( "felguard" ) - soul_shards = max( 0, soul_shards - 1 ) end, }, --Summons a Felhunter under the command of the Warlock.SoulburnSoulburn: Instant cast. In the Demonology Abilities category. Learn how to use this in our class guide. @@ -2175,7 +2192,6 @@ spec:RegisterAbilities( { dismissPet( "succubus" ) dismissPet( "felguard" ) - soul_shards = max( 0, soul_shards - 1 ) end, }, @@ -2238,7 +2254,6 @@ spec:RegisterAbilities( { summonPet( "succubus" ) dismissPet( "felguard" ) - soul_shards = max( 0, soul_shards - 1 ) end, }, @@ -2292,7 +2307,6 @@ spec:RegisterAbilities( { summonPet( "succubus" ) dismissPet( "felguard" ) - soul_shards = max( 0, soul_shards - 1 ) end, }, @@ -2325,7 +2339,6 @@ spec:RegisterAbilities( { dismissPet( "succubus" ) dismissPet( "felguard" ) - soul_shards = max( 0, soul_shards - 1 ) end, }, @@ -2374,8 +2387,7 @@ spec:RegisterAbilities( { local curses = {} - -spec:RegisterSetting( "solo_curse", "bane_of_agony", { +spec:RegisterSetting( "solo_curse", "curse_of_the_elements", { type = "select", name = "Preferred Curse when Solo", desc = "Select the Curse you'd like to use when playing solo. It is referenced as |cff00ccff[Solo Curse]|r in your priority.\n\n" @@ -2383,10 +2395,8 @@ spec:RegisterSetting( "solo_curse", "bane_of_agony", { width = "full", values = function() table.wipe( curses ) - - curses.bane_of_agony = class.abilityList.bane_of_agony + curses.none = "No Curse" curses.curse_of_the_elements = class.abilityList.curse_of_the_elements - curses.bane_of_doom = class.abilityList.bane_of_doom curses.curse_of_exhaustion = class.abilityList.curse_of_exhaustion curses.curse_of_tongues = class.abilityList.curse_of_tongues curses.curse_of_weakness = class.abilityList.curse_of_weakness @@ -2407,10 +2417,9 @@ spec:RegisterSetting( "group_curse", "curse_of_the_elements", { width = "full", values = function() table.wipe( curses ) - - curses.bane_of_agony = class.abilityList.bane_of_agony + + curses.none = "No Curse" curses.curse_of_the_elements = class.abilityList.curse_of_the_elements - curses.bane_of_doom = class.abilityList.bane_of_doom curses.curse_of_exhaustion = class.abilityList.curse_of_exhaustion curses.curse_of_tongues = class.abilityList.curse_of_tongues curses.curse_of_weakness = class.abilityList.curse_of_weakness @@ -2422,7 +2431,27 @@ spec:RegisterSetting( "group_curse", "curse_of_the_elements", { class.abilities.group_curse = class.abilities[ val ] end, } ) +local bane = {} +spec:RegisterSetting( "bane_priority", "bane_of_doom", { + type = "select", + name = "Preferred Bane", + desc = "Select the Bane you'd like to use. It is referenced as |cff00ccff[Bane]|r in your priority.", + width = "full", + values = function() + table.wipe( bane ) + bane.none = "No Bane" + bane.bane_of_agony = class.abilityList.bane_of_agony + bane.bane_of_doom = class.abilityList.bane_of_doom + bane.bane_of_havoc = class.abilityList.bane_of_havoc + return bane + end, + + set = function( _, val ) + Hekili.DB.profile.specs[ 9 ].settings.bane_priority = val + class.abilities.bane_priority = class.abilities[ val ] + end, +} ) spec:RegisterSetting( "inferno_enabled", false, { type = "toggle", name = "Inferno: Enabled?", @@ -2481,10 +2510,11 @@ spec:RegisterOptions( { usePackSelector = true } ) -spec:RegisterPack( "Affliction", 20230226, [[Hekili:DRvwVrkoq4FlJgj0UkjmaD6CSIULM9HvAYoA0kX8mGdTjTv4sG7otl1IF7BzmnymMJC0AL2xMjbB)vhUQVQCP4A6(txNnik29hwgwlmSSUv3000WWY1HEid76KHcEg9e8djOy4F)AyyejGsstylDikfTHbrr6U8ayzxNh3rIOFlX9r14A66G2r3MM7683KO0axNTKnBW89JlGFNT)RmSUY62)O0)Vi)Q0)7KqCP)przL(rPprck9PPL(jP0s)CCyoUyBP)lFb(0trhYGFgb63ESURtePGwWuViab4))rL5IQv)nyeDRxqkjY1bNGEmcVX9pDPGg3zx5isIxfaD2fLbqiAxeTb42LDcYjuCobXXzp2dNGJj4Is)vL(ML(AGnGYFct13Irr0T6zbG1SU036MwrNVlXJ)ZEmlHBpE87HcAJMolXAx6FDLyLxy9hJ(GsXmfAXSvia7fFaYTadcce81dkyf4BpF8X)chSJwzBlhueYyVCEyxfuvfjLLJdsJFePmw6euH4ipuEml1HLPKtY4F)R)Z3l93Vq)ADZRm1VrFzP)Nf1Uh3fgQxDq9nPVKu6F8yPVWhZXXqiopgX8oJXJR(uPFg4n53Mv3FCfVkW2Ovzl2fhd2mOZB3LaND8GJxjQ7tjBEbf9mh2HV6FLWsIZg)EUIFrNDT5rrz617Pc4k)zZkm)Cl8N(md8Be5wYs5)Fh2NBhjsocNq1b1mpDpEJxXweiiVhtJOD0LcmLssEQqVEdXOcaHdvRTbxPPDxrsFfWLhEEkjqMbvP(3H9Cxb2du)4cPnnCOWMuQ(UKckBjput1MorPbGA7rjX87u2j2IGOS29SUZEUaizYr7H0NMFpcknLeWDjSp6rt92qG1wZ4NfYFvOktgZrjbpd(FEIMcTZE1mvVw1OcHXdoLfCgoVa4AGigVyOkfjlIGZRCnmvkinpFxfbIEw7YTcSD9MOw1xx84P4dEb7YlW1mmQ8QwxlGoBVEPHEONstomEuFmkb1qTAAWnUzNjkg2SuDk5DdNWjAdmPlycBpWCWzq5hGFpahHZrN8w3ZaKWy9yUqpsidPGNlwVYu736fpyVQjw4cH4GlQJboECImc7vCvs5EAHUgoT6YHcMgOwlbPO4Iu5MTU(3L7oc6(lQx3rSocgTZOZ(fRCvmfX2obhcIyhGzNfmTfuRF519RoMQZZurKngVX8e2IHfMmRZaPtVB5itY0LfAEWpIptMnrvW0K9VTuHEmkpIeRxt8tDfKrR5uVNU(5EllrZROzBqXxmsD2IjElHif)G1YpBfbgUPWUC9L(3BmlEYXBc49usFYluBz06vX9Su4FM2WBUUF7ZPKVsmxEMDmJ0IGYuJj1eypc0gVPwhu5lynFDJrf8TfGyp4K)nssiopj17eEnYTEHXByqvr0Xu97)VR4OPbt29ixDDSfFASYo8nhMHQgVnaNdkjOURjdzkVWi27FzincNYz7XodhRBne38pmxi(QgXfLB7PAGeJYI)k9rd1fdtqSGPoDZ0ie5kpnJBrmNsvb0HjLp3HKvUV9ScwWc1Jn04oxNxq5jSByxNVfNLMtzWFlV2Ak8wJQH8Px(a4rYWbSCkhiKjKeHDD(CPVQPJu(a)Wf6ndE5IvFPz(kxscxjn0KJh7pWeBZ7muJK8Wpya(P2jrOX34QXpD7qoEthhsCEDN70nb7uQVv16pKd1qXzngq9AZDysAgP5AdKIRn8SmkFOr4GiLMb3LSPVTQOs8DttG3N1JqCT1ntIf8uN(GzFTw3pS(nIolrVp8Rx82qREwoCFV05TNX5zx)SdlEQLc(B9c2TClPuvqynJZa3y1RE8OYUvxpCNQscDGwnRmvHxWEVH05u0gc7m96Bz9OpuxBQ3P37T4YQptwIUl(t)7oSGrvH5zxn3gkEDV5Y3Tz0TlhLoYPKH2jvuc66EWeIDf0D7v3yODQg1AldnPw5MwnvnkRUhsKJ8KOSnnoECweMN8GlLqLtxEzV0XvI5J8Tk0BGGx4uReGQOC)Nr22(rfwdRcI0e18qkQw0UsZ0JvU4WzTZk8v71MFlnYmv60SsHhFEFQGvnB67HVua7zLhOjncqvi9HNCi4xNfZUTPs9QDSsxkou2v))AMSDkbdoQxjzr9j69MIl78gHvMkBerbDnhVpSqIwKHET(ibUlSJy39gXj3x0305iPIDAAixmgKszQVt04uvtdYOwPqQLItPO)YEECPcuQhs7K9lm8Wz7ZYl1vU9cXOlwicZUA(tdP)sT)9GWEWQ7)c]] ) +spec:RegisterPack( "Affliction ", 20240708, [[Hekili:vN1)RnUnu8)wkdYTr78AsAAVDRPWDWyRLrhCPJ9dJZ2k2YXIkB5jj3Uaf)3(Esk2ww2ojTJbBCC3fl)(ME6959fz)P(p4VkgjX(3p78zxC(vN)EVzZMD58R8xj3wG9xvGIEeTb(rokd(3pMKqjrsclVk8tyjsrWwkdfReKGvYJaI8xTUKqL3M7V2r6Z9MU4Ilw8EG2cCK)9FV)QusCm2qjwe5V6HuIOku9xuv4oTxfYsGN3PxkriHxNW4vH)m(rcL4bMbNLqOGY)QQWFTaNJ5v3zyq4vWXrSS1i5Pl)UNy0iuojkOGPL2GeLGPbiEgJFgjz56YKep9tEXSNhHdrzwglpaymTmxI1mEsbw6HOKNWJWdRKgKI4pHfsf96NfWcXIRN3WIIWueO5G1mQMUyS2K2TkoBnhfHn2w4KQqjIVbuCkgrLPEfrYQWBQcNTWwIB4SYIGOsUaBjXSTML0YAI(NbAkXXDmhgLTFETPofboKZkbrXssc2efVCQ25SZm3XUMkVYIxEjMj39ehNHi5IRJqczGKKHpLcXs5rBpDQTcIXkpVY5PKBFFoqszUqIwtXbOMWxltFG32BxWlZdmpfOc)otHgwkK2KeHO0(0GyAVKA9NWbqCzgblUb2av3brQRi5BOq49dANrv4Nzsu3WsXRj6st8B)SDNYo(JxddrmoVSWXP2UyZ5OKe9O(C8F7WJ5og4AuUZErTsJaMUWH(rcx6Asdf10BNoPhy8MzUAlMd80e)2JHRx2JddYpHcXx22feZHYJWxFvVd0s66sUEpKXEcc5gGGGech3KURMfWL7ATnOnNxOYz2ysAHOwruG4pQp4gwZDZSnAQlR8A1Bt9RUQkecjEB5dF5LEoUjrmgvXONLlU(u9g3WkkjbhirfA)kkhPpTME(lVSHUTi1R(1E4CvCs8eTv2SADSI7H7RjnYSDPr(i7hhk3bWup4z3G4bqPZpZqsW(WYU64FmIzUReviuiLqaAdlFRf4TZ6da4ortqbNW4e5wp1l6e2zKUnKO9mhJJvIEaNcKxAsFFVJm7X(qWP3OyC4A5L9y7OZjytVb5fTnIQckvSiwoTxaKUybysYuWcO4mCUumGrTysD8snd1e3Emp5ehlZBl0VZnlQRhQYReU6zurv4VW2qIQc)6z1qyX3m0XyG4zdeSBWw34KE(9LZ8x9eMlaH10CkS0ZiEoeUi8x97F8Z3F79)0hQcHQZPq2gswbJl31257a9)UQqo(plH0MXvHcguwlevkzzqriyHOuu(gSWR6on3jmkL9SkseiIJG2xFgZH1HcFaXeitLurMz7zAXTkCDPSMUCMw1L5DOoowrm0HnAnsG)a4ed)wq1UUFLZ10w9UUKn9xNrecTfjklS2BBunpR88soj)rWT7P8b3knmP7FfKASYULPiyzm4i3QKTbZPmWiAj0np8kcyO8Ad7p(nbwjjCM4lNb7SusuQn1O8TTAD3Eg)xfqUcIK2kxBxqTs)byebETAEWiIQWPFrj0y7LMzP5NjuQ1oANiL1KQ9g6LYlZwJnNZuO)JQ7UvhmOw4cN5sGx6VcIdszC)vRYkt4Kh9xPFLAejiUb(V71ZDTRUG)NmJ(WjA0omJLD2C)vWlGw(iWOwhk3Dv41vHZbLeTJZgkQ5fsQRu2i87lbSGJLnM23tYCxZyasvAA(OAAFP61cVTtsvb(taKYqj9BTGossP7lgv3hr1aTjave0kVBAftRfTkUoXVsNlgvN9A56ieCpRtPIlhvf9K2YQWlpK4U6GXcn9IbEKRSexBXiLCEVJC6sMUgeiC7IqkeIuD9ah9(Pk00L4HkbzcoRJBgQyKrywOOHk)PSUPNVpu8bkLnoYYTY1Grdl7fMPRdcMLuzhjOsWNoqIMEGSxBxZdF6T3ehdocPshDMcTvWwdWEu5j6iyBNs9CSniERXmvUMHIj1ZwAReROKUZIQg9aI3CNhvhG1mtAv4PqHbZCP6FpD)PcAgQV1IAN4A)q8dCBghmFSlAVMCNR(WumlWCDGc5(W3UJYCaa80oIwvPSofW)bo3MBGwIbrvDb(JCNoog3aN0UxZZ)xGv7tkJu(SPc(GDRSxiYW3IJwQtx0VMFmJLTFGZRRXMU9EC40KhjARN5ylYRx2vMTxz0qWV3Az6XR2AU7MHBRPxvWX7RXPGL6gN0sqdNgiDNLuvKnouO31nzW4UMDZvuPf34aG321q107XRTKQH5bpRm459CPuArmF0IYthhFwFJvgGZ5gJy4BUsBfdE7vAMTcmRFVw3Uq43yzHzduwqQ(Gp7(skhmHS5Zb1QFNpb0(ZYQ32TF9NUbt613FY0Jpt)4hvwFyi3zRS)gs(T)X)Vd]] ) + +spec:RegisterPack( "Demonology", 20240708, [[Hekili:9M1sZnUns4FlU2Q8EiEvKKhzNzJLpS1wjzMdZfn7PuHKqKqsOmialqq7vx4V9TBWxGqaKA8KS1uJljY(jq3F9dfTk6Rr7YiAA0xwVC9hw(4YFAX61RFCt0o95cA0Ucs6lKJWheKC4V)BAUui5YJNXxDMljzOekLvQu41r72xX46pjI27rSRwT(bG2cAA0x(y0UtSSmAdL0Y0ODF9eRSob)pPoPvV1jYdW3t1mPOoHZk1WRpiv1j)g9fgNTamdL8aJdkFxE1bf7L6KmWiR)8FRozNMO01j6tGCoWoEc(8Bm9P6KFHYpwruzTYYqGX1aEKv86K9vhq9kYm0wQLQ86p3ygLlku0uz(EI(h2(JLv5aBXhAf4DSdBlPAntCeOJQJ1Vb2m8TBVb(2ccN9kDobDQsOPkus38(efiJyIkxAKb6jl6FYIm5BIaga44XCM4fJMnS1)Ofvf(z6vjpLiyPXfsZvKxIYPAcO7ItYs421lj4vMig1hQ9E)7wVhaty)NiQxPLAZ1a(9s4bzLpDF9N7zciLbh1Ci604PAw6l4PAg14ZDVBHIMtyIYNW3hRz5uBjKkvQQc8B(KXWB9ZTZPw)10Odk8mpXMlo7anwtkqYZjcYIIu9tB2uNCBDsQuYXRwhr05dRwAlOYZcsrjnUSqHNTO8MM)NFyLn)JO5UkqsYdhIpMMTDez4fW(kLy8LXZRUTpKKbb6Co7ivKsb392ERyiCO3fEyMyb)5I)vPkvLiU5BXiO0Di642Ymv4Rs7GhcNFj3IqmJM5SxXpVAwZJinb84ZFLgtf0CgT851yQXqgf4da)75szw8Hk1z33ekr9MqN0wXWTIOnddnosLIm)rwlFhAbI7zyWw6VZ9W2EIadqJZKY8rjRqXHJG9JjNXAzCgJ(8QnH4MCukopd7pD)YBVPfcWwREmQ2qvM4avji8rLnAEOeUHi750mF25h2CRf8227Df)jOYfQ9Jv8mIiqkANPCIaHvh4qiIX)ADaRhJ5l9xVLfe1l(8Oqz7bQHfoE52MYVEVEhx(A0z5OkNxI30zFOZeu5bm23J5Gx8JHHmcab9b67psHubnvedvmOlk1qtppVD1a4K19ymCr6dpVrRHGugLCdg3rLSQioTsvAUSBVRZp38OgOgZhJnusZgdOZLtZ7GvjgcTI3d(44YKsDB8vm6GnbzD(wkPu3wXeAH7)ucTM9BMgXWob)1k(FhoiG(4orH)sELW4ywIJIVU4FX3k8W9ldW8FAOdgP6V5cVNTFhPTgPWePmbv12l0frKxqFt4ptziV1hprjC9jt3iR30LRKYYnq8EeXqqHDHhO6KBRfUV8BVWrdFohvTMDgKMqG0(NE0L(taKqNpctRazwnSuUO7np)Glpw3zPNt50ow2U6sPy1E4fYPV10zLshLxkJrH0ZkhKQlLHDX2(Q8r7ELQkbQ6hRBD0U3ikbcz2nax78yntYLZklXy3KYQIcjomMzGlaVLQyPWKxqhOVGwb0MqYN0nmzAQpNkYa4hy2mc8ykO4ZOSzsftdFccC5vWCJWRGj6OQ)jelL8pQt(DdGXN008Y)4oeMGLEYMAI48GwRtesu4)3colLP5dYnd)u7GHDk9NbiivNA(AJiQtw9hTZjo8O1wA(ngNB5rTIu3r6W4NIQ89ufQ4soapw)5pLJhy4d24mbm8YODKk9jPQFQ3ODMxHdJluWF)IzY(2wiI(xr7sbxaoZjr7Ub0ylKcwRDkW46KNGgp7aKbLAmdyg(HC4inem4OlCEEfROH2RebFq4JbVJ2zHEJUfOV7VwF7su46KNRtUF5G2Stwqz)HVhz)ekBZBVbxdHpS(l1SP4bQ6nxHQhyFafb59HP41BTHHgTSRp4EhBOgvWJbvGNQgdszOadkKFkOqUOwI5WC9g72bTQPyzMDvKq5)ru((csTukgXURFXb(sv6fW45jDIR)tD5s2hf(h(SnOAal2tE3Ol9RumE82M2ONorRpWzyTsdIQ)5ZMq13AE3AMCUyXN2NA09gN1Nm(YTjtOJ0rTg4qy4i6H9RHhxEpihuXWCbthHBnWwdqHJR2U6QM4tOP((iZE8I(HYDCKWHbJDKBSY3Dg8jK7mtaGBNxw59J7vB6aHjMMFuqvtQYvIuovbGvBcxaysK05K93xbGWrKHwoWuo5hAaphf3TDCC34Tq0h)6uXnyL5rrHF8V6kqRwEf5wnxVHZBNlry(1pmoTfxPGX4c3VLxJZDNexLDf2JUwl2dg)QWWh(wBXG6Uy1fG7TTZ)MBfgMuLvlVW06xBIX0CHF679XzDhnD)g38BujunyOz0dKkU3k8t3zv3KvZwIDMEYE3GNUf4Me8S7NcWCIEv)CaxC239llmn06CcfITFWcSW5xzOhAne4Y7RuD4KRqjrtS5FZbZdxtrF7u)WL8))GD40I6K4WZe158JgmkNc7hzAiypc3SrWRjCeV4(wsUNcTfzC4N3Wi71xNpsK0zWd9UYtJdAVY0bTzTTvVWztlz7OTUfV2GSHwQB3HtL(mdc)3uxCH9bN9QzcIFmy18WaA(x5wd(IvViTp3hMLh44GYFGMMSoGs7nM1UXb3McVOurq53rXus3fEJ40GOP10GAaF7uspm(KNPaT6YU7Fr)Vd]] ) -spec:RegisterPack( "Demonology beta", 20240614, [[Hekili:nN1wVToUr4FlbfW5HEQBCsCoD36yGwu0DtqrEOol6dfRKOLOSjcfPwkQK6x0V9od1nkArjNt3w0hohelnZ3CHZnokyvWRb7siAAWl3EZT3FZdRUF5T3T(MvFnyN(uonyxoj(nYb4peKm4))l0mPqYLhovfTNQjibN4ssccuHSufdefSBFjJRFseSFe0VF96VdOnNgh8c8hhzjj0AkPfXb7E9iROkc)hPkQr6vrYu43XAMuufXzfA41Psvv0psFJXzld2zEiQecf8)VymmQGSNttc(Zb7IvmnvXa99QQinl(nM4qv0IQOePEzXrsI8JqIijmLdM5sfnJWeGm2ufftk0HAgA81kaO710VxY1bAW2CKfAhkwEnT)ubO9)iaDTn8dL8RtiGr8Xrk8)K3jmoYyp4hr1qMgEOKdegSRSGc)e(DCcAwG8U7sTnnrDGQxIkFOwgMWavzBv0D30lT9ebcFyIuMHyF))jyVbX28wG4e6(Y00L7jkrRawwMFUKjhKItOOxFbIUN9yPsvw7JbEFykEB0K6tT6dyBfX65iuF1luguYGdDQiee)quyIyMGQWGDaK)GxqA8BhPeU(4Y8yTXTD7AJBZiHeAmlJGOounLL8WuMYG)3H4pw4OLqXyZD5kASmBprpwsrhaLzqwDykLFOKOsCIGrvg0s9r4eoLD4i83FW0hRI(Rn03KkAiWuFOkAhOS1MdeJJX(aTfAPkZ2vuq1A4mTyzofYW(asGBdUGdn4zljC270XYWgC82aZmOmIXESuaOmDgL5ebOnKOYKQLGFw0dv3ZNnZPoaepb5mXBNFUIpTlhO9nVl5Xeblomxw)a7Z26q(wsZGsXGEKFuwWkCi0FaDN3X4Ug94Oxej4jBiQTthGBShiKuLux)8ohtfEZ70cDD4zrsF16UcdCPekexQo5yi(JcgAiT(B84HbhXCo7avepmFDO5mtaWa37W0EiyIBswdjLkY0bcnP3TcUlHBaIPTzkxyjXPQ0VAT)k9twYCoShVsFVaMUs)mLynEimShayzHggbamMhRIUVVgPDvylkwzOiwk5yI6sRwPHqV0bT1xDZzLeqfVUa40b4T5jmrkvjKHTu5Ix97j8Uc2oTY92YFqupOO)Q1BBL)XI6tBRJC8xsyUCm7ozNhQpSck(U9Lktp8v(ZVhv56QPIae2i350l)w0LQXJ0(yLB5JUHuiCOdH5hH4aQ1JPgwpkTqvxdKiPNvdCQ65(DtF(Av(R71K1ZeHzuoLgQiIdNncCxGL)AEWC(GpOgTcyShohNHXCm(GvgqZZhRO3it85f)EAmj5GeIpfZPTVVzaA3sFooiQF8BPyk0DRU11Xbl86fz8TtHQ)6rJmJJvpen2QlLuYhDcWPNXUZFm3iyZmD(3C3v3jGMmslJiiDduVE9WwbdLHVgbCwk63ZNU37CGIH2wv3loji5qL)ICfw5Pla0x3GVTz58xI0xPWoZOVO3ahZdxYuH2fW9hI()a9W5kmTTC)wI6uLcVfTXbwNUP8iGJw3ffoIhCFMUht1qhz8DkmCcnJrRX(2lZgXgst3pUzQJStHXLQcQLbI)m8GswMBpqK5b10oA)YPr2oAJl7GXuB7DQQaFv7cMGBB8brjmjA7(h)P)(lp9Yp89vrvrVI3oLLLlX7YAUV61Wz51vrk6VucDEG0MczgqdPulHRFJpi(i20Ryz1ZgUtLCU8dZ8cy)tWN(bfBLbjYaXmrZvGRv261uHPG6w6esJOlfdOojbjoHOj7jf0VV65QOFhQl9Z18C1ZZyjWj2LAj)nMaE1xbK(jrrzoIcsqRsFn2h66LxGmf))RZZENtOLuVsXCLmLXP17wmJvuyuMgFqJvbfMG4WyaEOw9ByFz06FsxZKzxkzurcQY6Je4Xuia8eIntcXWNqDlMxMGjCugOJQwD6FAwe4tAAwXp)fC9FS4J2uteN6LAJ5s)x5CwmtZ7X126Bf6FSkc09gX8AneqHKFUz1l9p6wlj)bJZTSOgi1TK2Vrhrz2EA9rmxQHJZNYAdAw7Stw4LqUAP(OufSBxwzQI9gUckJFV7j1logV6sMS65Ftv0VQlyQ65AvcAu0U6RF7J)EN2dFHL(4OnuwCv)QeMbO6X)rKUASnqnlsDlpcHyK1m5r(TBlYi4ZwR04m5mg14enOL04K03GgLEN9Ty8lv5x)BwbK5uOFBrBUdZvByciTD6tJL2UqcR33pJPpkCS7ohTBRFih3IR2HarYBNPCZfnp5Mv3ydKZGFiEtZ)2hwzZ)aA(I14IpoGS2wfdDNBxTW3uxlMyIRnpmZP54jt)3suoJP8fCaLhH(2(pkTdqCMFQMBHpMr1C2J4TRMv9GMXOego)12BXG7(CcWga(7x1P7B8LQDL)rPDHW56(Z7YA4R9YJDmm(glpZwSw)NDc5IZ3F42vR9XTzhHZW(M7UzXvJV0rxyD3S3qBAWog3(49lgF3IBFC1I52PODQ)qz3UfWb9CCwDOlRdxiONu)wX0VjgJFB0ncEgt(Qz4PR43(U(84vg0a98QwwJ)6x4Eu2pJ64ReXGKvqRTUadQWJDlLfdU7ZWc0T3AXhV9ALO)i18b9gKkm13QEt33P2mt1f(zNDe8Lf3j(SP73DJhM)8z7d(yYoOoZab2(2loDXWt)32TVi6GpdSRmKnFQwK8Z(GVBUDDBmQ1h61FiGDBdO3I7GbUV8Zx2VMphhZO7)1LN212AsIhDrVBFWLhRtPb758XvNJspTBodNUXdNfLwkphdtW7S8JuDoV2TjT)y16GG)n]] ) -spec:RegisterPack( "Destruction", 20230204, [[Hekili:1EvBloUnq4FlhhKV09CTDYMBlKeOh9d92wwkK(zBRylNiwzlJS8EeWOF7DKKF3YjPuklSjXAMNzMN5n5aVG)o4ycsGdEZ31FTRV7ghp3nF175GJIRf4GJfO43rNHVKJYG))B4sbVkwqy5QZUszOefgLSkEmCEWXtveQ475bNSd8Aq2cCCWB)sWXlKKeSrsCz8iWLr)aXPS43LrfCcJtexLrPmUm63XVtOKGJusPOuzAkjfdF(MowqnUwcgjUegZi0GJ4C0jkoj4BbcWBgjfhrYd1amskHcGuufv0bC)XhJbVbZjidoFGdX54mcUugTtg53JoVkp089qLZAC5qdpwk6CMhc5dYiVhdzedRGE9IqFbJOIlofXcJd)8JHRML0utbhhZYoHSsoTqLIPHiEgJBsUCsH55)6F9NYOpw7SXX9lEW)9LrFEO3DQkn1rROtc7hqDqDTmAWd54miNz4AVxCVnl(jO6blCmKzVVvwLLbHijR42m1z61IloQapuGkCAKrgTQXJ6or5P9W3(yf4BgwUvWmFoPutLXUbtwEbb4Ns1zHBwHSw7Ace)me0jqQdLhJnmLlO61yQYVuNwQmNfQRZMyCsilfAG48QMm3dyAGVfK43j5NTBUPuDR5iq(GQgwmo3DtS2SawdDzkjhhgNeCCRfmgyRm2hk7OZgL3PNpbRZ9zxdJR4L4MQui41)m8mNvva607p6hdCP4cqzuCgohS)9kBBcDt5Fct40srJBaSqHT0CpFKd1oN5A6D0OWPm4TJrlre6ml)QcPN))SfA7OO5cIvgEIbtMhhmF9FfB2xKmIp9TwgbO)Y9AJH1zdKOc4hW8zLtecAdxYlB6AfKmiWzHjevJ7Ez0wxnzLHYrMr2qZMV5zK8umpNf2rQQORbNjd53yvJbvpMd0(4sZHSplOP1zyRMcKLlUnkmjOax8fxtam6HQ5w2Qj8gvItYJbRBPc3B5sCB89Ho6(bBasySmTDwUbWAETZol4fRDVr3MEk1hyEP6yZTR88HjbWfMYbMfQ5(EwbJluveplJm4iJ03xYr(QA)nlLqbU6ZYiBRJLVA0P0PBt)pT)N7wO)ejD)KT011Z3qVd2oBhP(1VkO(u)gA7I3M3vcBFCYQ5JsSdLPZv(QmQ5VwPGZMC3NNu36zp8jy1X7725Fx1Gn6Z17G3D1tfckf77E35)CVZA7BTHzPk(0lFmLSkySvfVA0AQj63UerNxAgAwxBB9ZoVjQoynZKtkzu2T9Pjk8FmHBCNU9eZ8Z2PyZdY5BfgKRnQ3wbn6HDJ7NsNMPQkdnVrF3(TURAh2DW3D1KHZ11ZgLVBZmPwo6AgiVFRY8ndDxMNnc05p7EXTUU7hEUluV1p4DQFmCcP94)ae(pqXW4XFlqLauwmWAy(tpAqpPQyS)Y0pn6gH79S0XUE1KltROIPio7QYpeWTvEtHRRf0cilPJ1SUf9BRc61xvcaa0)2YZpAWRiJQexuVq3FqG3m)lFdcMeIwA9oPG)5d]] ) +spec:RegisterPack( "Destruction", 20240708, [[Hekili:1IvxVTUnp4Fl9M0lwNNt6hNColjaB4fyRfd9I5EWUy4yBfB5yHil5xj52fGa)BFus(7yNKHHHc04ir9qYhsrsh)5(V57fJuy)xx4U4b3p5U0zXIflDF03tDih77LJI2J2bpWqzW))FyPsuePiCMEVduokwJHKxiIG9992wqOQNz(Bhd47DFcKnhh5)6N99sjXXyRKyzupWld)ajO8O9LH5ccxquhkdt4IYWFfVNqj(EuIuj1QMssWWNVA8fuLPfJrQ0GioH67HzOTuCS)p7RaRPNuceHfyaONuknajOcQQb42T9IaRbliiloVJdWmCgblldxvgUOfDrblW(CG2yTMCGLhLQgJ5QqEtz48RdzehRH((jHofJOQuN8iL1GF86W1WsgQjxGJ4zBrxGC2wKK4GezCHtm)diIE8yzyNff4mG9TS28LUTwrcMgye58u0nqQbw5yzQ2tllYYa7NKLFEAyh9qEQJ2RcuOCNkzkdNvzKn7On(w4Rxwd(dDZLY52phKhPdhJqtnwBkcWpHAO4Zg(V3yAkKyh40XqCbXIWwYd4UOdruTDP3vQv3iuxJoX44aEcC7qikYTRDfQg4BfjApHTBC1nKQRvhbIhuDLG(XUZI1dtGvxtMsy4GOyFVNgbJo6kJ)UwpMOH8c5SXytSp7qquHqIRsCbN381GDcEroCMg7XSGv2lMSw5Wg4I5kNAEP3fbTqbksgEe(RMJBjdgK4Sty42Ef5gsFN3b7KzWP8wV5X)lV78uppjfXLbB5q92(oYN(NqOTjhxIs7Kgbkz5KkP62M(WbkEqmrFHBDz4tUgLMHyiBDu4sYc7AsSsbgLdHLGfmEqd3OR(vH3GkWpC2t2jrWUH2K)8KMSnBFG5bkzPR1e6T4C3XdoW6V1vVrWvTrsZMp9fPXyUnne35Zc3IGl2q9PyopZOMPVwnAaQrn30Oj713kmBZo2mA2rT(r74SdM6gqA57yHuVB94mqFEycfgW1sFV)4N(9xF(1F5lLHLHVLc2a09HluvtSCRuDBzOa))licDMGKNbIGku8mGtHfG0F2oS0P8LFdiAiwba9vMSixdIwaRLbivLcCliA5lVLsK6XJ4jeQwNWxYisPj8xD4klyhunxqIaVvqy7HsKoAl9zL9qM25zywSwvQueSmgC3dDh9cYbOfX6(byIkfl(cyaHFFz4F(vjwJeot(T7GH2sjrPDLgXo0Q1Yqgxd(FLtjrefTf3y9tALJBv6pwgc2ELAEZcbKY(nnOXDxArhn)bHs74rvqQQf1WgMLyfzBX2WbfQDu(YZz1S9JTeUzityti5OqLctK45LvKii71tbz4960gPtZyrF36FOzeM7ijRhmi0XJNoe0kyaOYxgdP2Xz0qDt7epJlE9TyTWJxLE2PvOhhQ350ieJefyNSrhjQ(RwCqObtmENEwX1WNG67piXQfx8yWOsNEUnZV450(I(GTLvxT4XwJDSNQ9xP2r70exdZyfNM1R))GZx3G2eGQAknBSo8RAk2maHoDYhStBh5PmTbh4FzcG1CAAhFIDw338eF90MVt6TvfX0qCA97vRFYDwDtQnlCNnrBXJhpPz6QhMu6Zqs2gMnQC1s3JhB(YC3jYzA7joKI62PzCxCd4HxrKSbjtFOjylaQBoxpUnDccT4d3005wTV7XD9gGE98rUhE)SbV7HMCgI4jVzXvbCDI0q4AUyncitDMoQU6few)0yNVAoPoKIoPaaO9xo40TA)5c0Ze4)3d]] ) spec:RegisterPackSelector( "affliction", "Affliction", "|T136145:0|t Affliction", @@ -2493,7 +2523,7 @@ spec:RegisterPackSelector( "affliction", "Affliction", "|T136145:0|t Affliction" return tab1 > max( tab2, tab3 ) end ) -spec:RegisterPackSelector( "demonology", "Demonology (wowtbc.gg)", "|T136172:0|t Demonology", +spec:RegisterPackSelector( "demonology", "Demonology", "|T136172:0|t Demonology", "If you have spent more points in |T136172:0|t Demonology than in any other tree, this priority will be automatically selected for you.", function( tab1, tab2, tab3 ) return tab2 > max( tab1, tab3 )