diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index 1126929..cb12f8a 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/Abilities_EggSpew.xml b/1.6/1.6/Defs/AbilityDefs/Abilities_EggSpew.xml index e71af7e..0cfd517 100644 --- a/1.6/1.6/Defs/AbilityDefs/Abilities_EggSpew.xml +++ b/1.6/1.6/Defs/AbilityDefs/Abilities_EggSpew.xml @@ -88,136 +88,6 @@ - - - ARA_EggSpew - - 从卵巢中排出一颗休眠的虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化小型虫族。 - ArachnaeSwarm/UI/Abilities/ARA_EggSpew - -
  • - ARA_Proj_EggSac -
  • -
  • - ARA_InteractiveEggSac - 0级阿拉克涅卵 可孵化的单位 - true -
  • -
  • - ARA_InteractiveEggSac - 温度要求 - true -
  • -
    -
    - - ARA_EggSpew_Huge - - 从卵巢中排出一颗休眠的大型虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化大型虫族。 - ArachnaeSwarm/UI/Abilities/ARA_EggSpew_Huge - -
  • - ARA_Proj_EggSac_Huge -
  • -
  • - ARA_InteractiveEggSac_Huge - 0级大型阿拉克涅卵 可孵化的单位 - true -
  • -
  • - ARA_InteractiveEggSac_Huge - 温度要求 - true -
  • -
    -
    - - - ARA_EggSpew_1Stage - - 从卵巢中排出一颗休眠的虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化小型虫族。 - ArachnaeSwarm/UI/Abilities/ARA_EggSpew_1Stage - -
  • - ARA_Proj_EggSac_1Stage -
  • -
  • - ARA_InteractiveEggSac_1Stage - 1级阿拉克涅卵 可孵化的单位 - true -
  • -
  • - ARA_InteractiveEggSac_1Stage - 温度要求 - true -
  • -
    -
    - - ARA_EggSpew_Huge_1Stage - - 从卵巢中排出一颗休眠的大型虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化大型虫族。 - ArachnaeSwarm/UI/Abilities/ARA_EggSpew_Huge_1Stage - -
  • - ARA_Proj_EggSac_Huge_1Stage -
  • -
  • - ARA_InteractiveEggSac_Huge_1Stage - 1级大型阿拉克涅卵 可孵化的单位 - true -
  • -
  • - ARA_InteractiveEggSac_Huge_1Stage - 温度要求 - true -
  • -
    -
    - - - ARA_EggSpew_2Stage - - 从卵巢中排出一颗休眠的虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化小型虫族。 - ArachnaeSwarm/UI/Abilities/ARA_EggSpew_2Stage - -
  • - ARA_Proj_EggSac_2Stage -
  • -
  • - ARA_InteractiveEggSac_2Stage - 2级阿拉克涅卵 可孵化的单位 - true -
  • -
  • - ARA_InteractiveEggSac_2Stage - 温度要求 - true -
  • -
    -
    - - ARA_EggSpew_Huge_2Stage - - 从卵巢中排出一颗休眠的大型虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。\n\n该虫卵只能孵化大型虫族。 - ArachnaeSwarm/UI/Abilities/ARA_EggSpew_Huge_2Stage - -
  • - ARA_Proj_EggSac_Huge_2Stage -
  • -
  • - ARA_InteractiveEggSac_Huge_2Stage - 2级大型阿拉克涅卵 可孵化的单位 - true -
  • -
  • - ARA_InteractiveEggSac_Huge_2Stage - 温度要求 - true -
  • -
    -
    - ARA_EggSpew_Techprint diff --git a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml index dd906cc..e3942d9 100644 --- a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml +++ b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml @@ -23,8 +23,6 @@
  • -
  • ARA_EggSpew
  • -
  • ARA_EggSpew_Huge
  • ARA_Queen_Upgrade_1_Stage
  • @@ -87,8 +85,6 @@
  • -
  • ARA_EggSpew_1Stage
  • -
  • ARA_EggSpew_Huge_1Stage
  • ARA_Queen_Upgrade_2_Stage
  • @@ -151,8 +147,6 @@
  • -
  • ARA_EggSpew_2Stage
  • -
  • ARA_EggSpew_Huge_2Stage
  • diff --git a/1.6/1.6/Defs/NeedDefs/ARA_Needs.xml b/1.6/1.6/Defs/NeedDefs/ARA_Needs.xml new file mode 100644 index 0000000..5ecb541 --- /dev/null +++ b/1.6/1.6/Defs/NeedDefs/ARA_Needs.xml @@ -0,0 +1,19 @@ + + + + ARA_HoneyProduction + ArachnaeSwarm.Need_HoneyProduction + + 代表这个生物储存阿拉克涅虫蜜原浆的多少。当其他虫族饥饿时,会尝试直接从有蜜罐腔的生物身上获取虫蜜,如果蜜罐满溢,则生物会尝试将其提取出来。 + 800 + true + true + +
  • Wula_Synth
  • +
    + true + Baby, Child, Adult + true + false +
    +
    \ No newline at end of file diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml index 38ffb73..be181ab 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceBaseSwarm.xml @@ -95,33 +95,12 @@ ArachnaeBase_Race_Scavenger - 阿拉克涅辅虫之一,智力低下,可以执行种植和收割工作,注定在度过短暂的时光后死亡。 + 阿拉克涅辅虫之一,智力低下,可以执行种植、收割、搬运和挖掘工作,注定在度过短暂的时光后死亡。
  • ARA_Sowing
  • -
    -
    - -
  • - -
  • - ARA_Sowing - true - true -
  • - - true - -
    -
    - - ArachnaeBase_Race_HardJaw - - 阿拉克涅辅虫之一,智力低下,可以承担挖矿任务,注定在度过短暂的时光后死亡。 - -
  • Dig
  • -
  • AttackTarget
  • +
  • ARA_Cleaning
  • @@ -133,27 +112,10 @@ true
  • - AttackTarget + ARA_Sowing true true
  • - - true - -
    -
    - - ArachnaeBase_Race_Maid - - 阿拉克涅辅虫之一,智力低下,可以执行清洁和搬运工作,注定在度过短暂的时光后死亡。 - - -
  • ARA_Cleaning
  • -
    -
    - -
  • -
  • ARA_Cleaning true diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml index a175cd9..9301adb 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml @@ -699,7 +699,7 @@ ArachnaeNode_Race_Myrmecocystus - 阿拉克涅大型督虫之一,拥有广泛食谱的大型虫族,可以吞下许多未经处理的生物并将其分解为阿拉克涅虫蜜,以滋养虫群。\n\n她可以进行搬运、烹饪和种植工作,战斗技能非常差。\n\n作为督虫,她可以繁育并监管若干阿拉克涅食腐种辅虫,以协助巢穴进行收割和播种工作。 + 阿拉克涅大型督虫之一,拥有广泛食谱的大型虫族,可以吞下许多未经处理的生物并将其分解为阿拉克涅虫蜜,以滋养虫群。\n\n她可以进行搬运、烹饪和种植工作,战斗技能非常差。 @@ -780,23 +780,6 @@ 1 10
  • --> -
  • - true - ARA_RaceBaseSwarmProduceSwitchHediff - ARA_InsectJelly - 1 - 1 - 999 - 9999 - -
  • - ArachnaeBase_Race_Scavenger - 2 - 1000 -
  • - - CocoonDestroyed -
  • ARA_Cycle_Suppression_Hediff ARA_LifespanHediff @@ -807,7 +790,6 @@
  • -
  • ARA_RaceBaseSwarmProduceSwitchHediff
  • ARA_Myrmecocystus_Production_InsectJelly
  • 1.0 @@ -955,17 +937,17 @@ false
  • - true + false ARA_RaceBaseSwarmProduceSwitchHediff ARA_InsectJelly 1 1 - 999 + 1 9999
  • - ArachnaeBase_Race_HardJaw - 2 + ArachnaeBase_Race_Scavenger + 4 1000
  • diff --git a/1.6/1.6/Defs/Thing_building/ARA_Incubator.xml b/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml similarity index 87% rename from 1.6/1.6/Defs/Thing_building/ARA_Incubator.xml rename to 1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml index 1e44266..4629030 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_Incubator.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_Ootheca.xml @@ -89,7 +89,7 @@ true 10 - 20 + 150 1 -6 @@ -98,8 +98,8 @@ false false - true - false + false + ARA_Incubator_Room @@ -108,7 +108,19 @@
  • ArachnaeSwarm.ITab_Ootheca_Incubation
  • + +
  • ArachnaeSwarm.PlaceWorker_CustomRadius
  • +
    +
  • + 5 + (0.5, 1, 1) + 0 + true + + 这个卵在孵化过程中的吸收半径,确保这些地格中铺满阿拉克涅营养液,并且没有其他的卵,以获得最佳的孵化速度和孵化质量。 + false +
  • 0 @@ -184,6 +196,11 @@ 6 (113,141,117,0)
  • +
  • + -10 + 20 + 0.015 +
  • \ No newline at end of file diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index 51cc3d0..cd88601 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 fb5c6e3..20e9236 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -1,85 +1,57 @@ { "Version": 1, - "WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\", + "WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\", "Documents": [ { - "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}", + "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|e:\\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\\placeworker\\compproperties_customradius.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:placeworker\\compproperties_customradius.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\\itab_ootheca_incubation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\itab_ootheca_incubation.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\\jobdriver_operateincubator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\jobdriver_operateincubator.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\\roomroleworker_incubator.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\roomroleworker_incubator.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\\powerarmor\\jobdriver_enterpowerarmor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:powerarmor\\jobdriver_enterpowerarmor.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\\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|E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\powerarmor\\ara_powerarmor.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:powerarmor\\ara_powerarmor.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_arachnaegravengine.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_arachnaegravengine.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\\flyover\\ara_groundstrafing\\compgroundstrafing.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\\flyover\\ara_groundstrafing\\compgroundstrafing.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:flyover\\ara_groundstrafing\\compgroundstrafing.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\\flyover\\ara_sectorsurveillance\\compsectorsurveillance.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\\flyover\\ara_sectorsurveillance\\compsectorsurveillance.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:flyover\\ara_sectorsurveillance\\compsectorsurveillance.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\\flyover\\thingclassflyover.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\\flyover\\thingclassflyover.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:flyover\\thingclassflyover.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\\flyover\\ara_aircrafthangar\\compabilityeffect_aircraftstrike.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\\flyover\\ara_aircrafthangar\\compabilityeffect_aircraftstrike.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:flyover\\ara_aircrafthangar\\compabilityeffect_aircraftstrike.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_givehediffwithskillduration\\compabilityeffect_givehediffwithskillduration.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_givehediffwithskillduration\\compabilityeffect_givehediffwithskillduration.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_givehediffwithskillduration\\compabilityeffect_givehediffwithskillduration.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_showtemperaturerange\\compabilityeffect_abilityshowtemperaturerange.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_showtemperaturerange\\compabilityeffect_abilityshowtemperaturerange.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_showtemperaturerange\\compabilityeffect_abilityshowtemperaturerange.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_showspawnablepawnslist\\compabilityeffect_abilityshowspawnablepawns.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_showspawnablepawnslist\\compabilityeffect_abilityshowspawnablepawns.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\ara_showspawnablepawnslist\\compabilityeffect_abilityshowspawnablepawns.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\\flyover\\ara_spawnflyover\\compabilityeffect_spawnflyover.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\\flyover\\ara_spawnflyover\\compabilityeffect_spawnflyover.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:flyover\\ara_spawnflyover\\compabilityeffect_spawnflyover.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\\flyover\\ara_aircrafthangar\\compaircrafthangar.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\\flyover\\ara_aircrafthangar\\compaircrafthangar.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:flyover\\ara_aircrafthangar\\compaircrafthangar.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\\flyover\\ara_aircrafthangar\\worldcomponent_aircraftmanager.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\\flyover\\ara_aircrafthangar\\worldcomponent_aircraftmanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:flyover\\ara_aircrafthangar\\worldcomponent_aircraftmanager.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\\flyover\\ara_flyoverescort\\compproperties_flyoverescort.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\\flyover\\ara_flyoverescort\\compproperties_flyoverescort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:flyover\\ara_flyoverescort\\compproperties_flyoverescort.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], @@ -90,8 +62,21 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 2, + "SelectedChildIndex": 0, "Children": [ + { + "$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": "AgIAAK8CAAAAAAAAAAA9wPACAAAMAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-12-15T07:28:18.272Z", + "EditorCaption": "" + }, { "$type": "Bookmark", "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" @@ -99,123 +84,23 @@ { "$type": "Document", "DocumentIndex": 1, - "Title": "CompProperties_IncubatorData.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", - "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", - "RelativeToolTip": "Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", - "ViewState": "AgIAAH0AAAAAAAAAAAAAAK8AAAAJAAAAAAAAAA==", + "Title": "CompProperties_CustomRadius.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Placeworker\\CompProperties_CustomRadius.cs", + "RelativeDocumentMoniker": "Placeworker\\CompProperties_CustomRadius.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Placeworker\\CompProperties_CustomRadius.cs", + "RelativeToolTip": "Placeworker\\CompProperties_CustomRadius.cs", + "ViewState": "AgIAAAIAAAAAAAAAAAAAACMAAAA/AAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-14T12:41:01.454Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "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": "AgIAAK4BAAAAAAAAAAAAAOUBAABIAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-14T13:27:29.463Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "ITab_Ootheca_Incubation.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\ITab_Ootheca_Incubation.cs", - "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\ITab_Ootheca_Incubation.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\ITab_Ootheca_Incubation.cs", - "RelativeToolTip": "Buildings\\Building_Ootheca\\ITab_Ootheca_Incubation.cs", - "ViewState": "AgIAAKwAAAAAAAAAAADwv+MAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-14T16:21:37.25Z", + "WhenOpened": "2025-12-15T07:21:04.756Z", "EditorCaption": "" }, { "$type": "Document", "DocumentIndex": 3, - "Title": "JobDriver_OperateIncubator.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\JobDriver_OperateIncubator.cs", - "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\JobDriver_OperateIncubator.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\JobDriver_OperateIncubator.cs", - "RelativeToolTip": "Buildings\\Building_Ootheca\\JobDriver_OperateIncubator.cs", - "ViewState": "AgIAAA4AAAAAAAAAAAAAwC0AAAAgAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-14T13:42:44.544Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "RoomRoleWorker_Incubator.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\RoomRoleWorker_Incubator.cs", - "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\RoomRoleWorker_Incubator.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\RoomRoleWorker_Incubator.cs", - "RelativeToolTip": "Buildings\\Building_Ootheca\\RoomRoleWorker_Incubator.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvxYAAAA8AAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-14T16:16:56.635Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 5, - "Title": "JobDriver_EnterPowerArmor.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\PowerArmor\\JobDriver_EnterPowerArmor.cs", - "RelativeDocumentMoniker": "PowerArmor\\JobDriver_EnterPowerArmor.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\PowerArmor\\JobDriver_EnterPowerArmor.cs", - "RelativeToolTip": "PowerArmor\\JobDriver_EnterPowerArmor.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-14T13:53:00.443Z" - }, - { - "$type": "Document", - "DocumentIndex": 6, - "Title": "ARA_HediffDefOf.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs", - "RelativeDocumentMoniker": "ARA_HediffDefOf.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs", - "RelativeToolTip": "ARA_HediffDefOf.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvxIAAAAkAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-14T13:29:05.1Z" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "ARA_PowerArmor.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\PowerArmor\\ARA_PowerArmor.cs", - "RelativeDocumentMoniker": "PowerArmor\\ARA_PowerArmor.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\PowerArmor\\ARA_PowerArmor.cs", - "RelativeToolTip": "PowerArmor\\ARA_PowerArmor.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvxAAAABMAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-14T12:42:55.951Z" - }, - { - "$type": "Document", - "DocumentIndex": 8, - "Title": "Building_ArachnaeGravEngine.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ArachnaeGravEngine.cs", - "RelativeDocumentMoniker": "Buildings\\Building_ArachnaeGravEngine.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_ArachnaeGravEngine.cs", - "RelativeToolTip": "Buildings\\Building_ArachnaeGravEngine.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvxcAAAAiAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-14T12:37:14.137Z" - }, - { - "$type": "Document", - "DocumentIndex": 10, "Title": "CompSectorSurveillance.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_SectorSurveillance\\CompSectorSurveillance.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_SectorSurveillance\\CompSectorSurveillance.cs", "RelativeDocumentMoniker": "Flyover\\ARA_SectorSurveillance\\CompSectorSurveillance.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_SectorSurveillance\\CompSectorSurveillance.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_SectorSurveillance\\CompSectorSurveillance.cs", "RelativeToolTip": "Flyover\\ARA_SectorSurveillance\\CompSectorSurveillance.cs", "ViewState": "AgIAAPACAAAAAAAAAAAAABEDAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -223,23 +108,23 @@ }, { "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 2, "Title": "CompGroundStrafing.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_GroundStrafing\\CompGroundStrafing.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_GroundStrafing\\CompGroundStrafing.cs", "RelativeDocumentMoniker": "Flyover\\ARA_GroundStrafing\\CompGroundStrafing.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_GroundStrafing\\CompGroundStrafing.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_GroundStrafing\\CompGroundStrafing.cs", "RelativeToolTip": "Flyover\\ARA_GroundStrafing\\CompGroundStrafing.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAABsAAAAMAAAAAAAAAA==", + "ViewState": "AgIAAGwBAAAAAAAAAAArwIYBAAAFAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "WhenOpened": "2025-10-30T13:00:11.18Z" }, { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 6, "Title": "CompAbilityEffect_GiveHediffWithSkillDuration.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_GiveHediffWithSkillDuration\\CompAbilityEffect_GiveHediffWithSkillDuration.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_GiveHediffWithSkillDuration\\CompAbilityEffect_GiveHediffWithSkillDuration.cs", "RelativeDocumentMoniker": "Abilities\\ARA_GiveHediffWithSkillDuration\\CompAbilityEffect_GiveHediffWithSkillDuration.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_GiveHediffWithSkillDuration\\CompAbilityEffect_GiveHediffWithSkillDuration.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_GiveHediffWithSkillDuration\\CompAbilityEffect_GiveHediffWithSkillDuration.cs", "RelativeToolTip": "Abilities\\ARA_GiveHediffWithSkillDuration\\CompAbilityEffect_GiveHediffWithSkillDuration.cs", "ViewState": "AgIAAEsAAAAAAAAAAAAWwGAAAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -247,11 +132,11 @@ }, { "$type": "Document", - "DocumentIndex": 14, + "DocumentIndex": 7, "Title": "CompAbilityEffect_AbilityShowTemperatureRange.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs", "RelativeDocumentMoniker": "Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs", "RelativeToolTip": "Abilities\\ARA_ShowTemperatureRange\\CompAbilityEffect_AbilityShowTemperatureRange.cs", "ViewState": "AgIAAAAAAAAAAAAAAAAAABcAAAArAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -259,11 +144,11 @@ }, { "$type": "Document", - "DocumentIndex": 12, + "DocumentIndex": 5, "Title": "CompAbilityEffect_AircraftStrike.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\CompAbilityEffect_AircraftStrike.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\CompAbilityEffect_AircraftStrike.cs", "RelativeDocumentMoniker": "Flyover\\ARA_AircraftHangar\\CompAbilityEffect_AircraftStrike.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\CompAbilityEffect_AircraftStrike.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\CompAbilityEffect_AircraftStrike.cs", "RelativeToolTip": "Flyover\\ARA_AircraftHangar\\CompAbilityEffect_AircraftStrike.cs", "ViewState": "AgIAAHYAAAAAAAAAAAAtwJcAAAArAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -271,11 +156,11 @@ }, { "$type": "Document", - "DocumentIndex": 11, + "DocumentIndex": 4, "Title": "ThingclassFlyOver.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ThingclassFlyOver.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ThingclassFlyOver.cs", "RelativeDocumentMoniker": "Flyover\\ThingclassFlyOver.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ThingclassFlyOver.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ThingclassFlyOver.cs", "RelativeToolTip": "Flyover\\ThingclassFlyOver.cs", "ViewState": "AgIAAIkCAAAAAAAAAAAawI8CAAANAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -283,11 +168,11 @@ }, { "$type": "Document", - "DocumentIndex": 15, + "DocumentIndex": 8, "Title": "CompAbilityEffect_AbilityShowSpawnablePawns.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowSpawnablePawnsList\\CompAbilityEffect_AbilityShowSpawnablePawns.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowSpawnablePawnsList\\CompAbilityEffect_AbilityShowSpawnablePawns.cs", "RelativeDocumentMoniker": "Abilities\\ARA_ShowSpawnablePawnsList\\CompAbilityEffect_AbilityShowSpawnablePawns.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowSpawnablePawnsList\\CompAbilityEffect_AbilityShowSpawnablePawns.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\ARA_ShowSpawnablePawnsList\\CompAbilityEffect_AbilityShowSpawnablePawns.cs", "RelativeToolTip": "Abilities\\ARA_ShowSpawnablePawnsList\\CompAbilityEffect_AbilityShowSpawnablePawns.cs", "ViewState": "AgIAABYAAAAAAAAAAAAuwBYAAAArAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -295,11 +180,11 @@ }, { "$type": "Document", - "DocumentIndex": 17, + "DocumentIndex": 10, "Title": "CompAircraftHangar.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\CompAircraftHangar.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\CompAircraftHangar.cs", "RelativeDocumentMoniker": "Flyover\\ARA_AircraftHangar\\CompAircraftHangar.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\CompAircraftHangar.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\CompAircraftHangar.cs", "RelativeToolTip": "Flyover\\ARA_AircraftHangar\\CompAircraftHangar.cs", "ViewState": "AgIAABcAAAAAAAAAAAAQwCQAAAAnAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -307,11 +192,11 @@ }, { "$type": "Document", - "DocumentIndex": 16, + "DocumentIndex": 9, "Title": "CompAbilityEffect_SpawnFlyOver.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_SpawnFlyOver\\CompAbilityEffect_SpawnFlyOver.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_SpawnFlyOver\\CompAbilityEffect_SpawnFlyOver.cs", "RelativeDocumentMoniker": "Flyover\\ARA_SpawnFlyOver\\CompAbilityEffect_SpawnFlyOver.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_SpawnFlyOver\\CompAbilityEffect_SpawnFlyOver.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_SpawnFlyOver\\CompAbilityEffect_SpawnFlyOver.cs", "RelativeToolTip": "Flyover\\ARA_SpawnFlyOver\\CompAbilityEffect_SpawnFlyOver.cs", "ViewState": "AgIAAFMDAAAAAAAAAAAawG8DAAAAAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -319,11 +204,11 @@ }, { "$type": "Document", - "DocumentIndex": 18, + "DocumentIndex": 11, "Title": "WorldComponent_AircraftManager.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\WorldComponent_AircraftManager.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\WorldComponent_AircraftManager.cs", "RelativeDocumentMoniker": "Flyover\\ARA_AircraftHangar\\WorldComponent_AircraftManager.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\WorldComponent_AircraftManager.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_AircraftHangar\\WorldComponent_AircraftManager.cs", "RelativeToolTip": "Flyover\\ARA_AircraftHangar\\WorldComponent_AircraftManager.cs", "ViewState": "AgIAAJUAAAAAAAAAAAAowK4AAAAUAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", @@ -331,11 +216,11 @@ }, { "$type": "Document", - "DocumentIndex": 19, + "DocumentIndex": 12, "Title": "CompProperties_FlyOverEscort.cs", - "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_FlyOverEscort\\CompProperties_FlyOverEscort.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_FlyOverEscort\\CompProperties_FlyOverEscort.cs", "RelativeDocumentMoniker": "Flyover\\ARA_FlyOverEscort\\CompProperties_FlyOverEscort.cs", - "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_FlyOverEscort\\CompProperties_FlyOverEscort.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Flyover\\ARA_FlyOverEscort\\CompProperties_FlyOverEscort.cs", "RelativeToolTip": "Flyover\\ARA_FlyOverEscort\\CompProperties_FlyOverEscort.cs", "ViewState": "AgIAAAAAAAAAAAAAAAAAABAAAAAvAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index 946bce8..716e987 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -168,6 +168,7 @@ + diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs index f449fc3..79977fb 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs @@ -693,16 +693,16 @@ namespace ArachnaeSwarm return room.Role != null && room.Role.defName == "ARA_Incubator_Room"; } - // 计算周围4格内的营养液数量 + // 计算周围5格内的营养液数量 private int CountNearbyNutrientSolutions() { var map = Map; if (map == null) return 0; int count = 0; - int radius = 4; // 4格半径 + int radius = 5; // 4格半径 - // 检查周围4格范围内的所有单元格 + // 检查周围5格范围内的所有单元格 for (int x = -radius; x <= radius; x++) { for (int y = -radius; y <= radius; y++) @@ -763,9 +763,9 @@ namespace ArachnaeSwarm var room = building.GetRoom(); if (room != null) { - // 如果在同一个房间,或者距离较近(10格内) + // 如果在同一个房间,或者距离较近(5格内) float distance = building.Position.DistanceTo(this.Position); - if (room == this.GetRoom() || distance <= 10f) + if (room == this.GetRoom() || distance <= 5f) { count++; } diff --git a/Source/ArachnaeSwarm/Needs/Need_HoneyProduction.cs b/Source/ArachnaeSwarm/Needs/Need_HoneyProduction.cs new file mode 100644 index 0000000..006c1c8 --- /dev/null +++ b/Source/ArachnaeSwarm/Needs/Need_HoneyProduction.cs @@ -0,0 +1,264 @@ +using RimWorld; +using UnityEngine; +using Verse; + +namespace ArachnaeSwarm +{ + public class Need_HoneyProduction : Need + { + // 基础流失速率(与食物需要对应) + private const float BaseHoneyGainPerTick = 2.6666667E-05f * 0.5f; // 食物流失速率的50% + + // 用于存储对食物需要的引用 + private Need_Food cachedFoodNeed; + + // 当前类别 + private HoneyProductionCategory curCategoryInt = HoneyProductionCategory.Empty; + + // 上次满的时间点 + private int lastFullTick = -99999; + + // 蜜罐的最大容量(可能需要调整) + public override float MaxLevel => 1f; + + // 当前类别 + public HoneyProductionCategory CurCategory => curCategoryInt; + + // 是否满仓 + public bool IsFull => CurCategory == HoneyProductionCategory.Full; + + // 是否为空 + public bool IsEmpty => CurCategory == HoneyProductionCategory.Empty; + + // 当前类别对应的生产效率 + public float ProductionEfficiency + { + get + { + switch (curCategoryInt) + { + case HoneyProductionCategory.Full: + return 1.0f; + case HoneyProductionCategory.High: + return 0.8f; + case HoneyProductionCategory.Medium: + return 0.5f; + case HoneyProductionCategory.Low: + return 0.3f; + case HoneyProductionCategory.Empty: + return 0f; + default: + return 0f; + } + } + } + + // 获取食物需要的引用 + private Need_Food FoodNeed + { + get + { + if (cachedFoodNeed == null || cachedFoodNeed.pawn != pawn) + { + cachedFoodNeed = pawn.needs?.TryGetNeed(); + } + return cachedFoodNeed; + } + } + + public Need_HoneyProduction(Pawn newPawn) : base(newPawn) + { + // 初始化时设置为空 + curLevelInt = 0f; + threshPercents = new System.Collections.Generic.List + { + 0.25f, // Low -> Medium + 0.5f, // Medium -> High + 0.75f // High -> Full + }; + } + + public override void ExposeData() + { + base.ExposeData(); + Scribe_Values.Look(ref lastFullTick, "lastFullTick", -99999); + } + + public override void NeedInterval() + { + base.NeedInterval(); + + // 检查是否需要冻结(与食物需要类似的条件) + if (IsFrozen) + { + return; + } + + // 获取食物需要的流失速率 + float foodFallRate = GetFoodFallRate(); + + // 蜜罐的增长速率是食物流失速率的50% + float honeyGainRate = foodFallRate * 0.5f; + + // 应用150 ticks的间隔 + CurLevel += honeyGainRate * 150f; + + // 更新类别 + UpdateCategory(); + + // 记录满的时间 + if (IsFull) + { + lastFullTick = Find.TickManager.TicksGame; + } + } + + // 获取食物流失速率 + private float GetFoodFallRate() + { + if (FoodNeed == null) + { + // 如果没有食物需要,使用默认值 + return BaseHoneyGainPerTick / 0.5f; // 反向计算基础食物流失速率 + } + + // 获取当前食物类别对应的流失速率 + return FoodNeed.FoodFallPerTick; + } + + // 更新类别 + private void UpdateCategory() + { + float percentage = CurLevelPercentage; + + if (percentage >= 0.75f) + curCategoryInt = HoneyProductionCategory.Full; + else if (percentage >= 0.5f) + curCategoryInt = HoneyProductionCategory.High; + else if (percentage >= 0.25f) + curCategoryInt = HoneyProductionCategory.Medium; + else if (percentage > 0f) + curCategoryInt = HoneyProductionCategory.Low; + else + curCategoryInt = HoneyProductionCategory.Empty; + } + + // 提取蜂蜜(减少蜜罐存量) + public void ExtractHoney(float amount) + { + CurLevel -= amount; + if (CurLevel < 0f) + CurLevel = 0f; + UpdateCategory(); + } + + // 强制清空蜜罐 + public void EmptyHoney() + { + CurLevel = 0f; + curCategoryInt = HoneyProductionCategory.Empty; + } + + // 重置到初始状态 + public override void SetInitialLevel() + { + // 初始为空 + CurLevel = 0f; + curCategoryInt = HoneyProductionCategory.Empty; + } + + // 获取提示字符串 + public override string GetTipString() + { + string text = (LabelCap + ": " + CurLevelPercentage.ToStringPercent()).Colorize(ColoredText.TipSectionTitleColor); + text += "\n" + def.description; + text += $"\n\n{"AS.HoneyProduction.CurrentLevel".Translate()}: {CurLevel:0.##} / {MaxLevel:0.##}"; + text += $"\n{"AS.HoneyProduction.Category".Translate()}: {GetCategoryLabel().CapitalizeFirst()}"; + text += $"\n{"AS.HoneyProduction.Efficiency".Translate()}: {ProductionEfficiency.ToStringPercent()}"; + text += $"\n{"AS.HoneyProduction.FoodDrainRate".Translate()}: {GetFoodFallRate():0.#####}/tick"; + text += $"\n{"AS.HoneyProduction.HoneyGainRate".Translate()}: {(GetFoodFallRate() * 0.5f):0.#####}/tick"; + + if (IsFull) + { + text += $"\n\n{"AS.HoneyProduction.FullWarning".Translate()}"; + } + + return text; + } + + // 获取类别标签 + public string GetCategoryLabel() + { + switch (curCategoryInt) + { + case HoneyProductionCategory.Full: + return "AS.HoneyProduction.Full".Translate(); + case HoneyProductionCategory.High: + return "AS.HoneyProduction.High".Translate(); + case HoneyProductionCategory.Medium: + return "AS.HoneyProduction.Medium".Translate(); + case HoneyProductionCategory.Low: + return "AS.HoneyProduction.Low".Translate(); + case HoneyProductionCategory.Empty: + return "AS.HoneyProduction.Empty".Translate(); + default: + return "Unknown"; + } + } + + // 在UI上绘制 + public override void DrawOnGUI(Rect rect, int maxThresholdMarkers = int.MaxValue, float customMargin = -1f, bool drawArrows = true, bool doTooltip = true, Rect? rectForTooltip = null, bool drawLabel = true) + { + if (threshPercents == null) + { + threshPercents = new System.Collections.Generic.List + { + 0.25f, 0.5f, 0.75f + }; + } + + base.DrawOnGUI(rect, maxThresholdMarkers, customMargin, false, doTooltip, rectForTooltip, drawLabel); + } + + // 是否冻结 + protected override bool IsFrozen + { + get + { + // 如果基础条件冻结,则蜜罐生产也冻结 + if (base.IsFrozen) + return true; + + // 如果没有食物需要,或者食物需要被冻结,则蜜罐生产也冻结 + if (FoodNeed == null || FoodNeed.IsFrozen) + return true; + + // 如果生物死亡,则冻结 + if (pawn.Dead) + return true; + + return false; + } + } + + // GUI变化箭头(总是显示增长) + public override int GUIChangeArrow => 1; + + // 调试调整百分比 + protected override void OffsetDebugPercent(float offsetPercent) + { + base.OffsetDebugPercent(offsetPercent); + UpdateCategory(); + } + } + + // 蜜罐生产类别 + public enum HoneyProductionCategory + { + Empty, // 空仓 + Low, // 低存量(0-25%) + Medium, // 中存量(25-50%) + High, // 高存量(50-75%) + Full // 满仓(75-100%) + } +} diff --git a/Source/ArachnaeSwarm/Placeworker/CompProperties_CustomRadius.cs b/Source/ArachnaeSwarm/Placeworker/CompProperties_CustomRadius.cs new file mode 100644 index 0000000..0144cc3 --- /dev/null +++ b/Source/ArachnaeSwarm/Placeworker/CompProperties_CustomRadius.cs @@ -0,0 +1,292 @@ +using RimWorld; +using UnityEngine; +using Verse; +using System.Collections.Generic; +using HarmonyLib; +using RimWorld.Planet; + +namespace ArachnaeSwarm +{ + // 自定义属性组件,用于存储半径和颜色信息 + public class CompProperties_CustomRadius : CompProperties + { + public float radius = 10f; + public Color color = new Color(0.8f, 0.8f, 0.4f); // 默认浅黄色 + public float radiusOffset = -2.1f; // 半径偏移量,与原始保持一致 + public bool showInGUI = true; // 是否在GUI中显示切换选项 + public string label = "Show Radius"; // 直接定义标签文本 + public string description = "Toggle visibility of the custom radius overlay."; // 直接定义描述文本 + public bool defaultVisible = true; // 默认是否可见 + + public CompProperties_CustomRadius() + { + this.compClass = typeof(CompCustomRadius); + } + } + + // 实际的组件类 + public class CompCustomRadius : ThingComp + { + private bool radiusVisible = true; + + public CompProperties_CustomRadius Props + { + get + { + return (CompProperties_CustomRadius)this.props; + } + } + + public float EffectiveRadius + { + get + { + return Props.radius + Props.radiusOffset; + } + } + + public bool RadiusVisible + { + get { return radiusVisible && Props.showInGUI; } + set { radiusVisible = value; } + } + + public override void Initialize(CompProperties props) + { + base.Initialize(props); + radiusVisible = Props.defaultVisible; + } + + public override void PostExposeData() + { + base.PostExposeData(); + Scribe_Values.Look(ref radiusVisible, "radiusVisible", Props.defaultVisible); + } + + // 在检视面板中显示切换选项 + public override IEnumerable CompGetGizmosExtra() + { + if (!Props.showInGUI) yield break; + + // 只对玩家所有的物体显示Gizmo + if (parent.Faction != Faction.OfPlayer) + yield break; + + // 创建切换 gizmo + Command_Toggle toggleCommand = new Command_Toggle(); + toggleCommand.defaultLabel = Props.label; + toggleCommand.defaultDesc = Props.description; + + // 尝试加载图标,如果失败则使用默认图标 + try + { + toggleCommand.icon = ContentFinder.Get("Wula/UI/Commands/WULA_ShowRadius", false); + if (toggleCommand.icon == null) + { + // 使用一个简单的占位符图标 + toggleCommand.icon = BaseContent.BadTex; + } + } + catch + { + toggleCommand.icon = BaseContent.BadTex; + } + + toggleCommand.isActive = () => RadiusVisible; + toggleCommand.toggleAction = () => RadiusVisible = !RadiusVisible; + + yield return toggleCommand; + } + + // 获取绘制颜色(考虑透明度等) + public Color GetDrawColor() + { + return Props.color; + } + + // 检查是否应该绘制半径 + public bool ShouldDrawRadius() + { + // 只绘制玩家所有的物体 + if (parent.Faction != Faction.OfPlayer) + return false; + + // 检查是否在地图视图中(不在世界地图) + if (Find.CurrentMap == null || WorldRendererUtility.WorldRendered) + return false; + + return RadiusVisible; + } + } + + // 自定义放置工作器 + public class PlaceWorker_CustomRadius : PlaceWorker + { + public override void DrawGhost(ThingDef def, IntVec3 center, Rot4 rot, Color ghostCol, Thing thing = null) + { + // 检查是否在地图视图中 + if (Find.CurrentMap == null || WorldRendererUtility.WorldRendered) + return; + + // 如果已经有物体存在,则检查其组件的可见性设置 + if (thing != null) + { + CompCustomRadius comp = thing.TryGetComp(); + if (comp == null || !comp.ShouldDrawRadius()) + return; + } + + // 获取自定义半径组件属性 + CompProperties_CustomRadius compProperties = def.GetCompProperties(); + if (compProperties != null && compProperties.showInGUI) + { + float effectiveRadius = compProperties.radius + compProperties.radiusOffset; + if (effectiveRadius > 0f) + { + // 使用指定的颜色绘制圆环 + Color drawColor = compProperties.color; + if (thing != null) + { + CompCustomRadius comp = thing.TryGetComp(); + if (comp != null) + { + drawColor = comp.GetDrawColor(); + } + } + GenDraw.DrawRadiusRing(center, effectiveRadius, drawColor); + } + } + } + + // 可选:在验证放置位置时也考虑半径 + public override AcceptanceReport AllowsPlacing(BuildableDef checkingDef, IntVec3 loc, Rot4 rot, Map map, Thing thingToIgnore = null, Thing thing = null) + { + // 这里可以添加额外的放置验证逻辑 + // 例如检查半径内是否有不允许的建筑等 + + return true; // 默认允许放置 + } + } + + // 为已放置的建筑添加绘制支持 + [StaticConstructorOnStartup] + public static class CustomRadiusRenderer + { + static CustomRadiusRenderer() + { + try + { + // 使用Harmony为MapInterface.MapInterfaceUpdate方法添加补丁 + var harmony = new Harmony("WulaFallenEmpire.CustomRadius"); + + // 尝试不同的绘制方法 + var mapInterfaceMethod = AccessTools.Method(typeof(MapInterface), "MapInterfaceUpdate"); + if (mapInterfaceMethod != null) + { + harmony.Patch(mapInterfaceMethod, + postfix: new HarmonyMethod(typeof(CustomRadiusRenderer), nameof(Postfix_MapInterfaceUpdate))); + } + } + catch (System.Exception ex) + { + Log.Warning($"[CustomRadius] Error in static constructor: {ex}"); + } + } + + public static void Postfix_MapInterfaceUpdate() + { + try + { + // 检查是否在地图视图中(不在世界地图) + if (Find.CurrentMap == null || WorldRendererUtility.WorldRendered) + return; + + // 绘制所有带有自定义半径组件的已放置建筑 + foreach (var thing in Find.CurrentMap.listerThings.AllThings) + { + // 只绘制玩家所有的物体 + if (thing.Faction != Faction.OfPlayer) + continue; + + if (thing.Spawned && thing.def.HasComp(typeof(CompCustomRadius))) + { + CompCustomRadius comp = thing.TryGetComp(); + if (comp != null && comp.ShouldDrawRadius()) + { + float effectiveRadius = comp.EffectiveRadius; + if (effectiveRadius > 0f) + { + GenDraw.DrawRadiusRing(thing.Position, effectiveRadius, comp.GetDrawColor()); + } + } + } + } + } + catch (System.Exception) + { + // 静默处理错误 + } + } + } + + // 为建筑选择时添加绘制支持 + [StaticConstructorOnStartup] + public static class CustomRadiusSelectionRenderer + { + static CustomRadiusSelectionRenderer() + { + try + { + var harmony = new Harmony("WulaFallenEmpire.CustomRadiusSelection"); + + // 尝试为选择器绘制方法添加补丁 + var selectionDrawMethod = AccessTools.Method(typeof(SelectionDrawer), "DrawSelectionOverlays"); + if (selectionDrawMethod != null) + { + harmony.Patch(selectionDrawMethod, + postfix: new HarmonyMethod(typeof(CustomRadiusSelectionRenderer), nameof(Postfix_DrawSelectionOverlays))); + } + } + catch (System.Exception ex) + { + Log.Warning($"[CustomRadius] Error in static constructor: {ex}"); + } + } + + public static void Postfix_DrawSelectionOverlays() + { + try + { + // 检查是否在地图视图中(不在世界地图) + if (Find.CurrentMap == null || WorldRendererUtility.WorldRendered) + return; + + if (Find.Selector == null) return; + + foreach (object selected in Find.Selector.SelectedObjectsListForReading) + { + if (selected is Thing thing && thing.Spawned && thing.def.HasComp(typeof(CompCustomRadius))) + { + // 只绘制玩家所有的物体 + if (thing.Faction != Faction.OfPlayer) + continue; + + CompCustomRadius comp = thing.TryGetComp(); + if (comp != null && comp.ShouldDrawRadius()) + { + float effectiveRadius = comp.EffectiveRadius; + if (effectiveRadius > 0f) + { + GenDraw.DrawRadiusRing(thing.Position, effectiveRadius, comp.GetDrawColor()); + } + } + } + } + } + catch + { + // 静默处理错误 + } + } + } +}