diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll index ec0412d..7a83b5a 100644 Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ diff --git a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml index ca99351..874a59d 100644 --- a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml +++ b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml @@ -1281,7 +1281,6 @@
  • ARA_InsectCreep
  • -
  • ARA_InsectCreepFloor
  • ARA_InsectCreepTile
  • - - ARA_Cocoon_Cloth - - 投放一枚织物茧,内含可以孵化一套基础织物的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth - -
  • - ARA_Cocoon_Proj_Cloth -
  • -
  • - ARA_Cocoon_Cloth - 温度要求 - true -
  • -
  • - ARA_Cocoon_Cloth - 可孵化物品列表 - true - true - true -
  • -
    -
    - - ARA_Cocoon_Weapon - - 投放一枚武装器官茧,内含可以孵化一套基础武装器官的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon - -
  • - ARA_Cocoon_Proj_Weapon -
  • -
  • - ARA_Cocoon_Weapon - 温度要求 - true -
  • -
  • - ARA_Cocoon_Weapon - 可孵化物品列表 - true - true - true -
  • -
    -
    - - ARA_Cocoon_Cloth_From_Death - - 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚织物茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_From_Corpse - - Verb_CastAbilityTouch - -1 - 7 - AcidSpray_Resolve - false - true - - false - false - false - true - - - 1000 - CastAbilityOnThingMelee - 10 - true - -
  • - ARA_Cocoon_Cloth_From_Death - 1 - false - Rotting - AcidSpray_Resolve -
  • -
  • - ARA_Cocoon_Cloth - 温度要求 - true -
  • -
  • - ARA_Cocoon_Cloth - 可孵化物品列表 - true - true - true -
  • -
    -
    - - ARA_Cocoon_Weapon_From_Death - - 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚武装器官茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_From_Corpse - - Verb_CastAbilityTouch - -1 - 7 - AcidSpray_Resolve - false - true - - false - false - false - true - - - 1000 - CastAbilityOnThingMelee - 10 - true - -
  • - ARA_Cocoon_Weapon_From_Death - 1 - false - Rotting - AcidSpray_Resolve -
  • -
  • - ARA_Cocoon_Weapon - 温度要求 - true -
  • -
  • - ARA_Cocoon_Weapon - 可孵化物品列表 - true - true - true -
  • -
    -
    - - - ARA_Cocoon_Cloth_1Stage - - 投放一枚织物茧,内含可以孵化一套基础织物的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_1Stage - -
  • - ARA_Cocoon_Proj_Cloth_1Stage -
  • -
  • - ARA_Cocoon_Cloth_1Stage - 温度要求 - true -
  • -
  • - ARA_Cocoon_Cloth_1Stage - 可孵化物品列表 - true - true - true -
  • -
    -
    - - ARA_Cocoon_Weapon_1Stage - - 投放一枚武装器官茧,内含可以孵化一套基础武装器官的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_1Stage - -
  • - ARA_Cocoon_Proj_Weapon_1Stage -
  • -
  • - ARA_Cocoon_Weapon_1Stage - 温度要求 - true -
  • -
  • - ARA_Cocoon_Weapon_1Stage - 可孵化物品列表 - true - true - true -
  • -
    -
    - - ARA_Cocoon_Cloth_1Stage_From_Death - - 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚织物茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_1Stage_From_Corpse - - Verb_CastAbilityTouch - -1 - 7 - AcidSpray_Resolve - false - true - - false - false - false - true - - - 1000 - CastAbilityOnThingMelee - 10 - true - -
  • - ARA_Cocoon_Cloth_1Stage_From_Death - 1 - false - Rotting - AcidSpray_Resolve -
  • -
  • - ARA_Cocoon_Cloth_1Stage - 温度要求 - true -
  • -
  • - ARA_Cocoon_Cloth_1Stage - 可孵化物品列表 - true - true - true -
  • -
    -
    - - ARA_Cocoon_Weapon_1Stage_From_Death - - 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚武装器官茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_1Stage_From_Corpse - - Verb_CastAbilityTouch - -1 - 7 - AcidSpray_Resolve - false - true - - false - false - false - true - - - 1000 - CastAbilityOnThingMelee - 10 - true - -
  • - ARA_Cocoon_Weapon_1Stage_From_Death - 1 - false - Rotting - AcidSpray_Resolve -
  • -
  • - ARA_Cocoon_Weapon_1Stage - 温度要求 - true -
  • -
  • - ARA_Cocoon_Weapon_1Stage - 可孵化物品列表 - true - true - true -
  • -
    -
    - - - ARA_Cocoon_Cloth_2Stage - - 投放一枚织物茧,内含可以孵化一套基础织物的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_2Stage - -
  • - ARA_Cocoon_Proj_Cloth_2Stage -
  • -
  • - ARA_Cocoon_Cloth_2Stage - 温度要求 - true -
  • -
  • - ARA_Cocoon_Cloth_2Stage - 可孵化物品列表 - true - true - true -
  • -
    -
    - - ARA_Cocoon_Weapon_2Stage - - 投放一枚武装器官茧,内含可以孵化一套基础武装器官的营养和遗传物质——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_2Stage - -
  • - ARA_Cocoon_Proj_Weapon_2Stage -
  • -
  • - ARA_Cocoon_Weapon_2Stage - 温度要求 - true -
  • -
  • - ARA_Cocoon_Weapon_2Stage - 可孵化物品列表 - true - true - true -
  • -
    -
    - - ARA_Cocoon_Cloth_2Stage_From_Death - - 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚织物茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Cloth_2Stage_From_Corpse - - Verb_CastAbilityTouch - -1 - 7 - AcidSpray_Resolve - false - true - - false - false - false - true - - - 1000 - CastAbilityOnThingMelee - 10 - true - -
  • - ARA_Cocoon_Cloth_2Stage_From_Death - 1 - false - Rotting - AcidSpray_Resolve -
  • -
  • - ARA_Cocoon_Cloth_2Stage - 温度要求 - true -
  • -
  • - ARA_Cocoon_Cloth_2Stage - 可孵化物品列表 - true - true - true -
  • -
    -
    - - ARA_Cocoon_Weapon_2Stage_From_Death - - 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚武装器官茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有装备的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Weapon_2Stage_From_Corpse - - Verb_CastAbilityTouch - -1 - 7 - AcidSpray_Resolve - false - true - - false - false - false - true - - - 1000 - CastAbilityOnThingMelee - 10 - true - -
  • - ARA_Cocoon_Weapon_2Stage_From_Death - 1 - false - Rotting - AcidSpray_Resolve -
  • -
  • - ARA_Cocoon_Weapon_2Stage - 温度要求 - true -
  • -
  • - ARA_Cocoon_Weapon_2Stage - 可孵化物品列表 - true - true - true -
  • -
    -
    - - - ARA_Cocoon_Medicine - - 投放一枚医药茧,内含可以孵化一组医疗用品或化学品的营养和遗传物质——参阅茧的超链接,了解其能生产的所有物品的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Medicine - -
  • - ARA_Cocoon_Proj_Medicine -
  • -
  • - ARA_Cocoon_Medicine - 温度要求 - true -
  • -
    -
    - - ARA_Cocoon_Medicine_From_Death - - 指定一具尚未腐烂或轻微腐烂的尸体,将其转化为一枚医药茧,尸体剩余的营养值会转化为茧的营养值——参阅茧的超链接,了解其能生产的所有物品的特点。 - ArachnaeSwarm/UI/Abilities/ARA_Cocoon_Medicine_From_Corpse - - Verb_CastAbilityTouch - -1 - 7 - AcidSpray_Resolve - false - true - - false - false - false - true - - - 1000 - CastAbilityOnThingMelee - 10 - true - -
  • - ARA_Cocoon_Medicine_From_Death - 1 - false - Rotting - AcidSpray_Resolve -
  • -
  • - ARA_Cocoon_Medicine_From_Death - 温度要求 - true -
  • -
  • - ARA_Cocoon_Medicine_From_Death - 可孵化物品列表 - true - true - true -
  • -
    -
    \ No newline at end of file diff --git a/1.6/1.6/Defs/AbilityDefs/Ability_Morph.xml b/1.6/1.6/Defs/AbilityDefs/Ability_Morph.xml index 4c870e8..780c098 100644 --- a/1.6/1.6/Defs/AbilityDefs/Ability_Morph.xml +++ b/1.6/1.6/Defs/AbilityDefs/Ability_Morph.xml @@ -26,7 +26,6 @@
  • ARA_InsectCreep
  • -
  • ARA_InsectCreepFloor
  • ARA_InsectCreepTile
  • + + true + + ARA_Medicine + + 10 + + + 1 + + 1 + 0 + + + false + + true + + true + + 20 + + + true + + false +
  • -
  • ARA_Cocoon_Medicine
  • -
  • ARA_Cocoon_Medicine_From_Death
  • ARA_MimicNematode_Needle_Fire
  • diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml index f2fa529..02a1d74 100644 --- a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml +++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_Terrain.xml @@ -17,7 +17,6 @@
  • ARA_InsectCreep
  • -
  • ARA_InsectCreepFloor
  • ARA_InsectCreepTile
  • @@ -72,7 +71,6 @@
  • ARA_InsectCreep
  • -
  • ARA_InsectCreepFloor
  • ARA_InsectCreepTile
  • @@ -127,7 +125,6 @@
  • ARA_InsectCreep
  • -
  • ARA_InsectCreepFloor
  • ARA_InsectCreepTile
  • @@ -185,7 +182,6 @@
  • ARA_InsectCreep
  • -
  • ARA_InsectCreepFloor
  • ARA_InsectCreepTile
  • @@ -240,7 +236,6 @@
  • ARA_InsectCreep
  • -
  • ARA_InsectCreepFloor
  • ARA_InsectCreepTile
  • @@ -298,7 +293,6 @@
  • ARA_InsectCreep
  • -
  • ARA_InsectCreepFloor
  • ARA_InsectCreepTile
  • diff --git a/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml b/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml index a9f37b5..1d44f04 100644 --- a/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml +++ b/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml @@ -62,7 +62,6 @@
  • ARA_BindDrone
  • ARA_AcidSprayBurst_Queen
  • -
  • ARA_EggSpew_Techprint
  • ARA_TumorSpew
  • diff --git a/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml b/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml index a6f2102..e07e824 100644 --- a/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml +++ b/1.6/1.6/Defs/RecipeDefs/ARA_Recipes.xml @@ -486,7 +486,6 @@
  • ARA_InsectCreep
  • -
  • ARA_InsectCreepFloor
  • ARA_InsectCreepTile
  • diff --git a/1.6/1.6/Defs/Thing_Misc/ARA_Medicine.xml b/1.6/1.6/Defs/Thing_Misc/ARA_Medicine.xml index 9c71bd0..f65bdd8 100644 --- a/1.6/1.6/Defs/Thing_Misc/ARA_Medicine.xml +++ b/1.6/1.6/Defs/Thing_Misc/ARA_Medicine.xml @@ -28,13 +28,6 @@ 150 true -
  • - -
  • ARA_Cocoon_Medicine
  • -
  • ARA_Cocoon_Medicine_From_Death
  • -
  • ARA_BioforgeIncubator_Thing
  • - - 20 @@ -85,13 +78,6 @@ 1 1000 -
  • - -
  • ARA_Cocoon_Medicine
  • -
  • ARA_Cocoon_Medicine_From_Death
  • -
  • ARA_BioforgeIncubator_Thing
  • - - 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 6f853f2..d74e626 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 @@ -39,9 +39,6 @@ ARA_Bodystocking_White 阿拉克涅虫群的装饰性织物,对于虫群来说应该是没啥用的东西。 - - ARA_Cocoon_Cloth - ArachnaeSwarm/Apparel/ARA_Bodystocking_White @@ -70,9 +67,6 @@ ARA_Bodystocking_Black 阿拉克涅虫群的装饰性织物,对于虫群来说应该是没啥用的东西。 - - ARA_Cocoon_Cloth - ArachnaeSwarm/Apparel/ARA_Bodystocking_Black @@ -101,9 +95,6 @@ ARA_Latex_Catsuit 阿拉克涅虫群的装饰性织物,对于虫群来说应该是没啥用的东西。 - - ARA_Cocoon_Cloth - ArachnaeSwarm/Apparel/ARA_Latex_Catsuit @@ -132,9 +123,6 @@ ARA_Pantyhose_Black 阿拉克涅虫群的装饰性织物,对于虫群来说应该是没啥用的东西。 - - ARA_Cocoon_Cloth - ArachnaeSwarm/Apparel/ARA_Pantyhose_Black @@ -163,9 +151,6 @@ ARA_Pantyhose_White 阿拉克涅虫群的装饰性织物,对于虫群来说应该是没啥用的东西。 - - ARA_Cocoon_Cloth - ArachnaeSwarm/Apparel/ARA_Pantyhose_White @@ -275,9 +260,6 @@ ARA_Maid_Uniform 阿拉克涅督虫们所着织物中的一种,设计上修身轻便,可以使其在阿拉克捏菌毯上获得额外的工作速度,是她们永远服侍虫巢的形象的完美具现化。 - - ARA_Cocoon_Cloth - ARA_Technology_4DIL @@ -324,9 +306,6 @@ ARA_Maid_Dress 阿拉克涅督虫们所着织物中的一种,设计上典雅古朴,可以使其在阿拉克捏菌毯上稳定身形以获得射击精度,是她们永远服侍虫巢的形象的完美具现化。 - - ARA_Cocoon_Cloth - ARA_Technology_4DIL @@ -373,9 +352,6 @@ ARA_Daily_Wear 阿拉克涅督虫们所着织物中的一种,可以使其在阿拉克捏菌毯上获得远行队移动速度,在离开菌毯后缓慢衰减。这套可爱的常服可以和虫群的灵能扭曲效果一起作用于人类,使他们发出“真可爱”的感慨。 - - ARA_Cocoon_Cloth - ARA_Technology_4DIL @@ -423,9 +399,6 @@ ARA_Bunny_Girl_Uniform 阿拉克涅督虫们所着织物中的一种,紧紧贴合督虫们的身体曲线,可以使其在阿拉克捏菌毯上获得额外的移动速度。 - - ARA_Cocoon_Cloth_1Stage - ARA_Technology_5DIL @@ -473,7 +446,6 @@ 阿拉克涅督虫们所着织物中的一种,似乎是从人类的社会中得到了红十字元素的设计构思——只是虫群自己并不清楚为什么要使用这个标志。织物内部蕴含多根愈合素导管,可以让阿拉克涅虫族从菌毯中抽取营养以治疗其他个体。 - ARA_Cocoon_Cloth_1Stage ARA_TerrainHeal_Ability @@ -523,7 +495,6 @@ 阿拉克涅督虫们所着织物中的一种,可以使其在阿拉克捏菌毯上获得额外的休息效率速度,睡眠是虫巢少数需要频繁维持的需求,因此这套织物的价值不言而喻。 - ARA_Cocoon_Cloth_1Stage ARA_TerrainHeal_Ability @@ -573,7 +544,6 @@ 阿拉克涅督虫们所着织物中的一种,高贵又富有魅力,蕴含着强大的灵能力量,这件织物能够增幅穿着者的灵能力量。 - ARA_Cocoon_Cloth_2Stage ARA_TerrainHeal_Ability Normal @@ -649,7 +619,6 @@ 阿拉克涅督虫们所着织物中的一种,拥有摄人心魄的力量,可以抽取菌毯的力量发动夺取心智的能力,让敌方调转枪口攻击自己人。 - ARA_Cocoon_Cloth_2Stage ARA_TerrainTempt_Ability @@ -699,7 +668,6 @@ 阿拉克涅虫群中的高阶战士所着织物,她们能够发出震耳欲聋的咆哮,并且看上去给人一种意外的庄严感——只不过她们挥着咔咔作响的鳌钳将你的同伴撕裂时,所有美好的幻想都会成为泡影。 - ARA_Cocoon_Cloth_2Stage ARA_TerrorRoar_Ability 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 7307507..376480d 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 @@ -5,9 +5,6 @@ ARA_MW_Bone_Sword 阿拉克涅虫群督虫使用基础近战武装器官,通过多根外露神经束与督虫的辅肢相连。尽管它只是一块坚硬的剑形骨片,但是丝毫不影响那些拥有无穷蛮力的阿拉克涅虫群督虫使用它将侵犯虫巢之敌一一斩首。 - - ARA_Cocoon_Weapon -
  • ARA_Armed_Organ
  • ARA_Armed_Organ_Melee
  • @@ -82,9 +79,6 @@ ARA_MW_Cartilage_Whip 阿拉克涅虫群督虫使用的近战武装器官,以节节软骨交错形成强韧的鞭子。这种武器在打击敌人时不仅会发出骇人的声响,还会使得对手疼痛难忍,并且以击打为主的钝器伤害也能很好地规避敌方装甲的防御。 - - ARA_Cocoon_Weapon_1Stage -
  • ARA_Armed_Organ
  • ARA_Armed_Organ_Melee
  • @@ -168,9 +162,6 @@ ARA_MW_Scything_Talons 阿拉克涅虫群督虫使用的近战武装器官,状似一柄巨型镰刀,可以和辅肢通过神经束进行连接。得益于其巨大的体积,其每次挥击将造成范围性的伤害,一次性可以击倒多个相邻目标。 - - ARA_Cocoon_Weapon_2Stage -
  • ARA_Armed_Organ
  • ARA_Armed_Organ_Melee
  • @@ -259,9 +250,6 @@ 阿拉克涅虫群督虫使用基础远程武装器官,外表就像一只拳套,可以通过神经束缠绕接在阿拉克涅督虫的辅肢上。这种武器小巧轻盈,虽然射程很短,但是面对敌人时能喷出一整排的带毒尖刺,把对手扎个透心凉。 Normal Medieval - - ARA_Cocoon_Weapon - ArachnaeSwarm/Weapon/ARA_RW_Basic_Fist_Needle_Gun Graphic_Single @@ -369,9 +357,6 @@ 阿拉克涅虫群督虫所使用的武装器官,拥有五排刺针管道,可以在联结神经束的指挥下交替发射大量的毒针,虽然准度较差但是威力不逊色于人类所使用的机枪。 Normal Medieval - - ARA_Cocoon_Weapon_1Stage - ArachnaeSwarm/Weapon/ARA_RW_Toxic_Needle_MG Graphic_Single @@ -465,9 +450,6 @@ 阿拉克涅虫群督虫所使用的武装器官,拥有双联装多排刺针短程管道,发射精度较差但是一次可以发射大量弹药,威力丝毫不逊色于人类的霰弹枪。 Normal Medieval - - ARA_Cocoon_Weapon_1Stage - ArachnaeSwarm/Weapon/ARA_RW_Toxic_Needle_SG Graphic_Single @@ -590,9 +572,6 @@ 阿拉克涅虫群的大型武装器官,拥有张牙舞爪的侵略性外形,其口器与一连串可以增生巨型棘刺的血链相连,并通过肌肉压缩获得极高的膛压以射出腔内破坏力惊人的棘刺。虫群从人类的武器上获得了灵感,为血链刺加入了伴生激素,使得血链棘刺炮的射速会随着射击的持续而增加。 Normal Medieval - - ARA_Cocoon_Weapon_2Stage - ArachnaeSwarm/Weapon/ARA_RW_Basic_SniperCannon_Gun Graphic_Single @@ -647,9 +626,7 @@
  • -
  • ARA_Cocoon_Weapon_2Stage
  • -
  • ARA_Cocoon_Weapon_2Stage_From_Death
  • -
  • ARA_BioforgeIncubator_Thing
  • +
  • ARA_Equipment_Ootheca
  • @@ -709,9 +686,6 @@ 阿拉克涅虫群的武装器官,虽然体积不是很大,但是通过肌肉压缩射出的棘刺穿透力极强,可以打穿成排的敌军。除此之外,这种武装器官也在下颌增生了一把小型骨刃,以供虫群使用其抵御近身威胁。 Normal Medieval - - ARA_Cocoon_Weapon_2Stage - ArachnaeSwarm/Weapon/ARA_RW_Basic_Rail_Gun Graphic_Single @@ -806,9 +780,6 @@ 阿拉克涅虫群督虫使用基础远程武装器官,可以通过肌肉的瞬间加压喷出阿拉克涅酸液。这种酸液能覆盖目标并灼烧所有粘上酸液的敌人。 Normal Medieval - - ARA_Cocoon_Weapon - ArachnaeSwarm/Weapon/ARA_RW_Basic_Acid_Bladder_Gun Graphic_Single @@ -916,9 +887,6 @@ 阿拉克涅虫群的大型远程武装器官,拥有布满酸腺的液囊和强健的肌肉纤管,可以向瞄准的方向喷射火酸热熔气团,覆盖范围内的敌人并融化它们的装甲和血肉。 Normal Medieval - - ARA_Cocoon_Weapon_1Stage - ArachnaeSwarm/Weapon/ARA_RW_Basic_FireSpewer_Gun Graphic_Single @@ -1067,9 +1035,6 @@ 阿拉克涅虫群督虫使用大型远程武装器官,膛内布满了强健的肌肉组织,可以在一瞬间的收缩后将一团酸液发射到空中,以在安全距离下对敌人的集群进行轰炸。 Normal Medieval - - ARA_Cocoon_Weapon_2Stage - ArachnaeSwarm/Weapon/ARA_RW_Acid_Mortar Graphic_Single @@ -1187,9 +1152,6 @@ 阿拉克涅虫群督虫使用基础远程武装器官,状似人类的手枪,可以发射由爆裂种辅虫构成的导弹。这种武装器官适应性和追踪能力很强,即使是不擅长射击的虫族使用这种武器也能有很好的表现。 Normal Medieval - - ARA_Cocoon_Weapon_2Stage - ArachnaeSwarm/Weapon/ARA_RW_Missile_HG_Gun Graphic_Single @@ -1319,9 +1281,6 @@ 阿拉克涅虫群的大型武装器官,可以以排山倒海的架势射出成排由爆裂种辅虫构成的导弹,强大的火力使其成为虫族构建血肉军团的核心之一。 Normal Medieval - - ARA_Cocoon_Weapon_2Stage - ArachnaeSwarm/Weapon/ARA_RW_Missile_AR_Gun Graphic_Single @@ -1451,9 +1410,6 @@ 阿拉克涅虫群督虫使用的远程武装器官,内部的腔室孕育了大量的天巢种,督虫们会将其作为导弹发射出去,这些天巢种在敌人后将持续啃咬敌人一段时间,并且从敌人身上脱落后也将继续攻击。 Normal Medieval - - ARA_Cocoon_Weapon_1Stage - ArachnaeSwarm/Weapon/ARA_RW_Basic_SkyHive_Gun Graphic_Single @@ -1582,9 +1538,6 @@ 阿拉克涅虫群督虫使用的大型远程武装器官,通过从携带大量电荷的细胞中释放能量,虫群可以使用这种武装器官在敌人的集群中发起连锁闪电打击。 Normal Medieval - - ARA_Cocoon_Weapon_1Stage - ArachnaeSwarm/Weapon/ARA_RW_Large_Arc_Gun Graphic_Single @@ -1719,9 +1672,6 @@ 阿拉克涅虫群督虫使用远程武装器官,这种武装器官可以喷射出能快速冷却目标的射流束——相比起共生肌群上的版本,这个手持版本更多地是起到控制特定目标而非击杀目标的功能。 Normal Medieval - - ARA_Cocoon_Weapon_2Stage - ArachnaeSwarm/Weapon/ARA_RW_Basic_Fist_Needle_Gun Graphic_Single @@ -1816,13 +1766,6 @@ None -
  • ARA_Weapon_Damage_Icez
  • @@ -2190,12 +2133,6 @@ None -
  • ARA_Huge_Weapon
  • diff --git a/1.6/1.6/Defs/Thing_building/ARA_Building.xml b/1.6/1.6/Defs/Thing_building/ARA_Building.xml index 828008c..c52f6a8 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_Building.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_Building.xml @@ -1,6 +1,6 @@ - + ARA_InsectCreep 阿拉克涅虫族所铺设的由真菌、甲壳素分泌物混合得到的地面,会自动在各种拉克涅虫族建筑附近蔓延。这种奇特的结构质地紧密且暗藏大量营养输送组织,可以支撑重型建筑、种植作物、加速其上的阿拉克涅虫族移动速度,但是除了虫族以外没人想踩在这坨软乎乎的活体结构上。 @@ -16,13 +16,13 @@ 330 0 Filth_Slime - -
  • ARA_Base_Technology
  • -
  • Unnatural
  • - true + +
  • ARA_Base_Technology
  • +
    + True false @@ -51,54 +51,6 @@
  • Insect
  • -->
    - - ARA_InsectCreepFloor - - 由阿拉克涅虫族所铺设的由真菌、甲壳素分泌物混合得到的地面,性质类似于阿拉克涅菌毯,不过可以在支撑结构上蔓延,以作为虫群的逆重飞船地基。 - ArachnaeSwarm/Terrain/Surfaces/ARA_InsectCreep - (0.95, 0.95, 0.93, 1) - (209, 207, 184) - 0 - FadeRough - 399 - ConstructMetal - true - ARA_Buildings - true - true - Misc9 - -
  • ARA_Base_Technology
  • -
    - -
  • ARA_Creep
  • -
  • Substructure
  • -
    - - 0 - 0.25 - 0 - 0 - 100 - - - 1 - 2 - 2 - - 1000 - true - Walkable - 1 - -
  • ARA_Creep
  • -
  • Substructure
  • -
    - -
  • PlaceWorker_InSubstructureFootprint
  • -
  • PlaceWorker_BuildingsValidOverSubstructure
  • -
    -
    ARA_InsectCreepTile @@ -172,7 +124,7 @@ true - + ARA_SmoothedInsectWall ArachnaeSwarm/Building/Linked/ARA_InsectWall_Blueprint @@ -211,6 +163,30 @@ + + ARA_SmoothedInsectWall + + 阿拉克涅工蜂将硬质材料和甲壳素混合堆起来形成的墙壁,虫族对这片墙壁进行了精心打磨,质地坚硬的同时看起来美观多了。 + Things/Building/Linked/WallSmooth_MenuIcon + + Things/Building/Linked/RockSmooth_Atlas + (209, 207, 184) + + + 7 + 1 + 1000 + + + false + true + false + + true + + false + Repair + ARA_InsectDoor @@ -290,6 +266,121 @@ Blueprint_Build false + ARA_SmoothedInsectDoor + + true + + ArachnaeSwarm/Building/Door/ARA_InsectDoor_BluePrint + + + + ArachnaeSwarm/Building/Door/ARA_InsectDoor_Support + Graphic_Multi + (1.4, 1.2) + + +
  • ARA_InsectWall
  • +
    +
    + 2505 + ArachnaeSwarm/Building/Door/ARA_InsectDoor_Icon + Misc2 + 6 + +
  • + true +
  • +
  • + CompPowerTrader + 0 + true +
  • +
    + + + ARA_SmoothedInsectDoor + + 阿拉克涅虫巢的入口,主体由硬质材料和甲壳素混合而成,而开合机构是没有完整意识的阿拉克涅虫组织结构,这使得其可以实现自动开关,不需要在阿拉克涅菌毯上建造。\n\n它已经被虫群打磨过,现在光滑而美观 + Building_MultiTileDoor + Building + DoorMoveable + 1 + true + + ArachnaeSwarm/Building/Door/ARA_InsectDoor + Graphic_Multi + CutoutComplex + + (0.7, 0.6, 0.7) + (0,0,-0.1) + + + + false + + + + 10 + 1200 + 0 + 1000 + 0 + 2 + + 10 + +
  • Woody
  • +
  • Stony
  • +
  • Metallic
  • +
    + + 5 + 1 + + false + true + Normal + +
  • ARA_Base_Technology
  • +
    + + + false + Heavy + + ARA_Buildings + true + 0 + true + RealtimeOnly + EatVegetarian + +
  • + Bomb + 0.1 +
  • +
  • + Thump + 0.1 +
  • +
    + + + true + true + true + Door_OpenPowered + Door_ClosePowered + Door_OpenManual + Door_CloseManual + Blueprint_Build + false + true ArachnaeSwarm/Building/Door/ARA_InsectDoor_BluePrint @@ -971,12 +1062,6 @@
  • ARA_InsectCreep
  • - -
  • - ARA_InsectCreep - 5 -
  • -
    diff --git a/1.6/1.6/Defs/Thing_building/ARA_HiveShip.xml b/1.6/1.6/Defs/Thing_building/ARA_HiveShip.xml index b886a79..8728141 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_HiveShip.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_HiveShip.xml @@ -55,9 +55,6 @@
  • GravshipHull
  • - -
  • ARA_InsectCreepFloor
  • -
    Blueprint_Build ArachnaeSwarm/Building/ARA_HiveShip_Heart_Icon diff --git a/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml b/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml index fc48934..a9f32fe 100644 --- a/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml +++ b/1.6/1.6/Defs/Thing_building/ARA_NutrientNetworkBuilding.xml @@ -58,8 +58,6 @@ -
  • ARA_BioforgeIncubator
  • -
  • ARA_BioforgeIncubator_Thing
  • ARA_GrowthVat
  • ARA_MorphableResearchBench
  • ARANutrientDispenser
  • @@ -202,8 +200,6 @@
  • ARA_NutrientNetworkTower
  • -
  • ARA_BioforgeIncubator
  • -
  • ARA_BioforgeIncubator_Thing
  • 15 20 @@ -322,268 +318,6 @@
    - - - ARA_BioforgeIncubator_Thing - - 一个大型的、需要消耗大量营养物质的孵化设施,可以同时孵化多个物品,并能通过链接外部设备来提高效率。 - - ArachnaeSwarm/Building/ARA_BioforgeIncubator_Thing - Graphic_Single - CutoutComplex - false - (5.5,6.5) - (0, 2, 0.5) - - (2.75, 1.2, 2) - (0.2,0,-1.15) - - - (5,5) - false - Normal - - 0 - - 200 - 40 - 10 - - false - 0 - Building - PassThroughOnly - ARA_Creep - 50 - - 20000 - 250 - 2800 - 1.0 - - -
  • PlaceWorker_PreventInteractionSpotOverlap
  • -
    - 0.8 - (0,0,-1) - true - ARA_Buildings - 2600 - Item - - Laboratory - 0.8 - -
  • ARA_InsectCreep
  • -
    -
    - -
  • ARA_Technology_4NPT
  • -
    - - -
  • - - 3 - 1.0 - -
  • ArachnaeNode_Race_WeaponSmith
  • - - - - 10 - 30 - 0.00001 - -
  • - Legendary - 0.99 -
  • -
  • - Masterwork - 0.90 -
  • -
  • - Excellent - 0.70 -
  • -
  • - Good - 0.50 -
  • -
  • - Normal - 0.20 -
  • -
  • - Poor - 0.10 -
  • -
    - - - -
  • - 300.0 - - -
  • ARA_InsectJelly
  • - - - 虫蜜 - true - true - - - -
  • - -
  • ARA_NutrientNetworkTower
  • -
  • ARA_GrowthVat
  • - - -
  • - ARA_InsectCreep - 8 -
  • -
    -
    - - ARA_BioforgeIncubator - - 一个大型的、需要消耗大量营养物质的孵化设施,可以同时孵化多个单位,并能通过链接外部设备来提高效率。 - - ArachnaeSwarm/Building/ARA_BioforgeIncubator - Graphic_Single - CutoutComplex - (5.5,6.5) - false - (0, 2, 0.5) - - (2.75, 1.4, 2) - (0,0,-1.25) - - - (5,5) - Normal - false - - 0 - - 200 - 40 - 10 - - false - 0 - Building - PassThroughOnly - ARA_Creep - ARA_Buildings - 50 - -
  • ARA_Technology_4NPT
  • -
    - - 20000 - 250 - 2800 - 1.0 - - -
  • PlaceWorker_PreventInteractionSpotOverlap
  • -
    - 0.8 - (0,0,-1) - true - - 2600 - Item - - Laboratory - 0.8 - -
  • ARA_InsectCreep
  • -
    -
    - - -
  • - 5 - 0.5 - -
  • ARA_ArachnaeQueen
  • - - -
  • - ArachnaeNode_Race_Myrmecocystus - 240000 - 100.0 -
  • -
  • - ArachnaeNode_Race_ShieldHead - 180000 - 40.0 -
  • -
  • - ArachnaeNode_Race_WeaponSmith - 180000 - 40.0 -
  • -
  • - ArachnaeNode_Race_Fighter - 90000 - 20.0 - ARA_Technology_1KYC -
  • -
  • - ArachnaeNode_Race_Smokepop - 180000 - 60.0 - ARA_Technology_5KYC -
  • -
  • - ArachnaeNode_Race_Skyraider - 120000 - 80.0 - ARA_Technology_2KYC -
  • -
  • - ARA_MimicNematodeShamblerSwarmer - 600 - 10.0 - ARA_Technology_6MEN -
  • -
    - - - -
  • - 20.0 - - -
  • ARA_InsectJelly
  • - - - 虫蜜 - true - true - - - -
  • - -
  • ARA_NutrientNetworkTower
  • -
  • ARA_GrowthVat
  • - - -
  • - ARA_InsectCreep - 8 -
  • -
    -
    - ARA_MorphableResearchBench +
  • + 100 + 精华素 + + +
  • ARA_Gene_Essence
  • + + + 0 + false + 0.02 + 1 + 0 + +
  • + CocoonDestroyed +
  • + +
  • + +
  • ARA_ArachnaeQueen
  • + + true + 0.2 + 1.0 + 0.06 + 30 + +
  • + -30 + 55 + 0.00005 + 0.005 + 0.001 +
  • +
    + \ No newline at end of file diff --git a/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml b/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml index 4033614..8f09aee 100644 --- a/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml +++ b/1.6/1.6/Defs/ThinkTreeDefs/ARA_ThinkTrees.xml @@ -46,6 +46,59 @@ + + +
  • + +
  • + Idle + + +
  • + +
  • + None + 120~240 +
  • + + + +
  • + +
  • + None + 120~240 + 500 +
  • + + +
  • + 0.1 + +
  • + None + 120~240 + 500 +
  • + + + +
  • + None + 120~240 +
  • + + + + +
  • + None + 120~240 +
  • + + + +
  • @@ -642,25 +695,6 @@ Humanlike_PostDuty
  • - -
  • - 2.5 - -
  • - -
  • ARA_InteractiveEggSac
  • - - - - -
  • - -
  • ARA_InteractiveEggSac
  • - - true - - -
  • true diff --git a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_Building_Ootheca.xml b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_Building_Ootheca.xml index 7170153..9547b6b 100644 --- a/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_Building_Ootheca.xml +++ b/1.6/1.6/Languages/ChineseSimplified (简体中文)/Keyed/ARA_Building_Ootheca.xml @@ -1,162 +1,108 @@ - - 正在孵化 - 进度 - 速度 - 质量 - 目标 - 速度乘数 - 质量乘数 - 幼虫种进入中 - 剩余秒数 - 幼虫种正在路上 - 剩余时间 - - 小时 - 指派幼虫种 - 取消孵化 - 取消当前的孵化进度,幼虫种将死在卵囊中,卵囊则会重新张开以接纳其他幼虫种 - 孵化 - - 选择要孵化的目标,点击更改目标。 - 未选择目标 - 基础孵化时间 + + 速度因子 + ✓ 在孵化间中 + ✗ 不在孵化间中 + 营养液:{0}个(+{1}%) + 附近没有营养液 + 营养液检测半径:{0}格 + 总速度倍率:{0} + + 质量因子 + 建筑血量:{0} + 房间因子:正常 + 房间因子:{0} + 附近其他卵:{0}个(-{1}%) + 附近没有其他卵 + 其他卵检测半径:{0}格 + 总质量倍率:{0} + + 呼叫幼虫 + 幼虫将前来激活卵囊并孵化: + 幼虫搜索半径:{0}格 + 已经在孵化中 + 请先取消当前孵化 + 幼虫已在路上 + 未找到幼虫 + 幼虫必须是ArachnaeBase_Race_Larva种族 + 已呼叫幼虫 + 将很快到达 + 幼虫已到达 + 正在激活卵囊 + 孵化开始: + 过程将在 + 天内完成(基础时间) + + 孵化已取消 + 内容物已丢失 + 孵化完成: + 已生成,质量: + 极佳 + 良好 + 普通 + + 极差 + + 正在孵化 + 进度 + 剩余时间 + + 小时 + 速度 + 质量 + 幼虫操作中 + 秒剩余 + 幼虫在路上 + 目标 + 速度倍率 + 质量倍率 + + 呼叫幼虫 + 取消孵化 + 取消当前孵化,已消耗的资源将丢失 + 孵化:{0} + 孵化:{0} + 孵化时间:{0}天 + 点击选择要孵化的物种 + 需要研究:{0} + 选择孵化目标 + 已切换目标:{0} + + 无可用描述 + 孵化时间 研究 已完成 需要 - 点击选择不同的孵化目标。 - 已经在孵化中 - 请先取消当前孵化 - 一只幼虫种已经在前往这个卵囊的路上 - 没有找到可用的幼虫种 - 必须是阿拉克涅幼虫种,并且属于你的派系 - 已召唤幼虫种 - 它将很快到达并激活卵囊 - 幼虫种已到达 - 正在激活卵囊... - 已开始孵化 - 过程将在 - 天后完成(基础时间) - 孵化已取消 - 内容已丢失 - 孵化完成 - 已诞生,质量为 - 优秀 - 良好 - 一般 - - 极差 - 孵化速度因子: - ✓ 在孵化间中 (100%) - ✗ 不在孵化间中 (80%速度) - ✓ 营养液 - ✗ 附近没有营养液 - 总速度乘数:{0} - 孵化质量因子: - ✓ 建筑血量: - ✓ 房间因子:100% - 房间因子: - ✗ 附近卵囊: - ✓ 附近没有卵囊 - 总质量乘数:{0} - 召唤一只幼虫种来进入这个卵囊 - 幼虫种将来到卵囊,进入它,然后开始孵化: - 当前速度乘数: - 当前质量乘数: - 取消当前的孵化过程,在其中的幼虫种将会死亡 - - - 孵化:{0} - 点击更改目标 - 选择孵化目标 - 孵化目标: - 需要: - 无描述可用 - 孵化时间 - 孵化时间:{0}天 - - - 孵化状态 - 孵化进度 - 这不是一个卵囊 - 准备孵化: - 未选择孵化目标 - 幼虫种正在激活卵囊... - 剩余秒数 - 质量:低于目标(影响最终结果) - 质量进度 - 孵化进度 - - - 正在激活卵囊... - - - 质量低于目标 - - - 需要研究 - - - - 速度因子 - ✓ 位于孵化间内 - ✗ 不在孵化间内 - 营养液: {0} (+{1}%) - 无附近营养液 - 营养液检测半径: {0}格 - 总速度乘数: {0} - - 质量因子 - 建筑健康度: {0} - 房间因子: 正常 - 房间因子: - 附近卵: {0} (-{1}%) - 无附近卵 - 卵检测半径: {0}格 - 总质量乘数: {0} - - 呼叫幼虫 - 幼虫将前往卵荚进行孵化 - 幼虫搜索半径: {0}格 - - 已经在孵化中 - 请先取消当前孵化 - 幼虫已在途中 - 未找到可用幼虫 - 必须是幼虫种 - 幼虫已呼叫 - 即将到达 - 幼虫已到达 - 正在激活卵荚 - 开始孵化 - 过程将在 - 天内完成(基础时间) - 孵化已取消 - 内容物已丢失 - 孵化完成 - 已出现,质量为 - 优秀 - 良好 - 一般 - 较差 - 很差 - 质量 - - - 额外状态效果 - 孵化质量奖励 - 状态效果 - 没有可用的状态效果奖励。 + 孵化质量奖励 质量阈值奖励 获得所有状态效果 获得{0}个随机状态效果 - 全部效果 - 个效果 - 可用状态效果 - 质量奖励: - - + 孵化··· + 选择孵化的阿拉克涅督虫··· + 孵化菜单 + 孵化目标: + 需要 + + 孵化进度 + 这不是一个卵囊 + 孵化进度 + 速度 + 质量 + 孵化进度 + 质量进度 + 目标 + + 小时 + 幼虫正在激活卵囊 + 秒剩余 + 幼虫正在路上 + 准备孵化 + 未选择孵化目标 + + 正在激活卵囊 + {0}因高质量的孵化获得了1个额外状态效果! {0}因高质量的孵化获得了2个额外状态效果! {0}因高质量的孵化获得了3个额外状态效果! @@ -164,7 +110,7 @@ {0}因卓越的孵化质量获得了所有额外状态效果! {0}获得了{1}个额外状态效果! - + 正在孵化 进度 剩余时间 diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo index a0330ac..c2c3d11 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 bb1aec9..537e138 100644 --- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json +++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json @@ -11,28 +11,12 @@ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\compproperties_incubatordata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" }, { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\building_ootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_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|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_ootheca\\oothecaincubatorextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_ootheca\\oothecaincubatorextension.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_equipmentootheca\\itab_equipmentootheca_incubation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\itab_equipmentootheca_incubation.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", + "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\building_equipmentootheca.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\buildings\\building_equipmentootheca\\compproperties_equipmentincubatordata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:buildings\\building_equipmentootheca\\compproperties_equipmentincubatordata.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ara_hediffdefof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:ara_hediffdefof.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" } ], "DocumentGroupContainers": [ @@ -42,25 +26,8 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 1, + "SelectedChildIndex": 4, "Children": [ - { - "$type": "Bookmark", - "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "Building_RefuelingVat.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs", - "RelativeDocumentMoniker": "Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs", - "RelativeToolTip": "Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs", - "ViewState": "AgIAAEEAAAAAAAAAAAAkwBYAAAAzAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T04:00:20.165Z", - "EditorCaption": "" - }, { "$type": "Document", "DocumentIndex": 1, @@ -69,82 +36,53 @@ "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", "RelativeToolTip": "Buildings\\Building_Ootheca\\CompProperties_IncubatorData.cs", - "ViewState": "AgIAAAIBAAAAAAAAAAAawB8BAAAAAAAAAAAAAA==", + "ViewState": "AgIAAAAAAAAAAAAAAAAAADEAAAAlAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T02:36:56.126Z", + "WhenOpened": "2025-12-16T08:17:40.867Z", "EditorCaption": "" }, + { + "$type": "Document", + "DocumentIndex": 2, + "Title": "ITab_Ootheca_Incubation.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\ITab_Ootheca_Incubation.cs", + "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\ITab_Ootheca_Incubation.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\ITab_Ootheca_Incubation.cs", + "RelativeToolTip": "Buildings\\Building_Ootheca\\ITab_Ootheca_Incubation.cs", + "ViewState": "AgIAAJUAAAAAAAAAAAAewMkAAAANAAAAAAAAAA==", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", + "WhenOpened": "2025-12-16T08:14:08.752Z", + "EditorCaption": "" + }, + { + "$type": "Bookmark", + "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" + }, { "$type": "Document", "DocumentIndex": 3, - "Title": "OothecaIncubatorExtension.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs", - "RelativeDocumentMoniker": "Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs", - "RelativeToolTip": "Buildings\\Building_Ootheca\\OothecaIncubatorExtension.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAArAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T00:38:04.247Z" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "ITab_EquipmentOotheca_Incubation.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs", - "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs", - "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\ITab_EquipmentOotheca_Incubation.cs", - "ViewState": "AgIAAIAAAAAAAAAAAADgv5AAAAAAAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-16T00:29:36.407Z" - }, - { - "$type": "Document", - "DocumentIndex": 5, "Title": "Building_EquipmentOotheca.cs", "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\Building_EquipmentOotheca.cs", - "ViewState": "AgIAAEgCAAAAAAAAAAAewF8CAABDAAAAAAAAAA==", + "ViewState": "AgIAALgCAAAAAAAAAAAAAMQCAAAjAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-15T18:22:14.171Z" + "WhenOpened": "2025-12-16T08:13:46.678Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 2, - "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": "AgIAACkBAAAAAAAAAAAhwC0BAAApAAAAAAAAAA==", + "DocumentIndex": 0, + "Title": "Building_RefuelingVat.cs", + "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs", + "RelativeDocumentMoniker": "Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs", + "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs*", + "RelativeToolTip": "Building_Comps\\ARA_Building_RefuelingVat\\Building_RefuelingVat.cs*", + "ViewState": "AgIAAPsAAAAAAAAAAAAewBMBAAAfAAAAAAAAAA==", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-15T18:22:12.217Z" - }, - { - "$type": "Document", - "DocumentIndex": 6, - "Title": "CompProperties_EquipmentIncubatorData.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs", - "RelativeDocumentMoniker": "Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs", - "RelativeToolTip": "Buildings\\Building_EquipmentOotheca\\CompProperties_EquipmentIncubatorData.cs", - "ViewState": "AgIAAAAAAAAAAAAAAAAAACYAAAAaAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-15T17:55:40.041Z" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "ARA_HediffDefOf.cs", - "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs", - "RelativeDocumentMoniker": "ARA_HediffDefOf.cs", - "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\ARA_HediffDefOf.cs", - "RelativeToolTip": "ARA_HediffDefOf.cs", - "ViewState": "AgIAAAAAAAAAAAAAAADwvxgAAAAdAAAAAAAAAA==", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2025-12-15T17:32:18.493Z" + "WhenOpened": "2025-12-16T04:00:20.165Z", + "EditorCaption": "" } ] } diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_Building_RefuelingVat/Building_RefuelingVat.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_Building_RefuelingVat/Building_RefuelingVat.cs index 80a4309..ef697f2 100644 --- a/Source/ArachnaeSwarm/Building_Comps/ARA_Building_RefuelingVat/Building_RefuelingVat.cs +++ b/Source/ArachnaeSwarm/Building_Comps/ARA_Building_RefuelingVat/Building_RefuelingVat.cs @@ -1,4 +1,5 @@ -using RimWorld; +// File: Building_RefuelingVat.cs +using RimWorld; using System; using System.Collections.Generic; using System.Linq; @@ -17,6 +18,11 @@ namespace ArachnaeSwarm private CompAutoEjector cachedAutoEjectorComp; private Graphic cachedTopGraphic; + // === 新增字段:销毁系统 === + private bool selfDestructInitiated = false; + private int pawnMissingTickCount = 0; + private const int MissingTicksBeforeDestruction = 60; // Pawn失踪后60ticks(1秒)销毁建筑 + // 新增字段:跟踪被建筑杀死的pawn private HashSet pawnsKilledByVat = new HashSet(); @@ -103,6 +109,86 @@ namespace ArachnaeSwarm private const int AcidDamageInterval = 6000; private Dictionary pawnTickCounters = new Dictionary(); + // === 新增方法:检查Pawn是否在容器内 === + private bool IsPawnInContainer(Pawn pawn) + { + if (pawn == null || pawn.Destroyed) return false; + return innerContainer.Contains(pawn); + } + + // === 新增方法:启动自毁系统 === + private void InitiateSelfDestruct() + { + if (selfDestructInitiated) return; + + selfDestructInitiated = true; + pawnMissingTickCount = 0; + Log.Message($"RefuelingVat at {Position}: Pawn missing from container. Self-destruct initiated. Will destroy in {MissingTicksBeforeDestruction} ticks."); + + // 发送警告消息 + Messages.Message("RefuelingVat_ContainmentBreach".Translate(), this, MessageTypeDefOf.NegativeEvent); + } + + // === 新增方法:执行建筑销毁 === + private void ExecuteSelfDestruct() + { + Log.Message($"RefuelingVat at {Position}: Self-destruct sequence complete. Destroying building."); + + // 显示爆炸效果 + if (!Destroyed) + { + // 销毁建筑 + Destroy(DestroyMode.Vanish); + } + } + + // === 修改:检查Pawn状态 === + private void CheckPawnContainment() + { + if (!base.Working || selectedPawn == null) + { + // 如果不在工作状态,重置自毁系统 + selfDestructInitiated = false; + pawnMissingTickCount = 0; + return; + } + + // 检查Pawn是否还在容器内 + if (!IsPawnInContainer(selectedPawn)) + { + // Pawn不在容器内,启动或继续自毁 + if (!selfDestructInitiated) + { + InitiateSelfDestruct(); + } + else + { + pawnMissingTickCount++; + + // 检查是否达到销毁时间 + if (pawnMissingTickCount >= MissingTicksBeforeDestruction) + { + ExecuteSelfDestruct(); + } + else if (pawnMissingTickCount % 30 == 0) // 每0.5秒报告一次 + { + Log.Message($"RefuelingVat at {Position}: Pawn still missing. Self-destruct in {MissingTicksBeforeDestruction - pawnMissingTickCount} ticks."); + } + } + } + else + { + // Pawn在容器内,重置自毁系统 + if (selfDestructInitiated) + { + Log.Message($"RefuelingVat at {Position}: Pawn returned to container. Self-destruct cancelled."); + selfDestructInitiated = false; + pawnMissingTickCount = 0; + Messages.Message("RefuelingVat_ContainmentRestored".Translate(), this, MessageTypeDefOf.PositiveEvent); + } + } + } + // 安全字典操作方法 private bool SafeTryGetTickCount(Pawn pawn, out int tickCount) { @@ -163,7 +249,7 @@ namespace ArachnaeSwarm { if (selectedPawn != null && innerContainer.Contains(selectedPawn)) { - ArachnaeLog.Debug($"RefuelingVat despawned with pawn inside, forcing ejection."); + Log.Message($"RefuelingVat despawned with pawn inside, forcing ejection."); Finish(); // 使用修改后的Finish方法 } } @@ -186,10 +272,10 @@ namespace ArachnaeSwarm DamageInfo acidDamage = new DamageInfo( acidDamageDef, - 1.5f, // 每次1.5点伤害 + 1000f, // 每次1.5点伤害 2f, // 护甲穿透 -1f, // 随机角度 - instigator: this, // 将建筑设为伤害来源 + null, // 将建筑设为伤害来源 hitPart: targetPart ); @@ -207,11 +293,11 @@ namespace ArachnaeSwarm } catch (Exception ex) { - ArachnaeLog.Debug($"Error applying acid damage to {pawn}: {ex.Message}"); + Log.Error($"Error applying acid damage to {pawn}: {ex.Message}"); } } - // 新增方法:处理pawn死亡 + // === 修改:处理pawn死亡 === private void HandlePawnDeath(Pawn pawn) { try @@ -222,36 +308,22 @@ namespace ArachnaeSwarm // 检查是否是被建筑杀死的 if (pawnsKilledByVat.Contains(pawn)) { - ArachnaeLog.Debug($"Pawn {pawn.Label} killed by RefuelingVat, destroying corpse."); + Log.Message($"Pawn {pawn.Label} killed by RefuelingVat."); - // 从容器中移除pawn - if (innerContainer.Contains(pawn)) - { - innerContainer.Remove(pawn); - } + // 注意:现在不再需要从容器中移除Pawn或销毁尸体 + // 因为建筑会被销毁,Pawn会自然弹出 - // 销毁pawn的尸体 - if (!pawn.Destroyed) - { - pawn.Destroy(); - } - - // 从跟踪列表中移除 + // 只是从跟踪列表中移除 SafeRemoveFromDictionaries(pawn); - // 立即调用完成逻辑 - if (selectedPawn == pawn) - { - selectedPawn = null; - startTick = -1; - } - - return; // 直接返回,不执行后续弹出逻辑 + // 不需要重置selectedPawn,因为建筑即将被销毁 + // 自毁系统会处理Pawn不在容器中的情况 + return; } } catch (Exception ex) { - ArachnaeLog.Debug($"Error handling pawn death for {pawn}: {ex}"); + Log.Error($"Error handling pawn death for {pawn}: {ex}"); } } @@ -272,10 +344,17 @@ namespace ArachnaeSwarm pawn.RaceProps.body.corePart; } + // === 修改:Tick方法 === protected override void Tick() { base.Tick(); + // 检查Pawn是否还在容器内 + CheckPawnContainment(); + + // 如果自毁已启动,跳过其他逻辑 + if (selfDestructInitiated) return; + // 更严格的空值检查 if (selectedPawn == null || selectedPawn.Destroyed || !innerContainer.Contains(selectedPawn)) { @@ -295,7 +374,9 @@ namespace ArachnaeSwarm } else { - Finish(); // 其他原因的死亡正常弹出 + // 其他原因的死亡 - 启动自毁系统 + Log.Message($"Pawn {selectedPawn.Label} died unexpectedly. Starting self-destruct."); + InitiateSelfDestruct(); } return; } @@ -379,6 +460,12 @@ namespace ArachnaeSwarm // 确保pawn不在死亡跟踪列表中 pawnsKilledByVat.Remove(pawn); + + // 重置自毁系统 + selfDestructInitiated = false; + pawnMissingTickCount = 0; + + Log.Message($"Pawn {pawn.Label} inserted into RefuelingVat at {Position}. Self-destruct monitoring active."); } if (deselected) { @@ -392,10 +479,11 @@ namespace ArachnaeSwarm { try { - // 检查pawn是否还活着,如果已经死亡且是被建筑杀死的,则跳过弹出 + // 检查pawn是否还活着,如果已经死亡且是被建筑杀死的,则启动自毁 if (selectedPawn.Dead && pawnsKilledByVat.Contains(selectedPawn)) { - HandlePawnDeath(selectedPawn); + Log.Message($"Pawn {selectedPawn.Label} killed by vat. Starting self-destruct."); + InitiateSelfDestruct(); return; } @@ -426,7 +514,7 @@ namespace ArachnaeSwarm // 方法3:强制移除(仅对活着的pawn) if (!ejected && innerContainer.Contains(selectedPawn) && !selectedPawn.Dead) { - ArachnaeLog.Debug($"Forcing removal of pawn {selectedPawn} from RefuelingVat"); + Log.Message($"Forcing removal of pawn {selectedPawn} from RefuelingVat"); innerContainer.Remove(selectedPawn); GenPlace.TryPlaceThing(selectedPawn, this.Position, base.Map, ThingPlaceMode.Near); ejected = true; @@ -435,16 +523,16 @@ namespace ArachnaeSwarm if (ejected) { - ArachnaeLog.Debug($"Successfully ejected {selectedPawn} using method: {ejectionMethod}"); + Log.Message($"Successfully ejected {selectedPawn} using method: {ejectionMethod}"); } else if (!selectedPawn.Dead) // 只有活着的pawn弹出失败才报错 { - ArachnaeLog.Debug($"Failed to eject {selectedPawn} from RefuelingVat"); + Log.Message($"Failed to eject {selectedPawn} from RefuelingVat"); } } catch (Exception ex) { - ArachnaeLog.Debug($"Error during Finish() for {selectedPawn}: {ex}"); + Log.Error($"Error during Finish() for {selectedPawn}: {ex}"); } finally { @@ -463,7 +551,7 @@ namespace ArachnaeSwarm // 确保pawn不在容器中(除非是被建筑杀死的) if (innerContainer.Contains(selectedPawn) && !(selectedPawn.Dead && pawnsKilledByVat.Contains(selectedPawn))) { - ArachnaeLog.Debug($"Pawn {selectedPawn} still in container during OnStop, forcing removal."); + Log.Message($"Pawn {selectedPawn} still in container during OnStop, forcing removal."); innerContainer.Remove(selectedPawn); } } @@ -476,6 +564,7 @@ namespace ArachnaeSwarm // 可以在这里添加音效 } + // === 修改:添加取消Gizmo === public override IEnumerable GetGizmos() { // 原有的基础Gizmos @@ -483,84 +572,77 @@ namespace ArachnaeSwarm { yield return gizmo; } - - if (base.Working) + // 选择殖民者的操作 + var command_Action = new Command_Action { - } - else + defaultLabel = "InsertPerson".Translate() + "...", + defaultDesc = "InsertPersonRefuelingVatDesc".Translate(), + icon = Building_GrowthVat.InsertPawnIcon.Texture, + action = () => + { + List list = new List(); + foreach (Pawn p in base.Map.mapPawns.AllPawnsSpawned) + { + if (p != null && !p.Destroyed && CanAcceptPawn(p).Accepted) + { + list.Add(new FloatMenuOption(p.LabelCap, () => SelectPawn(p), p, Color.white)); + } + } + if (!list.Any()) + { + list.Add(new FloatMenuOption("NoViablePawns".Translate(), null)); + } + Find.WindowStack.Add(new FloatMenu(list)); + } + }; + if (!base.AnyAcceptablePawns) { - // 选择殖民者的操作 - var command_Action = new Command_Action - { - defaultLabel = "InsertPerson".Translate() + "...", - defaultDesc = "InsertPersonRefuelingVatDesc".Translate(), - icon = Building_GrowthVat.InsertPawnIcon.Texture, - action = () => - { - List list = new List(); - foreach (Pawn p in base.Map.mapPawns.AllPawnsSpawned) - { - if (p != null && !p.Destroyed && CanAcceptPawn(p).Accepted) - { - list.Add(new FloatMenuOption(p.LabelCap, () => SelectPawn(p), p, Color.white)); - } - } - if (!list.Any()) - { - list.Add(new FloatMenuOption("NoViablePawns".Translate(), null)); - } - Find.WindowStack.Add(new FloatMenu(list)); - } - }; - if (!base.AnyAcceptablePawns) - { - command_Action.Disable("NoViablePawns".Translate()); - } - yield return command_Action; - - // 指派搬运囚犯/奴隶的操作 - var command_CarryPrisoner = new Command_Action - { - defaultLabel = "AssignCarryPrisoner".Translate() + "...", - defaultDesc = "AssignCarryPrisonerDesc".Translate(), - icon = ContentFinder.Get("UI/Commands/Attack"), - action = () => - { - List list = new List(); - - // 获取所有可接受的囚犯和奴隶 - foreach (Pawn p in base.Map.mapPawns.AllPawnsSpawned) - { - if (p != null && !p.Destroyed && CanAcceptPawn(p).Accepted && (p.IsPrisonerOfColony || p.IsSlaveOfColony)) - { - list.Add(new FloatMenuOption( - p.LabelCap + " (" + (p.IsPrisonerOfColony ? "Prisoner" : "Slave") + ")", - () => AssignCarrierForPrisoner(p), - p, - Color.white - )); - } - } - - if (!list.Any()) - { - list.Add(new FloatMenuOption("NoPrisonersOrSlaves".Translate(), null)); - } - Find.WindowStack.Add(new FloatMenu(list)); - } - }; - - // 检查是否有可用的囚犯/奴隶 - bool hasPrisonersOrSlaves = base.Map.mapPawns.AllPawnsSpawned - .Any(p => p != null && !p.Destroyed && CanAcceptPawn(p).Accepted && (p.IsPrisonerOfColony || p.IsSlaveOfColony)); - - if (!hasPrisonersOrSlaves) - { - command_CarryPrisoner.Disable("NoPrisonersOrSlaves".Translate()); - } - - yield return command_CarryPrisoner; + command_Action.Disable("NoViablePawns".Translate()); } + yield return command_Action; + + // 指派搬运囚犯/奴隶的操作 + var command_CarryPrisoner = new Command_Action + { + defaultLabel = "AssignCarryPrisoner".Translate() + "...", + defaultDesc = "AssignCarryPrisonerDesc".Translate(), + icon = ContentFinder.Get("UI/Commands/Attack"), + action = () => + { + List list = new List(); + + // 获取所有可接受的囚犯和奴隶 + foreach (Pawn p in base.Map.mapPawns.AllPawnsSpawned) + { + if (p != null && !p.Destroyed && CanAcceptPawn(p).Accepted && (p.IsPrisonerOfColony || p.IsSlaveOfColony)) + { + list.Add(new FloatMenuOption( + p.LabelCap + " (" + (p.IsPrisonerOfColony ? "Prisoner" : "Slave") + ")", + () => AssignCarrierForPrisoner(p), + p, + Color.white + )); + } + } + + if (!list.Any()) + { + list.Add(new FloatMenuOption("NoPrisonersOrSlaves".Translate(), null)); + } + Find.WindowStack.Add(new FloatMenu(list)); + } + }; + + // 检查是否有可用的囚犯/奴隶 + bool hasPrisonersOrSlaves = base.Map.mapPawns.AllPawnsSpawned + .Any(p => p != null && !p.Destroyed && CanAcceptPawn(p).Accepted && (p.IsPrisonerOfColony || p.IsSlaveOfColony)); + + if (!hasPrisonersOrSlaves) + { + command_CarryPrisoner.Disable("NoPrisonersOrSlaves".Translate()); + } + + yield return command_CarryPrisoner; } public override string GetInspectString() @@ -568,7 +650,12 @@ namespace ArachnaeSwarm StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(base.GetInspectString()); - if (base.Working && selectedPawn != null && !selectedPawn.Destroyed) + if (selfDestructInitiated) + { + stringBuilder.AppendLineIfNotEmpty().Append("RefuelingVat_SelfDestructActive".Translate()); + stringBuilder.AppendLineIfNotEmpty().Append("RefuelingVat_SelfDestructCountdown".Translate((MissingTicksBeforeDestruction - pawnMissingTickCount) / 60f)); + } + else if (base.Working && selectedPawn != null && !selectedPawn.Destroyed) { stringBuilder.AppendLineIfNotEmpty().Append("CasketContains".Translate().ToString() + ": " + selectedPawn.NameShortColored.Resolve()); @@ -668,7 +755,7 @@ namespace ArachnaeSwarm JobDef carryJobDef = DefDatabase.GetNamed("ARA_CarryPrisonerToRefuelingVat"); if (carryJobDef == null) { - ArachnaeLog.Debug("ARA_CarryPrisonerToRefuelingVat JobDef not found!"); + Log.Error("ARA_CarryPrisonerToRefuelingVat JobDef not found!"); return null; } Job job = JobMaker.MakeJob(carryJobDef, prisoner, this); @@ -749,6 +836,8 @@ namespace ArachnaeSwarm base.ExposeData(); Scribe_Collections.Look(ref pawnTickCounters, "pawnTickCounters", LookMode.Reference, LookMode.Value); Scribe_Collections.Look(ref pawnsKilledByVat, "pawnsKilledByVat", LookMode.Reference); + Scribe_Values.Look(ref selfDestructInitiated, "selfDestructInitiated", false); + Scribe_Values.Look(ref pawnMissingTickCount, "pawnMissingTickCount", 0); // 确保集合不为null if (Scribe.mode == LoadSaveMode.PostLoadInit) diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/CompProperties_IncubatorData.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/CompProperties_IncubatorData.cs index 1f35f9c..6a27017 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/CompProperties_IncubatorData.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/CompProperties_IncubatorData.cs @@ -74,7 +74,7 @@ namespace ArachnaeSwarm new QualityHediffReward(0.30f, 1, false, "ARA_QualityReward_1Hediff"), new QualityHediffReward(0.50f, 2, false, "ARA_QualityReward_2Hediff"), new QualityHediffReward(0.85f, 3, false, "ARA_QualityReward_3Hediff"), - new QualityHediffReward(0.99f, 4, true, "ARA_QualityReward_AllHediff") + new QualityHediffReward(0.99f, 4, false, "ARA_QualityReward_4Hediff") }; } @@ -141,14 +141,7 @@ namespace ArachnaeSwarm if (reward.qualityThreshold > 0 && reward.hediffCount > 0) { string rewardText = $" {reward.qualityThreshold:P0}: "; - if (reward.giveAllHediffs) - { - rewardText += "AllHediffsReward".Translate(); - } - else - { - rewardText += "HediffCountReward".Translate(reward.hediffCount); - } + rewardText += "HediffCountReward".Translate(reward.hediffCount); builder.AppendLine(rewardText); } } diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/ITab_Ootheca_Incubation.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/ITab_Ootheca_Incubation.cs index 6309151..6185841 100644 --- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/ITab_Ootheca_Incubation.cs +++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/ITab_Ootheca_Incubation.cs @@ -193,7 +193,7 @@ namespace ArachnaeSwarm // 显示剩余时间 Rect timeRect = new Rect(0f, curY, viewRect.width, SmallLabelHeight); - string timeText = "TimeRemaining".Translate() + ": " + daysRemaining.ToString("F1") + " " + "Days".Translate(); + string timeText = "ARA_OothecaIncubator.TimeRemaining".Translate() + ": " + daysRemaining.ToString("F1") + " " + "Days".Translate(); if (hoursRemaining > 0.1f && daysRemaining < 1f) { timeText += " (" + hoursRemaining.ToString("F1") + " " + "Hours".Translate() + ")";