Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - mrofa

Ideas / Colony Type/Specialization
June 01, 2017, 03:40:26 PM
Was thinking of a concept to specify what colony type the colony will be, since currently rimworld dont have any and thoughts and actions consequences are static in that regard.
Colony could change thier type at any time but it would have consequences for various bonuses, debufs, diplomacy and in general various colonist moods.
Example of types:
everyones favorite Canibals
Colonist will with time get lesser debuff from eating human meat, chooping humans, corpses and so on,  will also get special traits which will give them mood buff similar to canibal trait but they will get debuffs to other forms of food. Not all colonist will adapt as fast and some may choose to leave. If other faction pawns will discover colonists as canibals and leave the map, he will spread the word which would limit amount of traders player gets, will also decrese relationship with  some other factions.

One of the colonist will become a holy person, and will give other colnists in time special trait that will allow them to be affected by special though that will incerase thier speed, work speed and various other atributes of other colonists for limited time.
Holy person gains special trait that disable most work types (you dont see a pope crafting swords) also not being affected by holy person thought will give colonist negative bonuses.
And ofcourse they are much slower to research stuff.
Holy person gains a ability to convert other faction pawns. If converted pawn will leave the map, he will spread the word which may bring some pilgrims and incerase ammount of trader caravanas for awhile.

Now changing from religious to caniball type of colony will leave player with a ex-holy person that have still disabled jobs types and/or he might leave the colony. Other colonist will still have special religious trait that will debuff them now only since there is no holy person. This trait will be removed in time.

Thats a general concept, and examples are just a examples.

Before i forget "Sorryz for meh englisz!"

Help / A17 new wall drawing system
May 26, 2017, 03:13:14 AM
A17 did change the walls and wall drawing system, texture atlas size is now 320x320.
Currently each square have 80x80 pix, but here lies the challange, thous extra 8 squares from each side will randomly overlap each other in game, you dont have any controll over it or atleast i didnt find it yet.
As showed on the gif below, area covered with black lines is a overlap area

Hope it will help you guys fix`in stuff
Bugs / [A16]Objects lacking blueprintdef and framedef
December 27, 2016, 04:37:26 AM
Buildable objects that dont have designation category in xml, dont generate blueprintDef and frameDef. Make GenConstruct or functions that use def.blueprintDef or def.frame go null reference.
Bugs / Steam offline mode mods problem
September 03, 2016, 09:49:46 AM
So with latest version(didnt try it on prev),  launching game with steam offline mode make all mods downloaded from steam workshop unsuable.
Help / [Solved]Main thread graphic load issue
July 31, 2016, 05:05:30 PM
I got a fuction that is in ticker and each 100 ticks it looks for a thing and store that thing colors in variables.
Now my issue is that it generates a error.
Tried to get a resource "Clutter/Structure/SilverWall" from a different thread. All resources must be loaded in the main thread.
Tried to get a resource "Clutter/Structure/SilverWall_m" from a different thread. All resources must be loaded in the main thread.

So the issue was fixed by adding  LongEventHandler.ExecuteWhenFinished to launch it from the ticker.
Thing is i dont know much about LongEventHandler.ExecuteWhenFinished and how viable is it to use it in a ticker.
Or maybe some other ways to get stuff/colors from a Thing class variable, since my current method looks like
color1 = thing.Graphic.color

Need Coffie Help

Bugs / [A14 Steam] Very Minor bug- Icon
July 17, 2016, 04:33:31 AM
Steam creates  shortcut icon on desktop which looks very well blurry.
To compare to the a13 icon. It do look worse on actuall screen

Bugs / CompProperties_Facility
May 05, 2016, 10:57:26 AM
In CompProperties_Facility xml part
This part dont work unless its 0, any other value is ignored and basicly any number of things can be connected to recive stat modifiers
Ideas / 2,5 altitude
March 08, 2016, 03:03:37 PM

Engie nows use base alitude, which is the same for all cells in the game, this allows engie hair to be shown on wall, now if i change wall altitude to pawn or mote, engie hair will not be shown on wall or it my be shown on wall or it may clip.

This brings me to the problem of cell altitude, if altitudes would have row priority for one ther wouldnt need to be so much altitudes and for two making object that are higher that thier own cell and not to have wierd graphical glitches would be easier.

What i mean is that if a wall have altitude of buildingTall and i place another wall in under that wall(lower row), the one lower would have more priority of draw than the one higher, so if that wall uses like drawSize of 2,2 it will be drawe over the one in the higher row, which would make kida 2,5-3d effects easier to make.
Ofc this wouldnt work with between altides that are not the same hight, so a Waist altitude wont have draw priority over BuildingTall altitude .

I know that my english sux so if you have any question shot shinzy and ask questions here :D

[Rest of mods is under construction :D]

Clutter Structures v2.1(1.0):
Adds walls and fences, slightly changed graphic for vanilia walls

Clutter Windows v1.2(1.0):
Adds windows

Clutter Door Stuff v1.5(1.0):
Adds a locking and permission system to doors, also new graphic visuals

Clutter Hands (1.0):
Add hands to characters that hold a weapon

General Nexus Mod Dowload [Not working yet]


Architect showing me the basic of cooding, can be blamed for how clutter end up :D
Fisty & darcclan
MsMeiriona for translating from morfish to english!
Ekie(1000101) For being afk all the time
FurryMan(Fluffy) For making things even fluffier
Haplo Man that survived my constant pestering and helped me learn codding
Zhentar Fridge mechnic
Sefin Additional bed textures
Tiltos Clutter furniture official 4th english translation :D
Mehni Testing stuff and ideas

Love for trolling meh out of my hibernation(its not lazy)
slack trolls
and many more that i did actually forgot and will add in time ^^

Mole squierrls
-Windows Defender-For some odd reason windows defender detect clutter furniture to have viruses, im not sure why. If its any other antivirus software that detect something please post, if its only windows defender dont bother.
Also if your still worried, use nexus download, nexus do a extensive antivirus scans on every file before its availble to download.

Chopping license(Mod Licence):
Ask and you shall recive, unless you dont :D
If you dont keep in mind that all mods on the forum are under Ludeon licence

Coffie counter:

[August 06, 2017]
Windows are back with some improvments, check Spoilerz post for more info.
Clutter Structure main was fixed to not show that annoying error for windows.

[July 29, 2017]
Chopping has began, Door are now as a seperate mod with some additional UMF!.
Check Spoilerz for more info.

Im not a native english speaker, so if your a grammar nazi get your ass to work and write me proper translation.

Edited 87 Bazilion times, i counted !
Help / minifield detection
August 30, 2015, 07:31:19 AM
I want make my thing to change its texture when its in minifield, anyone know how to do that?
Cant find a way to detect if object is in minifield, also i didnt test it yet but do the thing ticker work while its in minifield ?
Mods / Looking for stories or writes
July 13, 2015, 06:29:17 PM

So i did my small update with a bookshelf of which im very proud off :D
But it require some imagination or some writing skills, of both im kinda lacking...
Currently got 3 randome stories abrexus found for me on internet :p
So im looking for some one that could write a story or a few in short sentences, like the one on the screen, prefably from rimworld lore but its more as a preference than a requirement.

This is a general format i did use with lenght which on generall works, thrugh one or two lines might be to long
<li>It was a dark and stormy night.</li>
<li> Suddenly, a shot rang out!</li>
<li>A door slammed.</li>
<li>The maid screamed.</li>
<li>Suddenly, a pirate ship appeared on the horizon!</li>
<li>While millions of people were starving, the king lived in luxury.</li>
<li>Meanwhile, on a small farm in Kansas, a boy was growing up.</li>
<li>A light snow was falling....</li>
<li>and the little girl with the tattered shawl had not sold a violet all day.</li>
<li>At that very moment...</li>
<li>a young intern at City Hospital was making an important discovery.</li>
<li>The mysterious patient in Room 213 had finally awakened</li>
<li>She moaned softly</li>
<li>Could it be that she was the sister of the boy in Kansas...</li>
<li>who loved the girl with the tattered shawl</li>
<li>who was the daughter of the maid who had escaped from the pirates?</li>
<li>The intern frowned.</li>

Ofc authors will get the credit and thier own books  money from books sales and luxery golden squieelr. :D

Forgot to add stories need min. 7 lines
Help / Job_Driver/Toil FailConditions
July 10, 2015, 04:22:41 AM
Imagine you best colonist is just carrying a proton driver canister, when all of the sudden colony gets attack by the swarm of evil trans squieelrs overloards! Now you need to draft your colonist for swift (tactical) retreat, but then he will drop the proton driver canister which will ruin his best shooes and prapobly his last socks! Thats a hard choice.

So i wanted to make canister destroy itself  or run a action/method when colonist  job is interupted, is it possible to do that from withing a job fail conditions or other ways ?
Keep in mind that canister is just like your favorite potato salad(without frying brain part), so it dont destroy itself on normal drop(resource).
Bugs / A11b Recruting problem
July 07, 2015, 08:35:14 AM
If a prisoner dont have a leg and colonist will try to recruit him a error of "more than 10 jobs a tick" occur
Help / [Solved]StatModifiers
May 20, 2015, 05:19:36 PM
So using my higher brain function i did drink whole coffie cup in 7 sec, it was HOT ...
Anyways if you scout ThingDef class there is saved stuff and there is not saved stuff.
So from my play with turrets verb i did found out that verb is not saved, and thus only works for current map and not the whole client.

Now i want to change the max health of my building, i know there is a way with stat base and got it working, but it require a ticker to check it, or additional code in building class(i know this sounds lazy :D)

Anyways im wondering if using something from that unsaved part i can change health of my building. Im mostly hanged on stuff system atm, since if you check in game item info you see that base health is X but current health is Y becouse of modifier from material.
So now im wondering if i can add another stat modifier to this via code that will affect it.

EDIT: Solved thanks to MarvinKosh code :D

Help / [Help]One to rule them all
April 29, 2015, 07:55:39 AM
So i was wondering if any one knows how do power button works with multi select, since my goal is to make similar button but i kinda stuck on that multi select part :P
Help / (Solved)Stuck in doors
April 22, 2015, 02:40:50 PM
Was doing last test before realese and i found wierd thing. My door didnt hold roof or count as a wall for some odd reason.
So if i place them in a wall the room still count as outside. After 2h well im spamming here since i just run out of ideas, hope you guys got any ideas

This is the door dll.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEngine;
using Verse.AI;
using Verse;
using Verse.Sound;
using RimWorld;

namespace Clutter
    class Doors : Building_Door
        private Graphic DoorMat_X;
        private Graphic DoorMat_Y;
        private Graphic DoorMat;
        private static Texture2D WorkProper;
        private static Texture2D DoorWF;
        private static Texture2D DoorNF;
        public Rot4 DoorCurRot;
        private bool FrameActive = false;
        private int Counter = 0;
        private Thing DoorFrameCheck
              return childDoorFrame;

        private Thing WallLinkCheck
              return childWallLinker;

        private Thing childDoorFrame = null;
        private Thing childWallLinker = null;

        private const string DoorFrameDefName = "ReinforcedDoorFrame";
        private const string WallLinkerDefName = "DoorLinker";
        private int VisualTicksToOpen
                return this.TicksToOpenNow;

        // Texture switch

        public override Graphic Graphic
                if (this.Rotation == Rot4.North)
                    DoorMat = DoorMat_X;
                if (this.Rotation == Rot4.East)
                    DoorMat = DoorMat_Y;
                return DoorMat;

        public override void SpawnSetup()
            Doors.WorkProper = ContentFinder<Texture2D>.Get("Clutter/Ui/Work_ico", true);
            Doors.DoorWF = ContentFinder<Texture2D>.Get("Clutter/Ui/DoorWithFrame_Ico", true);
            Doors.DoorNF = ContentFinder<Texture2D>.Get("Clutter/Ui/Door_Ico", true);
            DoorMat_X = GraphicDatabase.Get<Graphic_Single>("Clutter/Structure/Door_X",this.def.shader);
            DoorMat_X.drawSize = this.def.DrawSize;
            // = "Transparent";
            DoorMat_Y = GraphicDatabase.Get<Graphic_Single>("Clutter/Structure/Door_Y",this.def.shader);
            DoorMat_Y.drawSize = this.def.DrawSize;
            DoorCurRot = this.Rotation;

            if (this.Rotation == Rot4.North)
                DoorMat = DoorMat_X;
            else if (this.Rotation == Rot4.East)
                DoorMat = DoorMat_Y;


        public override void ExposeData()
            Scribe_Values.LookValue<bool>(ref FrameActive, "FrameActive");
            Scribe_Values.LookValue<Rot4>(ref DoorCurRot, "CurrentRotation");
            Scribe_Values.LookValue<int>(ref this.Counter, "Counter");
            Scribe_References.LookReference<Thing>(ref childDoorFrame, "childDoorFrame");
            Scribe_References.LookReference<Thing>(ref childWallLinker, "childWallLinker");


        public override void Tick()

            if (Counter > 0)
                if (Counter <= 1)
                    FrameActive = !FrameActive;
                Counter -= 1;

            if (this.Destroyed)

            if (this.childDoorFrame != null)
            if (this.childWallLinker != null)
                if (this.childWallLinker.Destroyed)

        // Frame check and spawn
        private void DoorFrameSpawner()

            if ((childDoorFrame == null || childDoorFrame.Destroyed) && FrameActive)
                childDoorFrame = GenSpawn.Spawn(ThingDef.Named(DoorFrameDefName), Position);
            if (childDoorFrame != null && !childDoorFrame.Destroyed && !FrameActive)
                //childDoorFrame = null;


        // Door Rotation Check
        //private void CheckRot()
        //    if (DoorCurRot != this.Rotation)
        //    {

        //        if (this.Rotation == Rot4.North || this.Rotation == Rot4.South)
        //        {
        //            DoorMat = DoorMat_X;
        //        }
        //        else if (this.Rotation == Rot4.East || this.Rotation == Rot4.West)
        //        {
        //            DoorMat = DoorMat_Y;
        //        }
        //        DoorCurRot = this.Rotation;

        //    }

        //Wall Linker Spawn and Destroy
        public void WallLinker()

            if ((childWallLinker == null || childWallLinker.Destroyed) && FrameActive)
                childWallLinker = GenSpawn.Spawn(ThingDef.Named(WallLinkerDefName), Position);

            if (childWallLinker != null && !childWallLinker.Destroyed && !FrameActive)


        // Wierd door thing ....
        //public override void Draw()
        //    if (this.Locked)
        //    {
        //        OverlayDrawer.DrawOverlay(this, OverlayTypes.Locked);
        //    }
        //    base.Rotation = Building_Door.DoorRotationAt(base.Position);
        //    float num = (float)this.visualTicksOpen / (float)this.VisualTicksToOpen;
        //    float d = 0f + 0.5f * num;
        //    for (int i = 0; i < 2; i++)
        //    {
        //        Vector3 vector = default(Vector3);
        //        Mesh mesh;

        //        if (i == 0)
        //        {
        //            vector = new Vector3(0f, 0f, -1f);
        //            mesh = MeshPool.plane10;
        //        }
        //        else
        //        {
        //            vector = new Vector3(0f, 0f, 1f);
        //            mesh = MeshPool.plane10Flip;
        //        }

        //        Rot4 rotation = base.Rotation;
        //        rotation.Rotate(RotationDirection.Clockwise);
        //        vector = rotation.AsQuat * vector;
        //        Vector3 vector2 = this.DrawPos;
        //        vector2.y = Altitudes.AltitudeFor(AltitudeLayer.DoorMoveable);
        //        vector2 += vector * d;
        //        Graphics.DrawMesh(mesh, vector2, this.Rotation.AsQuat, this.Graphic.MatAt(base.Rotation, null), 0);

        //    }


        public override IEnumerable<Gizmo> GetGizmos()

            IList<Gizmo> list = new List<Gizmo>();
            Command_Action command_Action = new Command_Action();
            if (FrameActive && Counter <= 0)

                command_Action.icon = Doors.DoorNF;
                command_Action.defaultDesc = "Frame Off";
                command_Action.activateSound = SoundDef.Named("Click");
                command_Action.action = new Action(this.FrameSwitch);
                command_Action.groupKey = 887767541;
                command_Action.hotKey = KeyBindingDefOf.Misc1;

            else if(!FrameActive && Counter <= 0)

                command_Action.icon = Doors.DoorNF;
                command_Action.defaultDesc = "Frame On";
                command_Action.activateSound = SoundDef.Named("Click");
                command_Action.action = new Action(this.FrameSwitch);
                command_Action.groupKey = 887767542;
                command_Action.hotKey = KeyBindingDefOf.Misc1;

            else if (Counter > 0)

                command_Action.icon = Doors.WorkProper;
                command_Action.action = new Action(this.FrameSwitch);
                command_Action.defaultDesc = "Working";
                command_Action.groupKey = 887767543;
                command_Action.hotKey = KeyBindingDefOf.Misc1;

            IEnumerable<Gizmo> commands = base.GetGizmos();
            return (commands == null) ? list.AsEnumerable<Gizmo>() : list.AsEnumerable<Gizmo>().Concat(commands);


        // Frame Switch Couter
        private void FrameSwitch()
            if (Counter <= 0)
                Counter = 500; // 1000;

        // Da Comfy Strings   
        public override string GetInspectString()

            StringBuilder stringBuilder = new StringBuilder();
            if (Counter > 0)
                stringBuilder.Append("Working: " + Counter);

            return stringBuilder.ToString();

        //Puff stuff
        public void PuffThing()

            for (int i = 0; i < 20; i++)
                MoteThrower.ThrowAirPuffUp(this.DrawPos); ;

        //Self Own
        public override void Destroy(DestroyMode mode = DestroyMode.Vanish)
            if (WallLinkCheck != null && !WallLinkCheck.Destroyed)

            if (DoorFrameCheck != null && !DoorFrameCheck.Destroyed)




This is the door xml

<!--========================= Door =============================-->
   <ThingDef ParentName="BuildingBase" >
    <label>Reinforced Door</label>
    <description>With few pieces of metal added, they seem a bit more durable.</description>
Unfinished / (Put Down)Project Armory Addon
April 13, 2015, 05:43:58 PM
Was redone as modders resource, current working version can be found here, named Weapons and Stuff

Im making a addon for project armory, that allows guns to use special ammo and since evul is kinda very busy i need help with testing this.
Current state is stable atleast i didnt find any problems with it(thats what is worring me the most).
So if any one is able to do some guns with new options and test them if there are some errors or other wierd issues i would appreciate.
Here is the link (Updated to A10)
There is HowTo.xml inside the mod folder with detail regarding new options.

General Discussion / Ancient Age
April 04, 2015, 04:54:24 AM
This just tells everything
First bug is that  Graphic_Random forces stuff mask textures, without them it will spam with red messages in console.
Compare Graphic_Single which if mask texture is not present use overlay on entire texture and not spam in console.

Second bug is that if add  mask textures to the Graphic_Random folder it will use them  in stuff system correctly but will also use them as normal textures.

Graphic_Flicker if i use it on projectile for some odd reason it require png with directory name and png from weapon graphic path even thrugh its diffrent def
Help / [Help]XML <ResearchMod>
March 28, 2015, 04:01:20 AM
So from purly xml stand point is it possible to change <MaxHealth> with research mod?
Or do i need to do it in dll ?