mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-13 03:32:28 -04:00
Scripts/Spells: Implement dh talent "Enduring Torment" (#31523)
This commit is contained in:
4
sql/updates/world/master/2026_02_05_08_world.sql
Normal file
4
sql/updates/world/master/2026_02_05_08_world.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dh_enduring_torment','spell_dh_enduring_torment_buff');
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(452410, 'spell_dh_enduring_torment'),
|
||||
(453314, 'spell_dh_enduring_torment_buff');
|
||||
@@ -92,6 +92,7 @@ enum DemonHunterSpells
|
||||
SPELL_DH_DEMONS_BITE = 162243,
|
||||
SPELL_DH_ELYSIAN_DECREE = 306830,
|
||||
SPELL_DH_ELYSIAN_DECREE_AOE = 307046,
|
||||
SPELL_DH_ENDURING_TORMENT_BUFF = 453314,
|
||||
SPELL_DH_ESSENCE_BREAK_DEBUFF = 320338,
|
||||
SPELL_DH_EYE_BEAM = 198013,
|
||||
SPELL_DH_EYE_BEAM_DAMAGE = 198030,
|
||||
@@ -147,6 +148,7 @@ enum DemonHunterSpells
|
||||
SPELL_DH_JAGGED_SPIKES_PROC = 208796,
|
||||
SPELL_DH_MANA_RIFT_DMG_POWER_BURN = 235904,
|
||||
SPELL_DH_METAMORPHOSIS = 191428,
|
||||
SPELL_DH_METAMORPHOSIS_DEVOURER_TRANSFORM = 1217607,
|
||||
SPELL_DH_METAMORPHOSIS_DUMMY = 191427,
|
||||
SPELL_DH_METAMORPHOSIS_IMPACT_DAMAGE = 200166,
|
||||
SPELL_DH_METAMORPHOSIS_RESET = 320645,
|
||||
@@ -1008,6 +1010,63 @@ struct spell_dh_shattered_souls_base_lesser
|
||||
}
|
||||
};
|
||||
|
||||
// 452410 - Enduring Torment
|
||||
class spell_dh_enduring_torment : public AuraScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DH_ENDURING_TORMENT_BUFF, SPELL_DH_METAMORPHOSIS_TRANSFORM, SPELL_DH_METAMORPHOSIS_DEVOURER_TRANSFORM });
|
||||
}
|
||||
|
||||
void HandlePeriodic(AuraEffect const* aurEff) const
|
||||
{
|
||||
Unit* target = GetTarget();
|
||||
Aura* statBuff = target->GetOwnedAura(SPELL_DH_ENDURING_TORMENT_BUFF);
|
||||
|
||||
if (target->HasAura(SPELL_DH_METAMORPHOSIS_TRANSFORM) || target->HasAura(SPELL_DH_METAMORPHOSIS_DEVOURER_TRANSFORM))
|
||||
{
|
||||
if (statBuff)
|
||||
target->RemoveOwnedAura(statBuff);
|
||||
}
|
||||
else if (!statBuff)
|
||||
{
|
||||
target->CastSpell(target, SPELL_DH_ENDURING_TORMENT_BUFF, CastSpellExtraArgsInit{
|
||||
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
|
||||
.TriggeringAura = aurEff
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_dh_enduring_torment::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// 453314 - Enduring Torment
|
||||
class spell_dh_enduring_torment_buff : public SpellScript
|
||||
{
|
||||
bool Load() override
|
||||
{
|
||||
return GetCaster()->IsPlayer();
|
||||
}
|
||||
|
||||
template <ChrSpecialization Spec>
|
||||
void PreventEffect(WorldObject*& target) const
|
||||
{
|
||||
if (GetCaster()->ToPlayer()->GetPrimarySpecialization() != Spec)
|
||||
target = nullptr;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_dh_enduring_torment_buff::PreventEffect<ChrSpecialization::DemonHunterHavoc>, EFFECT_0, TARGET_UNIT_CASTER);
|
||||
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_dh_enduring_torment_buff::PreventEffect<ChrSpecialization::DemonHunterHavoc>, EFFECT_1, TARGET_UNIT_CASTER);
|
||||
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_dh_enduring_torment_buff::PreventEffect<ChrSpecialization::DemonHunterDevourer>, EFFECT_2, TARGET_UNIT_CASTER);
|
||||
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_dh_enduring_torment_buff::PreventEffect<ChrSpecialization::DemonHunterDevourer>, EFFECT_3, TARGET_UNIT_CASTER);
|
||||
}
|
||||
};
|
||||
|
||||
// 307046 - Elysian Decree (Kyrian)
|
||||
// 389860 - Sigil of Spite
|
||||
class spell_dh_elysian_decree : public SpellScript
|
||||
@@ -2404,6 +2463,8 @@ void AddSC_demon_hunter_spell_scripts()
|
||||
RegisterSpellScript(spell_dh_demon_spikes);
|
||||
RegisterSpellScriptWithArgs(spell_dh_elysian_decree, "spell_dh_elysian_decree", SPELL_DH_ELYSIAN_DECREE);
|
||||
RegisterAreaTriggerAI(at_dh_elysian_decree);
|
||||
RegisterSpellScript(spell_dh_enduring_torment);
|
||||
RegisterSpellScript(spell_dh_enduring_torment_buff);
|
||||
RegisterSpellScript(spell_dh_essence_break);
|
||||
RegisterSpellScript(spell_dh_eye_beam);
|
||||
RegisterSpellScript(spell_dh_feast_of_souls);
|
||||
|
||||
Reference in New Issue
Block a user