Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
the following loop exists
int i = 0;
for (i = 0; i < toAssign; i++)
{
if (commitable.Count == 0)
break;
AssignWorkToPawn(current, commitable.Dequeue());
toAssign--;
}
This both decreases the number it wants to assign and also increases the indexing variable meaning it will only run the AssignWorkToPawn function, toAssign/2 times when this for loop runs. This makes it so the top assignments are not necessarily assigned first as when this loop concludes it puts the assignment to the back of the queue. Removing toAssign--; would fix this.
I really appreciate the bug reports, and your efforts to locate the bugs in the code!
A) Firefight: 1, Patient: 2, Doctor: 1
B) Patient: 2, Doctor: 1
I believe something about the fact that it is unable to assign to its full target of both pawns for some reason sends the assignment directly after it to the back of the list. So it assigns firefight, then doctor, then patient when it should be firefight, patient, then doctor.
else if (assignmentList.Count > 0)
{
var spec = assignmentList[0];
assignmentList.RemoveAt(0);
assignmentList.Add(spec);
}
But I am not sure if simply removing this block would cause problems with commitment or incremental since I haven't quite figured out how those are meant to work
My theory is that the maxCommitment loop doesn't check if there are any actually applicable pawns available, causing it to reach maxCommitment without doing anything, meaning the assignmentList.Remove(current) statement on line 220 is executed, removing the Firefight work from the list. Then, the loop end, the lines you pointed out are executed, moving the now zero-positioned Patient to the back of the list. I'll have to do some debugging to verify this though.
Thank you for the detailed description of your setup, I'll use it for debugging the issue.
1.5x:
https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=3470580518
1.0x:
https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=3470715007
1)
Exception filling window for Lomzie.AutomaticWorkAssignment.UI.ExcludeColonistsWindow: System.NullReferenceException: Object reference not set to an instance of an object
[Ref 98B54AD5] Duplicate stacktrace, see ref for original
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.Log.Error_Patch2 (string)
Verse.Window:InnerWindowOnGUI (int)
UnityEngine.GUI:CallWindowDelegate (UnityEngine.GUI/WindowFunction,int,int,UnityEngine.GUISkin,int,single,single,UnityEngine.GUIStyle)
2)
Mouse position stack is not empty. There were more calls to BeginScrollView than EndScrollView. Fixing.
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.Log.Error_Patch2 (string)
Verse.Widgets:EnsureMousePositionStackEmpty ()
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.Root.Update_Patch1 (Verse.Root)
Verse.Root_Play:Update ()