Mod Set‐Up - BG3-Community-Library-Team/OathFramework GitHub Wiki

Mod Set-Up

First thing's first, we need to set up our mod. Chances are, by the time you're looking Oath Framework, you have your Paladin mod set-up already. You will need to make sure you have the following files set up though:

  1. Your Class Tag (Public/ModName/Tags/uuid.lsf.lsx)
  2. Your Oathbreaking Class Tag (Public/ModName/Tags/uuid.lsf.lsx)
  3. Your Oathbreaker Event Flag (Public/Shared/Flags/uuid.lsf.lsx)

_(Replacing uuid with a brand new UUID that will also be used in the file's UUID field.

Tags

Note: This is unnecessary if you're just adding Oathbreak/Redemption Pathways to vanilla classes

Here is where you define the tags needed to ensure your custom subclass is properly registered. You'll need two of these, one for your Subclass, and one for the Broken Oath:

Subclass

<?xml version="1.0" encoding="utf-8"?>
<save>
	<version major="4" minor="0" revision="8" build="606" lslib_meta="v1,bswap_guids" />
	<region id="Tags">
		<node id="Tags">
			<attribute id="UUID" type="guid" value="7c89622b-4194-41df-b2ff-145a5056ee49" />
			<attribute id="Name" type="FixedString" value="PALADIN_ANCIENTS" />
			<attribute id="DisplayName" type="TranslatedString" handle="h26fe3b00g79b5g4150g9647gbfea0f24acc9" version="2" />
			<attribute id="DisplayDescription" type="TranslatedString" handle="h7f1a984fgbf47g443fg904dgc1629c44d642" version="1" />
			<attribute id="Icon" type="FixedString" value="" />
			<attribute id="Description" type="LSString" value="Paladin subclass" />
			<children>
				<node id="Categories">
					<children>
						<node id="Category">
							<attribute id="Name" type="LSString" value="Code" />
						</node>
						<node id="Category">
							<attribute id="Name" type="LSString" value="Dialog" />
						</node>
						<node id="Category">
							<attribute id="Name" type="LSString" value="Story" />
						</node>
						<node id="Category">
							<attribute id="Name" type="LSString" value="Class" />
						</node>
						<node id="Category">
							<attribute id="Name" type="LSString" value="CharacterSheet" />
						</node>
					</children>
				</node>
				<node id="Properties" />
			</children>
		</node>
	</region>
</save>

Broken Oath

<?xml version="1.0" encoding="utf-8"?>
<save>
	<version major="4" minor="0" revision="8" build="606" lslib_meta="v1,bswap_guids" />
	<region id="Tags">
		<node id="Tags">
			<attribute id="UUID" type="guid" value="d84a8a0b-b648-464c-9bd5-1ed9b965da2a" />
			<attribute id="Name" type="FixedString" value="OATHBREAKER_ANCIENTS" />
			<attribute id="DisplayName" type="TranslatedString" handle="hd3d471e4g80eag4be7ga23eg8cc07e2e27a3" version="2" />
			<attribute id="DisplayDescription" type="TranslatedString" handle="hc230d5e2g8d38g4541ga8fbgf0f061d7c093" version="1" />
			<attribute id="Icon" type="FixedString" value="" />
			<attribute id="Description" type="LSString" value="Used to remember paladin subclass" />
			<children>
				<node id="Categories">
					<children>
						<node id="Category">
							<attribute id="Name" type="LSString" value="Code" />
						</node>
						<node id="Category">
							<attribute id="Name" type="LSString" value="Dialog" />
						</node>
						<node id="Category">
							<attribute id="Name" type="LSString" value="Story" />
						</node>
					</children>
				</node>
				<node id="Properties" />
			</children>
		</node>
	</region>
</save>

Oathbreaker Event Flag

Note: This is always required

Finally, we need our event flag. This, along with the tags, is how the underlying Larian code handles conditionals and keeps things from breaking behind the scenes.

<?xml version="1.0" encoding="utf-8"?>
<save>
	<version major="4" minor="0" revision="8" build="607" lslib_meta="v1,bswap_guids" />
	<region id="Flags">
		<node id="Flags">
			<attribute id="UUID" type="guid" value="7cf0bd9c-f089-45a3-88fb-03087d3d8b95" />
			<attribute id="Name" type="FixedString" value="GLO_PaladinOathbreaker_Event_AncientsBrokeOath" />
			<attribute id="Description" type="LSString" value="Paladin with oath of the ancients broke their oath. If character who receives this flags does not have this oath it will do nothing." />
			<attribute id="Usage" type="uint8" value="4" />
		</node>
	</region>
</save>
⚠️ **GitHub.com Fallback** ⚠️