Scripts/Spells: Implement Demon Hunter Base Spell "Glide"
Port From (https://github.com/TrinityCore/TrinityCore/commit/b1eb4c2b3e0745e0d801bfa4111c692cc3bb00a1)
This commit is contained in:
@@ -16,25 +16,155 @@
|
||||
*/
|
||||
|
||||
using Framework.Constants;
|
||||
using Game.AI;
|
||||
using Game.Entities;
|
||||
using Game.Scripting;
|
||||
using Game.Spells;
|
||||
using Game.AI;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Scripts.Spells.DemonHunter
|
||||
{
|
||||
struct SpellIds
|
||||
{
|
||||
public const uint AbyssalStrike = 207550;
|
||||
public const uint Annihilation = 201427;
|
||||
public const uint AnnihilationMh = 227518;
|
||||
public const uint AnnihilationOh = 201428;
|
||||
public const uint AwakenTheDemonWithinCd = 207128;
|
||||
public const uint Blur = 212800;
|
||||
public const uint BlurTrigger = 198589;
|
||||
public const uint BurningAlive = 207739;
|
||||
public const uint BurningAliveTargetSelector = 207760;
|
||||
public const uint ChaosNova = 179057;
|
||||
public const uint ChaosStrike = 162794;
|
||||
public const uint ChaosStrikeEnergize = 193840;
|
||||
public const uint ChaosStrikeMh = 222031;
|
||||
public const uint ChaosStrikeOh = 199547;
|
||||
public const uint ConsumeSoulHavoc = 228542;
|
||||
public const uint ConsumeSoulHavocDemon = 228556;
|
||||
public const uint ConsumeSoulHavocShattered = 228540;
|
||||
public const uint ConsumeSoulHeal = 203794;
|
||||
public const uint ConsumeSoulVengeance = 208014;
|
||||
public const uint ConsumeSoulVengeanceDemon = 210050;
|
||||
public const uint ConsumeSoulVengeanceShattered = 210047;
|
||||
public const uint DarknessAbsorb = 209426;
|
||||
public const uint DemonBladesDmg = 203796;
|
||||
public const uint DemonSpikes = 203819;
|
||||
public const uint DemonSpikesTrigger = 203720;
|
||||
public const uint Demonic = 213410;
|
||||
public const uint DemonicOrigins = 235893;
|
||||
public const uint DemonicOriginsBuff = 235894;
|
||||
public const uint DemonicTrampleDmg = 208645;
|
||||
public const uint DemonicTrampleStun = 213491;
|
||||
public const uint DemonsBite = 162243;
|
||||
public const uint EyeBeam = 198013;
|
||||
public const uint EyeBeamDmg = 198030;
|
||||
public const uint EyeOfLeotherasDmg = 206650;
|
||||
public const uint FeastOfSouls = 207697;
|
||||
public const uint FeastOfSoulsPeriodicHeal = 207693;
|
||||
public const uint FeedTheDemon = 218612;
|
||||
public const uint FelBarrage = 211053;
|
||||
public const uint FelBarrageDmg = 211052;
|
||||
public const uint FelBarrageProc = 222703;
|
||||
public const uint FelDevastation = 212084;
|
||||
public const uint FelDevastationDmg = 212105;
|
||||
public const uint FelDevastationHeal = 212106;
|
||||
public const uint FelRush = 195072;
|
||||
public const uint FelRushDmg = 192611;
|
||||
public const uint FelRushGround = 197922;
|
||||
public const uint FelRushWaterAir = 197923;
|
||||
public const uint Felblade = 232893;
|
||||
public const uint FelbladeCharge = 213241;
|
||||
public const uint FelbladeDmg = 213243;
|
||||
public const uint FelbladeProc = 203557;
|
||||
public const uint FelbladeProcVisual = 204497;
|
||||
public const uint FelbladeProc1 = 236167;
|
||||
public const uint FieryBrand = 204021;
|
||||
public const uint FieryBrandDmgReductionDebuff = 207744;
|
||||
public const uint FieryBrandDot = 207771;
|
||||
public const uint FirstBlood = 206416;
|
||||
public const uint FlameCrash = 227322;
|
||||
public const uint Frailty = 224509;
|
||||
public const uint Glide = 131347;
|
||||
public const uint GlideDuration = 197154;
|
||||
public const uint GlideKnockback = 196353;
|
||||
public const uint HavocMastery = 185164;
|
||||
public const uint IllidansGrasp = 205630;
|
||||
public const uint IllidansGraspDamage = 208618;
|
||||
public const uint IllidansGraspJumpDest = 208175;
|
||||
public const uint InfernalStrikeCast = 189110;
|
||||
public const uint InfernalStrikeImpactDamage = 189112;
|
||||
public const uint InfernalStrikeJump = 189111;
|
||||
public const uint JaggedSpikes = 205627;
|
||||
public const uint JaggedSpikesDmg = 208790;
|
||||
public const uint JaggedSpikesProc = 208796;
|
||||
public const uint ManaRiftDmgPowerBurn = 235904;
|
||||
public const uint Metamorphosis = 191428;
|
||||
public const uint MetamorphosisDummy = 191427;
|
||||
public const uint MetamorphosisImpactDamage = 200166;
|
||||
public const uint MetamorphosisReset = 320645;
|
||||
public const uint MetamorphosisTransform = 162264;
|
||||
public const uint MetamorphosisVengeanceTransform = 187827;
|
||||
public const uint Momentum = 208628;
|
||||
public const uint NemesisAberrations = 208607;
|
||||
public const uint NemesisBeasts = 208608;
|
||||
public const uint NemesisCritters = 208609;
|
||||
public const uint NemesisDemons = 208608;
|
||||
public const uint NemesisDragonkin = 208610;
|
||||
public const uint NemesisElementals = 208611;
|
||||
public const uint NemesisGiants = 208612;
|
||||
public const uint NemesisHumanoids = 208605;
|
||||
public const uint NemesisMechanicals = 208613;
|
||||
public const uint NemesisUndead = 208614;
|
||||
public const uint RainFromAbove = 206803;
|
||||
public const uint RainOfChaos = 205628;
|
||||
public const uint RainOfChaosImpact = 232538;
|
||||
public const uint RazorSpikes = 210003;
|
||||
public const uint Sever = 235964;
|
||||
public const uint ShatterSoul = 209980;
|
||||
public const uint ShatterSoul1 = 209981;
|
||||
public const uint ShatterSoul2 = 210038;
|
||||
public const uint ShatteredSoul = 226258;
|
||||
public const uint ShatteredSoulLesserSoulFragment1 = 228533;
|
||||
public const uint ShatteredSoulLesserSoulFragment2 = 237867;
|
||||
public const uint Shear = 203782;
|
||||
public const uint SigilOfChainsAreaSelector = 204834;
|
||||
public const uint SigilOfChainsGrip = 208674;
|
||||
public const uint SigilOfChainsJump = 208674;
|
||||
public const uint SigilOfChainsSlow = 204843;
|
||||
public const uint SigilOfChainsSnare = 204843;
|
||||
public const uint SigilOfChainsTargetSelect = 204834;
|
||||
public const uint SigilOfChainsVisual = 208673;
|
||||
public const uint SigilOfFlameAoe = 204598;
|
||||
public const uint SigilOfFlameDamage = 204598;
|
||||
public const uint SigilOfFlameFlameCrash = 228973;
|
||||
public const uint SigilOfMisery = 207685;
|
||||
public const uint SigilOfMiseryAoe = 207685;
|
||||
public const uint SigilOfSilence = 204490;
|
||||
public const uint SigilOfSilenceAoe = 204490;
|
||||
public const uint SoulBarrier = 227225;
|
||||
public const uint SoulCleave = 228477;
|
||||
public const uint SoulCleaveDmg = 228478;
|
||||
public const uint SoulFragmentCounter = 203981;
|
||||
public const uint SoulRending = 204909;
|
||||
public const uint SpiritBombDamage = 218677;
|
||||
public const uint SpiritBombHeal = 227255;
|
||||
public const uint SpiritBombVisual = 218678;
|
||||
public const uint ThrowGlaive = 185123;
|
||||
public const uint UncontainedFel = 209261;
|
||||
public const uint VengefulRetreat = 198813;
|
||||
public const uint VengefulRetreatTrigger = 198793;
|
||||
}
|
||||
|
||||
struct AreaTriggerIds
|
||||
{
|
||||
public const uint ShatteredSoulsHavoc = 8352;
|
||||
public const uint ShatteredSoulsHavocDemon = 11231;
|
||||
public const uint ShatteredSoulsVengeance = 11266;
|
||||
public const uint ShatteredSoulsVengeanceDemon = 10693;
|
||||
public const uint SoulFragmentHavoc = 12929;
|
||||
public const uint SoulFragmentVengeance = 10665;
|
||||
}
|
||||
|
||||
[Script] // 197125 - Chaos Strike
|
||||
@@ -209,4 +339,82 @@ namespace Scripts.Spells.DemonHunter
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Script] // 131347 - Glide
|
||||
class spell_dh_glide : SpellScript
|
||||
{
|
||||
public override bool Validate(SpellInfo spellInfo)
|
||||
{
|
||||
return ValidateSpellInfo(SpellIds.GlideKnockback, SpellIds.GlideDuration, SpellIds.VengefulRetreatTrigger, SpellIds.FelRush);
|
||||
}
|
||||
|
||||
SpellCastResult CheckCast()
|
||||
{
|
||||
Unit caster = GetCaster();
|
||||
if (caster.IsMounted() || caster.GetVehicleBase())
|
||||
return SpellCastResult.DontReport;
|
||||
|
||||
if (!caster.IsFalling())
|
||||
return SpellCastResult.NotOnGround;
|
||||
|
||||
return SpellCastResult.SpellCastOk;
|
||||
}
|
||||
|
||||
void HandleCast()
|
||||
{
|
||||
Player caster = GetCaster().ToPlayer();
|
||||
if (!caster)
|
||||
return;
|
||||
|
||||
caster.CastSpell(caster, SpellIds.GlideKnockback, true);
|
||||
caster.CastSpell(caster, SpellIds.GlideDuration, true);
|
||||
|
||||
caster.GetSpellHistory().StartCooldown(Global.SpellMgr.GetSpellInfo(SpellIds.VengefulRetreatTrigger, GetCastDifficulty()), 0, null, false, TimeSpan.FromMilliseconds(250));
|
||||
caster.GetSpellHistory().StartCooldown(Global.SpellMgr.GetSpellInfo(SpellIds.FelRush, GetCastDifficulty()), 0, null, false, TimeSpan.FromMilliseconds(250));
|
||||
}
|
||||
|
||||
public override void Register()
|
||||
{
|
||||
OnCheckCast.Add(new CheckCastHandler(CheckCast));
|
||||
BeforeCast.Add(new CastHandler(HandleCast));
|
||||
}
|
||||
}
|
||||
|
||||
[Script] // 131347 - Glide
|
||||
class spell_dh_glide_AuraScript : AuraScript
|
||||
{
|
||||
public override bool Validate(SpellInfo spellInfo)
|
||||
{
|
||||
return ValidateSpellInfo(SpellIds.GlideDuration);
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect aurEff, AuraEffectHandleModes mode)
|
||||
{
|
||||
GetTarget().RemoveAura(SpellIds.GlideDuration);
|
||||
}
|
||||
|
||||
public override void Register()
|
||||
{
|
||||
AfterEffectRemove.Add(new EffectApplyHandler(OnRemove, 0, AuraType.FeatherFall, AuraEffectHandleModes.Real));
|
||||
}
|
||||
}
|
||||
|
||||
[Script] // 197154 - Glide
|
||||
class spell_dh_glide_timer : AuraScript
|
||||
{
|
||||
public override bool Validate(SpellInfo spellInfo)
|
||||
{
|
||||
return ValidateSpellInfo(SpellIds.Glide);
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect aurEff, AuraEffectHandleModes mode)
|
||||
{
|
||||
GetTarget().RemoveAura(SpellIds.Glide);
|
||||
}
|
||||
|
||||
public override void Register()
|
||||
{
|
||||
AfterEffectRemove.Add(new EffectApplyHandler(OnRemove, 0, AuraType.Dummy, AuraEffectHandleModes.Real));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user