示例#1
0
        public override void Initialize()
        {
            Cooldown = 30000;

            WaitVars = new WaitLoops(3, 3, true);
            Priority = SkillPriority.High;


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

            //Important!! We have to override the default return of true.. we dont want this to fire as a combat Ability.
            FcriteriaCombat = (u) => { return(FunkyGame.Hero.dCurrentHealthPct <= FunkyBaseExtension.Settings.Combat.PotionHealthPercent); };
        }
示例#2
0
 public override void Initialize()
 {
     Cooldown      = 115000;
     ExecutionType = AbilityExecuteFlags.Buff;
     WaitVars      = new WaitLoops(1, 2, true);
     Cost          = 25;
     Counter       = 1;
     UseageType    = AbilityUseage.Anywhere;
     IsBuff        = true;
     Priority      = AbilityPriority.High;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckEnergy |
                                       AbilityPreCastFlags.CheckExisitingBuff));
 }
示例#3
0
 public override void Initialize()
 {
     Cooldown      = 120500;
     ExecutionType = AbilityExecuteFlags.Buff;
     WaitVars      = new WaitLoops(4, 4, true);
     Cost          = 50;
     UseageType    = AbilityUseage.Combat;
     Priority      = AbilityPriority.High;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckRecastTimer | AbilityPreCastFlags.CheckEnergy |
                                       AbilityPreCastFlags.CheckCanCast | AbilityPreCastFlags.CheckPlayerIncapacitated));
     //ElitesWithinRangeConditions=new Tuple<RangeIntervals, int>(RangeIntervals.Range_25, 1);
     //SingleUnitCondition=new UnitTargetConditions(TargetProperties.IsSpecial, 25);
 }
示例#4
0
 public override void Initialize()
 {
     Cooldown      = 5;
     ExecutionType = AbilityExecuteFlags.Target;
     WaitVars      = new WaitLoops(0, 1, true);
     Cost          = 10;
     Range         = 48;
     IsRanged      = true;
     IsProjectile  = true;
     UseageType    = AbilityUseage.Combat;
     Priority      = AbilityPriority.Low;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated));
 }
示例#5
0
文件: Serenity.cs 项目: BUFORD/Funky
        public override void Initialize()
        {
            Cooldown      = 20200;
            ExecutionType = AbilityExecuteFlags.Buff;
            WaitVars      = new WaitLoops(1, 1, true);
            UseageType    = AbilityUseage.Anywhere;
            Priority      = AbilityPriority.High;
            PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckRecastTimer));

            //TODO:: Give better conditions
            FcriteriaCombat = () => Bot.Character.Data.dCurrentHealthPct <= 0.45d &&
                              Bot.Targeting.Cache.Environment.iAnythingWithinRange[(int)RangeIntervals.Range_20] > 0;
        }
示例#6
0
 public override void Initialize()
 {
     Cooldown            = 5;
     ExecutionType       = AbilityExecuteFlags.Target | AbilityExecuteFlags.ClusterTargetNearest;
     WaitVars            = new WaitLoops(0, 2, true);
     Cost                = 0;
     Range               = 10;
     UseageType          = AbilityUseage.Combat;
     Priority            = AbilityPriority.Low;
     PreCast             = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated));
     ClusterConditions   = new SkillClusterConditions(4d, 10f, 2, true);
     SingleUnitCondition = new UnitTargetConditions(TargetProperties.None);
 }
示例#7
0
 public override void Initialize()
 {
     Cooldown      = 100000;
     ExecutionType = AbilityExecuteFlags.Buff;
     WaitVars      = new WaitLoops(1, 1, true);
     Cost          = 20;
     IsBuff        = true;
     UseageType    = AbilityUseage.Anywhere;
     Priority      = AbilityPriority.Low;
     PreCast       = new SkillPreCast(AbilityPreCastFlags.CheckExisitingBuff | AbilityPreCastFlags.CheckEnergy | AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckCanCast);
     FcriteriaBuff = () => true;
     FcriteriaBuff = () => LastUsedMilliseconds > 30000;
 }
示例#8
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);
            };
        }
示例#9
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);
            };
        }
示例#10
0
 public override void Initialize()
 {
     Cooldown        = 5;
     ExecutionType   = AbilityExecuteFlags.Target;
     WaitVars        = new WaitLoops(0, 0, true);
     Cost            = 20;
     Range           = 35;
     IsRanged        = true;
     IsProjectile    = true;
     UseageType      = AbilityUseage.Combat;
     Priority        = AbilityPriority.Medium;
     PreCast         = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckEnergy));
     FcriteriaCombat = () => !Bot.Character.Class.bWaitingForSpecial;
 }
示例#11
0
        public override void Initialize()
        {
            WaitVars = new WaitLoops(1, 1, true);
            Range    = 48;


            Priority = SkillPriority.High;
            PreCast  = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast));

            ClusterConditions.Add(new SkillClusterConditions(5d, 48f, 2, false, minDistance: 15f));

            FcriteriaCombat = (u) =>
            {
                return((FunkyBaseExtension.Settings.Wizard.bTeleportFleeWhenLowHP &&
                        (FunkyGame.Hero.dCurrentHealthPct < 0.5d) ||
                        (FunkyGame.Targeting.Cache.RequiresAvoidance))
                       ||
                       (FunkyBaseExtension.Settings.Wizard.bTeleportIntoGrouping && LastConditionPassed == ConditionCriteraTypes.Cluster)
                       ||
                       (!FunkyBaseExtension.Settings.Wizard.bTeleportFleeWhenLowHP && !FunkyBaseExtension.Settings.Wizard.bTeleportIntoGrouping));
            };
            FCombatMovement = v =>
            {
                float fDistanceFromTarget = FunkyGame.Hero.Position.Distance(v);
                if (!FunkyGame.Hero.Class.bWaitingForSpecial && FunkyBaseExtension.Difference(FunkyGame.Hero.Position.Z, v.Z) <= 4 && fDistanceFromTarget >= 25f)
                {
                    if (fDistanceFromTarget > 50f)
                    {
                        return(MathEx.CalculatePointFrom(v, FunkyGame.Hero.Position, 50f));
                    }
                    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 > 50f)
                    {
                        return(MathEx.CalculatePointFrom(v, FunkyGame.Hero.Position, 50f));
                    }
                    return(v);
                }

                return(Vector3.Zero);
            };
        }
示例#12
0
        public override void Initialize()
        {
            Range = (RuneIndex == 2 ? 15 : 40);



            Priority = SkillPriority.Low;
            PreCast  = new SkillPreCast((SkillPrecastFlags.CheckCanCast));

            //Aim for cluster with 2 units very close together.
            ClusterConditions.Add(new SkillClusterConditions(3d, RuneIndex == 2 ? 15 : 40, 2, true));
            //No conditions for a single target.
            SingleUnitCondition.Add(new UnitTargetConditions());
        }
示例#13
0
        public override void Initialize()
        {
            WaitVars = new WaitLoops(1, 2, true);
            Counter  = Equipment.CheckLegendaryItemCount(LegendaryItemTypes.SerpentSparker) ? 2 : 1;
            Cost     = 15;
            Range    = 50;


            Priority = SkillPriority.High;
            PreCast  = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy |
                                         SkillPrecastFlags.CheckRecastTimer | SkillPrecastFlags.CheckPetCount));
            ClusterConditions.Add(new SkillClusterConditions(7d, 50f, 2, true));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 45, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.Fast));
        }
示例#14
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);
        }
示例#15
0
        public override void Initialize()
        {
            WaitVars = new WaitLoops(1, 1, true);
            Cost     = 74;

            Priority = SkillPriority.Medium;
            PreCast  = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy |
                                         SkillPrecastFlags.CheckCanCast));
            //UnitsWithinRangeConditions = new Tuple<RangeIntervals, int>(RangeIntervals.Range_12, 6);
            //ElitesWithinRangeConditions = new Tuple<RangeIntervals, int>(RangeIntervals.Range_12, 1);

            ClusterConditions.Add(new SkillClusterConditions(5d, 12, 6, true));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, 12, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal));
        }
示例#16
0
        public override void Initialize()
        {
            Cooldown = 16000;


            Priority = SkillPriority.High;
            WaitVars = new WaitLoops(1, 1, true);
            //Range=48;

            PreCast = new SkillPreCast
            {
                Criteria = skill => skill.LastUsed == DateTime.MinValue
            };
        }
示例#17
0
 public override void Initialize()
 {
     Cooldown      = 10000;
     ExecutionType = AbilityExecuteFlags.Buff;
     WaitVars      = new WaitLoops(1, 1, true);
     Cost          = 20;
     Range         = 0;
     UseageType    = AbilityUseage.Combat;
     Priority      = AbilityPriority.Medium;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckRecastTimer |
                                       AbilityPreCastFlags.CheckEnergy));
     ClusterConditions = new SkillClusterConditions(4d, 10f, 2, false);
     //SingleUnitCondition=new UnitTargetConditions(TargetProperties.CloseDistance);
 }
示例#18
0
 public override void Initialize()
 {
     Cooldown      = 16000;
     ExecutionType = AbilityExecuteFlags.Target;
     WaitVars      = new WaitLoops(1, 1, true);
     Range         = 48;
     UseageType    = AbilityUseage.Anywhere;
     Priority      = AbilityPriority.Medium;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckRecastTimer |
                                       AbilityPreCastFlags.CheckCanCast));
     UnitsWithinRangeConditions  = new Tuple <RangeIntervals, int>(RangeIntervals.Range_25, 2);
     ElitesWithinRangeConditions = new Tuple <RangeIntervals, int>(RangeIntervals.Range_25, 1);
     SingleUnitCondition         = new UnitTargetConditions(TargetProperties.IsSpecial, 35);
 }
示例#19
0
        public override void Initialize()
        {
            Cooldown      = 5;
            ExecutionType = AbilityExecuteFlags.Target;
            WaitVars      = new WaitLoops(0, 1, true);
            Range         = Bot.Character.Class.HotBar.RuneIndexCache[SNOPower.Wizard_ShockPulse] == 2?40
                                        :Bot.Character.Class.HotBar.RuneIndexCache[SNOPower.Wizard_ShockPulse] == 1?26:15;

            IsRanged     = true;
            IsProjectile = true;
            UseageType   = AbilityUseage.Combat;
            Priority     = AbilityPriority.Low;
            PreCast      = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated));
        }
示例#20
0
        public override void Initialize()
        {
            Cooldown = 10000;

            WaitVars = new WaitLoops(1, 1, true);
            Cost     = 20;
            Range    = 0;

            Priority = SkillPriority.Medium;
            PreCast  = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckRecastTimer |
                                         SkillPrecastFlags.CheckEnergy));
            ClusterConditions.Add(new SkillClusterConditions(4d, 10f, 2, false));
            //SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.CloseDistance);
        }
示例#21
0
文件: Warcry.cs 项目: BUFORD/Funky
 public override void Initialize()
 {
     Cooldown        = 20500;
     ExecutionType   = AbilityExecuteFlags.Buff;
     WaitVars        = new WaitLoops(1, 1, true);
     Cost            = 0;
     Range           = 0;
     IsBuff          = true;
     UseageType      = AbilityUseage.Anywhere;
     Priority        = AbilityPriority.Highest;
     PreCast         = new SkillPreCast((AbilityPreCastFlags.CheckCanCast | AbilityPreCastFlags.CheckPlayerIncapacitated));
     FcriteriaBuff   = () => true;
     FcriteriaCombat = () => true;
 }
示例#22
0
        public override void Initialize()
        {
            Priority = SkillPriority.Medium;

            PreCast = new SkillPreCast
            {
                Flags = SkillPrecastFlags.CheckRecastTimer | SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast,
            };
            PreCast.Criteria += skill => Hotbar.HasBuff(SNOPower.Barbarian_Revenge_Buff);
            PreCast.CreatePrecastCriteria();

            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, 10, falseConditionalFlags: TargetProperties.Normal));
            ClusterConditions.Add(new SkillClusterConditions(5d, 7, 2, false, useRadiusDistance: true));
        }
示例#23
0
        public override void Initialize()
        {
            WaitVars = new WaitLoops(0, 1, true);
            Cost     = 10;
            Range    = 48;

            Priority = SkillPriority.Medium;
            PreCast  = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy));
            ClusterConditions.Add(new SkillClusterConditions(4d, 40, 2, true));

            FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial && (!u.IsTreasureGoblin &&
                                                                                  u.SNOID != 5208 && u.SNOID != 5209 &&
                                                                                  u.SNOID != 5210);
        }
示例#24
0
        public override void Initialize()
        {
            Cooldown = 16000;

            WaitVars = new WaitLoops(1, 1, true);

            Priority = SkillPriority.High;
            PreCast  = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast));
            //UnitsWithinRangeConditions=new Tuple<RangeIntervals, int>(RangeIntervals.Range_25, 2);
            //ElitesWithinRangeConditions=new Tuple<RangeIntervals, int>(RangeIntervals.Range_25, 1);

            ClusterConditions.Add(new SkillClusterConditions(7d, 25f, 2, false));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, 35, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal));
        }
示例#25
0
 public override void Initialize()
 {
     Cooldown      = 45200;
     ExecutionType = AbilityExecuteFlags.Target;
     WaitVars      = new WaitLoops(1, 1, true);
     Cost          = 74;
     UseageType    = AbilityUseage.Combat;
     Priority      = AbilityPriority.Medium;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckEnergy |
                                       AbilityPreCastFlags.CheckCanCast));
     UnitsWithinRangeConditions  = new Tuple <RangeIntervals, int>(RangeIntervals.Range_12, 6);
     ElitesWithinRangeConditions = new Tuple <RangeIntervals, int>(RangeIntervals.Range_12, 1);
     SingleUnitCondition         = new UnitTargetConditions(TargetProperties.IsSpecial, 12);
 }
示例#26
0
        public override void Initialize()
        {
            Cooldown      = 10000;
            ExecutionType = AbilityExecuteFlags.Buff;
            WaitVars      = new WaitLoops(1, 1, true);
            Cost          = 0;
            UseageType    = AbilityUseage.Anywhere;
            Priority      = AbilityPriority.Medium;

            PreCast = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckRecastTimer |
                                        AbilityPreCastFlags.CheckCanCast));
            UnitsWithinRangeConditions  = new Tuple <RangeIntervals, int>(RangeIntervals.Range_25, 7);
            ElitesWithinRangeConditions = new Tuple <RangeIntervals, int>(RangeIntervals.Range_25, 1);
        }
示例#27
0
        public override void Initialize()
        {
            Cooldown                = 16000;
            ExecutionType           = AbilityExecuteFlags.ClusterLocation | AbilityExecuteFlags.ZigZagPathing;
            WaitVars                = new WaitLoops(0, 1, true);
            Cost                    = 15;
            Range                   = 35;
            UseageType              = AbilityUseage.Combat;
            IsASpecialMovementPower = true;
            Priority                = AbilityPriority.High;
            PreCast                 = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckCanCast |
                                                        AbilityPreCastFlags.CheckEnergy));
            ClusterConditions = new SkillClusterConditions(5d, 48f, 2, false);
            //TestCustomCombatConditionAlways=true,
            FcriteriaCombat = () => ((Bot.Settings.Class.bTeleportFleeWhenLowHP && Bot.Character.Data.dCurrentHealthPct < 0.5d)
                                     ||
                                     (Bot.Settings.Class.bTeleportIntoGrouping &&
                                      Bot.Targeting.Cache.Clusters.AbilityClusterCache(combatClusterCondition).Count > 0 &&
                                      Bot.Targeting.Cache.Clusters.AbilityClusterCache(combatClusterCondition)[0].Midpoint.Distance(
                                          Bot.Character.Data.PointPosition) > 15f) ||
                                     (!Bot.Settings.Class.bTeleportFleeWhenLowHP && !Bot.Settings.Class.bTeleportIntoGrouping));
            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);
            };
        }
示例#28
0
 public override void Initialize()
 {
     Cooldown      = 5000;
     ExecutionType = AbilityExecuteFlags.Buff;
     WaitVars      = new WaitLoops(1, 1, true);
     UseageType    = AbilityUseage.Anywhere;
     Priority      = AbilityPriority.High;
     PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckPlayerIncapacitated | AbilityPreCastFlags.CheckRecastTimer |
                                       AbilityPreCastFlags.CheckCanCast));
     Cost            = Bot.Character.Class.HotBar.RuneIndexCache[SNOPower.DemonHunter_Preparation] == 0?25:0;
     FcriteriaCombat = () => Bot.Character.Data.dDisciplinePct < 0.25d
                       //Rune: Punishment (Restores all Hatered for 25 disc)
                       || (Bot.Character.Class.HotBar.RuneIndexCache[Power] == 0 && Bot.Character.Data.dCurrentEnergyPct < 0.20d);
 }
示例#29
0
        public override void Initialize()
        {
            Cooldown      = 5000;
            ExecutionType = AbilityExecuteFlags.Buff;
            WaitVars      = new WaitLoops(1, 1, true);
            Cost          = 10;
            Range         = 48;
            UseageType    = AbilityUseage.Combat;
            Priority      = AbilityPriority.High;
            PreCast       = new SkillPreCast((AbilityPreCastFlags.CheckCanCast));

            FcriteriaCombat = () => (Bot.Character.Data.dCurrentHealthPct <= 0.50 ||
                                     Bot.Targeting.Cache.Environment.iAnythingWithinRange[(int)RangeIntervals.Range_30] >= 5 || Bot.Character.Data.bIsIncapacitated ||
                                     Bot.Character.Data.bIsRooted || Bot.Targeting.Cache.CurrentTarget.ObjectIsSpecial);
        }
示例#30
0
 public override void Initialize()
 {
     Priority        = SkillPriority.High;
     Cost            = 20;
     Range           = 35;
     PreCast         = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast));
     FcriteriaBuff   = () => !Hotbar.HasBuff(SNOPower.Barbarian_BattleRage);
     FcriteriaCombat = (u) => !Hotbar.HasBuff(SNOPower.Barbarian_BattleRage) ||
                       //Only if we cannot spam sprint..
                       (!Hotbar.HasPower(SNOPower.Barbarian_Sprint) &&
                        ((FunkyBaseExtension.Settings.Barbarian.bFuryDumpWrath && FunkyGame.Hero.dCurrentEnergyPct >= 0.98 &&
                          Hotbar.HasBuff(SNOPower.Barbarian_WrathOfTheBerserker) &&
                          FunkyGame.Hero.dCurrentHealthPct > 0.50d) ||
                         (FunkyBaseExtension.Settings.Barbarian.bFuryDumpAlways && FunkyGame.Hero.dCurrentEnergyPct >= 0.98 && FunkyGame.Hero.dCurrentHealthPct > 0.50d)));
 }