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 @@ +