private static void ProcessSpell_ZedShuriken(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "ZedShuriken") { foreach (KeyValuePair <int, ObjectTrackerInfo> entry in objTracker) { var info = entry.Value; if (info.obj.Name == "Shadow" || info.Name == "Shadow") { if (info.usePosition == false && (info.obj == null || !info.obj.IsValid || info.obj.IsDead)) { DelayAction.Add(1, () => objTracker.Remove(info.obj.NetworkId)); continue; } else { Vector3 endPos2; if (info.usePosition == false) { endPos2 = info.obj.Position.Extend(args.End, spellData.range); SpellDetector.CreateSpellData(hero, info.obj.Position, endPos2, spellData, null, 0, false); } else { endPos2 = info.position.Extend(args.End, spellData.range); SpellDetector.CreateSpellData(hero, info.position, endPos2, spellData, null, 0, false); } } } } } }
private static void ProcessSpell_ZiggsQ(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "ZiggsQ") { var startPos = hero.ServerPosition.To2D(); var endPos = args.End.To2D(); var dir = (endPos - startPos).Normalized(); if (endPos.Distance(startPos) > 850) { endPos = startPos + dir * 850; } SpellDetector.CreateSpellData(hero, args.Start, endPos.To3D(), spellData, null, 0, false); var endPos2 = endPos + dir * 0.4f * startPos.Distance(endPos); SpellDetector.CreateSpellData(hero, args.Start, endPos2.To3D(), spellData, null, 250, false); var endPos3 = endPos2 + dir * 0.6f * endPos.Distance(endPos2); SpellDetector.CreateSpellData(hero, args.Start, endPos3.To3D(), spellData, null, 800); specialSpellArgs.noProcess = true; } }
private static void OnCreateObj_FizzMarinerDoom(GameObject obj, EventArgs args, SpellData spellData) { if (!obj.IsValid <MissileClient>()) { return; } MissileClient missile = (MissileClient)obj; if (missile.SpellCaster != null && missile.SpellCaster.Team != myHero.Team && missile.SData.Name == "FizzMarinerDoomMissile") { SpellDetector.CreateSpellData(missile.SpellCaster, missile.StartPosition, missile.EndPosition, spellData, null, 500, true, SpellType.Circular, false, spellData.secondaryRadius); /*foreach (KeyValuePair<int, Spell> entry in SpellDetector.spells) * { * var spell = entry.Value; * * if (spell.info.spellName == "FizzMarinerDoom" && * spell.spellObject != null && spell.spellObject.NetworkId == missile.NetworkId) * { * if (spell.spellType == SpellType.Circular) * { * spell.spellObject = null; * } * } * }*/ } }
private static void ProcessSpell_JarvanIVDragonStrike(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (args.SData.Name == "JarvanIVDragonStrike") { if (SpellDetector.onProcessSpells.TryGetValue("JarvanIVDragonStrike2", out spellData)) { foreach (KeyValuePair <int, ObjectTrackerInfo> entry in objTracker) { var info = entry.Value; if (info.Name == "Beacon" || info.obj.Name == "Beacon") { if (info.usePosition == false && (info.obj == null || !info.obj.IsValid || info.obj.IsDead)) { DelayAction.Add(1, () => objTracker.Remove(info.obj.NetworkId)); continue; } var objPosition = info.usePosition ? info.position.To2D() : info.obj.Position.To2D(); if (args.End.To2D().Distance(objPosition) < 300) { var dir = (objPosition - args.Start.To2D()).Normalized(); var endPosition = objPosition + dir * 110; SpellDetector.CreateSpellData(hero, args.Start, endPosition.To3D(), spellData); specialSpellArgs.noProcess = true; return; } } } } } }
private static void ProcessSpell_ProcessThreeWay(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData) { if (spellData.isThreeWay) { Vector3 endPos2 = MathUtils.RotateVector(args.Start.To2D(), args.End.To2D(), spellData.angle).To3D(); SpellDetector.CreateSpellData(hero, args.Start, endPos2, spellData, null); Vector3 endPos3 = MathUtils.RotateVector(args.Start.To2D(), args.End.To2D(), -spellData.angle).To3D(); SpellDetector.CreateSpellData(hero, args.Start, endPos3, spellData, null); } }
private static void OnCreateObj_JinxWMissile(GameObject obj, EventArgs args, Obj_AI_Hero hero, SpellData spellData) { if (hero != null && !hero.IsVisible && obj.IsEnemy && obj.Name.Contains("Jinx") && obj.Name.Contains("W_Cas")) { var pos1 = hero.Position; var dir = (obj.Position - myHero.Position).Normalized(); var pos2 = pos1 + dir * 500; SpellDetector.CreateSpellData(hero, pos1, pos2, spellData, null, 0); } }
private static void ProcessSpell_FizzPiercingStrike(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "FizzPiercingStrike") { if (args.Target != null && args.Target.IsMe) { SpellDetector.CreateSpellData(hero, args.Start, args.End, spellData, null, 0); } specialSpellArgs.noProcess = true; } }
private static void ProcessSpell_AsheVolley(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "Volley") { for (int i = -4; i < 5; i++) { Vector3 endPos2 = MathUtils.RotateVector(args.Start.To2D(), args.End.To2D(), i * spellData.angle).To3D(); if (i != 0) { SpellDetector.CreateSpellData(hero, args.Start, endPos2, spellData, null, 0, false); } } } }
private static void ProcessSpell_XerathArcanopulse2(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (args.SData.Name == "XerathArcanopulseChargeUp")// || spellData.spellName == "xeratharcanopulse2") { var castTime = -1 * (hero.Spellbook.CastTime - Game.Time) * 1000; if (castTime > 0) { var dir = (args.End.To2D() - args.Start.To2D()).Normalized(); var endPos = args.Start.To2D() + dir * Math.Min(spellData.range, 750 + castTime / 2); SpellDetector.CreateSpellData(hero, args.Start, endPos.To3D(), spellData); } specialSpellArgs.noProcess = true; } }
private static void OnDeleteObj_FizzMarinerDoom(GameObject obj, EventArgs args, SpellData spellData) { //need to track where bait is attached to if (!obj.IsValid <MissileClient>()) { return; } MissileClient missile = (MissileClient)obj; if (missile.SpellCaster != null && missile.SpellCaster.Team != myHero.Team && missile.SData.Name == "FizzMarinerDoomMissile") { SpellDetector.CreateSpellData(missile.SpellCaster, missile.StartPosition, missile.EndPosition, spellData, null, 1000, true, SpellType.Circular, false, 350); } }
private static void ProcessSpell_AlZaharCalloftheVoid(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "AlZaharCalloftheVoid") { var direction = (args.End.To2D() - args.Start.To2D()).Normalized(); var pDirection = direction.Perpendicular(); var targetPoint = args.End.To2D(); var pos1 = targetPoint - pDirection * spellData.sideRadius; var pos2 = targetPoint + pDirection * spellData.sideRadius; SpellDetector.CreateSpellData(hero, pos1.To3D(), pos2.To3D(), spellData, null, 0, false); SpellDetector.CreateSpellData(hero, pos2.To3D(), pos1.To3D(), spellData, null, 0); specialSpellArgs.noProcess = true; } }
private static void ProcessSpell_EkkoR(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "EkkoR") { foreach (var obj in ObjectManager.Get <Obj_AI_Minion>()) { if (obj != null && obj.IsValid && !obj.IsDead && obj.Name == "Ekko" && obj.IsEnemy) { var blinkPos = obj.ServerPosition.To2D(); SpellDetector.CreateSpellData(hero, args.Start, blinkPos.To3D(), spellData); } } specialSpellArgs.noProcess = true; } }
private static void ProcessSpell_LucianQ(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "LucianQ") { if (args.Target.IsValid <Obj_AI_Base>()) { var target = args.Target as Obj_AI_Base; float spellDelay = ((float)(350 - ObjectCache.gamePing)) / 1000; var heroWalkDir = (target.ServerPosition - target.Position).Normalized(); var predictedHeroPos = target.Position + heroWalkDir * target.MoveSpeed * (spellDelay); SpellDetector.CreateSpellData(hero, args.Start, predictedHeroPos, spellData, null, 0); specialSpellArgs.noProcess = true; } } }
private static void OnCreateObj_LuxMaliceCannon(GameObject obj, EventArgs args, Obj_AI_Hero hero, SpellData spellData) { if (obj.IsEnemy && !hero.IsVisible && obj.Name.Contains("Lux") && obj.Name.Contains("R_mis_beam_middle")) { var objList = objTracker.Values.Where(o => o.Name == "hiu"); if (objList.Count() > 3) { var dir = GetLastHiuOrientation(); var pos1 = obj.Position.To2D() - dir * 1750; var pos2 = obj.Position.To2D() + dir * 1750; SpellDetector.CreateSpellData(hero, pos1.To3D(), pos2.To3D(), spellData, null, 0); foreach (ObjectTrackerInfo gameObj in objList) { DelayAction.Add(1, () => objTracker.Remove(gameObj.obj.NetworkId)); } } } }
private void Game_OnGameUpdate(EventArgs args) { if (menu.Item("FireDummySpell").GetValue <KeyBind>().Active == true) { float interval = menu.Item("SpellInterval").GetValue <Slider>().Value; if (EvadeUtils.TickCount - lastSpellFireTime > interval) { var charName = selectSpellMenu.Item("DummySpellHero").GetValue <StringList>().SelectedValue; var spellName = selectSpellMenu.Item("DummySpellList").GetValue <StringList>().SelectedValue; var spellData = spellCache[charName][spellName]; if (!ObjectCache.menuCache.cache.ContainsKey(spellName + "DodgeSpell")) { SpellDetector.LoadDummySpell(spellData); } SpellDetector.CreateSpellData(myHero, spellStartPosition, spellEndPostion, spellData); lastSpellFireTime = EvadeUtils.TickCount; } } }
private void Game_OnGameUpdate(EventArgs args) { if (fireDummySpellMenu["FireDummySpell"].Cast <KeyBind>().CurrentValue == true) { float interval = fireDummySpellMenu["SpellInterval"].Cast <Slider>().CurrentValue; if (EvadeUtils.TickCount - lastSpellFireTime > interval) { var charName = selectSpellMenu["DummySpellHero"].Cast <ComboBox>().SelectedText; var spellName = selectSpellMenu["DummySpellList"].Cast <ComboBox>().SelectedText; var spellData = spellCache[charName][spellName]; if (ObjectCache.menuCache.cache[spellName + "DodgeSpell"] == null) { SpellDetector.LoadDummySpell(spellData); } SpellDetector.CreateSpellData(myHero, spellStartPosition, spellEndPostion, spellData); lastSpellFireTime = EvadeUtils.TickCount; } } }
private static void OnCreateObj_LuxMaliceCannon(GameObject obj, EventArgs args, Obj_AI_Hero hero, SpellData spellData) { if (hero != null && !hero.IsVisible && obj.Name == "hiu" && obj.IsEnemy) { objTracker.Add(obj.NetworkId, new ObjectTrackerInfo(obj)); DelayAction.Add(250, () => objTracker.Remove(obj.NetworkId)); var objList = objTracker.Values.Where(o => o.Name == "hiu"); if (objList.Count() > 4) { var pos1 = objList.First().obj.Position; var pos2 = objList.Last().obj.Position; SpellDetector.CreateSpellData(hero, pos1, pos2, spellData, null, 0); foreach (ObjectTrackerInfo gameObj in objList) { DelayAction.Add(1, () => objTracker.Remove(gameObj.obj.NetworkId)); } } } }
private static void OnCreateObj_jayceshockblast(GameObject obj, EventArgs args, Obj_AI_Hero hero, SpellData spellData) { return; if (obj.IsEnemy && obj.Type == GameObjectType.obj_GeneralParticleEmitter && obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_start")) { var dir = GetLastHiuOrientation(); var pos1 = obj.Position.To2D() - dir * 470; var pos2 = obj.Position.To2D() + dir * 470; var gateTracker = new ObjectTrackerInfo(obj, "AccelGate"); gateTracker.direction = dir.To3D(); objTracker.Add(obj.NetworkId, gateTracker); foreach (var entry in SpellDetector.spells) { var spell = entry.Value; if (spell.info.spellName == "jayceshockblast") { var tHero = spell.heroID; var intersection = spell.startPos.Intersection(spell.endPos, pos1, pos2); var projection = intersection.Point.ProjectOn(spell.startPos, spell.endPos); if (intersection.Intersects && projection.IsOnSegment) { SpellDetector.CreateSpellData(hero, intersection.Point.To3D(), spell.endPos.To3D(), spellData, spell.spellObject); DelayAction.Add(1, () => SpellDetector.DeleteSpell(entry.Key)); } } } //SpellDetector.CreateSpellData(hero, pos1.To3D(), pos2.To3D(), spellData, null, 0); } }
private static void OnCreateObj_ViktorDeathRay3(GameObject obj, EventArgs args) { if (!obj.IsValid <MissileClient>()) { return; } MissileClient missile = (MissileClient)obj; SpellData spellData; if (missile.SpellCaster != null && missile.SpellCaster.Team != myHero.Team && missile.SData.Name != null && missile.SData.Name == "viktoreaugmissile" && SpellDetector.onMissileSpells.TryGetValue("ViktorDeathRay3", out spellData) && missile.StartPosition != null && missile.EndPosition != null) { var missileDist = missile.EndPosition.To2D().Distance(missile.StartPosition.To2D()); var delay = missileDist / 1.5f + 600; spellData.spellDelay = delay; SpellDetector.CreateSpellData(missile.SpellCaster, missile.StartPosition, missile.EndPosition, spellData); } }
private static void ProcessSpell_LuluQ(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "LuluQ") { foreach (KeyValuePair <int, ObjectTrackerInfo> entry in objTracker) { var info = entry.Value; if (entry.Value.Name == "RobotBuddy") { if (info.obj == null || !info.obj.IsValid || info.obj.IsDead || info.obj.IsVisible) { continue; } else { Vector3 endPos2 = info.obj.Position.Extend(args.End, spellData.range); SpellDetector.CreateSpellData(hero, info.obj.Position, endPos2, spellData, null, 0, false); } } } } }
private static void ProcessSpell_OrianaIzunaCommand(Obj_AI_Base hero, GameObjectProcessSpellCastEventArgs args, SpellData spellData, SpecialSpellEventArgs specialSpellArgs) { if (spellData.spellName == "OrianaIzunaCommand") { foreach (KeyValuePair <int, ObjectTrackerInfo> entry in objTracker) { var info = entry.Value; if (entry.Value.Name == "TheDoomBall") { if (info.usePosition) { SpellDetector.CreateSpellData(hero, info.position, args.End, spellData, null, 0); } else { if (info.obj == null) { return; } SpellDetector.CreateSpellData(hero, info.obj.Position, args.End, spellData, null, 0); } info.position = args.End; info.usePosition = true; } } specialSpellArgs.noProcess = true; } if (spellData.spellName == "OrianaDetonateCommand" || spellData.spellName == "OrianaDissonanceCommand") { foreach (KeyValuePair <int, ObjectTrackerInfo> entry in objTracker) { var info = entry.Value; if (entry.Value.Name == "TheDoomBall") { if (info.usePosition) { Vector3 endPos2 = info.position; SpellDetector.CreateSpellData(hero, endPos2, endPos2, spellData, null, 0); } else { if (info.obj == null) { return; } Vector3 endPos2 = info.obj.Position; SpellDetector.CreateSpellData(hero, endPos2, endPos2, spellData, null, 0); } } } specialSpellArgs.noProcess = true; } }