Beispiel #1
0
        public override void Initialize()
        {
            Cooldown      = 5;
            ExecutionType = AbilityExecuteFlags.Target | AbilityExecuteFlags.ClusterTargetNearest;
            WaitVars      = new WaitLoops(0, 1, true);
            Cost          = RuneIndex == 3?10:20;
            Range         = 50;
            IsRanged      = true;
            IsProjectile  = true;
            IsChanneling  = true;
            UseageType    = AbilityUseage.Combat;
            Priority      = AbilityPriority.Medium;
            PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated));

            SingleUnitCondition = new UnitTargetConditions(TargetProperties.IsSpecial, 45);
            ClusterConditions   = new SkillClusterConditions(10d, 45f, 2, true);

            FcriteriaCombat = () =>
            {
                var isChanneling = (IsFiring || LastUsedMilliseconds < 450);
                //If channeling, check if energy is greater then 10.. else only start when energy is at least -40-
                return((isChanneling && Bot.Character.Data.dCurrentEnergy > 6) || (Bot.Character.Data.dCurrentEnergy > 40) &&
                       (!Bot.Character.Class.bWaitingForSpecial || Bot.Character.Data.dCurrentEnergy >= Bot.Character.Class.iWaitingReservedAmount));
            };
        }
Beispiel #2
0
        public override void Initialize()
        {
            Cooldown         = 100000;
            ExecutionType    = AbilityExecuteFlags.Buff;
            WaitVars         = new WaitLoops(4, 5, true);
            Cost             = 25;
            UseageType       = AbilityUseage.Combat;
            IsSpecialAbility = true;
            Priority         = AbilityPriority.High;
            PreCast          = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckCanCast |
                                                 AbilityPreCastFlags.CheckEnergy));
            UnitsWithinRangeConditions  = new Tuple <RangeIntervals, int>(RangeIntervals.Range_25, 1);
            ElitesWithinRangeConditions = new Tuple <RangeIntervals, int>(RangeIntervals.Range_30, 1);
            SingleUnitCondition         = new UnitTargetConditions(TargetProperties.IsSpecial, 30);
            FcriteriaCombat             = () =>
            {
                bool missingBuffs = MissingBuffs();
                if (missingBuffs)
                {
                    Bot.Character.Class.bWaitingForSpecial = true;
                }

                return(!missingBuffs);
            };
        }
Beispiel #3
0
        public override void Initialize()
        {
            Priority = SkillPriority.Medium;
            Range    = 60;
            PreCast  = new SkillPreCast((SkillPrecastFlags.CheckCanCast | SkillPrecastFlags.CheckPlayerIncapacitated));

            var IntersectingUnitTargetConditions =
                new UnitTargetConditions
            {
                TrueConditionFlags = TargetProperties.None,
                MaximumDistance    = Range,
                Criteria           = (unit) => unit.TargetInfo.IntersectingUnits > 2
            };

            SingleUnitCondition.Add(IntersectingUnitTargetConditions);
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, Range, falseConditionalFlags: TargetProperties.Normal));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Summoner, Range, falseConditionalFlags: TargetProperties.LowHealth));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.AvoidanceSummoner, Range, falseConditionalFlags: TargetProperties.LowHealth));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Debuffing, Range, falseConditionalFlags: TargetProperties.LowHealth));
            //SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Ranged, Range, MinimumHealthPercent: 0.50d));
            SingleUnitCondition.Add(new UnitTargetConditions
            {
                Criteria            = (unit) => FunkyGame.Hero.dCurrentEnergyPct > 0.80d,
                MaximumDistance     = Range,
                FalseConditionFlags = TargetProperties.LowHealth,
            });
        }
Beispiel #4
0
 public override void Initialize()
 {
     Cooldown      = 90000;
     ExecutionType = AbilityExecuteFlags.Self;
     WaitVars      = new WaitLoops(1, 1, true);
     UseageType    = AbilityUseage.Combat;
     Priority      = AbilityPriority.Medium;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckCanCast));
     ElitesWithinRangeConditions = new Tuple <RangeIntervals, int>(RangeIntervals.Range_25, 1);
     SingleUnitCondition         = new UnitTargetConditions(TargetProperties.IsSpecial, 16);
 }
Beispiel #5
0
 public override void Initialize()
 {
     Cooldown            = 200;
     ExecutionType       = AbilityExecuteFlags.Target | AbilityExecuteFlags.ClusterTargetNearest;
     WaitVars            = new WaitLoops(1, 1, true);
     Range               = 15;
     UseageType          = AbilityUseage.Combat;
     Priority            = AbilityPriority.Low;
     PreCast             = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated));
     ClusterConditions   = new SkillClusterConditions(6d, 10f, 2, true);
     SingleUnitCondition = new UnitTargetConditions(TargetProperties.None, 8);
 }
Beispiel #6
0
 public override void Initialize()
 {
     Cooldown            = 5;
     ExecutionType       = AbilityExecuteFlags.Target;
     WaitVars            = new WaitLoops(0, 0, false);
     Range               = 48;
     IsRanged            = true;
     IsChanneling        = true;
     UseageType          = AbilityUseage.Combat;
     Priority            = AbilityPriority.Low;
     PreCast             = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated));
     SingleUnitCondition = new UnitTargetConditions(TargetProperties.None);
 }
Beispiel #7
0
        public override void Initialize()
        {
            Priority = SkillPriority.Medium;
            Range    = 60;
            PreCast  = new SkillPreCast(SkillPrecastFlags.CheckCanCast | SkillPrecastFlags.CheckPlayerIncapacitated);

            ClusterConditions.Add(new SkillClusterConditions(4d, Range, 3, false, useRadiusDistance: true));

            var IntersectingUnitTargetConditions =
                new UnitTargetConditions
            {
                TrueConditionFlags = TargetProperties.None,
                MaximumDistance    = Range,
                Criteria           = (unit) => unit.TargetInfo.IntersectingUnits > 2
            };

            SingleUnitCondition.Add(IntersectingUnitTargetConditions);
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, Range, falseConditionalFlags: TargetProperties.Normal));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Summoner, Range, falseConditionalFlags: TargetProperties.LowHealth));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.AvoidanceSummoner, Range, falseConditionalFlags: TargetProperties.LowHealth));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Debuffing, Range, falseConditionalFlags: TargetProperties.LowHealth));

            FCombatMovement = v =>
            {
                float fDistanceFromTarget = FunkyGame.Hero.Position.Distance(v);
                if (FunkyBaseExtension.Settings.General.OutOfCombatMovement && !FunkyGame.Hero.Class.bWaitingForSpecial && FunkyBaseExtension.Difference(FunkyGame.Hero.Position.Z, v.Z) <= 4 && fDistanceFromTarget >= 20f)
                {
                    if (fDistanceFromTarget > Range)
                    {
                        return(MathEx.CalculatePointFrom(v, FunkyGame.Hero.Position, Range));
                    }
                    return(v);
                }

                return(Vector3.Zero);
            };
            FOutOfCombatMovement = v =>
            {
                float fDistanceFromTarget = FunkyGame.Hero.Position.Distance(v);
                if (FunkyBaseExtension.Difference(FunkyGame.Hero.Position.Z, v.Z) <= 4 && fDistanceFromTarget >= 20f)
                {
                    if (fDistanceFromTarget > Range)
                    {
                        return(MathEx.CalculatePointFrom(v, FunkyGame.Hero.Position, Range));
                    }
                    return(v);
                }

                return(Vector3.Zero);
            };
        }
Beispiel #8
0
        public override void Initialize()
        {
            Cooldown                = 10200;
            WaitVars                = new WaitLoops(2, 2, true);
            ExecutionType           = AbilityExecuteFlags.ClusterLocation | AbilityExecuteFlags.Location;
            Range                   = 35;
            Priority                = AbilityPriority.Medium;
            UseageType              = AbilityUseage.Combat;
            IsASpecialMovementPower = true;
            PreCast                 = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckRecastTimer |
                                                        AbilityPreCastFlags.CheckCanCast));
            ClusterConditions   = new SkillClusterConditions(5d, 30, 2, true);
            SingleUnitCondition = new UnitTargetConditions(TargetProperties.IsSpecial,
                                                           falseConditionalFlags: TargetProperties.Fast, MinimumDistance: 30);

            FCombatMovement = (v) =>
            {
                float fDistanceFromTarget = Bot.Character.Data.Position.Distance(v);
                if (!Bot.Character.Class.bWaitingForSpecial && Funky.Difference(Bot.Character.Data.Position.Z, v.Z) <= 4 && fDistanceFromTarget >= 20f)
                {
                    if (fDistanceFromTarget > 35f)
                    {
                        return(MathEx.CalculatePointFrom(v, Bot.Character.Data.Position, 35f));
                    }
                    else
                    {
                        return(v);
                    }
                }

                return(Vector3.Zero);
            };
            FOutOfCombatMovement = (v) =>
            {
                float fDistanceFromTarget = Bot.Character.Data.Position.Distance(v);
                if (Funky.Difference(Bot.Character.Data.Position.Z, v.Z) <= 4 && fDistanceFromTarget >= 20f)
                {
                    if (fDistanceFromTarget > 35f)
                    {
                        return(MathEx.CalculatePointFrom(v, Bot.Character.Data.Position, 35f));
                    }
                    else
                    {
                        return(v);
                    }
                }

                return(Vector3.Zero);
            };
        }
Beispiel #9
0
        public override void Initialize()
        {
            Cooldown      = 5;
            ExecutionType = AbilityExecuteFlags.ClusterTarget | AbilityExecuteFlags.Target;
            WaitVars      = new WaitLoops(0, 2, false);
            UseageType    = AbilityUseage.Combat;
            Priority      = AbilityPriority.Low;
            Range         = RuneIndex == 0?25:12;

            PreCast = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckCanCast));

            ClusterConditions   = new SkillClusterConditions(5d, 20f, 1, true);
            SingleUnitCondition = new UnitTargetConditions(TargetProperties.None);
        }
Beispiel #10
0
 public override void Initialize()
 {
     Cooldown         = 120500;
     ExecutionType    = AbilityExecuteFlags.Buff;
     WaitVars         = new WaitLoops(4, 4, true);
     Cost             = 0;
     UseageType       = AbilityUseage.Combat;
     IsSpecialAbility = true;
     Priority         = AbilityPriority.High;
     PreCast          = new SkillPreCast((AbilityPreCastFlags.CheckRecastTimer | AbilityPreCastFlags.CheckEnergy |
                                          AbilityPreCastFlags.CheckExisitingBuff | AbilityPreCastFlags.CheckCanCast |
                                          AbilityPreCastFlags.CheckPlayerIncapacitated));
     ElitesWithinRangeConditions = new Tuple <RangeIntervals, int>(RangeIntervals.Range_15, 1);
     SingleUnitCondition         = new UnitTargetConditions(TargetProperties.IsSpecial, 13);
 }
Beispiel #11
0
 public override void Initialize()
 {
     Cooldown      = 200;
     ExecutionType = AbilityExecuteFlags.Self;
     WaitVars      = new WaitLoops(4, 4, true);
     Cost          = 0;
     UseageType    = AbilityUseage.Anywhere;
     Priority      = AbilityPriority.Medium;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckRecastTimer | AbilityPreCastFlags.CheckEnergy |
                                       AbilityPreCastFlags.CheckCanCast | AbilityPreCastFlags.CheckPlayerIncapacitated));
     SingleUnitCondition = new UnitTargetConditions(TargetProperties.None, 10,
                                                    falseConditionalFlags: TargetProperties.Fast);
     ClusterConditions = new SkillClusterConditions(5d, 7, 2, false);
     FcriteriaCombat   = () => true;
 }
Beispiel #12
0
 public override void Initialize()
 {
     Cooldown      = 150;
     ExecutionType = AbilityExecuteFlags.ClusterTarget | AbilityExecuteFlags.Target;
     WaitVars      = new WaitLoops(1, 2, true);
     Cost          = 20;
     Range         = Bot.Character.Class.HotBar.RuneIndexCache[Power] == 0?13:Bot.Character.Class.HotBar.RuneIndexCache[Power] == 1?20:16;
     UseageType    = AbilityUseage.Combat;
     Priority      = AbilityPriority.Medium;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckRecastTimer | AbilityPreCastFlags.CheckEnergy |
                                       AbilityPreCastFlags.CheckCanCast | AbilityPreCastFlags.CheckPlayerIncapacitated));
     ClusterConditions   = new SkillClusterConditions(6d, 20f, 2, true);
     SingleUnitCondition = new UnitTargetConditions(TargetProperties.IsSpecial, 20);
     FcriteriaCombat     = () => !Bot.Character.Class.bWaitingForSpecial;
 }
Beispiel #13
0
 public override void Initialize()
 {
     Cooldown        = 10000;
     ExecutionType   = AbilityExecuteFlags.Target | AbilityExecuteFlags.ClusterTarget;
     WaitVars        = new WaitLoops(1, 1, true);
     Cost            = 3;
     SecondaryEnergy = true;
     Range           = 40;
     UseageType      = AbilityUseage.Combat;
     Priority        = AbilityPriority.Medium;
     PreCast         = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckEnergy |
                                         AbilityPreCastFlags.CheckRecastTimer));
     ClusterConditions   = new SkillClusterConditions(4d, 35f, 2, true);
     SingleUnitCondition = new UnitTargetConditions(TargetProperties.RareElite, 40);
 }
Beispiel #14
0
        public override void Initialize()
        {
            Cooldown      = 5;
            ExecutionType = AbilityExecuteFlags.Target | AbilityExecuteFlags.ClusterTarget;
            WaitVars      = new WaitLoops(0, 1, true);
            Range         = 35;
            IsRanged      = true;
            IsProjectile  = true;
            UseageType    = AbilityUseage.Combat;
            Priority      = AbilityPriority.Low;
            PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated));

            ClusterConditions   = new SkillClusterConditions(4d, 35, 2, true);
            SingleUnitCondition = new UnitTargetConditions();
        }
Beispiel #15
0
 public override void Initialize()
 {
     Cooldown      = 15200;
     ExecutionType = AbilityExecuteFlags.Self;
     WaitVars      = new WaitLoops(0, 0, true);
     Cost          = 49;
     UseageType    = AbilityUseage.Anywhere;
     Priority      = AbilityPriority.Medium;
     IsBuff        = true;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckEnergy |
                                       AbilityPreCastFlags.CheckCanCast));
     UnitsWithinRangeConditions  = new Tuple <RangeIntervals, int>(RangeIntervals.Range_12, 1);
     ElitesWithinRangeConditions = new Tuple <RangeIntervals, int>(RangeIntervals.Range_12, 1);
     SingleUnitCondition         = new UnitTargetConditions(TargetProperties.IsSpecial, 18);
 }
Beispiel #16
0
 public override void Initialize()
 {
     Cooldown      = 2000;
     ExecutionType = AbilityExecuteFlags.Buff;
     WaitVars      = new WaitLoops(1, 2, true);
     Cost          = 25;
     Range         = 25;
     UseageType    = AbilityUseage.Anywhere;
     Priority      = AbilityPriority.Medium;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckEnergy |
                                       AbilityPreCastFlags.CheckCanCast));
     ClusterConditions   = new SkillClusterConditions(15d, 20f, 2, false, useRadiusDistance: true);
     SingleUnitCondition = new UnitTargetConditions(TargetProperties.CloseDistance | TargetProperties.Weak);
     FcriteriaCombat     = () => !Bot.Character.Class.bWaitingForSpecial;
 }
Beispiel #17
0
        public override void Initialize()
        {
            Cooldown            = 12000;
            ExecutionType       = AbilityExecuteFlags.Target;
            SingleUnitCondition = new UnitTargetConditions(TargetProperties.None, 24,
                                                           falseConditionalFlags: TargetProperties.DOTDPS);
            WaitVars   = new WaitLoops(1, 1, true);
            Cost       = 98;
            Range      = 21;
            UseageType = AbilityUseage.Combat;
            Priority   = AbilityPriority.Medium;
            PreCast    = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckCanCast |
                                           AbilityPreCastFlags.CheckEnergy));

            PreCast.Criteria += (s) => !Bot.Character.Class.HotBar.HasDebuff(SNOPower.Succubus_BloodStar);
        }
Beispiel #18
0
 public override void Initialize()
 {
     Cooldown      = 2500;
     ExecutionType = AbilityExecuteFlags.ClusterTarget | AbilityExecuteFlags.Target;
     WaitVars      = new WaitLoops(1, 2, true);
     Cost          = 40;
     Range         = 50;
     IsRanged      = true;
     UseageType    = AbilityUseage.Combat;
     Priority      = AbilityPriority.Medium;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckEnergy |
                                       AbilityPreCastFlags.CheckRecastTimer));
     SingleUnitCondition = new UnitTargetConditions(TargetProperties.IsSpecial);
     ClusterConditions   = new SkillClusterConditions(5d, 50f, 2, true);
     FcriteriaCombat     = () => !Bot.Character.Class.bWaitingForSpecial;
 }
Beispiel #19
0
        public override void Initialize()
        {
            Cooldown      = 5000;
            ExecutionType = AbilityExecuteFlags.Target;
            WaitVars      = new WaitLoops(1, 1, true);
            Cost          = 40;
            Range         = 14;
            UseageType    = AbilityUseage.Combat;
            Priority      = AbilityPriority.Medium;
            PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckEnergy | AbilityPreCastFlags.CheckCanCast |
                                              AbilityPreCastFlags.CheckRecastTimer | AbilityPreCastFlags.CheckPlayerIncapacitated));

            SingleUnitCondition = new UnitTargetConditions(TargetProperties.None, 14, falseConditionalFlags: TargetProperties.DOTDPS);

            FcriteriaCombat = () => (!Bot.Character.Class.bWaitingForSpecial || Bot.Character.Data.dCurrentEnergy >= Bot.Character.Class.iWaitingReservedAmount);
        }
Beispiel #20
0
 public override void Initialize()
 {
     Cooldown      = 25200;
     ExecutionType = AbilityExecuteFlags.Location;
     WaitVars      = new WaitLoops(1, 1, true);
     Cost          = 103;
     Range         = 25;
     UseageType    = AbilityUseage.Combat;
     Priority      = AbilityPriority.Medium;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckEnergy |
                                       AbilityPreCastFlags.CheckCanCast));
     UnitsWithinRangeConditions  = new Tuple <RangeIntervals, int>(RangeIntervals.Range_15, 3);
     ElitesWithinRangeConditions = new Tuple <RangeIntervals, int>(RangeIntervals.Range_15, 1);
     SingleUnitCondition         = new UnitTargetConditions(TargetProperties.IsSpecial, 25);
     FcriteriaCombat             = () => !Bot.Character.Class.bWaitingForSpecial;
 }
Beispiel #21
0
        public override void Initialize()
        {
            Cooldown      = 300;
            ExecutionType = AbilityExecuteFlags.Target;
            WaitVars      = new WaitLoops(2, 2, true);
            Range         = 35;
            IsRanged      = true;
            IsProjectile  = true;
            UseageType    = AbilityUseage.Combat;
            Priority      = AbilityPriority.Medium;
            PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckRecastTimer | AbilityPreCastFlags.CheckCanCast |
                                              AbilityPreCastFlags.CheckPlayerIncapacitated));
            SingleUnitCondition = new UnitTargetConditions(TargetProperties.Ranged, 25, 0.50d);

            //TestCustomCombatConditionAlways=true,
            FcriteriaCombat = () => Bot.Targeting.Cache.CurrentUnitTarget.IsRanged ||
                              Bot.Character.Data.dCurrentEnergyPct < 0.5d;
        }
Beispiel #22
0
        public override void Initialize()
        {
            Cooldown            = 8000;
            ExecutionType       = AbilityExecuteFlags.ClusterLocation | AbilityExecuteFlags.Location;
            ClusterConditions   = new SkillClusterConditions(5d, 20f, 1, true, 0.25d);
            SingleUnitCondition = new UnitTargetConditions(TargetProperties.None, 21, 0.5d, TargetProperties.DOTDPS);
            WaitVars            = new WaitLoops(1, 1, true);
            Cost       = 196;
            Range      = 21;
            UseageType = AbilityUseage.Combat;
            Priority   = AbilityPriority.High;
            PreCast    = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckCanCast |
                                           AbilityPreCastFlags.CheckEnergy | AbilityPreCastFlags.CheckRecastTimer));

            PreCast.Criteria += (s) => !Bot.Character.Class.HotBar.HasDebuff(SNOPower.Succubus_BloodStar);

            IsSpecialAbility = true;
        }
Beispiel #23
0
 public override void Initialize()
 {
     Cooldown      = 1500;
     ExecutionType = AbilityExecuteFlags.ClusterLocation | AbilityExecuteFlags.Location;
     WaitVars      = new WaitLoops(1, 2, true);
     Counter       = 1;
     Cost          = 15;
     Range         = 50;
     IsRanged      = true;
     IsProjectile  = true;
     UseageType    = AbilityUseage.Combat;
     Priority      = AbilityPriority.High;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckEnergy |
                                       AbilityPreCastFlags.CheckRecastTimer | AbilityPreCastFlags.CheckPetCount));
     ClusterConditions   = new SkillClusterConditions(7d, 50f, 2, true);
     SingleUnitCondition = new UnitTargetConditions(TargetProperties.IsSpecial,
                                                    falseConditionalFlags: TargetProperties.Fast);
 }
Beispiel #24
0
        public override void Initialize()
        {
            Cooldown      = 200;
            ExecutionType = AbilityExecuteFlags.ClusterLocation | AbilityExecuteFlags.Location;
            WaitVars      = new WaitLoops(2, 2, true);
            Cost          = Bot.Character.Class.HotBar.RuneIndexCache[SNOPower.Barbarian_SeismicSlam] == 3?15:30;
            Range         = 40;
            UseageType    = AbilityUseage.Combat;
            Priority      = AbilityPriority.Medium;

            PreCast = new SkillPreCast((AbilityPreCastFlags.CheckRecastTimer | AbilityPreCastFlags.CheckEnergy |
                                        AbilityPreCastFlags.CheckCanCast | AbilityPreCastFlags.CheckPlayerIncapacitated));
            ClusterConditions   = new SkillClusterConditions(Bot.Character.Class.HotBar.RuneIndexCache[Power] == 4?4d:6d, 40f, 2, true);
            SingleUnitCondition = new UnitTargetConditions(TargetProperties.IsSpecial,
                                                           falseConditionalFlags: TargetProperties.TreasureGoblin | TargetProperties.Fast);

            FcriteriaCombat = () => !Bot.Character.Class.bWaitingForSpecial;
        }
Beispiel #25
0
        public override void Initialize()
        {
            Cooldown      = RuneIndex == 3?17200:30200;
            ExecutionType = AbilityExecuteFlags.Location;
            WaitVars      = new WaitLoops(2, 3, true);
            Cost          = 50;
            Range         = 16;
            Priority      = AbilityPriority.Medium;
            UseageType    = AbilityUseage.Combat;
            PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckEnergy | AbilityPreCastFlags.CheckCanCast | AbilityPreCastFlags.CheckPlayerIncapacitated));

            UnitsWithinRangeConditions  = new Tuple <RangeIntervals, int>(RangeIntervals.Range_20, 6);
            ElitesWithinRangeConditions = new Tuple <RangeIntervals, int>(RangeIntervals.Range_20, 3);
            SingleUnitCondition         = new UnitTargetConditions(TargetProperties.None, 15, falseConditionalFlags: TargetProperties.Normal);           //any non-normal unit!


            FcriteriaCombat = () => !Bot.Character.Class.bWaitingForSpecial || Bot.Character.Data.dCurrentEnergy >= Bot.Character.Class.iWaitingReservedAmount;
        }
Beispiel #26
0
        public override void Initialize()
        {
            Cooldown            = 5;
            ExecutionType       = AbilityExecuteFlags.Target;
            WaitVars            = new WaitLoops(0, 1, true);
            Cost                = 25;
            Range               = 12;
            UseageType          = AbilityUseage.Combat;
            Priority            = AbilityPriority.Medium;
            PreCast             = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckCanCast));
            SingleUnitCondition = new UnitTargetConditions(TargetProperties.None, 12);


            FcriteriaCombat = () =>
            {
                return(Bot.Character.Data.dCurrentEnergy >= Bot.Character.Class.iWaitingReservedAmount);
            };
        }
Beispiel #27
0
        public override void Initialize()
        {
            Cooldown      = 5;
            ExecutionType = AbilityExecuteFlags.Target | AbilityExecuteFlags.ClusterTarget;
            WaitVars      = new WaitLoops(0, 0, true);
            Range         = (Bot.Character.Class.HotBar.RuneIndexCache[SNOPower.Wizard_Electrocute] == 2?15:40);
            IsRanged      = true;
            IsProjectile  = true;
            UseageType    = AbilityUseage.Combat;
            Priority      = AbilityPriority.Low;
            PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated));

            //Aim for cluster with 2 units very close together.
            ClusterConditions = new SkillClusterConditions(3d, Bot.Character.Class.HotBar.RuneIndexCache[SNOPower.Wizard_Electrocute] == 2?15:40, 2,
                                                           true);
            //No conditions for a single target.
            SingleUnitCondition = new UnitTargetConditions();
        }
Beispiel #28
0
        public override void Initialize()
        {
            Cooldown      = 500;
            ExecutionType = AbilityExecuteFlags.Target;
            WaitVars      = new WaitLoops(1, 2, true);
            Cost          = 20;
            Range         = 35;
            UseageType    = AbilityUseage.Combat;
            Priority      = AbilityPriority.Medium;
            PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckRecastTimer | AbilityPreCastFlags.CheckEnergy |
                                              AbilityPreCastFlags.CheckCanCast | AbilityPreCastFlags.CheckPlayerIncapacitated));
            ElitesWithinRangeConditions = new Tuple <RangeIntervals, int>(RangeIntervals.Range_25, 1);
            UnitsWithinRangeConditions  = new Tuple <RangeIntervals, int>(RangeIntervals.Range_15, 3);
            SingleUnitCondition         = new UnitTargetConditions(TargetProperties.IsSpecial, 15);

            FCombatMovement = v =>
            {
                float fDistanceFromTarget = Bot.Character.Data.Position.Distance(v);
                if (!Bot.Character.Class.bWaitingForSpecial && Funky.Difference(Bot.Character.Data.Position.Z, v.Z) <= 4 && fDistanceFromTarget >= 20f)
                {
                    if (fDistanceFromTarget > 35f)
                    {
                        return(MathEx.CalculatePointFrom(v, Bot.Character.Data.Position, 35f));
                    }
                    return(v);
                }

                return(Vector3.Zero);
            };
            FOutOfCombatMovement = v =>
            {
                float fDistanceFromTarget = Bot.Character.Data.Position.Distance(v);
                if (Funky.Difference(Bot.Character.Data.Position.Z, v.Z) <= 4 && fDistanceFromTarget >= 20f)
                {
                    if (fDistanceFromTarget > 35f)
                    {
                        return(MathEx.CalculatePointFrom(v, Bot.Character.Data.Position, 35f));
                    }
                    return(v);
                }

                return(Vector3.Zero);
            };
        }
Beispiel #29
0
        public override void Initialize()
        {
            Cooldown      = 250;
            ExecutionType = AbilityExecuteFlags.Target;
            WaitVars      = new WaitLoops(1, 1, true);
            Cost          = 30;
            Range         = 10;
            Priority      = AbilityPriority.Medium;
            UseageType    = AbilityUseage.Combat;
            PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckEnergy | AbilityPreCastFlags.CheckCanCast |
                                              AbilityPreCastFlags.CheckRecastTimer | AbilityPreCastFlags.CheckPlayerIncapacitated));
            ClusterConditions   = new SkillClusterConditions(4d, 18f, 3, true);
            SingleUnitCondition = new UnitTargetConditions(TargetProperties.IsSpecial, 10);


            FcriteriaCombat = () => (!Bot.Character.Class.HotBar.HotbarPowers.Contains(SNOPower.Monk_SweepingWind) ||
                                     (Bot.Character.Class.HotBar.HotbarPowers.Contains(SNOPower.Monk_SweepingWind) && Bot.Character.Class.HotBar.HasBuff(SNOPower.Monk_SweepingWind))) &&
                              (!Bot.Character.Class.bWaitingForSpecial || Bot.Character.Data.dCurrentEnergy >= Bot.Character.Class.iWaitingReservedAmount);
        }
Beispiel #30
0
        public override void Initialize()
        {
            Cooldown      = 5;
            ExecutionType = AbilityExecuteFlags.ClusterTarget | AbilityExecuteFlags.Target;

            WaitVars   = new WaitLoops(0, 1, true);
            Cost       = 134;
            Range      = 15;
            UseageType = AbilityUseage.Combat;
            Priority   = AbilityPriority.Medium;

            PreCast = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckEnergy |
                                        AbilityPreCastFlags.CheckCanCast));

            //FcriteriaPreCast=new Func<bool>(() => { return !Bot.Character_.Class.HotBar.HasDebuff(SNOPower.Succubus_BloodStar); });

            ClusterConditions   = new SkillClusterConditions(5d, 20f, 2, true);
            SingleUnitCondition = new UnitTargetConditions(TargetProperties.None);
        }