Skip to content

Commit

Permalink
[Warlock] fix seed_of_corruption. update some target = to set_target()
Browse files Browse the repository at this point in the history
  • Loading branch information
pip87 committed Jul 31, 2018
1 parent 5e76ce6 commit 18125b7
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 20 deletions.
57 changes: 41 additions & 16 deletions engine/class_modules/warlock/sc_warlock_affliction.cpp
Expand Up @@ -113,6 +113,8 @@ namespace warlock
if (td->dots_seed_of_corruption->is_ticking() && id != p()->spells.seed_of_corruption_aoe->id)
{
accumulate_seed_of_corruption(td, s->result_amount);
if (sim->log)
sim->out_debug.printf("remaining damage to explode seed %f", td->soc_threshold);
}
}
}
Expand Down Expand Up @@ -352,10 +354,11 @@ namespace warlock
struct corruption_t : public affliction_spell_t
{
corruption_t( warlock_t* p, const std::string& options_str) :
affliction_spell_t( "Corruption", p, p -> find_spell( 172 ) )
affliction_spell_t( "Corruption", p, p -> find_spell(172) ) //triggers 146739
{
parse_options(options_str);
may_crit = false;
tick_zero = false;
dot_duration = data().effectN( 1 ).trigger()->duration();
spell_power_mod.tick = data().effectN( 1 ).trigger()->effectN( 1 ).sp_coeff();
base_tick_time = data().effectN( 1 ).trigger()->effectN( 1 ).period();
Expand Down Expand Up @@ -394,21 +397,21 @@ namespace warlock

void tick( dot_t* d ) override
{
if ( result_is_hit( d->state->result ) && p()->talents.nightfall->ok() )
if (result_is_hit(d->state->result) && p()->talents.nightfall->ok())
{
auto success = p()->buffs.nightfall->trigger();
if ( success )
if (success)
{
p()->procs.nightfall->occur();
}
}

if ( result_is_hit( d->state->result ) && p()->sets->has_set_bonus( WARLOCK_AFFLICTION, T20, B2 ) )
if (result_is_hit(d->state->result) && p()->sets->has_set_bonus(WARLOCK_AFFLICTION, T20, B2))
{
bool procced = p()->affliction_t20_2pc_rppm->trigger(); //check for RPPM

if ( procced )
p()->resource_gain( RESOURCE_SOUL_SHARD, 1.0, p()->gains.affliction_t20_2pc ); //trigger the buff
if (procced)
p()->resource_gain(RESOURCE_SOUL_SHARD, 1.0, p()->gains.affliction_t20_2pc); //trigger the buff
}

if (result_is_hit(d->state->result) && p()->azerite.inevitable_demise.ok())
Expand Down Expand Up @@ -520,7 +523,7 @@ namespace warlock
}
}

real_ua->target = s->target;
real_ua->set_target( s->target );
real_ua->schedule_execute();
}
}
Expand Down Expand Up @@ -633,15 +636,22 @@ namespace warlock
{
struct seed_of_corruption_aoe_t : public affliction_spell_t
{
corruption_t* corruption;
bool deathbloom; //azerite_trait

seed_of_corruption_aoe_t( warlock_t* p ) :
affliction_spell_t( "seed_of_corruption_aoe", p, p -> find_spell( 27285 ) )
affliction_spell_t( "seed_of_corruption_aoe", p, p -> find_spell( 27285 ) ),
corruption( new corruption_t(p,"") )
{
aoe = -1;
dual = true;
background = true;
deathbloom = false;
p->spells.seed_of_corruption_aoe = this;
base_costs[RESOURCE_MANA] = 0;

corruption->background = true;
corruption->dual = true;
corruption->base_costs[RESOURCE_MANA] = 0;
}

double bonus_da(const action_state_t* s) const override
Expand All @@ -664,6 +674,9 @@ namespace warlock
tdata->soc_threshold = 0;
tdata->dots_seed_of_corruption->cancel();
}

corruption->set_target(s->target);
corruption->execute();
}
}
};
Expand All @@ -680,6 +693,7 @@ namespace warlock
{
parse_options( options_str );
may_crit = false;
tick_zero = false;
base_tick_time = dot_duration;
hasted_ticks = false;
add_child( explosion );
Expand All @@ -698,6 +712,18 @@ namespace warlock
if ( p()->sets->has_set_bonus( WARLOCK_AFFLICTION, T21, B4 ) )
p()->active.tormented_agony->schedule_execute();

if (target->get_dot("seed_of_corruption", p())->is_ticking() || has_travel_events_for(target))
{
for (auto& possible : target_list())
{
if (!(possible->get_dot("seed_of_corruption", p())->is_ticking() || has_travel_events_for(possible)))
{
set_target(possible);
break;
}
}
}

affliction_spell_t::execute();
}

Expand All @@ -708,10 +734,6 @@ namespace warlock
td( s->target )->soc_threshold = s->composite_spell_power();
}

assert(p()->active.corruption);
p()->active.corruption->target = s->target;
p()->active.corruption->schedule_execute();

affliction_spell_t::impact( s );
}

Expand All @@ -722,8 +744,8 @@ namespace warlock
if (!d->end_event) {
explosion->deathbloom = true;
}
explosion->target = d->target;
explosion->execute();
explosion->set_target( d->target );
explosion->schedule_execute();
}
};

Expand Down Expand Up @@ -1128,12 +1150,15 @@ namespace warlock
azerite.deathbloom = find_azerite_spell("Deathbloom");

// seed applies corruption
/*
if (specialization() == WARLOCK_AFFLICTION)
{
active.corruption = new corruption_t(this, "");
active.corruption->background = true;
active.corruption->aoe = -1;
active.corruption->dual = true;
active.corruption->base_costs[RESOURCE_MANA] = 0;
}
*/
}

void warlock_t::init_gains_affliction()
Expand Down
2 changes: 1 addition & 1 deletion engine/class_modules/warlock/sc_warlock_demonology.cpp
Expand Up @@ -300,7 +300,7 @@ namespace warlock {
{
da += p()->azerite.forbidden_knowledge.value();
if (sim->log)
sim->out_debug.printf("forbidden knowledge added %f", p()->azerite.forbidden_knowledge.value());
sim->out_log.printf("forbidden knowledge added %f", p()->azerite.forbidden_knowledge.value());
}
da += p()->buffs.shadows_bite->check_value();
return da;
Expand Down
6 changes: 3 additions & 3 deletions engine/class_modules/warlock/sc_warlock_destruction.cpp
Expand Up @@ -802,14 +802,14 @@ namespace warlock {
if (!havocd && p()->legendary.magistrike_restraints && rng().roll(duplicate_chance))
{
duplicate->original_target = s->target;
duplicate->target = s->target;
duplicate->set_target( s->target );
duplicate->target_cache.is_valid = false;
duplicate->target_list();
duplicate->target_cache.is_valid = true;
if (duplicate->target_cache.list.size() > 0)
{
size_t target_to_strike = rng().range(size_t(), duplicate->target_cache.list.size());
duplicate->target = duplicate->target_cache.list[target_to_strike];
duplicate->set_target( duplicate->target_cache.list[target_to_strike] );
duplicate->execute();
}
}
Expand Down Expand Up @@ -1119,7 +1119,7 @@ namespace warlock {

if (result_is_hit(s->result))
{
immolate->target = s->target;
immolate->set_target( s->target );
immolate->execute();
}
}
Expand Down

0 comments on commit 18125b7

Please sign in to comment.