[1.3] [KV] Change Mirror [ModSync RW]

Started by Kiame, May 19, 2018, 10:00:27 PM

Previous topic - Next topic


This is a stand alone version of Change Mirror from the Change Dresser mod.

To Build a Change Mirror:
-20 steel
-20 wood/stone/metal

Allows a pawn to change:

  • Hair Style
  • Hair Color
  • Body Type
  • Body Color
  • Head Type
  • Gender
  • Biological & Chronological Age
  • Apparel Color

Note: Unlike in Change Dresser, apparel color will not persist as pawns change apparel.
As in the apparel itself will stay the color but the new piece of apparel a pawn replaced it with will not change color automatically.


Direct Download:


Github: https://github.com/KiameV/rimworld-changemirror

Thank you translators!
Vaniat - Chinese Simplified and Traditional
Proxyer - Japanese
Ɲơɴɑɱɛ - German
Gidreess - Russian
Boundir - French

Like my mods? Consider supporting me!


I have no idea how, but it works!!!


It is on my to-do list. This is a scaled down version from Change Dresser which can be used in the mean time


Thats very thoughtful of you. Most modders wouldnt do this, i been hoping the author of More Furniture would take out the redundant furnishings added by vanilla (dresser and end tables) or add it as a standalone. I dig it.


Thank you so much from me! For two days I was continuously searching for these opportunities, I was exhausted! Now my soul soars in bliss - I wish you all the best in life!  :)
Google Translate


Hi getting this error, but no mirror after construction

Exception in JobDriver tick for pawn Delphine driver=_JobDriver_ConstructFinishFrame (toilIndex=1) driver.job=(FinishFrame (Job_599236) A=Thing_Frame_ChangeMirror297259) lastJobGiver=Verse.AI.ThinkNode_QueuedJob
System.ArgumentNullException: Argument cannot be null.
Parameter name: type
at System.Activator.CheckType (System.Type) <0x00095>
at System.Activator.CreateInstance (System.Type,bool) <0x00027>
at System.Activator.CreateInstance (System.Type) <0x0001e>
at (wrapper dynamic-method) Verse.ThingMaker.MakeThing_Patch1 (Verse.ThingDef,Verse.ThingDef) <0x00373>
at RimWorld.Frame.CompleteConstruction (Verse.Pawn) <0x00309>
at RimWorld.JobDriver_ConstructFinishFrame/<MakeNewToils>c__Iterator0/<MakeNewToils>c__AnonStorey1.<>m__1 () <0x00396>
at (wrapper dynamic-method) Verse.AI.JobDriver.DriverTick_Patch1 (object) <0x004c8>

Verse.Log:Error(String, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver)
ZombieLand.Verse_TickManager_TickManagerUpdate_Patch:SingleTick(TickManager, Int32)


Fixed support for Alien Races
Added option to share hair styles between genders (alien races can limit this)


Howdy! Question: ,,Is it possible to replace the original mod with this without destroying the mirrors I currently have in game? They are decorated with art and I wouldn't like to loose them."


Yes the def names did not change so existing mirrors will still be there


Thanks, will try.  ;)
EDIT: Works, thx.


Updated for 1.1 - https://github.com/KiameV/rimworld-changemirror/releases/download/1.1/ChangeMirror.zip

I have not had a chance to test this against alien races. Please let me know if it works =)


So about a year ago i posted on this mods github, havent really played since then but got back into it now and since you havent checked that i thought i d try here.
There is an issue with share hair styles option - even with it enabled, a female pawn with mop hair (tagged MaleUsually) will get her hair reset to the first female hair in the menu. Most likely a problem within SelectionWidgetDTO.

The second thing i wanted is to have another row of presets. Since your code is very clear this is real easy to do.
Just up the ColorPresetsDTO.ColorPresets to 10 and make some changes in WidgetUtil:

            if (presetsDto != null)
                GUI.BeginGroup(new Rect(5, colorPickerRect.yMax, (ColorPreset.width + 4) * presetsDto.Count, 2*ColorPreset.height + 10));
                float l = 0;
                float k = 0;
                for (int i = 0; i < presetsDto.Count; ++i)
                    GUI.color = presetsDto[i];

                    l += ColorPreset.width + 4;
                    if (i == 5)
                        k = ColorPreset.height + 5;
                        l = ColorPreset.width + 4;

                    Rect presetRect = new Rect(l, k, ColorPreset.width, ColorPreset.height);

Could also do it with mod or div if you ever want to add a rows option.


Fixing an issue where alien races could spawn w/o heads.

There _may_ be an error that comes up when loading a save using the previous version of this mod. That error can be ignored and will not appear again after a new save.