-
Notifications
You must be signed in to change notification settings - Fork 0
4.1. Root Templates
Root Templates, while similar to MultiEffectInfos in many ways, they are also quite different. While an MEI exclusively handles visual effects, a RootTemplate
handles visual effects, sounds, and a variety of other things. You can find RootTemplates
as Items, SpellAnimations
, Trajectories
and more. In this particular section we will be covering Trajectories
.
First things first, does your spell have this data: data "Trajectories" "UUIDHere"
? If not, then this information won't really help you here. You can find trajectories in spell types such as data "SpellType" "Projectile"
or data "SpellType" "Throw"
. It should look a little something like this:
For this guide, we will be covering data "SpellType" "Projectile"
.
For projectiles, we can find trajectories in Missile type spells such as Eldritch Blast (shown above), or even Jump Type Spells, such as:
Now, you'll notice that this particular type of spell has more than one Trajectories
UUID. However, for now, we only need to worry about the first UUID entry. However, before we get into that, we'll use Eldritch Blast as our template for now.
Alright, so the first thing we need to do is establish the spell, as discussed in Effects. Then, just like earlier, we will be Index Searching the trajectory UUID. That will lead us to it's RootTemplate.
and it will pull up something like this.
<node id="GameObjects">
<attribute id="BeamFX" type="FixedString" value="VFX_Spells_Cast_Warlock_ProjectileBeam_EldritchBlast_Beam_01" />
<attribute id="CameraOffset" type="fvec3" value="0 0 0" />
<attribute id="CastBone" type="FixedString" value="Dummy_CastFX" />
<attribute id="CastShadow" type="bool" value="False" />
<attribute id="DetachBeam" type="bool" value="True" />
<attribute id="Flag" type="int32" value="0" />
<attribute id="GroundImpactFX" type="LSString" value="VFX_Spells_Cast_Warlock_ProjectileBeam_EldritchBlast_Impact_Ground_01" />
<attribute id="GroupID" type="uint32" value="0" />
<attribute id="HasGameplayValue" type="bool" value="False" />
<attribute id="ImpactFX" type="FixedString" value="VFX_Spells_Cast_Warlock_ProjectileBeam_EldritchBlast_Impact_01" />
<attribute id="InitialSpeed" type="float" value="180" />
<attribute id="LevelName" type="FixedString" value="" />
<attribute id="LifeTime" type="float" value="20" />
<attribute id="MapKey" type="FixedString" value="3eaf2c46-46a9-4b52-8e05-fae7dc4e548b" />
<attribute id="Name" type="LSString" value="VFX_Projectile_Spell_EldritchBlast_01" />
<attribute id="ParentTemplateId" type="FixedString" value="" />
<attribute id="PhysicsOpenTemplate" type="FixedString" value="" />
<attribute id="PhysicsTemplate" type="FixedString" value="" />
<attribute id="PreviewPathImpactFX" type="FixedString" value="VFX_UI_DestinationBeam_Projectile_01" />
<attribute id="PreviewPathMaterial" type="FixedString" value="312a1494-a0e2-c215-cf51-bda58a6b2341" />
<attribute id="Speed" type="float" value="180" />
<attribute id="TrajectoryType" type="uint8" value="0" />
<attribute id="Type" type="FixedString" value="projectile" />
<attribute id="VelocityMode" type="uint8" value="0" />
<attribute id="VisualTemplate" type="FixedString" value="" />
<attribute id="_OriginalFileVersion_" type="int64" value="144115200960758167" />
<children>
<node id="Bounds">
<children>
<node id="Bound">
<attribute id="Height" type="float" value="0" />
<attribute id="IsIgnoringScale" type="bool" value="False" />
<attribute id="Max" type="fvec3" value="0 0 0" />
<attribute id="Min" type="fvec3" value="0 0 0" />
<attribute id="Radius" type="float" value="0" />
<attribute id="Shape" type="uint8" value="0" />
<attribute id="Type" type="uint8" value="1" />
</node>
<node id="Bound">
<attribute id="Height" type="float" value="0" />
<attribute id="IsIgnoringScale" type="bool" value="False" />
<attribute id="Max" type="fvec3" value="0 0 0" />
<attribute id="Min" type="fvec3" value="0 0 0" />
<attribute id="Radius" type="float" value="0" />
<attribute id="Shape" type="uint8" value="0" />
<attribute id="Type" type="uint8" value="2" />
</node>
<node id="Bound">
<attribute id="Height" type="float" value="0" />
<attribute id="IsIgnoringScale" type="bool" value="False" />
<attribute id="Max" type="fvec3" value="0 0 0" />
<attribute id="Min" type="fvec3" value="0 0 0" />
<attribute id="Radius" type="float" value="0" />
<attribute id="Shape" type="uint8" value="0" />
<attribute id="Type" type="uint8" value="0" />
</node>
</children>
</node>
<node id="GameMaster" />
</children>
</node>
Now, of course, we are right back to another potential problem:
Luckily, we don't need to worry about most of the information in the RootTemplate GameObject
. One thing that does need to be mentioned, however, is that *RootTemplates can come in two forms. One, where it's a singular GameObject
node meant to focus exclusively that particular RootTemplate, or a large collection in a Merged File. Most RootTemplate are now usually found in Merged File, due to changes Larian Studios made in Patch 4, where they organized and restructured a lot of files and folders, to get rid of excess data. So, because of that, that is the file type we will be discussing. However, this will be different from the LSFX Merged Files we will be discussing later.
This part is fairly simple, as it shares a lot of similarities as our MEI File Set Up, with only a few differences.
To begin, the top of our RootTemplate single file or merged, will look like this:
<?xml version="1.0" encoding="utf-8"?>
<save>
<version major="4" minor="0" revision="9" build="0" lslib_meta="v1,bswap_guids" />
<region id="Templates">
<node id="Templates">
<children>
<node id="GameObjects">
The only real key differences here are taht the region id
and the master node id
are "Templates"
instead of "MultiEffectInfos"
, and that our node id
for the RootTemplate Effect is referred to as a "GameObjects"
rather than "EffectInfo"
.
In the case of RootTemplates, at least for Visual Effects editing, you won't actually need to worry about the majority of the attribute ids. The only ones you really need to focus on are:
- MapKey
- Name
- TrailFX
- BeamFX
- ImpactFX
- GroundImpactFX
- CastBone
- InitialSpeed
- Speed
- LifeTime
- DetachBeam
- CastShadow
Continued on 4.2. Root Templates (Cot'd)
- 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