存修蜂巢断联

This commit is contained in:
2025-09-04 23:22:51 +08:00
parent e220192bbe
commit 3d0bc51391
5 changed files with 11 additions and 14 deletions

Binary file not shown.

View File

@@ -21,6 +21,10 @@
</verbProperties> </verbProperties>
<comps> <comps>
<li Class="ArachnaeSwarm.CompProperties_AbilityPossess"/> <li Class="ArachnaeSwarm.CompProperties_AbilityPossess"/>
<li Class="CompProperties_AbilityGiveHediff">
<compClass>CompAbilityEffect_GiveHediff</compClass>
<hediffDef>ARA_HiveMindDrone</hediffDef>
</li>
</comps> </comps>
</AbilityDef> </AbilityDef>

View File

@@ -57,6 +57,9 @@
</disablesNeeds> </disablesNeeds>
</li> </li>
</stages> </stages>
<comps>
<li Class="HediffCompProperties_DisappearsOnDeath"/>
</comps>
</HediffDef> </HediffDef>
</Defs> </Defs>

View File

@@ -42,18 +42,7 @@ namespace ArachnaeSwarm
{ {
get get
{ {
// Only remove if base ShouldRemove is true, OR if pawn is dead return this.pawn.Dead;
// We do NOT want to remove it just because target is invalid, as the Comp will handle delayed death
if (base.ShouldRemove && pawn.Dead)
{
return true;
}
// Also remove if pawn is no longer spawned or on a map
if (!pawn.Spawned || pawn.Map == null)
{
return true;
}
return false; // Let the Comp handle the unlinked death
} }
} }
@@ -61,8 +50,7 @@ namespace ArachnaeSwarm
{ {
base.PostRemoved(); base.PostRemoved();
// Deregister from the master when this hediff is removed // Deregister from the master when this hediff is removed
// Ensure target is a Pawn and not dead before attempting to deregister if (this.target is Pawn master && master != null && !master.Destroyed)
if (this.target is Pawn master && master != null && !master.Destroyed && !master.Dead)
{ {
var masterHediff = master.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("ARA_HiveMindMaster")) as Hediff_HiveMindMaster; var masterHediff = master.health.hediffSet.GetFirstHediffOfDef(HediffDef.Named("ARA_HiveMindMaster")) as Hediff_HiveMindMaster;
masterHediff?.DeregisterDrone(this.pawn); masterHediff?.DeregisterDrone(this.pawn);

View File

@@ -11,6 +11,8 @@ namespace ArachnaeSwarm
public override string LabelInBrackets => drones.Count.ToString(); public override string LabelInBrackets => drones.Count.ToString();
public override bool ShouldRemove => false;
public override void ExposeData() public override void ExposeData()
{ {
base.ExposeData(); base.ExposeData();