RimWorld

RimWorld

[CAT] Show Hair With Hats or Hide All Hats
Confusing system, suggestions
Currently the mod description states: "All hats are hidden by default" but this is never stated in the mod options and is opposite vanilla behavior. Having hats shown as default would prevent a lot of the confusion regarding rules and when users add new hats. You could still add a premade rule to hide all hats or some other popular option.

All options except "hide hat" should have "show hat" added in front.

You could add headers and reorder the details menu: Select apparel, Set conditions, Select action.

There are two colored any/all buttons in the rule menu with the same description. I assume they are separate for green check or red cross conditions but this is not clear in the tooltip.

"Dont shave your hair" option in main menu seems redundant as this can be set in rules. Also please add the "only applies to colonists" as a rule instead of a toggle.

I ve also encountered an error with invisible pawns when adjusting rules in a running game although VFE patching might be the issue:

Exception drawing Nilsson: System.InvalidOperationException: Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct. [Ref 8956DE9D] [0x0000a] in <51fded79cd284d4d911c5949aff4cb21>:0 at System.Collections.Generic.Dictionary`2[TKey,TValue].FindEntry (TKey key) [0x000ae] in <51fded79cd284d4d911c5949aff4cb21>:0 at System.Collections.Generic.Dictionary`2[TKey,TValue].TryGetValue (TKey key, TValue& value) [0x00000] in <51fded79cd284d4d911c5949aff4cb21>:0 at ShowHair.Settings.GetHatState (System.UInt64 flags, Verse.ThingDef hat) [0x0002b] in G:\SteamLibrary\steamapps\common\RimWorld\Mods\rimworld-showhair\1.6\Source\Settings.cs:174 at Verse.PawnRenderTree.AdjustParms (Verse.PawnDrawParms& parms) [0x000f7] in <f63a1e66e66a44779e231a5afdfacc67>:0 - TRANSPILER cat2002.showhair: IEnumerable`1 ShowHair.HarmonyPatches.PawnRenderTree_AdjustParms_Patch:Transpiler(IEnumerable`1 instructions, ILGenerator generator) - PREFIX cat2002.showhair: Void ShowHair.HarmonyPatches.PawnRenderTree_AdjustParms_Patch:Prefix(PawnRenderTree __instance) at Verse.PawnRenderTree.ParallelPreDraw (Verse.PawnDrawParms parms) [0x00009] in <f63a1e66e66a44779e231a5afdfacc67>:0 at Verse.PawnRenderer.ParallelGetPreRenderResults (UnityEngine.Vector3 drawLoc, System.Nullable`1[T] rotOverride, System.Boolean neverAimWeapon, System.Boolean disableCache) [0x0025d] in <f63a1e66e66a44779e231a5afdfacc67>:0 - PREFIX OskarPotocki.VEF: Void VEF.AestheticScaling.VanillaExpandedFramework_PawnRenderer_ParallelGetPreRenderResults_Patch:Prefix(PawnRenderer __instance, Vector3& drawLoc, Rot4 rotOverride, Boolean neverAimWeapon, Boolean& disableCache, Pawn ___pawn) (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Glue:AbiFixup<Verse.PawnRenderer+PreRenderResults Verse.PawnRenderer:ParallelGetPreRenderResults(UnityEngine.Vector3, System.Nullable`1[[Verse.Rot4, Assembly-CSharp, Version=1.6.9340.29321, Culture=neutral, PublicKeyToken=null]], System.Boolean, System.Boolean),Verse.PawnRenderer+PreRenderResults Verse.PawnRenderer.ParallelGetPreRenderResults_Patch1(Verse.PawnRenderer, UnityEngine.Vector3, System.Nullable`1[[Verse.Rot4, Assembly-CSharp, Version=1.6.9340.29321, Culture=neutral, PublicKeyToken=null]], System.Boolean, System.Boolean)>(Verse.PawnRenderer,Verse.PawnRenderer/PreRenderResults&,UnityEngine.Vector3,System.Nullable`1<Verse.Rot4>,bool,bool) at Verse.PawnRenderer.ParallelPreRenderPawnAt (UnityEngine.Vector3 drawLoc, System.Nullable`1[T] rotOverride, System.Boolean neverAimWeapon) [0x00000] in <f63a1e66e66a44779e231a5afdfacc67>:0 at Verse.PawnRenderer.RenderPawnAt (UnityEngine.Vector3 drawLoc, System.Nullable`1[T] rotOverride, System.Boolean neverAimWeapon) [0x00013] in <f63a1e66e66a44779e231a5afdfacc67>:0 at Verse.PawnRenderer.DynamicDrawPhaseAt (Verse.DrawPhase phase, UnityEngine.Vector3 drawLoc, System.Nullable`1[T] rotOverride, System.Boolean neverAimWeapon) [0x0001d] in <f63a1e66e66a44779e231a5afdfacc67>:0 at Verse.Pawn.DynamicDrawPhaseAt (Verse.DrawPhase phase, UnityEngine.Vector3 drawLoc, System.Boolean flip) [0x0000f] in <f63a1e66e66a44779e231a5afdfacc67>:0 at Verse.Thing.DynamicDrawPhase (Verse.DrawPhase phase) [0x00017] in <f63a1e66e66a44779e231a5afdfacc67>:0 at Verse.DynamicDrawManager.DrawDynamicThings () [0x000ec] in <f63a1e66e66a44779e231a5afdfacc67>:0