mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Spells: Unify Bloodlust spells for all classes (#28927)
Co-authored-by: ModoX <moardox@gmail.com>
This commit is contained in:
13
sql/updates/world/master/2023_04_16_01_world.sql
Normal file
13
sql/updates/world/master/2023_04_16_01_world.sql
Normal file
@@ -0,0 +1,13 @@
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (2825, 32182, 80353, 264667, 390386, 146555, 178207, 230935, 256740, 309658, 381301);
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(2825, 'spell_sha_bloodlust'),
|
||||
(32182, 'spell_sha_heroism'),
|
||||
(80353, 'spell_mage_time_warp'),
|
||||
(264667, 'spell_hun_primal_rage'),
|
||||
(390386, 'spell_evo_fury_of_the_aspects'),
|
||||
(146555, 'spell_item_bloodlust_drums'),
|
||||
(178207, 'spell_item_bloodlust_drums'),
|
||||
(230935, 'spell_item_bloodlust_drums'),
|
||||
(256740, 'spell_item_bloodlust_drums'),
|
||||
(309658, 'spell_item_bloodlust_drums'),
|
||||
(381301, 'spell_item_bloodlust_drums');
|
||||
@@ -5310,6 +5310,77 @@ class spell_gen_skinning : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
enum BloodlustExhaustionSpell : uint32
|
||||
{
|
||||
SPELL_SHAMAN_SATED = 57724, // Bloodlust
|
||||
SPELL_SHAMAN_EXHAUSTION = 57723, // Heroism, Drums
|
||||
SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354,
|
||||
SPELL_HUNTER_FATIGUED = 264689,
|
||||
SPELL_EVOKER_EXHAUSTION = 390435,
|
||||
};
|
||||
|
||||
// 2825 - Bloodlust
|
||||
// 32182 - Heroism
|
||||
// 80353 - Time Warp
|
||||
// 264667 - Primal Rage
|
||||
// 390386 - Fury of the Aspects
|
||||
// 146555 - Drums of Rage
|
||||
// 178207 - Drums of Fury
|
||||
// 230935 - Drums of the Mountain
|
||||
// 256740 - Drums of the Maelstrom
|
||||
// 309658 - Drums of Deathly Ferocity
|
||||
// 381301 - Feral Hide Drums
|
||||
class spell_gen_bloodlust : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_gen_bloodlust);
|
||||
public:
|
||||
spell_gen_bloodlust(uint32 exhaustionSpellId) : _exhaustionSpellId(exhaustionSpellId) { }
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_SHAMAN_SATED,
|
||||
SPELL_SHAMAN_EXHAUSTION,
|
||||
SPELL_MAGE_TEMPORAL_DISPLACEMENT,
|
||||
SPELL_HUNTER_FATIGUED,
|
||||
SPELL_EVOKER_EXHAUSTION
|
||||
});
|
||||
}
|
||||
|
||||
void FilterTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
targets.remove_if([](WorldObject* target) -> bool
|
||||
{
|
||||
Unit* unit = target->ToUnit();
|
||||
if (!unit)
|
||||
return true;
|
||||
|
||||
return unit->HasAura(SPELL_SHAMAN_SATED)
|
||||
|| unit->HasAura(SPELL_SHAMAN_EXHAUSTION)
|
||||
|| unit->HasAura(SPELL_MAGE_TEMPORAL_DISPLACEMENT)
|
||||
|| unit->HasAura(SPELL_HUNTER_FATIGUED)
|
||||
|| unit->HasAura(SPELL_EVOKER_EXHAUSTION);
|
||||
});
|
||||
}
|
||||
|
||||
void HandleHit(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* target = GetHitUnit();
|
||||
target->CastSpell(target, _exhaustionSpellId, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_gen_bloodlust::FilterTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID);
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_gen_bloodlust::FilterTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_gen_bloodlust::HandleHit, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
|
||||
}
|
||||
|
||||
private:
|
||||
uint32 _exhaustionSpellId;
|
||||
};
|
||||
|
||||
void AddSC_generic_spell_scripts()
|
||||
{
|
||||
RegisterSpellScript(spell_gen_absorb0_hitlimit1);
|
||||
@@ -5472,4 +5543,10 @@ void AddSC_generic_spell_scripts()
|
||||
RegisterSpellScript(spell_gen_reverse_cast_target_to_caster_triggered);
|
||||
RegisterSpellScript(spell_gen_despawn_all_summons_owned_by_caster);
|
||||
RegisterSpellScript(spell_gen_skinning);
|
||||
RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_sha_bloodlust", SPELL_SHAMAN_SATED);
|
||||
RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_sha_heroism", SPELL_SHAMAN_EXHAUSTION);
|
||||
RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_mage_time_warp", SPELL_MAGE_TEMPORAL_DISPLACEMENT);
|
||||
RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_hun_primal_rage", SPELL_HUNTER_FATIGUED);
|
||||
RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_evo_fury_of_the_aspects", SPELL_EVOKER_EXHAUSTION);
|
||||
RegisterSpellScriptWithArgs(spell_gen_bloodlust, "spell_item_bloodlust_drums", SPELL_SHAMAN_EXHAUSTION);
|
||||
}
|
||||
|
||||
@@ -58,9 +58,6 @@ enum HunterSpells
|
||||
enum MiscSpells
|
||||
{
|
||||
SPELL_DRAENEI_GIFT_OF_THE_NAARU = 59543,
|
||||
SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354,
|
||||
SPELL_SHAMAN_EXHAUSTION = 57723,
|
||||
SPELL_SHAMAN_SATED = 57724
|
||||
};
|
||||
|
||||
// 131894 - A Murder of Crows
|
||||
|
||||
@@ -80,7 +80,6 @@ enum MageSpells
|
||||
SPELL_MAGE_SERPENT_FORM = 32817,
|
||||
SPELL_MAGE_SHEEP_FORM = 32820,
|
||||
SPELL_MAGE_SQUIRREL_FORM = 32813,
|
||||
SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354,
|
||||
SPELL_MAGE_WORGEN_FORM = 32819,
|
||||
SPELL_PET_NETHERWINDS_FATIGUED = 160455,
|
||||
SPELL_MAGE_ICE_LANCE_TRIGGER = 228598,
|
||||
@@ -91,13 +90,6 @@ enum MageSpells
|
||||
SPELL_MAGE_TOUCH_OF_THE_MAGI_EXPLODE = 210833,
|
||||
};
|
||||
|
||||
enum MiscSpells
|
||||
{
|
||||
SPELL_HUNTER_INSANITY = 95809,
|
||||
SPELL_SHAMAN_EXHAUSTION = 57723,
|
||||
SPELL_SHAMAN_SATED = 57724
|
||||
};
|
||||
|
||||
// 110909 - Alter Time Aura
|
||||
// 342246 - Alter Time Aura
|
||||
class spell_mage_alter_time_aura : public AuraScript
|
||||
@@ -1297,44 +1289,6 @@ class spell_mage_supernova : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 80353 - Time Warp
|
||||
class spell_mage_time_warp : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_mage_time_warp);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_MAGE_TEMPORAL_DISPLACEMENT,
|
||||
SPELL_HUNTER_INSANITY,
|
||||
SPELL_SHAMAN_EXHAUSTION,
|
||||
SPELL_SHAMAN_SATED,
|
||||
SPELL_PET_NETHERWINDS_FATIGUED
|
||||
});
|
||||
}
|
||||
|
||||
void RemoveInvalidTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_MAGE_TEMPORAL_DISPLACEMENT));
|
||||
targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_HUNTER_INSANITY));
|
||||
targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_EXHAUSTION));
|
||||
targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_SATED));
|
||||
}
|
||||
|
||||
void ApplyDebuff()
|
||||
{
|
||||
if (Unit* target = GetHitUnit())
|
||||
target->CastSpell(target, SPELL_MAGE_TEMPORAL_DISPLACEMENT, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_mage_time_warp::RemoveInvalidTargets, EFFECT_ALL, TARGET_UNIT_CASTER_AREA_RAID);
|
||||
AfterHit += SpellHitFn(spell_mage_time_warp::ApplyDebuff);
|
||||
}
|
||||
};
|
||||
|
||||
// 210824 - Touch of the Magi (Aura)
|
||||
class spell_mage_touch_of_the_magi_aura : public AuraScript
|
||||
{
|
||||
@@ -1439,7 +1393,6 @@ void AddSC_mage_spell_scripts()
|
||||
RegisterSpellScript(spell_mage_ring_of_frost);
|
||||
RegisterSpellAndAuraScriptPair(spell_mage_ring_of_frost_freeze, spell_mage_ring_of_frost_freeze_AuraScript);
|
||||
RegisterSpellScript(spell_mage_supernova);
|
||||
RegisterSpellScript(spell_mage_time_warp);
|
||||
RegisterSpellScript(spell_mage_touch_of_the_magi_aura);
|
||||
RegisterSpellScript(spell_mage_water_elemental_freeze);
|
||||
}
|
||||
|
||||
@@ -63,7 +63,6 @@ enum ShamanSpells
|
||||
SPELL_SHAMAN_ELEMENTAL_BLAST_OVERLOAD = 120588,
|
||||
SPELL_SHAMAN_ELEMENTAL_MASTERY = 16166,
|
||||
SPELL_SHAMAN_ENERGY_SURGE = 40465,
|
||||
SPELL_SHAMAN_EXHAUSTION = 57723,
|
||||
SPELL_SHAMAN_FLAME_SHOCK = 188389,
|
||||
SPELL_SHAMAN_FLAMETONGUE_ATTACK = 10444,
|
||||
SPELL_SHAMAN_FLAMETONGUE_WEAPON_ENCHANT = 334294,
|
||||
@@ -97,7 +96,6 @@ enum ShamanSpells
|
||||
SPELL_SHAMAN_PATH_OF_FLAMES_SPREAD = 210621,
|
||||
SPELL_SHAMAN_PATH_OF_FLAMES_TALENT = 201909,
|
||||
SPELL_SHAMAN_POWER_SURGE = 40466,
|
||||
SPELL_SHAMAN_SATED = 57724,
|
||||
SPELL_SHAMAN_SPIRIT_WOLF_TALENT = 260878,
|
||||
SPELL_SHAMAN_SPIRIT_WOLF_PERIODIC = 260882,
|
||||
SPELL_SHAMAN_SPIRIT_WOLF_AURA = 260881,
|
||||
@@ -114,13 +112,6 @@ enum ShamanSpells
|
||||
SPELL_SHAMAN_WIND_RUSH = 192082
|
||||
};
|
||||
|
||||
enum MiscSpells
|
||||
{
|
||||
SPELL_HUNTER_INSANITY = 95809,
|
||||
SPELL_MAGE_TEMPORAL_DISPLACEMENT = 80354,
|
||||
SPELL_PET_NETHERWINDS_FATIGUED = 160455
|
||||
};
|
||||
|
||||
enum MiscNpcs
|
||||
{
|
||||
NPC_HEALING_RAIN_INVISIBLE_STALKER = 73400,
|
||||
@@ -222,37 +213,6 @@ class spell_sha_ancestral_guidance_heal : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 2825 - Bloodlust
|
||||
class spell_sha_bloodlust : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_sha_bloodlust);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_SATED, SPELL_HUNTER_INSANITY, SPELL_MAGE_TEMPORAL_DISPLACEMENT, SPELL_PET_NETHERWINDS_FATIGUED });
|
||||
}
|
||||
|
||||
void RemoveInvalidTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_SATED));
|
||||
targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_HUNTER_INSANITY));
|
||||
targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_MAGE_TEMPORAL_DISPLACEMENT));
|
||||
}
|
||||
|
||||
void ApplyDebuff()
|
||||
{
|
||||
if (Unit* target = GetHitUnit())
|
||||
target->CastSpell(target, SPELL_SHAMAN_SATED, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID);
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_bloodlust::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID);
|
||||
AfterHit += SpellHitFn(spell_sha_bloodlust::ApplyDebuff);
|
||||
}
|
||||
};
|
||||
|
||||
// 188443 - Chain Lightning
|
||||
class spell_sha_chain_lightning : public SpellScript
|
||||
{
|
||||
@@ -751,37 +711,6 @@ class spell_sha_healing_stream_totem_heal : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 32182 - Heroism
|
||||
class spell_sha_heroism : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_sha_heroism);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_EXHAUSTION, SPELL_HUNTER_INSANITY, SPELL_MAGE_TEMPORAL_DISPLACEMENT, SPELL_PET_NETHERWINDS_FATIGUED });
|
||||
}
|
||||
|
||||
void RemoveInvalidTargets(std::list<WorldObject*>& targets)
|
||||
{
|
||||
targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_SHAMAN_EXHAUSTION));
|
||||
targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_HUNTER_INSANITY));
|
||||
targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_MAGE_TEMPORAL_DISPLACEMENT));
|
||||
}
|
||||
|
||||
void ApplyDebuff()
|
||||
{
|
||||
if (Unit* target = GetHitUnit())
|
||||
target->CastSpell(target, SPELL_SHAMAN_EXHAUSTION, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism::RemoveInvalidTargets, EFFECT_0, TARGET_UNIT_CASTER_AREA_RAID);
|
||||
OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_sha_heroism::RemoveInvalidTargets, EFFECT_1, TARGET_UNIT_CASTER_AREA_RAID);
|
||||
AfterHit += SpellHitFn(spell_sha_heroism::ApplyDebuff);
|
||||
}
|
||||
};
|
||||
|
||||
// 210714 - Icefury
|
||||
class spell_sha_icefury : public AuraScript
|
||||
{
|
||||
@@ -1804,7 +1733,6 @@ void AddSC_shaman_spell_scripts()
|
||||
RegisterSpellScript(spell_sha_aftershock);
|
||||
RegisterSpellScript(spell_sha_ancestral_guidance);
|
||||
RegisterSpellScript(spell_sha_ancestral_guidance_heal);
|
||||
RegisterSpellScript(spell_sha_bloodlust);
|
||||
RegisterSpellScript(spell_sha_chain_lightning);
|
||||
RegisterSpellScript(spell_sha_chain_lightning_overload);
|
||||
RegisterSpellScript(spell_sha_crash_lightning);
|
||||
@@ -1820,7 +1748,6 @@ void AddSC_shaman_spell_scripts()
|
||||
RegisterSpellAndAuraScriptPair(spell_sha_healing_rain, spell_sha_healing_rain_aura);
|
||||
RegisterSpellScript(spell_sha_healing_rain_target_limit);
|
||||
RegisterSpellScript(spell_sha_healing_stream_totem_heal);
|
||||
RegisterSpellScript(spell_sha_heroism);
|
||||
RegisterSpellScript(spell_sha_icefury);
|
||||
RegisterSpellScript(spell_sha_item_lightning_shield);
|
||||
RegisterSpellScript(spell_sha_item_lightning_shield_trigger);
|
||||
|
||||
Reference in New Issue
Block a user