private static void SpellMissile_ZedShadowDash(GameObject obj, EventArgs args) { if (obj.GetType() != typeof(MissileClient) || !((MissileClient)obj).IsValidMissile()) { return; } MissileClient missile = (MissileClient)obj; if (missile.SpellCaster.IsEnemy && missile.SData.Name == "ZedWMissile") { if (!ObjectTracker.ObjTracker.ContainsKey(obj.NetworkId)) { ObjectTrackerInfo info = new ObjectTrackerInfo(obj); info.Name = "Shadow"; info.OwnerNetworkId = missile.SpellCaster.NetworkId; info.UsePosition = true; info.Position = missile.EndPosition; ObjectTracker.ObjTracker.Add(obj.NetworkId, info); DelayAction.Add(1000, () => ObjectTracker.ObjTracker.Remove(obj.NetworkId)); } } }
private static void SpellMissile_ZedShadowDash(GameObject obj) { if (!obj.IsValid && obj.Type == GameObjectType.MissileClient) { return; } var missile = (MissileClient)obj; if (missile.SpellCaster.IsEnemy && missile.SpellData.Name == "ZedWMissile") { if (!ObjectTracker.objTracker.ContainsKey(obj.NetworkId)) { var info = new ObjectTrackerInfo(obj); info.Name = "Shadow"; info.OwnerNetworkID = missile.SpellCaster.NetworkId; info.usePosition = true; info.position = missile.EndPosition; ObjectTracker.objTracker.Add(obj.NetworkId, info); DelayAction.Add(1000, () => ObjectTracker.objTracker.Remove(obj.NetworkId)); } } }
private static void OnCreateObj_jayceshockblast(GameObject obj, EventArgs args, Obj_AI_Hero hero, SpellData spellData) { if (obj.Type == GameObjectType.obj_GeneralParticleEmitter && obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_end") && obj.Name.Contains("RED")) { foreach (var tracker in ObjectTracker.ObjTracker) { var gateObj = tracker.Value; if (gateObj.Name == "AccelGate") { DelayAction.Add(0, () => ObjectTracker.ObjTracker.Remove(tracker.Key)); } } } if (obj.Type == GameObjectType.obj_GeneralParticleEmitter && obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_start") && obj.Name.Contains("RED")) { //var particle = obj as Obj_GeneralParticleEmitter; /*var dir = obj.Orientation.To2D(); * var pos1 = obj.Position.To2D() - dir * 470; * var pos2 = obj.Position.To2D() + dir * 470; * * //Draw.RenderObjects.Add(new Draw.RenderLine(pos1, pos2, 3500)); * Draw.RenderObjects.Add(new Draw.RenderCircle(pos1, 3500));*/ var gateTracker = new ObjectTrackerInfo(obj, "AccelGate"); //gateTracker.Orientation = dir.To3D(); ObjectTracker.ObjTracker.Add(obj.NetworkId, gateTracker); foreach (var entry in SpellDetector.Spells) //check currently moving skillshot { var spell = entry.Value; if (spell.Info.SpellName == "JayceShockBlast") { var tHero = spell.HeroId; Vector2 int1, int2; var intersection = MathUtils.FindLineCircleIntersections(obj.Position.To2D(), 470, spell.StartPos, spell.EndPos, out int1, out int2); var projection = obj.Position.To2D().ProjectOn(spell.StartPos, spell.EndPos); //var intersection = spell.startPos.Intersection(spell.endPos, pos1, pos2); //var projection = intersection.Point.ProjectOn(spell.startPos, spell.endPos); //if (intersection.Intersects && projection.IsOnSegment) if (intersection > 0 && projection.IsOnSegment) { SpellDetector.CreateSpellData(hero, projection.SegmentPoint.To3D(), spell.EndPos.To3D(), spellData, spell.SpellObject); DelayAction.Add(1, () => SpellDetector.DeleteSpell(entry.Key)); break; } } } //SpellDetector.CreateSpellData(hero, pos1.To3D(), pos2.To3D(), spellData, null, 0); } }
public void LoadSpecialSpell(SpellData spellData) { if (spellData.SpellName == "AzirQWrapper") { var hero = GameObjects.Heroes.FirstOrDefault(h => h.ChampionName == "Azir"); if (hero == null || !hero.CheckTeam()) { return; } var info = new ObjectTrackerInfo(hero) { Name = "AzirQSoldier", OwnerNetworkId = hero.NetworkId }; ObjectTracker.ObjTracker.Add(hero.NetworkId, info); GameObject.OnCreate += OnCreateObj_AzirSoldier; GameObject.OnDestroy += OnDeleteObj_AzirSoldier; SpellDetector.OnProcessSpecialSpell += ProcessSpell_AzirSoldier; } }
public void LoadSpecialSpell(SpellData spellData) { if (spellData.SpellName == "OrianaIzunaCommand") { var hero = GameObjects.Heroes.FirstOrDefault(h => h.ChampionName == "Orianna"); if (hero != null && hero.CheckTeam()) { var info = new ObjectTrackerInfo(hero) { Name = "TheDoomBall", OwnerNetworkId = hero.NetworkId }; ObjectTracker.ObjTracker.Add(hero.NetworkId, info); GameObject.OnCreate += obj => OnCreateObj_OrianaIzunaCommand(obj, hero); //Obj_AI_Minion.OnDelete += (obj, args) => OnDeleteObj_OrianaIzunaCommand(obj, args, hero); Obj_AI_Base.OnProcessSpellCast += ProcessSpell_OrianaRedactCommand; SpellDetector.OnProcessSpecialSpell += ProcessSpell_OrianaIzunaCommand; BuffManager.OnAddBuff += Obj_AI_Base_OnBuffAdd; } } }
private static void OnCreateObj_jayceshockblast(GameObject obj, EventArgs args, AIHeroClient hero, SpellData spellData) { return; if (obj.IsEnemy && obj.Type == GameObjectType.obj_GeneralParticleEmitter && obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_start")) { var dir = ObjectTracker.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(); ObjectTracker.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); } }
public void LoadSpecialSpell(SpellData spellData) { if (spellData.spellName == "OrianaIzunaCommand") { Obj_AI_Hero hero = HeroManager.Enemies.FirstOrDefault(h => h.ChampionName == "Orianna"); if (hero == null) { return; } ObjectTrackerInfo info = new ObjectTrackerInfo(hero); info.Name = "TheDoomBall"; info.OwnerNetworkID = hero.NetworkId; ObjectTracker.objTracker.Add(hero.NetworkId, info); Obj_AI_Minion.OnCreate += (obj, args) => OnCreateObj_OrianaIzunaCommand(obj, args, hero); //Obj_AI_Minion.OnDelete += (obj, args) => OnDeleteObj_OrianaIzunaCommand(obj, args, hero); Obj_AI_Hero.OnProcessSpellCast += ProcessSpell_OrianaRedactCommand; SpellDetector.OnProcessSpecialSpell += ProcessSpell_OrianaIzunaCommand; } }
public void LoadSpecialSpell(SpellData spellData) { if (spellData.SpellName == "OrianaIzunaCommand") { AIHeroClient hero = EntityManager.Heroes.Enemies.FirstOrDefault(h => h.ChampionName == "Orianna"); if (hero == null) { return; } ObjectTrackerInfo info = new ObjectTrackerInfo(hero); info.Name = "TheDoomBall"; info.OwnerNetworkId = hero.NetworkId; ObjectTracker.ObjTracker.Add(hero.NetworkId, info); GameObject.OnCreate += (obj, args) => OnCreateObj_OrianaIzunaCommand(obj, args, hero); //Obj_AI_Minion.OnDelete += (obj, args) => OnDeleteObj_OrianaIzunaCommand(obj, args, hero); Obj_AI_Base.OnProcessSpellCast += ProcessSpell_OrianaRedactCommand; SpellDetector.OnProcessSpecialSpell += ProcessSpell_OrianaIzunaCommand; } }
private static void OnCreateObj_jayceshockblast(GameObject obj, EventArgs args, AIHeroClient hero, SpellData spellData) { return; if (obj.IsEnemy && obj.Type == GameObjectType.obj_GeneralParticleEmitter && obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_start")) { var dir = ObjectTracker.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(); ObjectTracker.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); } }
public void LoadSpecialSpell(SpellData spellData) { if (spellData.spellName == "AzirQWrapper") { var hero = HeroManager.Enemies.FirstOrDefault(h => h.ChampionName == "Azir"); if (hero == null) { return; } var info = new ObjectTrackerInfo(hero) { Name = "AzirQSoldier", OwnerNetworkID = hero.NetworkId }; ObjectTracker.objTracker.Add(hero.NetworkId, info); GameObject.OnCreate += (obj, args) => OnCreateObj_AzirSoldier(obj, args, hero); GameObject.OnDelete += (obj, args) => OnDeleteObj_AzirSoldier(obj, args, hero); SpellDetector.OnProcessSpecialSpell += ProcessSpell_AzirSoldier; } }
private static void SpellMissile_ZedShadowDash(GameObject obj, EventArgs args) { if (obj.GetType() != typeof(MissileClient) || !((MissileClient) obj).IsValidMissile()) return; MissileClient missile = (MissileClient)obj; if (missile.SpellCaster.IsEnemy && missile.SData.Name == "ZedWMissile") { if (!ObjectTracker.ObjTracker.ContainsKey(obj.NetworkId)) { ObjectTrackerInfo info = new ObjectTrackerInfo(obj); info.Name = "Shadow"; info.OwnerNetworkId = missile.SpellCaster.NetworkId; info.UsePosition = true; info.Position = missile.EndPosition; ObjectTracker.ObjTracker.Add(obj.NetworkId, info); DelayAction.Add(1000, () => ObjectTracker.ObjTracker.Remove(obj.NetworkId)); } } }
private static void OnCreateObj_jayceshockblast(GameObject obj, EventArgs args, Obj_AI_Hero hero, SpellData spellData) { if (obj.Type == GameObjectType.obj_GeneralParticleEmitter && obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_end") && obj.Name.Contains("RED")) { foreach (var tracker in ObjectTracker.objTracker) { var gateObj = tracker.Value; if (gateObj.Name == "AccelGate") { DelayAction.Add(0, () => ObjectTracker.objTracker.Remove(tracker.Key)); } } } if (obj.Type == GameObjectType.obj_GeneralParticleEmitter && obj.Name.Contains("Jayce") && obj.Name.Contains("accel_gate_start") && obj.Name.Contains("RED")) { //var particle = obj as Obj_GeneralParticleEmitter; /*var dir = obj.Orientation.To2D(); var pos1 = obj.Position.To2D() - dir * 470; var pos2 = obj.Position.To2D() + dir * 470; //Draw.RenderObjects.Add(new Draw.RenderLine(pos1, pos2, 3500)); Draw.RenderObjects.Add(new Draw.RenderCircle(pos1, 3500));*/ var gateTracker = new ObjectTrackerInfo(obj, "AccelGate"); //gateTracker.direction = dir.To3D(); ObjectTracker.objTracker.Add(obj.NetworkId, gateTracker); foreach (var entry in SpellDetector.spells) //check currently moving skillshot { var spell = entry.Value; if (spell.info.spellName == "jayceshockblast") { var tHero = spell.heroID; Vector2 int1, int2; var intersection = MathUtils.FindLineCircleIntersections(obj.Position.To2D(), 470, spell.startPos, spell.endPos, out int1, out int2); var projection = obj.Position.To2D().ProjectOn(spell.startPos, spell.endPos); //var intersection = spell.startPos.Intersection(spell.endPos, pos1, pos2); //var projection = intersection.Point.ProjectOn(spell.startPos, spell.endPos); //if (intersection.Intersects && projection.IsOnSegment) if (intersection > 0 && projection.IsOnSegment) { SpellDetector.CreateSpellData(hero, projection.SegmentPoint.To3D(), spell.endPos.To3D(), spellData, spell.spellObject); DelayAction.Add(1, () => SpellDetector.DeleteSpell(entry.Key)); break; } } } //SpellDetector.CreateSpellData(hero, pos1.To3D(), pos2.To3D(), spellData, null, 0); } }