[1.0] Mend And Recycle

Started by notfood, August 06, 2016, 09:02:41 PM

Previous topic - Next topic

Furrymessiah

So I'm curious. What is Mending.SpecialThingFilterWorker_Unroofed, and why is it currently bugging out my colony? Or better yet, what steps do I take to fix it? I'm using the latest alpha from Github.

notfood

I removed that one from latest github. You may be playing with an older one. To recover your save use Safe Inside.

Quote from: notfood on December 24, 2016, 04:05:23 AM
SafeInside is the part of Mending that used to filter items outside or inside. It's a special filter to keep your pawns from going to the dangerous unroofed areas.

A16 SafeInside 0.16.1.0

Pichu0102

#62
Is there a way to switch from Mending normal on github to easy? I tried and the game wouldn't load. Was wondering why it does that if there are no mending benches or repair kits on the map when you save and remove the normal version.

EDIT: Figured it out. Removed
<li>MendingKit</li>
and
<thing Class="ThingWithComps">
<def>MendingKit</def>
<id>MendingKit3365759</id>
<map>0</map>
<pos>(183, 0, 175)</pos>
<health>100</health>
<stackCount>25</stackCount>
</thing>


From the save manually and it loaded just fine. I'm kinda surprised Rimworld didn't just throw an warning level error and remove the line from the save itself on next game save.

Pichu0102

Also, does this look right if I want to change it to make better quality items have a bigger chance of failing to repair right than lower quality items?

<?xml version="1.0" encoding="utf-8" ?>
<Defs>
    <Mending.ChanceDef>
        <defName>Default</defName>
        <match>
            <categories>
                <li>Apparel</li>
                <li>WeaponsMelee</li>
                <li>WeaponsRanged</li>
            </categories>
        </match>
        <chances>
            <awful>0.01</awful>
            <shoddy>0.01</shoddy>
            <poor>0.02</poor>
            <normal>0.02</normal>
            <good>0.03</good>
            <superior>0.03</superior>
            <excellent>0.03</excellent>
            <masterwork>0.03</masterwork>
            <legendary>0.04</legendary>
        </chances>
    </Mending.ChanceDef>
   
    <Mending.ChanceDef>
        <defName>IndustrialAndBelow</defName>
        <match>
            <categories>
                <li>Apparel</li>
                <li>WeaponsMelee</li>
                <li>WeaponsRanged</li>
            </categories>
        </match>
        <techLevel>
            <min>Undefined</min>
            <max>Industrial</max>
        </techLevel>
        <chances>
            <awful>0.01</awful>
            <shoddy>0.01</shoddy>
            <poor>0.01</poor>
            <normal>0.02</normal>
            <good>0.02</good>
            <superior>0.03</superior>
            <excellent>0.03</excellent>
            <masterwork>0.03</masterwork>
            <legendary>0.03</legendary>
        </chances>
    </Mending.ChanceDef>
</Defs>

notfood


Arigitine

I keep getting this error it cause game to freeze for few sec every few ticks

Exception in RimWorld.ThinkNode_ConditionalColonist TryIssueJobPackage: System.NullReferenceException: Object reference not set to an instance of an object
  at Mending.SpecialThingFilterWorker_Unroofed.Matches (Verse.Thing t) [0x00000] in <filename unknown>:0
  at Verse.ThingFilter.Allows (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.JobGiver_OptimizeApparel.TryGiveJob (Verse.Pawn pawn) [0x00000] in <filename unknown>:0
  at Verse.AI.ThinkNode_JobGiver.TryIssueJobPackage (Verse.Pawn pawn) [0x00000] in <filename unknown>:0
  at Verse.AI.ThinkNode_Priority.TryIssueJobPackage (Verse.Pawn pawn) [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn)
RimWorld.ThinkNode_Conditional:TryIssueJobPackage(Pawn)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn)
Verse.AI.Pawn_JobTracker:DetermineNextJob(ThinkTreeDef&)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick()
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:Update()
Verse.Root_Play:Update()

I am using 0.16.1.0-easymode

FoxXeL

#66
I was geting the same error. Go to Assign tab and select the "Current outfit" for all workers to  "Anything". Let me know if you still have the error.

EDIT: Actually, I think you did not check the "Allow non-roofed" on the Mending workbench. Try this one.

Arigitine

It was Assigned tab i went in and turned on Allow non-roofed to all the outfits and i stopped getting error Thx for help


TimTumm

I had a similar problem:

(Filename: C:/buildslave/unity/build/artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp Line: 42)

Exception in Tick (pawn=Uhura, job=HaulToCell A=Thing_Gold65514 B=(79, 0, 163), CurToil=5): System.NullReferenceException: Object reference not set to an instance of an object
  at Mending.SpecialThingFilterWorker_Unroofed.Matches (Verse.Thing t) [0x00000] in <filename unknown>:0
  at Verse.ThingFilter.Allows (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.StorageSettings.AllowedToAccept (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.StoreUtility.IsValidStorageFor (IntVec3 c, Verse.Map map, Verse.Thing storable) [0x00000] in <filename unknown>:0
  at Verse.AI.Toils_Haul+<CarryHauledThingToCell>c__AnonStorey41E.<>m__67F () [0x00000] in <filename unknown>:0
  at Verse.AI.Toil+<AddFailCondition>c__AnonStorey42A.<>m__68F () [0x00000] in <filename unknown>:0
  at Verse.AI.JobDriver.CheckCurrentToilEndOrFail () [0x00000] in <filename unknown>:0
  at Verse.AI.JobDriver.DriverTick () [0x00000] in <filename unknown>:0

It cause stuttering (the time-speed would flicker from paused to 2x back to paused like 10 times a second).  And the pawns would push items on the ground 1 square at a time.  I removed mending and the issue went away.

I hope this can be fixed.  I really like this mod.

Canute

I think mending got a not documented side effect.
It remove the deathman flag from repaired appearels.

Telarin

I have a small feature request.

It would be really nice if a colonist would check an items eligibility for repair each time they fail. For instance, if I have the bill set so that only normal or better items are repaired. For example: if a colonist fails while repairing a normal item and it drops to poor, the colonist should stop attempting to repair the now ineligible item, rather than continuing.

notfood

I'll remove that quality degrade next update. It's kinda pointless as it only affects the name. The -50 hp is alright. For the mending, it can be fixed. For the recycling, some materials are lost.

Pichu0102

Hmm, is mending speed affected by crafting skill? Also, does mending items give crafting experience?

Furrymessiah

Felt like a proper bug report was in order, so here we are.




Version: Rimworld 0.16.1393

OS: Windows 7 Professional SP1

Active Mods:

Additional Joy Objects
Better Pathfinding
Fluffy's Blueprints
Fluffy's Colony Manager
Deep Core Miner
Deep Core Miner Stone Addon
EDB's Prepare Carefully
Expanded Prosthetics and Organ Engineering
FashionRIMsta
Floor Lights
Hug's Library
Hospitality
Koisama's Numbers
Mad Skills Tiered
Mending
Haplo's Miscellaneous Training
Quality Builder
Encode's Recycle
Rimsenal
Rimsenal Hair
Stack XXL
Tilled Soil
Vein Miner



Summary: Mending mod is preventing food production objects from completing bills.


Description:

Installed Mending_easymode_0.16.1.0.

Began a fresh colony.

Whenever a colonist attempts to complete a bill on a food production object, the following error log is generated and whatever food item was used or generated by the bill disappears. The Butcher's Table, when the Butcher Creature bill is completed, generates leather/hide/fur, but no meat.


JobDriver threw exception in initAction. Pawn=Princess, Job=DoBill A=Thing_TableButcher76078 B=Thing_Turkey_Corpse77893 C=(138, 0, 111), Exception: System.NullReferenceException: Object reference not set to an instance of an object
  at Mending.SpecialThingFilterWorker_Unroofed.Matches (Verse.Thing t) [0x00000] in <filename unknown>:0
  at Verse.ThingFilter.Allows (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.StorageSettings.AllowedToAccept (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.StoreUtility.TryFindBestBetterStoreCellFor (Verse.Thing t, Verse.Pawn carrier, Verse.Map map, StoragePriority currentPriority, RimWorld.Faction faction, Verse.IntVec3& foundCell, Boolean needAccurateResult) [0x00000] in <filename unknown>:0
  at Verse.AI.Toils_Recipe+<FinishRecipeAndStartStoringProduct>c__AnonStorey418.<>m__674 () [0x00000] in <filename unknown>:0
  at Verse.AI.JobDriver.TryActuallyStartNextToil () [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.<DoRecipeWork>c__AnonStorey417:<>m__66F()
Verse.AI.JobDriver:DriverTick()
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick()
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:Update()
Verse.Root_Play:Update()


NOTE: There are no unroofed areas within the colony.


Once the initial error occurred, Pawns attempting to perform the Hauling task on food items would become caught in a loop of moving the same items over and over again. This generated the following error log:


Exception in Tick (pawn=Ray, job=HaulToCell A=Thing_RawBerries82803 B=(135, 0, 112), CurToil=5): System.NullReferenceException: Object reference not set to an instance of an object
  at Mending.SpecialThingFilterWorker_Unroofed.Matches (Verse.Thing t) [0x00000] in <filename unknown>:0
  at Verse.ThingFilter.Allows (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.StorageSettings.AllowedToAccept (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.StoreUtility.IsValidStorageFor (IntVec3 c, Verse.Map map, Verse.Thing storable) [0x00000] in <filename unknown>:0
  at Verse.AI.Toils_Haul+<CarryHauledThingToCell>c__AnonStorey41E.<>m__67F () [0x00000] in <filename unknown>:0
  at Verse.AI.Toil+<AddFailCondition>c__AnonStorey42A.<>m__68F () [0x00000] in <filename unknown>:0
  at Verse.AI.JobDriver.CheckCurrentToilEndOrFail () [0x00000] in <filename unknown>:0
  at Verse.AI.JobDriver.DriverTick () [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.AI.JobDriver:DriverTick()
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick()
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:Update()
Verse.Root_Play:Update()



When the Mending mod is disabled and the save re-loaded, multiple error logs begin repeatedly occuring:


Object reference not set to an instance of an object
  at Verse.ThingFilter.Allows (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.StorageSettings.AllowedToAccept (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.StoreUtility.TryFindBestBetterStoreCellFor (Verse.Thing t, Verse.Pawn carrier, Verse.Map map, StoragePriority currentPriority, RimWorld.Faction faction, Verse.IntVec3& foundCell, Boolean needAccurateResult) [0x00000] in <filename unknown>:0
  at RimWorld.StoreUtility.IsInValidBestStorage (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.ListerHaulables.ShouldBeHaulable (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.ListerHaulables.Check (Verse.Thing t) [0x00000] in <filename unknown>:0
  at RimWorld.ListerHaulables.ListerHaulablesTick () [0x00000] in <filename unknown>:0
  at Verse.Map.MapPreTick () [0x00000] in <filename unknown>:0
  at Verse.TickManager.DoSingleTick () [0x00000] in <filename unknown>:0
  at Verse.TickManager.TickManagerUpdate () [0x00000] in <filename unknown>:0
  at Verse.Game.Update () [0x00000] in <filename unknown>:0
  at Verse.Root_Play.Update () [0x00000] in <filename unknown>:0


In an attempt to circumvent potential conflicts with earlier mod versions, the ModsConfig.xml file was deleted and all mods were reloaded fresh. This did not prevent the error from occurring. Disabling Encode's Recycle mod, which has similar functionality to the Mending mod, did not prevent the error from occurring.

NOTE: Upon reproduction of the bug, it seems to only effect production objects that utilize food items, as tailoring, stonecutting, and fabricating prostheses were unaffected and did not generate an error log.

notfood

Ah... You are using 16.1.0

Get the github source. I'll do a proper release right now.