diff --git a/1.6/1.6/Assemblies/WulaFallenEmpire.dll b/1.6/1.6/Assemblies/WulaFallenEmpire.dll
index 7620ae61..ed394516 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/JobDefs/WULA_JobDefs.xml b/1.6/1.6/Defs/JobDefs/WULA_JobDefs.xml
index a50f9e1d..57d31346 100644
--- a/1.6/1.6/Defs/JobDefs/WULA_JobDefs.xml
+++ b/1.6/1.6/Defs/JobDefs/WULA_JobDefs.xml
@@ -30,11 +30,4 @@
false
-
- WULA_LayDownToCharge
- WulaFallenEmpire.JobDriver_WulaLayDownToCharge
- 正在充电
- false
-
-
\ No newline at end of file
diff --git a/1.6/1.6/Defs/ThinkTreeDefs/WULA_ThinkTrees.xml b/1.6/1.6/Defs/ThinkTreeDefs/WULA_ThinkTrees.xml
index 8135f7a3..0966f17a 100644
--- a/1.6/1.6/Defs/ThinkTreeDefs/WULA_ThinkTrees.xml
+++ b/1.6/1.6/Defs/ThinkTreeDefs/WULA_ThinkTrees.xml
@@ -265,21 +265,30 @@
true
-
-
- WULA_Energy
- 0.5
- true
+
+
+ SatisfyingNeeds
-
- SatisfyingNeeds
+
+
true
0.3
- 0.9
+ 1.0
9.5
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/WulaFallenEmpire/CompChargingBed.cs b/Source/WulaFallenEmpire/CompChargingBed.cs
index b2c9857f..2334990e 100644
--- a/Source/WulaFallenEmpire/CompChargingBed.cs
+++ b/Source/WulaFallenEmpire/CompChargingBed.cs
@@ -24,7 +24,6 @@ namespace WulaFallenEmpire
public override void CompTick()
{
base.CompTick();
- Log.Message("[CompChargingBed] CompTick running.");
var bed = (Building_Bed)parent;
var powerComp = parent.GetComp();
@@ -74,6 +73,7 @@ namespace WulaFallenEmpire
}
}
+
private void StopCharging(Pawn pawn)
{
var hediff = pawn.health.hediffSet.GetFirstHediffOfDef(Props.hediffDef);
diff --git a/Source/WulaFallenEmpire/JobDriver_WulaLayDownToCharge.cs b/Source/WulaFallenEmpire/JobDriver_WulaLayDownToCharge.cs
deleted file mode 100644
index 6561bf37..00000000
--- a/Source/WulaFallenEmpire/JobDriver_WulaLayDownToCharge.cs
+++ /dev/null
@@ -1,41 +0,0 @@
-using RimWorld;
-using System.Collections.Generic;
-using Verse;
-using Verse.AI;
-
-namespace WulaFallenEmpire
-{
- public class JobDriver_WulaLayDownToCharge : JobDriver
- {
- public override bool TryMakePreToilReservations(bool errorOnFailed)
- {
- return pawn.Reserve(job.targetA, job, 1, -1, null, errorOnFailed);
- }
-
- protected override IEnumerable MakeNewToils()
- {
- yield return Toils_Bed.GotoBed(TargetIndex.A);
-
- Toil layDownAndCharge = Toils_LayDown.LayDown(TargetIndex.A, true, false, false, false);
- layDownAndCharge.tickAction = delegate
- {
- var bed = (Building_Bed)job.targetA.Thing;
- var powerComp = bed.GetComp();
-
- if (powerComp is { PowerOn: false })
- {
- EndJobWith(JobCondition.Incompletable);
- return;
- }
-
- var energyNeed = pawn.needs.TryGetNeed();
- if (energyNeed != null && energyNeed.CurLevelPercentage >= 1f)
- {
- EndJobWith(JobCondition.Succeeded);
- }
- };
-
- yield return layDownAndCharge;
- }
- }
-}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/JobGiver_WulaGetEnergy.cs b/Source/WulaFallenEmpire/JobGiver_WulaGetEnergy.cs
index ae67ad36..67a54db4 100644
--- a/Source/WulaFallenEmpire/JobGiver_WulaGetEnergy.cs
+++ b/Source/WulaFallenEmpire/JobGiver_WulaGetEnergy.cs
@@ -8,38 +8,72 @@ namespace WulaFallenEmpire
public class JobGiver_WulaGetEnergy : ThinkNode_JobGiver
{
public float minEnergyLevelPercentage = 0.3f;
- public float maxEnergyLevelPercentage = 0.9f;
+ public float maxEnergyLevelPercentage = 1.0f;
+
+ public float emergencyPriority = 9.5f;
public override float GetPriority(Pawn pawn)
{
var energyNeed = pawn.needs.TryGetNeed();
- if (energyNeed == null || energyNeed.CurLevelPercentage >= minEnergyLevelPercentage)
+ if (energyNeed == null)
{
return 0f;
}
- return 9.5f;
+
+ // 如果能量已充满,则不需要充电
+ if (energyNeed.CurLevel >= energyNeed.MaxLevel)
+ {
+ return 0f;
+ }
+
+ // 如果Pawn正在执行充电Job,并且能量尚未充满,则保持高优先级
+ if ((pawn.CurJobDef == JobDefOf.LayDown ||
+ pawn.CurJobDef == DefDatabase.GetNamed("WULA_IngestWulaEnergy")) &&
+ energyNeed.CurLevel < energyNeed.MaxLevel)
+ {
+ return emergencyPriority; // 保持高优先级,直到充满
+ }
+
+ // 如果能量低于阈值,则需要充电
+ if (energyNeed.CurLevelPercentage < minEnergyLevelPercentage)
+ {
+ return emergencyPriority;
+ }
+
+ return 0f; // 否则,不需要充电,返回0
}
protected override Job TryGiveJob(Pawn pawn)
{
+ Log.Message($"[JobGiver_WulaGetEnergy] TryGiveJob called for {pawn.Name.ToStringShort}.");
var energyNeed = pawn.needs.TryGetNeed();
- if (energyNeed == null || energyNeed.CurLevelPercentage >= maxEnergyLevelPercentage)
+ if (energyNeed == null)
{
+ Log.Message($"[JobGiver_WulaGetEnergy] TryGiveJob for {pawn.Name.ToStringShort}: EnergyNeed is null. Returning null.");
+ return null;
+ }
+
+ if (energyNeed.CurLevelPercentage >= maxEnergyLevelPercentage)
+ {
+ Log.Message($"[JobGiver_WulaGetEnergy] TryGiveJob for {pawn.Name.ToStringShort}: CurLevelPercentage ({energyNeed.CurLevelPercentage:F3}) >= maxEnergyLevelPercentage ({maxEnergyLevelPercentage:F3}). Returning null.");
return null;
}
if (!TryFindBestEnergySourceFor(pawn, out var energySource))
{
+ Log.Message($"[JobGiver_WulaGetEnergy] TryGiveJob for {pawn.Name.ToStringShort}: No best energy source found. Returning null.");
return null;
}
if (energySource is Building_Bed)
{
- return JobMaker.MakeJob(DefDatabase.GetNamed("WULA_LayDownToCharge"), energySource);
+ Log.Message($"[JobGiver_WulaGetEnergy] TryGiveJob for {pawn.Name.ToStringShort}: Assigning LayDown job to {energySource.Label}.");
+ return JobMaker.MakeJob(JobDefOf.LayDown, energySource);
}
var job = JobMaker.MakeJob(DefDatabase.GetNamed("WULA_IngestWulaEnergy"), energySource);
job.count = 1;
+ Log.Message($"[JobGiver_WulaGetEnergy] TryGiveJob for {pawn.Name.ToStringShort}: Assigning WULA_IngestWulaEnergy job to {energySource.Label}.");
return job;
}
diff --git a/Source/WulaFallenEmpire/StartupLogger.cs b/Source/WulaFallenEmpire/StartupLogger.cs
new file mode 100644
index 00000000..371f28fb
--- /dev/null
+++ b/Source/WulaFallenEmpire/StartupLogger.cs
@@ -0,0 +1,13 @@
+using Verse;
+
+namespace WulaFallenEmpire
+{
+ [StaticConstructorOnStartup]
+ public static class StartupLogger
+ {
+ static StartupLogger()
+ {
+ Log.Message("WulaFallenEmpire Mod DLL, version 1.0.2, has been loaded.");
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
index 9c7711df..2bb7e82a 100644
--- a/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
+++ b/Source/WulaFallenEmpire/WulaFallenEmpire.csproj
@@ -104,7 +104,6 @@
-
@@ -151,6 +150,7 @@
+