コード例 #1
0
ファイル: Chakram.cs プロジェクト: herbfunk/Funky
        public override void Initialize()
        {
            WaitVars = new WaitLoops(0, 1, true);
            Cost = 10;

            if (RuneIndex != 4)
            {
                IsDestructiblePower = true;
                Range = 50;
                Priority = SkillPriority.Medium;
                PreCast = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy));

                ClusterConditions.Add(new SkillClusterConditions(4d, 40, 2, true));
                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 50, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal));

                FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial && ((!Hotbar.HasPower(SNOPower.DemonHunter_ClusterArrow)) ||
                                                                                  LastUsedMilliseconds >= 110000);
            }
            else
            {//Shuriken Cloud
                _executiontype = SkillExecutionFlags.Buff;
                PreCast = new SkillPreCast(SkillPrecastFlags.CheckCanCast);
                Priority=SkillPriority.High;
                IsBuff = true;
                FcriteriaBuff = () => !Hotbar.HasBuff(SNOPower.DemonHunter_Chakram);
                FcriteriaCombat = (u) => !Hotbar.HasBuff(SNOPower.DemonHunter_Chakram);
            }
        }
コード例 #2
0
        public override void Initialize()
        {
            WaitVars = new WaitLoops(0, 1, true);
            Cost     = 10;

            if (RuneIndex != 4)
            {
                IsDestructiblePower = true;
                Range    = 50;
                Priority = SkillPriority.Medium;
                PreCast  = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckEnergy));

                ClusterConditions.Add(new SkillClusterConditions(4d, 40, 2, true));
                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 50, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal));

                FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial && ((!Hotbar.HasPower(SNOPower.DemonHunter_ClusterArrow)) ||
                                                                                      LastUsedMilliseconds >= 110000);
            }
            else
            {            //Shuriken Cloud
                _executiontype  = SkillExecutionFlags.Buff;
                PreCast         = new SkillPreCast(SkillPrecastFlags.CheckCanCast);
                Priority        = SkillPriority.High;
                IsBuff          = true;
                FcriteriaBuff   = () => !Hotbar.HasBuff(SNOPower.DemonHunter_Chakram);
                FcriteriaCombat = (u) => !Hotbar.HasBuff(SNOPower.DemonHunter_Chakram);
            }
        }
コード例 #3
0
ファイル: SpikeTrap.cs プロジェクト: herbfunk/Funky
        public override void Initialize()
        {
            //Runeindex 2 == Sticky Trap!
            if (RuneIndex == 2)
            {
                ExecutionType = SkillExecutionFlags.Target | SkillExecutionFlags.ClusterTarget;
            }

            WaitVars = new WaitLoops(1, 1, true);
            Cost     = 30;
            Range    = 40;

            Priority = SkillPriority.Medium;

            PreCast = new SkillPreCast((SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckRecastTimer | SkillPrecastFlags.CheckEnergy));

            if (RuneIndex == 2)             //sticky trap on weak non-full HP units!
            {
                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Weak, falseConditionalFlags: TargetProperties.FullHealth));
            }
            else
            {
                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.RareElite));
            }


            ClusterConditions.Add(new SkillClusterConditions(6d, 45f, 2, true));

            FcriteriaCombat = (u) => FunkyGame.Targeting.Cache.Environment.HeroPets.DemonHunterSpikeTraps <
                              (Hotbar.PassivePowers.Contains(SNOPower.DemonHunter_Passive_CustomEngineering) ? 6 : 3);
        }
コード例 #4
0
ファイル: Bombardment.cs プロジェクト: herbfunk/Funky
        public override void Initialize()
        {
            if (RuneIndex==4)
                _executiontype=SkillExecutionFlags.ClusterTarget|SkillExecutionFlags.Target;

            Range = 45;
            Cost = 10;
            Priority = SkillPriority.High;
            PreCast = new SkillPreCast(SkillPrecastFlags.CheckCanCast);

            ClusterConditions.Add(new SkillClusterConditions(7d, 45f, 9, true));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, 45, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal));
        }
コード例 #5
0
ファイル: Bombardment.cs プロジェクト: herbfunk/Funky
        public override void Initialize()
        {
            if (RuneIndex == 4)
            {
                _executiontype = SkillExecutionFlags.ClusterTarget | SkillExecutionFlags.Target;
            }

            Range    = 45;
            Cost     = 10;
            Priority = SkillPriority.High;
            PreCast  = new SkillPreCast(SkillPrecastFlags.CheckCanCast);

            ClusterConditions.Add(new SkillClusterConditions(7d, 45f, 9, true));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, 45, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal));
        }
コード例 #6
0
        public override void Initialize()
        {
            WaitVars = new WaitLoops(1, 1, true);
            Cost     = 35;
            Range    = 45;


            Priority = SkillPriority.Medium;


            //Buff Type Casting
            if (RuneIndex == 2)
            {
                _executiontype = SkillExecutionFlags.Self;
                PreCast        = new SkillPreCast
                {
                    Flags = SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast,
                };
                PreCast.Criteria += skill => FunkyGame.Targeting.Cache.Environment.HeroPets.WizardArcaneOrbs == 0;
                PreCast.CreatePrecastCriteria();
            }
            else
            {
                PreCast = new SkillPreCast(SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast);
                ClusterConditions.Add(new SkillClusterConditions(5d, 40, 3, true));

                //Any unit when our energy is greater than 90%!
                SingleUnitCondition.Add(new UnitTargetConditions
                {
                    TrueConditionFlags = TargetProperties.None,
                    Criteria           = (unit) => FunkyGame.Hero.dCurrentEnergyPct > 0.9d,
                    MaximumDistance    = 40,
                });

                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 40, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.Fast | TargetProperties.MissileDampening));
                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Boss, maxdistance: 40));
            }

            FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial;
        }
コード例 #7
0
ファイル: WaveOfLight.cs プロジェクト: herbfunk/Funky
        public override void Initialize()
        {
            //if (RuneIndex == 1)
            //	ExecutionType = SkillExecutionFlags.Self;

            WaitVars = new WaitLoops(2, 4, true);
            Cost = RuneIndex == 3 ? 40 : 75;
            Range = 16;
            Priority = SkillPriority.Medium;

            if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.TzoKrinsGaze))
            {
                _executiontype = SkillExecutionFlags.ClusterTarget | SkillExecutionFlags.Target;
                Range = 49;
            }

            PreCast = new SkillPreCast((SkillPrecastFlags.CheckEnergy | SkillPrecastFlags.CheckCanCast |
                                      SkillPrecastFlags.CheckRecastTimer | SkillPrecastFlags.CheckPlayerIncapacitated));
            ClusterConditions.Add(new SkillClusterConditions(6d, Range, 3, true));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, Range, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.MissileReflecting));
            FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial;
        }
コード例 #8
0
ファイル: ArcaneOrb.cs プロジェクト: herbfunk/Funky
        public override void Initialize()
        {
            WaitVars = new WaitLoops(1, 1, true);
            Cost = 35;
            Range = 45;

            Priority = SkillPriority.Medium;

            //Buff Type Casting
            if (RuneIndex == 2)
            {
                _executiontype=SkillExecutionFlags.Self;
                PreCast = new SkillPreCast
                {
                    Flags = SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast,
                };
                PreCast.Criteria += skill => FunkyGame.Targeting.Cache.Environment.HeroPets.WizardArcaneOrbs == 0;
                PreCast.CreatePrecastCriteria();
            }
            else
            {
                PreCast = new SkillPreCast(SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast);
                ClusterConditions.Add(new SkillClusterConditions(5d, 40, 3, true));

                //Any unit when our energy is greater than 90%!
                SingleUnitCondition.Add(new UnitTargetConditions
                {
                    TrueConditionFlags = TargetProperties.None,
                    Criteria = (unit) => FunkyGame.Hero.dCurrentEnergyPct > 0.9d,
                    MaximumDistance = 40,

                });

                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, maxdistance: 40, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.Fast | TargetProperties.MissileDampening));
                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Boss, maxdistance: 40));
            }

            FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial;
        }
コード例 #9
0
        public override void Initialize()
        {
            //if (RuneIndex == 1)
            //	ExecutionType = SkillExecutionFlags.Self;

            WaitVars = new WaitLoops(2, 4, true);
            Cost     = RuneIndex == 3 ? 40 : 75;
            Range    = 16;
            Priority = SkillPriority.Medium;

            if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.TzoKrinsGaze))
            {
                _executiontype = SkillExecutionFlags.ClusterTarget | SkillExecutionFlags.Target;
                Range          = 49;
            }


            PreCast = new SkillPreCast((SkillPrecastFlags.CheckEnergy | SkillPrecastFlags.CheckCanCast |
                                        SkillPrecastFlags.CheckRecastTimer | SkillPrecastFlags.CheckPlayerIncapacitated));
            ClusterConditions.Add(new SkillClusterConditions(6d, Range, 3, true));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, Range, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal | TargetProperties.MissileReflecting));
            FcriteriaCombat = (u) => !FunkyGame.Hero.Class.bWaitingForSpecial;
        }
コード例 #10
0
 internal static bool CheckFlag(SkillExecutionFlags property, SkillExecutionFlags flag)
 {
     return((property & flag) != 0);
 }
コード例 #11
0
ファイル: DashingStrike.cs プロジェクト: herbfunk/Funky
        public override void Initialize()
        {
            Range    = 40;
            Priority = SkillPriority.Medium;
            PreCast  = new SkillPreCast(SkillPrecastFlags.CheckCanCast | SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckRecastTimer);
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Ranged, mindistance: 30));
            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, mindistance: 30, falseConditionalFlags: TargetProperties.Normal));

            if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.Jawbreaker))
            {
                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, mindistance: 35));
                ClusterConditions.Add(new SkillClusterConditions(7d, 50f, 1, true, 0, ClusterProperties.None, 35f, false));
            }

            //Rainments of Thousand Storms Full Set Bonus (Explosion of lightning)
            if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.RaimentofaThousandStorms, 6))
            {
                //Boss!
                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.Boss, MinimumHealthPercent: 0.95d));
                //Clusters that are at least 15 yards away
                ClusterConditions.Add(new SkillClusterConditions(6d, 40f, 7, true));
                //Clusters of Non-Normal Units
                ClusterConditions.Add(new SkillClusterConditions(6d, 40f, 2, true, clusterflags: ClusterProperties.Elites));
            }

            //Sunwoko CDR Build
            if (Equipment.CheckLegendaryItemCount(LegendaryItemTypes.MonkeyKingsGarb, 4) && RuneIndex == 4)
            {
                ExecutionType = SkillExecutionFlags.Location | SkillExecutionFlags.ClusterLocationNearest;
                Cooldown      = 4000;

                SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None));
            }

            FCombatMovement = (v) =>
            {
                float fDistanceFromTarget = FunkyGame.Hero.Position.Distance(v);
                if (FunkyBaseExtension.Difference(FunkyGame.Hero.Position.Z, v.Z) <= 4)
                {
                    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));
                    }
                    else
                    {
                        return(v);
                    }
                }

                return(Vector3.Zero);
            };
        }
コード例 #12
0
ファイル: ObjectCache.cs プロジェクト: herbfunk/Funky
 internal static bool CheckFlag(SkillExecutionFlags property, SkillExecutionFlags flag)
 {
     return (property & flag) != 0;
 }