Require physical ammo access and prove finite native infantry transfer

This commit is contained in:
2026-09-20 09:22:52 +02:00
parent 5bd66d76ca
commit d8ec0de765
76 changed files with 14320 additions and 8 deletions
+24 -1
View File
@@ -19,6 +19,8 @@ modded class ERR_GameMode
protected bool m_ERRTestHQMemory;
protected bool m_ERRTestHQBody;
protected ref ERR_NativeHQBodyProbe m_ERRHQBodyProbe;
protected bool m_ERRTestInfantryTransfer;
protected ref ERR_NativeInfantryTransferProbe m_ERRInfantryTransfer;
protected bool m_ERRTestConvoy;
protected ref ERR_NativeConvoyProbe m_ERRConvoyProbe;
protected ref ERR_NativeHQMemoryProbe m_ERRHQMemoryProbe;
@@ -62,6 +64,7 @@ modded class ERR_GameMode
m_ERRTestHQResponse = outcome == "hq-response";
m_ERRTestHQMemory = outcome == "hq-memory";
m_ERRTestHQBody = outcome == "hq-body";
m_ERRTestInfantryTransfer = outcome == "infantry-transfer";
m_ERRTestConvoy = outcome == "convoy";
m_ERRTestMortar = outcome == "mortar-inventory";
m_ERRTestMapOwnership = outcome == "map-ownership";
@@ -75,11 +78,12 @@ modded class ERR_GameMode
m_ERRTestMortarSalvo = outcome == "mortar-salvo" || outcome == "mortar-refresh";
m_ERRTestMortarTransfer = outcome == "mortar-transfer";
m_ERRTestPatrolHQ = outcome == "patrol-hq";
m_ERRTestPlayerDeath = outcome == "player-death" || m_ERRTestRadioNetwork || m_ERRTestHQResponse || m_ERRTestMortar || m_ERRTestHQMemory || m_ERRTestHQBody || m_ERRTestConvoy;
m_ERRTestPlayerDeath = outcome == "player-death" || m_ERRTestRadioNetwork || m_ERRTestHQResponse || m_ERRTestMortar || m_ERRTestHQMemory || m_ERRTestHQBody || m_ERRTestConvoy || m_ERRTestInfantryTransfer;
m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 150000;
if (m_ERRTestConvoy) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 540000;
if (ERR_NativeConvoyCoverProbe.Enabled()) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 840000;
if (m_ERRTestHQMemory) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 360000;
if (m_ERRTestInfantryTransfer) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 300000;
if (m_ERRTestHQBody) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 240000;
if (m_ERRTestAircraftControl || m_ERRTestAircraftRoute || m_ERRTestAircraftField) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 330000;
if (m_ERRTestMortarCourier) m_ERRSmokeDeadline = GetWorld().GetWorldTime() + 450000;
@@ -513,6 +517,13 @@ modded class ERR_GameMode
m_ERRSmokeStep = 110;
return;
}
if (m_ERRTestInfantryTransfer)
{
DamageManagerComponent.Cast(m_ERRSmokePlayer.FindComponent(DamageManagerComponent)).EnableDamageHandling(false);
m_ERRInfantryTransfer = new ERR_NativeInfantryTransferProbe(this);
OnStop().Insert(m_ERRInfantryTransfer.Stop);
m_ERRSmokeStep = 108; return;
}
if (m_ERRTestConvoy)
{
DamageManagerComponent.Cast(m_ERRSmokePlayer.FindComponent(DamageManagerComponent)).EnableDamageHandling(false);
@@ -707,6 +718,18 @@ modded class ERR_GameMode
damage.Kill(Instigator.CreateInstigator(m_ERRSmokePlayer));
m_ERRSmokeWait = now + 4000;
}
else if (m_ERRSmokeStep == 108)
{
int result = m_ERRInfantryTransfer.Tick(ERR_HQ.Cast(Command()), now);
if (result == 0) return;
m_ERRInfantryTransfer.Stop();
if (!ERR_Check(result == 1, "native exact infantry magazine transfer; controlled positioning only")) return;
m_ERRSmokeStep = 9;
SCR_CharacterDamageManagerComponent damage;
damage = SCR_CharacterDamageManagerComponent.Cast(m_ERRSmokePlayer.FindComponent(SCR_CharacterDamageManagerComponent));
damage.EnableDamageHandling(true); damage.Kill(Instigator.CreateInstigator(m_ERRSmokePlayer));
m_ERRSmokeWait = now + 4000;
}
else if (m_ERRSmokeStep == 107)
{
int result = m_ERRHQBodyProbe.Tick(ERR_HQ.Cast(Command()), now);