private static void ObjSpellMissileOnOnCreate(GameObject sender, EventArgs args) { if (!(sender is Obj_SpellMissile)) { return; } var missile = (Obj_SpellMissile)sender; if (!missile.SpellCaster.IsAlly) { if (missile.SData.Name == "itemplacementmissile" && !missile.SpellCaster.IsVisible) { var sPos = missile.StartPosition; var ePos = missile.EndPosition; Utility.DelayAction.Add( 1000, delegate { if ( !DetectedWards.Any( w => w.Position.To2D().Distance(sPos.To2D(), ePos.To2D(), false, false) < 300 && Math.Abs(w.StartT - Environment.TickCount) < 2000)) { var detectedWard = new DetectedWard( PosibleWards[3], new Vector3(ePos.X, ePos.Y, NavMesh.GetHeightForPosition(ePos.X, ePos.Y)), Environment.TickCount, null, true); detectedWard.StartPosition = new Vector3( sPos.X, sPos.Y, NavMesh.GetHeightForPosition(sPos.X, sPos.Y)); DetectedWards.Add(detectedWard); } }); } } }
private static void GameObject_OnCreate(GameObject sender, EventArgs args) { if (!(sender is MissileClient)) { return; } var missile = (MissileClient) sender; if (sender.IsAlly) return; if (missile.SData.Name != "itemplacementmissile" || missile.SpellCaster.IsVisible) return; var sPos = missile.StartPosition; var ePos = missile.EndPosition; Utility.DelayAction.Add( 1000, delegate { if ( !DetectedWards.Any( w => w.Position.To2D().Distance(sPos.To2D(), ePos.To2D(), false) < 300 && Math.Abs(w.StartT - Environment.TickCount) < 2000)) { var detectedWard = new DetectedWard( PosibleWards[3], new Vector3(ePos.X, ePos.Y, NavMesh.GetHeightForPosition(ePos.X, ePos.Y)), Environment.TickCount, null, true) { StartPosition = new Vector3( sPos.X, sPos.Y, NavMesh.GetHeightForPosition(sPos.X, sPos.Y)) }; DetectedWards.Add(detectedWard); } }); }