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 Obj_AI_Base_OnSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && TrapEnemyCast.CurrentValue < 2 && sender.IsEnemy && sender is AIHeroClient && sender.IsValidTarget(750)) { if (Environment.TickCount - LastTrapTime > WDelay.CurrentValue) { if (TrapEnemyCast.CurrentValue == 0) { if (W.Cast(sender.Position)) { LastTrapTime = Environment.TickCount; return; } } else { var EndPosition = Hero.Position + (sender.Position - Hero.Position).Normalized() * ((sender.Position - Hero.Position).Length() + 50); if (W.Cast(EndPosition)) { LastTrapTime = Environment.TickCount; return; } } } } if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Harass) && TrapEnemyCastHarass.CurrentValue < 2 && sender.IsEnemy && sender is AIHeroClient && sender.IsValidTarget(750)) { if (Environment.TickCount - LastTrapTime > WDelay.CurrentValue) { if (TrapEnemyCastHarass.CurrentValue == 0) { if (W.Cast(sender.Position)) { LastTrapTime = Environment.TickCount; return; } } else { var EndPosition = Hero.Position + (sender.Position - Hero.Position).Normalized() * ((sender.Position - Hero.Position).Length() + 50); if (W.Cast(EndPosition)) { LastTrapTime = Environment.TickCount; return; } } } } if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) && sender.IsEnemy && sender is AIHeroClient && sender.IsValidTarget(1250)) { if (SafeQHarass.CurrentValue && Hero.ManaPercent > SafeQHarassMana.CurrentValue && Hero.CountEnemyChampionsInRange(800) == 0) { if (Q.Cast(sender.Position)) { return; } } } if (QInCombo.CurrentValue && args.SData.Name.Contains("CaitlynHeadshotMissile") && args.Target is AIHeroClient && args.Target.IsValid) { var flDistance = (args.Target.Position - Hero.Position).Length(); if (flDistance < Q.Range) { if (flDistance > 650 || Hero.Level < ShortQDisableLevel.CurrentValue) { var target = TargetSelector.GetTarget(Q.Range, DamageType.Physical); if (target == null) { return; } if (Q.CastMinimumHitchance(target, 80)) { return; } } } } if (WAfterE.CurrentValue && args.SData.Name.Contains("CaitlynEntrapment")) { if (ComboTarget != null && ComboTarget.IsValidTarget()) { var EstimatedEnemyPos = Prediction.Position.PredictUnitPosition(ComboTarget, (int)0.5); if (W.Cast((Vector3)EstimatedEnemyPos)) { return; } } } }
private void DoTheRDance() { //Added a very basic line combo. Obj_AI_Hero ComboTarget; if (getDeathmarkedTarget() == null) { PositionBeforeR = Vector3.Zero; var ts = new TargetSelector(R.Range, TargetSelector.TargetingMode.LessCast); ComboTarget = ts.Target; if (!ComboTarget.IsValidTarget()) { return; } PositionBeforeR = player.ServerPosition; R.Cast(ComboTarget); } else { getDeathmarkedTarget(); } safetySwap(); ComboTarget = getDeathmarkedTarget(); //LXOrbwalker.(ComboTarget); setForcedTarget with lxorbwalker LXOrbwalker.ForcedTarget = ComboTarget; // could work idk Vector3 tgPos = ComboTarget.ServerPosition; Vector2 bestShadowPos = getBestShadowPos(PositionBeforeR, tgPos); if (bestShadowPos == Vector2.Zero) { return; } W.Cast(bestShadowPos); ZedShadow WSh = WShadow; ZedShadow RSh = RShadow; if (WSh == null || RShadow == null) { Game.PrintChat("Something went wrong"); return; } PredictionOutput customQPredictionW = Prediction.GetPrediction(new PredictionInput { Unit = ComboTarget, Delay = Q.Delay, Radius = Q.Width, From = WSh.shadowPosition, Range = Q.Range, Collision = false, Type = Q.Type, RangeCheckFrom = player.ServerPosition, Aoe = false }); PredictionOutput customQPredictionR = Prediction.GetPrediction(new PredictionInput { Unit = ComboTarget, Delay = Q.Delay, Radius = Q.Width, From = RSh.shadowPosition, Range = Q.Range, Collision = false, Type = Q.Type, RangeCheckFrom = player.ServerPosition, Aoe = false }); bool isPlayerERangeW = getEnemiesInRange(WSh.shadowPosition, E.Range).Contains(ComboTarget); bool isPlayerERangeR = getEnemiesInRange(RSh.shadowPosition, E.Range).Contains(ComboTarget); if (customQPredictionW.Hitchance >= customHitchance || customQPredictionR.Hitchance >= customHitchance) { Q.Cast(ComboTarget); } if (isPlayerERangeR || isPlayerERangeW) { E.Cast(); } if (isChampKill && canBackToShadow() && isMenuEnabled(menu, "SwapRKill")) { if (isMenuEnabled(menu, "SafeRBack") && safeBack(RSh)) { R.Cast(); } else { R.Cast(); } } }
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; } } } }