Core/Spells: Unify Bloodlust spells for all classes

Port From (https://github.com/TrinityCore/TrinityCore/commit/1b3f93aa0fd2d28bfcc01a33bec1c49074c4674f)
This commit is contained in:
hondacrx
2023-05-02 14:06:54 -04:00
parent 4896455d22
commit afd86f62dd
3 changed files with 68 additions and 104 deletions
+68
View File
@@ -324,6 +324,13 @@ namespace Scripts.Spells.Generic
public const uint ZealOfTheBurningBlade = 274740; public const uint ZealOfTheBurningBlade = 274740;
public const uint FerocityOfTheFrostwolf = 274741; public const uint FerocityOfTheFrostwolf = 274741;
public const uint MightOfTheBlackrock = 274742; public const uint MightOfTheBlackrock = 274742;
// BloodlustExhaustionSpell
public const uint ShamanSated = 57724; // Bloodlust
public const uint ShamanExhaustion = 57723; // Heroism, Drums
public const uint MageTemporalDisplacement = 80354;
public const uint HunterFatigued = 264689;
public const uint EvokerExhaustion = 390435;
} }
struct CreatureIds struct CreatureIds
@@ -4972,6 +4979,67 @@ namespace Scripts.Spells.Generic
} }
} }
// 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
[Script("spell_sha_bloodlust", SpellIds.ShamanSated)]
[Script("spell_sha_heroism", SpellIds.ShamanExhaustion)]
[Script("spell_mage_time_warp", SpellIds.MageTemporalDisplacement)]
[Script("spell_hun_primal_rage", SpellIds.HunterFatigued)]
[Script("spell_evo_fury_of_the_aspects", SpellIds.EvokerExhaustion)]
[Script("spell_item_bloodlust_drums", SpellIds.ShamanExhaustion)]
class spell_gen_bloodlust : SpellScript
{
uint _exhaustionSpellId;
public spell_gen_bloodlust(uint exhaustionSpellId)
{
_exhaustionSpellId = exhaustionSpellId;
}
public override bool Validate(SpellInfo spellInfo)
{
return ValidateSpellInfo(SpellIds.ShamanSated, SpellIds.ShamanExhaustion, SpellIds.MageTemporalDisplacement, SpellIds.HunterFatigued, SpellIds.EvokerExhaustion);
}
void FilterTargets(List<WorldObject> targets)
{
targets.RemoveAll(target =>
{
Unit unit = target.ToUnit();
if (unit == null)
return true;
return unit.HasAura(SpellIds.ShamanSated)
|| unit.HasAura(SpellIds.ShamanExhaustion)
|| unit.HasAura(SpellIds.MageTemporalDisplacement)
|| unit.HasAura(SpellIds.HunterFatigued)
|| unit.HasAura(SpellIds.EvokerExhaustion);
});
}
void HandleHit(uint effIndex)
{
Unit target = GetHitUnit();
target.CastSpell(target, _exhaustionSpellId, true);
}
public override void Register()
{
OnObjectAreaTargetSelect.Add(new ObjectAreaTargetSelectHandler(FilterTargets, 0, Targets.UnitCasterAreaRaid));
OnObjectAreaTargetSelect.Add(new ObjectAreaTargetSelectHandler(FilterTargets, 1, Targets.UnitCasterAreaRaid));
OnEffectHitTarget.Add(new EffectHandler(HandleHit, 0, SpellEffectName.ApplyAura));
}
}
// 40307 - Stasis Field // 40307 - Stasis Field
class StasisFieldSearcher : ICheck<Unit> class StasisFieldSearcher : ICheck<Unit>
{ {
-37
View File
@@ -61,7 +61,6 @@ namespace Scripts.Spells.Mage
public const uint SerpentForm = 32817; public const uint SerpentForm = 32817;
public const uint SheepForm = 32820; public const uint SheepForm = 32820;
public const uint SquirrelForm = 32813; public const uint SquirrelForm = 32813;
public const uint TemporalDisplacement = 80354;
public const uint WorgenForm = 32819; public const uint WorgenForm = 32819;
public const uint IceLanceTrigger = 228598; public const uint IceLanceTrigger = 228598;
public const uint ThermalVoid = 155149; public const uint ThermalVoid = 155149;
@@ -69,12 +68,6 @@ namespace Scripts.Spells.Mage
public const uint ChainReactionDummy = 278309; public const uint ChainReactionDummy = 278309;
public const uint ChainReaction = 278310; public const uint ChainReaction = 278310;
public const uint TouchOfTheMagiExplode = 210833; public const uint TouchOfTheMagiExplode = 210833;
//Misc
public const uint HunterInsanity = 95809;
public const uint ShamanExhaustion = 57723;
public const uint ShamanSated = 57724;
public const uint PetNetherwindsFatigued = 160455;
} }
// 110909 - Alter Time Aura // 110909 - Alter Time Aura
@@ -1182,36 +1175,6 @@ namespace Scripts.Spells.Mage
OnEffectHitTarget.Add(new EffectHandler(HandleDamage, 1, SpellEffectName.SchoolDamage)); OnEffectHitTarget.Add(new EffectHandler(HandleDamage, 1, SpellEffectName.SchoolDamage));
} }
} }
[Script] // 80353 - Time Warp
class spell_mage_time_warp : SpellScript
{
public override bool Validate(SpellInfo spellInfo)
{
return ValidateSpellInfo(SpellIds.TemporalDisplacement, SpellIds.HunterInsanity, SpellIds.ShamanExhaustion, SpellIds.ShamanSated, SpellIds.PetNetherwindsFatigued);
}
void RemoveInvalidTargets(List<WorldObject> targets)
{
targets.RemoveAll(new UnitAuraCheck<WorldObject>(true, SpellIds.TemporalDisplacement));
targets.RemoveAll(new UnitAuraCheck<WorldObject>(true, SpellIds.HunterInsanity));
targets.RemoveAll(new UnitAuraCheck<WorldObject>(true, SpellIds.ShamanExhaustion));
targets.RemoveAll(new UnitAuraCheck<WorldObject>(true, SpellIds.ShamanSated));
}
void ApplyDebuff()
{
Unit target = GetHitUnit();
if (target)
target.CastSpell(target, SpellIds.TemporalDisplacement, true);
}
public override void Register()
{
OnObjectAreaTargetSelect.Add(new ObjectAreaTargetSelectHandler(RemoveInvalidTargets, SpellConst.EffectAll, Targets.UnitCasterAreaRaid));
AfterHit.Add(new HitHandler(ApplyDebuff));
}
}
[Script] // 210824 - Touch of the Magi (Aura) [Script] // 210824 - Touch of the Magi (Aura)
class spell_mage_touch_of_the_magi_aura : AuraScript class spell_mage_touch_of_the_magi_aura : AuraScript
-67
View File
@@ -40,7 +40,6 @@ namespace Scripts.Spells.Shaman
public const uint ElementalBlastOverload = 120588; public const uint ElementalBlastOverload = 120588;
public const uint ElementalMastery = 16166; public const uint ElementalMastery = 16166;
public const uint EnergySurge = 40465; public const uint EnergySurge = 40465;
public const uint Exhaustion = 57723;
public const uint FlameShock = 188389; public const uint FlameShock = 188389;
public const uint FlametongueAttack = 10444; public const uint FlametongueAttack = 10444;
public const uint FlametongueWeaponEnchant = 334294; public const uint FlametongueWeaponEnchant = 334294;
@@ -74,7 +73,6 @@ namespace Scripts.Spells.Shaman
public const uint PathOfFlamesSpread = 210621; public const uint PathOfFlamesSpread = 210621;
public const uint PathOfFlamesTalent = 201909; public const uint PathOfFlamesTalent = 201909;
public const uint PowerSurge = 40466; public const uint PowerSurge = 40466;
public const uint Sated = 57724;
public const uint SpiritWolfTalent = 260878; public const uint SpiritWolfTalent = 260878;
public const uint SpiritWolfPeriodic = 260882; public const uint SpiritWolfPeriodic = 260882;
public const uint SpiritWolfAura = 260881; public const uint SpiritWolfAura = 260881;
@@ -89,11 +87,6 @@ namespace Scripts.Spells.Shaman
public const uint WindfuryAttack = 25504; public const uint WindfuryAttack = 25504;
public const uint WindfuryEnchantment = 334302; public const uint WindfuryEnchantment = 334302;
public const uint WindRush = 192082; public const uint WindRush = 192082;
//Misc
public const uint HunterInsanity = 95809;
public const uint MageTemporalDisplacement = 80354;
public const uint PetNetherwindsFatigued = 160455;
} }
struct CreatureIds struct CreatureIds
@@ -191,36 +184,6 @@ namespace Scripts.Spells.Shaman
} }
} }
[Script] // 2825 - Bloodlust
class spell_sha_bloodlust : SpellScript
{
public override bool Validate(SpellInfo spellInfo)
{
return ValidateSpellInfo(SpellIds.Sated, SpellIds.HunterInsanity, SpellIds.MageTemporalDisplacement, SpellIds.PetNetherwindsFatigued);
}
void RemoveInvalidTargets(List<WorldObject> targets)
{
targets.RemoveAll(new UnitAuraCheck<WorldObject>(true, SpellIds.Sated));
targets.RemoveAll(new UnitAuraCheck<WorldObject>(true, SpellIds.HunterInsanity));
targets.RemoveAll(new UnitAuraCheck<WorldObject>(true, SpellIds.MageTemporalDisplacement));
}
void ApplyDebuff()
{
Unit target = GetHitUnit();
if (target)
target.CastSpell(target, SpellIds.Sated, true);
}
public override void Register()
{
OnObjectAreaTargetSelect.Add(new ObjectAreaTargetSelectHandler(RemoveInvalidTargets, 0, Targets.UnitCasterAreaRaid));
OnObjectAreaTargetSelect.Add(new ObjectAreaTargetSelectHandler(RemoveInvalidTargets, 1, Targets.UnitCasterAreaRaid));
AfterHit.Add(new HitHandler(ApplyDebuff));
}
}
[Script] // 188443 - Chain Lightning [Script] // 188443 - Chain Lightning
class spell_sha_chain_lightning : SpellScript class spell_sha_chain_lightning : SpellScript
{ {
@@ -707,36 +670,6 @@ namespace Scripts.Spells.Shaman
} }
} }
[Script] // 32182 - Heroism
class spell_sha_heroism : SpellScript
{
public override bool Validate(SpellInfo spellInfo)
{
return ValidateSpellInfo(SpellIds.Exhaustion, SpellIds.HunterInsanity, SpellIds.MageTemporalDisplacement, SpellIds.PetNetherwindsFatigued);
}
void RemoveInvalidTargets(List<WorldObject> targets)
{
targets.RemoveAll(new UnitAuraCheck<WorldObject>(true, SpellIds.Exhaustion));
targets.RemoveAll(new UnitAuraCheck<WorldObject>(true, SpellIds.HunterInsanity));
targets.RemoveAll(new UnitAuraCheck<WorldObject>(true, SpellIds.MageTemporalDisplacement));
}
void ApplyDebuff()
{
Unit target = GetHitUnit();
if (target)
target.CastSpell(target, SpellIds.Exhaustion, true);
}
public override void Register()
{
OnObjectAreaTargetSelect.Add(new ObjectAreaTargetSelectHandler(RemoveInvalidTargets, 0, Targets.UnitCasterAreaRaid));
OnObjectAreaTargetSelect.Add(new ObjectAreaTargetSelectHandler(RemoveInvalidTargets, 1, Targets.UnitCasterAreaRaid));
AfterHit.Add(new HitHandler(ApplyDebuff));
}
}
[Script] // 210714 - Icefury [Script] // 210714 - Icefury
class spell_sha_icefury : AuraScript class spell_sha_icefury : AuraScript
{ {