diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 15ec74b..a514a63 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml b/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml index ee05b31..a810dd6 100644 --- a/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml +++ b/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml @@ -12,6 +12,7 @@ ARA_New_Hive_NamerFaction World/WorldObjects/Expanding/HoraxCult true + false false false @@ -130,7 +131,7 @@ true - false + true false false diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml index 93fd338..d0230a6 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml @@ -161,7 +161,10 @@ -
  • 0
  • +
  • 0.25
  • +
  • 0.5
  • +
  • 0.75
  • +
  • 1
  • @@ -552,6 +555,7 @@ 1.5 ARA_Carapace + 80 Human @@ -610,7 +614,14 @@ false 1 - + + +
  • (0,0)
  • +
  • (1,0)
  • +
  • (1.5,1)
  • +
  • (2,0)
  • +
    +
    @@ -774,7 +785,6 @@ ArachnaeMyrmecocystus_Body 2 - @@ -928,7 +938,6 @@ 1.5 3 - @@ -1043,7 +1052,6 @@ ArachnaeWeaponSmith_Body 0.8 0.75 - @@ -1190,7 +1198,6 @@ ArachnaeFighter_Body 0.7 3 - @@ -1317,7 +1324,6 @@ ArachnaeFacehugger_Body 0.5 0.25 -
  • @@ -1399,7 +1405,6 @@ ArachnaeSmokepop_Body 4 - @@ -1525,7 +1530,6 @@ 1.0 2 - @@ -1742,7 +1746,6 @@ 1.0 0.8 2 - @@ -1950,7 +1953,6 @@ ArachnaePraetorian_Body 2 3 - diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index 4684539..b0d124f 100644 Binary files a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo and b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo differ diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json index e8f60a3..ff61b9e 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -2,6 +2,18 @@ "Version": 1, "WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\", "Documents": [ + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\harmonypatches\\patch_namegenerator_generatename.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:harmonypatches\\patch_namegenerator_generatename.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\harmonypatches\\patch_pawn_needstracker_shouldhaveneed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:harmonypatches\\patch_pawn_needstracker_shouldhaveneed.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\harmonypatches\\patch_forcetargetable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:harmonypatches\\patch_forcetargetable.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, { "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\jobs\\jobdriver_feedwithhoney\\thinknode_jobgiver_feedwithhoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_feedwithhoney\\thinknode_jobgiver_feedwithhoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" @@ -46,28 +58,67 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 1, + "SelectedChildIndex": 3, "Children": [ { "$type": "Bookmark", "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" }, + { + "$type": "Document", + "DocumentIndex": 1, + "Title": "Patch_Pawn_NeedsTracker_ShouldHaveNeed.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_Pawn_NeedsTracker_ShouldHaveNeed.cs", + "RelativeDocumentMoniker": "HarmonyPatches\\Patch_Pawn_NeedsTracker_ShouldHaveNeed.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_Pawn_NeedsTracker_ShouldHaveNeed.cs", + "RelativeToolTip": "HarmonyPatches\\Patch_Pawn_NeedsTracker_ShouldHaveNeed.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABUAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-30T08:59:27.329Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "Patch_ForceTargetable.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_ForceTargetable.cs", + "RelativeDocumentMoniker": "HarmonyPatches\\Patch_ForceTargetable.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_ForceTargetable.cs", + "RelativeToolTip": "HarmonyPatches\\Patch_ForceTargetable.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-30T08:59:20.658Z", + "EditorCaption": "" + }, { "$type": "Document", "DocumentIndex": 0, + "Title": "Patch_NameGenerator_GenerateName.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_NameGenerator_GenerateName.cs", + "RelativeDocumentMoniker": "HarmonyPatches\\Patch_NameGenerator_GenerateName.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_NameGenerator_GenerateName.cs", + "RelativeToolTip": "HarmonyPatches\\Patch_NameGenerator_GenerateName.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAA4AAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-03-30T06:59:38.582Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 3, "Title": "ThinkNode_JobGiver_FeedWithHoney.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_FeedWithHoney.cs", "RelativeDocumentMoniker": "Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_FeedWithHoney.cs", "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_FeedWithHoney.cs", "RelativeToolTip": "Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_FeedWithHoney.cs", - "ViewState": "AgIAAFIAAAAAAAAAAAAAwGoAAAABAAAAAAAAAA==", + "ViewState": "AgIAAAkAAAAAAAAAAAAAAB8AAAAcAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2026-03-29T09:23:09.491Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 1, + "DocumentIndex": 4, "Title": "ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs", "RelativeDocumentMoniker": "Jobs\\JobDriver_Plant\\ThinkNode_ConditionalAnimalShouldDoGrowingWork.cs", @@ -79,7 +130,7 @@ }, { "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 5, "Title": "ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs", "RelativeDocumentMoniker": "Jobs\\JobDriver_Clean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs", @@ -91,7 +142,7 @@ }, { "$type": "Document", - "DocumentIndex": 3, + "DocumentIndex": 6, "Title": "HediffComp_Spawner.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_Spawner\\HediffComp_Spawner.cs", "RelativeDocumentMoniker": "Hediffs\\ARA_Spawner\\HediffComp_Spawner.cs", @@ -103,7 +154,7 @@ }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 7, "Title": "CompAdvancedTraining.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\CompAdvancedTraining.cs", "RelativeDocumentMoniker": "Pawn_Comps\\ARA_TrainingWork\\CompAdvancedTraining.cs", @@ -115,7 +166,7 @@ }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 8, "Title": "CompAbilityEffect_ShowInteractiveThing.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowInteractiveThing\\CompAbilityEffect_ShowInteractiveThing.cs", "RelativeDocumentMoniker": "Abilities\\ARA_ShowInteractiveThing\\CompAbilityEffect_ShowInteractiveThing.cs", @@ -127,7 +178,7 @@ }, { "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 9, "Title": "ARA_DefOf.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_DefOf.cs", "RelativeDocumentMoniker": "ARA_DefOf.cs", @@ -139,7 +190,7 @@ }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 11, "Title": "CompProducedByMechCarrier.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_AutoMechCarrier\\CompProducedByMechCarrier.cs", "RelativeDocumentMoniker": "Pawn_Comps\\ARA_AutoMechCarrier\\CompProducedByMechCarrier.cs", @@ -151,7 +202,7 @@ }, { "$type": "Document", - "DocumentIndex": 7, + "DocumentIndex": 10, "Title": "CompAutoMechCarrier.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_AutoMechCarrier\\CompAutoMechCarrier.cs", "RelativeDocumentMoniker": "Pawn_Comps\\ARA_AutoMechCarrier\\CompAutoMechCarrier.cs", diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index 81d8554..4f9a1af 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -50,6 +50,7 @@ + diff --git a/Source/ArachnaeSwarm/HarmonyPatches/Patch_NameGenerator_GenerateName.cs b/Source/ArachnaeSwarm/HarmonyPatches/Patch_NameGenerator_GenerateName.cs new file mode 100644 index 0000000..757c331 --- /dev/null +++ b/Source/ArachnaeSwarm/HarmonyPatches/Patch_NameGenerator_GenerateName.cs @@ -0,0 +1,81 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using HarmonyLib; +using RimWorld; +using Verse; +using Verse.Grammar; + +namespace ArachnaeSwarm +{ + [HarmonyPatch(typeof(NameGenerator))] + [HarmonyPatch("GenerateName")] + [HarmonyPatch(new Type[] + { + typeof(GrammarRequest), + typeof(Predicate), + typeof(bool), + typeof(string), + typeof(string) + })] + public static class NameGenerator_GenerateName_Patch + { + private const string TargetRulePack = "ARA_Normal_Node_NameMaker"; + + public static bool Prefix( + ref string __result, + GrammarRequest request, + Predicate validator = null, + bool appendNumberIfNameUsed = false, + string rootKeyword = null, + string untranslatedRootKeyword = null) + { + // 检查是否包含目标规则包 + if (!request.Includes.Any(pack => pack?.defName == TargetRulePack)) + { + return true; // 继续执行原方法 + } + + // 复制原方法的逻辑,但不记录错误 + if (untranslatedRootKeyword == null) + { + untranslatedRootKeyword = rootKeyword; + } + string text = "ErrorName"; + if (appendNumberIfNameUsed) + { + for (int i = 0; i < 100; i++) + { + for (int j = 0; j < 5; j++) + { + text = GenText.CapitalizeAsTitle(GrammarResolver.Resolve(rootKeyword, request, null, forceLog: false, untranslatedRootKeyword)); + if (i != 0) + { + text = text + " " + (i + 1); + } + if (validator == null || validator(text)) + { + __result = text; + return false; // 跳过原方法 + } + } + } + __result = GenText.CapitalizeAsTitle(GrammarResolver.Resolve(rootKeyword, request, null, forceLog: false, untranslatedRootKeyword)); + return false; // 跳过原方法 + } + for (int k = 0; k < 150; k++) + { + text = GenText.CapitalizeAsTitle(GrammarResolver.Resolve(rootKeyword, request, null, forceLog: false, untranslatedRootKeyword)); + if (validator == null || validator(text)) + { + __result = text; + return false; // 跳过原方法 + } + } + + // 修改点:不记录错误日志 + __result = text; + return false; // 跳过原方法 + } + } +}