You are here

How To Make Custom Familiars and Animal Companions

Axe Murderer's picture
Author: 
Axe Murderer
Old Vault Category: 
other
Old Vault ID: 
1 104

Creating Custom Familiars and/or Animal Companions
In 10 Easy Steps

I'd like to thank Exodusx24 who posted most of these instructions in the forums. I tweaked his explanations only slightly in a couple of areas where he was mistaken based on inputs by rtrifts, Georg Zoeller, CID-78, and gaoneng and due to updates made to the game since his post back in 2004. Sometimes when it says "I did this" it's Exodusx24 talking -- sometimes it is me. Also, since I authored Killer TLK Editor and am more familiar with it than with other tlk editors, the instructions related to the tlk table editing are tailored towards its use. There are several others in the vault. I imagine CODI's is a good one tho I have never tried it, but I would avoid NWN TLK Editor v1.1 as it doesn't save the files in the correct format -- they seem to work ok but aren't totally right.

Tools you will need

Note: These tools and instructions are for WinXP users, although much of it is the same for others as well.

NWN Explorer
Killer TLK Editor (or some equivalent editor that lets you create tlk files -- check the vault).
 

Creating the Blueprints

Step 1: Make a script set for the familiars and companions. This step isn't strictly required but it sure saves you hoards of time later on. Open up notepad and enter the following:

[ResRefs]
OnBlocked=nw_ch_ace
OnDamaged=nw_ch_ac5
OnDeath=nw_ch_ac7
OnConversation=nw_ch_ac4
OnDisturbed=nw_ch_ac8
OnCombatRoundEnd=nw_ch_ac3
OnHeartbeat=nw_ch_ac1
OnPhysicalAttacked=nw_ch_ac5
OnPerception=nw_ch_ac2
OnRested=nw_ch_ac9
OnSpawn=nw_ch_acani9
OnSpellCast=nw_ch_acb
OnUserDefined=nw_ch_acd

 

then save it into your \NWN\scripttemplates folder under the name "set_xp1_familiar_companion.ini"

While you're at it, you might as well do one for the summons and henchmen as well in case you ever decide to customize those. The henchmen one should already be there under the name "set_xp1_henchmen.ini", but some (specifically Gold, Platinum, and Diamond edition users) will not have it there. Neither the summons one nor the familiar/companion one were originally part of the game. I create them to simplify things later as you will see.

Here is the henchmen one:
 

[ResRefs]
OnBlocked=x0_ch_hen_block
OnDamaged=x0_ch_hen_damage
OnDeath=x0_ch_hen_death
OnConversation=x0_ch_hen_conv
OnDisturbed=x0_ch_hen_distrb
OnCombatRoundEnd=x0_ch_hen_combat
OnHeartbeat=x0_ch_hen_heart
OnPhysicalAttacked=x0_ch_hen_attack
OnPerception=x0_ch_hen_percep
OnRested=x0_ch_hen_rest
OnSpawn=x0_ch_hen_spawn
OnSpellCast=x0_ch_hen_spell
OnUserDefined=x0_ch_hen_usrdef

 

save it under the name "set_xp1_henchmen.ini"

And here is the summons one:
 

[ResRefs]
OnBlocked=nw_ch_ace
OnDamaged=nw_ch_ac5
OnDeath=nw_ch_ac7
OnConversation=nw_ch_ac4
OnDisturbed=nw_ch_ac8
OnCombatRoundEnd=nw_ch_ac3
OnHeartbeat=nw_ch_ac1
OnPhysicalAttacked=nw_ch_ac5
OnPerception=nw_ch_ac2
OnRested=nw_ch_aca
OnSpawn=nw_ch_summon_9
OnSpellCast=nw_ch_acb
OnUserDefined=nw_ch_acd

 

saved under the name "set_xp1_summons.ini"
 

Step 2: Open your toolset and make a new one-area module. Go into the creature wizard and follow the directions to make whatever kind of creature you want to become available as a familiar &/or animal companion. I will use a bear for my Examples. Here is how to set up its properties:

Basic Tab

Tag:                     NW_FM_BEAR01 (substitute _AC_ instead of _FM_ for animal companions)
Conversation:   nw_g_fam ( nw_g_animal for the AC)

Advavced Tab

Blueprint Resref:    nw_fm_bear01 (substitute _ac_ instead of _fm_ for animal companions)
Faction:                   Commoner

Scripts Tab

You can type in all the script names shown for the familiar/companion from step 1 into each box, or you can do it the easy way and click the Load Script Set button and navigate to the set_xp1_familiar_companion.ini file in your \NWN\Scripttemplates folder that you created in step 1 and select it. This will cause the toolset to fill in all the boxes for you, much simpler and less error prone, and in just a moment (when you get to step 4) you'll appreciate it even more.
 

Step 3: Make sure that you go through all the tabs and set up the feats, skills, soundset, perception range, ...everything the way you want it. Set the class to Animal level 1.
 

Step 4: Now you need to create 39 more, one for each possible level. Use edit copy on the level 1 guy you just completed to make a new blueprint. Change the new blueprint RESREF to nw_fm_bear02 and the TAG to NW_FM_BEAR02. For each level of the guy you create, make sure there are always two digits after BEAR...01-40 no extra 0’s, no missing 0's, just 2 digits every time. For each new one you make, you have to go into the class setup and increase its Animal class range by 1. So on level 2 it should say under classes Animal 2 and so on. You will also have to change the ability scores, saves, hitpoints and armor class too at each level. It will not do those automatically.
 

Step 5: After all 40 blueprints are created, save the module under a name you will remember. You can then close the toolset.

Note: If you want your critter to be both familiar and companion you need to make another 40 blueprints (e.g. one set NW_FM_BEARxx and the other NW_AC_BEARxx). So you'll have to make 80 altogether (did I not tell ya that script set would be worth making?). Do not forget to change the conversation box to nw_g_animal (or nw_g_fam) on the second group.
 

Creating the Custom TLK Table

Step 6: Start Killer TLK Editor (or whatever tlk editor you use) and click the New TLK Table button to make a new empty table. Enter the familiar's name (meaning like Bear, not like Bob the Bear) into STRREF entry 1 and its description into STRREF entry 2. You can put them into different entries besides #1 and #2 if you like, just remember the STRREFs of the ones you use and which one is which. Save the tlk file into your \NWN\tlk folder. I usually name mine based on the module it is for so I can keep them distint (e.g. MyModule.tlk). If you are making both familiar and companion versions of your guy, they can share the same tlk table entries. So you don't have to put it in there twice unless you want the name &/or description to be different for familiars than it is for the animal companions.

Note: Never try to edit your dialog.tlk or dialogf.tlk (if you have one of those) or the CEP.tlk file if you use the CEP. Doing that will really mess things up and make the automatic patch updater fail to work when the next patch comes out (plus it makes all your entries get lost when you update the game or the CEP) among other problems. Instead, you should always make a custom tlk table and hook it into the module's Custom Content properties window instead. For CEP compatibility, make a copy of the CEP.tlk file and put your entries into one of the blank entries in the 1-30000 range then save the file under a different name (must have .tlk at the end) and hook this modified one to your module. If the CEP comes out with a patch some time in the future, you will have to do this again. Therefore, you might want to create a small tlk table that has just your custom info in it so later you can use the Killer TLK Editor Import or Export features to move them into the new CEP tlk table all at once.
 

Creating the Customized UTC and 2DA Files

Step 7: Next start up NWNExplorer and navigate to NWN User Modules-->the module you just made-->Blueprint Creatures in the tree view on the left side. Export all the UTC files for your familiar &/or companion into your \NWN\override folder. (I also copied mine into a separate folder named after the familiar I was creating as a back up).
 

Step 8: Now navigate to NWN--HoTU Main Data--data\xp2.bif--Game data--hen_familiar.2da (&/or hen_companion.2da). Export the appropriate one (or both) out to the override folder and open it (them) with notepad. The file(s) needs to have at least 20 entries in it (them). If there are less than that you have to "pad it out" with lines that have **** in every column except the first one (i.e. the one with the sequential line numbers in it). So if you see this as the last line in the file:
 

 

NAME

BASERESREF

STRREF

DESCRIPTION

10

Eyeball

X2_FM_EYE0

84490

84491



you need to make it look like this:
 

 

NAME

BASERESREF

STRREF

DESCRIPTION

10

Eyeball

X2_FM_EYE0

84490

84491

11

****

****

****

****

12

****

****

****

****

 

... etc.

20

****

****

****

****



Then you will add in a new line like this.
 

 

NAME

BASERESREF

STRREF

DESCRIPTION

21

Bear

NW_FM_BEAR

16777217

16777218



The 21 at the front might be different for you. It must be the next sequential number available (i.e. one more than the line above it).

The NAME can be anything at all as it isn't used by the game I don't think. It is just there so people reading and editing the file will know which is which. No spaces allowed in there however, or in any column in any 2da file for that matter (keep reading).

The BASERESREF gets set to whatever you have used for your blueprint resref without the 2 digits at the end. In my example this is NW_FM_BEAR because on all my blueprints I set the RESREFs to NW_FM_BEARxx. I'm reasonably sure that you can use any resref you want as long as you have the 2 digits at the end set up correctly, but to keep things consistent with the way the Bioware guys did it, I suggest you maintain thier naming conventions as much as possible. Also I would make the TAG and RESREF be the same on every blueprint (again I don't think this is critical but remain consistent to avoid problems is my motto).

The STRREF and DESCRIPTION are computed by adding 16777216 to whatever STRREF entry you used in the TLK table. So if you used 1 for the name and 2 for the description, the line 21 shown above is what you would use. As you can see the STRREF is 16777216 +1 = 16777217 and likewise for the description.

Note: In 2da files you separate the columns using a space or spaces. The game figures out what column is what based on the spaces you enter on the row. Therefore, none of the column contents can have an embedded space in them or the game will get confused about what value is in what column. So don't set the NAME to something like Dire Bear. You gotta squash it down to one word or use an underscore instead of a space (i.e. DireBear or Dire_Bear). I think you can use quotes and enter "Dire Bear" like that with an embedded space, but nobody does that and its best to stick with what everyone is familiar with. Besides, I am not at all sure if every non-numeric column in every 2da can work right if you quote things to allow for embedded spaces. Bioware guys never seem to use the quotes and that is a good indication that they should be avoided IMO.
 

 

Step 9: Save your changed 2da file(s) and leave it (them) in your \NWN\override folder for now. You can test and play with it (them) in there, but will have to put it (them) into a hak pak (along with all the UTC files) and deliver the hak to your users if you want to distribute your work.
 

Step 10: Final check. Make sure that your UTC files have the exact same name as the BASERESREF (without the numbers) they should look like this NW_FM_BEAR01-NW_FM_BEAR40. If they don’t have the NW just rename the file and correct it. You can do that while it is in the override folder by right-clicking and selecting rename. Do it for all of them. Also remember no extra 0's and no missing 0's it should be BEAR01,02-40 and so on, not BEAR002-040 or BEAR1, BEAR2, ...
 

That’s it your done. Create a new character or continue with an old one it should be there.
 

Delivering your stuff to others

Step 11: To deliver your work to others, put all the UTCs and the 2da(s) in a hak pak, save it in your \NWN\hak folder, and hook it into the module's Custom Content panel. Make sure it appears at the top of the custom content list of haks if you have more than one. Then delete the 2da(s) and UTCs from your override folder. Make the hak pak available to your users and tell them to put their copy into their \NWN\hak folder to play. You also need to send them the .tlk file and have them put it in their \NWN\tlk folder. You cannot put the tlk file in the hak pak -- it has to be delivered separately.
 

Migrate Wizard: 
First Release: 
  • up
    100%
  • down
    0%
Dovaal

Can anyone update this for NWN2 please?

  • up
    50%
  • down
    50%