From 415abcc1bb5f816773168e5d9b5d69771a9e5ab5 Mon Sep 17 00:00:00 2001 From: Kate Martin <51387586+renanthera@users.noreply.github.com> Date: Mon, 12 Oct 2026 21:50:35 -0600 Subject: [PATCH] [demon-hunter] Split Abyssal Gaze and Eye Beam into two separate actions for APLs. TODO: Update APLs. --- engine/class_modules/sc_demon_hunter.cpp | 50 ++++++++---------------- 1 file changed, 17 insertions(+), 33 deletions(-) diff --git a/engine/class_modules/sc_demon_hunter.cpp b/engine/class_modules/sc_demon_hunter.cpp index 17741ef5ba3..d37612c5671 100644 --- a/engine/class_modules/sc_demon_hunter.cpp +++ b/engine/class_modules/sc_demon_hunter.cpp @@ -4082,48 +4082,30 @@ struct eye_beam_base_t : public student_of_suffering_trigger_t { - abyssal_gaze_t( demon_hunter_t* p ) : base_t( "abyssal_gaze", p, p->hero_spec.abyssal_gaze, "" ) + abyssal_gaze_t( demon_hunter_t* p, util::string_view options_str ) + : base_t( "abyssal_gaze", p, p->hero_spec.abyssal_gaze, options_str ) { } -}; - -struct eye_beam_t : public eye_beam_base_t -{ - abyssal_gaze_t* abyssal_gaze; - double abyssal_gaze_cost; - eye_beam_t( demon_hunter_t* p, util::string_view options_str ) - : eye_beam_base_t( "eye_beam", p, p->talent.havoc.eye_beam, options_str ), - abyssal_gaze( nullptr ), - abyssal_gaze_cost( 0 ) + void init() override { - if ( p->talent.scarred.demonic_intensity->ok() ) - { - abyssal_gaze = new abyssal_gaze_t( p ); - abyssal_gaze_cost = abyssal_gaze->data().cost( POWER_FURY ); - add_child( abyssal_gaze ); - } - } + base_t::init(); - double cost() const override - { - if ( dh()->buff.demonsurge_demonic_intensity->check() ) - { - return abyssal_gaze_cost; - } - return eye_beam_base_t::cost(); + if ( action_t* parent = player->find_action( "eye_beam" ); parent ) + parent->add_child( this ); } - void execute() override + bool ready() override { - if ( dh()->buff.demonsurge_demonic_intensity->check() ) - { - abyssal_gaze->execute_on_target( target ); - stats->add_execute( time_to_execute, target ); - return; - } + return dh()->buff.demonsurge_demonic_intensity->up() && base_t::ready(); + }; +}; - eye_beam_base_t::execute(); +struct eye_beam_t : public eye_beam_base_t +{ + eye_beam_t( demon_hunter_t* p, util::string_view options_str ) + : eye_beam_base_t( "eye_beam", p, p->talent.havoc.eye_beam, options_str ) + { } }; @@ -9742,6 +9724,8 @@ action_t* demon_hunter_t::create_action( util::string_view name, util::string_vi return new disrupt_t( this, options_str ); if ( name == "eye_beam" ) return new eye_beam_t( this, options_str ); + if ( name == "abyssal_gaze" ) + return new abyssal_gaze_t( this, options_str ); if ( name == "fel_devastation" ) return new fel_devastation_t( this, options_str ); if ( name == "fiery_brand" )