Versions Compared

Key

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

...

In one instance in NWN:EE this has a valid use case the engine recognises: Additional "Spellbook" columns in spells.2da, which are now referenced by column name in classes.2da.

2DA

...

List

This is a list of the different core 2da files (we're ignoring tileset specific ones but there will be a generic entry for them) with a note about the usage for client or server, and line limits (if known). Anything in this list is used by the game, the unused ones are listed later on this page.

There are a limit to the amount of lines the engine will properly use for 2da files. This is restricted due to network traffic (even in SP there is a "server" running) since the game was made for dialup so Bioware coded in a lot of practical limits to lower packet sizes (presumably...)

2da fileBrief DescriptionClient LoadedServer LoadedToolset LoadedLine LimitLine Limit Notes
actions.2daList of actions and associated icons / TLK strings used by the GUIYesYesNoHardcodedThis file cannot have alterations to lines made, the references are all hardcoded.
ambientmusic.2daAmbient music tracksYesNoYesUnknownNeeds testing. GFF field is stored as INT (-2147483648 to 2147483647).
ambientsound.2daAmbient sound tracksYesNoYesUnknownNeeds testing. GFF field is stored as INT (-2147483648 to 2147483647).
ammunitiontypes.2daFor the hardcoded ranged weapons, what models to use for certain ammo types (eg; Fire Arrows)YesNoNoUnknown / HardcodedLikely hardcoded, so no changes to line amounts allowed.
appearance.2daCreature appearances and base properties like size etc.YesYesYesUnknownGFF field is stored as WORD (0 to 65535).
appearancesndset.2daAppearance Sound Set eg what ambient sound they play, referenced by SOUNDAPPTYPE in appearance.2daYesNoYes?UnknownNeeds testing. More can be added but not sure about the line limit.
armor.2daList of armor values, although some of this is hardcoded.YesYesYesHardcodedAdding more rows doesn't do anything, values are hardcoded
baseitems.2daAll the item types in the game (eg: longsword, torch, scroll)YesYesYes255Hardcoded due to network limitations; items may not function as intended.
bodybag.2daThe bodybag a creature will leave around.NoYesYesLikely 255Needs testing. GFF field is stored as BYTE (0 to 255)
chargenclothes.2daClothing available at character generation.YesYesNoUnknownNeeds testing. No GFF field, is purely loaded by the engine (at chargen client side and on the server side when the client sends over what clothing choice at the end of chargen for that item to load).
classes.2daCharacter classes and main class optionsYesYesYes254Hardcoded due to network limitations plus "255" number is reserved as "CLASS_TYPE_INVALID"
cloakmodel.2daCloaks model references and options for each model.YesYesYesUnknownNeeds testing.
cls_atk_xxx.2daStandard name for classes.2da "AttackBonusTable" 2da value, defining the Base Attack Bonus progressionYesYesYes60Classes are limited to 40 levels for PCs and 60 levels (mostly) for NPCs.
cls_bfeat_xxx.2daStandard name for classes.2da "BonusFeatsTable" 2da value, defining the bonus feats a class getsYesYesYesUnknownNeeds testing but likely the limit here is same as feat.2da
cls_feat_xxx.2daStandard name for classes.2da "FeatsTable" 2da value, defining the feat availability for a classYesYesYesUnknownNeeds testing but likely the limit here is same as feat.2da
cls_pres_xxx.2daStandard name for classes.2da "PreReqTable" 2da value, defining the prerequisits for taking this (Prestiege) classYesYesYesUnknownNeeds testing but this is hardly going to ever be the longest file.
cls_savthr_xxx.2daStandard name for classes.2da "SavingThrowTable" 2da value, defining the saving throw (Fortitude, Will, Reflex) progressionYesYesYes60Classes are limited to 40 levels for PCs and 60 levels (mostly) for NPCs.
cls_skill_xxx.2daStandard name for classes.2da "SkillsTable" 2da value, defining the skills the class has availableYesYesYesUnknownNeeds testing but is likely limited to the same size as skills.2da (255 or 32 depending on bugs)
cls_spgn_xxx.2daStandard name for classes.2da "SpellGainTable" 2da value, defining the spells gained each level (How many can be cast per level). Every spellcaster needs this.YesYesYes60

Classes are limited to 40 levels for PCs and 60 levels (mostly) for NPCs.

Note in EE that spellcasters are typically limited to level 40 in the engine.

cls_spkn_xxx.2daStandard name for classes.2da "SpellKnownTable" 2da value, defining how many spells are known (Eg; for Bards and Sorcerers)YesYesYes60

Classes are limited to 40 levels for PCs and 60 levels (mostly) for NPCs.

Note in EE that spellcasters are typically limited to level 40 in the engine.

cls_stat_xxx.2daStandard name for classes.2da "StatGainTable" 2da value, defining the stat increases for the class (Eg; Dragon Disciple, Pale Master)YesYesYes60Classes are limited to 40 levels for PCs and 60 levels (mostly) for NPCs.
creaturesize.2daFile is hardcoded (engine values in ruleset.2da) and only used by the toolset for the names of sizesNoNoYesHardcodedNoted in description this is basically hardcoded and is for toolset only use.
creaturespeed.2daFile defining the speed of PCs and NPCsYesYesYesUnknownNeeds testing. This file can be extended but some lines are hardcoded. See creaturespeed.2da
crtemplates.2daThis defines some "creature templates" for NPCs such as "Half-Celestial" used in the toolset only. Links to ini files that load items and stat changes onto the creature blueprint.NoNoYesUnknownNeeds testing. Solely for Toolset usage.
cursors.2daNot a complete list of cursors, but used for trigger objects to define some mouse over cursors.YesNoYesUnknownNeeds testing. GFF field is stored as BYTE (0 - 255)
tbc





tbc

There are a limit to the amount of lines the engine will properly use for 2da files. This is restricted due to network traffic (even in SP there is a "server" running) since the game was made for dialup so Bioware coded in a lot of practical limits to lower packet sizes (presumably...)

Hardcoded due to network limitations plus "255" number is reserved as "CLASS_TYPE_INVALID"
2da fileLimitNotes
baseitems.2da255Hardcoded due to network limitations; items may not function as intended.
classes.2da254





effecticons.2da



255Now can use new lines with EffectIcon.
feat.2da



32,768

uint16 used in network however not recommended to go over 32K even if 65,536 is absolute maximum. There are likely problems with subdial feats if you do this.

skills.2da



32Hardcoded due to network limitations to 255 but GUI issues make it a 32 skill limit. May only affect the "Untrained" column however? https://github.com/Beamdog/nwn-issues/issues/171
spells.2da



4096Possibly the limit - needs testing, but is to do with 12 bits available for the "spell radial" entry being sent over the network. May have been removed at some point but needs fully testing.
surfacemat.2da



640 through 63 are valid lines for this in patch 1.84.8193.29 and up.
iprp_damagecost.2da



127 (or possibly 128)

Certainly going to line 129 or higher works for the server end (damage is done correctly) but the client won't show it correctly in the character sheet because it looks up 2da line as a negative (impossible). Line 159 was tested which had the string "-97 Magical Damage" since 159 - 128 = 31, and 128 - 31 = 97.

It shows correctly on items, and higher lines are safe for NPCs to use.

tbc





tbc





Unused 2da files

Bioware left in some 2da files from early development (before game release). These files are not loaded by the game, toolset or Get2DAString at all and can be ignored. They do get confusing however.ignored. They do get confusing however.

  • areaeffects.2da - See vfx_persistent.2da instead
  • armorparts.2da - I think this is unused and parts_NAME.2da is used instead for referencing the valid parts of armor.
  • armourtypes.2da - This is unused and parts_NAME.2da is used instead for referencing the valid parts of armor.areaeffects.2da - See vfx_persistent.2da instead
  • caarmorclass.2da - remnants of armour system?
  • categories.2da - not loaded by the game, in fact not even a valid 2da file. The constants for TALENT_CATEGORY_XXX are just hardcoded in the engine.
  • catype.2da - remnants of creature parts system?
  • combatmodes.2da - Unused references to (a limited set) of combat action modes
  • doortype.2da - See doortypes.2da instead
  • effectanim.2da - See visualeffects.2da instead
  • metamagic.2da - Appears to be unused by the game making all of these hardcoded
  • nwconfig.2da - Unused as of NWN:EE since it removes the "settings" nwconfig program.
  • nwconfig2.2da - Was this ever used?
  • resistancecost.2da - Blank
  • soundcatfilters.2da - Replaced probably by rrf_wav.2da and would be toolset specific anyway
  • soundtypes.2da - Sounds are not tied to a 2da, but are done by resource name
  • treasurescale.2da - I don't think this is used anywhere of note. It'd be used in the toolset I'd guess but there isn't a treasure generation system there.
  • vfx_fire_forget.2da - See visualeffects.2da instead

...