There are several interlinked item properties 2da files. For clarity this top level page will host them and the definition 2da file info. The 2das that define individual parts of each item property will be on subpages.
Adding New Item Properties
Note that adding new item properties doesn't inherently do anything, but like the "Material", "Quality" and "Additional_Property" ones it can assist in scripting or making players aware of some item property even if the game doesn't do much with it.
However you won't (without something like NWNX) be able to easily create these in nwscript - although copying them from pre-set ones might be possible.
Script Commands
There are a lot of item script commands, you can recreate any of the item properties dynamically. You can also retrieve all the information from them, which is probably more useful to list here.
Note not all of these are valid for each property. In fact only the first is valid for all properties - some base ones like "Darkvision" have no subtype, no valid cost table and no valid param1 table. In the example below we go for one of the most complex item properties, Damage Bonus vs. Alignment Group (Eg: +1d10 Magical Damage versus Good).
- int GetItemPropertyType - Retrieves the row the item property is in iprp_itempropdef. EG: ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP returns 17 which means you can look up row 17.
- int GetItemPropertySubType - Retrieves the subtype row reference (the file referenced by "SubTypeResRef" in iprp_itempropdef). EG: ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP could return 4, which in IPRP_ALIGNGRP which it uses is defined as "vs. Good" (or is ALIGNMENT_GOOD if you want a simple reference point).
- int GetItemPropertyCostTable - Retrieves the column "CostTableResRef" from iprp_itempropdef. EG: ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP always returns 4, which you can then Get2DAString("iprp_costtable", "Name", GetItemPropertyCostTable(ip)) - this returns the string "IPRP_DAMAGECOST", ie the cost table you need to use.
- int GetItemPropertyCostTableValue - Retrieves the row the item property is using in in the cost table. EG: ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP will return a value in the 2da file iprp_damagecost, eg; 9. You can then do, for instance, Get2DAString("iprp_damagecost", "Die", GetItemPropertyCostTableValue(ip)) which in this example would return 10 (it's a 1d10 damage bonus)
- int GetItemPropertyParam1 - Will return the row in "iprp_paramtable" that this item property is using. You may look up the 2da it references using the "TableResRef" column, eg: ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP always returns 0, which you can then Get2DAString("iprp_paramtable", "TableResRef", GetItemPropertyParam1(ip)) - this returns the string "IPRP_DAMAGETYPE", ie the parameter 2da to look up values in.
- int GetItemPropertyParam1Value - Will return the row in the parameter 2da file referenced in GetItemPropertyParam1. You can get information from the parameter table, EG; ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP might return 5 which you can for instance get a human readable name of, such as with Get2DAString("iprp_damagetype", "Label", GetItemPropertyParam1Value(ip)) - or reference in a constant, in this example it'd be IP_CONST_DAMAGETYPE_MAGICAL.
With known item properties (ie; you know the item property is ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP) you can skip some of the above steps to look up informaation, since there is little reason to alter the iprp_itempropdef.2da file to reference other 2das. For instance;
- GetItemPropertyCostTable - just assume this is always iprp_damagecost
- GetItemPropertyParam1 - just assume this is always iprp_damagetype
Item properties can also be temporary - applied by an effect:
- int GetItemPropertyDurationType - DURATION_TYPE_PERMANENT for permanent item effects and DURATION_TYPE_TEMPORARY for temporary ones. Temporary ones are not automatically removed by dispel magic. If temporary you can retrieve the item properties duration with:
- int GetItemPropertyDuration - The total duration of the item property, in seconds.
- int GetItemPropertyDurationRemaining - The remaining duration of the item property, rounded to the closest second.
Applying an effect permanently using AddItemProperty alters the cost of said item - so making that dagger +5 will make it be worth the same as a toolset generated one. This may override any "additional cost" fields in the toolset, or any overriden costs. Costs also change when item use charges decrease - eg; a Wand with 50 charges going to 40 decreases the value by a large amount. Changing this upwards increases it. Marking crafted items as Plot (so they cannot be sold/are worth 0) may be the simpliest solution if your crafting gets out of hand (ie the gold cost of adding the properties is less than the sale price of the property).
You can also tag item properties - eg; to mark them from a particular spell or crafting or somesuch. See: GetItemPropertyTag and TagItemProperty.
The only thing you can't seem to do with item properties is retrieve what spell they came from (whether or not it is even stored in the engine who knows - bit of a black box is item properties even if they functionally are very similar to effects!).
2da Columns
itemprops.2da
This 2da will just set what properties are valid for which item types in the toolset (and possibly in game when items are loaded?). The columns actually are referenced in order and relate to PropColumn in baseitems.2da.
If an item property line is all **** then it is deemed unusable - see list at the end of the page.
Column | Example Contents | Valid Values | Description and Notes |
---|---|---|---|
0_Melee through 21_Glove | 1 | **** for no 1 for yes | The column number is listed because the order matters, it is one of the only 2da files to use the column order in particular. It is used with PropColumn in baseitems.2da. For instance a value of "8" in that loads "8_Potions" as a column for what properties are valid. For instance if you wanted to add a new column you'd have to insert it after 21_Glove - it'd be wise to continue numbering so use "22_SOMETHING" - then fill in the column. Most new items reuse one of the existing columns. |
StringRef | 649 | Dialog.tlk string reference | Most just copy the "Name" field from itempropdef.2da. Can't find where used, the only ones with a different value are just wrong (copied lines) so probably not used by the game or toolset. For safety just copy the "Name" field in itempropdef.2da |
Label | Ability_Bonus | Text | Human readable reference unused by the game. |
itempropdef.2da
This defines the item properties and is your starting point in adding new ones or finding out information about them.
The Sub Type is the plain first choice (eg; "Strength" out of a list of abilities to improve) of the type. Some do not have this if they are singular (such as "Darkvision").
Column | Example Contents | Valid Values | Description and Notes |
---|---|---|---|
Name | 649 | TLK string reference | A StringRef for the name of the item property type corresponding to this row, used in the toolset - so example would be 649: "Ability Bonus". |
Label | Ability | Text | A descriptive name identifying this row. This is for the reference of the human reader and is ignored by the game. |
SubTypeResRef | IPRP_ABILITIES | 2da ResRef or **** if not applicable | The name of the .2da file (without the extension) defining the possible subtypes of an item property corresponding to this row. Most of these will begin with "IPRP_", but a few other .2da files are sometimes used. (One example of a subtype is the particular ability for an item property that grants an ability bonus; these are selected in the Toolset before adding a property to an item.) |
Cost | 1.2 | Float | This value is to do with the cost calculations see Item Costs below. |
CostTableResRef | 1 | **** if not applicable or index in iprp_costtable.2da | An index into iprp_costtable.2da , indicating which of the various cost tables is to be used with the "cost parameter" of item properties corresponding to this row. (Several of the cost tables define the amount of a bonus granted by an item property, but there are other possibilities.) |
Param1ResRef | 9 | **** if not applicable or index in iprp_paramtable.2da | An index into iprp_paramtable.2da , indicating what meaning should be given to the "parameter 1 value" of item properties corresponding to this row. (This is often used for properties that effectively need two subtypes, such as a damage bonus versus an alignment, which needs both an alignment subtype and a damage type parameter.) |
GameStrRef | 5476 | TLK string reference | A StringRef for the name of the item property type corresponding to this row, as displayed in the game when an item is examined and in the toolset in the item properties chosen list. This includes following colon if needed, eg: "Enchantment Bonus: ". The final string is usually something like "Enchantment Bonus: Strength +3" with this part just being up until the ":", the rest uses the other 2da files to fill in. |
Description | 1077 | **** or TLK string reference | This should be available if you press F1 on an item property in the toolset but NWN:EE this doesn't work. In any case many are blanked out. |
iprp_costtable.2da
Cost table provide the variable values, such as 20%, or +5, or -1 that then get an associated change to the items cost (up or down). For instance a +5 Enchantment is priced at a 4.9 multiplier. Sometimes these tables have additional parameter fields, such as for additional damage how many dice and how many sides those dice have.
Note: Empty lines in this file can cause a client crash. Ensure every line is fully filled in. If you need to remove an entry, fully delete it (do not simply use **** )
Column | Example Contents | Valid Values | Description and Notes |
---|---|---|---|
Name | IPRP_BONUSCOST | 2da ResRef or **** if not applicable | The ResRef of the .2da file (without the .2da extension) to be used to interpret the cost table values of item properties whose type references this row. Note line 0, or IPRP_BASE1.2da is intentionally empty, meaning you get the property or not there is no "sub choices" involved. For instance "Darkvision" is just a singular property. This is also used for ones where it is a set list - eg; "Immunity: Death Spells" doesn't need a variable (Immunity: Death Spells +1 etc.) Do not try and make sense of the names of these, it seems Bioware just reused them randomly and arbitarily so the names make little sense. See descriptions below. |
Label | Bonus | Text | A descriptive name for this row for the benefit of human readers. The game ignores the value of this column. |
ClientLoad | 0 | 0 - Server only 1 - Clients can load | A one or zero indicating whether or not this row's cost table is one a client can safely load, rather than relying on the server to provide information. It is likely to do with how Light and Melee cause VFX changes. Since "Material" "Quality" and "Additional_Property" all set this to 0, any new custom properties should probably do the same. |
iprp_paramtable.2da
These parameters are tertiary - eg; the frequency and duration of an On Hit effect, or the damage type (Acid, Fire etc.) that is applied to an item property in more complicated properties like "Damage Type: Versus Specific Alignment" which needs the base choice (alignment) the amount (+5 damage) and type (Type: Fire).
Some cost table 2das reference this and will be noted below for ease of use, however no property has more than one parameter table listed - even though it is implied On Monster Hit: Ability Damage used to (it doesn't seem to use it though, not listed in the toolset at all!).
Column | Example Contents | Valid Values | Description and Notes |
---|---|---|---|
Name | 966 | Dialog.tlk string reference | A StringRef for a name describing what this row represents. |
Lable | Type | Text | A descriptive name for this row for the benefit of human readers. The game ignores the value of this column (which may be why this column was never changed to "Label"). |
TableResRef | IPRP_DAMAGETYPE | 2da ResRef or **** if not applicable | The ResRef of the .2da file (without the .2da extension) to be used to interpret the parameter 1 values of item properties whose type references this row. |
Item Costs
Item costs calculations are detailed in the Bioware GFF documentation for Items.
It's a tad messy there and may get ported here at some stage.
You can also workaround it since it is only really done in two ways;
- Items created in toolset - These can have the costs changed with the Additional Cost field, or GFF edited so the base cost is changed. The game doesn't recalculate it dynamically...unless...
- You add properties dynamically with crafting - usually you mark crafted items so they can't be sold, some combinations get very pricey.
Hardcoded 2DA Limits
Note that there may be several limits to the amount of 2da lines for additions to these 2das. Generally this might be more an issue client-side then server-side, but for instance this issue raised means extra iprp_damagecost.2da entries can bug out if going over line 128.
Default Item Properties List and associated IPRP and other 2das and if they can be edited
To follow linking to subpages so you can follow how Bioware set up a lot of the hardcoded ones to make edits and adjustments. Ones without links may have a description or note on what cannot be changed - such as fixed amounts of alignments.
Green fields mark ones you can alter - by adding new entries - to expand the possibilities (either the amount of change the property has, entries for it like -6, or -7 instead of a cap of -5, or spells usable with it, etc.).
Blue lines are locked and hardcoded entirely except possibly the cost values associated with the property.
Red lines are unused/unusable and can be ignored even if they have defined constants (might move these to a "cut lines" area since they get in the way).
"Automatic weapon VFX?" refers to the model visual effects - and can be overriden with the item property "VisualEffect" far down this 2da.
The table now lists constants and useful information, not useless information like the number that references iprp_costtable.2da.
ID | Label | nwscript constant value | SubTypeResRef | Subtype Constant | iprp_costtable.2da row entry | Cost Table Constant | iprp_paramtable.2da row entry | Param Table Constant | Automatic weapon VFX? | Description and Notes |
---|---|---|---|---|---|---|---|---|---|---|
0 | Ability | ITEM_PROPERTY_ABILITY_BONUS | IPRP_ABILITIES | ABILITY_TYPE_* IP_CONST_ABILITY_* | IPRP_BONUSCOST | N/A use raw numbers. | Ability increases such as "Strength [+1]". List of abilities is hardcoded so no need to edit IPRP_ABILITIES. IP_CONST_ABILITY_* matches ABILITY_TYPE Magical ability bonuses are capped as per game options (default: +12). | |||
1 | Armor | ITEM_PROPERTY_AC_BONUS | **** | IPRP_MELEECOST | N/A use raw numbers. | AC increase bonus such as "AC Bonus [+5]". Type depends on the item type - noting only equipped items can have this. | ||||
2 | ArmorAlignmentGroup | ITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUP | IPRP_ALIGNGRP | ALIGNMENT_* IP_CONST_ALIGNMENT_GROUP_* | IPRP_MELEECOST | N/A use raw numbers. | Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any value | AC versus Alignment Group. IPRP_ALIGNGRP is uneditable, and contains the core alignment groupings NEUTRAL, LAWFUL, CHAOTIC, GOOD, EVIL - IP_CONST_ALIGNMENTGROUP_* which is the same as ALIGNMENT_* constants. | ||
3 | ArmorDamageType | ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE | IPRP_COMBATDAM | IP_CONST_DAMAGETYPE_* (BLUDGEONING, PIERCING and SLASHING only) | IPRP_MELEECOST | N/A use raw numbers. | AC versus Damage Type. Note this means base weapon damage type. Weapons with two types take the best option here (eg a Halberd versus +5 AC versus slashing armor, can attack as piercing and ignore it). IPRP_COMBATDAM can't have more types added, and consists of IP_CONST_DAMAGETYPE_* for 3 values (Bludgeoning, Piercing and Slashing). | |||
4 | ArmorRacialGroup | ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP | racialtypes | RACIAL_TYPE_* IP_CONST_RACIALTYPE_* | IPRP_MELEECOST | N/A use raw numbers. | AC versus Racial Group | |||
5 | ArmorSpecificAlignment | ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT | IPRP_ALIGNMENT | IP_CONST_ALIGNMENT_* | IPRP_MELEECOST | N/A use raw numbers. | Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any value | AC versus Specific Alignment. IPRP_ALIGNMENT isn't editable, and consists of IP_CONST_ALIGNMENT_* constants for each of the 9 alignments. | ||
6 | Enhancement | ITEM_PROPERTY_ENHANCEMENT_BONUS | **** | IPRP_MELEECOST | N/A use raw numbers. | Weapon enchantment. Goes through damage reduction effects if sufficiently high. Eg: "Enchantment +4" On gloves it applies to unarmed attacks if you have FEAT_UNARMED_FIGHTING | ||||
7 | EnhancementAlignmentGroup | ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_ALIGNMENT_GROUP | IPRP_ALIGNGRP | ALIGNMENT_* IP_CONST_ALIGNMENT_GROUP_* | IPRP_MELEECOST | N/A use raw numbers. | Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any value | Weapon enchantment versus Alignment Group. IPRP_ALIGNGRP is uneditable, and contains the core alignment groupings NEUTRAL, LAWFUL, CHAOTIC, GOOD, EVIL - IP_CONST_ALIGNMENTGROUP_* | ||
8 | EnhancementRacialGroup | ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP | racialtypes | RACIAL_TYPE_* IP_CONST_RACIALTYPE_* | IPRP_MELEECOST | N/A use raw numbers. | Weapon enchantment versus Racial Group | |||
9 | EnhancementSpecificAlignment | ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_SPECIFIC_ALIGNEMENT | IPRP_ALIGNMENT | IP_CONST_ALIGNMENT_* | IPRP_MELEECOST | N/A use raw numbers. | Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any value | Weapon enchantment versus Specific Alignment. IPRP_ALIGNMENT isn't editable, and consists of IP_CONST_ALIGNMENT_* constants for each of the 9 alignments. | ||
10 | AttackPenalty | ITEM_PROPERTY_DECREASED_ENHANCEMENT_MODIFIER | **** | IPRP_NEG5COST | N/A use raw numbers (but positive, eg; 3 is actually -3 to the persons attack and damage). | In spite of the label this is an Enchantment Penalty; so negative attack and damage. In fact the toolset lists it as "Attack and Damage Penalty" since you can't technically get negative enchantment bonuses, although the item property function is indeed called ItemPropertyEnhancementPenalty. | ||||
11 | WeightReduction | ITEM_PROPERTY_BASE_ITEM_WEIGHT_REDUCTION | **** | IPRP_WEIGHTCOST | Base Item Weight Reduction, by percentage | |||||
12 | BonusFeats | ITEM_PROPERTY_BONUS_FEAT | IPRP_FEATS | IPRP_BASE1 | Bonus feats. You can add the vast majority of feat.2da to IPRP_FEATS to have them available, dynamically, to creatures by attaching them as item properties. IPRP_BASE1 doesn't mean anything, there are no "parameters" for the feat chosen. Possibly a placeholder from before feats were fully finalised (perhaps subfeats you chose were going to be a thing). | |||||
13 | SingleBonusSpellOfLevel | ITEM_PROPERTY_BONUS_SPELL_SLOT_OF_LEVEL_N | Classes | IPRP_SPELLLVCOST | A set bonus spell slot. Since this references classes.2da, in NWN:EE dynamic and new spellbooks should work with it properly. The levels are hardcoded (there is no way to add proper level 10 spell slots) but you could alter the Cost field. | |||||
14 | Boomerang | **** | Unused line (note description TLK references something entirely different now). Presumably was going to be a way to have a singlular magic throwing weapon return to the persons hand. A shame it doesn't work! | |||||||
15 | CastSpell | ITEM_PROPERTY_CAST_SPELL | IPRP_SPELLS | IPRP_CHARGECOST | IP_CONST_CASTPSELL_NUMUSES_* | Casts a spell. Spells are defined with a caster level but not save DC as that is calculated "automatically" (basically 10 + 3 + spell level, as if they had an ability score of 16). | ||||
16 | Damage | ITEM_PROPERTY_DAMAGE_BONUS | IPRP_DAMAGETYPE | IP_CONST_DAMAGETYPE_* | IPRP_DAMAGECOST | IP_CONST_DAMAGEBONUS_* | Yes - depends on damage type and amount, see iprp_damagecost | Bonus Damage when a strike occurs. Can also show flashy, albeit hardcoded, VFX. See VisualEffects for a more up to date and unhardcoded way to add model VFX however. Need to check out SUBDUAL and PHYSICAL DAMAGETYPE constants. Do they work? (if they were not blanked out) | ||
17 | DamageAlignmentGroup | ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP | IPRP_ALIGNGRP | ALIGNMENT_* IP_CONST_ALIGNMENT_GROUP_* | IPRP_DAMAGECOST | IPRP_DAMAGETYPE | Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" if non-special damage types are used (eg Buldgeoning, Magical, but not Fire etc.) | Bonus damage against an alignment group | ||
18 | DamageRacialGroup | ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP | racialtypes | RACIAL_TYPE_* IP_CONST_RACIALTYPE_* | IPRP_DAMAGECOST | IPRP_DAMAGETYPE | Yes - depends on damage type and amount, see iprp_damagecost | Bonus damage against a racial group | ||
19 | DamageSpecificAlignment | ITEM_PROPERTY_DAMAGE_BONUS_VS_SPECIFIC_ALIGNMENT | IPRP_ALIGNMENT | IP_CONST_ALIGNMENT_* | IPRP_DAMAGECOST | IPRP_DAMAGETYPE | Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" if non-special damage types are used (eg Buldgeoning, Magical, but not Fire etc.) | Bonus damage against a specific alignment | ||
20 | DamageImmunity | ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE | IPRP_DAMAGETYPE | IPRP_IMMUNCOST | Damage immunity percent reducing damage from a specific damage type. | |||||
21 | DamagePenalty | ITEM_PROPERTY_DECREASED_DAMAGE | **** | IPRP_NEG5COST | Damage penalty. Note: Damage penalties are weird insofar as how they work and 1 damage is always applied (if the target can't resist/soak it) | |||||
22 | DamageReduced | ITEM_PROPERTY_DAMAGE_REDUCTION | IPRP_PROTECTION | IPRP_SOAKCOST | Damage reduction; ie Stoneskin-like +5/20 needing a +5 weapon to bypass, else 20 damage is stopped. | |||||
23 | DamageResist | ITEM_PROPERTY_DAMAGE_RESISTANCE | IPRP_DAMAGETYPE | IPRP_RESISTCOST | Damage resistance; ie Endure Elements-like, -/10 for a certain damage type, where the first 10 is always stopped. Very powerful. | |||||
24 | Damage_Vulnerability | ITEM_PROPERTY_DAMAGE_VULNERABILITY | IPRP_DAMAGETYPE | IPRP_DAMVULCOST | Damage vunerability percent increasing damage from a specific damage type. | |||||
25 | Dancing_Scimitar | **** | Unused line - however the description line shows what it originally was for: "Dancing (Summon Scimitar): This property allows the item to summon a weapon that can fight on its own. The summoned weapon lasts for four rounds, and attacks using the base attack bonus of the wielder.". This could be scripted via. a normal activation property more or less. | |||||||
26 | Darkvision | ITEM_PROPERTY_DARKVISION | **** | IPRP_BASE1 | Simply adds Darkvision as per the feat. Oddly no "Low Light Vision". | |||||
27 | DecreaseAbilityScore | ITEM_PROPERTY_DECREASED_ABILITY_SCORE | IPRP_ABILITIES | IPRP_NEG10COST | Decreases given ability score, down to a minimum of 3. | |||||
28 | DecreaseAC | ITEM_PROPERTY_DECREASED_AC | IPRP_ACMODTYPE | ARMOR_TYPE_* IP_CONST_ACMODIFIER_TYPE_* | IPRP_NEG5COST | Decreases the base AC of the item by the amount given. IP_CONST_AC_MODIFIER_TYPE_* is the same as ARMOR_TYPE_* constants. | ||||
29 | DecreasedSkill | ITEM_PROPERTY_DECREASED_SKILL_MODIFIER | Skills | IPRP_NEG10COST | Decreases the given skill by a certain amount. Not tested if it can make it negative. | |||||
30 | DoubleStack | **** | Unused line - however the description line shows what it originally was for: "Double Stack: This property allows items to be stacked in higher quantities. Arrows that are normally stacked in piles of 20 could be stacked in piles of 40 with this property.". Unlikely needed given how the inventory turned out. Presumably inventory was going to be more Baldurs-Gate like at one point with one item per slot. Interesting how the dialog.tlk contains all the references however. | |||||||
31 | EnhancedContainer_BonusSlot | **** | Unused line (note description TLK references something entirely different now). Presumably inventory was going to be more Baldurs-Gate like at one point with one item per slot, and containers adding additional slots, before it got turned into the tetris system. | |||||||
32 | EnhancedContainer_Weight | ITEM_PROPERTY_ENHANCED_CONTAINER_REDUCED_WEIGHT | **** | IPRP_REDCOST | Magic bags. All contents inside the container have their weight reduced by this percentage. | |||||
33 | DamageMelee | ITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPE | IPRP_COMBATDAM | IP_CONST_DAMAGETYPE_* (BLUDGEONING, PIERCING and SLASHING only) | IPRP_BASE1 | Extra Melee Damage type, eg; adding bludgeoning to a sword, makes it able to bypass slashing resistances. Hardcoded although you could alter the Cost fields. | ||||
34 | DamageRanged | ITEM_PROPERTY_EXTRA_RANGED_DAMAGE_TYPE | IPRP_COMBATDAM | IP_CONST_DAMAGETYPE_* (BLUDGEONING, PIERCING and SLASHING only) | IPRP_BASE1 | Extra Ranged Damage type, eg; adding slashing to a crossbow, makes it able to bypass piercing resistances. Hardcoded although you could alter the Cost fields. | ||||
35 | Haste | ITEM_PROPERTY_HASTE | **** | IPRP_BASE1 | Permament magical haste as per EffectHaste. Super overpowered of course. | |||||
36 | HolyAvenger | ITEM_PROPERTY_HOLY_AVENGER | **** | IPRP_BASE1 | Yes - it applies "fxholy" | A special On Hit property with insane bonuses; Holy Avenger is an item property that, when used by paladin, acts like a +5 enhancement holy weapon that dispels magic on hit, delivers an additional +1d6 divine damage against evil aligned creatures, and grants the caster a spell resistance of 16. Only a paladin can gain the benefit of this property on a weapon. If the character has no paladin levels, this counts as a +2 enhancement with the dispel ability. Dispelling:
There is a single ruleset.2da value for this property - HOLY_AVENGER_ITEM_PROPERTY_SR_BONUS, set to 16 by default. | ||||
37 | Immunity | ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS | IPRP_IMMUNITY | IPRP_BASE1 | Immunity to specific overarching effect types. These are hardcoded. | |||||
38 | ImprovedEvasion | ITEM_PROPERTY_IMPROVED_EVASION | **** | IPRP_BASE1 | Simply adds the bonuses from the Feat: Improved Evasion, as if they had it. | |||||
49 | ImprovedMagicResist | ITEM_PROPERTY_SPELL_RESISTANCE | **** | IPRP_SRCOST | Sets the creatures spell resistance to the given value. Highest spell resistance number available counts, they don't add up. | |||||
40 | ImprovedSavingThrows | ITEM_PROPERTY_SAVING_THROW_BONUS | IPRP_SAVEELEMENT | IPRP_MELEECOST | Additional general saving throw bonus, either "Universal" (all) or a specific subtype (eg: "Trap"). | |||||
41 | ImprovedSavingThrowsSpecific | ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC | IPRP_SAVINGTHROW | IPRP_MELEECOST | Additional saving throw of the overarching types; Will, Fortitude and Reflex. | |||||
42 | **** | **** | Unused line, not used in the engine but referenced as "BONUS_STAMINA", make of that what you will. | |||||||
43 | Keen | ITEM_PROPERTY_KEEN | **** | IPRP_BASE1 | Expands the critical range of the weapon equal to the base range, eg: 19-20 becomes 17-20. Still needs to hit to be a critical. | |||||
44 | Light | ITEM_PROPERTY_LIGHT | **** | IPRP_LIGHTCOST | IPRP_COLOR | Light VFX is applied when this is worn. Only one works and the "brightest" seems to be what applies (eg if you have 5M from an item and "Light" spell is cast using 20M light - the spell takes precidence). Note this is most likely hardcoded (change this if you find it isn't). The lines in visualeffects.2da are used - 153 - 180 (Blue, Yellow, Purple, Red, Orange, White, Green with 5 - 20 distances). It links to progfx.2da lines if you wonder what model file and settings are used. | ||||
45 | Mighty | ITEM_PROPERTY_MIGHTY | **** | IPRP_MELEECOST | Mighty ranged weapons allow the strength bonus to be added to damage, up to the given cap eg: Mighty +5 allows up to 5 additional base weapon damage if you had 20 strength, but 22 strength won't add +6. | |||||
46 | MindBlank | ITEM_PROPERTY_MIND_BLANK | **** | Unused line, from the description: "Mind Blank: This property makes the wielder immune to all mind-affecting spells, such as Charm Person and Confusion.". Obviously removed once they added ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS | ||||||
47 | DamageNone | ITEM_PROPERTY_NO_DAMAGE | **** | IPRP_BASE1 | Makes the base weapon damage 0, ie; a shortsword with it no longer does 1-6 damage, it does 0. Still can add additional On Hit or Extra Damage effects, and I forget but I think it still adds strength bonus and other things. Hardcoded, there are no editable properties for this except cost. | |||||
48 | OnHit | ITEM_PROPERTY_ON_HIT_PROPERTIES | IPRP_ONHIT | IPRP_ONHITCOST | Special: in iprp_onhit.2da it lists these references: 1 - IPRP_DAMAGETYPE 2 - IPRP_ONHITDUR 3 - IPRP_ABILITIES 4 - IPRP_ALIGNGRP 5 - IPRP_ALIGNMENT 6 - racialtypes 10 - IPRP_POISON | Yes - if "Vorpal", "Level Drain" or "Wounding" it applies "fxneg". | Applies a on hit property. One of the most complicated types of item effect. You have 3 parts:
Most of the properties themselves (like what effects) are hardcoded (see iprp_onhit.2da) but the actual variables (such as chance, DC and duration) can be modified. | |||
49 | ReducedSavingThrows | ITEM_PROPERTY_DECREASED_SAVING_THROWS | IPRP_SAVEELEMENT | IPRP_NEG5COST | Reduced general saving throw bonus, either "Universal" (all) or a specific subtype (eg: "Trap"). | |||||
50 | ReducedSpecificSavingThrow | ITEM_PROPERTY_DECREASED_SAVING_THROWS_SPECIFIC | IPRP_SAVINGTHROW | IPRP_NEG5COST | Reduced specific saving throws, eg: Reflex -5 only applied to Reflex saves. | |||||
51 | Regeneration | ITEM_PROPERTY_REGENERATION | **** | IPRP_MELEECOST | Regeneration as per EffectRegenerate, applied permanently. Insanely powerful and breaks OnDying scripts by default (creatures don't get a dying phase) | |||||
52 | Skill | ITEM_PROPERTY_SKILL_BONUS | skills | IPRP_SKILLCOST | Increase to a specific skill. | |||||
53 | SpellImmunity_Specific | ITEM_PROPERTY_IMMUNITY_SPECIFIC_SPELL | **** | IPRP_SPELLCOST | Immunity to a particular spell. Only the spells listed in iprp_spellcost.2da are valid for this, which means some spells you'd expect to be there may not be and others that are in there don't properly use ResistSpell to check for them (but may do custom checks, eg; Petrifying Gaze). | |||||
54 | SpellSchool_Immunity | ITEM_PROPERTY_IMMUNITY_SPELL_SCHOOL | IPRP_SPELLSHL | IPRP_BASE1 | Immunity to a particular spell school, again not all spells may be affected since ResistSpell may not be used everywhere, and only spells are affected (not monster abilities). The spell schools list are hardcoded in the engine, alas, although Cost fields may be editable. | |||||
55 | ThievesTools | ITEM_PROPERTY_THIEVES_TOOLS | **** | IPRP_SKILLCOST | Thieves Tools properties. Allows better unlock checks if used as an item property on a locked object. Editable values but there is a range of up to +20 already (although admittedly the costs do not scale...well...for this). | |||||
56 | AttackBonus | ITEM_PROPERTY_ATTACK_BONUS | **** | IPRP_MELEECOST | Attack bonus for a weapon. This does not add extra damage like Enchantment Bonuses do but it does pierce soak damage (like Stoneskin) the same way. Mainly used on ranged weapons - not sure why Enchantment bonuses wer not used for ranged weapons. | |||||
57 | AttackBonusAlignmentGroup | ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP | IPRP_ALIGNGRP | IPRP_MELEECOST | Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any value | Attack bonus versus an alignment group. | ||||
58 | AttackBonusRacialGroup | ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP | racialtypes | RACIAL_TYPE_* IP_CONST_RACIALTYPE_* | IPRP_MELEECOST | Attack bonus versus a racial group. | ||||
59 | AttackBonusSpecificAlignment | ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT | IPRP_ALIGNMENT | IP_CONST_ALIGNMENT_* | IPRP_MELEECOST | Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any value | Attack bonus versus a specific alignment. | |||
60 | ToHitPenalty | ITEM_PROPERTY_DECREASED_ATTACK_MODIFIER | **** | IPRP_NEG5COST | N/A use raw numbers (but positive, eg; 3 is actually -3 to the persons attack). | Essentially an Attack Penalty. Used on ranged weapons. | ||||
61 | UnlimitedAmmo | ITEM_PROPERTY_UNLIMITED_AMMUNITION | IPRP_AMMOTYPE | IP_CONST_AMMOTYPE_* | IPRP_AMMOCOST | IP_CONST_UNLIMITEDAMMO_* | Unlimited ammo - of a particular kind as determined in the IPRP_AMMOTYPE list, however this is restricted to the weapon type you've chosen to add it to (eg; Crossbows will get just "Bolt"). Possibly this hints that ammo types might be more varied (perhaps with "better bolts" or somesuch). | |||
62 | UseLimitationAlignmentGroup | ITEM_PROPERTY_USE_LIMITATION_ALIGNMENT_GROUP | IPRP_ALIGNGRP | ALIGNMENT_* IP_CONST_ALIGNMENT_GROUP_* | IPRP_BASE1 | Adds a Alignment Group limitation to use the item that Use Magical Device can bypass. Multiples mean "OR" but is "AND" with any other limitations. DMs and NPCs can ignore this (and the identified flag). | ||||
63 | UseLimitationClass | ITEM_PROPERTY_USE_LIMITATION_CLASS | Classes | CLASS_TYPE_* (IP_CONST_CLASS_* is incomplete) | IPRP_BASE1 | Adds a Class limitation to use the item that Use Magical Device can bypass. Multiples mean "OR" but is "AND" with any other limitations. DMs and NPCs can ignore this (and the identified flag). Editable insofar as it detects changes to classes.2da you make. IP_CONST_CLASS_* is a subset of the CLASS_TYPE_* lines. In reality it can be any classes.2da line, even prestiege classes. | ||||
64 | UseLimitationRacial | ITEM_PROPERTY_USE_LIMITATION_RACIAL_TYPE | racialtypes | RACIAL_TYPE_* IP_CONST_RACIALTYPE_* | IPRP_BASE1 | Adds a Racial Type limitation to use the item that Use Magical Device can bypass. Multiples mean "OR" but is "AND" with any other limitations. DMs and NPCs can ignore this (and the identified flag). Editable insofar as it detects changes to racialtypes.2da you make. | ||||
65 | UseLimitationSpecificAlignment | ITEM_PROPERTY_USE_LIMITATION_SPECIFIC_ALIGNMENT | IPRP_ALIGNMENT | IP_CONST_ALIGNMENT_* | IPRP_BASE1 | Adds a Specific Alignment limitation to use the item that Use Magical Device can bypass. Multiples mean "OR" but is "AND" with any other limitations. DMs and NPCs can ignore this (and the identified flag). | ||||
66 | UseLimitationTerrain | ITEM_PROPERTY_USE_LIMITATION_TILESET | IPRP_TERRAINTYPE | IPRP_BASE1 | Unused line, "Tileset Limitation: This property limits the imbued item to a specific tileset (Forest, Crypt, and so on)." - a great shame, you can't have a weapon usable, say, only in Forests. You could script something equivalent mostly however. | |||||
67 | VampiricRegeneration | ITEM_PROPERTY_REGENERATION_VAMPIRIC | **** | IPRP_MELEECOST | Yes - it applies "fxneg" if VFX is 1 for that value amount in iprp_meleecost.2da (default: +4 and higher) | When the item hits (and damages?) it heals the user by a certain amount. | ||||
68 | Vorpal | **** | Unused line, Vorpal, Wounding and Poison are On Hit item properties (OnHit/OnMonsterHit). | |||||||
69 | Wounding | **** | Unused line, Vorpal, Wounding and Poison are On Hit item properties (OnHit/OnMonsterHit). | |||||||
70 | Trap | ITEM_PROPERTY_TRAP | IPRP_TRAPS | IPRP_TRAPCOST | Trap item properties, when used, will destroy the trap inventory object and place a trigger on the ground of that trap type. | |||||
71 | True_Seeing | ITEM_PROPERTY_TRUE_SEEING | **** | IPRP_BASE1 | Adds a permanent EffectTrueSeeing to the creature. Insanely powerful, used usually only on top tier bosses. Uneditable except the cost field. | |||||
72 | OnMonsterHit | ITEM_PROPERTY_ON_MONSTER_HIT | IPRP_MONSTERHIT | IPRP_BASE1 (fake: see description) | Param1ResRefs include: 2 - IPRP_ABILITIES 6 - disease 7 - IPRP_AMOUNT 8 - poison And Param2ResRef (unused) includes: 7 - IPRP_AMOUNT | iprp_monsterhit references Param1ResRef and Param2ResRef for double parameters, the only item property to do so. For this reason it seems Bioware made it so that second parameter isn't even used - the only one that references it is On Monster Hit: Ability Drain, which would have had a variable amount for it - eg;
Instead it just does a singlular point of damage since Param2ResRef is unused. It also means these tend to not have % chance to activate, DC or other changed settings as the usual On Hit does. However you can edit most of them to include, say, more diseases and more poisons. See iprp_monsterhit.2da for more information. | ||||
73 | Turn_Resistance | ITEM_PROPERTY_TURN_RESISTANCE | **** | IPRP_SKILLCOST | Adds turn resistance to the creature as per EffectTurnResistanceIncrease. Essentially GetTurnResistanceHD is altered adding on any turn resistance to the monsters HP for use in the Turn Undead feat script. Editable but the amount of range goes up really high so not really worth editing it. | |||||
74 | Massive_Criticals | ITEM_PROPERTY_MASSIVE_CRITICALS | **** | IPRP_DAMAGECOST | When a critical occurs this amount is added onto the damage. | |||||
75 | Freedom_of_Movement | ITEM_PROPERTY_FREEDOM_OF_MOVEMENT | **** | IPRP_BASE1 | Permanent immunity to Paralysis, Slow, Entangle and Movement Speed Decrease effects (as if you'd applied them separately). Hardcoded, only cost can be edited. Why it's not in the Immunity: XXX item property who knows. | |||||
76 | Poison | ITEM_PROPERTY_POISON | poison | Unused line, Vorpal, Wounding and Poison are On Hit item properties (OnHit/OnMonsterHit). | ||||||
77 | Monster_damage | ITEM_PROPERTY_MONSTER_DAMAGE | **** | IPRP_MONSTCOST | Creature Weapons by default have no damage - this property is used to change the amount of damage the weapons actually do (with a 20-20 critical range, and x2 damage). | |||||
78 | Immunity_To_Spell_By_Level | ITEM_PROPERTY_IMMUNITY_SPELLS_BY_LEVEL | **** | IPRP_SPELLLVLIMM | Applies a permanent EffectSpellLevelAbsorption that is similar to Spell Globes which absorb all spells that have spell resistance checks of a certain level, and lower. Hardcoded of course, excepting the cost field. | |||||
79 | Special_Walk | ITEM_PROPERTY_SPECIAL_WALK | IPRP_WALK | IPRP_BASE1 | Special walks now in NWN:EE can be added this way, such as "drunk walking". The only default Bioware option is Zombie walking, which is added to their hide. | |||||
80 | Healers_Kit | ITEM_PROPERTY_HEALERS_KIT | **** | IPRP_SKILLCOST | Healers Kit use the Heal skill plus the bonus amount from this item to heal hit points and remove disease and poison. Editable values but there is a huge range of up to +50 already (although admittedly the costs do not scale...well...for this). | |||||
81 | Weight_Increase | ITEM_PROPERTY_WEIGHT_INCREASE | **** | IPRP_BASE1 | IPRP_WEIGHTINC | Weight increases make an item heavier by a certain amount. | ||||
82 | OnHitCastSpell | ITEM_PROPERTY_ONHITCASTSPELL | IPRP_ONHITSPELL | IPRP_SPELLCSTR | When a item hits a target it fires a particular spell script at the given caster level. | |||||
83 | VisualEffect | ITEM_PROPERTY_VISUALEFFECT | IPRP_VISUALFX | Overrides any "default" VFX in this column if set. | Applies a weapon VFX permanently, and in NWN:EE is allowed to be new ones. | |||||
84 | ArcaneSpellFailure | ITEM_PROPERTY_ARCANE_SPELL_FAILURE | **** | IPRP_ARCSPELL | Adds or removes arcane spell failure, when a Bard, Sorcerer or Wizard wears armour it is the % chance the spell outright fails. | |||||
85 | Material | ITEM_PROPERTY_MATERIAL | **** | IPRP_MATCOST | Added at the tail end of NWN's development, and has no "real property" in the engine, but can be checked for by scripts. A good default selection of "Materials" is already presence to identify an item. | |||||
86 | Quality | ITEM_PROPERTY_QUALITY | **** | IPRP_QUALCOST | Added at the tail end of NWN's development, and has no "real property" in the engine, but can be checked for by scripts. A good default selection of "Quality" values is already presence to identify an item. | |||||
87 | Additional_Property | ITEM_PROPERTY_ADDITIONAL | **** | IP_CONST_ADDITIONAL_* | IPRP_ADDCOST | Added at the tail end of NWN's development, and has no "real property" in the engine, but can be checked for by scripts. This contains only two additional properties, "Unknown" and "Cursed" so needs some 2da edits to make real use of. |
a