public static Vector3 MysticFlarePrediction(this MysticFlare mysticFlare, Unit target) { var dubleMysticFlare = false; var owner = mysticFlare.Owner; if (mysticFlare.Owner.HasAghanimsScepter()) { var localHero = EntityManager.LocalHero; dubleMysticFlare = EntityManager.GetEntities <Hero>().Count(x => !x.IsAlly(localHero) && !x.IsIllusion && x.IsVisible && x.IsAlive && x.Distance2D(target) <= 700) <= 1; } var input = new PredictionInput { Owner = owner, Delay = mysticFlare.CastPoint + mysticFlare.ActivationDelay, Range = mysticFlare.CastRange, Radius = mysticFlare.Radius, }; var output = PredictionManager.GetPrediction(input.WithTarget(target)); var castPosition = output.CastPosition; Vector3 position; if (target.NetworkActivity != NetworkActivity.Move || target.IsStunned() || target.IsRooted()) { position = castPosition; } else { position = castPosition + (100 * target.Direction2D().ToVector3()); } return(dubleMysticFlare ? castPosition + (175 * target.Direction2D().ToVector3()) : position); }
public SkywrathMage(Unit9 owner, MultiSleeper abilitySleeper, Sleeper orbwalkSleeper, ControllableUnitMenu menu) : base(owner, abilitySleeper, orbwalkSleeper, menu) { this.ComboAbilities = new Dictionary <AbilityId, Func <ActiveAbility, UsableAbility> > { { AbilityId.skywrath_mage_arcane_bolt, x => this.bolt = new NukeAbility(x) }, { AbilityId.skywrath_mage_ancient_seal, x => this.seal = new DebuffAbility(x) }, { AbilityId.skywrath_mage_concussive_shot, x => this.concussive = new DebuffAbility(x) }, { AbilityId.skywrath_mage_mystic_flare, x => this.flare = new MysticFlare(x) }, { AbilityId.item_rod_of_atos, x => this.atos = new DisableAbility(x) }, { AbilityId.item_gungir, x => this.gungir = new DisableAbility(x) }, { AbilityId.item_veil_of_discord, x => this.veil = new DebuffAbility(x) }, { AbilityId.item_force_staff, x => this.force = new ForceStaff(x) }, { AbilityId.item_blink, x => this.blink = new BlinkAbility(x) }, { AbilityId.item_swift_blink, x => this.blink = new BlinkAbility(x) }, { AbilityId.item_arcane_blink, x => this.blink = new BlinkAbility(x) }, { AbilityId.item_overwhelming_blink, x => this.blink = new BlinkAbility(x) }, { AbilityId.item_sheepstick, x => this.hex = new HexSkywrath(x) }, { AbilityId.item_ethereal_blade, x => this.ethereal = new EtherealBlade(x) }, { AbilityId.item_nullifier, x => this.nullifier = new Nullifier(x) }, { AbilityId.item_dagon_5, x => this.dagon = new NukeAbility(x) }, }; this.MoveComboAbilities.Add(AbilityId.skywrath_mage_ancient_seal, _ => this.seal); this.MoveComboAbilities.Add(AbilityId.skywrath_mage_concussive_shot, _ => this.concussive); }