From 4265108e7a80c8038a77a66c05487791d556a183 Mon Sep 17 00:00:00 2001 From: Hekili Date: Wed, 11 Sep 2024 13:37:02 -1000 Subject: [PATCH] Fix #3707 --- TheWarWithin/WarlockDemonology.lua | 44 +++++++++++++++++++++++------ TheWarWithin/WarlockDestruction.lua | 10 +++---- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/TheWarWithin/WarlockDemonology.lua b/TheWarWithin/WarlockDemonology.lua index 4f839e79a..4dc6b67ce 100644 --- a/TheWarWithin/WarlockDemonology.lua +++ b/TheWarWithin/WarlockDemonology.lua @@ -601,6 +601,7 @@ spec:RegisterHook( "spend", function( amt, resource ) if buff.art_pit_lord.up then summon_demon( "pit_lord" ) removeBuff( "art_pit_lord" ) + if talent.ruination.enabled then applyBuff( "ruination" ) end end if talent.diabolic_ritual.enabled then @@ -616,15 +617,6 @@ spec:RegisterHook( "spend", function( amt, resource ) reduceCooldown( "summon_demonic_tyrant", amt * 0.6 ) end - if talent.diabolic_ritual.enabled then - if buff.diabolic_ritual.up then - buff.diabolic_ritual.expires = buff.diabolic_ritual.expires - amt - if buff.diabolic_ritual.down then applyBuff( "diabolic_art" ) end - else - applyBuff( "diabolic_ritual" ) - buff.diabolic_ritual.expires = 21 - amt - end - end elseif amt < 0 and floor( soul_shard ) < floor( soul_shard + amt ) then if talent.demonic_inspiration.enabled then applyBuff( "demonic_inspiration" ) end end @@ -1904,6 +1896,7 @@ spec:RegisterAbilities( { spendType = "soul_shards", startsCombat = true, + nobuff = "ruination", handler = function () removeBuff( "blazing_meteor" ) @@ -1924,6 +1917,39 @@ spec:RegisterAbilities( { addStack( "dread_calling", nil, 1 + extra_shards ) end end, + + bind = "ruination" + }, + + -- Calls down a demonic meteor full of Wild Imps which burst forth to attack the target. Deals up to 2,188 Shadowflame damage on impact to all enemies within 8 yds of the target and summons up to 3 Wild Imps, based on Soul Shards consumed. + ruination = { + id = 434635, + known = 105174, + cast = 1.5, + cooldown = 0, + gcd = "spell", + school = "shadowflame", + + startsCombat = true, + buff = "ruination", + + handler = function () + removeBuff( "blazing_meteor" ) + + insert( guldan_v, query_time + 0.6 ) + insert( guldan_v, query_time + 0.8 ) + insert( guldan_v, query_time + 1 ) + + if debuff.doom_brand.up then + debuff.doom_brand.expires = debuff.doom_brand.expires - ( 1 + extra_shards ) + end + + if talent.dread_calling.enabled then + addStack( "dread_calling", nil, 3 ) -- ? + end + end, + + bind = "hand_of_guldan" }, -- Talent: Demonic forces suck all of your Wild Imps toward the target, and then cause them to violently explode, dealing 1,410 Shadowflame damage to all enemies within 8 yards. diff --git a/TheWarWithin/WarlockDestruction.lua b/TheWarWithin/WarlockDestruction.lua index 9804ac736..e34f7ded4 100644 --- a/TheWarWithin/WarlockDestruction.lua +++ b/TheWarWithin/WarlockDestruction.lua @@ -1124,6 +1124,7 @@ spec:RegisterHook( "spend", function( amt, resource ) if buff.art_pit_lord.up then summon_demon( "pit_lord" ) removeBuff( "art_pit_lord" ) + if talent.ruination.enabled then applyBuff( "ruination" ) end end if talent.diabolic_ritual.enabled then @@ -1188,10 +1189,6 @@ spec:RegisterStateExpr( "havoc_active", function () return buff.active_havoc.up end ) -spec:RegisterStateExpr( "diabolic_ritual", function () - return buff.diabolic_ritual_overlord.up or buff.diabolic_ritual_mother_of_chaos.up or buff.diabolic_ritual_pit_lord.up -end ) - spec:RegisterStateExpr( "demonic_art", function () return buff.demonic_art_overlord.up or buff.demonic_art_mother.up or buff.demonic_art_pit_lord.up end ) @@ -1844,6 +1841,7 @@ spec:RegisterAbilities( { ruination = { id = 434635, + known = 116858, cast = function () return 1.5 * ( buff.ritual_of_ruin.up and 0.5 or 1 ) * ( buff.backdraft.up and 0.7 or 1 ) @@ -1881,11 +1879,13 @@ spec:RegisterAbilities( { if debuff.immolate.remains <= 5 then removeDebuff( "target", "immolate" ) else debuff.immolate.expires = debuff.immolate.expires - 5 end end - summon_demon( "diabolic_imp", 1 ) + -- summon_demon( "diabolic_imp", 1 ) removeBuff( "ruination" ) end, impact = function() end, + + bind = "chaos_bolt" }, -- Conjure a Shadow Rift at the target location lasting $d. Enemy players within the rift when it expires are teleported to your Demonic Circle.; Must be within $s2 yds of your Demonic Circle to cast.