From e1c12f5aaf23e74b32205a3ab5330d3cdac1bb4e Mon Sep 17 00:00:00 2001 From: Lucasmingus Date: Fri, 26 Jun 2026 23:36:20 +0200 Subject: [PATCH 1/3] [Gear] Venomcursed effects --- engine/player/unique_gear_midnight.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/engine/player/unique_gear_midnight.cpp b/engine/player/unique_gear_midnight.cpp index c742a6f870f..e8b9afbcc36 100644 --- a/engine/player/unique_gear_midnight.cpp +++ b/engine/player/unique_gear_midnight.cpp @@ -3675,6 +3675,32 @@ void rotmires_sporeheart( special_effect_t& effect ) } } // namespace armors +namespace items +{ +// Venomcursed , shared effect appearing on weapons, armor, and jewelry +// Crit : driver 1307906 / buff 1307910 +// Mastery : driver 1307923 / buff 1307922 +// Haste : driver 1307928 / buff 1307927 +// increased, other 3 secondaries decreased +custom_cb_t venomcursed( unsigned buff_id, stat_e primary ) +{ + return [ = ]( special_effect_t& effect ) { + auto main_value = effect.driver()->effectN( 1 ).average( effect ); + auto penalty_value = effect.driver()->effectN( 2 ).average( effect ); + + auto buff = create_buff( effect.player, effect.player->find_spell( buff_id ) ) + ->add_stat( primary, main_value ); + + for ( auto s : secondary_ratings ) + if ( s != primary ) + buff->add_stat( s, -penalty_value ); + + effect.custom_buff = buff; + new dbc_proc_callback_t( effect.player, effect ); + }; +} +} // namespace items + namespace sets { // 1244005 driver From 55f64cdb63a05759585bd39912b69f636a9672d4 Mon Sep 17 00:00:00 2001 From: Lucasmingus Date: Fri, 26 Jun 2026 23:37:16 +0200 Subject: [PATCH 2/3] register effects --- engine/player/unique_gear_midnight.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/engine/player/unique_gear_midnight.cpp b/engine/player/unique_gear_midnight.cpp index e8b9afbcc36..1c96996bd2a 100644 --- a/engine/player/unique_gear_midnight.cpp +++ b/engine/player/unique_gear_midnight.cpp @@ -4362,6 +4362,12 @@ void register_special_effects() register_special_effect( 1285138, armors::sporecallers_blooming_loop ); register_special_effect( 1285139, armors::rotmires_sporeheart ); reset_version_check(); + // Items + set_min_version( wowv_t( 12, 1, 0 ) ); + register_special_effect( 1307906, items::venomcursed( 1307910, STAT_CRIT_RATING ) ); // venomcursed critical strike + register_special_effect( 1307923, items::venomcursed( 1307922, STAT_MASTERY_RATING ) ); // venomcursed mastery + register_special_effect( 1307928, items::venomcursed( 1307927, STAT_HASTE_RATING ) ); // venomcursed haste + reset_version_check(); // Sets register_special_effect( 1281574, sets::voidlight_bindings ); register_special_effect( 1281581, DISABLED_EFFECT ); // voidlight bindings equip effect From 14c60dd0877e1bcedb5eb5692fea309b5526937f Mon Sep 17 00:00:00 2001 From: Lucasmingus Date: Thu, 2 Jul 2026 15:23:36 +0200 Subject: [PATCH 3/3] spelldata is now negative value by default --- engine/player/unique_gear_midnight.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/engine/player/unique_gear_midnight.cpp b/engine/player/unique_gear_midnight.cpp index 1c96996bd2a..1f7ba947b7c 100644 --- a/engine/player/unique_gear_midnight.cpp +++ b/engine/player/unique_gear_midnight.cpp @@ -3693,7 +3693,7 @@ custom_cb_t venomcursed( unsigned buff_id, stat_e primary ) for ( auto s : secondary_ratings ) if ( s != primary ) - buff->add_stat( s, -penalty_value ); + buff->add_stat( s, penalty_value ); effect.custom_buff = buff; new dbc_proc_callback_t( effect.player, effect );