diff --git a/engine/player/unique_gear_midnight.cpp b/engine/player/unique_gear_midnight.cpp index 610c9088260..ee6bdbdd7f5 100644 --- a/engine/player/unique_gear_midnight.cpp +++ b/engine/player/unique_gear_midnight.cpp @@ -3385,6 +3385,41 @@ void font_of_venomous_rage( special_effect_t& effect ) effect.execute_action = create_proc_action( "font_of_venemous_rage", effect ); } +// Vashnik's Sanguine Rancor +// 1295553 Driver +// 1303479 Sanguine Rancor (stack buff) +// 1303483 Crimson Bile (aoe dmg) +// 1303484 Concentrated Bile (st dot) +void vashniks_sanguine_rancor( special_effect_t& effect ) +{ + auto damage = effect.driver()->effectN( 1 ).average( effect ); + + auto concentrated_bile = create_proc_action( "concentrated_bile", effect, 1303484 ); + concentrated_bile->base_td = damage * effect.driver()->effectN( 2 ).percent() + * concentrated_bile->base_tick_time / concentrated_bile->dot_duration; + concentrated_bile->base_td_multiplier *= role_mult( effect ); + + auto crimson_bile = create_proc_action( "crimson_bile", effect, 1303483 ); + crimson_bile->base_dd_min = crimson_bile->base_dd_max = damage; + crimson_bile->base_multiplier *= role_mult( effect ); + crimson_bile->add_child( concentrated_bile ); + + effect.custom_buff = create_buff( effect.player, effect.player->find_spell( 1303479 ) ) + ->set_expire_at_max_stack( true ) + ->set_expire_callback( [ crimson_bile, concentrated_bile ]( buff_t* b, int stacks, timespan_t ) { + // only erupt when the buff was consumed at max stacks, not when expired during combat end + if ( stacks < b->max_stack() ) + return; + crimson_bile->set_target( b->player->target ); + auto n_targets = crimson_bile->target_list().size(); + crimson_bile->execute_on_target( b->player->target ); + if ( n_targets == 1 ) + concentrated_bile->execute_on_target( b->player->target ); + } ); + + new dbc_proc_callback_t( effect.player, effect ); +} + // Stormbound Emblem of Dazar // 1295275 on-use driver (The King's Unyielding Wind), 2 sec channel ticking every 0.5 sec // 1294744 equip @@ -4546,6 +4581,7 @@ void register_special_effects() register_special_effect( 1297760, DISABLED_EFFECT ); // Voracious Heart of Ula'tek equip driver register_special_effect( 1295275, trinkets::stormbound_emblem_of_dazar ); register_special_effect( 1294744, DISABLED_EFFECT ); // Stormbound Emblem of Dazar equip driver + register_special_effect( 1295553, trinkets::vashniks_sanguine_rancor ); reset_version_check(); // Weapons register_special_effect( { 1253357, 1253359 }, weapons::torments_duality ); // umbral sabre & radiant foil