Fix for an error about mergeables
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -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