static void Orbwalker_OnPostAttack(AttackableUnit target, EventArgs args) { if (Orbwalker.ActiveModesFlags != Orbwalker.ActiveModes.None && target != null && target.IsValidTarget()) { if (!Q.IsReady() && !W.IsReady() && CanCastHydra()) { Hydra.Cast(); } if (!Q.IsReady() && !W.IsReady() && CanCastTitan()) { Titan.Cast(); } lastAA = Core.GameTickCount; if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)) { if ((Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))) { if (QNum == 2 && W.IsReady()) { var target2 = (ComboTarget != null && ComboTarget.IsValidTarget(WRange)) ? ComboTarget : TargetSelector.GetTarget(WRange, DamageType.Physical, null, true); if (target2 != null && target2.IsValidTarget() && !CanCastHydra()) { Player.CastSpell(SpellSlot.W); return; } if (CanCastHydra()) { Hydra.Cast(); } } } if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)) { if (QNum == 2 && W.IsReady()) { var target2 = (JCTarget != null && JCTarget.IsValidTarget(WRange)) ? JCTarget : EntityManager.MinionsAndMonsters.GetJungleMonsters(null, WRange, true).FirstOrDefault(); if (target2 != null && target2.IsValidTarget() && !CanCastHydra()) { Player.CastSpell(SpellSlot.W); return; } if (CanCastHydra()) { Hydra.Cast(); } } } if (target.IsValidTarget(Q.Range) && target.IsValid && !target.IsDead && !target.IsZombie) { if (QNum != 2 || !W.IsReady()) { Player.CastSpell(SpellSlot.Q, target.Position); } } } } }
private static void AfterAttack(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (!sender.IsMe) { return; } if (args.SData.Name == "ItemTitanicHydraCleave") { // because we want another auto after this Orbwalker.ResetAutoAttack(); return; } if (!args.IsAutoAttack()) { return; } Utils.Debug("ondos " + Core.GameTickCount); var target = args.Target as AttackableUnit; if (Orbwalker.ActiveModesFlags != Orbwalker.ActiveModes.None && target != null && target.IsValidTarget()) { if (!Q.IsReady() && !W.IsReady() && CanCastHydra()) { Hydra.Cast(); } if (Cooldown(Player.Spells[0]) > 1.0f && !W.IsReady() && CanCastTitan()) { Titan.Cast(); } lastAA = Core.GameTickCount; if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)) { if ((Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))) { if (QNum >= 1 && W.IsReady()) { var target2 = (ComboTarget != null && ComboTarget.IsValidTarget(WRange)) ? ComboTarget : TargetSelector.GetTarget(WRange, DamageType.Physical, null, true); if (target2 != null && target2.IsValidTarget() && CanCastTitan()) { Titan.Cast(); Player.IssueOrder(GameObjectOrder.AttackUnit, target2); return; } if (target2 != null && target2.IsValidTarget() && !CanCastHydra()) { Player.CastSpell(SpellSlot.W); return; } if (CanCastHydra()) { Hydra.Cast(); return; } if (R.IsReady() && R.Name != R1) { var enemy = EntityManager.Heroes.Enemies.FirstOrDefault(h => (h.Distance(Player.Instance) < R.Range - 50) && RDamage(h) > h.Health && h.IsValidTarget()); if (enemy != null) { forceR2 = true; R2Target = enemy; Core.DelayAction(() => forceR2 = false, 750); } } } } if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)) { if (QNum >= 1 && W.IsReady()) { var target2 = (JCTarget != null && JCTarget.IsValidTarget(WRange)) ? JCTarget : EntityManager.MinionsAndMonsters.GetJungleMonsters(null, WRange, true).FirstOrDefault(); if (target2 != null && target2.IsValidTarget() && CanCastTitan()) { Titan.Cast(); Player.IssueOrder(GameObjectOrder.AttackUnit, target2); return; } if (target2 != null && target2.IsValidTarget() && !CanCastHydra()) { Player.CastSpell(SpellSlot.W); return; } if (CanCastHydra()) { Hydra.Cast(); } } } if (Mode != Orbwalker.ActiveModes.None && target.IsValidTarget(Q.Range) && target.IsValid && !target.IsDead && !target.IsZombie) { if (Q.IsReady()) { Player.CastSpell(SpellSlot.Q, target.Position); return; } } if (Cooldown(Player.Spells[0]) > 1.0f && W.IsReady() && Player.Instance.CountEnemiesInRange(WRange) > 0) { Player.CastSpell(SpellSlot.W); return; } } } }