private static void OnLoadingComplete(EventArgs args) { if (Player.Instance.ChampionName != ChampName) { return; } Config.Initialize(); TargetSelector2.Initialize(); ModeManager.Initialize(); ItemManager.Initialize(); SpellManager.Initialize(); PassiveManager.Initialize(); SpellBlock.Initialize(); Dispeller.Initialize(); UpdateChecker.CheckForUpdates(); while (UpdateChecker.gitVersion == System.Version.Parse("0.0.0.0")) { } ShowNotification(Config.Drawings.ShowNotification); Obj_AI_Base.OnProcessSpellCast += OnProcessSpellCast; Obj_AI_Base.OnLevelUp += Obj_AI_Base_OnLevelUp; Drawing.OnDraw += Drawing_OnDraw; Player.LevelSpell(SpellSlot.Q); Player.SetSkinId(Config.Misc.SkinID); }
private static void OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { var unit = sender as AIHeroClient; /* * Chat.Print("========================================="); * Chat.Print("End Distance: " + args.End.Distance(Player.Instance.Position).ToString()); * Chat.Print("Mov speed: " + unit.MoveSpeed.ToString()); * Chat.Print("Start Distance: " + args.Start.Distance(Player.Instance)); * Chat.Print("unit distance: " + unit.Distance(Player.Instance)); * Chat.Print(args.Time.ToString()); * Chat.Print(sender.Distance(Player.Instance)); * Chat.Print(sender.Distance(Player.Instance.Position)); */ if (unit == null || !unit.IsValid) { return; } if (unit.IsMe && args.Slot.Equals(SpellSlot.E)) { Orbwalker.ResetAutoAttack(); return; } if (!unit.IsEnemy || !ShieldSettings.BlockSpells || !SpellManager.W.IsReady()) { return; } // spell handled by evade if (SpellDatabase.GetByName(args.SData.Name) != null && !ShieldSettings.EvadeIntegration) { return; } if (!SpellBlock.Contains(unit, args)) { return; } if (args.End.Distance(Player.Instance) == 0) { return; } var castUnit = unit; var type = args.SData.TargettingType; if (!unit.IsValidTarget()) { var target = TargetSelector2.GetTarget(SpellManager.W.Range, DamageType.Mixed); if (target == null || !target.IsValidTarget(SpellManager.W.Range)) { target = TargetSelector.SelectedTarget; } if (target != null && target.IsValidTarget(SpellManager.W.Range)) { castUnit = target; } } if (unit.ChampionName.Equals("Caitlyn") && args.Slot == SpellSlot.Q) { Core.DelayAction(() => CastW(castUnit), (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500); } if (unit.ChampionName.Equals("Zyra")) { Core.DelayAction(() => CastW(castUnit), (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500); } if (args.End.Distance(Player.Instance) < 250) { if (unit.ChampionName.Equals("Bard") && args.End.Distance(Player.Instance) < 300) { Core.DelayAction(() => CastW(castUnit), (int)(unit.Distance(Player.Instance) / 7f) + 400); } else if (unit.ChampionName.Equals("Ashe")) { Core.DelayAction(() => CastW(castUnit), (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)args.End.Distance(Player.Instance)); return; } else if (unit.ChampionName.Equals("Varus") || unit.ChampionName.Equals("TahmKench") || unit.ChampionName.Equals("Lux")) { Core.DelayAction(() => CastW(castUnit), (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500); } else if (unit.ChampionName.Equals("Amumu")) { if (sender.Distance(Player.Instance) < 1100) { Core.DelayAction(() => CastW(castUnit), (int)(args.Start.Distance(Player.Instance) / args.SData.MissileSpeed * 1000) - (int)(args.End.Distance(Player.Instance) / args.SData.MissileSpeed) - 500); } } } // else if (args.End.Distance(Player.Instance) < 60) // { // Core.DelayAction(() => CastW(castUnit), // (int) (args.Start.Distance(Player.Instance)/args.SData.MissileSpeed*1000) - // (int) (args.End.Distance(Player.Instance)/args.SData.MissileSpeed) - 500); // } //} if (args.Target != null && type.Equals(SpellDataTargetType.Unit)) { if (!args.Target.IsMe || (args.Target.Name.Equals("Barrel") && args.Target.Distance(Player.Instance) > 200 && args.Target.Distance(Player.Instance) < 400)) { return; } if (unit.ChampionName.Equals("Nautilus") || (unit.ChampionName.Equals("Caitlyn") && args.Slot.Equals(SpellSlot.R))) { var d = unit.Distance(Player.Instance); var travelTime = d / args.SData.MissileSpeed; var delay = travelTime * 1000 - SpellManager.W.CastDelay + 150; Console.WriteLine("TT: " + travelTime + " " + delay); Core.DelayAction(() => CastW(castUnit), (int)delay); return; } CastW(castUnit); } if (type.Equals(SpellDataTargetType.Unit)) { if (unit.ChampionName.Equals("Bard") && args.End.Distance(Player.Instance) < 300) { Core.DelayAction(() => CastW(castUnit), 400 + (int)(unit.Distance(Player.Instance) / 7f)); } else if (unit.ChampionName.Equals("Riven") && args.End.Distance(Player.Instance) < 260) { CastW(castUnit); } else { CastW(castUnit); } } else if (type.Equals(SpellDataTargetType.LocationAoe) && args.End.Distance(Player.Instance) < args.SData.CastRadius) { // annie moving tibbers if (unit.ChampionName.Equals("Annie") && args.Slot.Equals(SpellSlot.R)) { return; } CastW(castUnit); } else if (type.Equals(SpellDataTargetType.Cone) && args.End.Distance(Player.Instance) < args.SData.CastRadius) { CastW(castUnit); } else if (type.Equals(SpellDataTargetType.SelfAoe) || type.Equals(SpellDataTargetType.Self)) { var d = args.End.Distance(Player.Instance.ServerPosition); var p = args.SData.CastRadius > 5000 ? args.SData.CastRange : args.SData.CastRadius; if (d < p) { CastW(castUnit); } } }