diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index af51cdd..350a302 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 3510b85..aab9bfd 100644 --- a/1.6/1.6/Defs/AbilityDefs/Abilities_EggSpew.xml +++ b/1.6/1.6/Defs/AbilityDefs/Abilities_EggSpew.xml @@ -1,12 +1,14 @@ - 5000 + 50000 false 300 true false AcidSpray_Warmup + 5 + true Verb_CastAbility 1 @@ -44,12 +46,14 @@ - 5000 + 50000 true 300 true false AcidSpray_Warmup + 5 + true Verb_CastAbility 1 @@ -282,6 +286,96 @@ + + ARA_Cocoon_Cloth_From_Corpse + + 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚织物茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 + ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth + + Verb_CastAbilityTouch + -1 + 7 + AcidSpray_Resolve + false + true + + false + false + false + true + + + 1000 + CastAbilityOnThingMelee + 10 + true + +
  • + ARA_Cocoon_Cloth_From_Corpse + 1 + false + Rotting + AcidSpray_Resolve +
  • +
  • + ARA_Cocoon_Cloth + 温度要求 + true +
  • +
  • + ARA_Cocoon_Cloth + 可孵化物品列表 + true + true + true +
  • +
    +
    + + ARA_Cocoon_Weapon_From_Corpse + + 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚武装器官茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 + ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon + + Verb_CastAbilityTouch + -1 + 7 + AcidSpray_Resolve + false + true + + false + false + false + true + + + 1000 + CastAbilityOnThingMelee + 10 + true + +
  • + ARA_Cocoon_Weapon_From_Corpse + 1 + false + Rotting + AcidSpray_Resolve +
  • +
  • + ARA_Cocoon_Weapon + 温度要求 + true +
  • +
  • + ARA_Cocoon_Weapon + 可孵化物品列表 + true + true + true +
  • +
    +
    ARA_Cocoon_Cloth_1Stage @@ -329,6 +423,96 @@ + + ARA_Cocoon_Cloth_1Stage_From_Corpse + + 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚织物茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 + ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_1Stage + + Verb_CastAbilityTouch + -1 + 7 + AcidSpray_Resolve + false + true + + false + false + false + true + + + 1000 + CastAbilityOnThingMelee + 10 + true + +
  • + ARA_Cocoon_Cloth_1Stage_From_Corpse + 1 + false + Rotting + AcidSpray_Resolve +
  • +
  • + ARA_Cocoon_Cloth_1Stage + 温度要求 + true +
  • +
  • + ARA_Cocoon_Cloth_1Stage + 可孵化物品列表 + true + true + true +
  • +
    +
    + + ARA_Cocoon_Weapon_1Stage_From_Corpse + + 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚武装器官茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 + ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_1Stage + + Verb_CastAbilityTouch + -1 + 7 + AcidSpray_Resolve + false + true + + false + false + false + true + + + 1000 + CastAbilityOnThingMelee + 10 + true + +
  • + ARA_Cocoon_Weapon_1Stage_From_Corpse + 1 + false + Rotting + AcidSpray_Resolve +
  • +
  • + ARA_Cocoon_Weapon_1Stage + 温度要求 + true +
  • +
  • + ARA_Cocoon_Weapon_1Stage + 可孵化物品列表 + true + true + true +
  • +
    +
    ARA_Cocoon_Cloth_2Stage @@ -376,6 +560,96 @@ + + ARA_Cocoon_Cloth_2Stage_From_Corpse + + 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚织物茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 + ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_2Stage + + Verb_CastAbilityTouch + -1 + 7 + AcidSpray_Resolve + false + true + + false + false + false + true + + + 1000 + CastAbilityOnThingMelee + 10 + true + +
  • + ARA_Cocoon_Cloth_2Stage_From_Corpse + 1 + false + Rotting + AcidSpray_Resolve +
  • +
  • + ARA_Cocoon_Cloth_2Stage + 温度要求 + true +
  • +
  • + ARA_Cocoon_Cloth_2Stage + 可孵化物品列表 + true + true + true +
  • +
    +
    + + ARA_Cocoon_Weapon_2Stage_From_Corpse + + 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚武装器官茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 + ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_2Stage + + Verb_CastAbilityTouch + -1 + 7 + AcidSpray_Resolve + false + true + + false + false + false + true + + + 1000 + CastAbilityOnThingMelee + 10 + true + +
  • + ARA_Cocoon_Weapon_2Stage_From_Corpse + 1 + false + Rotting + AcidSpray_Resolve +
  • +
  • + ARA_Cocoon_Weapon_2Stage + 温度要求 + true +
  • +
  • + ARA_Cocoon_Weapon_2Stage + 可孵化物品列表 + true + true + true +
  • +
    +
    ARA_Cocoon_Medicine diff --git a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml index 29915f5..cc8707a 100644 --- a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml +++ b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml @@ -174,6 +174,8 @@
  • ARA_Cocoon_Cloth
  • ARA_Cocoon_Weapon
  • +
  • ARA_Cocoon_Cloth_From_Corpse
  • +
  • ARA_Cocoon_Weapon_From_Corpse
  • ARA_WeaponSmith_Upgrade_1_Stage
  • @@ -247,6 +249,8 @@
  • ARA_Cocoon_Cloth_1Stage
  • ARA_Cocoon_Weapon_1Stage
  • +
  • ARA_Cocoon_Cloth_1Stage_From_Corpse
  • +
  • ARA_Cocoon_Weapon_1Stage_From_Corpse
  • ARA_WeaponSmith_Upgrade_2_Stage
  • @@ -320,6 +324,8 @@
  • ARA_Cocoon_Cloth_2Stage
  • ARA_Cocoon_Weapon_2Stage
  • +
  • ARA_Cocoon_Cloth_2Stage_From_Corpse
  • +
  • ARA_Cocoon_Weapon_2Stage_From_Corpse
  • 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 270d761..ad47f95 100644 --- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml +++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml @@ -754,7 +754,6 @@ 2 - 3 5 1 @@ -775,6 +774,7 @@ + 2 OmnivoreHuman,CarnivoreAnimal,OvivoreAnimal ArachnaeMyrmecocystus_Body diff --git a/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_Apparel.xml b/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_Apparel.xml index 53ca5d8..98d507e 100644 --- a/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_Apparel.xml +++ b/1.6/1.6/Defs/Thing_Misc/Apparels/ARA_Apparel.xml @@ -62,6 +62,7 @@
  • ARA_Cocoon_Cloth
  • +
  • ARA_Cocoon_Cloth_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -94,6 +95,7 @@
  • ARA_Cocoon_Cloth
  • +
  • ARA_Cocoon_Cloth_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -126,6 +128,7 @@
  • ARA_Cocoon_Cloth
  • +
  • ARA_Cocoon_Cloth_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -158,6 +161,7 @@
  • ARA_Cocoon_Cloth
  • +
  • ARA_Cocoon_Cloth_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -190,6 +194,7 @@
  • ARA_Cocoon_Cloth
  • +
  • ARA_Cocoon_Cloth_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -310,7 +315,7 @@ 10 - 2 + 1 0 @@ -320,6 +325,7 @@
  • ARA_Cocoon_Cloth
  • +
  • ARA_Cocoon_Cloth_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -357,8 +363,8 @@ ArachnaeSwarm/Apparel/ARA_Bunny_Girl_Uniform - 120 - 2.5 + 50 + 2 @@ -370,6 +376,7 @@
  • ARA_Cocoon_Cloth_1Stage
  • +
  • ARA_Cocoon_Cloth_1Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -392,8 +399,8 @@ 25 - 350 - 5 + 50 + 3 ArachnaeSwarm/Apparel/ARA_Nurse_Uniform @@ -421,6 +428,7 @@
  • ARA_Cocoon_Cloth_1Stage
  • +
  • ARA_Cocoon_Cloth_1Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -459,8 +467,8 @@ ArachnaeSwarm/Apparel/ARA_Wedding_Dress - 350 - 5 + 100 + 4 @@ -472,6 +480,7 @@
  • ARA_Cocoon_Cloth_2Stage
  • +
  • ARA_Cocoon_Cloth_2Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -510,8 +519,8 @@ ArachnaeSwarm/Apparel/ARA_Dragoon_Uniform - 500 - 10 + 120 + 5 @@ -523,6 +532,7 @@
  • ARA_Cocoon_Cloth_2Stage
  • +
  • ARA_Cocoon_Cloth_2Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • 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 d6665bb..d597f05 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 @@ -73,6 +73,7 @@
  • ARA_Cocoon_Weapon
  • +
  • ARA_Cocoon_Weapon_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -143,6 +144,7 @@
  • ARA_Cocoon_Weapon_1Stage
  • +
  • ARA_Cocoon_Weapon_1Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -222,6 +224,7 @@
  • ARA_Cocoon_Weapon_2Stage
  • +
  • ARA_Cocoon_Weapon_2Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -335,6 +338,7 @@
  • ARA_Cocoon_Weapon
  • +
  • ARA_Cocoon_Weapon_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -431,6 +435,7 @@
  • ARA_Cocoon_Weapon_1Stage
  • +
  • ARA_Cocoon_Weapon_1Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -527,6 +532,7 @@
  • ARA_Cocoon_Weapon_1Stage
  • +
  • ARA_Cocoon_Weapon_1Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -639,6 +645,7 @@
  • ARA_Cocoon_Weapon_2Stage
  • +
  • ARA_Cocoon_Weapon_2Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -753,6 +760,7 @@
  • ARA_Cocoon_Weapon_2Stage
  • +
  • ARA_Cocoon_Weapon_2Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -854,6 +862,7 @@
  • ARA_Cocoon_Weapon
  • +
  • ARA_Cocoon_Weapon_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -968,6 +977,7 @@
  • ARA_Cocoon_Weapon_1Stage
  • +
  • ARA_Cocoon_Weapon_1Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -1116,6 +1126,7 @@
  • ARA_Cocoon_Weapon_2Stage
  • +
  • ARA_Cocoon_Weapon_2Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -1233,6 +1244,7 @@
  • ARA_Cocoon_Weapon_2Stage
  • +
  • ARA_Cocoon_Weapon_2Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -1366,6 +1378,7 @@
  • ARA_Cocoon_Weapon_2Stage
  • +
  • ARA_Cocoon_Weapon_2Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -1501,6 +1514,7 @@
  • ARA_Cocoon_Weapon_1Stage
  • +
  • ARA_Cocoon_Weapon_1Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -1652,6 +1666,7 @@
  • ARA_Cocoon_Weapon_1Stage
  • +
  • ARA_Cocoon_Weapon_1Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • @@ -1757,6 +1772,7 @@
  • ARA_Cocoon_Weapon_1Stage
  • +
  • ARA_Cocoon_Weapon_1Stage_From_Corpse
  • ARA_BioforgeIncubator_Thing
  • 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 3eca348..b1b25ab 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml @@ -521,6 +521,7 @@ true 0.02 1 + 999
  • @@ -594,8 +595,8 @@ ARA_Cocoon_Cloth - - ARA_Cocoon_Cloth + + 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为-30~55°C),需要小心保护! @@ -611,20 +612,6 @@ - -
  • - 20 - 虫蜜 - - -
  • ARA_InsectJelly
  • - - - 0 - true - 0.2 - 1 -
  • @@ -674,14 +661,56 @@
  • + + ARA_Cocoon_Cloth + + + +
  • + 20 + 虫蜜 + + +
  • ARA_InsectJelly
  • + + + 0 + true + 0.2 + 1 + 999 + +
    +
    + + ARA_Cocoon_Cloth_From_Corpse + + + +
  • + 20 + 虫蜜 + + +
  • ARA_InsectJelly
  • + + + 0 + true + 1 + 1 + 999 + +
    +
    ARA_Cocoon_Proj_Weapon ARA_Cocoon_Weapon - - ARA_Cocoon_Weapon + + 一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为-20~35°C),需要小心保护! @@ -693,6 +722,59 @@ 2000 + + +
  • + +
  • ArachnaeNode_Race_WeaponSmith
  • + + 1 + True + -20 + 35 + 0.00001 + 0.2 + 1.0 + + +
  • + Legendary + 0.99 +
  • +
  • + Masterwork + 0.90 +
  • +
  • + Excellent + 0.70 +
  • +
  • + Good + 0.50 +
  • +
  • + Normal + 0.20 +
  • +
  • + Poor + 0.10 +
  • +
    + +
  • + -20 + 35 + 0.00005 + 0.005 + 0.001 +
  • +
    +
    + + ARA_Cocoon_Weapon +
  • 20 @@ -706,53 +788,28 @@ true 0.2 1 + 999
  • - -
  • - -
  • ArachnaeNode_Race_WeaponSmith
  • - - 1 - True - -20 - 35 - 0.00001 - 0.2 - 1.0 +
    +
    + + ARA_Cocoon_Weapon_From_Corpse - -
  • - Legendary - 0.99 -
  • -
  • - Masterwork - 0.90 -
  • -
  • - Excellent - 0.70 -
  • -
  • - Good - 0.50 -
  • -
  • - Normal - 0.20 -
  • -
  • - Poor - 0.10 -
  • -
    - -
  • - -20 - 35 - 0.00005 - 0.005 - 0.001 + + +
  • + 20 + 虫蜜 + + +
  • ARA_InsectJelly
  • + + + 0 + true + 1 + 1 + 999
    @@ -763,8 +820,8 @@ ARA_Cocoon_Cloth_1Stage
    - - ARA_Cocoon_Cloth_1Stage + + 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为-30~55°C),需要小心保护! @@ -780,20 +837,6 @@ - -
  • - 50 - 虫蜜 - - -
  • ARA_InsectJelly
  • - - - 0 - true - 0.2 - 1 -
  • +
  • + 60 + 虫蜜 + + +
  • ARA_InsectJelly
  • + + + 0 + true + 0.2 + 1 + 999 + +
    +
    + + ARA_Cocoon_Cloth_1Stage_From_Corpse + + + +
  • + 60 + 虫蜜 + + +
  • ARA_InsectJelly
  • + + + 0 + true + 1 + 1 + 999 + +
    +
    ARA_Cocoon_Proj_Weapon_1Stage ARA_Cocoon_Weapon_1Stage - - ARA_Cocoon_Weapon_1Stage + + 一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为-20~35°C),需要小心保护! @@ -868,20 +953,6 @@ - -
  • - 50 - 虫蜜 - - -
  • ARA_InsectJelly
  • - - - 0 - true - 0.2 - 1 -
  • @@ -931,25 +1002,13 @@
  • - - - ARA_Cocoon_Proj_Cloth_2Stage - - ARA_Cocoon_Cloth_2Stage - - - - ARA_Cocoon_Cloth_2Stage - - 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为10~16°C),需要小心保护! - - 10000 - + + ARA_Cocoon_Weapon_1Stage
  • - 100 + 60 虫蜜 @@ -960,7 +1019,47 @@ true 0.2 1 + 999
  • +
    +
    + + ARA_Cocoon_Weapon_1Stage_From_Corpse + + + +
  • + 60 + 虫蜜 + + +
  • ARA_InsectJelly
  • + + + 0 + true + 1 + 1 + 999 + +
    +
    + + + ARA_Cocoon_Proj_Cloth_2Stage + + ARA_Cocoon_Cloth_2Stage + + + + + + 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一套基础织物装备的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为10~16°C),需要小心保护! + + 10000 + + +
  • +
  • + 110 + 虫蜜 + + +
  • ARA_InsectJelly
  • + + + 0 + true + 0.2 + 1 + 999 + +
    +
    + + ARA_Cocoon_Cloth_2Stage_From_Corpse + + + +
  • + 110 + 虫蜜 + + +
  • ARA_InsectJelly
  • + + + 0 + true + 1 + 1 + 999 + +
    +
    ARA_Cocoon_Proj_Weapon_2Stage ARA_Cocoon_Weapon_2Stage - - ARA_Cocoon_Weapon_2Stage + + 一个布满尖刺的囊状物,是阿拉克涅工艺种所诞之卵,内含孵化一个武装器官的营养物质,可以通过阿拉克涅工艺种的交互完成激活进程——参阅茧的超链接,了解其能生产的所有装备的特点。\n\n孵化茧对温度极度敏感(该类型的茧适温为21~30°C),需要小心保护! @@ -1035,20 +1176,6 @@ - -
  • - 100 - 虫蜜 - - -
  • ARA_InsectJelly
  • - - - 0 - true - 0.2 - 1 -
  • +
  • + 110 + 虫蜜 + + +
  • ARA_InsectJelly
  • + + + 0 + true + 0.2 + 1 + 999 + +
    +
    + + ARA_Cocoon_Weapon_2Stage_From_Corpse + + + +
  • + 110 + 虫蜜 + + +
  • ARA_InsectJelly
  • + + + 0 + true + 1 + 1 + 999 + +
    +
    @@ -1156,6 +1325,7 @@ true 1 1 + 999
  • diff --git a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_InteractiveProducer_Keys.xml b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_InteractiveProducer_Keys.xml index e00e129..3d113b8 100644 --- a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_InteractiveProducer_Keys.xml +++ b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_InteractiveProducer_Keys.xml @@ -15,7 +15,7 @@ 剩余时间 预计品质 未在生产 - 未孵化,需要 {0} 交互({1}) + 未孵化,需要 {0} 交互 任何阿拉克涅虫族 {0} 个物品可用 物品品质 diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index 5f309d0..9ddc4ff 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 32266b7..6b8ef8f 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -3,28 +3,12 @@ "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\\building_comps\\ara_sacrificialfueltank\\building_sacrificialfueltank.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_sacrificialfueltank\\building_sacrificialfueltank.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_nutrientvat\\building_nutrientvat.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\ara_nutrientvat\\building_nutrientvat.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\\compabilityeffect_transformcorpse.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:abilities\\compabilityeffect_transformcorpse.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\\comprefuelablenutrition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:building_comps\\comprefuelablenutrition.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\\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\\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}" } ], "DocumentGroupContainers": [ @@ -43,78 +27,28 @@ { "$type": "Document", "DocumentIndex": 1, - "Title": "Building_NutrientVat.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs", - "RelativeDocumentMoniker": "Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs", - "RelativeToolTip": "Building_Comps\\ARA_NutrientVat\\Building_NutrientVat.cs", - "ViewState": "AgIAAGMAAAAAAAAAAAAowHkAAABTAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-10-14T08:54:07.96Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "Building_SacrificialFuelTank.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_SacrificialFuelTank\\Building_SacrificialFuelTank.cs", - "RelativeDocumentMoniker": "Building_Comps\\ARA_SacrificialFuelTank\\Building_SacrificialFuelTank.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_SacrificialFuelTank\\Building_SacrificialFuelTank.cs*", - "RelativeToolTip": "Building_Comps\\ARA_SacrificialFuelTank\\Building_SacrificialFuelTank.cs*", - "ViewState": "AgIAAEoAAAAAAAAAAAAAAGMAAAAzAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-10-14T08:53:19.337Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, "Title": "CompRefuelableNutrition.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\CompRefuelableNutrition.cs", "RelativeDocumentMoniker": "Building_Comps\\CompRefuelableNutrition.cs", "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\CompRefuelableNutrition.cs", "RelativeToolTip": "Building_Comps\\CompRefuelableNutrition.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAA0AAAAwAAAAAAAAAA==", + "ViewState": "AgIAABAAAAAAAAAAAAAuwBYAAAAhAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-10-14T08:38:13.803Z", + "WhenOpened": "2025-10-15T08:04:45.513Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 4, - "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": "AgIAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAA==", + "DocumentIndex": 0, + "Title": "CompAbilityEffect_TransformCorpse.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_TransformCorpse.cs", + "RelativeDocumentMoniker": "Abilities\\CompAbilityEffect_TransformCorpse.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Abilities\\CompAbilityEffect_TransformCorpse.cs", + "RelativeToolTip": "Abilities\\CompAbilityEffect_TransformCorpse.cs", + "ViewState": "AgIAAMoAAAAAAAAAAAAtwF4AAAAJAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-10-13T03:27:00.382Z" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "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": "AgIAAAAAAAAAAAAAAAAAAAoAAAAXAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-10-13T03:26:37.426Z", + "WhenOpened": "2025-10-15T08:02:12.842Z", "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 5, - "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": "AgIAAA4AAAAAAAAAAAAAwD0AAAAhAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-10-12T15:30:31.391Z" } ] } diff --git a/Source/ArachnaeSwarm/Abilities/CompAbilityEffect_TransformCorpse.cs b/Source/ArachnaeSwarm/Abilities/CompAbilityEffect_TransformCorpse.cs new file mode 100644 index 0000000..c87d0cb --- /dev/null +++ b/Source/ArachnaeSwarm/Abilities/CompAbilityEffect_TransformCorpse.cs @@ -0,0 +1,232 @@ +using RimWorld; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using Verse; +using Verse.Sound; + +namespace ArachnaeSwarm +{ + public class CompProperties_AbilityTransformCorpse : CompProperties_AbilityEffect + { + public ThingDef buildingDef; // 要生成的建筑定义 + public float nutritionToFuelRatio = 1.0f; // 尸体营养值到燃料的转换率 + public bool requireFreshCorpse = false; // 是否要求新鲜尸体 + public RotStage maxRotStage = RotStage.Dessicated; // 最大腐烂阶段 + + public CompProperties_AbilityTransformCorpse() + { + compClass = typeof(CompAbilityEffect_TransformCorpse); + } + } + + public class CompAbilityEffect_TransformCorpse : CompAbilityEffect + { + public new CompProperties_AbilityTransformCorpse Props => (CompProperties_AbilityTransformCorpse)props; + + public override void Apply(LocalTargetInfo target, LocalTargetInfo dest) + { + base.Apply(target, dest); + + Corpse corpse = target.Thing as Corpse; + if (corpse == null) + { + Messages.Message("AbilityMustTargetCorpse".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false); + return; + } + + if (!IsValidCorpse(corpse, true)) + return; + + if (!CanSpawnBuildingAt(corpse.Position, corpse.Map)) + { + Messages.Message("NotEnoughSpaceForBuilding".Translate(Props.buildingDef.label), parent.pawn, MessageTypeDefOf.RejectInput, false); + return; + } + + TransformCorpseToBuilding(corpse); + } + + private void TransformCorpseToBuilding(Corpse corpse) + { + Map map = corpse.Map; + IntVec3 position = corpse.Position; + Pawn innerPawn = corpse.InnerPawn; + + float calculatedFuel = CalculateFuelFromCorpse(corpse); + corpse.Destroy(DestroyMode.Vanish); + + Building building = (Building)GenSpawn.Spawn(Props.buildingDef, position, map, WipeMode.Vanish); + building.SetFaction(parent.pawn.Faction); + + // 设置 CompRefuelableNutrition 的初始燃料 + SetupRefuelableNutrition(building, calculatedFuel); + + var morphableComp = building.GetComp(); + if (morphableComp != null && innerPawn != null) + { + morphableComp.SetStoredPawn(innerPawn); + } + + Messages.Message("CorpseTransformedToBuilding".Translate(innerPawn?.LabelShort ?? "Unknown", Props.buildingDef.label), + building, MessageTypeDefOf.PositiveEvent); + } + + private void SetupRefuelableNutrition(Building building, float calculatedFuel) + { + var refuelableNutritionComp = building.GetComp(); + if (refuelableNutritionComp != null) + { + // 直接设置燃料值,而不是通过 Refuel 方法 + refuelableNutritionComp.Refuel(calculatedFuel); + } + else + { + // 回退到普通的 CompRefuelable + var refuelableComp = building.GetComp(); + if (refuelableComp != null && calculatedFuel > 0) + { + refuelableComp.Refuel(calculatedFuel); + } + } + } + + private float CalculateFuelFromCorpse(Corpse corpse) + { + if (corpse.InnerPawn == null) return 0f; + + float baseNutrition = corpse.InnerPawn.GetStatValue(StatDefOf.Nutrition); + float rotMultiplier = GetRotMultiplier(corpse.GetRotStage()); + float calculatedFuel = baseNutrition * Props.nutritionToFuelRatio * rotMultiplier; + + // 获取建筑的燃料容量限制 + var buildingDef = Props.buildingDef; + if (buildingDef != null) + { + var refuelableProps = buildingDef.GetCompProperties(); + if (refuelableProps != null) + { + // 确保计算的燃料不超过建筑容量 + calculatedFuel = Mathf.Min(calculatedFuel, refuelableProps.fuelCapacity); + } + } + + return calculatedFuel; + } + + private float GetRotMultiplier(RotStage rotStage) + { + switch (rotStage) + { + case RotStage.Fresh: return 1.0f; + case RotStage.Rotting: return 0.5f; + case RotStage.Dessicated: return 0.25f; + default: return 0f; + } + } + + private bool CanSpawnBuildingAt(IntVec3 position, Map map) + { + CellRect cellRect = GenAdj.OccupiedRect(position, Rot4.North, Props.buildingDef.Size); + + foreach (IntVec3 cell in cellRect) + { + if (!cell.InBounds(map) || !cell.Walkable(map) || cell.GetEdifice(map) != null) + { + return false; + } + } + return true; + } + + public override bool Valid(LocalTargetInfo target, bool throwMessages = false) + { + if (!base.Valid(target, throwMessages)) + return false; + + Corpse corpse = target.Thing as Corpse; + if (corpse == null) + { + if (throwMessages) + { + Messages.Message("AbilityMustTargetCorpse".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false); + } + return false; + } + + return IsValidCorpse(corpse, throwMessages); + } + + private bool IsValidCorpse(Corpse corpse, bool throwMessages) + { + if (corpse.InnerPawn == null) + { + if (throwMessages) + { + Messages.Message("CorpseHasNoPawn".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false); + } + return false; + } + + RotStage rotStage = corpse.GetRotStage(); + if (rotStage > Props.maxRotStage) + { + if (throwMessages) + { + Messages.Message("CorpseTooRotated".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false); + } + return false; + } + + if (Props.requireFreshCorpse && rotStage != RotStage.Fresh) + { + if (throwMessages) + { + Messages.Message("RequiresFreshCorpse".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false); + } + return false; + } + + if (!IsValidPawnRace(corpse.InnerPawn)) + { + if (throwMessages) + { + Messages.Message("InvalidPawnRace".Translate(), parent.pawn, MessageTypeDefOf.RejectInput, false); + } + return false; + } + + if (!CanSpawnBuildingAt(corpse.Position, corpse.Map)) + { + if (throwMessages) + { + Messages.Message("NotEnoughSpaceForBuilding".Translate(Props.buildingDef.label), parent.pawn, MessageTypeDefOf.RejectInput, false); + } + return false; + } + + return true; + } + + private bool IsValidPawnRace(Pawn pawn) + { + return true; + } + + public override void DrawEffectPreview(LocalTargetInfo target) + { + if (target.IsValid && target.Thing is Corpse corpse && IsValidCorpse(corpse, false)) + { + // 绘制目标单元格的高亮 + GenDraw.DrawFieldEdges(new List { target.Cell }, Valid(target) ? Color.green : Color.red); + + if (Props.buildingDef != null) + { + // 绘制建筑占用的所有单元格 + CellRect cellRect = GenAdj.OccupiedRect(target.Cell, Rot4.North, Props.buildingDef.Size); + GenDraw.DrawFieldEdges(cellRect.Cells.ToList(), Valid(target) ? Color.green : Color.red); + } + } + } + } +} diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj index c3a7155..8c85906 100644 --- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj +++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj @@ -99,6 +99,7 @@ + diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompInteractiveProducer.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompInteractiveProducer.cs index 2e110b3..e438d08 100644 --- a/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompInteractiveProducer.cs +++ b/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompInteractiveProducer.cs @@ -319,7 +319,7 @@ namespace ArachnaeSwarm yield return new FloatMenuOption(label, () => { this._selectedProcess = process; - Job job = JobMaker.MakeJob(DefDatabase.GetNamed("ARA_StartResearchProduction"), parent); + Job job = JobMaker.MakeJob(DefDatabase.GetNamed("ARA_StartInteractiveProduction"), parent); selPawn.jobs.TryTakeOrderedJob(job, JobTag.Misc); }); }