Include the current addon, terrain integrations, tools, regression tests and recorded development evidence.
31 lines
1.9 KiB
Diff
31 lines
1.9 KiB
Diff
--- a/addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c
|
|
+++ b/addons/core/Scripts/Game/ERR/10_AI/ERR_HQ.c
|
|
@@ -628,7 +628,7 @@
|
|
// Logistics owners retain their exact tokens until their own submitted
|
|
// inventory operations settle. Removing that quarantine here is unsafe.
|
|
if (unit.PendingConvoyOrder) unit.CancelPending();
|
|
- ReleaseRecovery(group);
|
|
+ unit.ReservedForSupport = false;
|
|
return true;
|
|
}
|
|
return false;
|
|
--- a/tests/test_convoy_survivors.py
|
|
+++ b/tests/test_convoy_survivors.py
|
|
@@ -24,7 +24,6 @@
|
|
# On the baseline the new helper is absent and never called; execute the old
|
|
# release methods unchanged so the red control fails a gameplay assertion.
|
|
retain=translate(body(hq,'bool ReleaseConvoySurvivors(')) if 'bool ReleaseConvoySurvivors(' in hq.read_text() else 'bool ReleaseConvoySurvivors(SCR_AIGroup*){return false;}'
|
|
-recovery=translate(body(ROOT/'addons/core/Scripts/Game/ERR/10_AI/ERR_BodyRecovery.c','void ReleaseRecovery('))
|
|
claims=translate(body(hq,'void ReleaseLogistics('))
|
|
eligible=translate(body(hq,'bool Eligible(ERR_GameMode mode)')).replace('bool survivor;','bool survivor=false;')
|
|
vehicle=translate(body(ai/'ERR_ConvoyService.c','void Release(ERR_GameMode mode)'))
|
|
@@ -54,7 +53,7 @@
|
|
};
|
|
struct ERR_HQ{bool m_Stopping=false;ERR_GameMode*m_Mode=nullptr;Array<ERR_HQUnit*>m_Units;int unregistrations=0,registrations=0,equipmentStops=0;
|
|
void UnregisterGroup(SCR_AIGroup*g){unregistrations++;equipmentStops++;for(auto u:m_Units)if(u->Group==g){u->Group=nullptr;u->Utility=nullptr;u->reports=false;}}
|
|
-'''+recovery+claims+retain+r'''
|
|
+'''+claims+retain+r'''
|
|
};
|
|
struct VehicleOwner{bool Released=false,Registered=true;void*InterceptOrder=nullptr;SCR_AIGroup*Group=nullptr;void*Entity=this;struct{bool Held=true;}Combat;int SupplyToken=101;bool SupplyHeld=true;int clears=0,intercepts=0;
|
|
void ClearIntercept(void*){intercepts++;}void ClearOrder(){clears++;}
|