From 5ef747428d9fd43ef6461d810409c045ec367918 Mon Sep 17 00:00:00 2001 From: Azevara <46403881+Azevara@users.noreply.github.com> Date: Fri, 19 Jul 2024 10:38:09 -0400 Subject: [PATCH] [Warlock] Destruction Row 8 updates (#9044) * Implement Devastation * Shuffle Ritual of Ruin * Update Ruin --- engine/class_modules/warlock/sc_warlock.hpp | 4 ++-- .../class_modules/warlock/sc_warlock_actions.cpp | 15 ++++++++++----- engine/class_modules/warlock/sc_warlock_init.cpp | 14 ++++++++------ 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/engine/class_modules/warlock/sc_warlock.hpp b/engine/class_modules/warlock/sc_warlock.hpp index 4c2da1543cc..c92e87fdc0f 100644 --- a/engine/class_modules/warlock/sc_warlock.hpp +++ b/engine/class_modules/warlock/sc_warlock.hpp @@ -404,7 +404,7 @@ struct warlock_t : public player_t player_talent_t internal_combustion; player_talent_t demonfire_mastery; - player_talent_t devastation; // TODO: New + player_talent_t devastation; player_talent_t ritual_of_ruin; const spell_data_t* impending_ruin_buff; // Stacking buff, triggers Ritual of Ruin buff at max const spell_data_t* ritual_of_ruin_buff; @@ -453,7 +453,7 @@ struct warlock_t : public player_t player_talent_t abyssal_dominion; player_talent_t gloom_of_nathreza; - player_talent_t ruination; // TODO: Backdraft, Indiscriminate Flames + player_talent_t ruination; // TODO: Backdraft, Indiscriminate Flames, Ritual of Ruin // Hellcaller player_talent_t wither; // TODO: Socrethar's Guile, Seed of Corruption, Absolute Corruption, Siphon Life, Kindled Malice, Sacrolash, Darkglare, Death's Embrace, Roaring Blaze, Scalding Flames, Ashen Remains, Channel Demonfire, Flashpoint, Raging Demonfire, Internal Combustion diff --git a/engine/class_modules/warlock/sc_warlock_actions.cpp b/engine/class_modules/warlock/sc_warlock_actions.cpp index 03abbdfc4e5..3f1ab3705a3 100644 --- a/engine/class_modules/warlock/sc_warlock_actions.cpp +++ b/engine/class_modules/warlock/sc_warlock_actions.cpp @@ -40,6 +40,8 @@ using namespace helpers; bool ashen_remains = false; bool emberstorm_dd = false; bool emberstorm_td = false; + bool devastation = false; + bool ruin = false; bool chaos_incarnate = false; } affected_by; @@ -82,6 +84,8 @@ using namespace helpers; affected_by.roaring_blaze = data().affected_by( p->talents.conflagrate_debuff->effectN( 1 ) ); affected_by.emberstorm_dd = data().affected_by( p->talents.emberstorm->effectN( 1 ) ); affected_by.emberstorm_td = data().affected_by( p->talents.emberstorm->effectN( 3 ) ); + affected_by.devastation = data().affected_by( p->talents.devastation->effectN( 1 ) ); + affected_by.ruin = data().affected_by( p->talents.ruin->effectN( 1 ) ); } warlock_spell_t( util::string_view token, warlock_t* p, const spell_data_t* s, util::string_view options_str ) @@ -208,6 +212,9 @@ using namespace helpers; if ( affliction() && affected_by.malediction ) c += p()->talents.malediction->effectN( 1 ).percent(); + if ( destruction() && affected_by.devastation ) + c += p()->talents.devastation->effectN( 1 ).percent(); + return c; } @@ -221,6 +228,9 @@ using namespace helpers; if ( demonology() && affected_by.demonic_brutality ) m *= 1.0 + p()->talents.demonic_brutality->effectN( 1 ).percent(); + if ( destruction() && affected_by.ruin ) + m *= 1.0 + p()->talents.ruin->effectN( 1 ).percent(); + return m; } @@ -2873,8 +2883,6 @@ using namespace helpers; cooldown->hasted = true; cooldown->charges += as( p->talents.improved_conflagrate->effectN( 1 ).base_value() ); cooldown->duration += p->talents.explosive_potential->effectN( 1 ).time_value(); - - base_multiplier *= 1.0 + p->talents.ruin->effectN( 1 ).percent(); } void impact( action_state_t* s ) override @@ -3077,7 +3085,6 @@ using namespace helpers; affected_by.ashen_remains = true; affected_by.chaos_incarnate = p->talents.chaos_incarnate.ok(); - base_multiplier *= 1.0 + p->talents.ruin->effectN( 1 ).percent(); base_dd_multiplier *= 1.0 + p->talents.blistering_atrophy->effectN( 1 ).percent(); } @@ -3459,8 +3466,6 @@ using namespace helpers; affected_by.chaotic_energies = true; affected_by.havoc = true; - base_multiplier *= 1.0 + p->talents.ruin->effectN( 1 ).percent(); - immolate->background = true; immolate->dual = true; immolate->base_costs[ RESOURCE_MANA ] = 0; diff --git a/engine/class_modules/warlock/sc_warlock_init.cpp b/engine/class_modules/warlock/sc_warlock_init.cpp index f906011f5fc..dd5c3dfd1f6 100644 --- a/engine/class_modules/warlock/sc_warlock_init.cpp +++ b/engine/class_modules/warlock/sc_warlock_init.cpp @@ -413,19 +413,21 @@ namespace warlock talents.demonfire_mastery = find_talent_spell( talent_tree::SPECIALIZATION, "Demonfire Mastery" ); // Should be ID 456946 + talents.devastation = find_talent_spell( talent_tree::SPECIALIZATION, "Devastation" ); // Should be ID 454735 + + talents.ritual_of_ruin = find_talent_spell( talent_tree::SPECIALIZATION, "Ritual of Ruin" ); // Should be ID 387156 + talents.impending_ruin_buff = find_spell( 387158 ); + talents.ritual_of_ruin_buff = find_spell( 387157 ); + + talents.ruin = find_talent_spell( talent_tree::SPECIALIZATION, "Ruin" ); // Should be ID 387103 + talents.soul_fire = find_talent_spell( talent_tree::SPECIALIZATION, "Soul Fire" ); // Should be ID 6353 talents.soul_fire_2 = find_spell( 281490 ); talents.decimation = find_talent_spell( talent_tree::SPECIALIZATION, "Decimation" ); // Should be ID 387176 - talents.ruin = find_talent_spell( talent_tree::SPECIALIZATION, "Ruin" ); // Should be ID 387103 - talents.diabolic_embers = find_talent_spell( talent_tree::SPECIALIZATION, "Diabolic Embers" ); // Should be ID 387173 - talents.ritual_of_ruin = find_talent_spell( talent_tree::SPECIALIZATION, "Ritual of Ruin" ); // Should be ID 387156 - talents.impending_ruin_buff = find_spell( 387158 ); - talents.ritual_of_ruin_buff = find_spell( 387157 ); - talents.power_overwhelming = find_talent_spell( talent_tree::SPECIALIZATION, "Power Overwhelming" ); // Should be ID 387279 talents.power_overwhelming_buff = find_spell( 387283 );