mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/Spells: Implement Frenzied & Powerful Enrage talents (#31039)
This commit is contained in:
4
sql/updates/world/master/2025_06_08_00_world.sql
Normal file
4
sql/updates/world/master/2025_06_08_00_world.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_warr_frenzied_enrage', 'spell_warr_powerful_enrage');
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(184362, 'spell_warr_frenzied_enrage'),
|
||||
(184362, 'spell_warr_powerful_enrage');
|
||||
@@ -45,6 +45,7 @@ enum WarriorSpells
|
||||
SPELL_WARRIOR_CRITICAL_THINKING_ENERGIZE = 392776,
|
||||
SPELL_WARRIOR_EXECUTE = 20647,
|
||||
SPELL_WARRIOR_ENRAGE = 184362,
|
||||
SPELL_WARRIOR_FRENZIED_ENRAGE = 383848,
|
||||
SPELL_WARRIOR_FUELED_BY_VIOLENCE_HEAL = 383104,
|
||||
SPELL_WARRIOR_GLYPH_OF_THE_BLAZING_TRAIL = 123779,
|
||||
SPELL_WARRIOR_GLYPH_OF_HEROIC_LEAP = 159708,
|
||||
@@ -60,6 +61,7 @@ enum WarriorSpells
|
||||
SPELL_WARRIOR_IMPROVED_HEROIC_LEAP = 157449,
|
||||
SPELL_WARRIOR_MORTAL_STRIKE = 12294,
|
||||
SPELL_WARRIOR_MORTAL_WOUNDS = 115804,
|
||||
SPELL_WARRIOR_POWERFUL_ENRAGE = 440277,
|
||||
SPELL_WARRIOR_RALLYING_CRY = 97463,
|
||||
SPELL_WARRIOR_RUMBLING_EARTH = 275339,
|
||||
SPELL_WARRIOR_SHIELD_BLOCK_AURA = 132404,
|
||||
@@ -351,6 +353,62 @@ class spell_warr_execute_damage : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 383848 - Frenzied Enrage (attached to 184362 - Enrage)
|
||||
class spell_warr_frenzied_enrage : public SpellScript
|
||||
{
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_WARRIOR_FRENZIED_ENRAGE })
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_1 } })
|
||||
&& spellInfo->GetEffect(EFFECT_0).IsAura(SPELL_AURA_MELEE_SLOW)
|
||||
&& spellInfo->GetEffect(EFFECT_1).IsAura(SPELL_AURA_MOD_INCREASE_SPEED);
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
{
|
||||
return !GetCaster()->HasAura(SPELL_WARRIOR_FRENZIED_ENRAGE);
|
||||
}
|
||||
|
||||
static void HandleFrenziedEnrage(WorldObject*& target)
|
||||
{
|
||||
target = nullptr;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_warr_frenzied_enrage::HandleFrenziedEnrage, EFFECT_0, TARGET_UNIT_CASTER);
|
||||
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_warr_frenzied_enrage::HandleFrenziedEnrage, EFFECT_1, TARGET_UNIT_CASTER);
|
||||
}
|
||||
};
|
||||
|
||||
// 440277 - Powerful Enrage (attached to 184362 - Enrage)
|
||||
class spell_warr_powerful_enrage : public SpellScript
|
||||
{
|
||||
bool Validate(SpellInfo const* spellInfo) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_WARRIOR_POWERFUL_ENRAGE })
|
||||
&& ValidateSpellEffect({ { spellInfo->Id, EFFECT_4 } })
|
||||
&& spellInfo->GetEffect(EFFECT_3).IsAura(SPELL_AURA_ADD_PCT_MODIFIER) && spellInfo->GetEffect(EFFECT_3).MiscValue == int32(SpellModOp::HealingAndDamage)
|
||||
&& spellInfo->GetEffect(EFFECT_4).IsAura(SPELL_AURA_ADD_PCT_MODIFIER) && spellInfo->GetEffect(EFFECT_4).MiscValue == int32(SpellModOp::PeriodicHealingAndDamage);
|
||||
}
|
||||
|
||||
bool Load() override
|
||||
{
|
||||
return !GetCaster()->HasAura(SPELL_WARRIOR_POWERFUL_ENRAGE);
|
||||
}
|
||||
|
||||
static void HandlePowerfulEnrage(WorldObject*& target)
|
||||
{
|
||||
target = nullptr;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_warr_powerful_enrage::HandlePowerfulEnrage, EFFECT_3, TARGET_UNIT_CASTER);
|
||||
OnObjectTargetSelect += SpellObjectTargetSelectFn(spell_warr_powerful_enrage::HandlePowerfulEnrage, EFFECT_4, TARGET_UNIT_CASTER);
|
||||
}
|
||||
};
|
||||
|
||||
// 383103 - Fueled by Violence
|
||||
class spell_warr_fueled_by_violence : public AuraScript
|
||||
{
|
||||
@@ -944,6 +1002,7 @@ void AddSC_warrior_spell_scripts()
|
||||
RegisterSpellScript(spell_warr_critical_thinking);
|
||||
RegisterSpellScript(spell_warr_devastator);
|
||||
RegisterSpellScript(spell_warr_execute_damage);
|
||||
RegisterSpellScript(spell_warr_frenzied_enrage);
|
||||
RegisterSpellScript(spell_warr_fueled_by_violence);
|
||||
RegisterSpellScript(spell_warr_heroic_leap);
|
||||
RegisterSpellScript(spell_warr_heroic_leap_jump);
|
||||
@@ -952,6 +1011,7 @@ void AddSC_warrior_spell_scripts()
|
||||
RegisterSpellScript(spell_warr_invigorating_fury);
|
||||
RegisterSpellScript(spell_warr_item_t10_prot_4p_bonus);
|
||||
RegisterSpellScript(spell_warr_mortal_strike);
|
||||
RegisterSpellScript(spell_warr_powerful_enrage);
|
||||
RegisterSpellScript(spell_warr_rallying_cry);
|
||||
RegisterSpellScript(spell_warr_rampage_enrage);
|
||||
RegisterSpellScript(spell_warr_rumbling_earth);
|
||||
|
||||
Reference in New Issue
Block a user