This commit is contained in:
2025-12-14 01:22:07 +01:00
parent 414ab90afc
commit 1119333dfb
3 changed files with 30 additions and 47 deletions

48
Main.cs
View File

@@ -290,26 +290,6 @@ namespace KCM
{
helper?.Log("VillagerSystem.enabled = " + VillagerSystem.inst.enabled);
}
// Force transition to PlayingMode to enable villager movement
try
{
if (GameState.inst != null)
{
helper?.Log("RunPostLoadRebuild: Current GameState mode: " + TryGetGameModeName());
if (GameState.inst.playingMode != null)
{
helper?.Log("RunPostLoadRebuild: Setting PlayingMode");
GameState.inst.SetNewMode(GameState.inst.playingMode);
helper?.Log("RunPostLoadRebuild: PlayingMode set successfully");
}
}
}
catch (Exception ex)
{
helper?.Log("RunPostLoadRebuild: Failed to set PlayingMode");
helper?.Log(ex.ToString());
}
}
catch (Exception e)
{
@@ -499,6 +479,22 @@ namespace KCM
{
lastVillagerProbeMs = now;
// Proactively check and fix loadTickDelay every 2 seconds
int villagerDelay = GetLoadTickDelayOrMinusOne(VillagerSystem.inst);
int unitDelay = GetLoadTickDelayOrMinusOne(UnitSystem.inst);
int jobDelay = GetLoadTickDelayOrMinusOne(JobSystem.inst);
int playerDelay = GetLoadTickDelayOrMinusOne(Player.inst);
if (villagerDelay <= 0 || unitDelay <= 0 || jobDelay <= 0 || playerDelay <= 0)
{
Main.helper.Log("LoadTickDelay refresh: delays were " +
playerDelay + "/" + unitDelay + "/" + jobDelay + "/" + villagerDelay + ", resetting to 1");
SetLoadTickDelay(Player.inst, 1);
SetLoadTickDelay(UnitSystem.inst, 1);
SetLoadTickDelay(JobSystem.inst, 1);
SetLoadTickDelay(VillagerSystem.inst, 1);
}
Villager v = null;
try
{
@@ -548,11 +544,15 @@ namespace KCM
GetLoadTickDelayOrMinusOne(VillagerSystem.inst));
// Try to fix stalled systems by resetting loadTickDelay
if (GetLoadTickDelayOrMinusOne(VillagerSystem.inst) == -1 ||
GetLoadTickDelayOrMinusOne(UnitSystem.inst) == -1 ||
GetLoadTickDelayOrMinusOne(JobSystem.inst) == -1)
int villagerDelay = GetLoadTickDelayOrMinusOne(VillagerSystem.inst);
int unitDelay = GetLoadTickDelayOrMinusOne(UnitSystem.inst);
int jobDelay = GetLoadTickDelayOrMinusOne(JobSystem.inst);
int playerDelay = GetLoadTickDelayOrMinusOne(Player.inst);
if (villagerDelay <= 0 || unitDelay <= 0 || jobDelay <= 0 || playerDelay <= 0)
{
Main.helper.Log("VillagerStallDetect: Attempting to fix stalled systems");
Main.helper.Log("VillagerStallDetect: Attempting to fix stalled systems (delays: " +
playerDelay + "/" + unitDelay + "/" + jobDelay + "/" + villagerDelay + ")");
SetLoadTickDelay(Player.inst, 1);
SetLoadTickDelay(UnitSystem.inst, 1);
SetLoadTickDelay(JobSystem.inst, 1);