1
0
mirror of https://github.com/soarqin/DSP_Mods.git synced 2025-12-11 06:43:29 +08:00

ProtectVeinsFromExhaustion: fix #52

This commit is contained in:
2024-11-26 17:09:28 +08:00
parent d7062f3318
commit 99a6708d3f

View File

@@ -974,7 +974,7 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
return false; return false;
} }
var consumeCount = 0U; var res = 0U;
int veinId; int veinId;
int times; int times;
switch (__instance.type) switch (__instance.type)
@@ -986,7 +986,7 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
if (__instance.time <= __instance.period) if (__instance.time <= __instance.period)
{ {
__instance.time += (int)(power * __instance.speedDamper * __instance.speed * miningSpeed * __instance.veinCount); __instance.time += (int)(power * __instance.speedDamper * __instance.speed * miningSpeed * __instance.veinCount);
consumeCount = 1U; res = 1U;
} }
if (__instance.time < __instance.period) if (__instance.time < __instance.period)
@@ -1120,15 +1120,18 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
if (__instance.time < __instance.period) if (__instance.time < __instance.period)
{ {
__instance.time += (int)(power * __instance.speedDamper * __instance.speed * miningSpeed * workCount + 0.5f); __instance.time += (int)(power * __instance.speedDamper * __instance.speed * miningSpeed * workCount + 0.5f);
consumeCount = 1U; res = 1U;
} }
if (__instance.time >= __instance.period && __instance.productCount < 50) if (__instance.time >= __instance.period && __instance.productCount < 50)
{ {
__instance.productId = veinPool[veinId].productId; __instance.productId = veinPool[veinId].productId;
times = __instance.time / __instance.period; times = __instance.time / __instance.period;
if (times <= 0) break;
var outputCount = 0; var outputCount = 0;
if (miningRate > 0f && amount > _keepOilAmount) if (miningRate > 0f)
{
if (amount > _keepOilAmount)
{ {
var usedCount = 0; var usedCount = 0;
var maxAllowed = amount - _keepOilAmount; var maxAllowed = amount - _keepOilAmount;
@@ -1161,9 +1164,16 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
{ {
outputCount = times; outputCount = times;
} }
else
if (outputCount > 0)
{ {
break;
}
}
else
{
outputCount = times;
}
__instance.productCount += outputCount; __instance.productCount += outputCount;
lock (productRegister) lock (productRegister)
{ {
@@ -1173,7 +1183,6 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
__instance.time -= __instance.period * outputCount; __instance.time -= __instance.period * outputCount;
} }
} }
}
break; break;
@@ -1181,7 +1190,7 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
if (__instance.time < __instance.period) if (__instance.time < __instance.period)
{ {
__instance.time += (int)(power * __instance.speedDamper * __instance.speed * miningSpeed); __instance.time += (int)(power * __instance.speedDamper * __instance.speed * miningSpeed);
consumeCount = 1U; res = 1U;
} }
if (__instance.time < __instance.period) break; if (__instance.time < __instance.period) break;
@@ -1230,7 +1239,7 @@ public class FactoryPatch : PatchImpl<FactoryPatch>
} }
} }
__result = consumeCount; __result = res;
return false; return false;
} }
} }