Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
40 lines
2.2 KiB
Diff
40 lines
2.2 KiB
Diff
--- a/addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c
|
|
+++ b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c
|
|
@@ -1318,7 +1318,7 @@
|
|
if (vehicle.Released || vehicle.Arrived || vehicle.SupplyToken > 0 || !vehicle.Registered || !vehicle.Group) continue;
|
|
foreach (ERR_HQUnit unit : m_Units)
|
|
{
|
|
- if (unit.Group != vehicle.Group || !unit.ReservedForSupport || unit.Downlink || !unit.Radio) continue;
|
|
+ if (unit.Group != vehicle.Group || !unit.ReservedForSupport || unit.LogisticsReservation > 0 || unit.Downlink || !unit.Radio) continue;
|
|
if (!ConvoyPositionKnown(unit, now)) break;
|
|
ERR_HQReport contact = ConvoyContact(unit, now);
|
|
if (contact)
|
|
@@ -1523,6 +1523,7 @@
|
|
m_Hunters.Tick(now);
|
|
m_ObjectiveDefence.Tick(now);
|
|
m_Towns.Tick(now);
|
|
+ TickMountedIntercept(now);
|
|
m_Convoys.Tick(now);
|
|
AutomaticConvoy(now);
|
|
m_Bodies.TickBudget(now);
|
|
@@ -1565,7 +1566,7 @@
|
|
if (!unit.Group && !unit.Uplink) { ReleaseLostForce(unit, now); m_Units.Remove(i); continue; }
|
|
QueueReports(unit, now);
|
|
}
|
|
- if (now >= m_NextAssignment) { PlanConvoy(now); PlanResupply(now); Assign(now); m_NextAssignment = now + 5000; }
|
|
+ if (now >= m_NextAssignment) { PlanConvoy(now); PlanResupply(now); PlanMountedIntercept(now); Assign(now); m_NextAssignment = now + 5000; }
|
|
MaintainEngineerMines(now);
|
|
m_Resupply.Tick(now);
|
|
m_Logistics.Tick(now);
|
|
--- a/tests/test_hq_convoy_combat.py
|
|
+++ b/tests/test_hq_convoy_combat.py
|
|
@@ -49,7 +49,7 @@
|
|
int calls=0;bool valid=true;ERR_ConvoyCombatOrder* last=nullptr;
|
|
bool ApplyCombatOrder(ERR_ConvoyTask* task,ERR_ConvoyCombatOrder* o,float){calls++;last=o;if(!task||!valid)return false;
|
|
auto s=task->Vehicles.at(o->VehicleIndex)->Combat;s->Held=o->Hold;s->LastCommandId=o->CommandId;s->ReportId=o->ReportId;s->ObservedAt=o->ObservedAt;return true;}};
|
|
-struct ERR_HQUnit {SCR_AIGroup* Group=nullptr;bool ReservedForSupport=true;void* Radio=this;string ForceSourceId="vehicle-0";
|
|
+struct ERR_HQUnit {int LogisticsReservation=0;SCR_AIGroup* Group=nullptr;bool ReservedForSupport=true;void* Radio=this;string ForceSourceId="vehicle-0";
|
|
ERR_HQRoute* Downlink=nullptr;ERR_ConvoyCombatOrder* PendingConvoyOrder=nullptr;void* PendingOrder=nullptr;void* PendingTask=nullptr;
|
|
bool PendingCheckin=false;float NextStatus=0;
|
|
'''+cancel+r'''
|