Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[shaman] Ascendance changes for PTR #9462

Merged
merged 9 commits into from
Sep 15, 2024
63 changes: 53 additions & 10 deletions engine/class_modules/sc_shaman.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2713,6 +2713,16 @@ struct shaman_spell_t : public shaman_spell_base_t<spell_t>
{
trigger_elemental_overload( s );

// On 11.0.5 PTR, Ascendance always guarantees 1 overload independent
// of existing overload chance
if ( p()->is_ptr() )
{
if ( p()->buff.ascendance->up() )
{
trigger_elemental_overload( s, 1.0 );
}
}

base_t::schedule_travel( s );
}

Expand Down Expand Up @@ -4295,6 +4305,14 @@ struct elemental_overload_spell_t : public shaman_spell_t
p->mastery.elemental_overload->effectN( 2 ).percent() +
p->talent.echo_chamber->effectN( 1 ).percent();

if ( p->is_ptr() )
{
if ( p->buff.ascendance->up() )
{
base_multiplier *= 1.0 + p->talent.ascendance->effectN( 8 ).percent();
}
}

// multiplier is used by Mountains Will Fall and is applied after
// overload damage multiplier is calculated.
if ( multiplier != -1.0 )
Expand Down Expand Up @@ -5857,8 +5875,13 @@ struct chain_lightning_t : public chained_base_t

bool ready() override
{
if ( p()->specialization() == SHAMAN_ELEMENTAL && p()->buff.ascendance->check() )
return false;
if ( !p()->is_ptr() )
{
if ( p()->specialization() == SHAMAN_ELEMENTAL && p()->buff.ascendance->check() )
{
return false;
}
}

return shaman_spell_t::ready();
}
Expand Down Expand Up @@ -5992,6 +6015,14 @@ struct chain_lightning_t : public chained_base_t
if ( s->chain_target == 0 && p()->talent.supercharge.ok() )
{
trigger_elemental_overload( s, p()->talent.supercharge->effectN( 1 ).percent() );

if ( p()->is_ptr() )
{
if ( p()->buff.ascendance->up() )
{
trigger_elemental_overload( s, 1.0 );
}
}
}

chained_base_t::schedule_travel( s );
Expand All @@ -6018,9 +6049,12 @@ struct lava_beam_t : public chained_base_t

bool ready() override
{
if ( !p()->buff.ascendance->check() )
if ( !p()->is_ptr() )
{
return false;
if ( !p()->buff.ascendance->check() )
{
return false;
}
}

return shaman_spell_t::ready();
Expand Down Expand Up @@ -6150,9 +6184,12 @@ struct lava_burst_overload_t : public elemental_overload_spell_t
}
}

if ( p()->buff.ascendance->up() )
if ( !p()->is_ptr() )
{
m *= 1.0 + p()->cache.spell_crit_chance();
if ( p()->buff.ascendance->up() )
{
m *= 1.0 + p()->cache.spell_crit_chance();
}
}

m *= 1.0 + p()->buff.flux_melting->value();
Expand Down Expand Up @@ -6533,9 +6570,12 @@ struct lava_burst_t : public shaman_spell_t
}
}

if ( p()->buff.ascendance->up() )
if ( !p()->is_ptr() )
{
m *= 1.0 + p()->cache.spell_crit_chance();
if ( p()->buff.ascendance->up() )
{
m *= 1.0 + p()->cache.spell_crit_chance();
}
}

m *= 1.0 + p()->buff.flux_melting->value();
Expand All @@ -6562,9 +6602,12 @@ struct lava_burst_t : public shaman_spell_t
{
timespan_t d = cooldown->duration;

if ( p()->buff.ascendance->up() )
if ( !p()->is_ptr() )
{
d = timespan_t::zero();
if ( p()->buff.ascendance->up() )
{
d = timespan_t::zero();
}
}

// Lava Surge has procced during the cast of Lava Burst, the cooldown
Expand Down