diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index e6dc5e6..0f0041e 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 c601089..f16ec65 100644
--- a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml
+++ b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml
@@ -232,7 +232,7 @@
阿拉克涅女皇种向目标地点喷射大量腐蚀性酸液,喷射将持续数秒以完全覆盖一片区域。
ArachnaeSwarm/UI/Abilities/ARA_AcidSprayBurst
5000
- true
+ false
300
AcidSpray_Warmup
@@ -308,7 +308,7 @@
阿拉克涅督虫向目标地点喷射大量腐蚀性酸液,虽然不如女皇种所喷射的酸雨那样强劲,但是虫酸的伤害依然是实打实的。
ArachnaeSwarm/UI/Abilities/ARA_AcidSprayBurst
12000
- true
+ false
300
AcidSpray_Warmup
@@ -871,6 +871,7 @@
3800
true
false
+ false
false
true
false
@@ -930,7 +931,7 @@
7500
true
false
- true
+ false
true
300
false
@@ -992,7 +993,7 @@
ArachnaeSwarm/UI/Abilities/ARA_TerrainTempt_Ability
13500
true
- true
+ false
true
300
false
diff --git a/1.6/1.6/Defs/EventDefs/ARA_Loop_Attack_EventDef.xml b/1.6/1.6/Defs/EventDefs/ARA_Loop_Attack_EventDef.xml
new file mode 100644
index 0000000..21a59fa
--- /dev/null
+++ b/1.6/1.6/Defs/EventDefs/ARA_Loop_Attack_EventDef.xml
@@ -0,0 +1,131 @@
+
+
+
+ ARA_Loop_Raid_Incident
+ 虫群袭击
+ Misc
+
+ Map_PlayerHome
+
+
+
+ IncidentWorker_GiveQuest
+
+
+ ARA_Loop_Raid_Quest
+
+
+
+
+ ARA_Loop_Raid_Quest
+ 虫群袭击
+ 虫群袭击description
+
+
+
+
+
+ questName->虫群袭击
+
+
+
+
+
+
+ questDescription->虫群袭击questDescription
+
+
+
+
+ 虫群袭击Label
+ 虫群袭击Title
+ 虫群袭击Text
+
+
+ 袭击开始
+
+
+
+
+ ARA_Loop_Raid_Main_Event_1
+
+
+
+
+
+
+
+
+
+
+
+ ARA_Loop_Raid_Main_Event_1
+ 嘻嘻
+ true
+
+
+
+
+
+ 10000
+ ARA_Hostile_Hive
+ ImmediateAttack
+ EdgeWalkIn
+ Combat
+
+
+ Combat
+ 100
+
+ 20
+ 5
+
+
+
+
+
+ 10000
+ ARA_Hostile_Hive
+ ImmediateAttack
+ EdgeWalkIn
+ Combat
+
+
+ Combat
+ 100
+
+ 20
+ 3
+
+
+
+
+
+ 10000
+ ARA_Hostile_Hive
+ ImmediateAttack
+ EdgeWalkIn
+ Combat
+
+
+ Combat
+ 100
+
+ 20
+ 3
+ 7
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
index b4b4d7a..495a6f9 100644
--- a/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
+++ b/1.6/1.6/Defs/EvolutionDefs/ARA_Evolution.xml
@@ -45,7 +45,7 @@
true
true
false
- true
+ false
true
false
CastAbilityOnThing
@@ -109,7 +109,7 @@
true
true
false
- true
+ false
true
false
CastAbilityOnThing
@@ -196,7 +196,7 @@
true
true
false
- true
+ false
true
false
CastAbilityOnThing
@@ -271,7 +271,7 @@
true
true
false
- true
+ false
true
false
CastAbilityOnThing
@@ -422,7 +422,7 @@
true
true
false
- true
+ false
true
false
CastAbilityOnThing
@@ -538,7 +538,7 @@
true
true
false
- true
+ false
true
false
CastAbilityOnThing
@@ -690,7 +690,7 @@
true
true
false
- true
+ false
true
false
CastAbilityOnThing
@@ -868,7 +868,7 @@
true
true
false
- true
+ false
true
false
CastAbilityOnThing
@@ -984,7 +984,7 @@
true
true
false
- true
+ false
true
false
CastAbilityOnThing
diff --git a/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml b/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml
index ab74b32..099444c 100644
--- a/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml
+++ b/1.6/1.6/Defs/FactionDefs/ARA_Factions_Hostile_Hive.xml
@@ -6,40 +6,101 @@
向闪耀世界方向侵略的阿拉克涅虫巢舰队被闪耀世界联军击败后,残留于星域中的虫群子个体。这些虫群子个体由于无法和蜂巢网络建立联系,其自行组织的反常网络只有低度的智能,只能让其成员如野兽般行动——然而她们依然是一群危险的敌人,于无数敌手交战留下的基因性反射使得她们的锋芒不减当年。\n\n她们不会对任何人展现仁慈,即使她们的对手是自己的同族。
虫群
虫群
+ RealWula_PawnKind
+ ARA_Hostile_Hive
1
- 阿拉克涅断须
- World/WorldObjects/Expanding/Insects
+ ARA_New_Hive_NamerFaction
+ Wula/World/WorldObjects/Expanding/Wula_FE_Faction
+ false
+
+ false
+ false
+
+
+
+ Offworld
+
+
+
+ Animal
+
+ Surface
+
+
- (0.44, 0.41, 0.32)
- (0.61, 0.58, 0.49)
- (0.60, 0.49, 0.36)
+ (0.6, 0.5, 0.9)
+
- (0, 0)
+ (300, 0)
+ (700, 0)
+ (1400, 0)
+ (2800, 0)
+ (4000, 0)
+
+
+
+ Combat
+
+ 7
+ 3
+
+
+
+ Settlement
+
+ 10
+ 7
+ 10
+ 10
+
+
+
+
+
+
+ (35, 8)
+ (100, 60)
+ (1000, 250)
+ (2000, 400)
+ (4000, 500)
+
+
+ true
+ true
+
+ false
+
+
+ Cloth
+
+
+ 0
+ true
+ true
- (100,100)
- (10000,10000)
+ (400,200)
+ (900,300)
+ (100000,10000)
-
-
-
- false
- true
- false
- false
- Animal
- false
-
- Entities
-
World/WorldObjects/DefaultSettlement
-2000~2000
1
- 1000
+ 900
+ ActiveDropPodMechanoid
+ DropPodIncomingMechanoidRapid
+
+ Children
+
\ No newline at end of file
diff --git a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_HiveMind.xml b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_HiveMind.xml
index 974d4be..b0387b7 100644
--- a/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_HiveMind.xml
+++ b/1.6/1.6/Defs/HediffDefs/ARA_Hediffs_HiveMind.xml
@@ -30,20 +30,6 @@
3200
-
- 6
- ARA_CreepyCrawly_Hediff
-
- true
-
- false
- false
- false
- false
- true
-
- false
-
@@ -71,20 +57,6 @@
-
- 6
- ARA_CreepyCrawly_Hediff
-
- true
-
- false
- false
- false
- false
- true
-
- false
-
6400
@@ -94,8 +66,47 @@
一只新的阿拉克涅督虫 {0_labelShort} 已经破茧而出!她正在四处徘徊,等待女皇种的指示——使用阿拉克涅女皇种的信息素标记技能完成链接,或者等待其自行建立链接。
HumanPregnancy
+
+
+ ARA_NonPlayer_HiveMindDroneHediff
+
+
+
+ ARA_NonPlayer_HiveMindDroneHediff
+ 野性虫群
+ 与阿拉克涅虫群蜂巢意志断开链接的督虫只会如野兽般行动——女皇种可以重新接管它们。
+
+ (0.6, 0.4, 0.8)
+ false
+ false
+
+
+ 0
+ 0
+
+ Mood
+ Joy
+ Beauty
+ Comfort
+ Outdoors
+ Indoors
+ DrugDesire
+ RoomSize
+
+
+
+
+
+ ARA_NonPlayerHediffSet
+
+
+ ARA_NonPlayer_HiveMindDroneHediff
+ 0.1
+
+
+
ARA_HiveMindWorker
阿拉克涅辅虫
@@ -104,22 +115,6 @@
(0.6, 0.4, 0.8)
false
false
-
-
- 6
- ARA_CreepyCrawly_Hediff
-
- true
-
- false
- false
- false
- false
- true
-
- false
-
-
0
@@ -192,9 +187,9 @@
ARA_LifespanHediff
- Hediff_High
+ HediffWithComps
(0.6, 0.8, 0.9)
- 0.01
+
0.01
寿命记录
阿拉克涅虫族记录寿命的hediff,正常情况下你不应该看见这个。
@@ -204,6 +199,9 @@
false
+
+
+
ARA_TemperatureRegulation
@@ -249,52 +247,6 @@
-
- ARA_CreepyCrawly_Hediff
- 原始恐惧
- 快把这些虫子从我身边支开!
- (0.52, 1, 0.95)
- HediffWithComps
- false
- other
- 1
- 1
-
-
- 0
- false
-
-
-
-
- false
-
-
-
- false
- 0
- Mote_ARA_CreepyCrawly_HediffLinkLine
-
-
-
-
- Mote_ARA_CreepyCrawly_HediffLinkLine
- MoteDualAttached
- MoteLow
-
- 0.1
- 0.1
- 999999
- True
- True
- True
-
-
- MoteGlow
- Things/Mote/WorkCommandLinkLine
- (0,0,0,0)
-
-
ARA_RaceBaseSwarmProduceSwitchHediff
diff --git a/1.6/1.6/Defs/HiveRaidDef/ARA_CustomRaidDef.xml b/1.6/1.6/Defs/HiveRaidDef/ARA_CustomRaidDef.xml
index 2825e0b..b896818 100644
--- a/1.6/1.6/Defs/HiveRaidDef/ARA_CustomRaidDef.xml
+++ b/1.6/1.6/Defs/HiveRaidDef/ARA_CustomRaidDef.xml
@@ -7,7 +7,7 @@
0
- 800
+ 800
ARA_WavePool_Stage1
diff --git a/1.6/1.6/Defs/MemeDefs/ARA_Memes.xml b/1.6/1.6/Defs/MemeDefs/ARA_Memes.xml
index 609e3e8..29836eb 100644
--- a/1.6/1.6/Defs/MemeDefs/ARA_Memes.xml
+++ b/1.6/1.6/Defs/MemeDefs/ARA_Memes.xml
@@ -3,7 +3,7 @@
ARA_Hive_Worship
视虫为神
- 这些美丽的节肢类动物便是无上意志派来拯救我们的使者。
+ 这些美丽的节肢类动物便是无上意志派来拯救我们的使者。(虫群恐惧已经删除,该文化即将废弃,如果你是开新档请勿选择)
ArachnaeSwarm/UI/Memes/ARA_Hive_Worship
Misc
2
@@ -125,10 +125,6 @@
20
1000
-
- ARA_CreepyCrawly
- 对虫群的恐惧
-
\ No newline at end of file
diff --git a/1.6/1.6/Defs/PawnKindDef/ARA_Hostile_Hive_PawnKinds.xml b/1.6/1.6/Defs/PawnKindDef/ARA_Hostile_Hive_PawnKinds.xml
index 39e1e51..c0447ee 100644
--- a/1.6/1.6/Defs/PawnKindDef/ARA_Hostile_Hive_PawnKinds.xml
+++ b/1.6/1.6/Defs/PawnKindDef/ARA_Hostile_Hive_PawnKinds.xml
@@ -23,7 +23,7 @@
ARA_Creep
- 3.0
+ 1.5
@@ -43,7 +43,7 @@
ARA_Clothes
200
- 200
+ 50000
ARA_BaseRace_Acid_Launcher
@@ -62,10 +62,10 @@
ARA_Inner
150
- 400
- 100
+ 50000
+ 0
- ARA_Hibernate_Ability
+ ARA_BaseRace_Acid_Launcher
@@ -112,7 +112,7 @@
ARA_Clothes
400
- 600
+ 1200
0
diff --git a/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml b/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml
index e29b107..a46812f 100644
--- a/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml
+++ b/1.6/1.6/Defs/PawnKindDef/ARA_PawnKinds.xml
@@ -38,7 +38,7 @@
ARA_Creep
- 3.0
+ 1.5
diff --git a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml
index b5bcb12..8bd206d 100644
--- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml
+++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceQueen.xml
@@ -120,6 +120,7 @@
OrganicStandard
Human
+ ARA_NonPlayerHediffSet
@@ -462,7 +463,6 @@
ColonistLost
KnowColonistDied
PsychicDrone
- ARA_CreepyCrawly
Naked
AnyBodyPartButGroinCovered_Disapproved_Female
AnyBodyPartButGroinCovered_Disapproved_Male
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 d43b40d..8e672b7 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
@@ -20,7 +20,7 @@
CutoutComplex
1
- 0
+ 0.01
None
1
@@ -138,7 +138,7 @@
ARA_Technology_2MEL
UnfinishedWeapon
- 0
+ 0.01
None
@@ -218,7 +218,7 @@
ARA_Technology_3MEL
UnfinishedWeapon
- 0
+ 0.01
None
@@ -311,12 +311,9 @@
25
- ARA_Armed_Organ
- ARA_Armed_Organ_Ranged
- ARA_Armed_Organ_T1
ARA_Armed_Organ_Small_Ranged_Needle
- 0
+ 0.01
None
@@ -412,7 +409,7 @@
true
false
0.8
- Bullet_ARA_RW_Basic_Fist_Needle_Gun
+ Bullet_ARA_RW_Toxic_Needle_MG
25.9
48
1
@@ -431,7 +428,7 @@
ARA_Armed_Organ_T2
ARA_Armed_Organ_Small_Ranged_Needle
- 0
+ 0.01
None
@@ -529,7 +526,7 @@
ARA_Armed_Organ_T2
ARA_Armed_Organ_Small_Ranged_Needle
- 0
+ 0.01
None
@@ -643,7 +640,7 @@
ARA_Armed_Organ_T2
ARA_Armed_Organ_Huge_Ranged_Needle
- 0
+ 0.01
None
@@ -759,7 +756,7 @@
ARA_Armed_Organ_T2
ARA_Armed_Organ_Small_Ranged_Needle
- 0
+ 0.01
None
@@ -862,7 +859,7 @@
ARA_Armed_Organ_T1
ARA_Armed_Organ_Small_Ranged_Acid
- 0
+ 0.01
None
@@ -978,7 +975,7 @@
ARA_Armed_Organ_T2
ARA_Armed_Organ_Huge_Ranged_Acid
- 0
+ 0.01
None
@@ -1128,7 +1125,7 @@
ARA_Armed_Organ_T2
ARA_Armed_Organ_Huge_Ranged_Acid
- 0
+ 0.01
None
@@ -1247,7 +1244,7 @@
ARA_Armed_Organ_T3
ARA_Armed_Organ_Small_Ranged_Acid
- 0
+ 0.01
None
@@ -1382,7 +1379,7 @@
ARA_Armed_Organ_T3
ARA_Armed_Organ_Huge_Ranged_Acid
- 0
+ 0.01
None
@@ -1519,7 +1516,7 @@
ARA_Armed_Organ_T1
ARA_Armed_Organ_Small_Ranged_SP
- 0
+ 0.01
None
@@ -1672,7 +1669,7 @@
ARA_Armed_Organ_T2
ARA_Armed_Organ_Small_Ranged_Energy
- 0
+ 0.01
None
@@ -1779,7 +1776,7 @@
ARA_Armed_Organ_T2
ARA_Armed_Organ_Huge_Ranged_Energy
- 0
+ 0.01
None
@@ -1835,9 +1832,9 @@
武装器官"拟线种毒针"
阿拉克涅虫群督虫使用基础近战武装器官,通过多根外露神经束与督虫的辅肢相连。这根毒针中藏有休眠中的阿拉克涅拟线种虫卵,攻击将感染受害者使其最终成为被拟线虫操控的寄生体。
- ARA_Armed_Organ
+
ArachnaeSwarm/Weapon/ARA_MW_Bone_Sword
@@ -1889,7 +1886,7 @@
UnfinishedWeapon
- 0
+ 0.01
None
diff --git a/1.6/1.6/Defs/Thing_Plant/ARA_Plant.xml b/1.6/1.6/Defs/Thing_Plant/ARA_Plant.xml
index 6d8e52c..8e1ddb5 100644
--- a/1.6/1.6/Defs/Thing_Plant/ARA_Plant.xml
+++ b/1.6/1.6/Defs/Thing_Plant/ARA_Plant.xml
@@ -19,7 +19,7 @@
0.05
0.05
- 6
+ 3
10
ARA_CreepFungus
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 1fbd5c3..e520e7e 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_Building.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_Building.xml
@@ -14,7 +14,7 @@
FadeRough
0
330
- 10
+ 0
Filth_Slime
ARA_Base_Technology
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 4d958b8..c118224 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml
@@ -526,7 +526,7 @@
- 500
+ 100
精华素
@@ -534,10 +534,10 @@
0
- true
+ false
0.02
1
- 999
+ 0
@@ -691,10 +691,10 @@
0
- true
+ false
0.2
1
- 20
+ 0
@@ -712,10 +712,10 @@
0
- true
+ false
1
1
- 20
+ 0
@@ -801,10 +801,10 @@
0
- true
+ false
0.2
1
- 20
+ 0
@@ -822,10 +822,10 @@
0
- true
+ false
1
1
- 20
+ 0
@@ -919,10 +919,10 @@
0
- true
+ false
0.2
1
- 60
+ 30
@@ -940,10 +940,10 @@
0
- true
+ false
1
1
- 60
+ 30
@@ -1032,10 +1032,10 @@
0
- true
+ false
0.2
1
- 60
+ 30
@@ -1053,10 +1053,10 @@
0
- true
+ false
1
1
- 60
+ 30
@@ -1142,7 +1142,7 @@
0
- true
+ false
0.2
1
110
@@ -1163,7 +1163,7 @@
0
- true
+ false
1
1
110
@@ -1276,7 +1276,7 @@
0
- true
+ false
0.2
1
110
@@ -1297,7 +1297,7 @@
0
- true
+ false
1
1
110
@@ -1405,7 +1405,7 @@
0
- true
+ false
0.2
1
999
@@ -1426,7 +1426,7 @@
0
- true
+ false
1
1
999
diff --git a/1.6/1.6/Defs/Thing_building/ARA_RefuelingVat.xml b/1.6/1.6/Defs/Thing_building/ARA_RefuelingVat.xml
index 8616d04..e8f3e31 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_RefuelingVat.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_RefuelingVat.xml
@@ -94,7 +94,7 @@
- 5
+ 8
1
diff --git a/1.6/1.6/Defs/ThoughtDefs/ARA_Thoughts.xml b/1.6/1.6/Defs/ThoughtDefs/ARA_Thoughts.xml
index adbb3ff..d05c2cc 100644
--- a/1.6/1.6/Defs/ThoughtDefs/ARA_Thoughts.xml
+++ b/1.6/1.6/Defs/ThoughtDefs/ARA_Thoughts.xml
@@ -1,19 +1,3 @@
-
- ARA_CreepyCrawly
- ThoughtWorker_Hediff
- ARA_CreepyCrawly_Hediff
- true
-
- ARA_Hive_Dear
-
-
-
- 原始恐惧
- 受不了了,快把这些虫子从我身边支开!
- -30
-
-
-
diff --git a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/.suo
index 4c5d520..bfd9886 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 9e1b40a..3187ad5 100644
--- a/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
+++ b/Source/ArachnaeSwarm/.vs/ArachnaeSwarm/v17/DocumentLayout.json
@@ -1,13 +1,33 @@
{
"Version": 1,
- "WorkspaceRootPath": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
+ "WorkspaceRootPath": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\",
"Documents": [
{
- "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|d:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\storyteller\\incidentworker_customraid.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\\pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:pawn_comps\\ara_nodeswarmlifetime\\compnodeswarmlifetime.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\hediffcomp_lifespandisplay.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\hediffcomp_lifespandisplay.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\hediffcomp_temperature.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\hediffcomp_temperature.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+ },
+ {
+ "AbsoluteMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|e:\\steamlibrary\\steamapps\\common\\rimworld\\mods\\arachnaeswarm\\source\\arachnaeswarm\\hediffs\\hediffcomp_spawnpawnonremoved.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffs\\hediffcomp_spawnpawnonremoved.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\\hediffgiver\\hediffgiver_nonplayerfaction.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+ "RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:hediffgiver\\hediffgiver_nonplayerfaction.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\\storyteller\\incidentworker_customraid.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:storyteller\\incidentworker_customraid.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\\storyteller\\raidwavedef.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\\storyteller\\raidwavedef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{EAE0DB6B-E282-C812-7F5A-6D13E9D24581}|ArachnaeSwarm.csproj|solutionrelative:storyteller\\raidwavedef.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
@@ -18,7 +38,7 @@
"DocumentGroups": [
{
"DockedWidth": 200,
- "SelectedChildIndex": 2,
+ "SelectedChildIndex": 1,
"Children": [
{
"$type": "Bookmark",
@@ -26,29 +46,91 @@
},
{
"$type": "Document",
- "DocumentIndex": 1,
- "Title": "RaidWaveDef.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\RaidWaveDef.cs",
- "RelativeDocumentMoniker": "Storyteller\\RaidWaveDef.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\RaidWaveDef.cs*",
- "RelativeToolTip": "Storyteller\\RaidWaveDef.cs*",
- "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA9AAAAAAAAAA==",
+ "DocumentIndex": 0,
+ "Title": "CompNodeSwarmLifetime.cs",
+ "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
+ "RelativeDocumentMoniker": "Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
+ "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
+ "RelativeToolTip": "Pawn_Comps\\ARA_NodeSwarmLifetime\\CompNodeSwarmLifetime.cs",
+ "ViewState": "AgIAAPwAAAAAAAAAAAAYwBYBAABIAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-10-16T09:14:26.956Z",
+ "WhenOpened": "2025-10-16T15:17:15.994Z",
"EditorCaption": ""
},
{
"$type": "Document",
- "DocumentIndex": 0,
- "Title": "IncidentWorker_CustomRaid.cs",
- "DocumentMoniker": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\IncidentWorker_CustomRaid.cs",
- "RelativeDocumentMoniker": "Storyteller\\IncidentWorker_CustomRaid.cs",
- "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\IncidentWorker_CustomRaid.cs*",
- "RelativeToolTip": "Storyteller\\IncidentWorker_CustomRaid.cs*",
- "ViewState": "AgIAAHgBAAAAAAAAAAA1wJIBAAAfAAAAAAAAAA==",
+ "DocumentIndex": 2,
+ "Title": "HediffComp_Temperature.cs",
+ "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\HediffComp_Temperature.cs",
+ "RelativeDocumentMoniker": "Hediffs\\HediffComp_Temperature.cs",
+ "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\HediffComp_Temperature.cs",
+ "RelativeToolTip": "Hediffs\\HediffComp_Temperature.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAAYAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
- "WhenOpened": "2025-10-16T07:14:58.682Z",
+ "WhenOpened": "2025-10-16T15:13:58.773Z",
"EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 3,
+ "Title": "HediffComp_SpawnPawnOnRemoved.cs",
+ "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\HediffComp_SpawnPawnOnRemoved.cs",
+ "RelativeDocumentMoniker": "Hediffs\\HediffComp_SpawnPawnOnRemoved.cs",
+ "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\HediffComp_SpawnPawnOnRemoved.cs",
+ "RelativeToolTip": "Hediffs\\HediffComp_SpawnPawnOnRemoved.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-10-16T15:13:49.858Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 1,
+ "Title": "HediffComp_LifespanDisplay.cs",
+ "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\HediffComp_LifespanDisplay.cs",
+ "RelativeDocumentMoniker": "Hediffs\\HediffComp_LifespanDisplay.cs",
+ "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Hediffs\\HediffComp_LifespanDisplay.cs",
+ "RelativeToolTip": "Hediffs\\HediffComp_LifespanDisplay.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAABMAAAANAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-10-16T15:13:38.519Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 4,
+ "Title": "HediffGiver_NonPlayerFaction.cs",
+ "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HediffGiver\\HediffGiver_NonPlayerFaction.cs",
+ "RelativeDocumentMoniker": "HediffGiver\\HediffGiver_NonPlayerFaction.cs",
+ "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\HediffGiver\\HediffGiver_NonPlayerFaction.cs",
+ "RelativeToolTip": "HediffGiver\\HediffGiver_NonPlayerFaction.cs",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAACoAAAAFAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-10-16T12:07:58.018Z",
+ "EditorCaption": ""
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 6,
+ "Title": "RaidWaveDef.cs",
+ "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\RaidWaveDef.cs",
+ "RelativeDocumentMoniker": "Storyteller\\RaidWaveDef.cs",
+ "ToolTip": "D:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\RaidWaveDef.cs*",
+ "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAAA9AAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-10-16T09:14:26.956Z"
+ },
+ {
+ "$type": "Document",
+ "DocumentIndex": 5,
+ "Title": "IncidentWorker_CustomRaid.cs",
+ "DocumentMoniker": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\IncidentWorker_CustomRaid.cs",
+ "RelativeDocumentMoniker": "Storyteller\\IncidentWorker_CustomRaid.cs",
+ "ToolTip": "E:\\SteamLibrary\\steamapps\\common\\RimWorld\\Mods\\ArachnaeSwarm\\Source\\ArachnaeSwarm\\Storyteller\\IncidentWorker_CustomRaid.cs",
+ "RelativeToolTip": "Storyteller\\IncidentWorker_CustomRaid.cs",
+ "ViewState": "AgIAAHkBAAAAAAAAAAAUwJIBAAAfAAAAAAAAAA==",
+ "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+ "WhenOpened": "2025-10-16T07:14:58.682Z"
}
]
}
diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
index e32f2e2..95a85e0 100644
--- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
+++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
@@ -119,6 +119,8 @@
+
+
diff --git a/Source/ArachnaeSwarm/HediffGiver/HediffGiver_NonPlayerFaction.cs b/Source/ArachnaeSwarm/HediffGiver/HediffGiver_NonPlayerFaction.cs
new file mode 100644
index 0000000..c2f2e0d
--- /dev/null
+++ b/Source/ArachnaeSwarm/HediffGiver/HediffGiver_NonPlayerFaction.cs
@@ -0,0 +1,44 @@
+using RimWorld;
+using Verse;
+
+namespace ArachnaeSwarm
+{
+ public class HediffGiver_NonPlayerFaction : HediffGiver
+ {
+ // 显式重新定义这些字段,确保 XML 解析器能找到它们
+ public float mtbDays;
+ public new HediffDef hediff;
+
+ public override void OnIntervalPassed(Pawn pawn, Hediff cause)
+ {
+ // 检查派系条件
+ if (ShouldHaveHediff(pawn))
+ {
+ // 给予 hediff
+ HealthUtility.AdjustSeverity(pawn, this.hediff, 1.0f);
+ }
+ else
+ {
+ // 移除 hediff
+ RemoveHediffIfExists(pawn);
+ }
+ }
+
+ private bool ShouldHaveHediff(Pawn pawn)
+ {
+ // 非玩家派系且不是殖民地囚犯
+ return pawn.Faction != null &&
+ pawn.Faction != Faction.OfPlayer &&
+ !pawn.IsPrisonerOfColony;
+ }
+
+ private void RemoveHediffIfExists(Pawn pawn)
+ {
+ Hediff existing = pawn.health?.hediffSet?.GetFirstHediffOfDef(this.hediff);
+ if (existing != null)
+ {
+ pawn.health.RemoveHediff(existing);
+ }
+ }
+ }
+}
diff --git a/Source/ArachnaeSwarm/Hediffs/HediffComp_LifespanDisplay.cs b/Source/ArachnaeSwarm/Hediffs/HediffComp_LifespanDisplay.cs
new file mode 100644
index 0000000..aafe3af
--- /dev/null
+++ b/Source/ArachnaeSwarm/Hediffs/HediffComp_LifespanDisplay.cs
@@ -0,0 +1,44 @@
+using RimWorld;
+using Verse;
+
+namespace ArachnaeSwarm
+{
+ // 新的 HediffComp,用于显示寿命信息
+ public class HediffComp_LifespanDisplay : HediffComp
+ {
+ public CompNodeSwarmLifetime LifespanComp => parent.pawn.GetComp();
+
+ public override string CompTipStringExtra
+ {
+ get
+ {
+ if (LifespanComp != null && !LifespanComp.HasShutdownHediff)
+ {
+ return $"剩余寿命: {LifespanComp.DaysLeft:F1} 天";
+ }
+ return null;
+ }
+ }
+
+ public override string CompLabelInBracketsExtra
+ {
+ get
+ {
+ if (LifespanComp != null && !LifespanComp.HasShutdownHediff)
+ {
+ return $"{LifespanComp.DaysLeft:F1}d";
+ }
+ return null;
+ }
+ }
+ }
+
+ // HediffComp 属性类
+ public class HediffCompProperties_LifespanDisplay : HediffCompProperties
+ {
+ public HediffCompProperties_LifespanDisplay()
+ {
+ compClass = typeof(HediffComp_LifespanDisplay);
+ }
+ }
+}
diff --git a/Source/ArachnaeSwarm/Pawn_Comps/ARA_NodeSwarmLifetime/CompNodeSwarmLifetime.cs b/Source/ArachnaeSwarm/Pawn_Comps/ARA_NodeSwarmLifetime/CompNodeSwarmLifetime.cs
index 0e75510..d860c3d 100644
--- a/Source/ArachnaeSwarm/Pawn_Comps/ARA_NodeSwarmLifetime/CompNodeSwarmLifetime.cs
+++ b/Source/ArachnaeSwarm/Pawn_Comps/ARA_NodeSwarmLifetime/CompNodeSwarmLifetime.cs
@@ -20,6 +20,10 @@ namespace ArachnaeSwarm
private int lastHediffSyncTick;
private const int HEDIFF_SYNC_INTERVAL = 250; // 每250ticks同步一次
+ // 新增:hediff消失检查相关
+ private int lastHediffMissingCheckTick = -1;
+ private const int HEDIFF_MISSING_CHECK_INTERVAL = 60; // 每60ticks检查一次hediff是否存在
+
public CompProperties_NodeSwarmLifetime Props => (CompProperties_NodeSwarmLifetime)props;
// 修改:将 ticks 转换为天数计算
@@ -60,6 +64,41 @@ namespace ArachnaeSwarm
return pawn.health.hediffSet.HasHediff(Props.immuteHediff);
}
+ // 新增:检查寿命Hediff是否存在
+ private bool CheckLifespanHediffExists()
+ {
+ Pawn pawn = parent as Pawn;
+ if (pawn == null) return false;
+
+ // 直接检查hediff是否存在,不使用缓存
+ return pawn.health.hediffSet.GetFirstHediffOfDef(Props.lifespanHediff) != null;
+ }
+
+ // 新增:当hediff消失时执行的处理
+ private void HandleMissingHediff()
+ {
+ Pawn pawn = parent as Pawn;
+ if (pawn == null) return;
+
+ Log.Warning($"Lifespan hediff missing for {pawn.Label}. This should not happen. Forcing death.");
+
+ // 立即处死pawn
+ if (!pawn.Dead)
+ {
+ // 可以选择不同的处死方式
+ if (Props.killWhenDepleted)
+ {
+ // 使用原有的处死逻辑
+ KillPowerProcessor();
+ }
+ else
+ {
+ // 直接杀死
+ pawn.Kill(null, null);
+ }
+ }
+ }
+
// 新增:获取或创建寿命Hediff
private Hediff GetOrCreateLifespanHediff()
{
@@ -122,6 +161,24 @@ namespace ArachnaeSwarm
}
}
+ // 新增:将Comp的数据写入Hediff(用于调试命令)
+ private void WriteCompDataToHediff()
+ {
+ Pawn pawn = parent as Pawn;
+ if (pawn == null) return;
+
+ var hediff = GetOrCreateLifespanHediff();
+ if (hediff == null)
+ {
+ Log.Warning($"Failed to get or create lifespan hediff for {pawn.Label}");
+ return;
+ }
+
+ // 直接将Comp的数据写入Hediff
+ hediff.Severity = PercentFull;
+ Log.Message($"Debug: Wrote comp data to hediff - Severity: {hediff.Severity:P4}, TicksLeft: {powerTicksLeft}");
+ }
+
// 新增:定期校验Hediff状态
private void ValidateHediffState()
{
@@ -133,10 +190,9 @@ namespace ArachnaeSwarm
if (currentHediff == null)
{
- // Hediff消失了,重新创建
- Log.Message($"Lifespan hediff was missing for {pawn.Label}, recreating with component data");
- lifespanHediff = null; // 重置缓存
- GetOrCreateLifespanHediff();
+ // Hediff消失了,触发处理逻辑
+ HandleMissingHediff();
+ return;
}
else if (currentHediff != lifespanHediff)
{
@@ -164,6 +220,7 @@ namespace ArachnaeSwarm
hasShutdownHediffCached = null;
lastHediffCheckTick = Find.TickManager.TicksGame;
lastHediffSyncTick = Find.TickManager.TicksGame;
+ lastHediffMissingCheckTick = Find.TickManager.TicksGame;
// 确保寿命Hediff存在
GetOrCreateLifespanHediff();
@@ -197,39 +254,123 @@ namespace ArachnaeSwarm
}
if (DebugSettings.ShowDevGizmos)
{
+ // 新增:补满寿命调试命令
yield return new Command_Action
{
- defaultLabel = "DEV: Power left 0%",
- action = delegate
- {
- powerTicksLeft = 0;
- SyncLifespanWithHediff(); // 同步到Hediff
- }
- };
- yield return new Command_Action
- {
- defaultLabel = "DEV: Power left 100%",
+ defaultLabel = "DEV: 补满寿命",
action = delegate
{
powerTicksLeft = (int)(Props.lifetimeDays * 60000);
- SyncLifespanWithHediff(); // 同步到Hediff
+ WriteCompDataToHediff(); // 使用新的写入方法
+ Log.Message($"已补满寿命: {parent.Label} 剩余 {DaysLeft:F1} 天");
+ Messages.Message($"已补满寿命: {Props.lifetimeDays} 天", MessageTypeDefOf.SilentInput);
}
};
-
+
+ // 新增:剩余0.01%寿命调试命令
+ yield return new Command_Action
+ {
+ defaultLabel = "DEV: 剩余0.01%寿命",
+ action = delegate
+ {
+ int totalTicks = (int)(Props.lifetimeDays * 60000);
+ powerTicksLeft = (int)(totalTicks * 0.0001f); // 0.01%
+ WriteCompDataToHediff(); // 使用新的写入方法
+ float daysLeft = (float)powerTicksLeft / 60000f;
+ Log.Message($"已设置剩余0.01%寿命: {parent.Label} 剩余 {daysLeft:F4} 天 ({PercentFull:P2})");
+ Messages.Message($"设置剩余寿命为0.01%: {daysLeft:F4} 天", MessageTypeDefOf.SilentInput);
+ }
+ };
+
+ // 新增:归零寿命调试命令
+ yield return new Command_Action
+ {
+ defaultLabel = "DEV: 归零寿命",
+ action = delegate
+ {
+ powerTicksLeft = 0;
+ WriteCompDataToHediff(); // 使用新的写入方法
+ Log.Message($"已归零寿命: {parent.Label} 将立即死亡");
+ Messages.Message("寿命已归零,即将死亡", MessageTypeDefOf.SilentInput);
+
+ // 立即触发死亡逻辑
+ if (Props.killWhenDepleted)
+ {
+ KillPowerProcessor();
+ }
+ else
+ {
+ depleted = true;
+ }
+ }
+ };
+
// 新增:调试命令显示Hediff状态
yield return new Command_Action
{
- defaultLabel = "DEV: Show Hediff Info",
+ defaultLabel = "DEV: 显示Hediff信息",
action = delegate
{
var hediff = GetOrCreateLifespanHediff();
if (hediff != null)
{
- Messages.Message($"Lifespan Hediff: Severity={hediff.Severity:P2}, TicksLeft={powerTicksLeft}", MessageTypeDefOf.SilentInput);
+ string message = $"寿命Hediff信息:\n" +
+ $"严重程度: {hediff.Severity:P4}\n" +
+ $"剩余ticks: {powerTicksLeft}\n" +
+ $"剩余天数: {DaysLeft:F4}\n" +
+ $"总天数: {TotalDays:F1}\n" +
+ $"百分比: {PercentFull:P4}\n" +
+ $"已耗尽: {depleted}";
+ Messages.Message(message, MessageTypeDefOf.SilentInput);
+ Log.Message(message);
}
else
{
- Messages.Message("No lifespan hediff found", MessageTypeDefOf.SilentInput);
+ Messages.Message("未找到寿命hediff", MessageTypeDefOf.SilentInput);
+ }
+ }
+ };
+
+ // 新增:调试命令手动移除hediff(测试hediff消失逻辑)
+ yield return new Command_Action
+ {
+ defaultLabel = "DEV: 移除寿命Hediff",
+ action = delegate
+ {
+ Pawn pawn = parent as Pawn;
+ if (pawn != null)
+ {
+ var hediff = pawn.health.hediffSet.GetFirstHediffOfDef(Props.lifespanHediff);
+ if (hediff != null)
+ {
+ pawn.health.RemoveHediff(hediff);
+ lifespanHediff = null;
+ Log.Message($"已手动移除 {pawn.Label} 的寿命Hediff");
+ Messages.Message("已手动移除寿命hediff,pawn将立即死亡", MessageTypeDefOf.SilentInput);
+ }
+ else
+ {
+ Messages.Message("没有找到寿命hediff", MessageTypeDefOf.SilentInput);
+ }
+ }
+ }
+ };
+
+ // 新增:强制同步命令(用于测试同步逻辑)
+ yield return new Command_Action
+ {
+ defaultLabel = "DEV: 强制同步",
+ action = delegate
+ {
+ SyncLifespanWithHediff();
+ var hediff = GetOrCreateLifespanHediff();
+ if (hediff != null)
+ {
+ string message = $"强制同步后:\n" +
+ $"Comp剩余ticks: {powerTicksLeft}\n" +
+ $"Hediff严重程度: {hediff.Severity:P4}\n" +
+ $"剩余天数: {DaysLeft:F4}";
+ Messages.Message(message, MessageTypeDefOf.SilentInput);
}
}
};
@@ -251,11 +392,17 @@ namespace ArachnaeSwarm
return;
}
+ // 定期检查hediff是否存在(比同步更频繁)
+ if (Find.TickManager.TicksGame > lastHediffMissingCheckTick + HEDIFF_MISSING_CHECK_INTERVAL)
+ {
+ ValidateHediffState();
+ lastHediffMissingCheckTick = Find.TickManager.TicksGame;
+ }
+
// 定期同步Hediff状态
if (Find.TickManager.TicksGame > lastHediffSyncTick + HEDIFF_SYNC_INTERVAL)
{
SyncLifespanWithHediff();
- ValidateHediffState();
lastHediffSyncTick = Find.TickManager.TicksGame;
}
@@ -283,6 +430,11 @@ namespace ArachnaeSwarm
private void KillPowerProcessor()
{
Pawn pawn = (Pawn)parent;
+
+ // 记录日志
+ Log.Message($"Killing pawn {pawn.Label} due to lifespan depletion");
+
+ // 原有的处死逻辑
List allParts = pawn.def.race.body.AllParts;
for (int i = 0; i < allParts.Count; i++)
{
@@ -311,6 +463,7 @@ namespace ArachnaeSwarm
Scribe_Values.Look(ref powerTicksLeft, "powerTicksLeft", 0);
Scribe_Values.Look(ref depleted, "depleted", defaultValue: false);
Scribe_Values.Look(ref lastHediffSyncTick, "lastHediffSyncTick", 0);
+ Scribe_Values.Look(ref lastHediffMissingCheckTick, "lastHediffMissingCheckTick", 0);
// 添加:保存时重置缓存
if (Scribe.mode == LoadSaveMode.PostLoadInit)
@@ -326,6 +479,9 @@ namespace ArachnaeSwarm
powerTicksLeft = (int)(Props.lifetimeDays * 60000);
}
+ // 立即检查hediff是否存在
+ ValidateHediffState();
+
// 确保寿命Hediff存在并同步
GetOrCreateLifespanHediff();
SyncLifespanWithHediff();
@@ -333,6 +489,7 @@ namespace ArachnaeSwarm
}
}
+ // Gizmo 类保持不变
[StaticConstructorOnStartup]
public class NodeSwarmLifetimeGizmo : Gizmo
{