fix refinery production
This commit is contained in:
@@ -506,7 +506,7 @@ namespace OpenRA.Mods.RA.AI
|
|||||||
Actor leader = owner.units.ClosestTo(owner.Target.CenterLocation);
|
Actor leader = owner.units.ClosestTo(owner.Target.CenterLocation);
|
||||||
if (leader == null)
|
if (leader == null)
|
||||||
return;
|
return;
|
||||||
var ownUnits = owner.world.FindUnitsInCircle(leader.CenterLocation, Game.CellSize * 8)
|
var ownUnits = owner.world.FindUnitsInCircle(leader.CenterLocation, Game.CellSize * owner.units.Count/3)
|
||||||
.Where(a => a.Owner == owner.units.FirstOrDefault().Owner && owner.units.Contains(a)).ToList();
|
.Where(a => a.Owner == owner.units.FirstOrDefault().Owner && owner.units.Contains(a)).ToList();
|
||||||
if (ownUnits.Count < owner.units.Count)
|
if (ownUnits.Count < owner.units.Count)
|
||||||
{
|
{
|
||||||
@@ -613,7 +613,7 @@ namespace OpenRA.Mods.RA.AI
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
foreach (var a in owner.units)
|
foreach (var a in owner.units)
|
||||||
owner.world.IssueOrder(new Order("Attack", a, false) { TargetActor = owner.Target });
|
owner.world.IssueOrder(new Order("AttackMove", a, false) { TargetLocation = owner.Target.Location });
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Exit(Squad owner) { }
|
public void Exit(Squad owner) { }
|
||||||
@@ -867,10 +867,10 @@ namespace OpenRA.Mods.RA.AI
|
|||||||
return enemyBase != null ? findPos(enemyBase.CenterLocation, defenseCenter) : null;
|
return enemyBase != null ? findPos(enemyBase.CenterLocation, defenseCenter) : null;
|
||||||
|
|
||||||
case BuildingType.Refinery:
|
case BuildingType.Refinery:
|
||||||
var pos = world.FindTilesInCircle(baseCenter, MaxBaseDistance)
|
var tilesPos = world.FindTilesInCircle(baseCenter, MaxBaseDistance)
|
||||||
.Where(a => resourceTypes.Contains(world.GetTerrainType(new CPos(a.X, a.Y))))
|
.Where(a => resourceTypes.Contains(world.GetTerrainType(new CPos(a.X, a.Y))))
|
||||||
.OrderBy(a => (new PPos(a.ToPPos().X, a.ToPPos().Y) - baseCenter.ToPPos()).LengthSquared).First();
|
.OrderBy(a => (new PPos(a.ToPPos().X, a.ToPPos().Y) - baseCenter.ToPPos()).LengthSquared);
|
||||||
return findPos(pos.ToPPos(), baseCenter);
|
return tilesPos.Any() ? findPos(tilesPos.First().ToPPos(), baseCenter) : null;
|
||||||
|
|
||||||
case BuildingType.Building:
|
case BuildingType.Building:
|
||||||
for (var k = 0; k < maxBaseDistance; k++)
|
for (var k = 0; k < maxBaseDistance; k++)
|
||||||
|
|||||||
Reference in New Issue
Block a user