-
Notifications
You must be signed in to change notification settings - Fork 0
5. Merged Files
To begin discussing merged files is to set an understanding about them. They are required for any LSFX to work, yet at the same time, they are merely a brief summary reference to the LSFX information. So let's dig in.
As with all files using the XML
Language, it needs to be set up properly. In the case of Merged files, your starting point is here:
<?xml version="1.0" encoding="utf-8"?>
<save>
<version major="4" minor="0" revision="9" build="0" lslib_meta="v1,bswap_guids" />
<region id="EffectBank">
<node id="EffectBank">
<children>
The set up is the same as your RootTemplate and MEI files, except for one difference. In this case, your region id
and core node id
values will be "EffectBank
. Of course, as always, close your tags.
Now let's take a look at the rest of a merged file.
<node id="Resource">
<attribute id="BoundsMax" type="fvec3" value="3 5 3" />
<attribute id="BoundsMin" type="fvec3" value="-3 -1 -3" />
<attribute id="Center" type="fvec3" value="0 2 0" />
<attribute id="CullingDistance" type="float" value="0" />
<attribute id="Duration" type="float" value="6.999999" />
<attribute id="EffectName" type="FixedString" value="VFX_Spells_Cast_Intent_Warlock_Necrotic_ShoutAoe_ArmsOfHadar_BodyFX_01" />
<attribute id="ID" type="FixedString" value="0757e6ed-36ee-0e8e-1885-6302478afca5" />
<attribute id="Initialized" type="bool" value="True" />
<attribute id="InterruptionMode" type="uint32" value="0" />
<attribute id="Localized" type="bool" value="False" />
<attribute id="Looping" type="bool" value="False" />
<attribute id="Name" type="LSString" value="VFX_Spells_Cast_Intent_Warlock_Necrotic_ShoutAoe_ArmsOfHadar_BodyFX_01" />
<attribute id="Radius" type="float" value="3" />
<attribute id="SourceFile" type="LSString" value="Public/Shared/Assets/Effects/Effects_Banks/Spells/Cast/Warlock/VFX_Spells_Cast_Intent_Warlock_Necrotic_ShoutAoe_ArmsOfHadar_BodyFX_01.lsfx" />
<attribute id="_OriginalFileVersion_" type="int64" value="144115198813274212" />
<children>
<node id="Dependencies">
<children>
<node id="DependentResource">
<attribute id="Object" type="FixedString" value="d76259d5-8693-a0c0-9377-d04d5222677c" />
</node>
<node id="DependentResource">
<attribute id="Object" type="FixedString" value="54d78b10-5ede-fa84-a8e4-e46076ee3640" />
</node>
<node id="DependentResource">
<attribute id="Object" type="FixedString" value="5333441b-5f77-22f7-f695-e13e6274c686" />
</node>
</children>
</node>
</children>
</node>
Now, of course this looks a little daunting, but don't fret, I'm here to guide you through it.
For the most part, this node functions as a reference for the content inside the LSFX, and mostly doesn't do much else, but we'll cover them anyways.
Below we'll see the definitions of the various attribute id
found throughout the _merged
.
The Bounds Min/Max attribute id
are one set of two references to the size. More specifically, it references the size in terms of X=Horizontal, Y=Vertical, and Z=Depth/Width.
Center is pretty self explanatory as it references the center of the effect placement. In the case of the shown Resource, it'd be located 2m above the source or target.
This refers to how far a particle will travel before it disappears. In the case of 0, it will travel as far as the LSFX defines it.
Another fairly explanatory attribute id
, that tells you how long the effect is intended to last, in seconds.
This is the effect name, plain and simple. It will always be the same as the "Name"
attribute id
. But the Effect name is what you will need to place inside the FX attribute ids
of the RootTemplate.
The ID is, you guessed it, the VFX unique UUID. When making a new effect, always make sure you generate a new one of these. This will get used by the MultiEffectInfos attribute id
EffectResourceGuid
seen here.
Without the UUID you generate here placed there, this is all you will see.
Now, I am not 100% sure, but I believe this defines how the spell gets cancelled. Depending on the type, an incorrect interrupt mode will not let you cancel a spell before casting via Right Click.
I haven't figured this out yet, I believe these are related to non-prepare effects though.
This tells you whether or not the effect will loop. This node will only be true for effects intended with longer durations than the duration of a standard cast, such as a Prepare Effect or Buff/Debuff Effect.
This is the simplified reference to the effect size.
This tells the game where the referenced LSFX is stored. It is very important that this folder path matches the LSFX.
This is just a reference to the game itself. All Merged nodes will have the same exact value as the one shown above.
This is purely a reference that you will find both here and in the LSFX, telling you the UUIDs of the effect components inside the LSFX.
This one is slightly different than the previous file types, as it has to be saved in a very special way.
- The file MUST be saved as
-
_merged.lsf.lsx
if using BG3-Modders-Multitool**](https://github.com/ImmortalRDI/BG3-Community-Library/wiki/1.-Getting-Started#bg3-modders-multitool) -
_merged.lsx
if using lslib and convert it to_merged.lsf
with lslib LSF/LSX Converter.
You can save within a subfolder of
/Effects/
, but the subfolder title must be prefaced with[PAK]_
before the name.
- The file will be saved here:
- Overview
- Sample Projects
- Action Resources
- Spells
- Passives
- Statuses
- Items
- Races
- Classes
- Scripts
- Visual Resources
Setting up a Development Environment (BEING REWRITTEN)
- A Modder's Guide to Git
- Recommended/Required Tools
- Creating Your Folder Structure
- Working with the Repo
- How to Use the Multitool
- Class Descriptions
- Ability Distribution Presets
- Progressions
- Localization
- Abilities, Passives, and Spells
- Passive and Spell Lists
- Custom Equipment
- Class Icons
- Skill Icons (TODO)
- Handling Subclasses (TODO)
- Race Entry
- Root Templates
- Character Visuals
- Character Creation
- Localization
- Racial Feats
- Racial Progressions
- Tags
- Custom Icons