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

View File

@@ -332,19 +332,6 @@ namespace KCM.LoadSaveOverrides
Main.helper.Log($"Setting kingdom name to: {kingdomNames[Main.PlayerSteamID]}");
TownNameUI.inst.SetTownName(kingdomNames[Main.PlayerSteamID]);
// Force transition to PlayingMode to enable villager movement
try
{
Main.helper.Log("MultiplayerSaveContainer.Unpack: Setting PlayingMode");
GameState.inst.SetNewMode(GameState.inst.playingMode);
Main.helper.Log("MultiplayerSaveContainer.Unpack: PlayingMode set successfully");
}
catch (Exception e)
{
Main.helper.Log("MultiplayerSaveContainer.Unpack: Failed to set PlayingMode");
Main.helper.Log(e.ToString());
}
return obj;
}
}

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);

View File

@@ -577,18 +577,14 @@ namespace KCM.StateManagement.Sync
private static void BroadcastVillagerSnapshot()
{
// TEMPORARILY DISABLED: VillagerSnapshot causes packet overflow errors
// TODO: Fix villager synchronization properly
return;
if (!KCServer.IsRunning)
return;
// if (!KCServer.IsRunning)
// return;
if (KCServer.server.ClientCount == 0)
return;
// if (KCServer.server.ClientCount == 0)
// return;
// if (Villager.villagers == null || Villager.villagers.Count == 0)
// return;
if (Villager.villagers == null || Villager.villagers.Count == 0)
return;
List<Guid> guids = new List<Guid>();
List<Vector3> positions = new List<Vector3>();