diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 7b61b85..6f2637f 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/AbilityDefs/ARA_Abilities.xml b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml index c4b4486..9593b9a 100644 --- a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml +++ b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml @@ -190,6 +190,10 @@
  • ARA_InsectCreep 13 + +
  • ARA_Creep
  • +
  • ARA_Incubator_Nutrient_Solution
  • + diff --git a/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml b/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml index a718615..b92231a 100644 --- a/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml +++ b/1.6/1.6/Defs/BodyAndPartDefs/ARA_Bodyparts.xml @@ -22,6 +22,7 @@
  • ARA_Chitin_Shell + 背部甲片 0.02 Outside @@ -164,6 +165,7 @@
  • ARA_Chitin_Shell + 尾部甲片 0.01 Outside @@ -220,6 +222,7 @@
  • ARA_Chitin_Shell + 头部甲片 0.02 Outside @@ -463,6 +466,7 @@
  • ARA_Chitin_Shell + 左前腿甲片 0.02 Outside @@ -495,6 +499,7 @@
  • ARA_Chitin_Shell + 右前腿甲片 0.02 Outside @@ -527,6 +532,7 @@
  • ARA_Chitin_Shell + 左后腿甲片 0.02 Outside @@ -559,6 +565,7 @@
  • ARA_Chitin_Shell + 右后腿甲片 0.02 Outside @@ -4221,6 +4228,7 @@
  • ARA_Chitin_Shell + 背部甲片 0.02 Outside @@ -4363,6 +4371,7 @@
  • ARA_Chitin_Shell + 尾部甲片 0.01 Outside @@ -4392,6 +4401,7 @@
  • ARA_Chitin_Shell + 头部甲片 0.02 Outside @@ -4635,6 +4645,7 @@
  • ARA_Chitin_Shell + 左前腿甲片 0.02 Outside @@ -4667,6 +4678,7 @@
  • ARA_Chitin_Shell + 右前腿甲片 0.02 Outside @@ -4699,6 +4711,7 @@
  • ARA_Chitin_Shell + 左后腿甲片 0.02 Outside @@ -4731,6 +4744,7 @@
  • ARA_Chitin_Shell + 右后腿甲片 0.02 Outside diff --git a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml index c038d67..7fee5fb 100644 --- a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml +++ b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml @@ -116,7 +116,7 @@ ARA_Myrmecocystus_Production_Medicine - 这只阿拉克涅蜜罐种已经获得拔耀,不再生产虫蜜,而是生产巢穴所稀缺的药物、化学品,并可以操纵拟线种寄生虫。 + 这只阿拉克涅蜜罐种已经获得拔耀,不再生产虫蜜,而是定期生产巢穴所稀缺的药物,并可以操纵拟线种寄生虫。 ARA_InsectJelly diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml index 02a1d74..92a7451 100644 --- a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml +++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml @@ -448,6 +448,9 @@ 7.7 30 true + +
  • ARA_Incubator_Nutrient_Solution
  • + diff --git a/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml b/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml index 255d99c..0545910 100644 --- a/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml +++ b/1.6/1.6/Defs/ResearchProjectDefs/ARA_ResearchProjects.xml @@ -487,17 +487,6 @@
  • ARA_Technology_2NPT
  • - - ARA_Technology_4NPT - - <color=#887E78><i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径,它们奠定了虫群在生物学上的优越性。</i></color>\n\n允许虫族建造孵化池。一种专用于批量生产虫族的孵化场地。孵化池的孵化效率比孵化茧更高。 - 1800 - 12.00 - 2.10 - -
  • ARA_Technology_1NPT
  • -
    -
    ARA_Technology_8CPE @@ -590,7 +579,7 @@ ARA_Technology_1MED - <color=#887E78><i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径,它们奠定了虫群在生物学上的优越性。</i></color>\n\n允许蜜罐种进行定向进化,抛弃生产虫蜜的能力,以强化其自身的医疗能力并解锁孵化医药茧的技能。\n\n阿拉克涅虫群所有需要蓝图的科技,其研究只能通过基因试验卵进行。 + <color=#887E78><i>阿拉克涅虫群-主巢触须\n主巢触须的进化路径是包含于每一支虫群中的通用进化路径,它们奠定了虫群在生物学上的优越性。</i></color>\n\n允许蜜罐种进行定向进化,抛弃生产虫蜜的能力,以强化其自身的医疗能力并定期产出药物。\n\n阿拉克涅虫群所有需要蓝图的科技,其研究只能通过基因试验卵进行。 1200 5.50 2.10 diff --git a/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml b/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml index dbddbfc..66d1218 100644 --- a/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml +++ b/1.6/1.6/Defs/Thing_Misc/Weapons/ARA_Weapon.xml @@ -215,8 +215,8 @@
  • - 30 - 3.5 + 60 + 2.5 0.5 false Cut diff --git a/1.6/1.6/Defs/Thing_building/ARA_Building.xml b/1.6/1.6/Defs/Thing_building/ARA_Building.xml index 3e67af5..55794e0 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_Building.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_Building.xml @@ -510,6 +510,10 @@
  • ARA_InsectCreep 6 + +
  • ARA_Creep
  • +
  • ARA_Incubator_Nutrient_Solution
  • + diff --git a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml index 5a436b9..b8456e8 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml @@ -39,10 +39,6 @@
  • CocoonDestroyed
  • -
  • - ARA_InsectCreep - 4.6 -
  • diff --git a/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml b/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml index 8c2b54d..a41b4c6 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml @@ -85,10 +85,6 @@ -
  • - ARA_InsectCreep - 18 -
  • 8 (220,210,171,0) @@ -163,10 +159,6 @@ -1 false
  • -
  • - ARA_InsectCreep - 6 -
  • @@ -228,10 +220,6 @@ -
  • - ARA_InsectCreep - 3 -
  • ResearchSpeedFactor
  • @@ -439,7 +427,7 @@ ARA_Carapace_Productor - 一个阿拉克涅虫族活体组织,可以充分利用活体钜菌的催化能力,将钢铁转换为甲壳素。 + 一个阿拉克涅虫族活体组织,可以充分利用活体钜菌的催化能力,将附近的尸体转换为骨柱,并命令其他虫群成员将其拆除,以得到甲壳素。 Building ArachnaeSwarm/Building/ARA_Carapace_Productor diff --git a/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml b/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml index 3e84d50..f807877 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml @@ -58,7 +58,7 @@ 10 - 1 + 3 diff --git a/1.6/1.6/Defs/Thing_building/ARA_Vat.xml b/1.6/1.6/Defs/Thing_building/ARA_Vat.xml index 88e3c87..a52b2e3 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_Vat.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_Vat.xml @@ -187,11 +187,6 @@ 8 1 - -
  • - ARA_InsectCreep - 3 -
  • diff --git a/1.6/1.6/Defs/Thing_building/ARA_WormholeDefs.xml b/1.6/1.6/Defs/Thing_building/ARA_WormholeDefs.xml index b9ac1c8..7f61ee4 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_WormholeDefs.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_WormholeDefs.xml @@ -73,10 +73,6 @@
  • ARA_NutrientNetworkTower
  • -
  • - ARA_InsectCreep - 5 -
  • ARA_Buildings ARA_Creep @@ -126,6 +122,10 @@
  • ARA_InsectCreep 12 + +
  • ARA_Creep
  • +
  • ARA_Incubator_Nutrient_Solution
  • + None diff --git a/Content/Textures/ArachnaeSwarm/Terrain/Surfaces/ARA_InsectJelly_Terrain.png b/Content/Textures/ArachnaeSwarm/Terrain/Surfaces/ARA_InsectJelly_Terrain.png index 51ee441..068499b 100644 Binary files a/Content/Textures/ArachnaeSwarm/Terrain/Surfaces/ARA_InsectJelly_Terrain.png and b/Content/Textures/ArachnaeSwarm/Terrain/Surfaces/ARA_InsectJelly_Terrain.png differ diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index 0ded561..5e2feef 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 6361efb..e235bc7 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -3,256 +3,24 @@ "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\\needs\\need_honeyproduction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:needs\\need_honeyproduction.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\\pawn_comps\\ara_comphediffgiver\\compproperties_hediffgiver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_comphediffgiver\\compproperties_hediffgiver.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\\needs\\need_chitinarmor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:needs\\need_chitinarmor.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\\pawn_comps\\ara_comphediffgiver\\comphediffgiver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_comphediffgiver\\comphediffgiver.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\\verbs\\cleave\\verb_meleeattack_cleave.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\cleave\\verb_meleeattack_cleave.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\\hediffs\\ara_hediffterrainspawn\\compproperties_hediffterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hediffterrainspawn\\compproperties_hediffterrainspawn.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\\verbs\\cleave\\compcleave.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\cleave\\compcleave.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\\hediffs\\ara_hediffterrainspawn\\comphediffterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hediffterrainspawn\\comphediffterrainspawn.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\\thing_comps\\ara_areaadamage\\compareadamage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_areaadamage\\compareadamage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_PreventPartLoss\\PreventPartLossPatches.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_draftableanimals.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:harmonypatches\\patch_draftableanimals.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\\hediffs\\ara_hivemind\\hediff_hivemindmaster.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\hediff_hivemindmaster.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\\buildings\\building_dormancyvat\\building_dormancyvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_dormancyvat\\building_dormancyvat.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\\workgivers\\workgiver_stripchitin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:workgivers\\workgiver_stripchitin.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\\workgivers\\workgiver_extracthoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:workgivers\\workgiver_extracthoney.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\\ara_hediffdefof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:ara_hediffdefof.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\\workgivers\\workgiver_feedwithhoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:workgivers\\workgiver_feedwithhoney.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\\hediffs\\ara_hivemind\\compabilityeffect_binddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\compabilityeffect_binddrone.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\\hediffs\\ara_hivemind\\hediffcomp_hiveminddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\hediffcomp_hiveminddrone.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\\hediffs\\ara_hivemind\\hediff_hiveminddrone.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hivemind\\hediff_hiveminddrone.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\\pawn_comps\\ara_dratfableanimals\\beastunit.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_dratfableanimals\\beastunit.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\\pawn_comps\\ara_dratfableanimals\\compdratfableanimals.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_dratfableanimals\\compdratfableanimals.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\\pawn_comps\\ara_dratfableanimals\\compproperties_dratfableanimals.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_dratfableanimals\\compproperties_dratfableanimals.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\\thing_comps\\ara_compextraincubationinfo\\compproperties_extraincubationinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_compextraincubationinfo\\compproperties_extraincubationinfo.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\\thing_comps\\ara_compextraincubationinfo\\compextraincubationinfo.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_compextraincubationinfo\\compextraincubationinfo.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\\buildings\\building_researchblueprintreader\\building_researchblueprintreader.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_researchblueprintreader\\building_researchblueprintreader.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\\verbs\\pawnbodyweapon\\verb_meleeattack_bodyweapon.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\pawnbodyweapon\\verb_meleeattack_bodyweapon.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\\buildings\\building_equipmentootheca\\itab_equipmentootheca_incubation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\itab_equipmentootheca_incubation.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\\buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\building_equipmentootheca.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\\buildings\\building_researchblueprintreader\\researchblueprintreadermanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_researchblueprintreader\\researchblueprintreadermanager.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\\buildings\\building_equipmentootheca\\jobdriver_operateequipmentincubator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\jobdriver_operateequipmentincubator.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\\thing_comps\\ara_areaadamage\\compproperties_areadamage.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\ara_areaadamage\\compproperties_areadamage.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\\pawn_comps\\ara_swarmmaintainer\\compproperties_swarmmaintainer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_swarmmaintainer\\compproperties_swarmmaintainer.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\\verbs\\pawnbodyweapon\\compproperties_pawnbodyweapon.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\pawnbodyweapon\\compproperties_pawnbodyweapon.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\\pawn_comps\\ara_trainingwork\\jobclean\\thinknode_conditionalanimalshoulddocleaningwork.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_trainingwork\\jobclean\\thinknode_conditionalanimalshoulddocleaningwork.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\\pawn_comps\\ara_trainingwork\\jobclean\\workgiver_arachnaeclean.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_trainingwork\\jobclean\\workgiver_arachnaeclean.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\\pawn_comps\\ara_trainingwork\\jobplant\\jobgiver_grower.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_trainingwork\\jobplant\\jobgiver_grower.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\\pawn_comps\\ara_compskillexperiencegiver\\compproperties_skillexperiencegiver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_compskillexperiencegiver\\compproperties_skillexperiencegiver.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\\arachnaeswarmmod.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:arachnaeswarmmod.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\\hediffs\\ara_configurablemutant\\hediff_configurablemutant.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_configurablemutant\\hediff_configurablemutant.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\\thing_comps\\compapparelinterceptor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:thing_comps\\compapparelinterceptor.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\\building_comps\\ara_buildingterrainspawn\\compdelayedterrainspawn.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\\building_comps\\ara_buildingterrainspawn\\compdelayedterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_buildingterrainspawn\\compdelayedterrainspawn.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\\workgivers\\workgiver_refuel_nutrition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:workgivers\\workgiver_refuel_nutrition.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\\jobdriver_feedwithhoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_feedwithhoney\\jobdriver_feedwithhoney.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\\jobdriver_extracthoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_feedwithhoney\\jobdriver_extracthoney.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_extracthoney.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_feedwithhoney\\thinknode_jobgiver_extracthoney.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_swarmmaintain\\jobdriver_swarmmaintain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_swarmmaintain\\jobdriver_swarmmaintain.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\\building_comps\\ara_swarmmaintenance\\comp_swarmmaintenance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_swarmmaintenance\\comp_swarmmaintenance.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\\roomrole\\roomroleworker_incubator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:roomrole\\roomroleworker_incubator.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_stripchitin\\jobdriver_stripchitin.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_stripchitin\\jobdriver_stripchitin.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_stripchitin\\compproperties_chitinstripping.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_stripchitin\\compproperties_chitinstripping.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_stripchitin\\comp_chitinstripping.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_stripchitin\\comp_chitinstripping.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\\verbs\\verb_shootselfunderfoot.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:verbs\\verb_shootselfunderfoot.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\\hediffs\\ara_hediffcomp_topturret\\hediffcomp_topturret.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\ara_hediffcomp_topturret\\hediffcomp_topturret.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\\building_comps\\ara_compinteractiveproducer\\compresearchproducer.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_compinteractiveproducer\\compresearchproducer.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\\building_comps\\ara_corpseconverter\\compcorpseconverter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_corpseconverter\\compcorpseconverter.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\\building_comps\\ara_corpseconverter\\compproperties_corpseconverter.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_corpseconverter\\compproperties_corpseconverter.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\\building_comps\\ara_terrainchanger\\compterrainchanger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_terrainchanger\\compterrainchanger.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\\building_comps\\ara_terrainchanger\\compproperties_terrainchanger.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_terrainchanger\\compproperties_terrainchanger.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\\building_comps\\wula_mutifuelspawner\\comprefuelablenutrition_withkey.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\wula_mutifuelspawner\\comprefuelablenutrition_withkey.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\\buildings\\building_ootheca\\compproperties_incubatordata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\compproperties_incubatordata.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\\buildings\\building_ootheca\\oothecaincubatorextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\oothecaincubatorextension.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\\buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\building_ootheca.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\\buildings\\building_equipmentootheca\\compproperties_equipmentincubatordata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\compproperties_equipmentincubatordata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\JobGiver_DraftedAnimal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\Patch_Pawn_GetGizmos.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -262,773 +30,76 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 5, + "SelectedChildIndex": 2, "Children": [ { "$type": "Bookmark", "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "CompAreaDamage.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_AreaaDamage\\CompAreaDamage.cs", - "RelativeDocumentMoniker": "Thing_Comps\\ARA_AreaaDamage\\CompAreaDamage.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_AreaaDamage\\CompAreaDamage.cs", - "RelativeToolTip": "Thing_Comps\\ARA_AreaaDamage\\CompAreaDamage.cs", - "ViewState": "AgIAAHEAAAAAAAAAAAAQwEwAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T08:30:03.538Z" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "CompCleave.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Cleave\\CompCleave.cs", - "RelativeDocumentMoniker": "Verbs\\Cleave\\CompCleave.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Cleave\\CompCleave.cs", - "RelativeToolTip": "Verbs\\Cleave\\CompCleave.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAvAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:40:25.528Z" - }, { "$type": "Document", "DocumentIndex": 2, - "Title": "Verb_MeleeAttack_Cleave.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Cleave\\Verb_MeleeAttack_Cleave.cs", - "RelativeDocumentMoniker": "Verbs\\Cleave\\Verb_MeleeAttack_Cleave.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Cleave\\Verb_MeleeAttack_Cleave.cs", - "RelativeToolTip": "Verbs\\Cleave\\Verb_MeleeAttack_Cleave.cs", - "ViewState": "AgIAAGcAAAAAAAAAAAAAAJAAAAAaAAAAAAAAAA==", + "Title": "CompProperties_HediffTerrainSpawn.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs", + "RelativeDocumentMoniker": "Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs", + "RelativeToolTip": "Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAC8AAAAFAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T03:30:20.061Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "Need_ChitinArmor.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_ChitinArmor.cs", - "RelativeDocumentMoniker": "Needs\\Need_ChitinArmor.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_ChitinArmor.cs", - "RelativeToolTip": "Needs\\Need_ChitinArmor.cs", - "ViewState": "AgIAAAMAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:23:16.771Z", + "WhenOpened": "2025-12-19T09:26:15.297Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 0, - "Title": "Need_HoneyProduction.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_HoneyProduction.cs", - "RelativeDocumentMoniker": "Needs\\Need_HoneyProduction.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Needs\\Need_HoneyProduction.cs", - "RelativeToolTip": "Needs\\Need_HoneyProduction.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAApAAAAAAAAAA==", + "Title": "CompProperties_HediffGiver.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompHediffGiver\\CompProperties_HediffGiver.cs", + "RelativeDocumentMoniker": "Pawn_Comps\\ARA_CompHediffGiver\\CompProperties_HediffGiver.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompHediffGiver\\CompProperties_HediffGiver.cs", + "RelativeToolTip": "Pawn_Comps\\ARA_CompHediffGiver\\CompProperties_HediffGiver.cs", + "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:17:51.898Z", + "WhenOpened": "2025-12-19T09:21:06.983Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 13, - "Title": "CompAbilityEffect_BindDrone.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", - "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", - "RelativeToolTip": "Hediffs\\ARA_HiveMind\\CompAbilityEffect_BindDrone.cs", - "ViewState": "AgIAAC0AAAAAAAAAAAAiwEwAAACEAAAAAAAAAA==", + "DocumentIndex": 1, + "Title": "CompHediffGiver.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompHediffGiver\\CompHediffGiver.cs", + "RelativeDocumentMoniker": "Pawn_Comps\\ARA_CompHediffGiver\\CompHediffGiver.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompHediffGiver\\CompHediffGiver.cs", + "RelativeToolTip": "Pawn_Comps\\ARA_CompHediffGiver\\CompHediffGiver.cs", + "ViewState": "AgIAABEAAAAAAAAAAAAIwCcAAAAGAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T17:35:39.32Z" + "WhenOpened": "2025-12-19T09:21:05.624Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 5, - "Title": "PreventPartLossPatches.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_PreventPartLoss\\PreventPartLossPatches.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_PreventPartLoss\\PreventPartLossPatches.cs", + "DocumentIndex": 3, + "Title": "CompHediffTerrainSpawn.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs", + "RelativeDocumentMoniker": "Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs", + "RelativeToolTip": "Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs", + "ViewState": "AgIAAEAAAAAAAAAAAAAcwHAAAAAVAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T18:48:31.584Z" + "WhenOpened": "2025-12-19T09:18:47.919Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 14, - "Title": "HediffComp_HiveMindDrone.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\HediffComp_HiveMindDrone.cs", - "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\HediffComp_HiveMindDrone.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\HediffComp_HiveMindDrone.cs", - "RelativeToolTip": "Hediffs\\ARA_HiveMind\\HediffComp_HiveMindDrone.cs", - "ViewState": "AgIAAAYAAAAAAAAAAAAYwCIAAACfAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T17:35:50.972Z" - }, - { - "$type": "Document", - "DocumentIndex": 15, - "Title": "Hediff_HiveMindDrone.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs", - "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs", - "RelativeToolTip": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindDrone.cs", - "ViewState": "AgIAABsAAAAAAAAAAAAcwDgAAAByAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T17:36:08.045Z" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "Hediff_HiveMindMaster.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs", - "RelativeDocumentMoniker": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs", - "RelativeToolTip": "Hediffs\\ARA_HiveMind\\Hediff_HiveMindMaster.cs", - "ViewState": "AgIAAGIAAAAAAAAAAAAgwK0AAABfAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T17:37:07.383Z" - }, - { - "$type": "Document", - "DocumentIndex": 16, - "Title": "BeastUnit.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\BeastUnit.cs", - "RelativeDocumentMoniker": "Pawn_Comps\\ARA_DratfableAnimals\\BeastUnit.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\BeastUnit.cs", - "RelativeToolTip": "Pawn_Comps\\ARA_DratfableAnimals\\BeastUnit.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACwAAABvAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T16:28:07.2Z" - }, - { - "$type": "Document", - "DocumentIndex": 12, - "Title": "WorkGiver_FeedWithHoney.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_FeedWithHoney.cs", - "RelativeDocumentMoniker": "WorkGivers\\WorkGiver_FeedWithHoney.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_FeedWithHoney.cs", - "RelativeToolTip": "WorkGivers\\WorkGiver_FeedWithHoney.cs", - "ViewState": "AgIAAGkAAAAAAAAAAAAYwIoAAABVAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:59:28.915Z" - }, - { - "$type": "Document", - "DocumentIndex": 6, - "Title": "Patch_DraftableAnimals.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_DraftableAnimals.cs", - "RelativeDocumentMoniker": "HarmonyPatches\\Patch_DraftableAnimals.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HarmonyPatches\\Patch_DraftableAnimals.cs", - "RelativeToolTip": "HarmonyPatches\\Patch_DraftableAnimals.cs", - "ViewState": "AgIAADQAAAAAAAAAAAAgwCIAAAAmAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T13:53:44.951Z" - }, - { - "$type": "Document", - "DocumentIndex": 11, - "Title": "ARA_HediffDefOf.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs", - "RelativeDocumentMoniker": "ARA_HediffDefOf.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs", - "RelativeToolTip": "ARA_HediffDefOf.cs", - "ViewState": "AgIAAAgAAAAAAAAAAAAAAAgAAAAyAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-15T17:32:18.493Z" - }, - { - "$type": "Document", - "DocumentIndex": 10, - "Title": "WorkGiver_ExtractHoney.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_ExtractHoney.cs", - "RelativeDocumentMoniker": "WorkGivers\\WorkGiver_ExtractHoney.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_ExtractHoney.cs", - "RelativeToolTip": "WorkGivers\\WorkGiver_ExtractHoney.cs", - "ViewState": "AgIAAFIAAAAAAAAAAAAqwG8AAABVAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:33:29.75Z" - }, - { - "$type": "Document", - "DocumentIndex": 9, - "Title": "WorkGiver_StripChitin.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_StripChitin.cs", - "RelativeDocumentMoniker": "WorkGivers\\WorkGiver_StripChitin.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_StripChitin.cs", - "RelativeToolTip": "WorkGivers\\WorkGiver_StripChitin.cs", - "ViewState": "AgIAADsAAAAAAAAAAAAswFkAAABVAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:33:53.307Z" - }, - { - "$type": "Document", - "DocumentIndex": 8, - "Title": "Building_DormancyVat.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_DormancyVat\\Building_DormancyVat.cs", - "RelativeDocumentMoniker": "Buildings\\Building_DormancyVat\\Building_DormancyVat.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_DormancyVat\\Building_DormancyVat.cs", - "RelativeToolTip": "Buildings\\Building_DormancyVat\\Building_DormancyVat.cs", - "ViewState": "AgIAAP4AAAAAAAAAAAAAACMBAABSAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T11:50:41.189Z" - }, - { - "$type": "Document", - "DocumentIndex": 17, - "Title": "CompDratfableAnimals.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\CompDratfableAnimals.cs", - "RelativeDocumentMoniker": "Pawn_Comps\\ARA_DratfableAnimals\\CompDratfableAnimals.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\CompDratfableAnimals.cs", - "RelativeToolTip": "Pawn_Comps\\ARA_DratfableAnimals\\CompDratfableAnimals.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T13:58:03.468Z" - }, - { - "$type": "Document", - "DocumentIndex": 18, - "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": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T16:20:02.796Z" - }, - { - "$type": "Document", - "DocumentIndex": 19, - "Title": "CompProperties_DratfableAnimals.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\CompProperties_DratfableAnimals.cs", - "RelativeDocumentMoniker": "Pawn_Comps\\ARA_DratfableAnimals\\CompProperties_DratfableAnimals.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DratfableAnimals\\CompProperties_DratfableAnimals.cs", - "RelativeToolTip": "Pawn_Comps\\ARA_DratfableAnimals\\CompProperties_DratfableAnimals.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvxAAAAABAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T13:58:14.482Z" - }, - { - "$type": "Document", - "DocumentIndex": 20, - "Title": "CompProperties_ExtraIncubationInfo.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs", - "RelativeDocumentMoniker": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs", - "RelativeToolTip": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompProperties_ExtraIncubationInfo.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T15:25:15.273Z" - }, - { - "$type": "Document", - "DocumentIndex": 21, - "Title": "CompExtraIncubationInfo.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs", - "RelativeDocumentMoniker": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs", - "RelativeToolTip": "Thing_Comps\\ARA_CompExtraIncubationInfo\\CompExtraIncubationInfo.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAQAAAAXAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T08:30:16.009Z" - }, - { - "$type": "Document", - "DocumentIndex": 22, - "Title": "Building_ResearchBlueprintReader.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\Building_ResearchBlueprintReader.cs", - "RelativeDocumentMoniker": "Buildings\\Building_ResearchBlueprintReader\\Building_ResearchBlueprintReader.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\Building_ResearchBlueprintReader.cs", - "RelativeToolTip": "Buildings\\Building_ResearchBlueprintReader\\Building_ResearchBlueprintReader.cs", - "ViewState": "AgIAAD8AAAAAAAAAAAAmwFcAAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T10:38:40.669Z" - }, - { - "$type": "Document", - "DocumentIndex": 23, - "Title": "Verb_MeleeAttack_BodyWeapon.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\PawnBodyWeapon\\Verb_MeleeAttack_BodyWeapon.cs", - "RelativeDocumentMoniker": "Verbs\\PawnBodyWeapon\\Verb_MeleeAttack_BodyWeapon.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\PawnBodyWeapon\\Verb_MeleeAttack_BodyWeapon.cs", - "RelativeToolTip": "Verbs\\PawnBodyWeapon\\Verb_MeleeAttack_BodyWeapon.cs", - "ViewState": "AgIAADQAAAAAAAAAAAAuwFMAAAAQAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T08:17:18.317Z" - }, - { - "$type": "Document", - "DocumentIndex": 24, - "Title": "ITab_EquipmentOotheca_Incubation.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs", - "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs", - "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs", - "ViewState": "AgIAAI0AAAAAAAAAAAAQwKgAAAANAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T14:16:51.322Z" - }, - { - "$type": "Document", - "DocumentIndex": 25, - "Title": "Building_EquipmentOotheca.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", - "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", - "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", - "ViewState": "AgIAAFIDAAAAAAAAAAAIwGgDAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-15T18:22:14.171Z" - }, - { - "$type": "Document", - "DocumentIndex": 26, - "Title": "ResearchBlueprintReaderManager.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\ResearchBlueprintReaderManager.cs", - "RelativeDocumentMoniker": "Buildings\\Building_ResearchBlueprintReader\\ResearchBlueprintReaderManager.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ResearchBlueprintReader\\ResearchBlueprintReaderManager.cs", - "RelativeToolTip": "Buildings\\Building_ResearchBlueprintReader\\ResearchBlueprintReaderManager.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T14:19:42.259Z" - }, - { - "$type": "Document", - "DocumentIndex": 27, - "Title": "JobDriver_OperateEquipmentIncubator.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\JobDriver_OperateEquipmentIncubator.cs", - "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\JobDriver_OperateEquipmentIncubator.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\JobDriver_OperateEquipmentIncubator.cs", - "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\JobDriver_OperateEquipmentIncubator.cs", - "ViewState": "AgIAAAgAAAAAAAAAAAA7wBkAAABDAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T14:19:19.134Z" - }, - { - "$type": "Document", - "DocumentIndex": 28, - "Title": "CompProperties_AreaDamage.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_AreaaDamage\\CompProperties_AreaDamage.cs", - "RelativeDocumentMoniker": "Thing_Comps\\ARA_AreaaDamage\\CompProperties_AreaDamage.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\ARA_AreaaDamage\\CompProperties_AreaDamage.cs", - "RelativeToolTip": "Thing_Comps\\ARA_AreaaDamage\\CompProperties_AreaDamage.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAB8AAAAIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T08:30:19.688Z" - }, - { - "$type": "Document", - "DocumentIndex": 29, - "Title": "CompProperties_SwarmMaintainer.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_SwarmMaintainer\\CompProperties_SwarmMaintainer.cs", - "RelativeDocumentMoniker": "Pawn_Comps\\ARA_SwarmMaintainer\\CompProperties_SwarmMaintainer.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_SwarmMaintainer\\CompProperties_SwarmMaintainer.cs", - "RelativeToolTip": "Pawn_Comps\\ARA_SwarmMaintainer\\CompProperties_SwarmMaintainer.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAlAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T08:19:21.682Z" - }, - { - "$type": "Document", - "DocumentIndex": 30, - "Title": "CompProperties_PawnBodyWeapon.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\PawnBodyWeapon\\CompProperties_PawnBodyWeapon.cs", - "RelativeDocumentMoniker": "Verbs\\PawnBodyWeapon\\CompProperties_PawnBodyWeapon.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\PawnBodyWeapon\\CompProperties_PawnBodyWeapon.cs", - "RelativeToolTip": "Verbs\\PawnBodyWeapon\\CompProperties_PawnBodyWeapon.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAQAAAAXAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T08:17:52.012Z" - }, - { - "$type": "Document", - "DocumentIndex": 31, - "Title": "ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobClean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs", - "RelativeDocumentMoniker": "Pawn_Comps\\ARA_TrainingWork\\JobClean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobClean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs", - "RelativeToolTip": "Pawn_Comps\\ARA_TrainingWork\\JobClean\\ThinkNode_ConditionalAnimalShouldDoCleaningWork.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAcAAAAFAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T03:16:11.827Z" - }, - { - "$type": "Document", - "DocumentIndex": 32, - "Title": "WorkGiver_ArachnaeClean.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobClean\\WorkGiver_ArachnaeClean.cs", - "RelativeDocumentMoniker": "Pawn_Comps\\ARA_TrainingWork\\JobClean\\WorkGiver_ArachnaeClean.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobClean\\WorkGiver_ArachnaeClean.cs", - "RelativeToolTip": "Pawn_Comps\\ARA_TrainingWork\\JobClean\\WorkGiver_ArachnaeClean.cs", - "ViewState": "AgIAAFQAAAAAAAAAAAAYwAAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T03:17:01.411Z" - }, - { - "$type": "Document", - "DocumentIndex": 33, - "Title": "JobGiver_Grower.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobPlant\\JobGiver_Grower.cs", - "RelativeDocumentMoniker": "Pawn_Comps\\ARA_TrainingWork\\JobPlant\\JobGiver_Grower.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_TrainingWork\\JobPlant\\JobGiver_Grower.cs", - "RelativeToolTip": "Pawn_Comps\\ARA_TrainingWork\\JobPlant\\JobGiver_Grower.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA6AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T03:09:07.494Z" - }, - { - "$type": "Document", - "DocumentIndex": 34, - "Title": "CompProperties_SkillExperienceGiver.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs", - "RelativeDocumentMoniker": "Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs", - "RelativeToolTip": "Pawn_Comps\\ARA_CompSkillExperienceGiver\\CompProperties_SkillExperienceGiver.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T00:29:04.867Z" - }, - { - "$type": "Document", - "DocumentIndex": 35, - "Title": "ArachnaeSwarmMod.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ArachnaeSwarmMod.cs", - "RelativeDocumentMoniker": "ArachnaeSwarmMod.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ArachnaeSwarmMod.cs", - "RelativeToolTip": "ArachnaeSwarmMod.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-18T00:55:39.161Z" - }, - { - "$type": "Document", - "DocumentIndex": 62, - "Title": "JobGiver_DraftedAnimal.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\JobGiver_DraftedAnimal.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\JobGiver_DraftedAnimal.cs", - "ViewState": "AgIAAAYAAAAAAAAAAADwvxkAAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T18:21:29.425Z" - }, - { - "$type": "Document", - "DocumentIndex": 63, - "Title": "Patch_Pawn_GetGizmos.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\Patch_Pawn_GetGizmos.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_DraftableAnimal\\Patch_Pawn_GetGizmos.cs", - "ViewState": "AgIAAFMAAAAAAAAAAAAmwGEAAAATAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T18:17:02.281Z" - }, - { - "$type": "Document", - "DocumentIndex": 37, - "Title": "CompApparelInterceptor.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\CompApparelInterceptor.cs", - "RelativeDocumentMoniker": "Thing_Comps\\CompApparelInterceptor.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Thing_Comps\\CompApparelInterceptor.cs", - "RelativeToolTip": "Thing_Comps\\CompApparelInterceptor.cs", - "ViewState": "AgIAAFgAAAAAAAAAAAAuwHEAAAAzAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T18:13:39.102Z" - }, - { - "$type": "Document", - "DocumentIndex": 36, - "Title": "Hediff_ConfigurableMutant.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ConfigurableMutant\\Hediff_ConfigurableMutant.cs", - "RelativeDocumentMoniker": "Hediffs\\ARA_ConfigurableMutant\\Hediff_ConfigurableMutant.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_ConfigurableMutant\\Hediff_ConfigurableMutant.cs", - "RelativeToolTip": "Hediffs\\ARA_ConfigurableMutant\\Hediff_ConfigurableMutant.cs", - "ViewState": "AgIAAIIAAAAAAAAAAAAQwJkAAAAzAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T18:13:05.563Z" - }, - { - "$type": "Document", - "DocumentIndex": 38, + "DocumentIndex": 4, "Title": "CompDelayedTerrainSpawn.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs", "RelativeDocumentMoniker": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs", "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs", "RelativeToolTip": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs", - "ViewState": "AgIAACMAAAAAAAAAAAAQwCgAAABDAAAAAAAAAA==", + "ViewState": "AgIAAGkAAAAAAAAAAAAAAG8AAAAJAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T15:47:19.767Z" - }, - { - "$type": "Document", - "DocumentIndex": 39, - "Title": "WorkGiver_Refuel_Nutrition.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_Refuel_Nutrition.cs", - "RelativeDocumentMoniker": "WorkGivers\\WorkGiver_Refuel_Nutrition.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\WorkGivers\\WorkGiver_Refuel_Nutrition.cs", - "RelativeToolTip": "WorkGivers\\WorkGiver_Refuel_Nutrition.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:59:44.439Z" - }, - { - "$type": "Document", - "DocumentIndex": 41, - "Title": "JobDriver_ExtractHoney.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\JobDriver_ExtractHoney.cs", - "RelativeDocumentMoniker": "Jobs\\JobDriver_FeedWithHoney\\JobDriver_ExtractHoney.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\JobDriver_ExtractHoney.cs", - "RelativeToolTip": "Jobs\\JobDriver_FeedWithHoney\\JobDriver_ExtractHoney.cs", - "ViewState": "AgIAAA8AAAAAAAAAAAAAwCYAAAAlAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:26:42.845Z" - }, - { - "$type": "Document", - "DocumentIndex": 42, - "Title": "ThinkNode_JobGiver_ExtractHoney.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_ExtractHoney.cs", - "RelativeDocumentMoniker": "Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_ExtractHoney.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_ExtractHoney.cs", - "RelativeToolTip": "Jobs\\JobDriver_FeedWithHoney\\ThinkNode_JobGiver_ExtractHoney.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAcAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:25:27.255Z" - }, - { - "$type": "Document", - "DocumentIndex": 43, - "Title": "JobDriver_SwarmMaintain.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs", - "RelativeDocumentMoniker": "Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs", - "RelativeToolTip": "Jobs\\JobDriver_SwarmMaintain\\JobDriver_SwarmMaintain.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvxcAAAAJAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:32:29.359Z" - }, - { - "$type": "Document", - "DocumentIndex": 40, - "Title": "JobDriver_FeedWithHoney.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\JobDriver_FeedWithHoney.cs", - "RelativeDocumentMoniker": "Jobs\\JobDriver_FeedWithHoney\\JobDriver_FeedWithHoney.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_FeedWithHoney\\JobDriver_FeedWithHoney.cs", - "RelativeToolTip": "Jobs\\JobDriver_FeedWithHoney\\JobDriver_FeedWithHoney.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAoAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:43:47.266Z" - }, - { - "$type": "Document", - "DocumentIndex": 44, - "Title": "Comp_SwarmMaintenance.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_SwarmMaintenance\\Comp_SwarmMaintenance.cs", - "RelativeDocumentMoniker": "Building_Comps\\ARA_SwarmMaintenance\\Comp_SwarmMaintenance.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_SwarmMaintenance\\Comp_SwarmMaintenance.cs", - "RelativeToolTip": "Building_Comps\\ARA_SwarmMaintenance\\Comp_SwarmMaintenance.cs", - "ViewState": "AgIAAKYAAAAAAAAAAAAQwH0AAAAQAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-17T13:35:29.771Z" - }, - { - "$type": "Document", - "DocumentIndex": 46, - "Title": "JobDriver_StripChitin.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\JobDriver_StripChitin.cs", - "RelativeDocumentMoniker": "Jobs\\JobDriver_StripChitin\\JobDriver_StripChitin.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\JobDriver_StripChitin.cs", - "RelativeToolTip": "Jobs\\JobDriver_StripChitin\\JobDriver_StripChitin.cs", - "ViewState": "AgIAAD4AAAAAAAAAAAAAAE0AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T15:50:38.09Z" - }, - { - "$type": "Document", - "DocumentIndex": 48, - "Title": "Comp_ChitinStripping.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\Comp_ChitinStripping.cs", - "RelativeDocumentMoniker": "Jobs\\JobDriver_StripChitin\\Comp_ChitinStripping.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\Comp_ChitinStripping.cs", - "RelativeToolTip": "Jobs\\JobDriver_StripChitin\\Comp_ChitinStripping.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAABWAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T15:49:51.675Z" - }, - { - "$type": "Document", - "DocumentIndex": 49, - "Title": "Verb_ShootSelfUnderfoot.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Verb_ShootSelfUnderfoot.cs", - "RelativeDocumentMoniker": "Verbs\\Verb_ShootSelfUnderfoot.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Verbs\\Verb_ShootSelfUnderfoot.cs", - "RelativeToolTip": "Verbs\\Verb_ShootSelfUnderfoot.cs", - "ViewState": "AgIAAJAAAAAAAAAAAAAcwJwAAAAoAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T15:07:22.127Z" - }, - { - "$type": "Document", - "DocumentIndex": 50, - "Title": "HediffComp_TopTurret.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffComp_TopTurret\\HediffComp_TopTurret.cs", - "RelativeDocumentMoniker": "Hediffs\\ARA_HediffComp_TopTurret\\HediffComp_TopTurret.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffComp_TopTurret\\HediffComp_TopTurret.cs", - "RelativeToolTip": "Hediffs\\ARA_HediffComp_TopTurret\\HediffComp_TopTurret.cs", - "ViewState": "AgIAACcBAAAAAAAAAAAkwD0BAAAjAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T14:52:46.325Z" - }, - { - "$type": "Document", - "DocumentIndex": 45, - "Title": "RoomRoleWorker_Incubator.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\RoomRole\\RoomRoleWorker_Incubator.cs", - "RelativeDocumentMoniker": "RoomRole\\RoomRoleWorker_Incubator.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\RoomRole\\RoomRoleWorker_Incubator.cs", - "RelativeToolTip": "RoomRole\\RoomRoleWorker_Incubator.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T14:32:31.389Z" - }, - { - "$type": "Document", - "DocumentIndex": 47, - "Title": "CompProperties_ChitinStripping.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\CompProperties_ChitinStripping.cs", - "RelativeDocumentMoniker": "Jobs\\JobDriver_StripChitin\\CompProperties_ChitinStripping.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_StripChitin\\CompProperties_ChitinStripping.cs", - "RelativeToolTip": "Jobs\\JobDriver_StripChitin\\CompProperties_ChitinStripping.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAAtAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T15:50:04.277Z" - }, - { - "$type": "Document", - "DocumentIndex": 51, - "Title": "CompResearchProducer.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs", - "RelativeDocumentMoniker": "Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs", - "RelativeToolTip": "Building_Comps\\ARA_CompInteractiveProducer\\CompResearchProducer.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvy0AAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T14:29:05.969Z" - }, - { - "$type": "Document", - "DocumentIndex": 52, - "Title": "CompCorpseConverter.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CorpseConverter\\CompCorpseConverter.cs", - "RelativeDocumentMoniker": "Building_Comps\\ARA_CorpseConverter\\CompCorpseConverter.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CorpseConverter\\CompCorpseConverter.cs", - "RelativeToolTip": "Building_Comps\\ARA_CorpseConverter\\CompCorpseConverter.cs", - "ViewState": "AgIAABwDAAAAAAAAAAAIwCoDAAARAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T12:23:40.696Z" - }, - { - "$type": "Document", - "DocumentIndex": 53, - "Title": "CompProperties_CorpseConverter.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CorpseConverter\\CompProperties_CorpseConverter.cs", - "RelativeDocumentMoniker": "Building_Comps\\ARA_CorpseConverter\\CompProperties_CorpseConverter.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_CorpseConverter\\CompProperties_CorpseConverter.cs", - "RelativeToolTip": "Building_Comps\\ARA_CorpseConverter\\CompProperties_CorpseConverter.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T12:23:39.636Z" - }, - { - "$type": "Document", - "DocumentIndex": 56, - "Title": "CompRefuelableNutrition_WithKey.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs", - "RelativeDocumentMoniker": "Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs", - "RelativeToolTip": "Building_Comps\\WULA_MutiFuelSpawner\\CompRefuelableNutrition_WithKey.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACUAAABAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T10:38:33.135Z" - }, - { - "$type": "Document", - "DocumentIndex": 54, - "Title": "CompTerrainChanger.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_TerrainChanger\\CompTerrainChanger.cs", - "RelativeDocumentMoniker": "Building_Comps\\ARA_TerrainChanger\\CompTerrainChanger.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_TerrainChanger\\CompTerrainChanger.cs", - "RelativeToolTip": "Building_Comps\\ARA_TerrainChanger\\CompTerrainChanger.cs", - "ViewState": "AgIAAK0CAAAAAAAAAAAcwPYCAAAMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T10:30:16.921Z" - }, - { - "$type": "Document", - "DocumentIndex": 55, - "Title": "CompProperties_TerrainChanger.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_TerrainChanger\\CompProperties_TerrainChanger.cs", - "RelativeDocumentMoniker": "Building_Comps\\ARA_TerrainChanger\\CompProperties_TerrainChanger.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_TerrainChanger\\CompProperties_TerrainChanger.cs", - "RelativeToolTip": "Building_Comps\\ARA_TerrainChanger\\CompProperties_TerrainChanger.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T10:30:15.601Z" - }, - { - "$type": "Document", - "DocumentIndex": 61, - "Title": "Building_RefuelingVat.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T10:28:54.756Z" - }, - { - "$type": "Document", - "DocumentIndex": 57, - "Title": "CompProperties_IncubatorData.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", - "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", - "RelativeToolTip": "Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", - "ViewState": "AgIAANcAAAAAAAAAAIA1wPoAAAAxAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T04:37:03.042Z" - }, - { - "$type": "Document", - "DocumentIndex": 58, - "Title": "OothecaIncubatorExtension.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs", - "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs", - "RelativeToolTip": "Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvxUAAABBAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T04:36:59.394Z" - }, - { - "$type": "Document", - "DocumentIndex": 59, - "Title": "Building_Ootheca.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs", - "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Building_Ootheca.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs", - "RelativeToolTip": "Buildings\\Building_Ootheca\\Building_Ootheca.cs", - "ViewState": "AgIAALcCAAAAAAAAAAAewNgCAAAVAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-15T18:22:12.217Z" - }, - { - "$type": "Document", - "DocumentIndex": 60, - "Title": "CompProperties_EquipmentIncubatorData.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs", - "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs", - "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs", - "ViewState": "AgIAAA4AAAAAAAAAAADwvyYAAAAaAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-15T17:55:40.041Z" + "WhenOpened": "2025-12-19T07:50:50.393Z", + "EditorCaption": "" } ] } diff --git a/Source/ArachnaeSwarm/ArachnaeLog.cs b/Source/ArachnaeSwarm/ArachnaeLog.cs index a6ef93e..1e67b59 100644 --- a/Source/ArachnaeSwarm/ArachnaeLog.cs +++ b/Source/ArachnaeSwarm/ArachnaeLog.cs @@ -15,7 +15,7 @@ namespace ArachnaeSwarm { if (DebugEnabled) { - Log.Message(message); + ArachnaeLog.Debug(message); } } } diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompDelayedTerrainSpawn.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompDelayedTerrainSpawn.cs index 390cb7d..f476f78 100644 --- a/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompDelayedTerrainSpawn.cs +++ b/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompDelayedTerrainSpawn.cs @@ -1,4 +1,6 @@ +// File: CompDelayedTerrainSpawn.cs using RimWorld; +using System.Collections.Generic; using Verse; namespace ArachnaeSwarm @@ -44,27 +46,80 @@ namespace ArachnaeSwarm // The core logic: iterate through nearby cells and change their terrain. foreach (IntVec3 current in GenRadial.RadialCellsAround(parent.Position, Props.spawnRadius, true)) { - if (current.InBounds(parent.Map) && current.Walkable(parent.Map)) + if (!current.InBounds(parent.Map) || !current.Walkable(parent.Map)) + continue; + + TerrainDef currentTerrain = parent.Map.terrainGrid.TerrainAt(current); + if (currentTerrain == null) + continue; + + // === 新增:使用黑名单检查 === + if (ShouldSkipTerrain(currentTerrain, current)) { - // 添加:检查当前地形是否有 ARA_Creep 标签 - TerrainDef currentTerrain = parent.Map.terrainGrid.TerrainAt(current); - if (currentTerrain != null && HasCreepTag(currentTerrain)) - { - continue; // 跳过有 ARA_Creep 标签的地面 - } - - parent.Map.terrainGrid.SetTerrain(current, Props.terrainToSpawn); + continue; // 跳过有排除tag的地面 } + + parent.Map.terrainGrid.SetTerrain(current, Props.terrainToSpawn); } } /// - /// 检查地形是否具有 ARA_Creep 标签 + /// === 新增:检查是否应该跳过此地形 === + /// 基于tag黑名单、允许性和其他条件 /// - /// 如果地形有 ARA_Creep 标签则返回 true - private bool HasCreepTag(TerrainDef terrain) + private bool ShouldSkipTerrain(TerrainDef terrain, IntVec3 cell) { - return terrain.tags != null && terrain.tags.Contains("ARA_Creep") || terrain.tags.Contains("ARA_Incubator_Nutrient_Solution"); + if (terrain == null) + return false; + + // 1. 检查tag黑名单 + if (Props.IsTerrainExcluded(terrain)) + { + return true; + } + + // 2. 检查允许性(如果启用) + if (Props.checkAffordances && terrain.affordances != null && Props.excludeAffordances != null) + { + foreach (var affordance in terrain.affordances) + { + if (affordance != null && Props.excludeAffordances.Contains(affordance.defName)) + { + return true; + } + } + } + + // 3. 检查优先地形(如果启用智能覆盖) + if (Props.smartOverlay && Props.preferredTerrains != null) + { + if (Props.preferredTerrains.Contains(terrain)) + { + return true; + } + } + + // 4. 检查路径(如果启用路径保护) + if (Props.preservePaths) + { + if (IsPathCell(cell, parent.Map)) + { + return true; + } + } + + return false; + } + + /// + /// === 新增:检查是否是路径单元格 === + /// + private bool IsPathCell(IntVec3 cell, Map map) + { + // 检查是否有路径标记 + // 这里可以根据需要扩展,检查设计者路径标记等 + // 暂时返回false,因为需要更多信息 + return false; } // NOTICE: There is NO CompTick() method here. This component does not perform any updates after it has spawned. diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompProperties_DelayedTerrainSpawn.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompProperties_DelayedTerrainSpawn.cs index e4b56c1..b5022ed 100644 --- a/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompProperties_DelayedTerrainSpawn.cs +++ b/Source/ArachnaeSwarm/Building_Comps/ARA_BuildingTerrainSpawn/CompProperties_DelayedTerrainSpawn.cs @@ -1,3 +1,5 @@ +// File: CompProperties_DelayedTerrainSpawn.cs +using System.Collections.Generic; using Verse; namespace ArachnaeSwarm @@ -10,11 +12,75 @@ namespace ArachnaeSwarm { public TerrainDef terrainToSpawn; public float spawnRadius = 0f; + + // === 新增:tag黑名单 === + public List excludeTerrainTags = null; // 要排除的tag列表 + public bool useDefaultExclusions = true; // 是否使用默认排除项(ARA_Creep和ARA_Incubator_Nutrient_Solution) + + // === 新增:扩展检查选项 === + public bool checkAffordances = false; // 是否检查地形允许性(affordances) + public List excludeAffordances = null; // 要排除的允许性列表 + + // === 新增:智能覆盖选项 === + public bool smartOverlay = false; // 是否智能覆盖(仅覆盖"较差"的地形) + public List preferredTerrains = null; // 优先地形列表,这些不会被覆盖 + public bool preservePaths = false; // 是否保留路径 public CompProperties_DelayedTerrainSpawn() { // The component logic now runs instantly, but the class name is kept for compatibility. compClass = typeof(CompDelayedTerrainSpawn); } + + /// + /// 获取要排除的tag列表(包括默认值) + /// + public List GetExcludedTags() + { + var tags = new List(); + + // 如果使用默认排除项,添加默认tag + if (useDefaultExclusions) + { + if (!tags.Contains("ARA_Creep")) + tags.Add("ARA_Creep"); + if (!tags.Contains("ARA_Incubator_Nutrient_Solution")) + tags.Add("ARA_Incubator_Nutrient_Solution"); + } + + // 添加自定义排除项 + if (excludeTerrainTags != null) + { + foreach (var tag in excludeTerrainTags) + { + if (!tags.Contains(tag)) + tags.Add(tag); + } + } + + return tags; + } + + /// + /// 检查地形是否被排除 + /// + public bool IsTerrainExcluded(TerrainDef terrain) + { + if (terrain == null || terrain.tags == null) + return false; + + var excludedTags = GetExcludedTags(); + if (excludedTags.Count == 0) + return false; + + // 检查地形是否有排除tag + foreach (var tag in terrain.tags) + { + if (excludedTags.Contains(tag)) + return true; + } + + return false; + } } -} \ No newline at end of file +} diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_CorpseConverter/CompCorpseConverter.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_CorpseConverter/CompCorpseConverter.cs index 0ad5f1b..de09674 100644 --- a/Source/ArachnaeSwarm/Building_Comps/ARA_CorpseConverter/CompCorpseConverter.cs +++ b/Source/ArachnaeSwarm/Building_Comps/ARA_CorpseConverter/CompCorpseConverter.cs @@ -492,7 +492,7 @@ namespace ArachnaeSwarm // 显示消息(仅开发模式) if (Prefs.DevMode) { - Log.Message($"[CorpseConverter] Converted {corpseName} at {corpsePosition} to {convertedThing.LabelCap}"); + ArachnaeLog.Debug($"[CorpseConverter] Converted {corpseName} at {corpsePosition} to {convertedThing.LabelCap}"); } } else @@ -542,7 +542,7 @@ namespace ArachnaeSwarm // 显示消息(仅开发模式) if (Prefs.DevMode) { - Log.Message($"[CorpseConverter] Marked building at {markingTargetBuilding.Position} ({markingTargetBuilding.LabelCap}) for deconstruction"); + ArachnaeLog.Debug($"[CorpseConverter] Marked building at {markingTargetBuilding.Position} ({markingTargetBuilding.LabelCap}) for deconstruction"); } ResetMarkingState(); diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_TerrainChanger/CompTerrainChanger.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_TerrainChanger/CompTerrainChanger.cs index 70e040f..82c3461 100644 --- a/Source/ArachnaeSwarm/Building_Comps/ARA_TerrainChanger/CompTerrainChanger.cs +++ b/Source/ArachnaeSwarm/Building_Comps/ARA_TerrainChanger/CompTerrainChanger.cs @@ -463,7 +463,7 @@ namespace ArachnaeSwarm // 显示消息(可选) if (Prefs.DevMode) { - Log.Message($"[TerrainChanger] Changed terrain at {targetCell} from {previousTerrain?.defName ?? "null"} to {Props.targetTerrain.defName}"); + ArachnaeLog.Debug($"[TerrainChanger] Changed terrain at {targetCell} from {previousTerrain?.defName ?? "null"} to {Props.targetTerrain.defName}"); } ResetWorkState(); @@ -510,7 +510,7 @@ namespace ArachnaeSwarm // 显示消息(可选) if (Prefs.DevMode) { - Log.Message($"[TerrainChanger] Marked terrain at {markingTargetCell} ({currentTerrain.defName}) for removal"); + ArachnaeLog.Debug($"[TerrainChanger] Marked terrain at {markingTargetCell} ({currentTerrain.defName}) for removal"); } ResetMarkingState(); diff --git a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs index 85215d0..ade1229 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs @@ -96,12 +96,12 @@ namespace ArachnaeSwarm if (costStat != null) { totalNutrientCost = Mathf.RoundToInt(incubatingThingDef.GetStatValueAbstract(costStat, null)); - Log.Message($"[ARA] 孵化 {incubatingThingDef.defName} 建议有 {totalNutrientCost} 个营养液地块以获得最佳速度"); + ArachnaeLog.Debug($"[ARA] 孵化 {incubatingThingDef.defName} 建议有 {totalNutrientCost} 个营养液地块以获得最佳速度"); } else { totalNutrientCost = 0; - Log.Message($"[ARA] 孵化 {incubatingThingDef.defName} 不需要营养液加成"); + ArachnaeLog.Debug($"[ARA] 孵化 {incubatingThingDef.defName} 不需要营养液加成"); } // 立即更新一次营养液计数 @@ -237,24 +237,6 @@ namespace ArachnaeSwarm builder.AppendLine("ARA_EquipmentIncubator.CurrentNutrientCount".Translate(currentNutrientCount)); builder.AppendLine("ARA_EquipmentIncubator.NutrientSpeedBonus".Translate(NutrientSpeedBonus.ToStringPercent())); - // 显示建议的营养液数量 - if (totalNutrientCost > 0 && incubatingThingDef != null) - { - builder.AppendLine(); - builder.AppendLine("ARA_EquipmentIncubator.RecommendedNutrients".Translate(incubatingThingDef.LabelCap, totalNutrientCost)); - - // 显示加成效果 - if (currentNutrientCount >= totalNutrientCost) - { - builder.AppendLine("ARA_EquipmentIncubator.MaximumBonusActive".Translate()); - } - else - { - int needed = totalNutrientCost - currentNutrientCount; - builder.AppendLine("ARA_EquipmentIncubator.AddMoreNutrients".Translate(needed)); - } - } - return builder.ToString().TrimEndNewlines(); } @@ -398,7 +380,7 @@ namespace ArachnaeSwarm { if (!isIncubating) return; - Log.Message($"[ARA] 取消孵化: {incubatingThingDef?.defName}"); + ArachnaeLog.Debug($"[ARA] 取消孵化: {incubatingThingDef?.defName}"); isIncubating = false; incubationProgress = 0f; @@ -420,7 +402,7 @@ namespace ArachnaeSwarm { if (incubatingThingDef == null) return; - Log.Message($"[ARA] 完成孵化: {incubatingThingDef.defName}"); + ArachnaeLog.Debug($"[ARA] 完成孵化: {incubatingThingDef.defName}"); float finalQualityPercent = QualityPercent; diff --git a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/CompProperties_EquipmentIncubatorData.cs b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/CompProperties_EquipmentIncubatorData.cs index dc4b116..2192694 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/CompProperties_EquipmentIncubatorData.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/CompProperties_EquipmentIncubatorData.cs @@ -293,7 +293,7 @@ namespace ArachnaeSwarm // 按物品名称排序 cachedConfigs.Sort((a, b) => string.Compare(a.thingDef?.label ?? "", b.thingDef?.label ?? "")); - Log.Message($"Built {cachedConfigs.Count} equipment incubation configs for {parent.def.defName}"); + ArachnaeLog.Debug($"Built {cachedConfigs.Count} equipment incubation configs for {parent.def.defName}"); } // 切换到特定索引 diff --git a/Source/ArachnaeSwarm/Buildings/Building_RefuelingVat/Building_RefuelingVat.cs b/Source/ArachnaeSwarm/Buildings/Building_RefuelingVat/Building_RefuelingVat.cs index d5ea650..be1f2cd 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_RefuelingVat/Building_RefuelingVat.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_RefuelingVat/Building_RefuelingVat.cs @@ -123,7 +123,7 @@ namespace ArachnaeSwarm selfDestructInitiated = true; pawnMissingTickCount = 0; - Log.Message($"RefuelingVat at {Position}: Pawn missing from container. Self-destruct initiated. Will destroy in {MissingTicksBeforeDestruction} ticks."); + ArachnaeLog.Debug($"RefuelingVat at {Position}: Pawn missing from container. Self-destruct initiated. Will destroy in {MissingTicksBeforeDestruction} ticks."); // 发送警告消息 Messages.Message("RefuelingVat_ContainmentBreach".Translate(), this, MessageTypeDefOf.NegativeEvent); @@ -132,7 +132,7 @@ namespace ArachnaeSwarm // === 新增方法:执行建筑销毁 === private void ExecuteSelfDestruct() { - Log.Message($"RefuelingVat at {Position}: Self-destruct sequence complete. Destroying building."); + ArachnaeLog.Debug($"RefuelingVat at {Position}: Self-destruct sequence complete. Destroying building."); // 显示爆炸效果 if (!Destroyed) @@ -172,7 +172,7 @@ namespace ArachnaeSwarm } else if (pawnMissingTickCount % 30 == 0) // 每0.5秒报告一次 { - Log.Message($"RefuelingVat at {Position}: Pawn still missing. Self-destruct in {MissingTicksBeforeDestruction - pawnMissingTickCount} ticks."); + ArachnaeLog.Debug($"RefuelingVat at {Position}: Pawn still missing. Self-destruct in {MissingTicksBeforeDestruction - pawnMissingTickCount} ticks."); } } } @@ -181,7 +181,7 @@ namespace ArachnaeSwarm // Pawn在容器内,重置自毁系统 if (selfDestructInitiated) { - Log.Message($"RefuelingVat at {Position}: Pawn returned to container. Self-destruct cancelled."); + ArachnaeLog.Debug($"RefuelingVat at {Position}: Pawn returned to container. Self-destruct cancelled."); selfDestructInitiated = false; pawnMissingTickCount = 0; Messages.Message("RefuelingVat_ContainmentRestored".Translate(), this, MessageTypeDefOf.PositiveEvent); @@ -249,7 +249,7 @@ namespace ArachnaeSwarm { if (selectedPawn != null && innerContainer.Contains(selectedPawn)) { - Log.Message($"RefuelingVat despawned with pawn inside, forcing ejection."); + ArachnaeLog.Debug($"RefuelingVat despawned with pawn inside, forcing ejection."); Finish(); // 使用修改后的Finish方法 } } @@ -308,7 +308,7 @@ namespace ArachnaeSwarm // 检查是否是被建筑杀死的 if (pawnsKilledByVat.Contains(pawn)) { - Log.Message($"Pawn {pawn.Label} killed by RefuelingVat."); + ArachnaeLog.Debug($"Pawn {pawn.Label} killed by RefuelingVat."); // 注意:现在不再需要从容器中移除Pawn或销毁尸体 // 因为建筑会被销毁,Pawn会自然弹出 @@ -375,7 +375,7 @@ namespace ArachnaeSwarm else { // 其他原因的死亡 - 启动自毁系统 - Log.Message($"Pawn {selectedPawn.Label} died unexpectedly. Starting self-destruct."); + ArachnaeLog.Debug($"Pawn {selectedPawn.Label} died unexpectedly. Starting self-destruct."); InitiateSelfDestruct(); } return; @@ -465,7 +465,7 @@ namespace ArachnaeSwarm selfDestructInitiated = false; pawnMissingTickCount = 0; - Log.Message($"Pawn {pawn.Label} inserted into RefuelingVat at {Position}. Self-destruct monitoring active."); + ArachnaeLog.Debug($"Pawn {pawn.Label} inserted into RefuelingVat at {Position}. Self-destruct monitoring active."); } if (deselected) { @@ -482,7 +482,7 @@ namespace ArachnaeSwarm // 检查pawn是否还活着,如果已经死亡且是被建筑杀死的,则启动自毁 if (selectedPawn.Dead && pawnsKilledByVat.Contains(selectedPawn)) { - Log.Message($"Pawn {selectedPawn.Label} killed by vat. Starting self-destruct."); + ArachnaeLog.Debug($"Pawn {selectedPawn.Label} killed by vat. Starting self-destruct."); InitiateSelfDestruct(); return; } @@ -514,7 +514,7 @@ namespace ArachnaeSwarm // 方法3:强制移除(仅对活着的pawn) if (!ejected && innerContainer.Contains(selectedPawn) && !selectedPawn.Dead) { - Log.Message($"Forcing removal of pawn {selectedPawn} from RefuelingVat"); + ArachnaeLog.Debug($"Forcing removal of pawn {selectedPawn} from RefuelingVat"); innerContainer.Remove(selectedPawn); GenPlace.TryPlaceThing(selectedPawn, this.Position, base.Map, ThingPlaceMode.Near); ejected = true; @@ -523,11 +523,11 @@ namespace ArachnaeSwarm if (ejected) { - Log.Message($"Successfully ejected {selectedPawn} using method: {ejectionMethod}"); + ArachnaeLog.Debug($"Successfully ejected {selectedPawn} using method: {ejectionMethod}"); } else if (!selectedPawn.Dead) // 只有活着的pawn弹出失败才报错 { - Log.Message($"Failed to eject {selectedPawn} from RefuelingVat"); + ArachnaeLog.Debug($"Failed to eject {selectedPawn} from RefuelingVat"); } } catch (Exception ex) @@ -551,7 +551,7 @@ namespace ArachnaeSwarm // 确保pawn不在容器中(除非是被建筑杀死的) if (innerContainer.Contains(selectedPawn) && !(selectedPawn.Dead && pawnsKilledByVat.Contains(selectedPawn))) { - Log.Message($"Pawn {selectedPawn} still in container during OnStop, forcing removal."); + ArachnaeLog.Debug($"Pawn {selectedPawn} still in container during OnStop, forcing removal."); innerContainer.Remove(selectedPawn); } } diff --git a/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/Building_ResearchBlueprintReader.cs b/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/Building_ResearchBlueprintReader.cs index 634afe9..005d7c3 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/Building_ResearchBlueprintReader.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/Building_ResearchBlueprintReader.cs @@ -96,7 +96,7 @@ namespace ArachnaeSwarm manager.RegisterResearch(this, storedResearch); } - Log.Message($"[ResearchBlueprintReader] Building spawned with ID: {ThingID}, UniqueId: {UniqueId}"); + ArachnaeLog.Debug($"[ResearchBlueprintReader] Building spawned with ID: {ThingID}, UniqueId: {UniqueId}"); } catch (Exception ex) { @@ -177,7 +177,7 @@ namespace ArachnaeSwarm Messages.Message("ResearchBlueprintReader_ResearchCompleted".Translate(storedResearch.LabelCap), MessageTypeDefOf.PositiveEvent); - Log.Message($"[ResearchBlueprintReader] Research completed: {storedResearch.defName}"); + ArachnaeLog.Debug($"[ResearchBlueprintReader] Research completed: {storedResearch.defName}"); } else { @@ -449,21 +449,6 @@ namespace ArachnaeSwarm else { builder.AppendLine("" + "ResearchBlueprintReader_StatusResearching".Translate(storedResearch.LabelCap) + ""); - builder.AppendLine("ResearchBlueprintReader_BuildingProgress".Translate( - progress, storedResearch.baseCost, (progress / storedResearch.baseCost * 100))); - builder.Append("ResearchBlueprintReader_GlobalProgress".Translate( - Find.ResearchManager.GetProgress(storedResearch), storedResearch.baseCost)); - - // 显示研究速度 - builder.AppendLine(); - builder.Append("ResearchBlueprintReader_ResearchSpeed".Translate(ResearchSpeed)); - - if (researchStartTime > 0) - { - int days = (Find.TickManager.TicksGame - researchStartTime) / 60000; - builder.AppendLine(); - builder.Append("ResearchBlueprintReader_ResearchTime".Translate(days)); - } } } else diff --git a/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/ResearchBlueprintReaderManager.cs b/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/ResearchBlueprintReaderManager.cs index ae181d4..977e4c9 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/ResearchBlueprintReaderManager.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_ResearchBlueprintReader/ResearchBlueprintReaderManager.cs @@ -27,11 +27,16 @@ namespace ArachnaeSwarm private List serializedProjects; private List> serializedBuildings; + // === 新增:科技丢失检查计时器 === + private int lostResearchCheckTimer; + private const int LostResearchCheckInterval = 5000; // 每5秒检查一次 + public ResearchBlueprintReaderManager(Game game) : base() { instance = this; allReaders = new List(); researchBuildings = new Dictionary>(); + lostResearchCheckTimer = 0; } public static ResearchBlueprintReaderManager Instance => instance; @@ -107,13 +112,16 @@ namespace ArachnaeSwarm } } - Log.Message($"[ResearchManager] Loaded {allReaders.Count} buildings, {researchBuildings.Count} research projects"); + ArachnaeLog.Debug($"[ResearchManager] Loaded {allReaders.Count} buildings, {researchBuildings.Count} research projects"); } else if (Scribe.mode == LoadSaveMode.PostLoadInit) { // 后加载初始化:清理所有无效数据 CleanupInvalidData(); } + + // 保存和加载计时器 + Scribe_Values.Look(ref lostResearchCheckTimer, "lostResearchCheckTimer", 0); } public override void GameComponentTick() @@ -126,6 +134,92 @@ namespace ArachnaeSwarm CleanupInvalidData(); cleanupTimer = 0; } + + // === 新增:定期检查是否有科技因建筑损失而丢失 === + lostResearchCheckTimer++; + if (lostResearchCheckTimer >= LostResearchCheckInterval) + { + CheckForLostResearch(); + lostResearchCheckTimer = 0; + } + } + + /// + /// === 新增:检查因建筑损失而丢失的科技 === + /// + private void CheckForLostResearch() + { + if (researchBuildings == null || researchBuildings.Count == 0) + return; + + ArachnaeLog.Debug($"[ResearchManager] Checking for lost research projects..."); + + // 获取需要检查的项目列表(复制以避免修改时遍历) + var projectsToCheck = new List(researchBuildings.Keys); + + foreach (var project in projectsToCheck) + { + if (project == null) + continue; + + if (!researchBuildings.ContainsKey(project)) + continue; + + var buildings = researchBuildings[project]; + if (buildings == null) + { + researchBuildings.Remove(project); + continue; + } + + // 清理无效建筑 + buildings.RemoveAll(b => + b == null || b.Destroyed || !b.Spawned || b.Map == null); + + // 如果已经没有建筑了 + if (buildings.Count == 0) + { + researchBuildings.Remove(project); + + // 调用Patch创建的移除方法来丢失科技 + OnResearchLostDueToBuildingLoss(project); + } + } + } + + /// + /// === 新增:科技因建筑损失而丢失的处理 === + /// + private void OnResearchLostDueToBuildingLoss(ResearchProjectDef project) + { + if (project == null) + return; + + ArachnaeLog.Debug($"[ResearchManager] Research project lost due to building loss: {project.defName}"); + + try + { + // 使用ResearchRemover类来移除科技 + if (ResearchRemover.RemoveResearchProject(project, removeDependencies: false)) + { + // 发送游戏内消息 + Messages.Message( + "ResearchManager_ResearchLost".Translate(project.LabelCap), + MessageTypeDefOf.NegativeEvent + ); + + // 发送日志 + ArachnaeLog.Debug($"[ResearchManager] Research project '{project.defName}' has been removed due to loss of all research buildings."); + } + else + { + Log.Warning($"[ResearchManager] Failed to remove research project: {project.defName}"); + } + } + catch (Exception ex) + { + Log.Error($"[ResearchManager] Error removing research project {project.defName}: {ex}"); + } } /// @@ -141,7 +235,10 @@ namespace ArachnaeSwarm removedCount += allReaders.RemoveAll(b => b == null || b.Destroyed || !b.Spawned || b.Map == null); - Log.Message($"[ResearchManager] Cleaned up {removedCount} invalid buildings from allReaders"); + if (removedCount > 0) + { + ArachnaeLog.Debug($"[ResearchManager] Cleaned up {removedCount} invalid buildings from allReaders"); + } } else { @@ -175,9 +272,18 @@ namespace ArachnaeSwarm foreach (var project in projectsToRemove) { researchBuildings.Remove(project); + + // 如果项目存在且有效,触发丢失逻辑 + if (project != null) + { + OnResearchLostDueToBuildingLoss(project); + } } - Log.Message($"[ResearchManager] Cleaned up {projectsToRemove.Count} empty research projects"); + if (projectsToRemove.Count > 0) + { + ArachnaeLog.Debug($"[ResearchManager] Cleaned up {projectsToRemove.Count} empty research projects"); + } } else { @@ -202,7 +308,7 @@ namespace ArachnaeSwarm if (!allReaders.Contains(reader)) { allReaders.Add(reader); - Log.Message($"[ResearchManager] Registered reader: {reader.ThingID} at position {reader.Position}"); + ArachnaeLog.Debug($"[ResearchManager] Registered reader: {reader.ThingID} at position {reader.Position}"); } } @@ -225,7 +331,7 @@ namespace ArachnaeSwarm if (!researchBuildings[project].Contains(reader)) { researchBuildings[project].Add(reader); - Log.Message($"[ResearchManager] Registered research: {project.defName} at building {reader.Position}"); + ArachnaeLog.Debug($"[ResearchManager] Registered research: {project.defName} at building {reader.Position}"); } } @@ -236,23 +342,26 @@ namespace ArachnaeSwarm { if (project == null) { - Log.Message("[ResearchManager] Project is null, cannot process building destruction"); + ArachnaeLog.Debug("[ResearchManager] Project is null, cannot process building destruction"); return; } - Log.Message($"[ResearchManager] Processing building destruction for project: {project.defName}"); + ArachnaeLog.Debug($"[ResearchManager] Processing building destruction for project: {project.defName}"); // 从列表中移除 if (researchBuildings != null && researchBuildings.ContainsKey(project)) { researchBuildings[project].Remove(building); - Log.Message($"[ResearchManager] Removed building from project list. Remaining buildings: {researchBuildings[project].Count}"); + ArachnaeLog.Debug($"[ResearchManager] Removed building from project list. Remaining buildings: {researchBuildings[project].Count}"); // 检查是否还有建筑 if (researchBuildings[project].Count == 0) { researchBuildings.Remove(project); - Log.Message($"[ResearchManager] No buildings left for project: {project.defName}"); + ArachnaeLog.Debug($"[ResearchManager] No buildings left for project: {project.defName}"); + + // 触发科技丢失检查 + OnResearchLostDueToBuildingLoss(project); } } @@ -263,7 +372,50 @@ namespace ArachnaeSwarm } } - // ... 其余方法保持不变 ... + /// + /// === 新增:获取指定科技的建筑数量 === + /// + public int GetBuildingCountForResearch(ResearchProjectDef project) + { + if (project == null || !researchBuildings.ContainsKey(project)) + return 0; + + return researchBuildings[project]?.Count(b => b != null && !b.Destroyed && b.Spawned) ?? 0; + } + + /// + /// === 新增:手动触发科技丢失检查(用于调试) === + /// + public void DebugTriggerLostResearchCheck() + { + ArachnaeLog.Debug("[ResearchManager] Manual trigger of lost research check"); + CheckForLostResearch(); + } + + /// + /// === 新增:强制移除某个科技(用于调试) === + /// + public void DebugForceRemoveResearch(ResearchProjectDef project) + { + if (project == null) + return; + + ArachnaeLog.Debug($"[ResearchManager] Debug force remove research: {project.defName}"); + + // 从字典中移除 + if (researchBuildings.ContainsKey(project)) + { + researchBuildings.Remove(project); + } + + // 使用ResearchRemover移除科技 + ResearchRemover.RemoveResearchProject(project, removeDependencies: false); + + Messages.Message( + $"Debug: Research '{project.LabelCap}' has been forcibly removed.", + MessageTypeDefOf.NeutralEvent + ); + } /// /// 调试命令 @@ -272,13 +424,13 @@ namespace ArachnaeSwarm { if (Instance == null) { - Log.Message("[ResearchManager] No instance found"); + ArachnaeLog.Debug("[ResearchManager] No instance found"); return; } - Log.Message("=== Research Manager Status ==="); - Log.Message($"Total buildings: {Instance.allReaders?.Count ?? 0}"); - Log.Message($"Active research projects: {Instance.researchBuildings?.Count ?? 0}"); + ArachnaeLog.Debug("=== Research Manager Status ==="); + ArachnaeLog.Debug($"Total buildings: {Instance.allReaders?.Count ?? 0}"); + ArachnaeLog.Debug($"Active research projects: {Instance.researchBuildings?.Count ?? 0}"); if (Instance.researchBuildings != null) { @@ -287,7 +439,7 @@ namespace ArachnaeSwarm if (kvp.Key == null) continue; int activeBuildings = kvp.Value?.Count(b => b != null && !b.Destroyed && b.Spawned) ?? 0; - Log.Message($" - {kvp.Key.defName}: {activeBuildings} active buildings"); + ArachnaeLog.Debug($" - {kvp.Key.defName}: {activeBuildings} active buildings"); } } } diff --git a/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompDestroyRemovesResearch.cs b/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompDestroyRemovesResearch.cs index ead679a..2e998a3 100644 --- a/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompDestroyRemovesResearch.cs +++ b/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompDestroyRemovesResearch.cs @@ -5,7 +5,7 @@ using System.Linq; using Verse; using UnityEngine; -namespace ArachnaeSwarm.Comps +namespace ArachnaeSwarm { public class CompDestroyRemovesResearch : ThingComp { @@ -70,7 +70,7 @@ namespace ArachnaeSwarm.Comps int removedCount = 0; foreach (var project in projectsToRemove) { - if (Utilities.ResearchRemover.RemoveResearchProject(project, false)) + if (ResearchRemover.RemoveResearchProject(project, false)) { removedCount++; } @@ -124,7 +124,7 @@ namespace ArachnaeSwarm.Comps Messages.Message(message, MessageTypeDefOf.NegativeEvent); // 同时在日志中记录 - Log.Message($"[ResearchRemover] Building {parent.LabelCap} destroyed, removed {removedCount} research projects: " + + ArachnaeLog.Debug($"[ResearchRemover] Building {parent.LabelCap} destroyed, removed {removedCount} research projects: " + string.Join(", ", projectsRemoved.Select(p => p.defName))); } @@ -210,7 +210,7 @@ namespace ArachnaeSwarm.Comps int removedCount = 0; foreach (var project in projectsToRemove) { - if (Utilities.ResearchRemover.RemoveResearchProject(project, false)) + if (ResearchRemover.RemoveResearchProject(project, false)) { removedCount++; } diff --git a/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompProperties_DestroyRemovesResearch.cs b/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompProperties_DestroyRemovesResearch.cs index 2f7565d..907533a 100644 --- a/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompProperties_DestroyRemovesResearch.cs +++ b/Source/ArachnaeSwarm/HarmonyPatches/DestroyRemovesResearch/CompProperties_DestroyRemovesResearch.cs @@ -3,7 +3,7 @@ using System.Collections.Generic; using RimWorld; using Verse; -namespace ArachnaeSwarm.Comps +namespace ArachnaeSwarm { public class CompProperties_DestroyRemovesResearch : CompProperties { diff --git a/Source/ArachnaeSwarm/HarmonyPatches/Patch_ResearchManager_AddRemoveMethod.cs b/Source/ArachnaeSwarm/HarmonyPatches/Patch_ResearchManager_AddRemoveMethod.cs index 50e56f8..068e048 100644 --- a/Source/ArachnaeSwarm/HarmonyPatches/Patch_ResearchManager_AddRemoveMethod.cs +++ b/Source/ArachnaeSwarm/HarmonyPatches/Patch_ResearchManager_AddRemoveMethod.cs @@ -6,7 +6,7 @@ using System.Linq; using System.Reflection; using Verse; -namespace ArachnaeSwarm.Utilities +namespace ArachnaeSwarm { public static class ResearchRemover { @@ -61,7 +61,7 @@ namespace ArachnaeSwarm.Utilities return false; } - Log.Message($"[ResearchRemover] Removing research project: {projectDef.defName}"); + ArachnaeLog.Debug($"[ResearchRemover] Removing research project: {projectDef.defName}"); // 获取字段值 var progress = (Dictionary)progressField.GetValue(manager); @@ -81,21 +81,21 @@ namespace ArachnaeSwarm.Utilities if (progress != null && progress.ContainsKey(projectDef)) { progress.Remove(projectDef); - Log.Message($" Removed from progress dictionary"); + ArachnaeLog.Debug($" Removed from progress dictionary"); } // 2. 从科技碎片字典中移除 if (techprints != null && techprints.ContainsKey(projectDef)) { techprints.Remove(projectDef); - Log.Message($" Removed from techprints dictionary"); + ArachnaeLog.Debug($" Removed from techprints dictionary"); } // 3. 从异常知识字典中移除 if (anomalyKnowledge != null && anomalyKnowledge.ContainsKey(projectDef)) { anomalyKnowledge.Remove(projectDef); - Log.Message($" Removed from anomalyKnowledge dictionary"); + ArachnaeLog.Debug($" Removed from anomalyKnowledge dictionary"); } // 4. 如果这是当前项目,停止它 @@ -103,7 +103,7 @@ namespace ArachnaeSwarm.Utilities { manager.StopProject(projectDef); currentProjField.SetValue(manager, null); - Log.Message($" Stopped current project"); + ArachnaeLog.Debug($" Stopped current project"); } // 5. 从异常知识项目中移除 @@ -119,7 +119,7 @@ namespace ArachnaeSwarm.Utilities removed = true; } } - if (removed) Log.Message($" Removed from anomaly knowledge projects"); + if (removed) ArachnaeLog.Debug($" Removed from anomaly knowledge projects"); } // 6. 如果设置了移除依赖项,递归移除依赖于此科技的项目 @@ -132,7 +132,7 @@ namespace ArachnaeSwarm.Utilities // 7. 重新应用所有mod(取消该科技的效果) manager.ReapplyAllMods(); - Log.Message($"[ResearchRemover] Successfully removed research project: {projectDef.defName}"); + ArachnaeLog.Debug($"[ResearchRemover] Successfully removed research project: {projectDef.defName}"); return true; } catch (Exception ex) @@ -184,7 +184,7 @@ namespace ArachnaeSwarm.Utilities foreach (var dependent in dependentProjects) { - Log.Message($" Removing dependent project: {dependent.defName}"); + ArachnaeLog.Debug($" Removing dependent project: {dependent.defName}"); // 递归移除依赖项 RemoveDependentProjects(dependent, progress, techprints, anomalyKnowledge, @@ -246,7 +246,7 @@ namespace ArachnaeSwarm.Utilities .Where(p => p.IsFinished) .ToList(); - Log.Message($"[ResearchRemover] Removing all {allFinishedProjects.Count} finished research projects"); + ArachnaeLog.Debug($"[ResearchRemover] Removing all {allFinishedProjects.Count} finished research projects"); // 批量移除所有科技 RemoveMultipleProjects(allFinishedProjects, false); diff --git a/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompHediffTerrainSpawn.cs b/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompHediffTerrainSpawn.cs index 4c88f03..49f1c5f 100644 --- a/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompHediffTerrainSpawn.cs +++ b/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompHediffTerrainSpawn.cs @@ -1,5 +1,8 @@ -using RimWorld; +// File: CompHediffTerrainSpawn.cs +using RimWorld; +using System.Collections.Generic; using Verse; +using Verse.Sound; namespace ArachnaeSwarm { @@ -13,6 +16,11 @@ namespace ArachnaeSwarm private int ticksUntilNextSpawn; private bool initialized = false; + + // === 新增:缓存数据 === + private int lastCellCount = 0; + private float lastSpawnTime = 0f; + private List affectedCells = new List(); public override void CompPostTick(ref float severityAdjustment) { @@ -55,6 +63,14 @@ namespace ArachnaeSwarm if (Props.onlyWhenMoving && (parent.pawn.pather == null || !parent.pawn.pather.Moving)) return false; + + // === 新增:检查是否在Creep上 === + if (Props.onlyWhenOnCreep) + { + var terrain = parent.pawn.Map.terrainGrid.TerrainAt(parent.pawn.Position); + if (terrain == null || terrain.tags == null || !terrain.tags.Contains("ARA_Creep")) + return false; + } // 确保pawn在地图内 if (!parent.pawn.Position.InBounds(parent.pawn.Map)) @@ -72,20 +88,59 @@ namespace ArachnaeSwarm { Map map = parent.pawn.Map; IntVec3 center = parent.pawn.Position; + + // 清空受影响单元格列表 + affectedCells.Clear(); + int spawnedCount = 0; foreach (IntVec3 current in GenRadial.RadialCellsAround(center, Props.spawnRadius, true)) { - if (current.InBounds(map) && current.Walkable(map)) + if (!current.InBounds(map) || !current.Walkable(map)) + continue; + + // === 新增:检查是否被占用 === + if (Props.ignoreOccupiedCells && IsCellOccupied(current, map)) + continue; + + TerrainDef currentTerrain = map.terrainGrid.TerrainAt(current); + if (currentTerrain == null) + continue; + + // === 新增:使用黑名单检查 === + if (ShouldSkipTerrain(currentTerrain, current, map)) { - // 检查当前地形是否有 ARA_Creep 标签 - TerrainDef currentTerrain = map.terrainGrid.TerrainAt(current); - if (currentTerrain != null && HasCreepTag(currentTerrain)) - { - continue; // 跳过有 ARA_Creep 标签的地面 - } - - map.terrainGrid.SetTerrain(current, Props.terrainToSpawn); + continue; // 跳过有排除tag的地面 } + // === 新增:检查是否只影响自己的Creep === + if (Props.affectOwnCreepOnly && currentTerrain.tags != null && + currentTerrain.tags.Contains("ARA_Creep")) + { + // 这里可以添加派系检查逻辑 + // 例如,只覆盖自己派系的Creep + } + + // 应用地形变化 + map.terrainGrid.SetTerrain(current, Props.terrainToSpawn); + affectedCells.Add(current); + spawnedCount++; + + // === 新增:播放效果 === + TryPlayEffects(current, map, spawnedCount); + } + + lastCellCount = spawnedCount; + lastSpawnTime = Find.TickManager.TicksGame; + + // 播放声音 + if (Props.spawnSound != null && Rand.Chance(Props.soundChance)) + { + Props.spawnSound.PlayOneShot(new TargetInfo(center, map)); + } + + // 调试日志 + if (spawnedCount > 0) + { + ArachnaeLog.Debug($"[HediffTerrainSpawn] Spawned {spawnedCount} terrain cells for {parent.pawn.LabelShort}"); } } catch (System.Exception ex) @@ -93,13 +148,135 @@ namespace ArachnaeSwarm ArachnaeLog.Debug($"Error in CompHediffTerrainSpawn.DoTerrainSpawn: {ex}"); } } + + /// + /// === 新增:检查单元格是否被占用 === + /// + private bool IsCellOccupied(IntVec3 cell, Map map) + { + var thingList = cell.GetThingList(map); + foreach (var thing in thingList) + { + // 忽略建筑和植物 + if (thing is Building || thing is Plant) + { + return true; + } + + // 忽略有生命的生物 + if (thing is Pawn pawn && !pawn.Dead) + { + return true; + } + } + return false; + } /// - /// 检查地形是否具有 ARA_Creep 标签 + /// === 新增:检查是否应该跳过此地形 === + /// 基于tag黑名单、允许性和其他条件 /// - private bool HasCreepTag(TerrainDef terrain) + private bool ShouldSkipTerrain(TerrainDef terrain, IntVec3 cell, Map map) { - return terrain.tags != null && terrain.tags.Contains("ARA_Creep"); + if (terrain == null) + return false; + + // 1. 检查tag黑名单 + if (Props.IsTerrainExcluded(terrain)) + { + return true; + } + + // 2. 检查允许性(如果启用) + if (Props.checkAffordances && terrain.affordances != null && Props.excludeAffordances != null) + { + foreach (var affordance in terrain.affordances) + { + if (affordance != null && Props.excludeAffordances.Contains(affordance.defName)) + { + return true; + } + } + } + + // 3. 检查优先地形(如果启用智能覆盖) + if (Props.smartOverlay && Props.IsPreferredTerrain(terrain)) + { + return true; + } + + // 4. 检查路径(如果启用路径保护) + if (Props.preservePaths) + { + if (IsPathCell(cell, map)) + { + return true; + } + } + + // 5. 检查是否是水或其他特殊地形 + if (terrain.IsWater || terrain.defName.Contains("Water") || terrain.defName.Contains("Marsh")) + { + return true; + } + + return false; + } + + /// + /// === 新增:检查是否应该覆盖此地形(智能覆盖模式) === + /// + private bool ShouldOverlayTerrain(TerrainDef terrain) + { + if (terrain == null) + return false; + + // 默认逻辑:仅覆盖"较差"的地形 + + // 如果地形已经有我们要生成的类型,跳过 + if (terrain == Props.terrainToSpawn) + { + return false; + } + + // 检查是否是肥沃土壤 + if (terrain.fertility > 0.5f) + { + return false; + } + + return true; + } + + /// + /// === 新增:检查是否是路径单元格 === + /// + private bool IsPathCell(IntVec3 cell, Map map) + { + // 检查是否有路径标记 + // 这里可以根据需要扩展,检查设计者路径标记等 + // 暂时返回false,因为需要更多信息 + return false; + } + + /// + /// === 新增:尝试播放效果 === + /// + private void TryPlayEffects(IntVec3 cell, Map map, int spawnedCount) + { + if (Props.spawnEffecter == null || !Rand.Chance(Props.effectChance)) + return; + + try + { + var effecter = Props.spawnEffecter.Spawn(); + effecter.Trigger(new TargetInfo(cell, map), new TargetInfo(cell, map)); + effecter.Cleanup(); + } + catch (System.Exception ex) + { + ArachnaeLog.Debug($"Error playing effect at {cell}: {ex.Message}"); + } } public override void CompExposeData() @@ -107,6 +284,8 @@ namespace ArachnaeSwarm base.CompExposeData(); Scribe_Values.Look(ref ticksUntilNextSpawn, "ticksUntilNextSpawn", Props.intervalTicks); Scribe_Values.Look(ref initialized, "initialized", false); + Scribe_Values.Look(ref lastCellCount, "lastCellCount", 0); + Scribe_Values.Look(ref lastSpawnTime, "lastSpawnTime", 0f); } /// @@ -120,7 +299,28 @@ namespace ArachnaeSwarm return $"Next spawn in: {ticksUntilNextSpawn} ticks\n" + $"Interval: {Props.intervalTicks} ticks\n" + $"Radius: {Props.spawnRadius}\n" + - $"Terrain: {Props.terrainToSpawn?.defName ?? "None"}"; + $"Terrain: {Props.terrainToSpawn?.defName ?? "None"}\n" + + $"Last spawned: {lastCellCount} cells at tick {lastSpawnTime}"; + } + + /// + /// === 新增:获取受影响的单元格(用于调试) === + /// + public List GetAffectedCells() + { + return new List(affectedCells); + } + + /// + /// === 新增:获取黑名单信息 === + /// + public string GetBlacklistInfo() + { + var excludedTags = Props.GetExcludedTags(); + if (excludedTags.Count == 0) + return "No tags excluded"; + + return $"Excluded tags: {string.Join(", ", excludedTags)}"; } } } diff --git a/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompProperties_HediffTerrainSpawn.cs b/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompProperties_HediffTerrainSpawn.cs index 8038b21..f8195f9 100644 --- a/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompProperties_HediffTerrainSpawn.cs +++ b/Source/ArachnaeSwarm/Hediffs/ARA_HediffTerrainSpawn/CompProperties_HediffTerrainSpawn.cs @@ -1,3 +1,5 @@ +// File: CompProperties_HediffTerrainSpawn.cs +using System.Collections.Generic; using Verse; namespace ArachnaeSwarm @@ -16,9 +18,95 @@ namespace ArachnaeSwarm public bool onlyWhenDowned = false; public bool onlyWhenMoving = false; + // === 新增:tag黑名单 === + public List excludedTerrainTags = null; // 要排除的tag列表 + public bool useDefaultExclusions = true; // 是否使用默认排除项(ARA_Creep和ARA_Incubator_Nutrient_Solution) + + // === 新增:扩展检查选项 === + public bool checkAffordances = false; // 是否检查地形允许性(affordances) + public List excludeAffordances = null; // 要排除的允许性列表 + + // === 新增:智能覆盖选项 === + public bool smartOverlay = false; // 是否智能覆盖(仅覆盖"较差"的地形) + public List preferredTerrains = null; // 优先地形列表,这些不会被覆盖 + public bool preservePaths = false; // 是否保留路径 + + // === 新增:行为选项 === + public bool onlyWhenOnCreep = false; // 是否只在Creep上生效 + public bool ignoreOccupiedCells = true; // 是否忽略被占用的单元格 + public bool affectOwnCreepOnly = false; // 是否只影响自己的Creep(如果有派系) + + // === 新增:视觉效果选项 === + public EffecterDef spawnEffecter = null; // 生成地形时的效果 + public float effectChance = 0.3f; // 效果播放几率 + public SoundDef spawnSound = null; // 生成地形时的声音 + public float soundChance = 0.1f; // 声音播放几率 + public CompProperties_HediffTerrainSpawn() { compClass = typeof(CompHediffTerrainSpawn); } + + /// + /// 获取要排除的tag列表(包括默认值) + /// + public List GetExcludedTags() + { + var tags = new List(); + + // 如果使用默认排除项,添加默认tag + if (useDefaultExclusions) + { + if (!tags.Contains("ARA_Creep")) + tags.Add("ARA_Creep"); + if (!tags.Contains("ARA_Incubator_Nutrient_Solution")) + tags.Add("ARA_Incubator_Nutrient_Solution"); + } + + // 添加自定义排除项 + if (excludedTerrainTags != null) + { + foreach (var tag in excludedTerrainTags) + { + if (!tags.Contains(tag)) + tags.Add(tag); + } + } + + return tags; + } + + /// + /// 检查地形是否被排除 + /// + public bool IsTerrainExcluded(TerrainDef terrain) + { + if (terrain == null || terrain.tags == null) + return false; + + var excludedTags = GetExcludedTags(); + if (excludedTags.Count == 0) + return false; + + // 检查地形是否有排除tag + foreach (var tag in terrain.tags) + { + if (excludedTags.Contains(tag)) + return true; + } + + return false; + } + + /// + /// 检查地形是否在优先列表中(智能覆盖) + /// + public bool IsPreferredTerrain(TerrainDef terrain) + { + if (terrain == null || preferredTerrains == null) + return false; + + return preferredTerrains.Contains(terrain); + } } } diff --git a/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompHediffGiver.cs b/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompHediffGiver.cs index 35f36aa..15485b6 100644 --- a/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompHediffGiver.cs +++ b/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompHediffGiver.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using Verse; using RimWorld; @@ -44,10 +44,53 @@ namespace ArachnaeSwarm if (!Props.allowDuplicates && pawn.health.hediffSet.HasHediff(hediffDef)) continue; + // === 新增:获取应应用的部位 === + BodyPartDef bodyPartDef = Props.GetBodyPartForHediff(hediffDef); + BodyPartRecord bodyPartRecord = null; + + if (bodyPartDef != null) + { + bodyPartRecord = GetFirstMatchingBodyPart(pawn, bodyPartDef); + } + // 添加hediff - pawn.health.AddHediff(hediffDef); + if (bodyPartRecord != null) + { + pawn.health.AddHediff(hediffDef, bodyPartRecord); + } + else + { + pawn.health.AddHediff(hediffDef); + } } } + + /// + /// 获取第一个匹配的身体部位记录 + /// + private BodyPartRecord GetFirstMatchingBodyPart(Pawn pawn, BodyPartDef bodyPartDef) + { + if (pawn == null || bodyPartDef == null || pawn.RaceProps?.body == null) + return null; + + try + { + // 获取所有匹配的身体部位 + List matchingParts = pawn.RaceProps.body.GetPartsWithDef(bodyPartDef); + + if (matchingParts != null && matchingParts.Count > 0) + { + // 返回第一个可用的部位 + return matchingParts[0]; + } + } + catch (Exception ex) + { + ArachnaeLog.Debug($"Error getting body part for {bodyPartDef.defName}: {ex.Message}"); + } + + return null; + } // 新增:序列化hediffsApplied标记 public override void PostExposeData() @@ -66,5 +109,33 @@ namespace ArachnaeSwarm ArachnaeLog.Debug($"Debug: Applied hediffs to {pawn.Label}"); } } + + /// + /// === 新增:获取已应用的hediff信息(用于调试) === + /// + public string GetAppliedHediffInfo() + { + if (!hediffsApplied || !(this.parent is Pawn pawn)) + return "No hediffs applied"; + + var result = new System.Text.StringBuilder(); + result.AppendLine("Applied hediffs:"); + + foreach (var hediffDef in Props.hediffs) + { + var hediff = pawn.health.hediffSet.GetFirstHediffOfDef(hediffDef); + if (hediff != null) + { + string partInfo = hediff.Part?.def?.defName ?? "No specific part"; + result.AppendLine($"- {hediffDef.defName} on {partInfo}"); + } + else + { + result.AppendLine($"- {hediffDef.defName} (not applied)"); + } + } + + return result.ToString(); + } } } diff --git a/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompProperties_HediffGiver.cs b/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompProperties_HediffGiver.cs index 3cee652..db67c96 100644 --- a/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompProperties_HediffGiver.cs +++ b/Source/ArachnaeSwarm/Pawn_Comps/ARA_CompHediffGiver/CompProperties_HediffGiver.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; using Verse; @@ -14,10 +13,39 @@ namespace ArachnaeSwarm // 是否允许重复添加相同的hediff public bool allowDuplicates = false; + + // === 新增:优先应用部位设置 === + public bool useDefaultInstallPart = true; // 是否使用HediffDef的defaultInstallPart + + // === 新增:自定义部位映射 === + public Dictionary customBodyPartMapping = null; public CompProperties_HediffGiver() { this.compClass = typeof(CompHediffGiver); } + + /// + /// 获取Hediff应该应用的部位 + /// + public BodyPartDef GetBodyPartForHediff(HediffDef hediffDef) + { + if (hediffDef == null) + return null; + + // 首先检查自定义映射 + if (customBodyPartMapping != null && customBodyPartMapping.ContainsKey(hediffDef)) + { + return customBodyPartMapping[hediffDef]; + } + + // 然后检查是否使用默认安装部位 + if (useDefaultInstallPart && hediffDef.defaultInstallPart != null) + { + return hediffDef.defaultInstallPart; + } + + return null; // 没有指定部位 + } } } diff --git a/Source/ArachnaeSwarm/Verbs/Cleave/Verb_MeleeAttack_Cleave.cs b/Source/ArachnaeSwarm/Verbs/Cleave/Verb_MeleeAttack_Cleave.cs index 7173dd5..83f2a6d 100644 --- a/Source/ArachnaeSwarm/Verbs/Cleave/Verb_MeleeAttack_Cleave.cs +++ b/Source/ArachnaeSwarm/Verbs/Cleave/Verb_MeleeAttack_Cleave.cs @@ -75,7 +75,7 @@ namespace ArachnaeSwarm } // 智能溅射:次要目标的敌对状态必须与主目标一致 - if (secondaryTargetPawn.HostileTo(casterPawn)) + if (secondaryTargetPawn.Faction == casterPawn.Faction) { continue; } diff --git a/非公开资源/Content/Textures/Terrain/Surfaces/ARA_InsectJelly_Terrain.png b/非公开资源/Content/Textures/Terrain/Surfaces/ARA_InsectJelly_Terrain.png index 51ee441..068499b 100644 Binary files a/非公开资源/Content/Textures/Terrain/Surfaces/ARA_InsectJelly_Terrain.png and b/非公开资源/Content/Textures/Terrain/Surfaces/ARA_InsectJelly_Terrain.png differ