Information on 2da files, which are essentially 2 dimensional array tables of information.
Note a lot of information on specific 2da files are on different pages, such as Spells and Abilities for spells.2da.
The 2da format is relatively simple:
This all comes together to mean some very odd looking 2das can be completely valid.
The game as a whole is made up of the client and the server. A singleplayer game essentially runs both at once for the local user - of course other players may still join if it is created as a network game. Therefore it is important to understand which is which, since some 2da files you don't need to include at all in hakpack or nwsync resource lists, and can be left in the .mod or override folder on a PW server perfectly fine.
The client ones tend to be based around levelling up, appeareances, visuals (icons, vfx, textures, etc.) and sounds (the latter 3 servers don't even load of course). Servers need to know about all the resources loaded by the game in regards to objects, spells, etc.
| 2da load reference | 2da Name | Notes |
|---|---|---|
| m_paIPRPCostTables // all of them | All cost tables in iprp_costtable.2da column "Name" | Example: iprp_bonuscost.2da |
| m_pAppearanceTable | appearance.2da | |
| m_pGenderTable | gender.2da | |
| m_pSurfaceMaterialTable | surfacemat.2da | |
| m_pVisualEffectTable | visualeffects.2da | |
| m_pPersistentVisualEffectTable | vfx_persistent.2da | |
| m_pCreatureSpeedTable | creaturespeed.2da | |
| m_pDoorTypesTable | doortypes.2da | |
| m_pGenericDoorsTable | genericdoors.2da | |
| m_pPlaceablesTable | placeables.2da | |
| m_pAreaTransitionTable | ||
| m_pIPRPSpells | iprp_spells.2da | |
| m_pIPRPLightTable | Not sure - probably iprp_lightcost.2da ? | |
| m_pIPRPColor | iprp_color | |
| m_pIPRPMelee | ||
| m_pItemPropDefTable | ||
| m_pItemPropsTable | ||
| m_pCreatureSizeTable | ||
| m_pArmorTable | ||
| m_pEncumbranceTable | ||
| m_pPortraitTable | ||
| m_pPartsChest | ||
| m_pSpellSchoolTable | ||
| m_pTrapTable | ||
| m_pLightColorTable | ||
| m_pIPRPDamageTable | ||
| m_pPartsRobe | ||
| m_pItemValue | ||
| m_pPackages |
| 2da load reference | 2da Name | Notes |
|---|---|---|
| m_pPartTable | Model appearance related | |
| m_pArmorTypesTable | ||
| m_pTileColorTable | ||
| m_pReplaceTextureTable | ||
| m_pTailModelTable | Model appearance related | |
| m_pWingModelTable | Model appearance related | |
| m_pCloakModelTable | Model appearance related | |
| m_pCursorTable | For the cursors for certain default game actions. | |
| m_pActionsTable | For GUI icons list (player action list top left) | |
| m_pAmbientMusicTable | Server tells client which line to load, which refers to this for the sound files | |
| m_pAmbientSoundTable | Server tells client which line to load, which refers to this for the sound files | |
| m_pFootstepSoundsTable | Sounds loading | |
| m_pAppearanceSoundsTable | Sounds loading | |
| m_pWeaponSoundsTable | Sounds loading | |
| m_pDefaultACSoundsTable | Sounds loading | |
| m_pAmmunitionTypesTable | ||
| m_pKeymapTable | ||
| m_pPlaceableSoundsTable | ||
| m_pDamageLevelTable | ||
| m_pEffectIconsTable | ||
| m_pLoadHintsTable | ||
| m_pSwearFilterTable | swearfilter.2da | It's funny how this is here. I presume it alters incoming messages not outgoing ones? Needs testing. Servers can implement changes to PC chat to implement a filter using OnPlayerChat event. |
| m_pPhenoTypeTable | ||
| m_pIPRPVisualFxTable | ||
| m_pWeatherTypesTable | weathertypes.2da | Client is just told which line to load |
| 2da load reference | 2da Name | Notes |
|---|---|---|
| m_pStateScriptsTable | statescripts.2da | Runs pscripts |
| m_pPoisonTable | ||
| m_pDiseaseTable | ||
| m_pRepAdjustmentsTable | ||
| m_pFractionalCRTable | ||
| m_pEncounterDifficultyTable | ||
| m_pCategoryTable | ||
| m_pExcitedDurationTable | ||
| m_pRestDurationTable | ||
| m_pPartsBelt | ||
| m_pPartsBicep | ||
| m_pPartsFoot | ||
| m_pPartsForearm | ||
| m_pPartsHand | ||
| m_pPartsLegs | ||
| m_pPartsNeck | ||
| m_pPartsPelvis | ||
| m_pPartsShin | ||
| m_pPartsShoulder | ||
| m_pXpBase | ||
| m_pAssociatesAnimalCompanionTable | ||
| m_pAssociatesFamiliarTable | ||
| m_pSkillVsItemCostTable | ||
| m_pRangesTable | ||
| m_pPolymorphTable | ||
| m_pDamageHitVisualTable | ||
| m_pBodyBagTable | ||
| m_pIPRPFeatsTable | ||
| m_pIPRPMonsterDamageTable | ||
| m_pOnHitTable | ||
| m_pOnHitSpellTable | ||
| m_pOnHitDurationTable | ||
| m_pIPRPACModTypeTable | ||
| m_pIPRPWeightIncTable | ||
| m_pIPRPArcSpell | ||
| m_pIPRPBonusCostTable | ||
| m_pIPRPSRCostTable | ||
Source of what is referenced by the game engine. It relates to this file: https://github.com/nwnxee/unified/blob/master/NWNXLib/API/API/CTwoDimArrays.hpp
// client+server
m_paIPRPCostTables // all of them
m_pAppearanceTable
m_pGenderTable
m_pSurfaceMaterialTable
m_pVisualEffectTable
m_pPersistentVisualEffectTable
m_pCreatureSpeedTable
m_pDoorTypesTable
m_pGenericDoorsTable
m_pPlaceablesTable
m_pAreaTransitionTable
m_pIPRPSpells
m_pIPRPLightTable
m_pIPRPColor
m_pIPRPMelee
m_pItemPropDefTable
m_pItemPropsTable
m_pCreatureSizeTable
m_pArmorTable
m_pEncumbranceTable
m_pPortraitTable
m_pPartsChest
m_pSpellSchoolTable
m_pTrapTable
m_pLightColorTable
m_pIPRPDamageTable
m_pPartsRobe
m_pItemValue
m_pPackages
m_pRuleset
// client only
m_pPartTable
m_pArmorTypesTable
m_pTileColorTable
m_pReplaceTextureTable
m_pTailModelTable
m_pWingModelTable
m_pCloakModelTable
m_pCursorTable
m_pActionsTable
m_pAmbientMusicTable
m_pAmbientSoundTable
m_pFootstepSoundsTable
m_pAppearanceSoundsTable
m_pWeaponSoundsTable
m_pDefaultACSoundsTable
m_pAmmunitionTypesTable
m_pKeymapTable
m_pPlaceableSoundsTable
m_pDamageLevelTable
m_pEffectIconsTable
m_pLoadHintsTable
m_pSwearFilterTable
m_pPhenoTypeTable
m_pIPRPVisualFxTable
m_pWeatherTypesTable
m_pProgFxTable
// server only
m_pStateScriptsTable
m_pPoisonTable
m_pDiseaseTable
m_pRepAdjustmentsTable
m_pFractionalCRTable
m_pEncounterDifficultyTable
m_pCategoryTable
m_pExcitedDurationTable
m_pRestDurationTable
m_pPartsBelt
m_pPartsBicep
m_pPartsFoot
m_pPartsForearm
m_pPartsHand
m_pPartsLegs
m_pPartsNeck
m_pPartsPelvis
m_pPartsShin
m_pPartsShoulder
m_pXpBase
m_pAssociatesAnimalCompanionTable
m_pAssociatesFamiliarTable
m_pSkillVsItemCostTable
m_pRangesTable
m_pPolymorphTable
m_pDamageHitVisualTable
m_pBodyBagTable
m_pIPRPFeatsTable
m_pIPRPMonsterDamageTable
m_pOnHitTable
m_pOnHitSpellTable
m_pOnHitDurationTable
m_pIPRPACModTypeTable
m_pIPRPWeightIncTable
m_pIPRPArcSpell
m_pIPRPBonusCostTable
m_pIPRPSRCostTable
m_pIPRPNeg5CostTable |