Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


Note: This is one of the only 2da files you can add additional valid columns - specifically columns that are like "Bard, "Cleric" which list the spell level of the entry for spell books, referenced in classes.2da in NWN:EE.

Column NameTypeExample valueDefault OptionsAny Known LimitationsNotes and Usage
N/ANot used by the game as such, a human-readable name

TLK entry
Can be
an entry in dialog.
tlk entry
TLK or a custom TLK, shows up in game
UnknownIcon name, minus the .tga extension
SchoolTextCA, C, D, E V, I, N, T

spellschool.2da values, but really just hardcoded

G is unused would need testing. Even monster abilities have this set (usually just to Evocation, V)

To test: Having additional spell schools or this as invalid

RangeTextLP, T, S, M, Lranges.2da valuesTo test: Is the ranges.2da references hardcoded? can more be added?
VSTextVSV, S, VSOnly V (Verbal) and S (
Somatic) supportedVerbal or
Somatic components needed. Verbal needs the caster to be able to speak (Eg; not silenced, deafened imposes 20% failure check).
Somatic requires them to be able to use their arms (eg; not being
Paralyzed) and is affected by armour failure chance.
MetaMagicBitwise Hex Integer


Recognized values are:

None = 0x00

Empower (1) = 0x01

Extend (2) = 0x02

Maximize (4) = 0x04

Quicken (8) = 0x08

Silent (16) = 0x10

Still (32) = 0x20

(see also Notes and Usage)

Some of this happens entirely in engine (Still Spell, Silent Spell and Quicken Spell).

The remaining (Empower Spell,


Maximize Spell, Extend Spell) are captured in the spell script

To calculate the cost of multiple allowed Meta Magic feats, add the decimal values together. For example:

0x38 = Quicken+Still+Silent

0x3F = All metamagics

TargetTypeBitwise Hex Integer


Recognized values are:

self (1) = 0x01

creature (2) = 0x02

area (4) = 0x04

items (8) = 0x08

door (16) = 0x10

placeable (32) = 0x20

trigger (64) = 0x40

(see also Notes and Usage)

This primarily affects players - monsters seem to be able to ignore it, causing some "interesting" issues.

Some standard spells also are problematically miscoded, eg; having a Self Only target type, but a range higher than Personal.

To target more than one type, add the decimal values together.

Note: ALL spells must include the decimal value for Items (8) - 0x08 - in their calculated value or else Item Crafting will not work.

Script name limit (16 characters)

Script name minus the .nss extension that fires on the impact. Will only fire when successfully cast - ie; not interrupted by a concentration failure.

Note, Bioware naming convention reserves S0 for spell scripts, S2 for feat abilities, and S3 for creature abilities.









**** denotes the spell is unusable by that class.

Integer, 0+ - unknown maximum

The only one that is required is Innate. The defaults are 0 (cantrips) through 10 (Epic spells). However the 10 value won't show up in usual spell books so would only affect cheat-cast or feat-cast things. 10 is likely the usual maximum for the game anyway, due to how "talents" work.

You can add more columns (anywhere in the 2da, but usually at the end) to add more spellbooks. For instance you could create one headed "Assassin" and have Assassin spells, with the relevant changes in classes.2da allowing that spellbook to be used.

Note: The spell lines for Dispel Magic spells are hardcoded into the engine assuming certain spell levels (the "Innate" column) for such things like Counterspelling.

ConjTimeInteger (miliseconds)1500Usually 1500 or 900 for normal spells, 1 or more for abilitiesNone

The amount of time spent "Conjuring" the spell in milliseconds, applying the "Conj" animations, sounds, and VFX. Once this number is passed the CastTime and Proj fires if appropriate.

For spells this is the duration that can cause concentration checks. The default is 1500 but 900 is used for spells like Phantasmal Killer which has a slow "projectile".

Monster abilities vary (and don't matter as much - no concentration!) eg; gazes, bolts are 500, auras are 1, cones are 100 or 500. Dragon breath is 2000.

I think the number is halved for hasted spells (needs testing).

Using values above 2000 may cause issues from past experience. Game expects people to cast spells within 3 seconds.

ConjAnimSet valueshandhand or headhand or headHands usually are spinning hands around, head means spinning hands over the head. This is where the "Hand" visual will be attached.
ConjHeadVisualModel resrefvco_mehedelec01

Head based conjuring visual effect (attached to the head node). Resref of visual effect model. "vco" = "visual conjure"
ConjHandVisualModel resrefvco_smhanfire01

Hand based conjuring visual effect (attached to the hand node). Resref of visual effect model. "ConjAnim" alters where hands are by default.
ConjGrndVisualModel resrefvco_lgrinevil01

Ground based conjuring visual effect (at the casters feet). Resref of visual effect model.

Higher level spells tend to have this to differentiate them from lower level versions.

ConjSoundVFXSound resrefsco_mehannatr01

Sound used when conjuring. This is useful to always have because non-PC races don't get casting chants (next two lines).
ConjSoundMaleSound resrefvs_chant_ench_lm

Sound used if the caster is Male (or not-Female) and a base race. Bioware included variants for "high" and "low" magic, of each spell school.

vs_chant_XXXX_YZ - XXXX = 4 letters of school, Y = "l" (low) or "h" (high) and Z = "m" (male) or "f" (female)

ConjSoundFemaleSound resrefvs_chant_ench_lf

Sound used if the caster is Female and a base race. As above variants are included for high/low magic and each school.
CastAnimSet valuesareaarea, attack, out, self, touch, and uparea, attack, out, self, touch, and upAnimation to use for the casting. Most are obvious, and fit for instance "out" being a cone spell (Holding hands where the cone will appear).
CastTimeInteger (milliseconds)1000Usually 1000, but 1700 for cones

Milliseconds holding the CastAnim pose. Most are 1000 (1 second).

Cones benefit from more "hold out hands" time to match the spell visuals, although 1700 pushes these spells over a 3 second cast time which is odd.

CastHeadVisualModel resrefvca_dragbreath

Head based casting visual effect (attached to the head node). Resref of visual effect model. Occurs in the direction of casting. Example: Dragon Disciples Breath. "vca" = "visual cast"
CastHandVisualModel resrefvar_conefire

Hand based casting visual effect (attached to the hand node). Resref of visual effect model. Occurs in the direction of casting. Example: Cone spells. "var" = "visual area"
CastGrndVisualModel resref

Ground based casting visual effect (at the casters feet?). Resref of the visual effect mode. No default Bioware spells use this.
CastSoundSound resrefsar_conefire

Sound used when casting. This is mainly used to have the visual such as a cone match with an appropriate sound.
ProjBoolean10, 10 or 1 are acceptedDoes this have a projectile? activates the next 5 columns.
ProjModelModel resrefvpr_ectoacid01

Projectile visual effect (See ProjSpwnPoint for where it appears) "vpr" = visual projectile.
ProjTypeSet valueshoming
accelerating, spiral, linked, bounce

The projectile type. Also note this can be altered using the parameter "nProjectilePathType" in ActionCastSpell functions, although several are missing from the parameter.





This is entirely unused by the game and may just be a developer-left-in notes field or a pre-nwscript way of doing immunities
ItemImmunityBoolean10, 10 or 1 are acceptedIf 1 it allows the spell to be immune on an item property
SubRadSpell1Integer spells.2da line reference

The first spell on a radial, such as when Polymorph has different options available.
SubRadSpell2Integer spells.2da line reference

SubRadSpell3Integer spells.2da line reference

SubRadSpell4Integer spells.2da line reference

SubRadSpell5Integer spells.2da line reference

CategoryInteger spells.2da line reference

MasterInteger spells.2da line reference

The master of this spell if it is a subradial spell. It should be left blank if it is not a subradial spell.

Note: This is buggy, and some spells have it set even if they're not a radial spell (copy and paste errors on Biowares part!). This causes GetHasSpell to perform incorrectly, but the game still works correctly otherwise - very frustrating!


1 = spells

2 = creature power

3 = feats

4 = item power

Spells are always 1.

Note: Values higher than 4 are ignored.

TLK entryCan be an entry in dialog.TLK or a custom TLK, shows up in game
UseConcentrationBoolean10, 10 or 1 are accepted

This stops concentration checks for this ability. Usually all monster abilities.

Note that it does not stop attacks of opportunity.


If the caster has the "Can cast spontaneous spells" (usually only Clerics) this applies (usually only "Cure" and "Inflict Wounds" spells), and the spell is marked with a 1, then they can cast it and lose a different spell that is memorised of the same level.

Note: Domain spells memorised cannot be used to cast spontaneous spells.