RimWorld

RimWorld

Dubs Bad Hygiene
 This topic has been pinned, so it's probably important
Dubwise  [developer] 5 Oct, 2017 @ 9:55am
2
BUG REPORTS
post bug reports here please:

https://github.com/Dubwise56/Dubs-Bad-Hygiene/issues

Thank you
Last edited by Dubwise; 29 Jul @ 7:27am
< >
Showing 901-915 of 1,607 comments
Anvil Pants 27 Apr, 2020 @ 8:33am 
Might be Share The Load. It isn't reporting a PreToil patch in log, (Meals on Wheels is), but I suppose that this related issue from Share The Load could cause exception in PreToil:

Hodge started 10 jobs in one tick. newJob=HaulToCell (Job_29176628) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32) jobGiver=RimWorld.JobGiver_Work jobList=(HaulToCell (Job_29176598) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32)) (HaulToCell (Job_29176601) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32)) (HaulToCell (Job_29176604) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32)) (HaulToCell (Job_29176607) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32)) (HaulToCell (Job_29176610) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32)) (HaulToCell (Job_29176613) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32)) (HaulToCell (Job_29176616) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32)) (HaulToCell (Job_29176619) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32)) (HaulToCell (Job_29176622) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32)) (HaulToCell (Job_29176625) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32)) (HaulToCell (Job_29176628) A=Thing_ComponentIndustrial5937020 B=(27, 0, 32))
Verse.Log:Error(String, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver)
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:DMD<DMD<StartJob_Patch2>?1641819904::StartJob_Patch2>(Pawn_JobTracker, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:DMD<DMD<EndCurrentJob_Patch1>?1282144384::EndCurrentJob_Patch1>(Pawn_JobTracker, JobCondition, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:DMD<DMD<Tick_Patch1>?-1276764928::Tick_Patch1>(Pawn)
Verse.TickList:DMD<DMD<Tick_Patch2>?-2031350144::Tick_Patch2>(TickList)
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()
Anvil Pants 27 Apr, 2020 @ 8:42am 
Seems to be the case. At least, I'm not able to god mode the pawns into it after removing Share The Load. Thank you.
Anvil Pants 27 Apr, 2020 @ 10:22am 
I have this occurrence saved just prior to happening, but I haven't found the pawn. However I notice this in trace:

RimWorld.<>c__DisplayClass2_0:<LayDown>b__1()

The mod Do Not Disturb conflicts with the hygiene mod. Maybe this exception is that. When pawns sleep, Do Not Disturb has them setting forbidden flag on their bedroom doors. It nicely handles some cases, but not this one. When a pawn is waking up, Hygiene does its path checks before DND has removed the door flag. This is the first time I've seen an exception throw. Normally the pawns just go on the floor while DND is unlocking their door.

Exception in Verse.AI.ThinkNode_PrioritySorter TryIssueJobPackage: System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Verse.Area.get_Item (Verse.IntVec3 c) [0x00017] in <bbc76d4d64944976acb84ce2ce5457b4>:0
at RimWorld.ForbidUtility.InAllowedArea (Verse.IntVec3 c, Verse.Pawn forPawn) [0x00020] in <bbc76d4d64944976acb84ce2ce5457b4>:0
at RimWorld.ForbidUtility.IsForbidden (Verse.IntVec3 c, Verse.Pawn pawn) [0x0000b] in <bbc76d4d64944976acb84ce2ce5457b4>:0
at DubsBadHygiene.SanitationUtil+<>c__DisplayClass10_0.<TryFindWaterCell>b__1 (Verse.IntVec3 c) [0x00000] in <5424ce500161447fbb75f2d4a0d1d769>:0
at Verse.CellFinder.TryFindRandomCellNear (Verse.IntVec3 root, Verse.Map map, System.Int32 squareRadius, System.Predicate`1[T] validator, Verse.IntVec3& result, System.Int32 maxTries) [0x000aa] in <bbc76d4d64944976acb84ce2ce5457b4>:0
at DubsBadHygiene.SanitationUtil.TryFindWaterCell (Verse.Pawn pawn, System.Single range, System.Boolean allowOcean) [0x000d4] in <5424ce500161447fbb75f2d4a0d1d769>:0
at DubsBadHygiene.ClosestSanitation.FindBestHygieneSource (Verse.Pawn pawn, System.Boolean Urgent, System.Single shortRange) [0x00060] in <5424ce500161447fbb75f2d4a0d1d769>:0
at DubsBadHygiene.JobGiver_HaveWash.TryGiveJob (Verse.Pawn pawn) [0x0007a] in <5424ce500161447fbb75f2d4a0d1d769>:0
at Verse.AI.ThinkNode_JobGiver.TryIssueJobPackage (Verse.Pawn pawn, Verse.AI.JobIssueParams jobParams) [0x00000] in <bbc76d4d64944976acb84ce2ce5457b4>:0
at Verse.AI.ThinkNode_PrioritySorter.TryIssueJobPackage (Verse.Pawn pawn, Verse.AI.JobIssueParams jobParams) [0x000fc] in <bbc76d4d64944976acb84ce2ce5457b4>:0
Verse.Log:Error(String, Boolean)
Verse.AI.ThinkNode_PrioritySorter:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Tagger:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Subtree:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Conditional:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.Pawn_JobTracker:DMD<DMD<DetermineNextJob_Patch1>?89024000::DetermineNextJob_Patch1>(Pawn_JobTracker, ThinkTreeDef&)
Verse.AI.Pawn_JobTracker:CheckForJobOverride()
RimWorld.<>c__DisplayClass2_0:<LayDown>b__1()
Verse.AI.JobDriver:DriverTick()
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:DMD<DMD<Tick_Patch1>?-28444672::Tick_Patch1>(Pawn)
Verse.TickList:DMD<DMD<Tick_Patch2>?1637010560::Tick_Patch2>(TickList)
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()
Last edited by Anvil Pants; 27 Apr, 2020 @ 10:23am
Dubwise  [developer] 27 Apr, 2020 @ 10:23am 
i guess they need to move their patch to run sooner
Anvil Pants 27 Apr, 2020 @ 10:30am 
:D Yeah. I had noticed it before and played around it. Put a linked toilet in the rooms. Like I said, it never threw exception before, or I didn't see it. I just looked at DND again and the conflict is a will not fix.

Edit: Dingo says your check is too soon.
Last edited by Anvil Pants; 27 Apr, 2020 @ 10:32am
_♣Caligula♣_ 29 Apr, 2020 @ 10:51am 
https://gist.github.com/dbb514112f9b35cc497b178f5d284f62

Don´t think I had that before. Also, I don´t really see any negative effect, water is still flowing in the water towers. pipes are still there ( an error I had from time to time in earlier rimworld builds).
Just flashes red errors until log stops.
Dubwise  [developer] 29 Apr, 2020 @ 11:50am 
someones done a bad xpath patch or something
Silent.X 3 May, 2020 @ 2:09am 
The water table disppears, the mod prompts to reload the game.
Dubwise  [developer] 3 May, 2020 @ 8:07am 
you have a buggy mod, check your log
lilwhitemouse 6 May, 2020 @ 1:12pm 
Okay, in addition to stall doors not being standable, I found another one:
If you have a bathroom with linked toilet and build a shower, the shower is not linked. I suppose they should be checking for other linked items on spawn?
nikos 7 May, 2020 @ 12:22pm 
the "Kitchen sink cabinet" is not connecting to the stove.
it says: "Work speed factor +10% (inactive)" the connection "Lines"? don't appear at all.
Raleon 8 May, 2020 @ 7:29am 
Hey! Thanks for the amazing mod! This was the first mod I downloaded and I have been using it since then in every gameplay, totaling around 500h now.

I'm not sure this was intended, so I'm reporting it here. My current colony is neolithic for the long run, using only latrines and tubs. I'm disposing of fecal sludge by collecting it in zones in a fairly large river and kicking them over. However, the dirty water doesn't pass under bridges, instead stays stuck along the upstream side of the bridge. I solved this mainly cosmetic problem by placing the waste zone downstream from all bridges, and now the dirt washes neatly away.

So, is it intended that fecal sludge in river water doesn't pass under bridges? I first had the problem with modded heavy bridge, but tested this with vanilla bridge too, with same result. Currently in this gameplay I've been having an ice age for a year, so haven't yet seen the effect of rain on this problem.
Raleon 8 May, 2020 @ 7:38am 
Omg I'm sorry, I was clearly too impatient. After waiting for a few days the river water cleared. So I guess it is intended that bridges slightly lengthen the time it takes for river water to clear from pollution, very smooth!
lilwhitemouse 8 May, 2020 @ 6:23pm 
Bug report for you: I have 2 colonists with Plague, unfortunately they are in a caravan that is "resting." As soon as they were back in caravan, pawns in the main settlement started throwing errors:

Vudojir threw exception in WorkGiver washPatient: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
at System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) [0x00029] in <567df3e0919241ba98db88bec4c6696f>:0
at System.ThrowHelper.ThrowArgumentOutOfRangeException () [0x00000] in <567df3e0919241ba98db88bec4c6696f>:0
at Verse.Thing.get_Map () [0x0001b] in <a53a58c7de254132b59afc478cafd9ed>:0
at DubsBadHygiene.WorkGiver_washPatient+<>c__DisplayClass2_0.<PotentialWorkThingsGlobal>b__0 (Verse.Pawn x) [0x00003] in <5424ce500161447fbb75f2d4a0d1d769>:0
at System.Linq.Enumerable+WhereListIterator`1[TSource].MoveNext () [0x00037] in <351e49e2a5bf4fd6beabb458ce2255f3>:0
at Verse.GenClosest.ClosestThing_Global (Verse.IntVec3 center, System.Collections.IEnumerable searchSet, System.Single maxDistance, System.Predicate`1[T] validator, System.Func`2[T,TResult] priorityGetter) [0x00131] in <a53a58c7de254132b59afc478cafd9ed>:0
at Verse.GenClosest.ClosestThingReachable (Verse.IntVec3 root, Verse.Map map, Verse.ThingRequest thingReq, Verse.AI.PathEndMode peMode, Verse.TraverseParms traverseParams, System.Single maxDistance, System.Predicate`1[T] validator, System.Collections.Generic.IEnumerable`1[T] customGlobalSearchSet, System.Int32 searchRegionsMin, System.Int32 searchRegionsMax, System.Boolean forceAllowGlobalSearch, Verse.RegionType traversableRegionTypes, System.Boolean ignoreEntirelyForbiddenRegions) [0x0014e] in <a53a58c7de254132b59afc478cafd9ed>:0
at RimWorld.JobGiver_Work.TryIssueJobPackage (Verse.Pawn pawn, Verse.AI.JobIssueParams jobParams) [0x00411] in <a53a58c7de254132b59afc478cafd9ed>:0
Verse.Log:Error(String, Boolean)
RimWorld.JobGiver_Work:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_PrioritySorter:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Tagger:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Subtree:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Conditional:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.Pawn_JobTracker:DetermineNextJob(ThinkTreeDef&)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean, Boolean)
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Dubwise  [developer] 9 May, 2020 @ 6:13am 
i just tested that, spawned a caravan, gave them plague, they were in resting state at night, then started moving during the day, no errors, yet
Last edited by Dubwise; 9 May, 2020 @ 6:20am
< >
Showing 901-915 of 1,607 comments
Per page: 1530 50