Skip to content

Commit

Permalink
[gear] Allow Seabed Leviathan's Citrine to proc off periodic effects
Browse files Browse the repository at this point in the history
  • Loading branch information
renanthera authored Dec 22, 2024
1 parent fae62e9 commit 53039eb
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 14 deletions.
11 changes: 8 additions & 3 deletions engine/class_modules/monk/sc_monk.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3507,7 +3507,7 @@ struct breath_of_fire_t : public monk_spell_t

breath_of_fire_t( monk_t *p, util::string_view options_str )
: monk_spell_t( p, "breath_of_fire", p->talent.brewmaster.breath_of_fire ),
dragonfire_brew( new dragonfire_brew_t( p ) ),
dragonfire_brew( nullptr ),
no_bof_hit( false )
{
add_option( opt_bool( "no_bof_hit", no_bof_hit ) );
Expand All @@ -3519,8 +3519,12 @@ struct breath_of_fire_t : public monk_spell_t
full_amount_targets = 1;
cast_during_sck = true;

if ( p->talent.brewmaster.dragonfire_brew->ok() )
dragonfire_brew = new dragonfire_brew_t( p );

add_child( p->active_actions.breath_of_fire );
add_child( dragonfire_brew );
if ( dragonfire_brew )
add_child( dragonfire_brew );
}

double action_multiplier() const override
Expand All @@ -3540,7 +3544,8 @@ struct breath_of_fire_t : public monk_spell_t
return;

monk_spell_t::execute();
dragonfire_brew->execute();
if ( dragonfire_brew )
dragonfire_brew->execute();

if ( p()->buff.blackout_combo->up() )
p()->proc.blackout_combo_breath_of_fire->occur();
Expand Down
7 changes: 1 addition & 6 deletions engine/class_modules/monk/sc_stagger.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,6 @@ struct self_damage_t : residual_type

self_damage_t( derived_actor_t *player, stagger_impl::stagger_effect_t<derived_actor_t> *stagger_effect );

proc_types proc_type() const override;
void impact( action_state_t *state ) override; // add to pool
void assess_damage( result_amount_type type, action_state_t *state ) override; // tick from pool
void last_tick( dot_t *dot ) override; // callback on last tick
Expand Down Expand Up @@ -689,12 +688,8 @@ self_damage_t<derived_actor_t, residual_type>::self_damage_t(
// to verify if base_type is of type residual_periodic_action_t<...> we'd need some extra machinery, so we won't check
residual_type::target = player;
residual_type::stats->type = stats_e::STATS_NEUTRAL;
}

template <class derived_actor_t, class residual_type>
proc_types self_damage_t<derived_actor_t, residual_type>::proc_type() const
{
return PROC1_ANY_DAMAGE_TAKEN;
residual_type::suppress_caster_procs = false;
}

template <class derived_actor_t, class residual_type>
Expand Down
2 changes: 1 addition & 1 deletion engine/class_modules/sc_enemy.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1497,7 +1497,7 @@ void enemy_t::add_tank_heal_raid_event( tank_dummy_e tank_dummy )
constexpr size_t numTankDummies = static_cast<size_t>( tank_dummy_e::MAX );
// NONE, WEAK, DUNGEON, RAID, HEROIC, MYTHIC
constexpr std::array<double, numTankDummies> tank_dummy_index_scalar = { 0, 6.5, 4.0, 2.5, 1.6, 1 };
constexpr int heal_value_base = 4'000'000;
constexpr int heal_value_base = 1'500'000;
size_t tank_dummy_index = static_cast<size_t>( tank_dummy );
std::string heal_raid_event = fmt::format( "heal,name=tank_heal,amount={},cooldown=5.0,duration=0,player_if=role.tank",
heal_value_base / tank_dummy_index_scalar[ tank_dummy_index ] );
Expand Down
8 changes: 4 additions & 4 deletions engine/player/unique_gear_thewarwithin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4278,7 +4278,7 @@ void candle_confidant( special_effect_t& effect )

double composite_crit_chance() const override
{
// Currently their auto attacks dont seem to scale with player crit chance.
// Currently their auto attacks dont seem to scale with player crit chance.
return this->player->base.attack_crit_chance;
}

Expand Down Expand Up @@ -6801,8 +6801,8 @@ struct roaring_warqueen_citrine_t : public spell_t
}
};

// Proxy action just to trigger the highest stat buff. Mostly for reporting purposes.
// Might be a better way to do this, but this will do for now.
// Proxy action just to trigger the highest stat buff. Mostly for reporting purposes.
// Might be a better way to do this, but this will do for now.
struct windsingers_runed_citrine_proc_t : public generic_proc_t
{
std::unordered_map<stat_e, buff_t*> buffs;
Expand Down Expand Up @@ -7332,7 +7332,7 @@ void seabed_leviathans_citrine( special_effect_t& effect )
auto damage = create_citrine_action( effect, SEABED_LEVIATHANS_CITRINE );
// Manually setting the proc flags, Driver appears to use a 0 value absorb buff
// to check for incoming damage, rather than traditional proc flags.
effect.proc_flags_ = PF_DAMAGE_TAKEN;
effect.proc_flags_ = PF_DAMAGE_TAKEN | PF_PERIODIC_TAKEN;
effect.proc_flags2_ = PF2_ALL_HIT;
effect.proc_chance_ = 1.0;
effect.execute_action = damage;
Expand Down

0 comments on commit 53039eb

Please sign in to comment.