mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Scripts/Spells: Fix demon hunter talent "Collective Anguish"
Closes #30503
This commit is contained in:
5
sql/updates/world/master/2024_12_20_04_world.sql
Normal file
5
sql/updates/world/master/2024_12_20_04_world.sql
Normal file
@@ -0,0 +1,5 @@
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dh_collective_anguish', 'spell_dh_collective_anguish_eye_beam');
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(212084, 'spell_dh_collective_anguish'),
|
||||
(198013, 'spell_dh_collective_anguish'),
|
||||
(391057, 'spell_dh_collective_anguish_eye_beam');
|
||||
@@ -5071,6 +5071,12 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->_LoadSqrtTargetLimit(5, 0, {}, {});
|
||||
});
|
||||
|
||||
// Collective Anguish channel hack (triggered by another channel)
|
||||
ApplySpellFix({ 391057, 393831 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->AttributesEx &= ~SPELL_ATTR1_IS_CHANNELLED;
|
||||
});
|
||||
|
||||
for (SpellInfo const& s : mSpellInfoMap)
|
||||
{
|
||||
SpellInfo* spellInfo = &const_cast<SpellInfo&>(s);
|
||||
|
||||
@@ -58,6 +58,10 @@ enum DemonHunterSpells
|
||||
SPELL_DH_CHAOS_STRIKE_OH = 199547,
|
||||
SPELL_DH_CHAOTIC_TRANSFORMATION = 388112,
|
||||
SPELL_DH_CHARRED_WARBLADES_HEAL = 213011,
|
||||
SPELL_DH_COLLECTIVE_ANGUISH = 390152,
|
||||
SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM = 391057,
|
||||
SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM_DAMAGE = 391058,
|
||||
SPELL_DH_COLLECTIVE_ANGUISH_FEL_DEVASTATION = 393831,
|
||||
SPELL_DH_CONSUME_SOUL_HAVOC = 228542,
|
||||
SPELL_DH_CONSUME_SOUL_HAVOC_DEMON = 228556,
|
||||
SPELL_DH_CONSUME_SOUL_HAVOC_SHATTERED = 228540,
|
||||
@@ -285,6 +289,67 @@ private:
|
||||
uint32 _healAmount = 0;
|
||||
};
|
||||
|
||||
// Called by 212084 - Fel Devastation and 198013 - Eye Beam
|
||||
class spell_dh_collective_anguish : public SpellScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DH_COLLECTIVE_ANGUISH, SPELL_DH_FEL_DEVASTATION, SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM, SPELL_DH_COLLECTIVE_ANGUISH_FEL_DEVASTATION });
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
{
|
||||
return GetCaster()->HasAura(SPELL_DH_COLLECTIVE_ANGUISH);
|
||||
}
|
||||
|
||||
void HandleEyeBeam() const
|
||||
{
|
||||
GetCaster()->CastSpell(GetCaster(), SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM, CastSpellExtraArgsInit{
|
||||
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
|
||||
.TriggeringSpell = GetSpell()
|
||||
});
|
||||
}
|
||||
|
||||
void HandleFelDevastation() const
|
||||
{
|
||||
GetCaster()->CastSpell(GetCaster(), SPELL_DH_COLLECTIVE_ANGUISH_FEL_DEVASTATION, CastSpellExtraArgsInit{
|
||||
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
|
||||
.TriggeringSpell = GetSpell()
|
||||
});
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
if (m_scriptSpellId == SPELL_DH_FEL_DEVASTATION)
|
||||
AfterCast += SpellCastFn(spell_dh_collective_anguish::HandleEyeBeam);
|
||||
else
|
||||
AfterCast += SpellCastFn(spell_dh_collective_anguish::HandleFelDevastation);
|
||||
}
|
||||
};
|
||||
|
||||
// 391057 - Eye Beam
|
||||
class spell_dh_collective_anguish_eye_beam : public AuraScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM_DAMAGE });
|
||||
}
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const* aurEff) const
|
||||
{
|
||||
if (Unit* caster = GetCaster())
|
||||
caster->CastSpell(nullptr, SPELL_DH_COLLECTIVE_ANGUISH_EYE_BEAM_DAMAGE, CastSpellExtraArgsInit{
|
||||
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
|
||||
.TriggeringAura = aurEff
|
||||
});
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_dh_collective_anguish_eye_beam::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
|
||||
}
|
||||
};
|
||||
|
||||
// Called by 212084 - Fel Devastation
|
||||
class spell_dh_darkglare_boon : public AuraScript
|
||||
{
|
||||
@@ -900,6 +965,8 @@ void AddSC_demon_hunter_spell_scripts()
|
||||
RegisterSpellScript(spell_dh_chaos_strike);
|
||||
RegisterSpellScript(spell_dh_chaotic_transformation);
|
||||
RegisterSpellScript(spell_dh_charred_warblades);
|
||||
RegisterSpellScript(spell_dh_collective_anguish);
|
||||
RegisterSpellScript(spell_dh_collective_anguish_eye_beam);
|
||||
RegisterSpellScript(spell_dh_darkglare_boon);
|
||||
RegisterSpellScript(spell_dh_darkness);
|
||||
RegisterSpellScript(spell_dh_eye_beam);
|
||||
|
||||
Reference in New Issue
Block a user