diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll
index a55bd7d4..9c18bfcf 100644
Binary files a/1.6/1.6/Assemblies/WulaFallenEmpire.dll and b/1.6/1.6/Assemblies/WulaFallenEmpire.dll differ
diff --git a/1.6/1.6/Defs/ThingDefs_Buildings/Buildings_WULA.xml b/1.6/1.6/Defs/ThingDefs_Buildings/Buildings_WULA.xml
index 31025ccc..b691f508 100644
--- a/1.6/1.6/Defs/ThingDefs_Buildings/Buildings_WULA.xml
+++ b/1.6/1.6/Defs/ThingDefs_Buildings/Buildings_WULA.xml
@@ -271,6 +271,7 @@
Building_Bed
一台供乌拉帝国合成人进行机体修复的检修站。
+ Normal
Wula/Building/WULA_Charging_Station_Synth
Graphic_Multi
diff --git a/Source/WulaFallenEmpire/CompChargingBed.cs b/Source/WulaFallenEmpire/CompChargingBed.cs
index fab3111a..0dacb370 100644
--- a/Source/WulaFallenEmpire/CompChargingBed.cs
+++ b/Source/WulaFallenEmpire/CompChargingBed.cs
@@ -24,14 +24,34 @@ namespace WulaFallenEmpire
public override void CompTick()
{
base.CompTick();
+ Log.Message("[CompChargingBed] CompTick running.");
+
var bed = (Building_Bed)parent;
- var occupants = new HashSet(bed.CurOccupants);
+ if (!bed.AnyOccupants)
+ {
+ for (int i = chargingPawns.Count - 1; i >= 0; i--)
+ {
+ var p = chargingPawns[i];
+ var h = p.health.hediffSet.GetFirstHediffOfDef(Props.hediffDef);
+ if (h != null)
+ {
+ Log.Message($"[CompChargingBed] Bed empty. Removing hediff from {p.LabelShort}.");
+ p.health.RemoveHediff(h);
+ }
+ }
+ chargingPawns.Clear();
+ return;
+ }
+
+ var currentOccupants = new HashSet(bed.CurOccupants);
+ Log.Message($"[CompChargingBed] Found {currentOccupants.Count} occupants.");
for (int i = chargingPawns.Count - 1; i >= 0; i--)
{
var pawn = chargingPawns[i];
- if (!occupants.Contains(pawn))
+ if (!currentOccupants.Contains(pawn))
{
+ Log.Message($"[CompChargingBed] Pawn {pawn.LabelShort} left the bed. Removing hediff.");
var hediff = pawn.health.hediffSet.GetFirstHediffOfDef(Props.hediffDef);
if (hediff != null)
{
@@ -41,20 +61,22 @@ namespace WulaFallenEmpire
}
}
- if (bed.AnyOccupants)
+ foreach (var pawn in currentOccupants)
{
- foreach (var pawn in bed.CurOccupants)
+ Log.Message($"[CompChargingBed] Checking occupant: {pawn.LabelShort}.");
+ bool hasNeed = pawn.needs.TryGetNeed() != null;
+ Log.Message($"[CompChargingBed] Does {pawn.LabelShort} have Need_WulaEnergy? {hasNeed}");
+
+ if (hasNeed)
{
- if (pawn.def.defName == Props.raceDefName)
+ if (!pawn.health.hediffSet.HasHediff(Props.hediffDef))
{
- if (!pawn.health.hediffSet.HasHediff(Props.hediffDef))
- {
- pawn.health.AddHediff(Props.hediffDef);
- if (!chargingPawns.Contains(pawn))
- {
- chargingPawns.Add(pawn);
- }
- }
+ Log.Message($"[CompChargingBed] Adding charging hediff to {pawn.LabelShort}.");
+ pawn.health.AddHediff(Props.hediffDef);
+ }
+ if (!chargingPawns.Contains(pawn))
+ {
+ chargingPawns.Add(pawn);
}
}
}
diff --git a/Source/WulaFallenEmpire/JobDriver_WulaLayDownToCharge.cs b/Source/WulaFallenEmpire/JobDriver_WulaLayDownToCharge.cs
index 0f6e5b6d..eda0b584 100644
--- a/Source/WulaFallenEmpire/JobDriver_WulaLayDownToCharge.cs
+++ b/Source/WulaFallenEmpire/JobDriver_WulaLayDownToCharge.cs
@@ -14,33 +14,9 @@ namespace WulaFallenEmpire
protected override IEnumerable MakeNewToils()
{
- this.AddFinishAction(jobCondition =>
- {
- var bed = (Building_Bed)job.targetA.Thing;
- var comp = bed.GetComp();
- if (comp == null) return;
- var hediff = pawn.health.hediffSet.GetFirstHediffOfDef(comp.Props.hediffDef);
- if (hediff != null)
- {
- pawn.health.RemoveHediff(hediff);
- }
- });
-
yield return Toils_Bed.GotoBed(TargetIndex.A);
Toil layDownAndCharge = Toils_LayDown.LayDown(TargetIndex.A, true, false, false, false);
- layDownAndCharge.AddPreInitAction(delegate
- {
- if (!pawn.health.hediffSet.HasHediff(HediffDef.Named("WULA_ChargingHediff")))
- {
- var bed = (Building_Bed)job.targetA.Thing;
- var comp = bed.GetComp();
- if (comp != null && !pawn.health.hediffSet.HasHediff(comp.Props.hediffDef))
- {
- pawn.health.AddHediff(comp.Props.hediffDef);
- }
- }
- });
layDownAndCharge.tickAction = delegate
{