Jump to content

Adding ToF content to your mod


Recommended Posts

This is an advance-warning thread about features that will be in beta 3 of Talents of Faerun (hopefully releasing pretty soon, but no promises.) Various of ToF's features - spell spheres, subraces, kits - might naturally be assigned to kits, spells, and NPCs introduced by other mods. However, ToF naturally lives quite late in the install order (it needs to do various UI edits that require an overview of all kits in the game, for instance) whereas a lot of the mods that might naturally use ToF content would install earlier. I could add the content myself, but it's a lot of hassle and might be seen as intrusive.

My solution to this (live in beta 3) is to let any mod define an ini file that you can use to tell ToF what to apply to your content. As an example, I'm going to use a few mods by Lava.

  • Lava's 'Weasels!' mod adds several priest spells that naturally belong in the sphere of Animals
  • Lava's 'Dusky' mod adds a cleric/thief of Mask, who might naturally be given the 'thief of mask' kit
  • Lava's 'T'viy' mod adds a cleric of Urdlen. Urdlen isn't one of the gods I cover in ToF, but it might still be natural to use ToF features to give that cleric a bespoke spell list.
  • The cleric of Urdlen is also a deep gnome and it would be natural to assign it the appropriate subrace.

Here's how you'd tell ToF to do these things. (It would actually be natural to do them for each mod separately; I'm combining them for illustrative purposes.)

  • You define an ini file that looks something like this:
[npc_kit]
DUSKY=DW_MASK_THIEF

[npc_subrace]
L#TVI=GNOME_DEEP

[kit:L#TVI]
spheres=+earth,-good
bonus_spells=CLERIC_BEAST_CLAW,WIZARD_FLESH_TO_STONE

[spheres]
CLERIC_SUMMON_WEASELS=animal
CLERIC_WEASELPAWS=animal
CLERIC_POWER_OF_THE_WEASEL_GOD=animal
  • You give it a guaranteed-unique name (I suggest the same name as your mod folder)
  • When you install that mod, you drop it into the folder 'weidu_external/data/dw_shared/dw_talents_3p'. 

When ToF is installed, it will find that file and apply your changes.

In the next few posts I'll explain the details a bit. I should say that I didn't check the particular choices in my example with Lava and I didn't give them much thought: they're a code illustration, nothing more.

Link to comment

Assigning spheres to spells

You do this with the [spheres] section of your ini:

[spheres]
CLERIC_SUMMON_WEASELS=animal
CLERIC_WEASELPAWS=animal
CLERIC_POWER_OF_THE_WEASEL_GOD=animal

Each entry will be of the form 'spell_id=sphere_id'. (sphere_id is case-insensitive, I think, but use lowercase for definiteness) You can find an up-to-date list of sphere ids by looking at dw_talents/sphere/sphere_list.2da; the current list is: air, all, animal, charm, combat, divination, divine, earth, fey, fire, good, healing, moon, nature, necromantic, plant, protection, summoning, sun, wards, water, evil. (The 'nature' list is empty on a clean install of ToF: it exists to give a home to third-party druid-only spells.)

If your spell description has a 'Sphere: xxx' entry, ToF will try to update it. It won't add a Sphere: entry if your current spell description lacks one.

Link to comment

Assigning subraces to NPCs

You do this with the 'npc_subrace' section of the ini:

[npc_subrace] 
L#TVI=GNOME_DEEP

Each entry is of the form dv=subrace_id (and I think should be case-insensitive). The dv is the usual 'death variable' or 'scripting name' that occurs at offset 0x28 of a cre file. An up-to-date list of subrace ids can be found by installing ToF and then looking at weidu_external/data/dw_shared/ The current list is: GNOME_ROCK, GNOME_DEEP, DWARF_SHIELD, DWARF_GOLD, DWARF_DUERGAR, HALFLING_LIGHTFOOT, HALFLING_STRONGHEART, HALFLING_GHOSTWISE, ELF_MOON, ELF_SUN, ELF_WILD, ELF_WOOD, ELF_DROW, ELF_WINGED, ELF_DUSK, AASIMAR, TIEFLING, GENASI_AIR, GENASI_EARTH, GENASI_WATER, GENASI_FIRE. (Note that ELF_WINGED and ELF_DUSK are purely cosmetic, NPC-only kits that don't do anything beyond displaying the subrace name on the character sheet.)

Applying a subrace only affects joinable NPCs. It also doesn't apply any subrace modifiers to ability scores or thief abilities; I assume you will have applied those directly to the base character. It does apply bespoke special abilites like fire resistance or granted spells. ELF_DROW and GNOME_DEEP are hardcoded to zero the NPC's magic resistance.

Link to comment

Assigning kits to NPCs

You do this with the 'npc_kit' section of the ini:

[npc_kit]
DUSKY=DW_MASK_THIEF

Each entry is of the form cre_resref=kit_id (kit ids taken from kit.ids) and should be case-insensitive. Note that unlike npc_subrace, you need to give the cre file resref, not the death variable. (So if you have multiple versions of your NPC at different levels, you'll need to call out all of them.) 

The intended purpose of this section is to affect joinable NPCs. You can apply it to non-joinable NPCs (e.g. enemies) and their kit will be altered; this will have no effect in ToF but SCS will notice and (if your NPC uses a standard script) will apply abilities, scripts, spells etc. However, there are deficiencies with this way of talking to SCS; I hope to introduce a more effective way shortly.

Link to comment

Assigning spells to kits (part 1)

In this case there is one section per kit, with a header name 'kit:kit_id', where kit_id is the kitlist.2da id for the kit. (This should normally be the same as the kit.ids entry; Bioware breaks this rule but you shouldn't.) For instance, the 'Crawler of Urdlen' kit from Weasel's "T'viy" mod has this entry:

[kit:L#TVI]
spheres=+earth,-good
bonus_spells=CLERIC_BEAST_CLAW,WIZARD_FLESH_TO_STONE

There are two fields, 'spheres' and 'bonus_spells'. (Both are optional.)

'spheres' describes which spheres a character can use. You can do this just as a comma-separated list of spheres: the entry for the unmodified cleric, for instance, would look like this:

spheres=all,charm,combat,divination,divine,evil,good,healing,necromantic,protection,summoning,wards

whereas the entry for the unmodified druid would be

spheres=air,all,animal,divination,earth,fey,fire,healing,moon,nature,plant,protection,sun,water

But it is usually easier to take the defaults as a starting point and indicate which spheres are added (by prepending a plus) and/or subtracted (by prepending a minus). So the Crawler of Urdlen gets the basic cleric spheres, plus Earth, minus Good. (You can get a list of defaults by looking at the defaults column of dw_talents/sphere/sphere_list.2da; clerics, druids, paladins, rangers, shamans and blackguards are all indicated by their respective first letters.)

As minor advice for spheres:

  • Everyone should have access to 'all'
  • All clerics, but no druids, should have access to 'divine'; all druids, but no clerics, should have access to 'nature'. (These are where third-party spells get put, apart from anything else).
  • Think carefully before removing healing or protection: they contain fairly critical spells that can make the game unfun if you don't have them.

A list of spells in each sphere can be found inside ToF at dw_talents/doc/subdocuments_dw/spheres.html, or here.

Link to comment

Assigning spells to kits (part 2)

You can further customize the spells assigned to a divine kit by adding specific spells. For instance, it might seem thematically appropriate to Urdlen to give his clerics access to the Beast Claw spell. You can even give them arcane spells (or rather: new divine versions of arcane spells); maybe priests of Urdlen should be able to use Flesh to Stone off the wizard list? (eh, probably not to be honest: it's a coding example, not necessarily good design).

This is easy to do: just set the bonus_spells field equal to a comma-separated list of the ids of the spells you want to add. Any wizard spells will be autoconverted into priest versions usable only by this kit. (8th or 9th level spells will be reduced to 7th level; other levels will be unchanged.)

Link to comment

Following a query I had: I’m happy to be given these ini files and host them myself (the functionality is not in beta 3 but is simple to add). That might be useful for people who have lots of mods and don’t want to update them all at once. It’s a one off offer though - I don’t want to have to update ToF every time any mod that uses it changes!

Also happy to work with people to help them design inis if they’re unsure of the format.

Link to comment

Very nice, I will add information about spheres of added spells to MiH Fixes&Restorations and MiH Spellpack.

Something to consider: What about a similar mechanism to tell SCS about new spells mages and priests can use?

Link to comment

Hi, is there a way or will you be adding a way to restrict specific proficiencies for a kit (if using the component that expands class profs). Or is that something you'd have to handle yourself on your end. Thanks.

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...