181 ratings
Outfits explained
By antales
Seeing some interest in character modding we decided to provide a simple explanation for the outfit system used in our game.
Outfit entity
1. There is an entity called Outfit. Each has its own name. Outfits are independent from each other. Outfit definition can be spread across multiple files. All the .outfit files loaded then merged by the outfit name inside them. So if you have two .outfit files, but the corresponding outfit names are the same - they are merged as a single outfit entity.

2. Each outfit has its own setup with different slots. Each slot is identified by its name and its value. Each time every slot has a single value. This values can be seen in the outfit menu (Hands, Head etc.). Slots are not defined directly, but the information about them is gathered from all the outfit (current outfit) components.

3. Outfits have components. The components are meshes and ragdolls. They are attached to player skeleton if their conditions are met (i.e. they are active). There are 4 predefined conditions and some slot conditions (commonly a single one).

4. Ragdoll components are defined by the only asset - the ragdoll asset and its path.

5. Mesh components are defined by three assets: mesh, skin and material. There is a special case in which there is no material asset used. Instead there is a line "clock true;". It means that a procedural material "health clock" (back of the head) is used.
So, there are 4 predefined conditions and some slot conditions (commonly a single one).

1. Slot condition define for which slot and which value this component would be active. Here is the place where slot info is gathered. If there is more than one slot condition - they all must be valid for the component to be active (logical multiplication).

2. Predefined conditions are boolean values which could be true or false. They are: jacket/nojacket (if armor breastplate is on/off), mask/nomask (if respirator mask is on/off), visor/novisor (if night-vision device is on/off). Also a common condition for compatibility purposes (means nojacket + nomask + novisor). They are merged as a logical addition (if any of them is met - the whole is met). Predefined conditions are mandatory. If you do not define them they are considered false.

3. Final active state of the component is defined as a logical multiplication of predefined conditions result and slot conditions result. If either of them is false then component is inactive.
For example I want to expand the outfit Nude with new hair style "Bayo". Also, I want to use different meshes in case the visor in on. How can I do that:

1. Create new folder "Outfits\HairBayo". Place there mesh, skin, and material.
2. Create new file "Outfits\HairBayo.outfit" containing this:

HD_DATA_TXT 300 outfit { name "Nude"; mesh { mesh "Outfits\HairBayo\HairBayo.mesh"; skin "Outfits\HairBayo\HairBayo.skin"; material "Outfits\HairBayo\HairBayo.mtl"; novisor true; slot "Hair" "Bayo"; } mesh { mesh "Outfits\HairBayo\HairBayoVisor.mesh"; skin "Outfits\HairBayo\HairBayoVisor.skin"; material "Outfits\HairBayo\HairBayo.mtl"; visor true; slot "Hair" "Bayo"; } }

3. That's all.
So there is no obligation to gather all the outfit information in a single file. For example, if you have new skin color component for a body or new hairstyle - it is easier to just create a new file containing your new meshes with desired outfit name. Also you can use new folders to store new meshes and new textures/materials. However, remember, they must be unique.

Best of luck in your modding endeavors.
IndianaDucky Jun 6, 2020 @ 3:16pm 
Would love to make an animated steam library icon for your next game! :launchpad:
Lynx May 16, 2018 @ 8:52am 
Okay. Thanks! I'll contact the author.
antales  [author] May 16, 2018 @ 4:09am 
Technically you can extract outfit data from the mod .pack file, make a copy, rename it, reconfigure and use it as you wish. But it is better to contact author first :)
Lynx May 15, 2018 @ 4:04pm 
Well, that's beyond my skills. Thank you for your reply.

I was just hoping it could be added as an option, as some of the outfit mods I've subscribed to have that option. I guess I just don't understand how that works.

Thanks again for your time and replies!
antales  [author] May 15, 2018 @ 2:31pm 
Unfortunately you can't add such an option. It's either shows or not. You need another outfit without the vest.
Lynx May 15, 2018 @ 6:26am 
Thank you for your reply!

The one I'm talking about (Simple Thin Haydee) already has a vest that shows when she gets one and puts it on. I'd just like to be able to have an option for it to show or not show. Is that possible, or would it be better to ask the mod creator to add that option in?

Thanks again!
antales  [author] May 15, 2018 @ 1:01am 
Yes, you can. Outfits could be described through multiple files. Game automaticaly merge them if they have the same name value. It would be "Nude" in the example above. So all you need is to create a new outfit file, set target name to it and add some meshes with conditions. However, there could be a problem, because you can not remove meshes already present in the source outfit. So if it has a mesh with animated breasts, you vest must follow that animation and cover them.
Lynx May 14, 2018 @ 9:13pm 
Is it possible to do something like this to add an option to an existing outfit? For example, I'm subscribed to an outfit mod, but it doesn't have an option to have the vest show or not. Is it possible to be able to add something like that in? If so, how would that be done? Example: I'd like to add a "Show Vest" option that can be set to "On" or "Off".

notroger Feb 21, 2018 @ 2:26am 
// works, thanks!
antales  [author] Feb 21, 2018 @ 2:22am 
// should work