Scripts/Spells: Update Lava surge script

This commit is contained in:
Shauren
2025-09-30 14:18:47 +02:00
parent 71feb51454
commit a21152e78f
2 changed files with 31 additions and 3 deletions

View File

@@ -1757,17 +1757,40 @@ class spell_sha_lava_surge : public AuraScript
return ValidateSpellInfo({ SPELL_SHAMAN_LAVA_SURGE, SPELL_SHAMAN_IGNEOUS_POTENTIAL });
}
bool CheckProcChance(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/) const
bool CheckProcChance(AuraEffect const* aurEff, ProcEventInfo const& /*eventInfo*/)
{
int32 procChance = aurEff->GetAmount();
Unit* caster = GetTarget();
float flameShocks = 0.0f;
auto work = [&, shaman = caster->GetGUID()](Unit const* target)
{
if (target->HasAuraEffect(SPELL_SHAMAN_FLAME_SHOCK, EFFECT_1, shaman))
flameShocks += 1.0f;
};
Trinity::UnitWorker worker(caster, work);
Cell::VisitAllObjects(caster, worker, 100.0f);
// Proc uptime is not supposed to scale with the number of applied flame shocks
_normalizedTicks += 1.0f / flameShocks;
// first 6 ticks after last proc fail to prevent overwriting
if (_normalizedTicks < 6.0f)
return false;
float procChance = aurEff->GetAmount();
if (AuraEffect const* igneousPotential = GetTarget()->GetAuraEffect(SPELL_SHAMAN_IGNEOUS_POTENTIAL, EFFECT_0))
procChance += igneousPotential->GetAmount();
return roll_chance_i(procChance);
float missChance = std::max(100 - procChance, 0.0f) / 100.0f;
procChance = (1.0f - std::pow(missChance, _normalizedTicks)) * 100.0f;
return roll_chance_f(procChance);
}
void HandleEffectProc(AuraEffect const* /*aurEff*/, ProcEventInfo const& /*eventInfo*/)
{
_normalizedTicks = 0.0f;
PreventDefaultAction();
GetTarget()->CastSpell(GetTarget(), SPELL_SHAMAN_LAVA_SURGE, CastSpellExtraArgsInit{ .TriggerFlags = TRIGGERED_FULL_MASK });
}
@@ -1777,6 +1800,8 @@ class spell_sha_lava_surge : public AuraScript
DoCheckEffectProc += AuraCheckEffectProcFn(spell_sha_lava_surge::CheckProcChance, EFFECT_0, SPELL_AURA_DUMMY);
OnEffectProc += AuraEffectProcFn(spell_sha_lava_surge::HandleEffectProc, EFFECT_0, SPELL_AURA_DUMMY);
}
float _normalizedTicks = 0.0f;
};
// 77762 - Lava Surge