Fix for an error about mergeables
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
// Copyright (c) 2022 bradson
|
||||
// This Source Code Form is subject to the terms of the Mozilla Public
|
||||
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
// file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||||
|
||||
namespace PerformanceFish.JobSystem;
|
||||
|
||||
public class WorkGiver_MergeOptimization : ClassWithFishPatches
|
||||
{
|
||||
public class JobOnThing_Patch : FishPatch
|
||||
{
|
||||
public override string Description => "Removes mergeables from ListerMergeables if they no longer qualify as mergeable when trying to check for a merging job on them. Vanilla RimWorld just fails and keeps them in";
|
||||
public override MethodBase TargetMethodInfo => AccessTools.Method(typeof(WorkGiver_Merge), nameof(WorkGiver_Merge.JobOnThing));
|
||||
|
||||
public static void Prefix(Thing t)
|
||||
{
|
||||
if (t.GetSlotGroup() is null)
|
||||
RemoveFromListerMergeables(t);
|
||||
}
|
||||
|
||||
private static void RemoveFromListerMergeables(Thing t)
|
||||
{
|
||||
var map = t.MapHeld;
|
||||
map.listerMergeables.TryRemove(t);
|
||||
map.listerHaulables.Check(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user