Skip to content

Commit 9f93294

Browse files
committed
fixed not updating the techlevel properly when a new pawn joins
1 parent b79fc27 commit 9f93294

3 files changed

Lines changed: 11 additions & 3 deletions

File tree

Main.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,7 @@ public static class Event
208208
)
209209
{
210210
Find.LetterStack.ReceiveLetter("newTechLevelMedievalCapRemLetterTitle".Translate(), "newTechLevelMedievalCapRemLetterContents".Translate(_ResearchManager.isTribe ? "configTribe".Translate() : "configColony".Translate()), LetterDefOf.Good);
211+
TechAdvancing._ResearchManager.RecalculateTechlevel(false);
211212
}
212213
}
213214
else

Rules.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ internal static TechLevel GetNewTechLevel()
2323
{
2424
if (TechAdvancing_Config_Tab.b_configCheckboxNeedTechColonists)
2525
{
26-
return (TechLevel)(Math.Min((int)GetRuleTechlevel(), (int)TechAdvancing_Config_Tab.maxTechLevelForTribals));
26+
return (TechLevel)(Math.Min((int)GetRuleTechlevel(), (int)GetLowTechTL()));
2727
}
2828
return GetRuleTechlevel();
2929
}
@@ -44,7 +44,14 @@ internal static TechLevel GetRuleTechlevel()
4444
/// <returns></returns>
4545
internal static TechLevel GetLowTechTL()
4646
{
47-
return TechAdvancing_Config_Tab.b_configCheckboxNeedTechColonists ? TechAdvancing_Config_Tab.maxTechLevelForTribals : TechLevel.Transcendent;
47+
if (!TechAdvancing_Config_Tab.b_configCheckboxNeedTechColonists) // if the limit is not enabled at all
48+
{
49+
return TechLevel.Transcendent;
50+
}
51+
else
52+
{
53+
return (TechAdvancing.MapCompSaveHandler.ColonyPeople.Any(x => x.Value?.def?.techLevel >= TechLevel.Industrial)) ? TechLevel.Transcendent : TechAdvancing_Config_Tab.maxTechLevelForTribals;
54+
}
4855
}
4956

5057
internal static TechLevel RuleA()

Util.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ internal static bool ColonyHasHiTechPeople()
7272
//}
7373
// LogOutput.writeLogMessage(Errorlevel.Warning,"done");
7474

75-
return RimWorld.PawnsFinder.AllMaps_FreeColonists.Any(x => hightechkinds.Contains(x.kindDef.defName.ToLowerInvariant()) || ((int?)((MapCompSaveHandler.ColonyPeople?.ContainsKey(x) == true) ? MapCompSaveHandler.ColonyPeople[x] : null)?.def?.techLevel ?? -1) >= (int)TechLevel.Industrial);
75+
return MapCompSaveHandler.ColonyPeople.Any(x => x.Value?.def?.techLevel >= TechLevel.Industrial) || RimWorld.PawnsFinder.AllMaps_FreeColonists.Any(x => hightechkinds.Contains(x.kindDef.defName.ToLowerInvariant()));
7676
}
7777

7878
internal static TechLevel GetHighestTechlevel(params TechLevel[] t)

0 commit comments

Comments
 (0)