Exemple #1
0
        public Magnus(Unit9 owner, MultiSleeper abilitySleeper, Sleeper orbwalkSleeper, ControllableUnitMenu menu)
            : base(owner, abilitySleeper, orbwalkSleeper, menu)
        {
            this.ComboAbilities = new Dictionary <AbilityId, Func <ActiveAbility, UsableAbility> >
            {
                { AbilityId.magnataur_shockwave, x => this.shockwave = new Shockwave(x) },
                {
                    AbilityId.magnataur_skewer, x =>
                    {
                        this.skewer = new Skewer(x);
                        this.polarity?.AddSkewer(this.skewer);
                        return(this.skewer);
                    }
                },
                {
                    AbilityId.magnataur_reverse_polarity, x =>
                    {
                        this.polarity = new ReversePolarity(x);
                        if (this.skewer != null)
                        {
                            this.polarity.AddSkewer(this.skewer);
                        }

                        return(this.polarity);
                    }
                },

                { AbilityId.item_blink, x => this.blink = new BlinkDaggerMagnus(x) },
                { AbilityId.item_swift_blink, x => this.blink = new BlinkDaggerMagnus(x) },
                { AbilityId.item_arcane_blink, x => this.blink = new BlinkDaggerMagnus(x) },
                { AbilityId.item_overwhelming_blink, x => this.blink = new BlinkDaggerMagnus(x) },
                { AbilityId.item_force_staff, x => this.force = new ForceStaff(x) },
                { AbilityId.item_shivas_guard, x => this.shiva = new ShivasGuard(x) },
                { AbilityId.item_refresher, x => this.refresher = new UntargetableAbility(x) },
                { AbilityId.item_refresher_shard, x => this.refresherShard = new UntargetableAbility(x) },
            };

            this.MoveComboAbilities.Add(AbilityId.magnataur_skewer, x => this.moveSkewer = new BlinkAbility(x));
        }
        // Token: 0x06000549 RID: 1353 RVA: 0x0001B2B4 File Offset: 0x000194B4
        public void BlinkSkewerCombo(TargetManager targetManager, BlinkSkewerModeMenu menu)
        {
            if (base.ComboSleeper.IsSleeping)
            {
                return;
            }
            BlinkDaggerMagnus blinkDaggerMagnus = this.blink;

            if (blinkDaggerMagnus != null && blinkDaggerMagnus.Ability.CanBeCasted(true))
            {
                Skewer skewer = this.skewer;
                if (skewer != null && skewer.Ability.CanBeCasted(true))
                {
                    Vector3 predictedPosition = targetManager.Target.GetPredictedPosition(this.skewer.Ability.CastPoint);
                    Vector3 blinkPosition     = Vector3Extensions.Extend2D(base.Owner.Position, predictedPosition, base.Owner.Distance(predictedPosition) + 100f);
                    float   num = base.Owner.Distance(blinkPosition);
                    if (this.blink.Ability.CastRange < num)
                    {
                        return;
                    }
                    Unit9 unit = (from x in targetManager.AllyHeroes
                                  where !x.Equals(this.Owner) && menu.IsAllyEnabled(x.Name) && x.Distance(blinkPosition) < this.skewer.Ability.CastRange + 800f
                                  orderby x.Distance(blinkPosition)
                                  select x).FirstOrDefault <Unit9>();
                    if (unit == null)
                    {
                        return;
                    }
                    base.OrbwalkSleeper.Sleep(this.skewer.Ability.CastPoint + 0.3f);
                    this.blink.Ability.UseAbility(blinkPosition, false, false);
                    this.skewer.Ability.UseAbility(unit.Position, false, false);
                    base.ComboSleeper.Sleep(0.3f);
                    return;
                }
            }
        }