diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 4adeecf..a73e712 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/Thing_building/ARA_Vat.xml b/1.6/1.6/Defs/Thing_building/ARA_Vat.xml index 8ae2512..df67c59 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_Vat.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_Vat.xml @@ -77,7 +77,7 @@ ARA_RefuelingVat 一个特殊的活体建筑,可以置入阿拉克涅虫群的俘虏,使用缓慢而痛苦的方式提取其遗传物质,将其转换为精华素以供虫群使用。\n\n——怎么采集的你别问。 - ArachnaeSwarm.Building_RefuelingVat + ArachnaeSwarm.Building_CorpseVat true Normal @@ -182,7 +182,7 @@ -
  • +
  • ArachnaeSwarm/Building/ARA_RefuelingVatTop diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index 4bdb7a1..109b496 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 1d48fef..48d2466 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -1,37 +1,45 @@ { "Version": 1, - "WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\", + "WorkspaceRootPath": "E:\\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\\buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\building_corpsevat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_corpsevat\\corpsevatextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_corpsevat\\corpsevatextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + }, + { + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\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\\jobs\\jobdriver_plant\\jobgiver_grower.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\jobs\\jobdriver_plant\\jobgiver_grower.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_plant\\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\\jobs\\jobdriver_clean\\jobgiver_cleaner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\jobs\\jobdriver_clean\\jobgiver_cleaner.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:jobs\\jobdriver_clean\\jobgiver_cleaner.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\\abilities\\ara_huggingface\\hediff_possession.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\abilities\\ara_huggingface\\hediff_possession.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_huggingface\\hediff_possession.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\\abilities\\ara_huggingface\\compabilityeffect_possess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\abilities\\ara_huggingface\\compabilityeffect_possess.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_huggingface\\compabilityeffect_possess.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|E:\\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\\hediffs\\ara_hediffterrainspawn\\compproperties_hediffterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\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\\hediffs\\ara_hediffterrainspawn\\comphediffterrainspawn.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|E:\\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}" } ], @@ -42,7 +50,7 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 6, + "SelectedChildIndex": 2, "Children": [ { "$type": "Bookmark", @@ -51,23 +59,48 @@ { "$type": "Document", "DocumentIndex": 1, - "Title": "JobGiver_Grower.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\JobGiver_Grower.cs", - "RelativeDocumentMoniker": "Jobs\\JobDriver_Plant\\JobGiver_Grower.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\JobGiver_Grower.cs", - "RelativeToolTip": "Jobs\\JobDriver_Plant\\JobGiver_Grower.cs", - "ViewState": "AgIAAFMAAAAAAAAAAAAQwGkAAAANAAAAAAAAAA==", + "Title": "CorpseVatExtension.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\CorpseVatExtension.cs", + "RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\CorpseVatExtension.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\CorpseVatExtension.cs", + "RelativeToolTip": "Buildings\\Building_CorpseVat\\CorpseVatExtension.cs", + "ViewState": "AgIAAAAAAAAAAAAAAADwvx0AAAAoAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-23T08:51:03.439Z", + "WhenOpened": "2026-01-23T10:25:01.777Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 0, + "Title": "Building_CorpseVat.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\Building_CorpseVat.cs", + "RelativeDocumentMoniker": "Buildings\\Building_CorpseVat\\Building_CorpseVat.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_CorpseVat\\Building_CorpseVat.cs", + "RelativeToolTip": "Buildings\\Building_CorpseVat\\Building_CorpseVat.cs", + "ViewState": "AgIAAKAAAAAAAAAAAAAlwMkAAABLAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-01-23T10:24:46.264Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 3, + "Title": "JobGiver_Grower.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\JobGiver_Grower.cs", + "RelativeDocumentMoniker": "Jobs\\JobDriver_Plant\\JobGiver_Grower.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Plant\\JobGiver_Grower.cs", + "RelativeToolTip": "Jobs\\JobDriver_Plant\\JobGiver_Grower.cs", + "ViewState": "AgIAAFMAAAAAAAAAAAAQwGkAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-01-23T08:51:03.439Z" + }, + { + "$type": "Document", + "DocumentIndex": 5, "Title": "Hediff_Possession.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\Hediff_Possession.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\Hediff_Possession.cs", "RelativeDocumentMoniker": "Abilities\\ARA_HuggingFace\\Hediff_Possession.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\Hediff_Possession.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\Hediff_Possession.cs", "RelativeToolTip": "Abilities\\ARA_HuggingFace\\Hediff_Possession.cs", "ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -75,11 +108,11 @@ }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 6, "Title": "CompAbilityEffect_Possess.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs", "RelativeDocumentMoniker": "Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs", "RelativeToolTip": "Abilities\\ARA_HuggingFace\\CompAbilityEffect_Possess.cs", "ViewState": "AgIAAHcAAAAAAAAAAAAAAIkAAAA5AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -87,11 +120,24 @@ }, { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 2, + "Title": "Building_Ootheca.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs", + "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\Building_Ootheca.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\Building_Ootheca.cs", + "RelativeToolTip": "Buildings\\Building_Ootheca\\Building_Ootheca.cs", + "ViewState": "AgIAABoBAAAAAAAAAAAvwEUBAAAIAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2026-01-23T08:31:14.555Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 7, "Title": "CompDelayedTerrainSpawn.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs", + "DocumentMoniker": "E:\\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", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs", "RelativeToolTip": "Building_Comps\\ARA_BuildingTerrainSpawn\\CompDelayedTerrainSpawn.cs", "ViewState": "AgIAAFEAAAAAAAAAAAAAAF8AAAA+AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -99,11 +145,11 @@ }, { "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 8, "Title": "CompProperties_HediffTerrainSpawn.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs", + "DocumentMoniker": "E:\\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", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs", "RelativeToolTip": "Hediffs\\ARA_HediffTerrainSpawn\\CompProperties_HediffTerrainSpawn.cs", "ViewState": "AgIAAAUAAAAAAAAAAAAtwBkAAAAxAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -111,24 +157,11 @@ }, { "$type": "Document", - "DocumentIndex": 0, - "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": "AgIAABoBAAAAAAAAAAAvwDEBAAAmAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-23T08:31:14.555Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 4, "Title": "JobGiver_Cleaner.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs", + "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs", "RelativeDocumentMoniker": "Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs", "RelativeToolTip": "Jobs\\JobDriver_Clean\\JobGiver_Cleaner.cs", "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAABwAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -136,11 +169,11 @@ }, { "$type": "Document", - "DocumentIndex": 7, + "DocumentIndex": 9, "Title": "CompHediffTerrainSpawn.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs", + "DocumentMoniker": "E:\\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", + "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs", "RelativeToolTip": "Hediffs\\ARA_HediffTerrainSpawn\\CompHediffTerrainSpawn.cs", "ViewState": "AgIAAKIAAAAAAAAAAAAawLQAAAAMAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", diff --git a/Source/ArachnaeSwarm/Buildings/Building_CorpseVat/Building_CorpseVat.cs b/Source/ArachnaeSwarm/Buildings/Building_CorpseVat/Building_CorpseVat.cs index 1a0cf05..cda596c 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_CorpseVat/Building_CorpseVat.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_CorpseVat/Building_CorpseVat.cs @@ -22,8 +22,6 @@ namespace ArachnaeSwarm private static readonly JobDef HaulCorpseToVatJobDef = DefDatabase.GetNamedSilentFail("ARA_HaulCorpseToVat"); private const int MaxDistanceForAutoAssignment = 30; // 自动分配工作的最大距离 - // 反射缓存 - private static System.Reflection.MethodInfo corpseDrawAtMethod; #endregion #region 字段和属性 @@ -66,14 +64,6 @@ namespace ArachnaeSwarm return cachedTopGraphic; } } - - // 静态构造函数 - static Building_CorpseVat() - { - // 使用反射获取DrawAt方法 - corpseDrawAtMethod = typeof(Corpse).GetMethod("DrawAt", - System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); - } #endregion #region 构造函数 @@ -353,20 +343,32 @@ namespace ArachnaeSwarm } /// - /// 创建搬运工作 + /// 创建搬运工作 - 修复计数问题 /// private Job CreateHaulJobForCorpse(Corpse corpse, Pawn hauler) { + Job job; + if (HaulCorpseToVatJobDef == null) { // 使用默认的搬运工作 - return JobMaker.MakeJob(JobDefOf.HaulToContainer, corpse, this); + job = JobMaker.MakeJob(JobDefOf.HaulToContainer, corpse, this); } else { // 使用自定义工作 - return JobMaker.MakeJob(HaulCorpseToVatJobDef, corpse, this); + job = JobMaker.MakeJob(HaulCorpseToVatJobDef, corpse, this); } + + // 关键修复:设置搬运数量为1,避免出现-1的错误 + job.count = 1; + + // 设置有效期和工作优先级 + job.expiryInterval = 6000; // 100秒 + job.ignoreForbidden = true; + job.haulMode = HaulMode.ToContainer; + + return job; } #endregion @@ -593,7 +595,7 @@ namespace ArachnaeSwarm } /// - /// 绘制尸体 + /// 绘制尸体 - 修复版:直接绘制尸体的图形,不调用DrawAt方法 /// private void DrawCorpse(Vector3 drawLoc) { @@ -606,48 +608,122 @@ namespace ArachnaeSwarm // 调整高度 corpseDrawPos.y += Altitudes.AltIncVect.y * 3f; - // 绘制尸体 - 使用反射调用受保护的DrawAt方法 - if (corpseDrawAtMethod != null) + try { - try + // 方法1:直接绘制尸体的图形 + DrawCorpseDirectly(corpseDrawPos); + + // 如果需要特殊的绘制效果,可以在这里添加 + if (VatExtension != null && VatExtension.drawPreservationEffect) { - corpseDrawAtMethod.Invoke(selectedCorpse, new object[] { corpseDrawPos, false }); - } - catch (Exception ex) - { - Log.Error($"Failed to draw corpse: {ex.Message}"); + DrawPreservationEffect(corpseDrawPos); } } - else + catch (Exception ex) { - // 如果反射失败,使用替代方法绘制 - DrawCorpseAlternative(corpseDrawPos); - } - - // 如果需要特殊的绘制效果,可以在这里添加 - if (VatExtension != null && VatExtension.drawPreservationEffect) - { - DrawPreservationEffect(corpseDrawPos); + Log.Warning($"Failed to draw corpse: {ex.Message}"); + // 如果绘制失败,尝试绘制一个替代图形 + DrawCorpseFallback(corpseDrawPos); } } /// - /// 替代的绘制尸体方法 + /// 直接绘制尸体的图形 /// - private void DrawCorpseAlternative(Vector3 position) + private void DrawCorpseDirectly(Vector3 position) { if (selectedCorpse == null) return; - // 尝试使用公开的方法绘制 - try + // 获取尸体的图形 + Graphic corpseGraphic = selectedCorpse.Graphic; + if (corpseGraphic == null) { - // 使用DynamicDrawPhaseAt方法 - selectedCorpse.DynamicDrawPhaseAt(DrawPhase.Draw, position); + // 如果尸体图形为空,尝试获取其内部Pawn的图形 + Pawn innerPawn = selectedCorpse.InnerPawn; + if (innerPawn != null && innerPawn.Drawer != null) + { + // 绘制Pawn(而不是尸体)的图形 + DrawPawnInsteadOfCorpse(position, innerPawn); + return; + } + else + { + Log.Warning("Corpse graphic is null and inner pawn is null or has no drawer."); + return; + } } - catch (Exception ex) + + // 应用缩放和旋转 + Vector3 scale = new Vector3(corpseDrawScale, 1f, corpseDrawScale); + Quaternion rotation = Quaternion.Euler(0f, corpseDrawRotation, 0f); + + // 创建一个变换矩阵 + Matrix4x4 matrix = Matrix4x4.TRS(position, rotation, scale); + + // 绘制主图形 + Mesh mesh = corpseGraphic.MeshAt(selectedCorpse.Rotation); + Material material = corpseGraphic.MatAt(selectedCorpse.Rotation); + + if (mesh != null && material != null) { - Log.Error($"Failed to draw corpse (alternative): {ex.Message}"); + Graphics.DrawMesh(mesh, matrix, material, 0); + } + + // 绘制阴影(如果有) + Graphic shadowGraphic = corpseGraphic.ShadowGraphic; + if (shadowGraphic != null) + { + shadowGraphic.Draw(position, selectedCorpse.Rotation, selectedCorpse, 0f); + } + } + + /// + /// 绘制Pawn而不是尸体(替代方法) + /// + private void DrawPawnInsteadOfCorpse(Vector3 position, Pawn pawn) + { + if (pawn == null) + return; + + // 获取Pawn的图形 + Graphic pawnGraphic = pawn.Graphic; + if (pawnGraphic == null) + return; + + // 应用缩放和旋转 + Vector3 scale = new Vector3(corpseDrawScale, 1f, corpseDrawScale); + Quaternion rotation = Quaternion.Euler(0f, corpseDrawRotation, 0f); + + // 创建一个变换矩阵 + Matrix4x4 matrix = Matrix4x4.TRS(position, rotation, scale); + + // 绘制Pawn的图形 + Mesh mesh = pawnGraphic.MeshAt(pawn.Rotation); + Material material = pawnGraphic.MatAt(pawn.Rotation); + + if (mesh != null && material != null) + { + Graphics.DrawMesh(mesh, matrix, material, 0); + } + } + + /// + /// 绘制尸体的备选图形 + /// + private void DrawCorpseFallback(Vector3 position) + { + // 绘制一个简单的替代图形 + Graphic graphic = GraphicDatabase.Get( + "Things/Item/Special/Casket_Default", + ShaderDatabase.Transparent, + new Vector2(1f, 1f), + Color.white + ); + + if (graphic != null) + { + graphic.Draw(position, Rotation, this); } } diff --git a/Source/ArachnaeSwarm/Buildings/Building_CorpseVat/CorpseVatExtension.cs b/Source/ArachnaeSwarm/Buildings/Building_CorpseVat/CorpseVatExtension.cs index 55e2fe2..100218b 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_CorpseVat/CorpseVatExtension.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_CorpseVat/CorpseVatExtension.cs @@ -21,7 +21,7 @@ namespace ArachnaeSwarm public bool drawPreservationEffect = true; // 是否绘制保存效果 // ===== 功能配置 ===== - public float slowDecayRate = 0.1f; // 腐烂减缓率(0-1,0=完全停止腐烂,1=正常腐烂) + public float slowDecayRate = 0f; // 腐烂减缓率(0-1,0=完全停止腐烂,1=正常腐烂) // ===== 音效配置 ===== public SoundDef insertSound; // 放入音效 diff --git a/非公开资源/新建画布1.sai2 b/非公开资源/新建画布1.sai2 new file mode 100644 index 0000000..fbfcdb3 Binary files /dev/null and b/非公开资源/新建画布1.sai2 differ