NEW Special abilities / Spells for NPCs

We have recently added a number of Special abilities and working spells to our spells2da. These work Great for the PCs. However, they do not show up in either the Special abilites tab or the Spell listings when making NPCs/Creatures. Is there a special 2da these are suppose to be listed on or some column in the Spells 2da that we need to input something on to get them to show up?

i think they just show up based on Spells.2da (spells tab) and Feat.2da (special abilities tab).

Are you using a custom .Tlk file, or inserting entries in Dialog.Tlk? If the latter, the toolset won’t access the talk-entries if the .Tlk is in /MyDocuments … it needs to replace (a backed up copy of) Dialog.Tlk in the Nwn2 installation folder.

(note that once you have the custom spells/feats assigned to NPCs, the AI won’t use them until HenchSpells.2da has been edited properly)

doesn’t hurt to double check your custom rows against similar stock rows, that you already know are working

1 Like

we have a custom TLK file its kept in both spots . The spells / abilities are on the Spells 2da / iprp_spells and the Feats etc as needed. How does one go about editing the HenchSpells2da looking at it . . . .its all numbers . . I don’t know how to match the line to the spell

I’m not an expert on creating new spells etc, but put a lot of time and effort into this:

(because when i do want to edit the AI i want it to work correctly with all variables accessible)

The row # in HenchSpells.2da must be the same as the row # in Spells.2da … (that’s noted in the description of the editor). Those big numbers in HenchSpells.2da are bitwised integers, that my editor ought decipher to a semi-reasonable degree …

ps. backup your current HenchSpells.2da first,

1 Like

so adding the spells to the Henchspells2da should make them show up on the Special Abilities tab?

Checked the editor out — but it does not show the spell names as per the picture on the vault just the other parts. Maybe because we don’t use TonyK’s AI?

no, that’s something else, nothing to do with HenchSpells … i can only guess that either something is missing in your Spells.2da/Feat.2da or something is funny w/ the custom .Tlk file or the strrefs that should reference it …

(iirc) It’s because you’re using the stock HenchSpells.2da … that version has no “Label” column. But here’s what my ReadMe.txt says about it

By the way, under Options you'll also see "path Spells.2da" and "path Feat.2da".
If you point their dialogs to Spells.2da and Feat.2da respectively, labels for
any spell- and feat-IDs should also appear in the editor.


Option: insert spell labels

HenchSpells.2da could or not have a column that's titled "Label". The 2das that
ship with NwN2 do not, nor do those in TonyK's Companion and Monster AI. Pain's
Neverworker app, however, can output HenchSpells.2da with a "Label" column for
readability; it is not used by NwN2 itself. This editor can open and save either
format of HenchSpells.2da, further if Spells.2da has been pathed, 'insert spell
labels' under Options can copy and insert the labels from Spells.2da. Note that
the editor will create a "Label" column regardless - so it's recommended to
insert labels and Save (after backing up the file first) else the previously
missing column will simply be filled with "****" fields.

oh, something i neglected to mention re. HenchSpells.2da

It’s used only by the “hench” AI. That is only by HenchDetermineCombatRound().


@Arianna0 i notice that the stock 2das are giving my editor conniptions… am doing an update soon.

Our players do not get NPC companions beyond like the animals and familiars used by casters and rangers/druids. Is the Henchspells actually a relevant concern for us then? Our AI is custom made so we do not use Stock scripts. I hate to have to have a specialized script written for every creature that uses special abilities.
I am reading about HenchRacial and HenchClasses2da’s . .where does one even find these? I have looked through the original game files and not seeing them

it depends on whether their ai-scripts call HenchDetermineCombatRound().

And it’s relevant only to creatures that actually have your custom spells/feats. Any creatures that don’t have those new spells/feats can get by with the stock HenchSpells 2da

There are many ways to start fights, slot ai-scripts, etc.

After poking around a bit I really shouldn’t make generalizations about the AI, such as when DetermineCombatRound() or HenchDetermineCombatRound() gets invoked.

Because I just noticed that the nw_c2_default* scriptset (the MotB and SoZ versions but not the OC version) calls HenchDetermineCombatRound() … like the gb_comp_* and gb_assoc_* scriptsets.

(and I no longer assume that the AnimalCompanion and Familar associates have the gb_assoc_* scriptset … from what I see they don’t )

the long & short is, HenchDetermineCombatRound() uses HenchSpells.2da (and if applicable HenchClasses/HenchRacial 2das) but DetermineCombatRound() doesn’t,

so, uh, have you got the spells/feats showing in the toolset yet?


it looks like they’re exclusive to Tony’s AI 2.2, i also see only HenchSpells among the stock 2das …

Sorta . . . I can access the newer spells by tossing the Spells2da in the Override at least . . … for the life of me I cannot get my Gorgon to use its Breath, Petrification ability though

is it a Feat ? if so, look it up in Feat.2da

from there, look up its “SPELLID” in Spells.2da …

Ironically, i see in Spells.2da #495 “Breath_Petrify” and it clearly looks like a spellability, which ought to have a feat associated with it, but when i look in Feat.2da I can’t find anything related.

so you might be dealing with some of Nwn2’s unfinished business … it might have to be “wired up” before it works

(and yes it might pertain to henchspells)

OH unfinished . .Yay. . . . I didn’t think the original game set had any creature with petrifying breath in it yet the option clearly Looks like it from the originals. It would certainly explain the issue with it just wanting to gore people and not use a breath weapon . . . Shame though . . … sweet models but can’t set them up per SRD

here’s a thread that @Lance_Botelle and i dickered about with… Iron Golem w/ poison attack

note things can get working but you sorta have to do that on your own for your unique setup. You could, for example, try to set the Gorgon up with another attack, getting one that works perhaps, then mimic that setup for the petrification ability …

1 Like

Wading through the henchspells I found that the Breath Petrify is currently set to Attack instead of DragonBreath like all the other Breath weapons I have looked at so far. I think I will try changing that up and moving the weight up just a tad to see if it will do its breath attacks


here’s what my Iron Golem looks like …



I use TlkEdit2 to find the strref for “Iron Golem Poison Gas”


then reference that back into Spells.2da “Name” column to find the special ability


and check its “UserType”

Then look at the HenchSpells entry that corresponds to spellid #263

(no Feat req’d it looks like)

as a test I just changed the golem’s SpecialAbility to #495 “Breath, Petrification” and it worked fine here. EffectWeight was already set to “1.0” and spelltype is “attack” …


Is there a specific reason for the Iron Golem Poison gas being listed in the TLK ? I know that it is not on ours [just checked], How would you know if a Feat was required?

I don’t understand why my Gorgon will not use the breath weapon then . . something in our custom scripting perhaps

it’s in the backup of the original Dialog.Tlk i kept … #5294 … so i dunno

when looking at a Spells.2da row, there are several indicators. It may have only an Innate level, but no levels listed under Bard,Cleric,Druid,etc. however there are spellrows that multitask by serving as both spell(s) and feat(s). So that’s not an absolute def’n. Most importantly check the UserType column: 1=spell, 2=specialability, 3=feat, 4=itemcast. But that can be ambiguous if, again, a spellrow was multitasked as noted. Third, look at the FeatID column; that’s a reference to a Feat.2da row (if it exists). And Feat.2da contains a reference back to Spells.2da under its SPELLID column. Unfortunately only one of those refs is necessary … either Feat->Spell or Spell->Feat i forget which though. So sometimes it’s been left out or is just plain wrong …

Also, sometimes it’s a good idea to search for an ImpactScript (aka. spellscript) string throughout Spells.2da – the same script might be used on multiple spellrows, just to keep things confusing.


this is where you have to start looking for what core-AI it’s using. My golem is using the nw_c2_default* scripts … so when my PC walks up to it, one of several events could fire-up combat:

nw_c2_default1 - OnHeartbeat          - can fire HenchDetermineCombatRound() or HenchDetermineSpecialBehavior()
nw_c2_default2 - OnPerception         - ditto
nw_c2_default3 - OnEndCombatRound     - ditto
nw_c2_default4 - OnConversation       - can fire HenchMonRespondToShout()
nw_c2_default5 - OnPhysicallyAttacked - can fire HenchDetermineCombatRound() or HenchDetermineSpecialBehavior()
nw_c2_default6 - OnDamaged            - ditto
nw_c2_default8 - OnDisturbed          - can fire HenchDetermineCombatRound()
nw_c2_defaultb - OnSpellCastAt        - can fire HenchDetermineCombatRound() or HenchDetermineSpecialBehavior()

Any of those functions goes into what I call the SoZ ai. ( The SoZ ai uses HenchSpells.2da )

it just occurred to me that, if the Gorgon’s scripts call either DetermineCombatRound() or HenchDetermineCombatRound() … an X2_SPECIAL_COMBAT_AI_SCRIPT script can be set up to (force)run its petrification.

But, as you suggest, the custom ai scripting is what fundamentally needs to be looked into