Page tree
Skip to end of metadata
Go to start of metadata

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:

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.

ColumnExample ContentsValid ValuesDescription and Notes
0_Melee through 21_Glove1

**** 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.

StringRef649Dialog.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

LabelAbility_BonusTextHuman 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").

ColumnExample ContentsValid ValuesDescription and Notes
Name649TLK string referenceA StringRef for the name of the item property type corresponding to this row, used in the toolset - so example would be 649: "Ability Bonus".
LabelAbilityTextA descriptive name identifying this row. This is for the reference of the human reader and is ignored by the game.
SubTypeResRefIPRP_ABILITIES2da 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.)

Cost1.2FloatThis value is to do with the cost calculations see Item Costs below.
CostTableResRef1**** if not applicable or index in iprp_costtable.2daAn 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.)
Param1ResRef9**** if not applicable or index in iprp_paramtable.2daAn 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.)
GameStrRef5476TLK string referenceA 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.
Description1077**** or TLK string referenceThis 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 **** )


ColumnExample ContentsValid ValuesDescription and Notes
NameIPRP_BONUSCOST2da 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.

LabelBonusTextA descriptive name for this row for the benefit of human readers. The game ignores the value of this column.
ClientLoad0

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!).

ColumnExample ContentsValid ValuesDescription and Notes
Name966Dialog.tlk string referenceA StringRef for a name describing what this row represents.
LableTypeTextA 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").
TableResRefIPRP_DAMAGETYPE2da ResRef or **** if not applicableThe 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.

IDLabelnwscript constant valueSubTypeResRefSubtype Constantiprp_costtable.2da row entryCost Table Constantiprp_paramtable.2da row entryParam Table ConstantAutomatic weapon VFX?Description and Notes
0AbilityITEM_PROPERTY_ABILITY_BONUSIPRP_ABILITIES

ABILITY_TYPE_*

IP_CONST_ABILITY_*

IPRP_BONUSCOSTN/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).

1ArmorITEM_PROPERTY_AC_BONUS****
IPRP_MELEECOSTN/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.
2ArmorAlignmentGroupITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUPIPRP_ALIGNGRP

ALIGNMENT_*

IP_CONST_ALIGNMENT_GROUP_*

IPRP_MELEECOSTN/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.

3ArmorDamageTypeITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPEIPRP_COMBATDAMIP_CONST_DAMAGETYPE_* (BLUDGEONING, PIERCING and SLASHING only)IPRP_MELEECOSTN/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).

4ArmorRacialGroupITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUPracialtypes

RACIAL_TYPE_*

IP_CONST_RACIALTYPE_*

IPRP_MELEECOSTN/A use raw numbers.


AC versus Racial Group
5ArmorSpecificAlignmentITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENTIPRP_ALIGNMENTIP_CONST_ALIGNMENT_*IPRP_MELEECOSTN/A use raw numbers.

Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any valueAC versus Specific Alignment. IPRP_ALIGNMENT isn't editable, and consists of IP_CONST_ALIGNMENT_* constants for each of the 9 alignments.
6EnhancementITEM_PROPERTY_ENHANCEMENT_BONUS****
IPRP_MELEECOSTN/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

7EnhancementAlignmentGroupITEM_PROPERTY_ENHANCEMENT_BONUS_VS_ALIGNMENT_GROUPIPRP_ALIGNGRP

ALIGNMENT_*

IP_CONST_ALIGNMENT_GROUP_*

IPRP_MELEECOSTN/A use raw numbers.

Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any valueWeapon enchantment versus Alignment Group. IPRP_ALIGNGRP is uneditable, and contains the core alignment groupings NEUTRAL, LAWFUL, CHAOTIC, GOOD, EVIL - IP_CONST_ALIGNMENTGROUP_*
8EnhancementRacialGroupITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUPracialtypes

RACIAL_TYPE_*

IP_CONST_RACIALTYPE_*

IPRP_MELEECOSTN/A use raw numbers.


Weapon enchantment versus Racial Group
9EnhancementSpecificAlignmentITEM_PROPERTY_ENHANCEMENT_BONUS_VS_SPECIFIC_ALIGNEMENTIPRP_ALIGNMENTIP_CONST_ALIGNMENT_*IPRP_MELEECOSTN/A use raw numbers.

Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any valueWeapon enchantment versus Specific Alignment. IPRP_ALIGNMENT isn't editable, and consists of IP_CONST_ALIGNMENT_* constants for each of the 9 alignments.
10AttackPenalty

ITEM_PROPERTY_DECREASED_ENHANCEMENT_MODIFIER

****
IPRP_NEG5COSTN/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.

11WeightReductionITEM_PROPERTY_BASE_ITEM_WEIGHT_REDUCTION****
IPRP_WEIGHTCOST



Base Item Weight Reduction, by percentage
12BonusFeatsITEM_PROPERTY_BONUS_FEATIPRP_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).

13SingleBonusSpellOfLevelITEM_PROPERTY_BONUS_SPELL_SLOT_OF_LEVEL_NClasses
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.

14Boomerang
****





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!
15CastSpellITEM_PROPERTY_CAST_SPELLIPRP_SPELLS
IPRP_CHARGECOSTIP_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).
16DamageITEM_PROPERTY_DAMAGE_BONUSIPRP_DAMAGETYPEIP_CONST_DAMAGETYPE_*IPRP_DAMAGECOSTIP_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)

17DamageAlignmentGroupITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUPIPRP_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
18DamageRacialGroupITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUPracialtypes

RACIAL_TYPE_*

IP_CONST_RACIALTYPE_*

IPRP_DAMAGECOST
IPRP_DAMAGETYPE
Yes - depends on damage type and amount, see iprp_damagecostBonus damage against a racial group
19DamageSpecificAlignmentITEM_PROPERTY_DAMAGE_BONUS_VS_SPECIFIC_ALIGNMENTIPRP_ALIGNMENTIP_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
20DamageImmunityITEM_PROPERTY_IMMUNITY_DAMAGE_TYPEIPRP_DAMAGETYPE
IPRP_IMMUNCOST



Damage immunity percent reducing damage from a specific damage type.
21DamagePenaltyITEM_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)
22DamageReducedITEM_PROPERTY_DAMAGE_REDUCTIONIPRP_PROTECTION
IPRP_SOAKCOST



Damage reduction; ie Stoneskin-like +5/20 needing a +5 weapon to bypass, else 20 damage is stopped.
23DamageResistITEM_PROPERTY_DAMAGE_RESISTANCEIPRP_DAMAGETYPE
IPRP_RESISTCOST



Damage resistance; ie Endure Elements-like, -/10 for a certain damage type, where the first 10 is always stopped. Very powerful.
24Damage_VulnerabilityITEM_PROPERTY_DAMAGE_VULNERABILITYIPRP_DAMAGETYPE
IPRP_DAMVULCOST



Damage vunerability percent increasing damage from a specific damage type.
25Dancing_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.
26DarkvisionITEM_PROPERTY_DARKVISION****
IPRP_BASE1



Simply adds Darkvision as per the feat. Oddly no "Low Light Vision".
27DecreaseAbilityScoreITEM_PROPERTY_DECREASED_ABILITY_SCOREIPRP_ABILITIES
IPRP_NEG10COST



Decreases given ability score, down to a minimum of 3.
28DecreaseACITEM_PROPERTY_DECREASED_ACIPRP_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.

29DecreasedSkillITEM_PROPERTY_DECREASED_SKILL_MODIFIERSkills
IPRP_NEG10COST



Decreases the given skill by a certain amount. Not tested if it can make it negative.
30DoubleStack
****





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.

31EnhancedContainer_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.
32EnhancedContainer_WeightITEM_PROPERTY_ENHANCED_CONTAINER_REDUCED_WEIGHT****
IPRP_REDCOST



Magic bags. All contents inside the container have their weight reduced by this percentage.
33DamageMeleeITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPEIPRP_COMBATDAMIP_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.

34DamageRangedITEM_PROPERTY_EXTRA_RANGED_DAMAGE_TYPEIPRP_COMBATDAMIP_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.

35HasteITEM_PROPERTY_HASTE****
IPRP_BASE1



Permament magical haste as per EffectHaste. Super overpowered of course.
36HolyAvengerITEM_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:

  • The dispel effect, whose caster level is 10, has a 50% chance of triggering.
  • Most of the spells of a level 20 caster are immune to the dispel effect, as the dispeller's best possible roll is 30 (20+10), while the DC is 31 (11+20). The exceptions involve bugs in determining the effective caster level
  • The dispel used by this weapon is powerful in that it can dispel petrified creatures which cannot be dispelled by spells. It does not, however, dispel extraordinary effects or supernatural effects.
  • The dispel effect will not trigger if no physical damage is inflicted by a hit. For example, if someone had epic warding up and was hit by a holy avenger for 50 points of damage or less (before damage reduction), the dispel effect will not trigger.

There is a single ruleset.2da value for this property - HOLY_AVENGER_ITEM_PROPERTY_SR_BONUS, set to 16 by default.

37ImmunityITEM_PROPERTY_IMMUNITY_MISCELLANEOUSIPRP_IMMUNITY
IPRP_BASE1



Immunity to specific overarching effect types. These are hardcoded.
38ImprovedEvasionITEM_PROPERTY_IMPROVED_EVASION****
IPRP_BASE1



Simply adds the bonuses from the Feat: Improved Evasion, as if they had it.
49ImprovedMagicResistITEM_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.
40ImprovedSavingThrowsITEM_PROPERTY_SAVING_THROW_BONUSIPRP_SAVEELEMENT
IPRP_MELEECOST



Additional general saving throw bonus, either "Universal" (all) or a specific subtype (eg: "Trap").
41ImprovedSavingThrowsSpecificITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFICIPRP_SAVINGTHROW
IPRP_MELEECOST



Additional saving throw of the overarching types; Will, Fortitude and Reflex.
42****
****





Unused line, unknown what this was potentially.
43KeenITEM_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.
44LightITEM_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.

45MightyITEM_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.
46MindBlankITEM_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 SpellImmunity_Specific.
47DamageNoneITEM_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.

48OnHitITEM_PROPERTY_ON_HIT_PROPERTIESIPRP_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:

  • Hit effect (eg: On Hit: Sleep)
  • DC (eg: DC 20)
  • Chance and Duration (eg: 25% / 3 Rounds)

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.

49ReducedSavingThrowsITEM_PROPERTY_DECREASED_SAVING_THROWSIPRP_SAVEELEMENT
IPRP_NEG5COST



Reduced general saving throw bonus, either "Universal" (all) or a specific subtype (eg: "Trap").
50ReducedSpecificSavingThrowITEM_PROPERTY_DECREASED_SAVING_THROWS_SPECIFICIPRP_SAVINGTHROW
IPRP_NEG5COST



Reduced specific saving throws, eg: Reflex -5 only applied to Reflex saves.
51RegenerationITEM_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)
52SkillITEM_PROPERTY_SKILL_BONUSskills
IPRP_SKILLCOST



Increase to a specific skill.
53SpellImmunity_SpecificITEM_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).
54SpellSchool_ImmunityITEM_PROPERTY_IMMUNITY_SPELL_SCHOOLIPRP_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.

55ThievesToolsITEM_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).

56AttackBonusITEM_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.
57AttackBonusAlignmentGroupITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUPIPRP_ALIGNGRP
IPRP_MELEECOST


Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any valueAttack bonus versus an alignment group.
58AttackBonusRacialGroupITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUPracialtypes

RACIAL_TYPE_*

IP_CONST_RACIALTYPE_*

IPRP_MELEECOST



Attack bonus versus a racial group.
59AttackBonusSpecificAlignmentITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENTIPRP_ALIGNMENTIP_CONST_ALIGNMENT_*IPRP_MELEECOST


Yes - if vs. Good it applies "fxneg", if vs. Evil it applies "fxholy" for any valueAttack bonus versus a specific alignment.
60ToHitPenaltyITEM_PROPERTY_DECREASED_ATTACK_MODIFIER****
IPRP_NEG5COSTN/A use raw numbers (but positive, eg; 3 is actually -3 to the persons attack).


Essentially an Attack Penalty. Used on ranged weapons.
61UnlimitedAmmoITEM_PROPERTY_UNLIMITED_AMMUNITIONIPRP_AMMOTYPEIP_CONST_AMMOTYPE_*IPRP_AMMOCOSTIP_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).
62UseLimitationAlignmentGroupITEM_PROPERTY_USE_LIMITATION_ALIGNMENT_GROUPIPRP_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).

63UseLimitationClassITEM_PROPERTY_USE_LIMITATION_CLASSClasses

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.

64UseLimitationRacialITEM_PROPERTY_USE_LIMITATION_RACIAL_TYPEracialtypes

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.

65UseLimitationSpecificAlignmentITEM_PROPERTY_USE_LIMITATION_SPECIFIC_ALIGNMENTIPRP_ALIGNMENTIP_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).
66UseLimitationTerrainITEM_PROPERTY_USE_LIMITATION_TILESETIPRP_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.
67VampiricRegenerationITEM_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.
68Vorpal
****





Unused line, Vorpal, Wounding and Poison are On Hit item properties (OnHit/OnMonsterHit).
69Wounding
****





Unused line, Vorpal, Wounding and Poison are On Hit item properties (OnHit/OnMonsterHit).
70TrapITEM_PROPERTY_TRAPIPRP_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.
71True_SeeingITEM_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.

72OnMonsterHitITEM_PROPERTY_ON_MONSTER_HITIPRP_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;

  • On Monster Hit: Ability Drain [Abilities: Strength] [Amount: 3]

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.

73Turn_ResistanceITEM_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.

74Massive_CriticalsITEM_PROPERTY_MASSIVE_CRITICALS****
IPRP_DAMAGECOST



When a critical occurs this amount is added onto the damage.
75Freedom_of_MovementITEM_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.

76PoisonITEM_PROPERTY_POISONpoison





Unused line, Vorpal, Wounding and Poison are On Hit item properties (OnHit/OnMonsterHit).
77Monster_damageITEM_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).
78Immunity_To_Spell_By_LevelITEM_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.

79Special_WalkITEM_PROPERTY_SPECIAL_WALKIPRP_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.
80Healers_KitITEM_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).

81Weight_IncreaseITEM_PROPERTY_WEIGHT_INCREASE****
IPRP_BASE1
IPRP_WEIGHTINC

Weight increases make an item heavier by a certain amount.
82OnHitCastSpellITEM_PROPERTY_ONHITCASTSPELLIPRP_ONHITSPELL
IPRP_SPELLCSTR



When a item hits a target it fires a particular spell script at the given caster level.
83VisualEffectITEM_PROPERTY_VISUALEFFECTIPRP_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.
84ArcaneSpellFailureITEM_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.
85MaterialITEM_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.
86QualityITEM_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.
87Additional_PropertyITEM_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

  • No labels