fix: 把被两个提交“优化”坏的督虫出生链路修回来

- 恢复 NodeSwarm 基础种族的 ARA_HiveMindDrone 注入(撤销 d69dc3b 引入的回归)
- Ootheca 与队列孵化统一改为 forceGenerateNewPawn=true,绕开 redress 路径跳过 startingHediffs
- 新出生督虫稳定携带 ARA_HiveMindDrone,不再靠运气触发
This commit is contained in:
2026-02-10 17:47:15 +08:00
parent 3ee4a60c4b
commit 34548bba61
6 changed files with 135 additions and 123 deletions

Binary file not shown.

View File

@@ -64,87 +64,87 @@
<li>ARA_TumorSpew</li> <li>ARA_TumorSpew</li>
</abilities> </abilities>
</PawnKindDef> </PawnKindDef>
<AlienRace.RaceSettings> <AlienRace.RaceSettings>
<defName>ARA_ArachnaeQueenSettings</defName> <defName>ARA_ArachnaeQueenSettings</defName>
<pawnKindSettings> <pawnKindSettings>
<startingColonists> <startingColonists>
<li> <li>
<pawnKindEntries> <pawnKindEntries>
<li> <li>
<kindDefs> <kindDefs>
<li>ARA_ArachnaeQueen</li> <li>ARA_ArachnaeQueen</li>
</kindDefs> </kindDefs>
<chance>100.0</chance> <chance>100.0</chance>
</li> </li>
</pawnKindEntries> </pawnKindEntries>
<factionDefs> <factionDefs>
<li>ARA_New_Hive</li> <li>ARA_New_Hive</li>
</factionDefs> </factionDefs>
</li> </li>
</startingColonists> </startingColonists>
<alienwandererkinds> <alienwandererkinds>
<li> <li>
<pawnKindEntries> <pawnKindEntries>
<li> <li>
<kindDefs> <kindDefs>
<li>ARA_ArachnaeQueen</li> <li>ARA_ArachnaeQueen</li>
<li>ArachnaeNode_Race_ShieldHead</li> <li>ArachnaeNode_Race_ShieldHead</li>
<li>ArachnaeNode_Race_WeaponSmith</li> <li>ArachnaeNode_Race_WeaponSmith</li>
<li>ArachnaeNode_Race_Fighter</li> <li>ArachnaeNode_Race_Fighter</li>
<li>ArachnaeNode_Race_Facehugger</li> <li>ArachnaeNode_Race_Facehugger</li>
<li>ArachnaeNode_Race_Myrmecocystus</li> <li>ArachnaeNode_Race_Myrmecocystus</li>
<li>ArachnaeNode_Race_Smokepop</li> <li>ArachnaeNode_Race_Smokepop</li>
<li>ArachnaeNode_Race_NeuroSwarm</li> <li>ArachnaeNode_Race_NeuroSwarm</li>
<li>ArachnaeNode_Race_Skyraider</li> <li>ArachnaeNode_Race_Skyraider</li>
<li>ArachnaeNode_Race_Praetorian</li> <li>ArachnaeNode_Race_Praetorian</li>
<li>ARA_MimicNematodeShamblerSwarmer</li> <li>ARA_MimicNematodeShamblerSwarmer</li>
</kindDefs> </kindDefs>
<chance>0</chance> <chance>0</chance>
</li> </li>
</pawnKindEntries> </pawnKindEntries>
<factionDefs> <factionDefs>
<li>ARA_New_Hive</li> <li>ARA_New_Hive</li>
</factionDefs> </factionDefs>
</li> </li>
</alienwandererkinds> </alienwandererkinds>
<alienslavekinds> <alienslavekinds>
<li> <li>
<kindDefs> <kindDefs>
<li>ARA_ArachnaeQueen</li> <li>ARA_ArachnaeQueen</li>
<li>ArachnaeNode_Race_ShieldHead</li> <li>ArachnaeNode_Race_ShieldHead</li>
<li>ArachnaeNode_Race_WeaponSmith</li> <li>ArachnaeNode_Race_WeaponSmith</li>
<li>ArachnaeNode_Race_Fighter</li> <li>ArachnaeNode_Race_Fighter</li>
<li>ArachnaeNode_Race_Facehugger</li> <li>ArachnaeNode_Race_Facehugger</li>
<li>ArachnaeNode_Race_Myrmecocystus</li> <li>ArachnaeNode_Race_Myrmecocystus</li>
<li>ArachnaeNode_Race_Smokepop</li> <li>ArachnaeNode_Race_Smokepop</li>
<li>ArachnaeNode_Race_NeuroSwarm</li> <li>ArachnaeNode_Race_NeuroSwarm</li>
<li>ArachnaeNode_Race_Skyraider</li> <li>ArachnaeNode_Race_Skyraider</li>
<li>ArachnaeNode_Race_Praetorian</li> <li>ArachnaeNode_Race_Praetorian</li>
<li>ARA_MimicNematodeShamblerSwarmer</li> <li>ARA_MimicNematodeShamblerSwarmer</li>
</kindDefs> </kindDefs>
<chance>0</chance> <chance>0</chance>
</li> </li>
</alienslavekinds> </alienslavekinds>
<alienrefugeekinds> <alienrefugeekinds>
<li> <li>
<kindDefs> <kindDefs>
<li>ARA_ArachnaeQueen</li> <li>ARA_ArachnaeQueen</li>
<li>ArachnaeNode_Race_ShieldHead</li> <li>ArachnaeNode_Race_ShieldHead</li>
<li>ArachnaeNode_Race_WeaponSmith</li> <li>ArachnaeNode_Race_WeaponSmith</li>
<li>ArachnaeNode_Race_Fighter</li> <li>ArachnaeNode_Race_Fighter</li>
<li>ArachnaeNode_Race_Facehugger</li> <li>ArachnaeNode_Race_Facehugger</li>
<li>ArachnaeNode_Race_Myrmecocystus</li> <li>ArachnaeNode_Race_Myrmecocystus</li>
<li>ArachnaeNode_Race_Smokepop</li> <li>ArachnaeNode_Race_Smokepop</li>
<li>ArachnaeNode_Race_NeuroSwarm</li> <li>ArachnaeNode_Race_NeuroSwarm</li>
<li>ArachnaeNode_Race_Skyraider</li> <li>ArachnaeNode_Race_Skyraider</li>
<li>ArachnaeNode_Race_Praetorian</li> <li>ArachnaeNode_Race_Praetorian</li>
<li>ARA_MimicNematodeShamblerSwarmer</li> <li>ARA_MimicNematodeShamblerSwarmer</li>
</kindDefs> </kindDefs>
<chance>0</chance> <chance>0</chance>
</li> </li>
</alienrefugeekinds> </alienrefugeekinds>
</pawnKindSettings> </pawnKindSettings>
</AlienRace.RaceSettings> </AlienRace.RaceSettings>
<PawnKindDef ParentName="ArachnaeQueenBasePawnKind"> <PawnKindDef ParentName="ArachnaeQueenBasePawnKind">
<defName>ArachnaeQueen_Race_Neurotyrant</defName> <defName>ArachnaeQueen_Race_Neurotyrant</defName>
<label>阿拉克涅灵吸种</label> <label>阿拉克涅灵吸种</label>
@@ -169,8 +169,8 @@
</apparelTags> </apparelTags>
<apparelMoney>0</apparelMoney> <apparelMoney>0</apparelMoney>
<abilities> <abilities>
<li>ARA_Neurotyrant_Harvest</li> <li>ARA_Neurotyrant_Harvest</li>
<li>ARA_Neurotyrant_PsychicLoadDump</li> <li>ARA_Neurotyrant_PsychicLoadDump</li>
</abilities> </abilities>
</PawnKindDef> </PawnKindDef>
@@ -213,9 +213,9 @@
<li>Violent</li> <li>Violent</li>
</requiredWorkTags> </requiredWorkTags>
<startingHediffs> <startingHediffs>
<li> <li>
<def>ARA_HiveMindDrone</def> <def>ARA_HiveMindDrone</def>
</li> </li>
</startingHediffs> </startingHediffs>
<moveSpeedFactorByTerrainTag> <moveSpeedFactorByTerrainTag>
<li> <li>
@@ -317,11 +317,11 @@
</categories> </categories>
</li> </li>
</backstoryFiltersOverride> </backstoryFiltersOverride>
<startingHediffs> <startingHediffs>
<li> <li>
<def>ARA_RaceBaseSwarmProduceSwitchHediff</def> <def>ARA_RaceBaseSwarmProduceSwitchHediff</def>
</li> </li>
</startingHediffs> </startingHediffs>
<apparelTags> <apparelTags>
</apparelTags> </apparelTags>
<apparelMoney>0</apparelMoney> <apparelMoney>0</apparelMoney>
@@ -340,11 +340,11 @@
</categories> </categories>
</li> </li>
</backstoryFiltersOverride> </backstoryFiltersOverride>
<startingHediffs> <startingHediffs>
<li> <li>
<def>ARA_RaceBaseSwarmProduceSwitchHediff</def> <def>ARA_RaceBaseSwarmProduceSwitchHediff</def>
</li> </li>
</startingHediffs> </startingHediffs>
<apparelMoney>0</apparelMoney> <apparelMoney>0</apparelMoney>
</PawnKindDef> </PawnKindDef>
<PawnKindDef Name="ArachnaeNode_Race_Skyraider" ParentName="ArachnaeNodeABasePawnKind"> <PawnKindDef Name="ArachnaeNode_Race_Skyraider" ParentName="ArachnaeNodeABasePawnKind">
@@ -369,11 +369,11 @@
<abilities> <abilities>
<li>ARA_Skyraider_jump</li> <li>ARA_Skyraider_jump</li>
</abilities> </abilities>
<startingHediffs> <startingHediffs>
<li> <li>
<def>ARA_RaceBaseSwarmProduceSwitchHediff</def> <def>ARA_RaceBaseSwarmProduceSwitchHediff</def>
</li> </li>
</startingHediffs> </startingHediffs>
<apparelMoney>0</apparelMoney> <apparelMoney>0</apparelMoney>
<modExtensions> <modExtensions>
<li Class="ArachnaeSwarm.SuperCarryExtension"> <li Class="ArachnaeSwarm.SuperCarryExtension">
@@ -428,11 +428,11 @@
</categories> </categories>
</li> </li>
</backstoryFiltersOverride> </backstoryFiltersOverride>
<startingHediffs> <startingHediffs>
<li> <li>
<def>ARA_RaceBaseSwarmProduceSwitchHediff</def> <def>ARA_RaceBaseSwarmProduceSwitchHediff</def>
</li> </li>
</startingHediffs> </startingHediffs>
<apparelMoney>0</apparelMoney> <apparelMoney>0</apparelMoney>
</PawnKindDef> </PawnKindDef>
<PawnKindDef Name="ARA_MimicNematodeShamblerBase" ParentName="ArachnaeNodeABasePawnKind" Abstract="True"> <PawnKindDef Name="ARA_MimicNematodeShamblerBase" ParentName="ArachnaeNodeABasePawnKind" Abstract="True">
@@ -477,9 +477,9 @@
<value>3.0</value> <value>3.0</value>
</li> </li>
</moveSpeedFactorByTerrainTag> </moveSpeedFactorByTerrainTag>
<abilities> <abilities>
<li>ARA_Suicide_Fast_Ability</li> <li>ARA_Suicide_Fast_Ability</li>
</abilities> </abilities>
</PawnKindDef> </PawnKindDef>
<PawnKindDef ParentName="ARA_InsectKindBase"> <PawnKindDef ParentName="ARA_InsectKindBase">
<defName>ArachnaeBase_Race_Larva</defName> <defName>ArachnaeBase_Race_Larva</defName>
@@ -637,9 +637,9 @@
</dessicatedBodyGraphicData> </dessicatedBodyGraphicData>
</li> </li>
</lifeStages> </lifeStages>
<abilities> <abilities>
<li>ARA_Baneling_Suicide_Ability</li> <li>ARA_Baneling_Suicide_Ability</li>
</abilities> </abilities>
</PawnKindDef> </PawnKindDef>
<PawnKindDef ParentName="ARA_InsectKindBase"> <PawnKindDef ParentName="ARA_InsectKindBase">
<defName>ArachnaeBase_Race_Empsuicider</defName> <defName>ArachnaeBase_Race_Empsuicider</defName>
@@ -683,7 +683,7 @@
</li> </li>
</lifeStages> </lifeStages>
<abilities> <abilities>
<li>ARA_Locust_AcidSprayBurst</li> <li>ARA_Locust_AcidSprayBurst</li>
</abilities> </abilities>
</PawnKindDef> </PawnKindDef>
@@ -694,8 +694,8 @@
<defaultFactionType>PlayerColony</defaultFactionType> <defaultFactionType>PlayerColony</defaultFactionType>
<forceDeathOnDowned>false</forceDeathOnDowned> <forceDeathOnDowned>false</forceDeathOnDowned>
<forceNoDeathNotification>false</forceNoDeathNotification> <forceNoDeathNotification>false</forceNoDeathNotification>
<immuneToGameConditionEffects>true</immuneToGameConditionEffects> <immuneToGameConditionEffects>true</immuneToGameConditionEffects>
<collidesWithPawns>false</collidesWithPawns> <collidesWithPawns>false</collidesWithPawns>
<combatPower>500</combatPower> <combatPower>500</combatPower>
<lifeStages> <lifeStages>
<li> <li>
@@ -713,8 +713,8 @@
</dessicatedBodyGraphicData> </dessicatedBodyGraphicData>
</li> </li>
</lifeStages> </lifeStages>
<abilities> <abilities>
<li>ARA_Ability_SlayerCharge</li> <li>ARA_Ability_SlayerCharge</li>
</abilities> </abilities>
</PawnKindDef> </PawnKindDef>
</Defs> </Defs>

View File

@@ -648,6 +648,7 @@
<comps> <comps>
<li Class="ArachnaeSwarm.CompProperties_HediffGiver"> <li Class="ArachnaeSwarm.CompProperties_HediffGiver">
<hediffs> <hediffs>
<li>ARA_HiveMindDrone</li>
<li>ARA_HiveStrength_Low</li> <li>ARA_HiveStrength_Low</li>
<li>ARA_Hive_Cannot_Speak</li> <li>ARA_Hive_Cannot_Speak</li>
</hediffs> </hediffs>

View File

@@ -115,7 +115,10 @@ namespace ArachnaeSwarm
{ {
if (order.spawnUntilTick > 0 && Find.TickManager.TicksGame >= order.spawnUntilTick) if (order.spawnUntilTick > 0 && Find.TickManager.TicksGame >= order.spawnUntilTick)
{ {
Pawn pawn = PawnGenerator.GeneratePawn(new PawnGenerationRequest(order.entry.pawnKind, parent.Faction)); Pawn pawn = PawnGenerator.GeneratePawn(new PawnGenerationRequest(
order.entry.pawnKind,
parent.Faction,
forceGenerateNewPawn: true));
if (pawn != null) GenPlace.TryPlaceThing(pawn, parent.Position, parent.Map, ThingPlaceMode.Near); if (pawn != null) GenPlace.TryPlaceThing(pawn, parent.Position, parent.Map, ThingPlaceMode.Near);
return true; return true;
} }

View File

@@ -355,7 +355,10 @@ namespace ArachnaeSwarm
{ {
if (order.config?.pawnKind == null) return; if (order.config?.pawnKind == null) return;
Pawn pawn = PawnGenerator.GeneratePawn(new PawnGenerationRequest(order.config.pawnKind, parent.Faction)); Pawn pawn = PawnGenerator.GeneratePawn(new PawnGenerationRequest(
order.config.pawnKind,
parent.Faction,
forceGenerateNewPawn: true));
if (pawn != null) if (pawn != null)
{ {
ApplyQualityEffects(pawn, order.QualityPercent, order.config); ApplyQualityEffects(pawn, order.QualityPercent, order.config);

View File

@@ -339,7 +339,11 @@ namespace ArachnaeSwarm
if (incubatingPawnKind == null) return; if (incubatingPawnKind == null) return;
float finalQuality = QualityPercent; float finalQuality = QualityPercent;
var pawn = PawnGenerator.GeneratePawn(incubatingPawnKind, Faction); var request = new PawnGenerationRequest(
incubatingPawnKind,
Faction,
forceGenerateNewPawn: true);
var pawn = PawnGenerator.GeneratePawn(request);
ApplyQualityEffects(pawn, finalQuality); ApplyQualityEffects(pawn, finalQuality);
GenSpawn.Spawn(pawn, Position, Map); GenSpawn.Spawn(pawn, Position, Map);
@@ -564,6 +568,7 @@ namespace ArachnaeSwarm
// 首先添加中子通量Gizmo最重要的控制 // 首先添加中子通量Gizmo最重要的控制
if (Faction == Faction.OfPlayer) if (Faction == Faction.OfPlayer)
{ {
yield return new Gizmo_PawnProgressBar(this);
yield return new Gizmo_NeutronFlux(this); yield return new Gizmo_NeutronFlux(this);
} }
// 然后是基础Gizmo但过滤一些不需要的 // 然后是基础Gizmo但过滤一些不需要的