public override void StartBuild(int frame) { base.StartBuild(frame); BuildOptions.StrictGasCount = true; BuildOptions.StrictSupplyCount = true; BuildOptions.StrictWorkerCount = true; MacroData.DesiredUnitCounts[UnitTypes.TERRAN_SCV] = 15; var desiredUnitsClaim = new DesiredUnitsClaim(UnitTypes.TERRAN_REAPER, 1); if (MicroTaskData.MicroTasks.ContainsKey("DefenseSquadTask")) { var defenseSquadTask = (DefenseSquadTask)MicroTaskData.MicroTasks["DefenseSquadTask"]; defenseSquadTask.DesiredUnitsClaims = new List <DesiredUnitsClaim> { desiredUnitsClaim }; defenseSquadTask.Enable(); if (MicroTaskData.MicroTasks.ContainsKey("AttackTask")) { MicroTaskData.MicroTasks["AttackTask"].ResetClaimedUnits(); } } MicroTaskData.MicroTasks["ReaperCheese"] = ProxyTask; var proxyLocation = ProxyLocationService.GetCliffProxyLocation(); MacroData.Proxies[ProxyTask.ProxyName] = new ProxyData(proxyLocation, MacroData); ProxyTask.Enable(); AttackData.CustomAttackFunction = true; AttackData.UseAttackDataManager = false; }
public override void StartBuild(int frame) { base.StartBuild(frame); BuildOptions.StrictGasCount = true; BuildOptions.StrictSupplyCount = true; BuildOptions.StrictWorkerCount = true; MacroData.DesiredUnitCounts[UnitTypes.PROTOSS_PROBE] = 23; ChronoData.ChronodUnits = new HashSet <UnitTypes> { UnitTypes.PROTOSS_PROBE, UnitTypes.PROTOSS_VOIDRAY, }; var desiredUnitsClaim = new DesiredUnitsClaim(UnitTypes.PROTOSS_STALKER, 1); if (MicroTaskData.MicroTasks.ContainsKey("DefenseSquadTask")) { var defenseSquadTask = (DefenseSquadTask)MicroTaskData.MicroTasks["DefenseSquadTask"]; defenseSquadTask.DesiredUnitsClaims = new List <DesiredUnitsClaim> { desiredUnitsClaim }; defenseSquadTask.Enable(); if (MicroTaskData.MicroTasks.ContainsKey("AttackTask")) { MicroTaskData.MicroTasks["AttackTask"].ResetClaimedUnits(); } } MicroTaskData.MicroTasks["ProxyVoidRay"] = ProxyTask; var proxyLocation = ProxyLocationService.GetCliffProxyLocation(); MacroData.Proxies[ProxyTask.ProxyName] = new ProxyData(proxyLocation, MacroData); AttackData.CustomAttackFunction = true; AttackData.UseAttackDataManager = false; }
private void SetLocations() { if (DefensiveLocation == null) { DefensiveLocation = ProxyLocationService.GetCliffProxyLocation(); TargetLocation = TargetingData.EnemyMainBasePoint; var angle = Math.Atan2(TargetLocation.Y - DefensiveLocation.Y, DefensiveLocation.X - TargetLocation.X); var x = -6 * Math.Cos(angle); var y = -6 * Math.Sin(angle); LoadingLocation = new Point2D { X = DefensiveLocation.X + (float)x, Y = DefensiveLocation.Y - (float)y }; LoadingLocationHeight = MapDataService.MapHeight(LoadingLocation); var loadingVector = new Vector2(LoadingLocation.X, LoadingLocation.Y); DropArea = AreaService.GetTargetArea(TargetLocation); var dropVector = DropArea.OrderBy(p => Vector2.DistanceSquared(new Vector2(p.X, p.Y), loadingVector)).First(); x = -2 * Math.Cos(angle); y = -2 * Math.Sin(angle); DropLocation = new Point2D { X = dropVector.X + (float)x, Y = dropVector.Y - (float)y }; DropLocationHeight = MapDataService.MapHeight(DropLocation); InsideBaseDistanceSquared = Vector2.DistanceSquared(new Vector2(LoadingLocation.X, LoadingLocation.Y), new Vector2(TargetLocation.X, TargetLocation.Y)); } DebugService.DrawSphere(new Point { X = LoadingLocation.X, Y = LoadingLocation.Y, Z = 12 }, 3, new Color { R = 0, G = 0, B = 255 }); DebugService.DrawSphere(new Point { X = DropLocation.X, Y = DropLocation.Y, Z = 12 }, 3, new Color { R = 0, G = 255, B = 0 }); }