ArchiveXL: body mods and refits

Starting with version 1.5, Archive XL supports tags for body mods ! That means, no more compatibility archives, since AXL can simply load different meshes for you…

Body type detection works with simple body replacements and with the character creator extensions (customization system).

Checking the current body mod

Run the following code snippet in CET to see which body type you have installed:

print(Game.GetScriptableSystemsContainer():Get("PuppetStateSystem"):GetBodyTypeSuffix(ItemID.new(), GetPlayer(), nil))

Body modders: Adding support

Adding an .xl configuration file

  1. Create an .xl file in your Wolvenkit Project's resources folder

  2. Optional, but recommended: Give it the same name as your Wolvenkit project

  3. Put the following file content:

player:
  bodyTypes: [ NewBody ]  # this will be converted to snake case: new_body

Register the body mod in the .archive

In any of the files you modded, check your components:

Does any of them have a type that's called something with morphtargetComponent?

Yes: Add a tag with the exact name of your body in this component's tag array (for our example, NewBody)

No: Add a new component (of any type) and give it the following name: Body:NewBody

If you edit the leg component for female V, you must change both the regular and the flat feet component: base\characters\common\player_base_bodies\appearances\l0_000_base__full.app base\characters\common\player_base_bodies\appearances\l0_000_base__cs_flat.app

If you can't make it work

The files below have been confirmed to work — make the changes stated above to each of them:

base\characters\common\player_base_bodies\appearances\l0_000_base__cs_flat.app
base\characters\common\player_base_bodies\appearances\l0_000_base__full.app
base\characters\common\player_base_bodies\appearances\l0_000_base_fpp__cs_flat.app
base\characters\common\player_base_bodies\appearances\l0_000_base_fpp__full.app 

The following .app files are used to register Body Tags for Male V:

base\characters\common\player_base_bodies\appearances\t0_000_base__full.app
base\characters\common\player_base_bodies\appearances\t0_000_base__full_censored.app
base\characters\common\player_base_bodies\appearances\t0_000_fpp__full.app
base\characters\common\player_base_bodies\appearances\t0_000_fpp__full_censored.app

Test

After packing your project, check if the body tag registers by running the CET command.

If yes, you're good to go!

If not and you have used a component, you can check if the component is added to the playerPuppet by checking RedHotTools:

Clothing mods: Making use of the tags

Dynamic Appearances

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

If no body mod is installed, the value will be base_body, so make sure to name your files and folders accordingly!

Suffixes

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

Supporting mods

The following body mods support dynamic body switching.

If you know something that should be on the list, please edit The wiki!

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]

ModTag namesubstitution value

Lush

&body=lush

Lush

&body=lush

Ult

&body=ult

RB

&body=rb

EBB

&body=ebb

EBBP

&body=ebbp

EBBRB

&body=ebbrb

EBBPRB

&body=ebbprb

Gymfiend

&body=gymfiend

Last updated