public override void Initialize() { base.Initialize(); this.controllableUnits = this.Skill.Owner.ControllableUnits as LoneDruidControllableUnits; }
public ControllableUnitOrbwalker(IAbilityUnit unit) : base(unit) { this.IssueSleep = 150; this.controllableUnits = this.Unit.Owner.ControllableUnits as LoneDruidControllableUnits; }
public override void OnLoad() { this.LoneDruidOrbwalker = new LoneDruidOrbwalker(this.LocalHero); var loneRuneTaker = new RuneTaker(this.LocalHero, this.MapData, false); if (Game.ShortLevelName == "start") { this.LocalHero.AddOrderIssuer(loneRuneTaker); } this.AddOrbwalker(this.LoneDruidOrbwalker); var orbwalkers = new List <IUnitOrbwalker> { this.LoneDruidOrbwalker }; var orderIssuers = new List <IOrderIssuer>(); var targetReset = new Action(() => { this.LocalHero.TargetSelector.ResetTarget(); }); var targetAssign = new Action(() => { this.LocalHero.TargetSelector.GetTarget(); }); this.LocalHero.TargetSelector.TargetChanged.Subscribe( () => { foreach (var localHeroControllableUnit in this.LocalHero.ControllableUnits.Units) { localHeroControllableUnit.Value.TargetSelector.Target = this.LocalHero.TargetSelector.Target; } if (this.Bear == null) { return; } this.Bear.TargetSelector.Target = this.LocalHero.TargetSelector.Target; }); this.BodyBlockCombo = this.NewCombo( "BodyBlockCombo", orbwalkers, orderIssuers, 'B', targetAssign, targetReset, false, "bear will bodyblock, lone druid will attack"); this.ChaseCombo = this.NewCombo( "ChaseCombo", orbwalkers, orderIssuers, 'G', targetAssign, targetReset, false, "bear will chase enemy, lone will attack and move to mouse and keep range if not in true form"); this.BearRetreatOrbwalker = new BearRetreatOrbwalker { LocalHero = this.LocalHero }; this.RetreatCombo = this.NewCombo( "RetreatCombo", new List <IUnitOrbwalker> { new LoneDruidRetreatOrbwalker(this.LocalHero) }, new List <IOrderIssuer>(), 'H', () => { this.Bear?.TargetSelector.GetTarget(); foreach (var localHeroControllableUnit in this.LocalHero.ControllableUnits.Units) { localHeroControllableUnit.Value.TargetSelector.GetTarget(); } }, () => { this.Bear?.TargetSelector.ResetTarget(); foreach (var localHeroControllableUnit in this.LocalHero.ControllableUnits.Units) { localHeroControllableUnit.Value.TargetSelector.ResetTarget(); } }, false, "lone will run to mouse, bear will attack/bodyblock target or run if low hp"); this.BearRetreatOrbwalker.LowHp.AddToMenu(this.RetreatCombo.SubMenu); this.controllableUnits = this.LocalHero.ControllableUnits as LoneDruidControllableUnits; this.controllableUnits.BearAdded.Subscribe(this.BearAdded); this.controllableUnits.AddedUnit.Subscribe(new DataObserver <IAbilityUnit>(unit => this.UnitAdded(unit))); this.controllableUnits.RemovedUnit.Subscribe(new DataObserver <IAbilityUnit>(unit => this.UnitRemoved(unit))); var runeTakerMenu = new AbilitySubMenu("RuneTaker"); runeTakerMenu.AddToMenu(this.Menu); this.BearRuneTaker = new BearRuneTaker(null, this.MapData); this.BearRuneTaker.ConnectToMenu(runeTakerMenu, true, true); loneRuneTaker.ConnectToMenu(runeTakerMenu, false, false); if (this.controllableUnits.Bear != null) { this.BearAdded(); } foreach (var controllableUnitsUnit in this.controllableUnits.Units) { this.UnitAdded(controllableUnitsUnit.Value); } }