From 239eafd73c59c47b34c37a496c5bdf4480a73be6 Mon Sep 17 00:00:00 2001 From: Lucasmingus Date: Sun, 21 Jun 2026 21:34:54 +0200 Subject: [PATCH 1/2] [Gear] Trinket - Vile Vial of Volatile Venom --- engine/player/unique_gear_midnight.cpp | 42 ++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/engine/player/unique_gear_midnight.cpp b/engine/player/unique_gear_midnight.cpp index 37d94b8039c..3091dd292f7 100644 --- a/engine/player/unique_gear_midnight.cpp +++ b/engine/player/unique_gear_midnight.cpp @@ -3079,6 +3079,46 @@ void sporelords_mycelium( special_effect_t& effect ) } } ); } + +// Vile Vial of Volatile Venom +// 1293316 on-use buff (Empowering Venom) +// 1295123 debuff (Debilitating Venom), applies once the buff fades +// 1295179 equip +void vile_vial_of_volatile_venom( special_effect_t& effect ) +{ + struct vile_vial_of_volatile_venom_t : public spell_t + { + std::unordered_map buffs; + std::unordered_map debuffs; + + vile_vial_of_volatile_venom_t( const special_effect_t& e ) : spell_t( "empowering_venom", e.player, e.driver() ) + { + auto debuff_data = e.player->find_spell( 1295123 ); + + create_all_stat_buffs( e, debuff_data, 0, [ this ]( stat_e s, buff_t* b ) { debuffs[ s ] = b; } ); + + create_all_stat_buffs( e, e.driver(), 0, [ this ]( stat_e s, buff_t* b ) { + // The debuff rolls a stat independently of the stat granted by the buff + b->set_stack_change_callback( [ this ]( buff_t*, int old_, int new_ ) { + if ( old_ > 0 && new_ == 0 ) + debuffs.at( player->rng().range( secondary_ratings ) )->trigger(); + } ); + buffs[ s ] = b; + } ); + } + + void execute() override + { + spell_t::execute(); + + buffs.at( player->rng().range( secondary_ratings ) )->trigger(); + } + }; + + effect.disable_buff(); + effect.has_use_buff_override = true; + effect.execute_action = create_proc_action( "empowering_venom", effect ); +} } // namespace trinkets namespace weapons @@ -4116,6 +4156,8 @@ void register_special_effects() set_min_version( wowv_t( 12, 0, 7 ) ); register_special_effect( 1284696, trinkets::sporelords_mycelium ); reset_version_check(); + register_special_effect( 1293316, trinkets::vile_vial_of_volatile_venom ); + register_special_effect( 1295179, DISABLED_EFFECT ); // Vile Vial of Volatile Venom equip driver // Weapons register_special_effect( { 1253357, 1253359 }, weapons::torments_duality ); // umbral sabre & radiant foil register_special_effect( 1266257, weapons::lightless_lament ); From 64717b23ebb9c0559aeb1c538898ba6124c7a523 Mon Sep 17 00:00:00 2001 From: Lucasmingus Date: Sun, 21 Jun 2026 21:58:13 +0200 Subject: [PATCH 2/2] Guard on game version + simplify callback --- engine/player/unique_gear_midnight.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/engine/player/unique_gear_midnight.cpp b/engine/player/unique_gear_midnight.cpp index 3091dd292f7..76dc1dc5739 100644 --- a/engine/player/unique_gear_midnight.cpp +++ b/engine/player/unique_gear_midnight.cpp @@ -3099,9 +3099,8 @@ void vile_vial_of_volatile_venom( special_effect_t& effect ) create_all_stat_buffs( e, e.driver(), 0, [ this ]( stat_e s, buff_t* b ) { // The debuff rolls a stat independently of the stat granted by the buff - b->set_stack_change_callback( [ this ]( buff_t*, int old_, int new_ ) { - if ( old_ > 0 && new_ == 0 ) - debuffs.at( player->rng().range( secondary_ratings ) )->trigger(); + b->set_expire_callback( [ this ]( buff_t*, int, timespan_t ) { + debuffs.at( player->rng().range( secondary_ratings ) )->trigger(); } ); buffs[ s ] = b; } ); @@ -4156,8 +4155,10 @@ void register_special_effects() set_min_version( wowv_t( 12, 0, 7 ) ); register_special_effect( 1284696, trinkets::sporelords_mycelium ); reset_version_check(); + set_min_version( wowv_t( 12, 1, 0 ) ); register_special_effect( 1293316, trinkets::vile_vial_of_volatile_venom ); register_special_effect( 1295179, DISABLED_EFFECT ); // Vile Vial of Volatile Venom equip driver + reset_version_check(); // Weapons register_special_effect( { 1253357, 1253359 }, weapons::torments_duality ); // umbral sabre & radiant foil register_special_effect( 1266257, weapons::lightless_lament );