diff --git a/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/Assemblies/WulaFallenEmpire.dll index 089ff34c..2a0f4132 100644 Binary files a/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/Assemblies/WulaFallenEmpire.dll differ diff --git a/1.6/Assemblies/WulaFallenEmpire.pdb b/1.6/Assemblies/WulaFallenEmpire.pdb index 4b3b205b..eda750d4 100644 Binary files a/1.6/Assemblies/WulaFallenEmpire.pdb and b/1.6/Assemblies/WulaFallenEmpire.pdb differ diff --git a/1.6/Defs/BackstoryDefs/Solid/Solid_Child_WULA.xml b/1.6/Defs/BackstoryDefs/Solid/Solid_Child_WULA.xml index 63353813..6cad7ed9 100644 --- a/1.6/Defs/BackstoryDefs/Solid/Solid_Child_WULA.xml +++ b/1.6/Defs/BackstoryDefs/Solid/Solid_Child_WULA.xml @@ -22,7 +22,7 @@ 5 -
  • Wula_Old_Synth_Backstory_Categories
  • +
  • Wula_Backstory_Categories
  • None diff --git a/1.6/Defs/HediffDefs/Hediffs_BodyParts_WULA.xml b/1.6/Defs/HediffDefs/Hediffs_BodyParts_WULA.xml index bb8df85e..48264757 100644 --- a/1.6/Defs/HediffDefs/Hediffs_BodyParts_WULA.xml +++ b/1.6/Defs/HediffDefs/Hediffs_BodyParts_WULA.xml @@ -978,4 +978,4 @@ - \ No newline at end of file + diff --git a/1.6/Defs/HediffDefs/Implants_RegenerateBackstory.xml b/1.6/Defs/HediffDefs/Implants_RegenerateBackstory.xml index e86c7f1f..3a808094 100644 --- a/1.6/Defs/HediffDefs/Implants_RegenerateBackstory.xml +++ b/1.6/Defs/HediffDefs/Implants_RegenerateBackstory.xml @@ -1,7 +1,7 @@ - + diff --git a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo index 8ae1430b..d0b6ec45 100644 Binary files a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo and b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/.suo differ diff --git a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json index a422ec69..eebf570d 100644 --- a/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json +++ b/Source/WulaFallenEmpire/.vs/WulaFallenEmpire/v17/DocumentLayout.json @@ -3,20 +3,20 @@ "WorkspaceRootPath": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\", "Documents": [ { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\mechanitorpatch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:mechanitorpatch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\wulafallenempiremod.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:wulafallenempiremod.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\hediffcomp_regeneratebackstory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:hediffcomp_regeneratebackstory.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, - { - "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\wulafallenempiremod.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:wulafallenempiremod.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, { "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\building_wula_darkenergy_engine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:building_wula_darkenergy_engine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|c:\\steam\\steamapps\\common\\rimworld\\mods\\3516260226\\source\\wulafallenempire\\mechanitorpatch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{F5AE8C3B-0221-4C16-A128-9A62D521A8FF}|WulaFallenEmpire.csproj|solutionrelative:mechanitorpatch.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -26,7 +26,7 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 3, + "SelectedChildIndex": 2, "Children": [ { "$type": "Bookmark", @@ -40,46 +40,49 @@ "RelativeDocumentMoniker": "HediffComp_RegenerateBackstory.cs", "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\HediffComp_RegenerateBackstory.cs", "RelativeToolTip": "HediffComp_RegenerateBackstory.cs", - "ViewState": "AQIAAB4AAAAAAAAAAAAIwHIAAAABAAAA", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAHIAAAABAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-18T11:23:19.064Z" + "WhenOpened": "2025-07-18T11:23:19.064Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 0, "Title": "WulaFallenEmpireMod.cs", "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\WulaFallenEmpireMod.cs", "RelativeDocumentMoniker": "WulaFallenEmpireMod.cs", "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\WulaFallenEmpireMod.cs", "RelativeToolTip": "WulaFallenEmpireMod.cs", - "ViewState": "AQIAAAAAAAAAAAAAAADwvxQAAAAAAAAA", + "ViewState": "AQIAAAAAAAAAAAAAAAAAABQAAAAAAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-18T10:23:17.898Z" + "WhenOpened": "2025-07-18T10:23:17.898Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 0, + "DocumentIndex": 3, "Title": "MechanitorPatch.cs", "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\MechanitorPatch.cs", "RelativeDocumentMoniker": "MechanitorPatch.cs", "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\MechanitorPatch.cs", "RelativeToolTip": "MechanitorPatch.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAABQAAAAsAAAA", + "ViewState": "AQIAAAAAAAAAAAAAAAAAACEAAAAJAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-07-18T10:20:31.368Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 3, + "DocumentIndex": 2, "Title": "Building_Wula_DarkEnergy_Engine.cs", "DocumentMoniker": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Building_Wula_DarkEnergy_Engine.cs", "RelativeDocumentMoniker": "Building_Wula_DarkEnergy_Engine.cs", "ToolTip": "C:\\Steam\\steamapps\\common\\RimWorld\\Mods\\3516260226\\Source\\WulaFallenEmpire\\Building_Wula_DarkEnergy_Engine.cs", "RelativeToolTip": "Building_Wula_DarkEnergy_Engine.cs", - "ViewState": "AQIAAAYAAAAAAAAAAADwvwAAAAAAAAAA", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-07-14T12:24:18.86Z" + "WhenOpened": "2025-07-14T12:24:18.86Z", + "EditorCaption": "" } ] } diff --git a/Source/WulaFallenEmpire/MechanitorPatch.cs b/Source/WulaFallenEmpire/MechanitorPatch.cs index 97a4ab84..6572ec37 100644 --- a/Source/WulaFallenEmpire/MechanitorPatch.cs +++ b/Source/WulaFallenEmpire/MechanitorPatch.cs @@ -5,37 +5,51 @@ using RimWorld; using Verse; using HarmonyLib; // 引入Harmony库 -// 定义一个新的HediffComp,用于标记可以赋予机械师能力的Hediff -public class HediffComp_MakesMechanitor : HediffComp +namespace WulaFallenEmpire { - // 这个组件本身不需要任何特殊逻辑,它的存在就是标记 -} - -// Harmony Patch类,用于修改MechanitorUtility.ShouldBeMechanitor方法 -[HarmonyPatch(typeof(MechanitorUtility), "ShouldBeMechanitor")] -public static class MechanitorShouldBeMechanitorPatch -{ - // Postfix方法将在原始方法执行后运行 - // originalResult 是原始方法的返回值 - // pawn 是原始方法的参数 - public static void Postfix(Pawn pawn, ref bool __result) + // 定义一个新的HediffCompProperties,用作标记,以赋予机械师能力 + public class HediffCompProperties_MakesMechanitor : HediffCompProperties { - // 如果原始方法已经返回true,则无需进一步检查 - if (__result) + // 这个类本身不需要任何逻辑,它的存在就是为了在XML中被引用作为标记 + public HediffCompProperties_MakesMechanitor() { - return; + // compClass必须指向一个有效的HediffComp类。 + // 由于我们只想用这个Properties作为标记,我们可以指向一个通用的、空的HediffComp。 + // 但更简洁的方法是直接在补丁里检查Properties本身。 + // 为了避免运行时错误,我们暂时指向一个基础的HediffComp。 + // 实际上,在下面的补丁逻辑中,我们不会实例化这个compClass。 + this.compClass = typeof(HediffComp); } + } - // 检查Biotech DLC是否激活且Pawn属于玩家安全派系 - if (ModsConfig.BiotechActive && pawn.Faction.IsPlayerSafe()) + + // Harmony Patch类,用于修改MechanitorUtility.ShouldBeMechanitor方法 + [HarmonyPatch(typeof(MechanitorUtility), "ShouldBeMechanitor")] + public static class MechanitorShouldBeMechanitorPatch + { + // Postfix方法将在原始方法执行后运行 + // originalResult 是原始方法的返回值 + // pawn 是原始方法的参数 + public static void Postfix(Pawn pawn, ref bool __result) { - // 遍历Pawn的所有Hediff,检查是否存在HediffComp_MakesMechanitor组件 - foreach (Hediff hediff in pawn.health.hediffSet.hediffs) + // 如果原始方法已经返回true,则无需进一步检查 + if (__result) { - if (hediff.TryGetComp() != null) + return; + } + + // 检查Biotech DLC是否激活且Pawn属于玩家安全派系 + if (ModsConfig.BiotechActive && pawn.Faction.IsPlayerSafe()) + { + // 遍历Pawn的所有Hediff + foreach (Hediff hediff in pawn.health.hediffSet.hediffs) { - __result = true; // 如果找到,则将结果设置为true - return; + // 检查Hediff的定义中是否包含HediffCompProperties_MakesMechanitor + if (hediff.def.comps?.Any(c => c is HediffCompProperties_MakesMechanitor) ?? false) + { + __result = true; // 如果找到,则将结果设置为true + return; + } } } } diff --git a/Source/WulaFallenEmpire/obj/Debug/WulaFallenEmpire.dll b/Source/WulaFallenEmpire/obj/Debug/WulaFallenEmpire.dll index 089ff34c..2a0f4132 100644 Binary files a/Source/WulaFallenEmpire/obj/Debug/WulaFallenEmpire.dll and b/Source/WulaFallenEmpire/obj/Debug/WulaFallenEmpire.dll differ diff --git a/Source/WulaFallenEmpire/obj/Debug/WulaFallenEmpire.pdb b/Source/WulaFallenEmpire/obj/Debug/WulaFallenEmpire.pdb index 4b3b205b..eda750d4 100644 Binary files a/Source/WulaFallenEmpire/obj/Debug/WulaFallenEmpire.pdb and b/Source/WulaFallenEmpire/obj/Debug/WulaFallenEmpire.pdb differ