Skip to content

Commit

Permalink
Fix libcampaign truck building orders after 814435a
Browse files Browse the repository at this point in the history
  • Loading branch information
KJeff01 committed Aug 15, 2023
1 parent 65e9e26 commit 631e606
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions data/base/script/campaign/libcampaign_includes/truck.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ function __camEnumFreeTrucks(player)
return droids;
}

function __camGetClosestTruck(player, pos)
function __camGetClosestTruck(player, pos, list)
{
const droids = __camEnumFreeTrucks(player);
const droids = (camDef(list) && list !== null) ? list : __camEnumFreeTrucks(player);
if (droids.length <= 0)
{
return undefined;
Expand Down Expand Up @@ -88,6 +88,7 @@ function __camTruckTick()
{
const ti = __camTruckInfo[playerObj];
const __PLAYER = ti.player;
let freeTrucks = __camEnumFreeTrucks(__PLAYER);
let truck;

// First, build things that were explicitly ordered.
Expand All @@ -101,7 +102,7 @@ function __camTruckTick()
if (camDef(pos))
{
// Find the truck most suitable for the job.
truck = __camGetClosestTruck(__PLAYER, pos);
truck = __camGetClosestTruck(__PLAYER, pos, freeTrucks);
if (!camDef(truck))
{
break;
Expand All @@ -110,12 +111,11 @@ function __camTruckTick()
else
{
// Build near any truck if pos was not specified.
const droids = __camEnumFreeTrucks(__PLAYER);
if (droids.length <= 0)
if (freeTrucks.length <= 0)
{
break;
}
truck = droids[0];
truck = freeTrucks[0];
pos = truck;
randx = (camRand(100) < 50) ? -camRand(2) : camRand(2);
randy = (camRand(100) < 50) ? -camRand(2) : camRand(2);
Expand All @@ -127,6 +127,7 @@ function __camTruckTick()
{
if (orderDroidBuild(truck, DORDER_BUILD, __QI.stat, loc.x + randx, loc.y + randy))
{
freeTrucks = freeTrucks.filter((tr) => (tr.id !== truck.id));
ti.queue.shift(); // consider it handled
}
}
Expand All @@ -139,7 +140,7 @@ function __camTruckTick()
continue;
}
const oil = oils[0];
truck = __camGetClosestTruck(__PLAYER, oil);
truck = __camGetClosestTruck(__PLAYER, oil, freeTrucks);
if (camDef(truck) && __PLAYER !== CAM_NEXUS)
{
enableStructure("A0ResourceExtractor", __PLAYER);
Expand Down

0 comments on commit 631e606

Please sign in to comment.