예제 #1
0
        protected override bool MoveComboUseDisables(AbilityHelper abilityHelper)
        {
            if (abilityHelper.CanBeCasted(this.smash))
            {
                if (abilityHelper.UseAbility(this.smash))
                {
                    return(true);
                }

                if (abilityHelper.CanBeCasted(this.stone, false))
                {
                    if (this.stone.UseAbility(abilityHelper.TargetManager, this.ComboSleeper, this.smash))
                    {
                        return(true);
                    }
                }
                else
                {
                    if (abilityHelper.ForceUseAbility(this.smash, true))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
예제 #2
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var damagingChakrams = this.chakrams.Count(x => comboModeMenu.IsAbilityEnabled(x.Ability) && x.IsDamaging(targetManager));
            var returnChakram    = this.chakrams.Find(
                x => comboModeMenu.IsAbilityEnabled(x.Ability) && x.ShouldReturnChakram(targetManager, damagingChakrams));

            if (returnChakram?.Return() == true)
            {
                return(true);
            }

            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.whirlingDeath))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.hex))
            {
                return(true);
            }

            if (abilityHelper.UseAbilityIfCondition(this.blink, this.timberChain, this.whirlingDeath))
            {
                if (abilityHelper.CanBeCasted(this.whirlingDeath, false, false))
                {
                    abilityHelper.ForceUseAbility(this.whirlingDeath, true);
                }

                return(true);
            }

            if (abilityHelper.UseAbility(this.shiva))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bladeMail, 400))
            {
                return(true);
            }

            if (abilityHelper.UseAbilityIfCondition(this.timberChain, this.blink))
            {
                return(true);
            }

            var chakram = this.chakrams.Find(x => x.Ability.CanBeCasted());

            if (abilityHelper.UseAbility(chakram))
            {
                return(true);
            }

            return(false);
        }
예제 #3
0
 // Token: 0x06000915 RID: 2325 RVA: 0x0000691B File Offset: 0x00004B1B
 protected override bool MoveComboUseBuffs(AbilityHelper abilityHelper)
 {
     if (base.MoveComboUseBuffs(abilityHelper))
     {
         return(true);
     }
     if (abilityHelper.CanBeCasted(this.surge, false, false, true, true))
     {
         abilityHelper.ForceUseAbility(this.surge, false, true);
         return(true);
     }
     return(false);
 }
예제 #4
0
        // Token: 0x06000274 RID: 628 RVA: 0x000104E4 File Offset: 0x0000E6E4
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            int     damagingChakrams = this.chakrams.Count((Chakram x) => comboModeMenu.IsAbilityEnabled(x.Ability) && x.IsDamaging(targetManager));
            Chakram chakram          = this.chakrams.Find((Chakram x) => comboModeMenu.IsAbilityEnabled(x.Ability) && x.ShouldReturnChakram(targetManager, damagingChakrams));

            if (chakram != null && chakram.Return())
            {
                return(true);
            }
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.whirlingDeath, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.hex, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbilityIfCondition(this.blink, new UsableAbility[]
            {
                this.timberChain,
                this.whirlingDeath
            }))
            {
                if (abilityHelper.CanBeCasted(this.whirlingDeath, false, false, true, true))
                {
                    abilityHelper.ForceUseAbility(this.whirlingDeath, true, true);
                }
                return(true);
            }
            if (abilityHelper.UseAbility(this.shiva, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.bladeMail, 400f))
            {
                return(true);
            }
            if (abilityHelper.UseAbilityIfCondition(this.timberChain, new UsableAbility[]
            {
                this.blink
            }))
            {
                return(true);
            }
            Chakram ability = this.chakrams.Find((Chakram x) => x.Ability.CanBeCasted(true));

            return(abilityHelper.UseAbility(ability, true));
        }
예제 #5
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.shiva))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bladeMail, 400))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.vacuum))
            {
                return(true);
            }

            if (abilityHelper.UseAbilityIfNone(this.wall, this.vacuum))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.blink, 600, 400))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.force, 600, 400))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.shell))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.surge, false, false))
            {
                if (abilityHelper.ForceUseAbility(this.surge))
                {
                    return(true);
                }
            }

            return(false);
        }
        // Token: 0x06000939 RID: 2361 RVA: 0x00028E7C File Offset: 0x0002707C
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.CanBeCasted(this.field, true, true, true, true))
            {
                if (abilityHelper.CanBeCasted(this.bkb, false, false, true, true) && abilityHelper.ForceUseAbility(this.bkb, false, true))
                {
                    return(true);
                }
                if (abilityHelper.HasMana(new UsableAbility[]
                {
                    this.field,
                    this.glimmer
                }) && abilityHelper.CanBeCasted(this.glimmer, false, false, true, true) && abilityHelper.ForceUseAbility(this.glimmer, false, true))
                {
                    return(true);
                }
                if (abilityHelper.HasMana(new UsableAbility[]
                {
                    this.field,
                    this.atos
                }) && abilityHelper.UseAbility(this.atos, true))
                {
                    return(true);
                }
                if (abilityHelper.HasMana(new UsableAbility[]
                {
                    this.field,
                    this.frostbite
                }) && abilityHelper.UseAbility(this.frostbite, true))
                {
                    return(true);
                }
                if (abilityHelper.UseAbility(this.field, true))
                {
                    return(true);
                }
            }
            return(abilityHelper.UseAbilityIfCondition(this.blink, new UsableAbility[]
            {
                this.field
            }) || abilityHelper.UseAbility(this.force, 600f, 400f) || abilityHelper.UseAbility(this.atos, true) || abilityHelper.UseAbility(this.frostbite, true) || abilityHelper.UseAbility(this.nova, true));
        }
예제 #7
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (this.powershot.CancelChanneling(targetManager))
            {
                this.ComboSleeper.Sleep(0.1f);
                return(true);
            }

            if (abilityHelper.UseAbilityIfCondition(this.blink, this.shackleshot))
            {
                abilityHelper.ForceUseAbility(this.shackleshot);
                this.OrbwalkSleeper.Sleep(0.5f);
                return(true);
            }

            if (!abilityHelper.CanBeCasted(this.shackleshot, false, false))
            {
                if (abilityHelper.UseAbility(this.blink, this.Owner.GetAttackRange(targetManager.Target) + 100, 400))
                {
                    return(true);
                }
            }

            if (abilityHelper.UseAbility(this.hex))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bloodthorn))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.orchid))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.nullifier))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.shackleshot))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.shackleshot, false))
            {
                var castWindrun  = abilityHelper.CanBeCasted(this.windrun, false, false);
                var movePosition = this.shackleshot.GetMovePosition(targetManager, comboModeMenu, castWindrun);
                //if ((movePosition.IsZero  || Owner.Distance(movePosition) > 300 || targetManager.Target.IsMoving) && abilityHelper.CanBeCasted(this.force, false, false))
                //{
                //    var forcePosition = this.shackleshot.GetForceStaffPosition(targetManager, this.force);
                //    if (!forcePosition.IsZero)
                //    {
                //        if (Owner.GetAngle(forcePosition) > 0.1)
                //        {
                //            this.Move(forcePosition);
                //            OrbwalkSleeper.Sleep(0.1f);
                //            this.ComboSleeper.Sleep(0.1f);
                //            return true;
                //        }

                //        abilityHelper.ForceUseAbility(this.force, true);
                //        return true;
                //    }
                //}

                if (!movePosition.IsZero && this.Move(movePosition))
                {
                    if ((this.Owner.Distance(movePosition) > 100 || targetManager.Target.IsMoving) && castWindrun)
                    {
                        abilityHelper.ForceUseAbility(this.windrun);
                    }

                    this.OrbwalkSleeper.Sleep(0.1f);
                    this.ComboSleeper.Sleep(0.1f);
                    return(true);
                }
            }

            if (abilityHelper.UseAbilityIfCondition(this.powershot, this.shackleshot, this.blink))
            {
                this.ComboSleeper.ExtendSleep(0.2f);
                this.OrbwalkSleeper.ExtendSleep(0.2f);
                return(true);
            }

            if (abilityHelper.UseAbilityIfCondition(this.focusFire, this.powershot))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.windrun))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.phase))
            {
                return(true);
            }

            return(false);
        }
        // Token: 0x060005CE RID: 1486 RVA: 0x0001CF8C File Offset: 0x0001B18C
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);
            float         num           = base.Owner.Distance(targetManager.Target);

            if (abilityHelper.CanBeCasted(this.duel, false, false, true, true) && ((num <= 1400f && abilityHelper.CanBeCasted(this.blink, true, true, true, true)) || num < 500f))
            {
                if (abilityHelper.CanBeCasted(this.attack, false, true, true, true) && abilityHelper.ForceUseAbility(this.attack, false, true))
                {
                    return(true);
                }
                if (abilityHelper.CanBeCasted(this.bladeMail, false, true, true, true) && abilityHelper.ForceUseAbility(this.bladeMail, false, true))
                {
                    return(true);
                }
                if (abilityHelper.CanBeCasted(this.bkb, false, true, true, true) && abilityHelper.ForceUseAbility(this.bkb, false, true))
                {
                    return(true);
                }
                if (abilityHelper.CanBeCasted(this.mjollnir, false, true, true, true) && abilityHelper.ForceUseAbility(this.mjollnir, false, true))
                {
                    return(true);
                }
                if (abilityHelper.CanBeCasted(this.armlet, false, true, true, true) && abilityHelper.ForceUseAbility(this.armlet, false, true))
                {
                    return(true);
                }
                if (!abilityHelper.CanBeCasted(this.duel, true, true, true, true) && abilityHelper.CanBeCasted(this.blink, false, true, true, true) && abilityHelper.ForceUseAbility(this.blink, false, true))
                {
                    return(true);
                }
            }
            if (abilityHelper.UseAbility(this.abyssal, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.orchid, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.bloodthorn, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.nullifier, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.halberd, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.bkb, 500f))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.bladeMail, 500f))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.mjollnir, 400f))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.attack, 400f))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.armlet, 300f))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.duel, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.blink, 300f, 0f))
            {
                return(true);
            }
            if (abilityHelper.CanBeCasted(this.odds, true, true, true, true) && !abilityHelper.CanBeCasted(this.duel, true, true, true, true) && !abilityHelper.CanBeCasted(this.blink, true, true, true, true))
            {
                BlinkAbility blinkAbility = this.blink;
                if ((blinkAbility == null || !blinkAbility.Sleeper.IsSleeping) && abilityHelper.UseAbility(this.odds, true))
                {
                    return(true);
                }
            }
            return(abilityHelper.UseAbility(this.phase, true));
        }
예제 #9
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.CanBeCasted(this.blackHole))
            {
                if (abilityHelper.CanBeCasted(this.bkb, false, false))
                {
                    if (abilityHelper.ForceUseAbility(this.bkb))
                    {
                        return(true);
                    }
                }

                if (abilityHelper.HasMana(this.pulse, this.blackHole) && abilityHelper.UseAbility(this.pulse))
                {
                    return(true);
                }

                if (abilityHelper.HasMana(this.shiva, this.blackHole) && abilityHelper.UseAbility(this.shiva))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.blackHole))
                {
                    return(true);
                }
            }

            if (abilityHelper.CanBeCastedIfCondition(this.blink, this.blackHole))
            {
                if (abilityHelper.CanBeCasted(this.bkb, false, false))
                {
                    if (abilityHelper.ForceUseAbility(this.bkb))
                    {
                        return(true);
                    }
                }

                if (abilityHelper.CanBeCasted(this.ghost, false, false))
                {
                    if (abilityHelper.ForceUseAbility(this.ghost))
                    {
                        return(true);
                    }
                }
            }

            if (abilityHelper.UseAbilityIfCondition(this.blink, this.blackHole))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.refresher) || abilityHelper.CanBeCasted(this.refresherShard))
            {
                if (abilityHelper.CanBeCasted(this.blackHole, true, true, true, false) && !this.blackHole.Ability.IsReady)
                {
                    var useRefresher = abilityHelper.CanBeCasted(this.refresherShard) ? this.refresherShard : this.refresher;

                    if (abilityHelper.HasMana(this.blackHole, useRefresher))
                    {
                        if (abilityHelper.UseAbility(useRefresher))
                        {
                            return(true);
                        }
                    }
                }
            }

            if (abilityHelper.UseAbility(this.malefice))
            {
                return(true);
            }

            return(false);
        }
예제 #10
0
        private bool UltCombo(TargetManager targetManager, AbilityHelper abilityHelper)
        {
            if (!abilityHelper.CanBeCasted(this.requiem, false, false))
            {
                return(false);
            }

            var         target         = targetManager.Target;
            var         position       = target.Position;
            var         distance       = this.Owner.Distance(position);
            var         requiredTime   = this.requiem.Ability.CastPoint + (Game.Ping / 2000);
            const float AdditionalTime = 0.3f;

            if (target.IsInvulnerable)
            {
                var time = target.GetInvulnerabilityDuration();
                if (time <= 0)
                {
                    return(true);
                }

                var eulsModifier = target.GetModifier("modifier_eul_cyclone");
                if (eulsModifier != null)
                {
                    var particle = eulsModifier.ParticleEffects.FirstOrDefault();
                    if (particle != null)
                    {
                        position = particle.GetControlPoint(0);
                        distance = this.Owner.Distance(position);
                    }
                }

                var remainingTime = time - requiredTime;

                if (remainingTime <= -AdditionalTime)
                {
                    return(false);
                }

                if (distance < 100)
                {
                    if (abilityHelper.UseAbility(this.bkb))
                    {
                        return(true);
                    }

                    if (remainingTime <= 0 && abilityHelper.ForceUseAbility(this.requiem))
                    {
                        return(true);
                    }

                    if (!this.OrbwalkSleeper.IsSleeping)
                    {
                        this.OrbwalkSleeper.Sleep(0.1f);
                        this.Owner.BaseUnit.Move(position);
                    }

                    return(true);
                }

                if (distance / this.Owner.Speed < remainingTime + AdditionalTime)
                {
                    if (abilityHelper.UseAbility(this.bkb))
                    {
                        return(true);
                    }

                    this.OrbwalkSleeper.Sleep(0.1f);
                    this.ComboSleeper.Sleep(0.1f);
                    return(this.Owner.BaseUnit.Move(position));
                }

                if (abilityHelper.CanBeCasted(this.blink))
                {
                    var blinkRange = this.blink.Ability.CastRange + (this.Owner.Speed * remainingTime);
                    if (blinkRange > distance)
                    {
                        if (abilityHelper.UseAbility(this.blink, position))
                        {
                            this.OrbwalkSleeper.Sleep(0.1f);
                            return(true);
                        }
                    }
                }
            }

            if (!abilityHelper.CanBeCasted(this.euls, false, false) || !this.euls.ShouldForceCast(targetManager) || target.IsMagicImmune)
            {
                return(false);
            }

            var eulsTime = this.euls.Ability.Duration - requiredTime;

            if (abilityHelper.CanBeCasted(this.blink))
            {
                var blinkRange = this.blink.Ability.CastRange + (this.Owner.Speed * eulsTime);
                if (blinkRange > distance)
                {
                    if (abilityHelper.UseAbility(this.blink, position))
                    {
                        this.OrbwalkSleeper.Sleep(0.1f);
                        this.ComboSleeper.ExtendSleep(0.1f);
                        return(true);
                    }
                }
            }

            if (distance / this.Owner.Speed < eulsTime)
            {
                if (abilityHelper.UseAbility(this.hex))
                {
                    this.ComboSleeper.ExtendSleep(0.1f);
                    this.OrbwalkSleeper.ExtendSleep(0.1f);
                    return(true);
                }

                if (abilityHelper.UseAbility(this.veil))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.ethereal))
                {
                    this.OrbwalkSleeper.Sleep(0.5f);
                    return(true);
                }

                if (abilityHelper.ForceUseAbility(this.euls))
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #11
0
        // Token: 0x06000412 RID: 1042 RVA: 0x0001662C File Offset: 0x0001482C
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.bloodthorn, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.nullifier, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.ethereal, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.dagon, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.shiva, true))
            {
                return(true);
            }
            if (targetManager.Target.HasModifier("modifier_pudge_meat_hook"))
            {
                if (abilityHelper.CanBeCasted(this.bloodthorn, true, false, true, true))
                {
                    abilityHelper.ForceUseAbility(this.bloodthorn, false, true);
                    return(true);
                }
                if (abilityHelper.CanBeCasted(this.nullifier, true, false, true, true))
                {
                    if (!targetManager.Target.Abilities.Any((Ability9 x) => x.Id == AbilityId.item_aeon_disk && x.IsReady))
                    {
                        abilityHelper.ForceUseAbility(this.nullifier, false, true);
                        return(true);
                    }
                }
                if (abilityHelper.CanBeCasted(this.ethereal, true, false, true, true))
                {
                    abilityHelper.ForceUseAbility(this.ethereal, false, true);
                    return(true);
                }
                if (abilityHelper.UseAbility(this.dagon, true))
                {
                    return(true);
                }
                if (abilityHelper.UseAbility(this.vessel, true))
                {
                    return(true);
                }
                if (abilityHelper.UseAbility(this.urn, true))
                {
                    return(true);
                }
            }
            if (!abilityHelper.CanBeCasted(this.dismember, true, true, true, true))
            {
                return(abilityHelper.UseAbilityIfCondition(this.blink, new UsableAbility[]
                {
                    this.dismember
                }) || abilityHelper.UseAbility(this.blink, 800f, 25f) || abilityHelper.UseAbility(this.atos, true) || (abilityHelper.CanBeCasted(this.force, true, true, true, true) && this.force.UseAbilityOnTarget(targetManager, base.ComboSleeper)) || abilityHelper.UseAbility(this.force, 400f, 800f) || abilityHelper.UseAbility(this.hook, true) || (abilityHelper.CanBeCasted(this.rot, false, false, true, true) && this.rot.AutoToggle(targetManager)));
            }
            if (abilityHelper.CanBeCasted(this.bloodthorn, true, false, true, true))
            {
                abilityHelper.ForceUseAbility(this.bloodthorn, false, true);
                return(true);
            }
            if (abilityHelper.CanBeCasted(this.nullifier, true, false, true, true))
            {
                if (!targetManager.Target.Abilities.Any((Ability9 x) => x.Id == AbilityId.item_aeon_disk && x.IsReady))
                {
                    abilityHelper.ForceUseAbility(this.nullifier, false, true);
                    return(true);
                }
            }
            if (abilityHelper.CanBeCasted(this.ethereal, true, false, true, true))
            {
                abilityHelper.ForceUseAbility(this.ethereal, false, true);
                return(true);
            }
            if (abilityHelper.UseAbility(this.dagon, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.bladeMail, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.vessel, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.urn, true))
            {
                return(true);
            }
            abilityHelper.ForceUseAbility(this.dismember, false, true);
            return(true);
        }
예제 #12
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);
            var distance      = this.Owner.Distance(targetManager.Target);

            if (abilityHelper.CanBeCasted(this.duel, false, false) &&
                ((distance <= 1400 && abilityHelper.CanBeCasted(this.blink)) ||
                 distance < 500))
            {
                if (abilityHelper.CanBeCasted(this.attack, false))
                {
                    if (abilityHelper.ForceUseAbility(this.attack))
                    {
                        return(true);
                    }
                }

                if (abilityHelper.CanBeCasted(this.bladeMail, false))
                {
                    if (abilityHelper.ForceUseAbility(this.bladeMail))
                    {
                        return(true);
                    }
                }

                if (abilityHelper.CanBeCasted(this.bkb, false))
                {
                    if (abilityHelper.ForceUseAbility(this.bkb))
                    {
                        return(true);
                    }
                }

                if (abilityHelper.CanBeCasted(this.mjollnir, false))
                {
                    if (abilityHelper.ForceUseAbility(this.mjollnir))
                    {
                        return(true);
                    }
                }

                if (abilityHelper.CanBeCasted(this.armlet, false))
                {
                    if (abilityHelper.ForceUseAbility(this.armlet))
                    {
                        return(true);
                    }
                }

                if (!abilityHelper.CanBeCasted(this.duel) && abilityHelper.CanBeCasted(this.blink, false))
                {
                    if (abilityHelper.ForceUseAbility(this.blink))
                    {
                        return(true);
                    }
                }
            }

            if (abilityHelper.UseAbility(this.abyssal))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.orchid))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bloodthorn))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.nullifier))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.halberd))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bkb, 500))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bladeMail, 500))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.mjollnir, 400))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.medallion))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.solar))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.attack, 400))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.armlet, 300))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.duel))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.blink, 300, 0))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.odds) && !abilityHelper.CanBeCasted(this.duel) &&
                !abilityHelper.CanBeCasted(this.blink) &&
                this.blink?.Sleeper.IsSleeping != true)
            {
                if (abilityHelper.UseAbility(this.odds))
                {
                    return(true);
                }
            }

            if (abilityHelper.UseAbility(this.phase))
            {
                return(true);
            }

            return(false);
        }
예제 #13
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (this.Owner.HasModifier("modifier_void_spirit_dissimilate_phase"))
            {
                this.ComboSleeper.Sleep(0.1f);
                this.OrbwalkSleeper.Sleep(0.1f);
                return(this.Owner.Move(targetManager.Target.Position));
            }

            if (abilityHelper.UseAbility(this.hex))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.nullifier))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bloodthorn))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.orchid))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.veil))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.dagon))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bkb, 500))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.mjollnir, 500))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.vessel))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.urn))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.remnant) && targetManager.Target.GetImmobilityDuration() <= 0)
            {
                if (abilityHelper.CanBeCasted(this.eul, false, false))
                {
                    if (abilityHelper.UseAbility(this.eul) || (this.forceEul && abilityHelper.ForceUseAbility(this.eul)))
                    {
                        this.forceRemnant.Sleep(0.5f);
                        this.forceEul.Reset();
                        return(true);
                    }
                }
            }

            if (this.forceRemnant && abilityHelper.CanBeCasted(this.remnant, true, false) &&
                abilityHelper.ForceUseAbility(this.remnant, true))
            {
                this.forceRemnant.Reset();
                return(true);
            }

            if (this.Owner.Distance(targetManager.Target) > 300)
            {
                if (abilityHelper.UseAbility(this.step))
                {
                    this.forceEul.Sleep(0.5f);
                    return(true);
                }
            }

            if (!abilityHelper.CanBeCasted(this.step, false) || this.Owner.Distance(targetManager.Target) < 500 ||
                !targetManager.Target.CanMove())
            {
                if (abilityHelper.UseAbility(this.remnant))
                {
                    return(true);
                }
            }

            if (abilityHelper.UseAbility(this.dissimilate))
            {
                return(true);
            }

            if (abilityHelper.UseAbilityIfNone(this.shiva, this.dissimilate))
            {
                return(true);
            }

            if (!this.Owner.HasAghanimsScepter || !targetManager.Target.IsSilenced)
            {
                if (abilityHelper.UseAbility(this.pulse))
                {
                    this.pulse.Sleeper.ExtendSleep(0.2f);
                    return(true);
                }
            }

            if (abilityHelper.UseAbility(this.phase))
            {
                return(true);
            }

            return(false);
        }
예제 #14
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.hex))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bloodthorn))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.orchid))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.nullifier))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.veil))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.ethereal))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.dagon))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.end))
            {
                return(true);
            }

            if (this.end.Ability.IsChanneling)
            {
                if (targetManager.Target.HasModifier("modifier_oracle_purifying_flames"))
                {
                    if (this.Owner.BaseUnit.Stop())
                    {
                        this.ComboSleeper.Sleep(0.1f);
                        return(true);
                    }
                }
            }

            if (abilityHelper.CanBeCasted(this.flames, true, true, false))
            {
                if (this.end.Ability.IsChanneling && !this.end.FullChannelTime(comboModeMenu))
                {
                    if (abilityHelper.ForceUseAbility(this.flames))
                    {
                        return(true);
                    }
                }
            }

            if (abilityHelper.UseAbility(this.flames))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.urn))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.vessel))
            {
                return(true);
            }

            return(false);
        }
예제 #15
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.blink, 400, 200))
            {
                this.rolling?.Sleeper.Sleep(0.8f);
                this.ComboSleeper.ExtendSleep(0.1f);
                return(true);
            }

            if (abilityHelper.UseAbility(this.force, 400, 200))
            {
                this.rolling?.Sleeper.Sleep(0.8f);
                this.ComboSleeper.ExtendSleep(0.1f);
                return(true);
            }

            if (abilityHelper.UseAbility(this.veil))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.rolling))
            {
                if (abilityHelper.UseAbility(this.rolling))
                {
                    return(true);
                }

                if (abilityHelper.CanBeCasted(this.stone, false))
                {
                    if (abilityHelper.ForceUseAbility(this.stone, true))
                    {
                        this.smash?.Sleeper.Sleep(1f);
                        return(true);
                    }
                }
                else
                {
                    if (abilityHelper.ForceUseAbility(this.rolling, true))
                    {
                        return(true);
                    }
                }
            }

            if (abilityHelper.CanBeCasted(this.smash))
            {
                if (abilityHelper.UseAbility(this.smash))
                {
                    return(true);
                }

                if (abilityHelper.CanBeCasted(this.stone, false))
                {
                    if (this.stone.UseAbility(targetManager, this.ComboSleeper, this.smash))
                    {
                        return(true);
                    }
                }
                else
                {
                    if (abilityHelper.ForceUseAbility(this.smash, true))
                    {
                        return(true);
                    }
                }
            }

            if (abilityHelper.CanBeCasted(this.grip))
            {
                if (abilityHelper.UseAbility(this.grip))
                {
                    return(true);
                }

                if (abilityHelper.CanBeCasted(this.stone, false))
                {
                    if (this.stone.UseAbility(targetManager, this.ComboSleeper, this.grip))
                    {
                        return(true);
                    }
                }
                else
                {
                    if (abilityHelper.ForceUseAbility(this.grip, true))
                    {
                        return(true);
                    }
                }
            }

            if (abilityHelper.UseAbility(this.halberd))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.mag))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.vessel))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.urn))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.shiva))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bladeMail))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.stone))
            {
                return(true);
            }

            return(false);
        }
예제 #16
0
        // Token: 0x060007F8 RID: 2040 RVA: 0x000246B4 File Offset: 0x000228B4
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.blink, 400f, 200f))
            {
                RollingBoulder rollingBoulder = this.rolling;
                if (rollingBoulder != null)
                {
                    rollingBoulder.Sleeper.Sleep(0.8f);
                }
                base.ComboSleeper.ExtendSleep(0.1f);
                return(true);
            }
            if (abilityHelper.UseAbility(this.force, 400f, 200f))
            {
                RollingBoulder rollingBoulder2 = this.rolling;
                if (rollingBoulder2 != null)
                {
                    rollingBoulder2.Sleeper.Sleep(0.8f);
                }
                base.ComboSleeper.ExtendSleep(0.1f);
                return(true);
            }
            if (abilityHelper.UseAbility(this.veil, true))
            {
                return(true);
            }
            if (abilityHelper.CanBeCasted(this.rolling, true, true, true, true))
            {
                if (abilityHelper.UseAbility(this.rolling, true))
                {
                    return(true);
                }
                if (abilityHelper.CanBeCasted(this.stone, false, true, true, true))
                {
                    if (abilityHelper.ForceUseAbility(this.stone, true, true))
                    {
                        BoulderSmash boulderSmash = this.smash;
                        if (boulderSmash != null)
                        {
                            boulderSmash.Sleeper.Sleep(1f);
                        }
                        return(true);
                    }
                }
                else if (abilityHelper.ForceUseAbility(this.rolling, true, true))
                {
                    return(true);
                }
            }
            if (abilityHelper.CanBeCasted(this.smash, true, true, true, true))
            {
                if (abilityHelper.UseAbility(this.smash, true))
                {
                    return(true);
                }
                if (abilityHelper.CanBeCasted(this.stone, false, true, true, true))
                {
                    if (this.stone.UseAbility(targetManager, base.ComboSleeper, this.smash))
                    {
                        return(true);
                    }
                }
                else if (abilityHelper.ForceUseAbility(this.smash, true, true))
                {
                    return(true);
                }
            }
            if (abilityHelper.CanBeCasted(this.grip, true, true, true, true))
            {
                if (abilityHelper.UseAbility(this.grip, true))
                {
                    return(true);
                }
                if (abilityHelper.CanBeCasted(this.stone, false, true, true, true))
                {
                    if (this.stone.UseAbility(targetManager, base.ComboSleeper, this.grip))
                    {
                        return(true);
                    }
                }
                else if (abilityHelper.ForceUseAbility(this.grip, true, true))
                {
                    return(true);
                }
            }
            return(abilityHelper.UseAbility(this.halberd, true) || abilityHelper.UseAbility(this.mag, true) || abilityHelper.UseAbility(this.vessel, true) || abilityHelper.UseAbility(this.urn, true) || abilityHelper.UseAbility(this.shiva, true) || abilityHelper.UseAbility(this.bladeMail, true) || abilityHelper.UseAbility(this.stone, true));
        }
예제 #17
0
        public void RollSmashCombo(TargetManager targetManager, RollSmashModeMenu menu)
        {
            if (this.ComboSleeper.IsSleeping)
            {
                return;
            }

            var target   = targetManager.Target;
            var distance = this.Owner.Distance(target.Position);

            var abilityHelper = new AbilityHelper(targetManager, null, this);

            if (this.Owner.HasModifier("modifier_earth_spirit_rolling_boulder_caster"))
            {
                if (abilityHelper.ForceUseAbility(this.stone, true))
                {
                    this.ComboSleeper.Sleep(3f);
                    return;
                }
            }

            var ally = targetManager.AllyHeroes
                       .Where(x => !x.Equals(this.Owner) && menu.IsAllyEnabled(x.Name) && x.Distance(target) > 300 && x.Distance(target) < 1500)
                       .OrderBy(x => x.Distance(target))
                       .FirstOrDefault();

            if (ally == null)
            {
                return;
            }

            if (target.HasModifier("modifier_earth_spirit_boulder_smash"))
            {
                if (abilityHelper.CanBeCasted(this.rolling, false, false) && this.rolling.SimpleUseAbility(target.Position))
                {
                    this.ComboSleeper.Sleep(0.5f);
                    return;
                }

                return;
            }

            if (this.smash?.Ability.CanBeCasted() != true)
            {
                return;
            }

            if (distance < this.smash.Ability.CastRange + 100)
            {
                if (this.Owner.Position.AngleBetween(target.Position, ally.Position) < 30)
                {
                    this.smash.Ability.UseAbility(target);
                    this.ComboSleeper.Sleep(0.3f);
                    return;
                }

                if (target.GetImmobilityDuration() > 0.5f)
                {
                    this.Owner.BaseUnit.Move(target.Position.Extend2D(ally.Position, -100));
                    this.OrbwalkSleeper.Sleep(0.1f);
                    this.ComboSleeper.Sleep(0.1f);
                    return;
                }
            }

            if (abilityHelper.CanBeCasted(this.blink))
            {
                var predicted = target.GetPredictedPosition(this.Owner.GetTurnTime(target.Position) + (GameManager.Ping / 2000f) + 0.2f);
                var position  = predicted.Extend2D(ally.Position, -125);

                if (abilityHelper.UseAbility(this.blink, position))
                {
                    this.ComboSleeper.ExtendSleep(0.1f);
                    return;
                }

                return;
            }

            if (abilityHelper.CanBeCasted(this.rolling))
            {
                if (abilityHelper.UseAbility(this.rolling))
                {
                    return;
                }

                if (abilityHelper.CanBeCasted(this.stone, false))
                {
                    if (abilityHelper.ForceUseAbility(this.stone, true))
                    {
                        return;
                    }
                }
                else
                {
                    if (abilityHelper.ForceUseAbility(this.rolling, true))
                    {
                        return;
                    }
                }
            }
        }
예제 #18
0
        // Token: 0x0600038E RID: 910 RVA: 0x00014510 File Offset: 0x00012710
        private bool UltCombo(TargetManager targetManager, AbilityHelper abilityHelper)
        {
            if (!abilityHelper.CanBeCasted(this.requiem, false, false, true, true))
            {
                return(false);
            }
            Unit9   target = targetManager.Target;
            Vector3 vector = target.Position;
            float   num    = base.Owner.Distance(vector);
            float   num2   = this.requiem.Ability.CastPoint + Game.Ping / 2000f;

            if (target.IsInvulnerable)
            {
                float invulnerabilityDuration = target.GetInvulnerabilityDuration();
                if (invulnerabilityDuration <= 0f)
                {
                    return(true);
                }
                Modifier modifier = target.GetModifier("modifier_eul_cyclone");
                if (modifier != null)
                {
                    ParticleEffect particleEffect = modifier.ParticleEffects.FirstOrDefault <ParticleEffect>();
                    if (particleEffect != null)
                    {
                        vector = particleEffect.GetControlPoint(0u);
                        num    = base.Owner.Distance(vector);
                    }
                }
                float num3 = invulnerabilityDuration - num2;
                if (num3 <= -0.3f)
                {
                    return(false);
                }
                if (num < 70f)
                {
                    if (abilityHelper.UseAbility(this.bkb, true))
                    {
                        return(true);
                    }
                    if (num3 <= 0f && abilityHelper.ForceUseAbility(this.requiem, false, true))
                    {
                        return(true);
                    }
                    if (!base.OrbwalkSleeper.IsSleeping)
                    {
                        base.OrbwalkSleeper.Sleep(0.1f);
                        base.Owner.BaseUnit.Move(vector);
                    }
                    return(true);
                }
                else if (num / base.Owner.Speed < num3 + 0.3f)
                {
                    if (abilityHelper.UseAbility(this.bkb, true))
                    {
                        return(true);
                    }
                    base.OrbwalkSleeper.Sleep(0.1f);
                    base.ComboSleeper.Sleep(0.1f);
                    return(base.Owner.BaseUnit.Move(vector));
                }
                else if (abilityHelper.CanBeCasted(this.blink, true, true, true, true) && this.blink.Ability.CastRange + base.Owner.Speed * num3 > num && abilityHelper.UseAbility(this.blink, vector))
                {
                    base.OrbwalkSleeper.Sleep(0.1f);
                    return(true);
                }
            }
            if (!abilityHelper.CanBeCasted(this.euls, false, false, true, true) || !this.euls.ShouldForceCast(targetManager) || target.IsMagicImmune)
            {
                return(false);
            }
            float num4 = this.euls.Ability.Duration - num2;

            if (abilityHelper.CanBeCasted(this.blink, true, true, true, true) && this.blink.Ability.CastRange + base.Owner.Speed * num4 > num && abilityHelper.UseAbility(this.blink, vector))
            {
                base.OrbwalkSleeper.Sleep(0.1f);
                base.ComboSleeper.ExtendSleep(0.1f);
                return(true);
            }
            if (num / base.Owner.Speed < num4)
            {
                if (abilityHelper.CanBeCasted(this.hex, true, true, true, true))
                {
                    bool flag = false;
                    foreach (ActiveAbility activeAbility in target.Abilities.OfType <ActiveAbility>())
                    {
                        if (activeAbility.IsValid && activeAbility.CastPoint <= 0f && activeAbility.CanBeCasted(false))
                        {
                            if (!base.Owner.IsMagicImmune || !abilityHelper.CanBeCasted(this.bkb, true, true, true, true))
                            {
                                if (activeAbility.Id == AbilityId.item_blade_mail)
                                {
                                    flag = true;
                                    break;
                                }
                                IDisable disable;
                                if ((disable = (activeAbility as IDisable)) != null && (disable.AppliesUnitState & (UnitState.Silenced | UnitState.Stunned | UnitState.Hexed)) != (UnitState)0UL)
                                {
                                    flag = true;
                                    break;
                                }
                            }
                            IShield shield;
                            if ((shield = (activeAbility as IShield)) != null && (shield.AppliesUnitState & (UnitState.Invulnerable | UnitState.MagicImmune)) != (UnitState)0UL)
                            {
                                flag = true;
                                break;
                            }
                            IBlink blink;
                            if ((blink = (activeAbility as IBlink)) != null && blink.Id != AbilityId.item_blink)
                            {
                                flag = true;
                                break;
                            }
                        }
                    }
                    if (flag && abilityHelper.ForceUseAbility(this.hex, false, true))
                    {
                        base.ComboSleeper.ExtendSleep(0.1f);
                        base.OrbwalkSleeper.ExtendSleep(0.1f);
                        return(true);
                    }
                }
                if (abilityHelper.UseAbility(this.veil, true))
                {
                    return(true);
                }
                if (abilityHelper.UseAbility(this.ethereal, true))
                {
                    base.OrbwalkSleeper.Sleep(0.5f);
                    return(true);
                }
                if (abilityHelper.ForceUseAbility(this.euls, false, true))
                {
                    return(true);
                }
            }
            return(false);
        }
예제 #19
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);
            var target        = targetManager.Target;

            if (abilityHelper.UseAbility(this.hex))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.vortex) && (target.CanBecomeMagicImmune || target.CanBecomeInvisible))
            {
                if (abilityHelper.UseAbility(this.vortex))
                {
                    return(true);
                }
            }

            if (abilityHelper.UseAbility(this.bloodthorn))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.orchid))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.nullifier))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.dagon))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.shiva))
            {
                return(true);
            }

            var overloaded = this.Owner.CanAttack(target, 25) && this.Owner.HasModifier("modifier_storm_spirit_overload");
            var projectile = ObjectManager.TrackingProjectiles.FirstOrDefault(
                x => x.Source?.Handle == this.Handle && x.Target?.Handle == target.Handle && x.IsAutoAttackProjectile());

            if (overloaded)
            {
                if (projectile == null)
                {
                    return(false);
                }

                var distance = target.IsMoving && target.GetAngle(projectile.Position) > 1.5f ? 250 : 350;
                if (projectile.Position.Distance2D(projectile.TargetPosition) > distance)
                {
                    return(false);
                }
            }
            else
            {
                if (projectile != null)
                {
                    var overload = this.Owner.Abilities.FirstOrDefault(x => x.Id == AbilityId.storm_spirit_overload);
                    if (overload != null)
                    {
                        var attackDamage   = this.Owner.GetAttackDamage(target);
                        var overloadDamage = overload.GetDamage(target);
                        var health         = target.Health;

                        if (attackDamage < health && attackDamage + overloadDamage > health)
                        {
                            if (abilityHelper.CanBeCasted(this.remnant, false, false) && abilityHelper.ForceUseAbility(this.remnant, true))
                            {
                                return(true);
                            }

                            if (abilityHelper.CanBeCasted(this.ball, false, false))
                            {
                                var distance = projectile.Position.Distance2D(projectile.TargetPosition);
                                var time     = distance / projectile.Speed;

                                if (time > this.ball.Ability.CastPoint && abilityHelper.ForceUseAbility(this.ball, true))
                                {
                                    return(true);
                                }
                            }
                        }
                    }
                }
            }

            if (abilityHelper.UseAbility(this.vortex))
            {
                this.ComboSleeper.ExtendSleep(0.1f);
                this.remnant?.Sleeper.Sleep(1f);
                this.ball?.Sleeper.Sleep(1f);
                return(true);
            }

            if (abilityHelper.UseAbility(this.remnant))
            {
                this.ComboSleeper.ExtendSleep(0.1f);
                this.ball?.Sleeper.Sleep(1f);
                return(true);
            }

            if (abilityHelper.UseAbilityIfCondition(this.ball, this.remnant, this.vortex))
            {
                this.ComboSleeper.ExtendSleep(0.3f);
                return(true);
            }

            return(false);
        }
예제 #20
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.hex))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.orchid))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bloodthorn))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.nullifier))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.veil))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.chains))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.blink, false) && abilityHelper.CanBeCasted(this.chains, false) &&
                abilityHelper.CanBeCasted(this.fist, false))
            {
                var fistRange = this.fist.Ability.Range;
                var range     = this.blink.Ability.Range + fistRange;
                var target    = targetManager.Target;
                var distance  = this.Owner.Distance(target);

                if (range > distance && distance > fistRange)
                {
                    if (abilityHelper.UseAbility(this.blink, target.Position))
                    {
                        return(true);
                    }
                }
            }

            if (!this.Owner.IsInvulnerable && abilityHelper.UseAbility(this.blink, 700, 0))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.fist))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.remnantActivate, false))
            {
                if (!this.remnant.Sleeper.IsSleeping)
                {
                    if (abilityHelper.ForceUseAbility(this.remnantActivate, true))
                    {
                        return(true);
                    }
                }

                //if (abilityHelper.UseAbility(this.remnantActivate))
                //{
                //    return true;
                //}
            }

            if (abilityHelper.CanBeCasted(this.remnant) && abilityHelper.HasMana(this.remnantActivate) && !this.Owner.IsInvulnerable)
            {
                var target   = targetManager.Target;
                var distance = target.Distance(this.Owner);

                if (target.GetImmobilityDuration() > 0.8 || distance < 400)
                {
                    var damage = this.remnant.GetDamage(targetManager);
                    if (damage + 100 > target.Health)
                    {
                        for (var i = 0; i < this.remnant.GetRequiredRemnants(targetManager); i++)
                        {
                            abilityHelper.ForceUseAbility(this.remnant);
                        }

                        this.ComboSleeper.Sleep((this.Owner.Distance(target) / this.remnant.Ability.Speed) * 0.6f);
                        return(true);
                    }
                }

                if (distance > 350 && abilityHelper.UseAbility(this.remnant))
                {
                    return(true);
                }
            }

            if (abilityHelper.UseAbility(this.shiva))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.shield, 400))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.mjollnir, 600))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.bladeMail, 500))
            {
                return(true);
            }

            return(false);
        }
예제 #21
0
        // Token: 0x060007F9 RID: 2041 RVA: 0x00024918 File Offset: 0x00022B18
        public void RollSmashCombo(TargetManager targetManager, RollSmashModeMenu menu)
        {
            if (base.ComboSleeper.IsSleeping)
            {
                return;
            }
            Unit9         target        = targetManager.Target;
            float         num           = base.Owner.Distance(target.Position);
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, null, this);

            if (base.Owner.HasModifier("modifier_earth_spirit_rolling_boulder_caster") && abilityHelper.ForceUseAbility(this.stone, true, true))
            {
                base.ComboSleeper.Sleep(3f);
                return;
            }
            Unit9 unit = (from x in targetManager.AllyHeroes
                          where !x.Equals(this.Owner) && menu.IsAllyEnabled(x.Name) && x.Distance(target) > 300f && x.Distance(target) < 1500f
                          orderby x.Distance(target)
                          select x).FirstOrDefault <Unit9>();

            if (unit == null)
            {
                return;
            }
            if (target.HasModifier("modifier_earth_spirit_boulder_smash"))
            {
                if (abilityHelper.CanBeCasted(this.rolling, false, false, true, true) && this.rolling.SimpleUseAbility(target.Position))
                {
                    base.ComboSleeper.Sleep(0.5f);
                    return;
                }
                return;
            }
            else
            {
                BoulderSmash boulderSmash = this.smash;
                if (boulderSmash == null || !boulderSmash.Ability.CanBeCasted(true))
                {
                    return;
                }
                if (num < this.smash.Ability.CastRange + 100f)
                {
                    if (Vector3Extensions.AngleBetween(base.Owner.Position, target.Position, unit.Position) < 30f)
                    {
                        this.smash.Ability.UseAbility(target, false, false);
                        base.ComboSleeper.Sleep(0.3f);
                        return;
                    }
                    if (target.GetImmobilityDuration() > 0.5f)
                    {
                        base.Owner.BaseUnit.Move(Vector3Extensions.Extend2D(target.Position, unit.Position, -100f));
                        base.OrbwalkSleeper.Sleep(0.1f);
                        base.ComboSleeper.Sleep(0.1f);
                        return;
                    }
                }
                if (abilityHelper.CanBeCasted(this.blink, true, true, true, true))
                {
                    Vector3 position = Vector3Extensions.Extend2D(target.GetPredictedPosition(base.Owner.GetTurnTime(target.Position) + Game.Ping / 2000f + 0.2f), unit.Position, -125f);
                    if (abilityHelper.UseAbility(this.blink, position))
                    {
                        base.ComboSleeper.ExtendSleep(0.1f);
                        return;
                    }
                    return;
                }
                else
                {
                    if (!abilityHelper.CanBeCasted(this.rolling, true, true, true, true))
                    {
                        return;
                    }
                    if (abilityHelper.UseAbility(this.rolling, true))
                    {
                        return;
                    }
                    if (abilityHelper.CanBeCasted(this.stone, false, true, true, true))
                    {
                        abilityHelper.ForceUseAbility(this.stone, true, true);
                        return;
                    }
                    abilityHelper.ForceUseAbility(this.rolling, true, true);
                    return;
                }
            }
        }
예제 #22
0
        // Token: 0x06000634 RID: 1588 RVA: 0x0001E5C4 File Offset: 0x0001C7C4
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.CanBeCasted(this.blackHole, true, true, true, true))
            {
                if (abilityHelper.CanBeCasted(this.bkb, false, false, true, true) && abilityHelper.ForceUseAbility(this.bkb, false, true))
                {
                    return(true);
                }
                if (abilityHelper.HasMana(new UsableAbility[]
                {
                    this.pulse,
                    this.blackHole
                }) && abilityHelper.UseAbility(this.pulse, true))
                {
                    return(true);
                }
                if (abilityHelper.HasMana(new UsableAbility[]
                {
                    this.shiva,
                    this.blackHole
                }) && abilityHelper.UseAbility(this.shiva, true))
                {
                    return(true);
                }
                if (abilityHelper.UseAbility(this.blackHole, true))
                {
                    return(true);
                }
            }
            if (abilityHelper.CanBeCastedIfCondition(this.blink, new UsableAbility[]
            {
                this.blackHole
            }))
            {
                if (abilityHelper.CanBeCasted(this.bkb, false, false, true, true) && abilityHelper.ForceUseAbility(this.bkb, false, true))
                {
                    return(true);
                }
                if (abilityHelper.CanBeCasted(this.ghost, false, false, true, true) && abilityHelper.ForceUseAbility(this.ghost, false, true))
                {
                    return(true);
                }
            }
            if (abilityHelper.UseAbilityIfCondition(this.blink, new UsableAbility[]
            {
                this.blackHole
            }))
            {
                return(true);
            }
            if ((abilityHelper.CanBeCasted(this.refresher, true, true, true, true) || abilityHelper.CanBeCasted(this.refresherShard, true, true, true, true)) && abilityHelper.CanBeCasted(this.blackHole, true, true, true, false) && !this.blackHole.Ability.IsReady)
            {
                UntargetableAbility untargetableAbility = abilityHelper.CanBeCasted(this.refresherShard, true, true, true, true) ? this.refresherShard : this.refresher;
                if (abilityHelper.HasMana(new UsableAbility[]
                {
                    this.blackHole,
                    untargetableAbility
                }) && abilityHelper.UseAbility(untargetableAbility, true))
                {
                    return(true);
                }
            }
            return(abilityHelper.UseAbility(this.malefice, true));
        }
예제 #23
0
        // Token: 0x060002E6 RID: 742 RVA: 0x00011E14 File Offset: 0x00010014
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);
            Unit9         target        = targetManager.Target;

            if (abilityHelper.UseAbility(this.hex, true))
            {
                return(true);
            }
            if (abilityHelper.CanBeCasted(this.vortex, true, true, true, true) && (target.CanBecomeMagicImmune || target.CanBecomeInvisible) && abilityHelper.UseAbility(this.vortex, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.bloodthorn, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.orchid, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.nullifier, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.dagon, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.shiva, true))
            {
                return(true);
            }
            bool flag = base.Owner.CanAttack(target, 25f) && base.Owner.HasModifier("modifier_storm_spirit_overload");
            TrackingProjectile trackingProjectile = ObjectManager.TrackingProjectiles.FirstOrDefault(delegate(TrackingProjectile x)
            {
                Entity source             = x.Source;
                EntityHandle?entityHandle = (source != null) ? new EntityHandle?(source.Handle) : null;
                if (((entityHandle != null) ? new uint?(entityHandle.GetValueOrDefault()) : null) == this.Handle)
                {
                    Entity target = x.Target;
                    entityHandle  = ((target != null) ? new EntityHandle?(target.Handle) : null);
                    if (((entityHandle != null) ? new uint?(entityHandle.GetValueOrDefault()) : null) == target.Handle)
                    {
                        return(ProjectileExtensions.IsAutoAttackProjectile(x));
                    }
                }
                return(false);
            });

            if (flag)
            {
                if (trackingProjectile == null)
                {
                    return(false);
                }
                int num = (target.IsMoving && target.GetAngle(trackingProjectile.Position, false) > 1.5f) ? 250 : 450;
                if (trackingProjectile.Position.Distance2D(trackingProjectile.TargetPosition, false) > (float)num)
                {
                    return(false);
                }
            }
            else
            {
                if (trackingProjectile != null)
                {
                    Ability9 ability = base.Owner.Abilities.FirstOrDefault((Ability9 x) => x.Id == AbilityId.storm_spirit_overload);
                    if (ability != null)
                    {
                        int   attackDamage = base.Owner.GetAttackDamage(target, 0, 0f);
                        int   damage       = ability.GetDamage(target);
                        float health       = target.Health;
                        if ((float)attackDamage < health && (float)(attackDamage + damage) > health)
                        {
                            if (abilityHelper.CanBeCasted(this.remnant, false, false, true, true) && abilityHelper.ForceUseAbility(this.remnant, true, true))
                            {
                                return(true);
                            }
                            if (abilityHelper.CanBeCasted(this.ball, false, false, true, true) && trackingProjectile.Position.Distance2D(trackingProjectile.TargetPosition, false) / (float)trackingProjectile.Speed > this.ball.Ability.CastPoint && abilityHelper.ForceUseAbility(this.ball, true, true))
                            {
                                return(true);
                            }
                        }
                    }
                }
                if (abilityHelper.UseAbility(this.vortex, true))
                {
                    base.ComboSleeper.ExtendSleep(0.1f);
                    BallLightning ballLightning = this.ball;
                    if (ballLightning != null)
                    {
                        ballLightning.Sleeper.Sleep(1f);
                    }
                    return(true);
                }
                if (abilityHelper.UseAbility(this.remnant, true))
                {
                    base.ComboSleeper.ExtendSleep(0.1f);
                    BallLightning ballLightning2 = this.ball;
                    if (ballLightning2 != null)
                    {
                        ballLightning2.Sleeper.Sleep(1f);
                    }
                    return(true);
                }
            }
            return(abilityHelper.UseAbility(this.ball, true));
        }
예제 #24
0
        // Token: 0x06000914 RID: 2324 RVA: 0x000289B8 File Offset: 0x00026BB8
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            return(abilityHelper.UseAbility(this.shiva, true) || abilityHelper.UseAbility(this.bladeMail, 400f) || abilityHelper.UseAbility(this.vacuum, true) || abilityHelper.UseAbilityIfNone(this.wall, new UsableAbility[]
            {
                this.vacuum
            }) || abilityHelper.UseAbility(this.blink, 600f, 400f) || abilityHelper.UseAbility(this.force, 600f, 400f) || abilityHelper.UseAbility(this.shell, true) || (abilityHelper.CanBeCasted(this.surge, false, false, true, true) && abilityHelper.ForceUseAbility(this.surge, false, true)));
        }
예제 #25
0
        // Token: 0x060007BF RID: 1983 RVA: 0x000238D8 File Offset: 0x00021AD8
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.hex, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.orchid, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.bloodthorn, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.nullifier, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.veil, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.chains, true))
            {
                return(true);
            }
            if (abilityHelper.CanBeCasted(this.blink, false, true, true, true) && abilityHelper.CanBeCasted(this.chains, false, true, true, true) && abilityHelper.CanBeCasted(this.fist, false, true, true, true))
            {
                float range  = this.fist.Ability.Range;
                float num    = this.blink.Ability.Range + range;
                Unit9 target = targetManager.Target;
                float num2   = base.Owner.Distance(target);
                if (num > num2 && num2 > range && abilityHelper.UseAbility(this.blink, target.Position))
                {
                    return(true);
                }
            }
            if (!base.Owner.IsInvulnerable && abilityHelper.UseAbility(this.blink, 700f, 0f))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.fist, true))
            {
                return(true);
            }
            if (abilityHelper.CanBeCasted(this.remnantActivate, false, true, true, true) && !this.remnant.Sleeper.IsSleeping && abilityHelper.ForceUseAbility(this.remnantActivate, true, true))
            {
                return(true);
            }
            if (abilityHelper.CanBeCasted(this.remnant, true, true, true, true) && abilityHelper.HasMana(new UsableAbility[]
            {
                this.remnantActivate
            }) && !base.Owner.IsInvulnerable)
            {
                Unit9 target2 = targetManager.Target;
                float num3    = target2.Distance(base.Owner);
                if (((double)target2.GetImmobilityDuration() > 0.8 || num3 < 400f) && this.remnant.GetDamage(targetManager) + 100f > target2.Health)
                {
                    int num4 = 0;
                    while ((float)num4 < this.remnant.GetRequiredRemnants(targetManager))
                    {
                        abilityHelper.ForceUseAbility(this.remnant, false, true);
                        num4++;
                    }
                    base.ComboSleeper.Sleep(base.Owner.Distance(target2) / this.remnant.Ability.Speed * 0.6f);
                    return(true);
                }
                if (num3 > 350f && abilityHelper.UseAbility(this.remnant, true))
                {
                    return(true);
                }
            }
            return(abilityHelper.UseAbility(this.shiva, true) || abilityHelper.UseAbility(this.shield, 400f) || abilityHelper.UseAbility(this.mjollnir, 600f) || abilityHelper.UseAbility(this.bladeMail, 500f));
        }
예제 #26
0
        // Token: 0x06000148 RID: 328 RVA: 0x0000C418 File Offset: 0x0000A618
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (this.powershot.CancelChanneling(targetManager))
            {
                base.ComboSleeper.Sleep(0.1f);
                return(true);
            }
            if (abilityHelper.UseAbilityIfCondition(this.blink, new UsableAbility[]
            {
                this.shackleshot
            }))
            {
                abilityHelper.ForceUseAbility(this.shackleshot, false, true);
                base.OrbwalkSleeper.Sleep(0.5f);
                return(true);
            }
            if (!abilityHelper.CanBeCasted(this.shackleshot, false, false, true, true) && abilityHelper.UseAbility(this.blink, base.Owner.GetAttackRange(targetManager.Target, 0f) + 100f, 400f))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.hex, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.bloodthorn, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.orchid, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.nullifier, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.shackleshot, true))
            {
                return(true);
            }
            if (abilityHelper.CanBeCasted(this.shackleshot, false, true, true, true))
            {
                bool    flag         = abilityHelper.CanBeCasted(this.windrun, false, false, true, true);
                Vector3 movePosition = this.shackleshot.GetMovePosition(targetManager, comboModeMenu, flag);
                if (!movePosition.IsZero && base.Move(movePosition))
                {
                    if ((base.Owner.Distance(movePosition) > 100f || targetManager.Target.IsMoving) && flag)
                    {
                        abilityHelper.ForceUseAbility(this.windrun, false, true);
                    }
                    base.OrbwalkSleeper.Sleep(0.1f);
                    base.ComboSleeper.Sleep(0.1f);
                    return(true);
                }
            }
            if (abilityHelper.UseAbilityIfCondition(this.powershot, new UsableAbility[]
            {
                this.shackleshot,
                this.blink
            }))
            {
                base.ComboSleeper.ExtendSleep(0.2f);
                base.OrbwalkSleeper.ExtendSleep(0.2f);
                return(true);
            }
            return(abilityHelper.UseAbilityIfCondition(this.focusFire, new UsableAbility[]
            {
                this.powershot
            }) || abilityHelper.UseAbility(this.windrun, true) || abilityHelper.UseAbility(this.phase, true));
        }
예제 #27
0
        // Token: 0x060001A1 RID: 417 RVA: 0x0000DB78 File Offset: 0x0000BD78
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            AbilityHelper abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.dagon, true))
            {
                return(true);
            }
            if (abilityHelper.UseAbility(this.end, true))
            {
                return(true);
            }
            if (this.end.Ability.IsChanneling && targetManager.Target.HasModifier("modifier_oracle_purifying_flames") && base.Owner.BaseUnit.Stop())
            {
                base.ComboSleeper.Sleep(0.1f);
                return(true);
            }
            return((abilityHelper.CanBeCasted(this.flames, true, true, false, true) && this.end.Ability.IsChanneling && !this.end.FullChannelTime(comboModeMenu) && abilityHelper.ForceUseAbility(this.flames, false, true)) || abilityHelper.UseAbility(this.flames, true) || abilityHelper.UseAbility(this.urn, true) || abilityHelper.UseAbility(this.vessel, true));
        }
예제 #28
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.UseAbility(this.bloodthorn))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.nullifier))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.ethereal))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.dagon))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.shiva))
            {
                return(true);
            }

            if (targetManager.Target.HasModifier("modifier_pudge_meat_hook"))
            {
                if (abilityHelper.CanBeCasted(this.bloodthorn, true, false))
                {
                    abilityHelper.ForceUseAbility(this.bloodthorn);
                    return(true);
                }

                if (abilityHelper.CanBeCasted(this.nullifier, true, false) &&
                    !targetManager.Target.Abilities.Any(x => x.Id == AbilityId.item_aeon_disk && x.IsReady))
                {
                    abilityHelper.ForceUseAbility(this.nullifier);
                    return(true);
                }

                if (abilityHelper.CanBeCasted(this.ethereal, true, false))
                {
                    abilityHelper.ForceUseAbility(this.ethereal);
                    return(true);
                }

                if (abilityHelper.UseAbility(this.bkb))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.lotus))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.dagon))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.vessel))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.urn))
                {
                    return(true);
                }
            }

            if (abilityHelper.CanBeCasted(this.dismember))
            {
                if (abilityHelper.CanBeCasted(this.bloodthorn, true, false))
                {
                    abilityHelper.ForceUseAbility(this.bloodthorn);
                    return(true);
                }

                if (abilityHelper.CanBeCasted(this.nullifier, true, false) &&
                    !targetManager.Target.Abilities.Any(x => x.Id == AbilityId.item_aeon_disk && x.IsReady))
                {
                    abilityHelper.ForceUseAbility(this.nullifier);
                    return(true);
                }

                if (abilityHelper.UseAbility(this.bkb))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.lotus))
                {
                    return(true);
                }

                if (abilityHelper.CanBeCasted(this.ethereal, true, false))
                {
                    abilityHelper.ForceUseAbility(this.ethereal);
                    return(true);
                }

                if (abilityHelper.UseAbility(this.dagon))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.bladeMail))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.vessel))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.urn))
                {
                    return(true);
                }

                abilityHelper.ForceUseAbility(this.dismember);
                return(true);
            }

            if (abilityHelper.UseAbilityIfCondition(this.blink, this.dismember))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.blink, 800, 25))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.atos))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.force))
            {
                if (this.force.UseAbilityOnTarget(targetManager, this.ComboSleeper))
                {
                    return(true);
                }
            }

            if (abilityHelper.UseAbility(this.force, 400, 800))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.hook))
            {
                return(true);
            }

            if (abilityHelper.CanBeCasted(this.rot, false, false))
            {
                if (this.rot.AutoToggle(targetManager))
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #29
0
        public override bool Combo(TargetManager targetManager, ComboModeMenu comboModeMenu)
        {
            var abilityHelper = new AbilityHelper(targetManager, comboModeMenu, this);

            if (abilityHelper.CanBeCasted(this.field))
            {
                if (abilityHelper.CanBeCasted(this.bkb, false, false))
                {
                    if (abilityHelper.ForceUseAbility(this.bkb))
                    {
                        return(true);
                    }
                }

                if (abilityHelper.HasMana(this.field, this.glimmer) && abilityHelper.CanBeCasted(this.glimmer, false, false))
                {
                    if (abilityHelper.ForceUseAbility(this.glimmer))
                    {
                        return(true);
                    }
                }

                if (abilityHelper.HasMana(this.field, this.atos) && abilityHelper.UseAbility(this.atos))
                {
                    return(true);
                }

                if (abilityHelper.HasMana(this.field, this.frostbite) && abilityHelper.UseAbility(this.frostbite))
                {
                    return(true);
                }

                if (abilityHelper.UseAbility(this.field))
                {
                    return(true);
                }
            }

            if (abilityHelper.UseAbilityIfCondition(this.blink, this.field))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.force, 600, 400))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.atos))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.frostbite))
            {
                return(true);
            }

            if (abilityHelper.UseAbility(this.nova))
            {
                return(true);
            }

            return(false);
        }