diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index a3f0ccc..b5bdba4 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 27c93ae..980192f 100644
--- a/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml
+++ b/1.6/1.6/Defs/AbilityDefs/ARA_Abilities.xml
@@ -32,91 +32,6 @@
-
- 5000
- false
- 300
- true
- false
- AcidSpray_Warmup
-
- Verb_CastAbility
- 1
- 7
- AcidSpray_Resolve
- false
- false
-
- True
-
-
-
-
- Food
- 4
- 营养值不足,需要进食
-
-
- ARA_Ovary
- 卵巢受损或缺失,无法生育
-
-
-
-
- Projectile_SpawnsThing
-
- ArachnaeSwarm/Building/ARA_EggSac
- Graphic_Single
-
-
- Bullet
- 21
- 0
- true
-
-
-
-
- 5000
- true
- 300
- true
- false
- AcidSpray_Warmup
-
- Verb_CastAbility
- 1
- 12
- AcidSpray_Resolve
- false
- false
-
- True
-
-
-
-
- Food
- 1
- 营养值不足,需要进食
-
-
-
-
-
- Projectile_SpawnsThing
-
- ArachnaeSwarm/Building/ARA_BioforgeIncubator
- Graphic_Single
-
-
- Bullet
- 21
- 0
- true
-
-
-
ARA_AcidSprayBurst_Queen
diff --git a/1.6/1.6/Defs/AbilityDefs/Abilities_EggSpew.xml b/1.6/1.6/Defs/AbilityDefs/Abilities_EggSpew.xml
new file mode 100644
index 0000000..09da7e9
--- /dev/null
+++ b/1.6/1.6/Defs/AbilityDefs/Abilities_EggSpew.xml
@@ -0,0 +1,120 @@
+
+
+
+
+ 5000
+ false
+ 300
+ true
+ false
+ AcidSpray_Warmup
+
+ Verb_CastAbility
+ 1
+ 7
+ AcidSpray_Resolve
+ false
+ false
+
+ True
+
+
+
+
+ Food
+ 4
+ 营养值不足,需要进食
+
+
+ ARA_Ovary
+ 卵巢受损或缺失,无法生育
+
+
+
+
+
+ Projectile_SpawnsThing
+
+ ArachnaeSwarm/Building/ARA_EggSac
+ Graphic_Single
+
+
+ Bullet
+ 21
+ 0
+ true
+
+
+
+
+ 5000
+ true
+ 300
+ true
+ false
+ AcidSpray_Warmup
+
+ Verb_CastAbility
+ 1
+ 12
+ AcidSpray_Resolve
+ false
+ false
+
+ True
+
+
+
+
+ Food
+ 1
+ 营养值不足,需要进食
+
+
+
+
+
+
+ Projectile_SpawnsThing
+
+ ArachnaeSwarm/Building/ARA_BioforgeIncubator
+ Graphic_Single
+
+
+ Bullet
+ 21
+ 0
+ true
+
+
+
+
+ ARA_EggSpew_BaseFighter
+
+ 从卵巢中排出一颗休眠的虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。
+ UI/Commands/EggSpew
+
+
+ ARA_Proj_EggSac_BaseFighter
+
+
+ ARA_Technology_1KYC
+ 需要科技 基因节点KYC-1"战士虫" 以解锁此孵化路径
+
+
+
+
+
+ ARA_EggSpew
+
+ 从卵巢中排出一颗休眠的虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。
+ UI/Commands/EggSpew
+
+
+ ARA_Proj_EggSac
+
+
+
+
+
+
\ No newline at end of file
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 64058b2..36c1dc7 100644
--- a/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml
+++ b/1.6/1.6/Defs/ThingDef_Races/ARA_RaceNodeSwarm.xml
@@ -984,119 +984,7 @@
-
- ARA_EggSpew
-
- 从卵巢中排出一颗休眠的虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。
- UI/Commands/EggSpew
-
-
- ARA_Proj_EggSac
-
-
-
-
- ARA_Proj_EggSac
-
-
- ARA_InteractiveEggSac
-
-
-
- ARA_InteractiveEggSac
-
- 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅女皇种所诞之卵,内含哺育一只新督虫所需的营养和遗传物质,可以通过阿拉克涅女皇种的交互完成激活进程——参阅虫卵的超链接,了解各个督虫的特点。\n\n卵囊对温度极度敏感(该类型的卵适温为-25~30°C),需要小心保护!
-
- ArachnaeNode_Race_Myrmecocystus
- ArachnaeNode_Race_ShieldHead
- ArachnaeNode_Race_WeaponSmith
-
-
- ARA_Base_Technology
-
-
-
-
- ArachnaeNode_Race_Myrmecocystus
- ArachnaeNode_Race_ShieldHead
- ArachnaeNode_Race_WeaponSmith
-
-
- ARA_ArachnaeQueen
-
-
-
- ArachnaeNode_Race_Myrmecocystus
- 180000
-
-
- ArachnaeNode_Race_ShieldHead
- 180000
-
-
- ArachnaeNode_Race_WeaponSmith
- 180000
-
-
- true
-
-
- -25
- 30
- 0.00005
- 0.005
- 0.001
-
-
-
-
- ARA_InteractiveEggSac_Start
-
- 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅女皇种初到此地所诞之卵,内含哺育一只新督虫所需的营养和遗传物质,可以通过阿拉克涅女皇种的交互完成激活进程。\n\n初诞卵囊可以抵御极端天气并且拥有极快的孵化速度,但是它们只能支持少数几种虫族的孵化。
-
-
-
- ArachnaeNode_Race_Myrmecocystus
- ArachnaeNode_Race_ShieldHead
- ArachnaeNode_Race_WeaponSmith
-
-
-
-
-
- ArachnaeNode_Race_Myrmecocystus
- ArachnaeNode_Race_ShieldHead
- ArachnaeNode_Race_WeaponSmith
-
-
- ARA_ArachnaeQueen
-
-
-
- ArachnaeNode_Race_Myrmecocystus
- 300
-
-
- ArachnaeNode_Race_ShieldHead
- 300
-
-
- ArachnaeNode_Race_WeaponSmith
- 300
-
-
- true
-
-
- -300
- 100
- 0.00005
- 0.005
- 0.001
-
-
-
ArachnaeNode_Race_Fighter
@@ -1187,64 +1075,7 @@
-
- ARA_EggSpew_BaseFighter
-
- 从卵巢中排出一颗休眠的虫卵,阿拉克涅女皇种可以通过与其交互将其激活,并选择孵化的督虫虫族类型——参阅虫卵的具体信息,了解各个督虫的特点。
- UI/Commands/EggSpew
-
-
- ARA_Proj_EggSac_BaseFighter
-
-
- ARA_Technology_1KYC
- 需要科技 基因节点KYC-1"战士虫" 以解锁此孵化路径
-
-
-
-
- ARA_Proj_EggSac_BaseFighter
-
-
- ARA_InteractiveEggSac_Basic_Fighter
-
-
-
- ARA_InteractiveEggSac_Basic_Fighter
-
- 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅女皇种所诞之卵,内含哺育一只新督虫所需的营养和遗传物质,可以通过阿拉克涅女皇种的交互完成激活进程——参阅虫卵的超链接,了解各个督虫的特点。\n\n卵囊对温度极度敏感(该类型的卵适温为-10~22°C),需要小心保护!
-
- ArachnaeNode_Race_Fighter
-
-
- ARA_Technology_1KYC
-
-
-
-
- ArachnaeNode_Race_Fighter
-
-
- ARA_ArachnaeQueen
-
-
-
- ArachnaeNode_Race_Fighter
- 12
-
-
- true
-
-
- -10
- 22
- 0.00005
- 0.005
- 0.001
-
-
-
ArachnaeNode_Race_Facehugger
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 efcff35..ed4dd92 100644
--- a/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml
+++ b/1.6/1.6/Defs/Thing_building/ARA_InteractiveEggSac.xml
@@ -51,4 +51,143 @@
-
\ No newline at end of file
+
+
+ ARA_Proj_EggSac_BaseFighter
+
+
+ ARA_InteractiveEggSac_Basic_Fighter
+
+
+
+
+ ARA_InteractiveEggSac_Basic_Fighter
+
+ 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅女皇种所诞之卵,内含哺育一只新督虫所需的营养和遗传物质,可以通过阿拉克涅女皇种的交互完成激活进程——参阅虫卵的超链接,了解各个督虫的特点。\n\n卵囊对温度极度敏感(该类型的卵适温为-10~22°C),需要小心保护!
+
+ ArachnaeNode_Race_Fighter
+
+
+ ARA_Technology_1KYC
+
+
+
+
+
+
+ ArachnaeNode_Race_Fighter
+ 12
+ ARA_Technology_1KYC
+
+
+
+ ARA_ArachnaeQueen
+
+ true
+
+
+ -10
+ 22
+ 0.00005
+ 0.005
+ 0.001
+
+
+
+
+
+ ARA_Proj_EggSac
+
+
+ ARA_InteractiveEggSac
+
+
+
+
+ ARA_InteractiveEggSac
+
+ 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅女皇种所诞之卵,内含哺育一只新督虫所需的营养和遗传物质,可以通过阿拉克涅女皇种的交互完成激活进程——参阅虫卵的超链接,了解各个督虫的特点。\n\n卵囊对温度极度敏感(该类型的卵适温为-25~30°C),需要小心保护!
+
+ ArachnaeNode_Race_Myrmecocystus
+ ArachnaeNode_Race_ShieldHead
+ ArachnaeNode_Race_WeaponSmith
+
+
+ ARA_Base_Technology
+
+
+
+
+
+
+ ArachnaeNode_Race_Myrmecocystus
+ 180000
+
+
+ ArachnaeNode_Race_ShieldHead
+ 180000
+
+
+ ArachnaeNode_Race_WeaponSmith
+ 180000
+
+
+
+ ARA_ArachnaeQueen
+
+ true
+
+
+ -25
+ 30
+ 0.00005
+ 0.005
+ 0.001
+
+
+
+
+
+ ARA_InteractiveEggSac_Start
+
+ 一个脆弱、易燃、黏滑的囊状物,是阿拉克涅女皇种初到此地所诞之卵,内含哺育一只新督虫所需的营养和遗传物质,可以通过阿拉克涅女皇种的交互完成激活进程。\n\n初诞卵囊可以抵御极端天气并且拥有极快的孵化速度,但是它们只能支持少数几种虫族的孵化。
+
+
+
+ ArachnaeNode_Race_Myrmecocystus
+ ArachnaeNode_Race_ShieldHead
+ ArachnaeNode_Race_WeaponSmith
+
+
+
+
+
+
+ ArachnaeNode_Race_Myrmecocystus
+ 300
+
+
+ ArachnaeNode_Race_ShieldHead
+ 300
+
+
+ ArachnaeNode_Race_WeaponSmith
+ 300
+
+
+
+ ARA_ArachnaeQueen
+
+ true
+
+
+ -300
+ 100
+ 0.00005
+ 0.005
+ 0.001
+
+
+
+
+
diff --git a/Source/ArachnaeSwarm/ARA_SpawnPawnFromList/CompProperties_SpawnPawnFromList.cs b/Source/ArachnaeSwarm/ARA_SpawnPawnFromList/CompProperties_SpawnPawnFromList.cs
index 5d43d43..d48fee7 100644
--- a/Source/ArachnaeSwarm/ARA_SpawnPawnFromList/CompProperties_SpawnPawnFromList.cs
+++ b/Source/ArachnaeSwarm/ARA_SpawnPawnFromList/CompProperties_SpawnPawnFromList.cs
@@ -5,11 +5,20 @@ using Verse.AI.Group;
namespace ArachnaeSwarm
{
+ // 新的统一入口类
+ public class PawnSpawnEntry
+ {
+ public PawnKindDef pawnKind;
+ public int delayTicks = 0; // 默认延迟为0
+ public ResearchProjectDef requiredResearch; // 可选的科技需求
+ }
+
public class CompProperties_SpawnPawnFromList : CompProperties
{
- public List pawnKinds;
+ // 合并后的新列表
+ public List spawnablePawns;
+
public List whitelist;
- public List pawnKindDelays;
public bool destroyOnSpawn = false;
public IntRange spawnCount = new IntRange(1, 1);
public Type lordJob;
@@ -32,10 +41,4 @@ namespace ArachnaeSwarm
}
}
}
-}
-
-public class PawnKindDelay
-{
- public PawnKindDef pawnKind;
- public int delay;
}
\ No newline at end of file
diff --git a/Source/ArachnaeSwarm/ARA_SpawnPawnFromList/CompSpawnPawnFromList.cs b/Source/ArachnaeSwarm/ARA_SpawnPawnFromList/CompSpawnPawnFromList.cs
index a06aee7..94450bb 100644
--- a/Source/ArachnaeSwarm/ARA_SpawnPawnFromList/CompSpawnPawnFromList.cs
+++ b/Source/ArachnaeSwarm/ARA_SpawnPawnFromList/CompSpawnPawnFromList.cs
@@ -13,14 +13,14 @@ namespace ArachnaeSwarm
private int spawnUntilTick = -1;
private PawnKindDef spawningPawnKind;
- private PawnKindDef selectedPawnKind;
+ private PawnSpawnEntry selectedEntry;
public bool IsHatching => spawnUntilTick > 0;
-
+
public override IEnumerable CompFloatMenuOptions(Pawn selPawn)
{
if (spawnUntilTick > 0)
{
- yield break; // 正在延迟中,不显示菜单
+ yield break;
}
if (Props.whitelist == null || !Props.whitelist.Contains(selPawn.kindDef))
@@ -28,16 +28,29 @@ namespace ArachnaeSwarm
yield break;
}
- if (Props.pawnKinds != null)
+ if (Props.spawnablePawns != null)
{
- foreach (PawnKindDef pawnKind in Props.pawnKinds)
+ foreach (PawnSpawnEntry entry in Props.spawnablePawns)
{
- yield return new FloatMenuOption("ARA_Incubate".Translate(pawnKind.label), () =>
+ if (entry.pawnKind == null) continue;
+
+ // 检查科技需求
+ if (entry.requiredResearch != null && !entry.requiredResearch.IsFinished)
{
- Job job = JobMaker.MakeJob(DefDatabase.GetNamed("ARA_IncubateJob"), parent);
- selectedPawnKind = pawnKind;
- selPawn.jobs.TryTakeOrderedJob(job);
- });
+ // 科技未完成,显示灰色不可点击选项
+ string disabledText = "ARA_Incubate".Translate(entry.pawnKind.label) + " (" + "Requires".Translate() + ": " + entry.requiredResearch.label + ")";
+ yield return new FloatMenuOption(disabledText, null);
+ }
+ else
+ {
+ // 科技已完成或无需求,显示正常选项
+ yield return new FloatMenuOption("ARA_Incubate".Translate(entry.pawnKind.label), () =>
+ {
+ Job job = JobMaker.MakeJob(DefDatabase.GetNamed("ARA_IncubateJob"), parent);
+ this.selectedEntry = entry; // 保存整个入口信息
+ selPawn.jobs.TryTakeOrderedJob(job);
+ });
+ }
}
}
}
@@ -45,9 +58,10 @@ namespace ArachnaeSwarm
public void StartIncubation()
{
- spawningPawnKind = selectedPawnKind;
- int delay = Props.pawnKindDelays?.FirstOrDefault(pkd => pkd.pawnKind == selectedPawnKind)?.delay ?? 0;
- spawnUntilTick = Find.TickManager.TicksGame + delay;
+ if (this.selectedEntry == null) return;
+
+ spawningPawnKind = this.selectedEntry.pawnKind;
+ spawnUntilTick = Find.TickManager.TicksGame + this.selectedEntry.delayTicks;
}
public override void CompTick()
@@ -147,7 +161,7 @@ namespace ArachnaeSwarm
base.PostExposeData();
Scribe_Values.Look(ref spawnUntilTick, "spawnUntilTick", -1);
Scribe_Defs.Look(ref spawningPawnKind, "spawningPawnKind");
- Scribe_Defs.Look(ref selectedPawnKind, "selectedPawnKind");
+ // selectedEntry is transient and does not need to be saved.
}
}
}
\ No newline at end of file