From 2140fe532348cf62c94816a9d927b2e14def460e Mon Sep 17 00:00:00 2001 From: soloxcx Date: Fri, 29 Aug 2025 02:26:11 -0500 Subject: [PATCH 1/3] [Outlaw] Implement Killing Spree + Supercharger bug --- engine/class_modules/sc_rogue.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/engine/class_modules/sc_rogue.cpp b/engine/class_modules/sc_rogue.cpp index 4412bd6bcd8..0287e597a01 100644 --- a/engine/class_modules/sc_rogue.cpp +++ b/engine/class_modules/sc_rogue.cpp @@ -5150,6 +5150,21 @@ struct killing_spree_t : public rogue_attack_t } } + void snapshot_state( action_state_t* state, result_amount_type rt ) override + { + rogue_attack_t::snapshot_state( state, rt ); + + // 08-29-2025 -- If Killing Spree consumes Supercharger, its effective CPs are reduced by one + // So with Forced Induction, it is treated as +2 CPs as opposed to +3 + auto rs = cast_state( state ); + int trigger_cp = rs->get_combo_points(); + + if ( p()->bugs && range::any_of( p()->buffs.supercharger, []( const buff_t* buff ) { return buff->check(); } ) ) + trigger_cp -= 1; + + rs->set_combo_points( rs->get_combo_points( true ), trigger_cp ); + } + void tick( dot_t* d ) override { rogue_attack_t::tick( d ); From 267815a5912786ee4cfaa8ea5ab6dd8aa031e5e3 Mon Sep 17 00:00:00 2001 From: soloxcx Date: Fri, 29 Aug 2025 02:27:18 -0500 Subject: [PATCH 2/3] spacing --- engine/class_modules/sc_rogue.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/class_modules/sc_rogue.cpp b/engine/class_modules/sc_rogue.cpp index 0287e597a01..ea775f45891 100644 --- a/engine/class_modules/sc_rogue.cpp +++ b/engine/class_modules/sc_rogue.cpp @@ -5156,7 +5156,7 @@ struct killing_spree_t : public rogue_attack_t // 08-29-2025 -- If Killing Spree consumes Supercharger, its effective CPs are reduced by one // So with Forced Induction, it is treated as +2 CPs as opposed to +3 - auto rs = cast_state( state ); + auto rs = cast_state( state ); int trigger_cp = rs->get_combo_points(); if ( p()->bugs && range::any_of( p()->buffs.supercharger, []( const buff_t* buff ) { return buff->check(); } ) ) From 6edc08b762cbe399c25ab8a8f5f8ee50e22dc296 Mon Sep 17 00:00:00 2001 From: soloxcx Date: Sat, 30 Aug 2025 00:01:27 -0500 Subject: [PATCH 3/3] move all logic into bug conditional --- engine/class_modules/sc_rogue.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/engine/class_modules/sc_rogue.cpp b/engine/class_modules/sc_rogue.cpp index ea775f45891..fbe37cf50e3 100644 --- a/engine/class_modules/sc_rogue.cpp +++ b/engine/class_modules/sc_rogue.cpp @@ -5156,13 +5156,11 @@ struct killing_spree_t : public rogue_attack_t // 08-29-2025 -- If Killing Spree consumes Supercharger, its effective CPs are reduced by one // So with Forced Induction, it is treated as +2 CPs as opposed to +3 - auto rs = cast_state( state ); - int trigger_cp = rs->get_combo_points(); - if ( p()->bugs && range::any_of( p()->buffs.supercharger, []( const buff_t* buff ) { return buff->check(); } ) ) - trigger_cp -= 1; - - rs->set_combo_points( rs->get_combo_points( true ), trigger_cp ); + { + auto rs = cast_state( state ); + rs->set_combo_points( rs->get_combo_points( true ), rs->get_combo_points() - 1 ); + } } void tick( dot_t* d ) override