fBaseXtensions.Game.Hero.Skills.Conditions.SkillPreCast.CreatePrecastCriteria C# (CSharp) Method

CreatePrecastCriteria() private method

private CreatePrecastCriteria ( ) : void
return void
        internal void CreatePrecastCriteria()
        {
            SkillPrecastFlags precastconditions_ = Flags;
            if (precastconditions_.Equals(SkillPrecastFlags.None))
            {
                Criteria += ((s) => true);
                return;
            }
            if (precastconditions_.HasFlag(SkillPrecastFlags.CheckPlayerIncapacitated))
                Criteria += ((s) => !FunkyGame.Hero.bIsIncapacitated);

            if (precastconditions_.HasFlag(SkillPrecastFlags.CheckPlayerRooted))
                Criteria += ((s) => !FunkyGame.Hero.bIsRooted);

            if (precastconditions_.HasFlag(SkillPrecastFlags.CheckExisitingBuff))
                Criteria += ((s) => !Hotbar.HasBuff(s.Power));

            if (precastconditions_.HasFlag(SkillPrecastFlags.CheckPetCount))
                Criteria += ((s) => FunkyGame.Hero.Class.MainPetCount < s.Counter);

            if (precastconditions_.HasFlag(SkillPrecastFlags.CheckRecastTimer))
                Criteria += ((s) => s.LastUsedMilliseconds > s.Cooldown);

            if (precastconditions_.HasFlag(SkillPrecastFlags.CheckEnergy))
            {
                Criteria += ((s) =>
                {
                    bool energyCheck = !s.SecondaryEnergy ? FunkyGame.Hero.dCurrentEnergy >= s.Cost : FunkyGame.Hero.dDiscipline >= s.Cost;
                    if (s.IsSpecialAbility && !energyCheck) //we trigger waiting for special here.
                        FunkyGame.Hero.Class.bWaitingForSpecial = true;
                    if (!energyCheck && (s.IsRanged || s.Range > 0))
                        FunkyGame.Hero.Class.CanUseDefaultAttack = true;

                    return energyCheck;
                });
            }

            if (precastconditions_.HasFlag(SkillPrecastFlags.CheckCanCast))
            {
                Criteria += ((s) =>
                {
                    bool cancast = PowerManager.CanCast(s.Power, out s.CanCastFlags);

                    //PowerManager.CanCastFlags.Flag80; (Not enough Resource?)
                    //PowerManager.CanCastFlags.Flag8; (On Cooldown?)
                    if (!cancast && s.CanCastFlags.HasFlag(PowerManager.CanCastFlags.Flag80))
                    {
                        if (s.IsSpecialAbility)
                            FunkyGame.Hero.Class.bWaitingForSpecial = true;

                        if (s.IsRanged || s.Range > 0)
                            FunkyGame.Hero.Class.CanUseDefaultAttack = true;
                    }
                    //else if (s.IsSpecialAbility)
                        //FunkyGame.Hero.Class.bWaitingForSpecial = false;

                    return cancast;
                });
            }
        }

Usage Example

コード例 #1
0
ファイル: Sentry.cs プロジェクト: herbfunk/Funky
        public override void Initialize()
        {
            FullMarauderSetBonus = Equipment.CheckLegendaryItemCount(LegendaryItemTypes.EmbodimentoftheMarauder, 6);
            BombadiersRucksack=Equipment.CheckLegendaryItemCount(LegendaryItemTypes.BombadiersRucksack);

            WaitVars = new WaitLoops(0, 0, true);
            Cost = 30;
            Range = 55;

            Priority = SkillPriority.High;
            PreCast = new SkillPreCast
            {
                Flags = SkillPrecastFlags.CheckPlayerIncapacitated | SkillPrecastFlags.CheckCanCast,
            };
            PreCast.Criteria += skill => FunkyGame.Targeting.Cache.Environment.HeroPets.DemonHunterSentry < SentryMax();
            PreCast.CreatePrecastCriteria();

            SingleUnitCondition.Add(new UnitTargetConditions(TargetProperties.None, Range, MinimumHealthPercent: 0.95d, falseConditionalFlags: TargetProperties.Normal));
            //Any unit when our energy is greater than 90%!
            SingleUnitCondition.Add(new UnitTargetConditions
            {
                TrueConditionFlags = TargetProperties.None,
                Criteria = (unit) => FunkyGame.Hero.dCurrentEnergyPct > (FullMarauderSetBonus ? 0.5d : 0.9d),
                MaximumDistance = Range,
                FalseConditionFlags = TargetProperties.LowHealth,
            });

            ClusterConditions.Add(new SkillClusterConditions(6d, Range, 3, true));

            FcriteriaCombat = (u) => FunkyGame.Targeting.Cache.Environment.HeroPets.DemonHunterSentry < SentryMax();
        }
All Usage Examples Of fBaseXtensions.Game.Hero.Skills.Conditions.SkillPreCast::CreatePrecastCriteria