Published: ?? by manavortex
Last documented update: October 26 2024 by AllKnowingLion
Minimum required ArchiveXL version: 1.5
This page explains how to enable body mod support in ArchiveXL:
#clothing-mods-making-use-of-the-tags
To learn more about body mods, check the overlay-list.md page.
Run the following code snippet in CET to see which body is currently installed:
print(Game.GetScriptableSystemsContainer():Get("PuppetStateSystem"):GetBodyTypeSuffix(ItemID.new(), GetPlayer(), nil))
{% hint style="info" %} NOTE
The past method of adding the components to each individual appearance does still work. However, you'll want to use the new method (for version >= 1.14), since it is both more robust and less tedious. {% endhint %}
{% hint style="success" %} Starting with version 1.14, you can use archivexl-resource-patching.md to inject your tags into the existing files!
You can download the template from Nexus, or create one yourself. {% endhint %}
- Create an .xl file in your Wolvenkit Project's resources folder (File -> New file -> ArchiveXL)
- Optional: Name it the same as your current project (e.g. boobs_for_back_problems.archive.xl)
- Put the following file content:
player:
bodyTypes: [ NewBody ] # for substitutions, this will be converted
# to snake case: new_body
We'll make use of archivexl-resource-patching.md for this.
If you downloaded the template project, a patch .ent will already be included.
Create your own patch .ent
- In Wolvenkit, select File -> New File
- Scroll down the menu until you find the one with the extension
.ent
(should be EntEntityTemplate) - Add a new, blank EntEntityTemplate to your project
- Give it a good name and move it somewhere
- Open the file and select the
components
array - Add a new
entMeshComponent
and name itBody:YourBodyTag
- Now, proceed with the rest of the guide
- Inside the patch .ent, find the
entMeshComponent
under thecomponents
array. - Change its
name
to match your body mod, e.g.Body:BoobsForBackProblems
->Body:NewBody
Make sure that your patch .ent is added to the game by telling ArchiveXL about it. Add the following block to your .xl
file:
resource:
patch:
path\to\your\patch_file.ent:
- !include player_wa.ent
- !include player_ma.ent
Include only the relevant body gender!
That's it, everything should work now! Let's test.
- Install your project
- Launch the game and load into a save
- check if the body tag registers by running the CET command.
If yes: Congratulations, you've made it much easier for people to add refits for your body!
The process is so simple that there aren't many things to go wrong:
- Update ArchiveXL
- Double-check your
.yaml
via yamllint and make sure you don't have syntax errors (indent matters) - Check ArchiveXL's log file
If that doesn't work, check if the component gets added correctly. There are two ways to do this:
print(GetPlayer():FindComponentByName("Body:NewBody"))
If that still doesn't work, consider using the template from Nexus, which has been tried and tested on May 18 2024 with ArchiveXL
Make sure that your mesh has appearances and materials. If you are using archivexl-resource-patching.md, it's easy to forget a new body's mesh in the list like a gonk. This has never happened to the author, by the way.
Even with the AKL AutoRefitter, the process of supporting body mods is tedious. And even worse: you then have to pack everything separately for Nexus:
Realistic refitting experience
If a mod supports body tags, ArchiveXL can detect the current body mod, and conditionally load the correct mesh. Now, everything can be put into a single .archive!
If you're using dynamic appearances, you don't need to register a suffix and can simply match or substitute for the body tag:
appearance name:
t0_recoloured_netrunner_suit&body=new_body
substitution:
*my\mod\meshes\p{gender}a_netrunning_suit_{body}.mesh
{% hint style="warning" %}
If no body mod is installed, the value will be base_body
, so make sure to name your files and folders accordingly!
{% endhint %}
If you're sticking to the classical approach, you need to add the following lines to your .yaml
:
appearanceSuffixes:
- !append itemsFactoryAppearanceSuffix.BodyType
Now, you can use the suffixes in your root entity just like camera states or body genders:
appearanceName: my_custom_shirt&FPP&NewBody
The following body mods support dynamic body switching.
{% hint style="info" %} If you know something that should be on the list, please edit the-wiki! {% endhint %}
{% hint style="warning" %} As of 18th March 2024, Nim's More Body Meshes is compatible again with Gymfiend Body Mod.
Use only one main archive! [#_nim_more_body_meshes_Gymfiend_patch.archive] {% endhint %}
Mod | Tag name | substitution value |
---|---|---|
KS Lion's Lush Body | Lush | &body=lush |
KS Lion's SoLush Body | Lush | &body=lush |
KS Solo Ultimate | Ult | &body=ult |
KS Solo 2.0 | Solo_OG | &body=solo_og |
Solo Arms (v1.8.1) | SoloArms | &body=soloarms |
KS Songbird 2.0 | Song2 | &body=song2 |
Hyst's Angel Body Mod | Angel | &body=angel |
Hyst's Big Butt | RB | &body=rb |
Hyst's Big Boobs | EBB | &body=ebb |
Hyst's Big Push Up Boobs | EBBP | &body=ebbp |
Hyst's Big Boobs & Butt | EBBRB | &body=ebbrb |
Hyst's Big Push Up Boobs & Butt | EBBPRB | &body=ebbprb |
Gymfiend | Gymfiend | &body=gymfiend |
-KS- Adonis | Adonis | &body=adonis |
Na's Flat Chest | Flat | &body=flat |
-KS- Atlas | Atlas | &body=atlas |