Clothes selected via layer instead of by full outfit

Started by Mikhail Reign, April 24, 2015, 12:50:18 PM

Previous topic - Next topic

Mikhail Reign

*Edit* I realised that this was in General instead of Suggestions, so I recreated it over here. Dunno how to delete threads, so any devs...

Currently the way clothes are selected is kinda broken - there is no way to have a colonist wear something, and if that isn't available wear something else, as well as the minimum quality requirement slider being somewhat useless.

A great example of this would be: I want my melee guys to wear power armour and helmet, and if that isn't available wear a cowboy hat and duster. Now most colonies produce their own clothes, meaning that after a little while your tailor will be pumping out some masterwork and legendary cowboy hats meaning that colonists will prefer these over any power armour that you have available unless you are both extremely lucky and extremely rich. Since armour is worth wearing at any quality level, it also means that there is no reason to have the minimum slider to be used at all, unless of course you WANT colonists to not wear that poor armour vest and just commando it against bullets - this also applied to pants (and shirts in the case of girl. side note; did females always get the naked debuff for not wearing a shirt?). You can tell your colonists 'don't wear clothes of lower then normal quality, meaning that unless you have spare clothes of that quality or higher, you could end up with colonists running around without pants even if there were some, abit bad quality one, laying around.

What I suggest is instead of the current outfit system, clothes would be selected via layer, with a quality slider for each article of clothing. How this would look is similar to the bills tab for tailors tables in regards to priority. They would look for anything that would fit the highest priority 'clothing bill', and if nothing fit that, then look at the next one down and so on and so forth for each layer. This system would mean that it would be quiet easy to also include a 'type' (similar to how which leather is to be used is chosen in the tailor bill) I could then set for example my winter melee outfit:

Powerarmour helmet - quality Poor to Legendary; 50-100% hp
Cowboy hat - quality Superior to Legendary, 50-100% hp; boomrat, alphabeaver or squirrel

Middle layer
Powerarmour - quality Poor to Legendary, 50-100% hp
Duster - quality Superior to Legendary, 50-100% hp; boomrat, alphabeaver or squirrel

Top Layer
Buttom up shirt - quality Superior to Legendary, 50-100% hp; Devilstrand
Shirt - quality all, 50-100% hp, all

Pants - quality Superior to Legendary, 50-100% hp, Devilstrand
Pants - quality all, 50-100% hp, all

To use the example above, the colonist would look for a power armour helmet, power armour and a button up tshirt and pants made of Devilstrand first, but if they failed to find any one of those items, they would look for the next one on the list, with the bare minimum, wearing pants and shirt of above 50% hp of any quality.

So just to clarify it would read the same way as a tailor bill list - highest priority at the top, lowest at the bottom, and the pawns would just read down through the list of each layer until they found something that they could wear. This would also mean that you could put at the bottom of the prioritys 'bare minimum' items; a great example being a 'clothing bill' allowing colonists to wear almost anything to ensure that they didn't get the naked, or tattered clothing debuf.

Also, additionally, a way to group select change outfits. Clicking through the list of colonists to move from winter to summer is a pretty big pain, when really all I want to do is >select all>winter



I agree the slider is of limited use and the filtering system, not quite ready. It's Alpha, after all! :P

I quite like the idea of layers: create your clothing collections and then these would give a mask to filter out the available stockpile items ( Ooops, professional deformation :D), but don't know if/how complex it would be to program it in the current state of the game.

Also, what should trigger the change and how frequent should it change, is a question.
- On Notif event: a new item arrives in the stockpile?
- On Reset event: after applying the layer?
- On Timer event: regularly every day?

I just saw that a game mechanic automatically ordered my 3 existing clothing groups to check for/equip with a Parka, when temp. went down under 0C (or was it a calendar trigger, I cannot be sure). Interesting!
<Stay on the scene like a State machine>

Mikhail Reign

Currently I think that pawns actually check to see if their clothes fit the criteria that you have made every few ticks - someone else pointed out that giving the user the ability to make somewhat complex checks, and having those check occur at the rate they do now could impact performance. My suggestion to solve this problem is to have the pawns only check clothes occasionally, for example when they wake up, or only once for each Anytime schedule block or something to that nature.


Yes, if the ticks are the current reference, it would makes sense to have it realistically spaced so that it could be playable!
I'd extend the thought to the planner idea you had: have the search linked to the "free time" block begin, in async. This way it would not happen during work and it could be planned, in case of shift work (previous night tailoring trends becomes today's fashion :D)
<Stay on the scene like a State machine>



it was me that raised the performance question. Unfortunately it still applies somewhat even if the ticks are spaced apart, you dont want to have any noticable freezes whike the game runs through the logic to check for clothes, so even a single large complex query coukd cause issues. As i said before i support this idea but itll need to be a really good solution, unless im overestimating how complex these checks could get...
Skullywag modded to death.
I'd never met an iterator I liked....until Zhentar saved me.
Why Unity5, WHY do you forsake me?


Ok and you're right to do so. That's why I was straight on talking about "Triggers" for such a feature.
Maybe, the engine would lock + snapshot the complete state once not too regularly (possibly once at the beginning of each hour) and then, you'd compare equipment of each instance against the snapshot individually, starting the comparison in async (no other query), Then using the existing concurrency system against stockpiles (based on reservation?).
The thing is: the program is time-based here, we even have this Time Schedule now...

Interesting to try to think these as being technically possible. I am interested to know how the game is dealing with stockpile management, in a technical point of view (queues, stacks, locking, event notification and so on)
<Stay on the scene like a State machine>

Mikhail Reign

... That said the game is constantly checking the contents of stockpiles, and now that we have filters, checking both the condition and quality so I don't see that check being any different to a clothing check, and the game seems to hand that just fine.