/////////////////////////////////////////////////////////////////////////////// // ip_cfg // written by: eyesolated // written at: June 17, 2004 // // Notes: ItemProperty Config File // The system version will be safed on infused items const int CI_IP_VERSION = 1; // Use NWNX? const int CI_IP_USE_NWNX = TRUE; // Sets the maximum number of positive properties an item can receive const int CI_IP_MAX_POSITIVE = 4; // Sets the maximum number of negative properties an item can receive const int CI_IP_MAX_NEGATIVE = 2; // Sets the maximum number of restrictive properties an item can receive const int CI_IP_MAX_RESTRICTIVE = 1; // Sets the required/allowed numbers of properties an item needs to be colored Rare. // These conditinos are AND-related const int CI_IP_RARE_MINPOSITIVE = 2; const int CI_IP_RARE_MAXNEGATIVE = 0; // The following number defines how much a positive property is allowed to be below // the maximum theoretical level achievable for the given item for it to be considered // RARE. Set this to -1 to deactivate this feature const int CI_IP_RARE_ALLOWED_POSITIVE_DEVIATION = 2; // Sets the required/allowed numbers of properties an item needs to be colored Rare. // These conditinos are AND-related const int CI_IP_EPIC_MINPOSITIVE = 3; const int CI_IP_EPIC_MAXNEGATIVE = 0; // The following number defines how much a positive property is allowed to be below // the maximum theoretical level achievable for the given item for it to be considered // RARE. Set this to -1 to deactivate this feature const int CI_IP_EPIC_ALLOWED_POSITIVE_DEVIATION = 1; // This sets the maximum Magic Item Level the System will be able to produce. // Default: 50 const int CI_IP_MAXMAGICLEVEL = 10; // note: PAT overrides this setting for PAT-ified creatures! // This sets the maximum Magic Item Level the System will be able to produce for // undroppable Monster Equipment. // Default: 50 const int CI_IP_MAXMAGICLEVEL_MONSTERONLY = 50; // Chance the Base Item Level will be reduced. // The item level will be reduced for n = 0 to (X / CI_IP_REDUCED_ITEM_LEVEL_MAXIMUM_DIVISOR) - 1 // times, as long as it rolls positive against // CI_IP_REDUCED_ITEM_LEVEL_CHANCE_BASE - n * CI_IP_REDUCED_ITEM_LEVEL_CHANCE_MODIFIER // // Example: The maximum possible level is set to 9. // CI_IP_REDUCED_ITEM_LEVEL_CHANCE_BASE = 60 // CI_IP_REDUCED_ITEM_LEVEL_CHANCE_MODIFIER = 10 // CI_IP_REDUCED_ITEM_LEVEL_MAXIMUM_DIVISOR = 3 // // There is a 60% chance the item level is reduced to 8. // If the roll succeeds, then there is a 50% chance the item level is reduced to 7. // If the roll succeeds, then there is a 40% chance the item level is reduced to 6. // After 3 successful rolls (9 / 3 = 3) it stops at level 6. // In other words, there's a 40% chance the item stays level 9, a 30% chance of it // being level 8, an 18% chance of it being 7 and a 12% chance of it being level 6. const int CI_IP_REDUCED_ITEM_LEVEL_CHANCE_BASE = 91; const int CI_IP_REDUCED_ITEM_LEVEL_CHANCE_MODIFIER = 9; const int CI_IP_REDUCED_ITEM_LEVEL_MAXIMUM_DIVISOR = 4; // These values set the chances for additional properties beyond the first one // CI_IP_ADDITIONAL_x_PROPERTY_BASE is the base % of getting an additional // property while CI_IP_ADDITIONAL_x_PROPERTY_MODIFIER is multiplied with the // existing properties on the item and is subtracted from the base chance. // Example: An item has 1 property. With BASE set to 15% and MODIFIER set to 3%, there // is a 12% chance to get a second property. // An item already has 2 properties. With BASE set to 15% and MODIFIER set // to 3%, there is a 9% chance to get a third property. const int CI_IP_ADDITIONAL_POSITIVE_PROPERTY_CHANCE_BASE = 40; const int CI_IP_ADDITIONAL_POSITIVE_PROPERTY_CHANCE_MODIFIER = 12; // The LEVEL_MODIFIER rolls a random value by which the magic level of an additional property // is reduced. // CI_IP_ADDITIONAL_x_PROPERTY_LEVEL_MODIFIER_BASE is the base reduction for an // additional property, while CI_IP_ADDITIONAL_x_PROPERTY_LEVEL_MODIFIER_RANDOM adds // a random element to the subtraction. The minimum Magic Level is always 1. const int CI_IP_ADDITIONAL_POSITIVE_PROPERTY_LEVEL_MODIFIER_BASE = 1; const int CI_IP_ADDITIONAL_POSITIVE_PROPERTY_LEVEL_MODIFIER_RANDOM = 2; const int CI_IP_ADDITIONAL_NEGATIVE_PROPERTY_LEVEL_MODIFIER_BASE = 0; const int CI_IP_ADDITIONAL_NEGATIVE_PROPERTY_LEVEL_MODIFIER_RANDOM = 3; const int CI_IP_ADDITIONAL_RESTRICTIVE_PROPERTY_LEVEL_MODIFIER_BASE = 0; const int CI_IP_ADDITIONAL_RESTRICTIVE_PROPERTY_LEVEL_MODIFIER_RANDOM = 3; // The Base % of getting a negative property on the item. The formula used is // Positive_Properties * (CI_IP_ADDITIONAL_NEGATIVE_PROPERTY_CHANCE_BASE - (Total_Properties - Positive_Properties) * CI_IP_ADDITIONAL_NEGATIVE_PROPERTY_CHANCE_REDUCTION) // Example A: If the item has 3 positive properties and CHANCE_BASE is set to 8 while CHANCE_REDUCTION is set to 1 // First negative property : 3 * (8 - (3 - 3) * 1) = 24% // Second negative proeprty: 3 * (8 - (4 - 3) * 1) = 21% // Example B: If the item has 3 positive properties and CHANCE_BASE is set to 10 while CHANCE_REDUCTION is set to 3 // First negative property : 3 * (10 - (3 - 3) * 3) = 30% // Second negative proeprty: 3 * (10 - (4 - 3) * 3) = 21% const int CI_IP_ADDITIONAL_NEGATIVE_PROPERTY_CHANCE_BASE = 24; const int CI_IP_ADDITIONAL_NEGATIVE_PROPERTY_CHANCE_REDUCTION = 1; // This sets the Basic Chance / Positive Property for an item to receive a restrictive // Property. const int CI_IP_CHANCE_RESTRICTIVE = 5; // This sets the added chance for a restrictive property for wands and rods const int CI_IP_RODWAND_EXTRA_CHANCE_RESTRICTIVE = 50; // These constants define the possible values regarding enabling/disabling properties // within the system. Do not modify these. const int CI_IP_PROPERTY_DISABLED = 0; const int CI_IP_PROPERTY_ENABLED = 1; const int CI_IP_PROPERTY_ENABLED_MONSTERONLY = 2; // If Ability Bonus is activated, should the abilities be restricted to the following slots? // Belt: STR, CON, WIS, CHA // Gloves: STR, DEX, INT, CHA // Cloak: DEX, CON, INT, WIS const int CI_IP_RESTRICT_AbilityBonus = TRUE; // If Regeneration is activated, should it be restricted to jewelry only? const int CI_IP_RESTRICT_Regeneration = TRUE; // Enable/Disable Properties within the system // These settings affect the sysetm itself, properties set to CI_IP_PROPERTY_DISABLED here won't // appear on any item created. CI_IP_PROPERTY_ENABLED means the item will appear on items, // CI_IP_PROPERTY_ENABLED_MONSTERONLY means only items generated for monsters only will have // this property on them. // // If you want properties to scale differently or change wheter they are // available to players or monsters only on differenr power levels, modify the script "ip_ini". const int CI_IP_ENABLE_AbilityBonus = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_ACBonus = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_ACBonusVsAlignment = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_ACBonusVsDmgType = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_ACBonusVsRace = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_ACBonusVsSpecificAlignment = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_AdditionalProperty = CI_IP_PROPERTY_ENABLED_MONSTERONLY; // Unknown, Cursed, used for Socketing for now const int CI_IP_ENABLE_ArcaneSpellFailure_Increased = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_ArcaneSpellFailure_Decreased = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_AttackBonus = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_AttackBonusVsAlignment = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_AttackBonusVsRace = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_AttackBonusVsSpecificAlignment = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_AttackPenalty = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_BonusFeat = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_BonusLevelSpell = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_BonusSavingThrow = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_BonusSavingThrowVsX = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_BonusSavingThrowVsXUniversalIncluded = CI_IP_PROPERTY_DISABLED; // Shouldn't enable this, too powerful const int CI_IP_ENABLE_BonusSpellResistance = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_CastSpell = CI_IP_PROPERTY_ENABLED; // This is for books and staves const int CI_IP_ENABLE_CastSpellPotion = CI_IP_PROPERTY_ENABLED; // Potions won't work at all if this is FALSE const int CI_IP_ENABLE_CastSpellWand_5ChargesPerUse = CI_IP_PROPERTY_ENABLED; // If you disable all CastSpellWand switches, wands const int CI_IP_ENABLE_CastSpellWand_1ChargePerUse = CI_IP_PROPERTY_ENABLED; // and rods won't work at all const int CI_IP_ENABLE_CastSpellWand_1PerDay = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_CastSpellWand_2PerDay = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_CastSpellWand_3PerDay = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_CastSpellWand_Unlimited = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_ContainerReducedWeight = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_DamageBonus = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_DamageBonusVsAlignment = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_DamageBonusVsRace = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_DamageBonusVsSpecificAlignment = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_DamageImmunity = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_DamagePenalty = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_DamageReduction = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_DamageResistance = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_DamageVulnerability = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_Darkvision = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_DecreaseAbility = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_DecreaseAC = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_DecreaseSkill = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_DecreaseSkillAllSkillsIncluded = CI_IP_PROPERTY_DISABLED; // Shouldn't enable this, too powerful const int CI_IP_ENABLE_EnhancementBonus = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_EnhancementBonusVsAlignment = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_EnhancementBonusVsRace = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_EnhancementBonusVsSpecificAlignment = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_ExtraMeleeDamageType = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_ExtraRangeDamageType = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_Haste = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_HealersKit = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_HolyAvenger = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_ImmunityMisc = CI_IP_PROPERTY_ENABLED; // Immunities included for players: Poison, Fear, Death Magic const int CI_IP_ENABLE_ImmunityToSpellLevel = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_ImprovedEvasion = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_Keen = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_Light = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_LimitUseByAlignment = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_LimitUseByClass = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_LimitUseByRace = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_LimitUseBySpecificAlignment = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_MassiveCritical = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_Mighty = CI_IP_PROPERTY_ENABLED; // Mighty property for Ranged Weapons like Bows, allowing STR Bonus on Damage rolls const int CI_IP_ENABLE_MonsterDamage = CI_IP_PROPERTY_ENABLED_MONSTERONLY; // Only works on Creature Weapons const int CI_IP_ENABLE_NoDamage = CI_IP_PROPERTY_DISABLED; // NOT AVAILABLE const int CI_IP_ENABLE_OnHitCastSpell = CI_IP_PROPERTY_ENABLED; // NOT AVAILABLE const int CI_IP_ENABLE_OnHitProps = CI_IP_PROPERTY_ENABLED; // NOT AVAILABLE const int CI_IP_ENABLE_OnMonsterHitProperties = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_ReducedSavingThrow = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_ReducedSavingThrowVsX = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_ReducedSavingThrowVsXUniversalIncluded = CI_IP_PROPERTY_DISABLED; // Shouldn't enable this, too powerful const int CI_IP_ENABLE_Regeneration = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_SkillBonus = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_SkillBonusAllIncluded = CI_IP_PROPERTY_DISABLED; // Shouldn't enable this, too powerful // NOT AVAILABLE const int CI_IP_ENABLE_SpecialWalk = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_SpellImmunitySchool = CI_IP_PROPERTY_ENABLED_MONSTERONLY; const int CI_IP_ENABLE_SpellImmunitySpecific = CI_IP_PROPERTY_DISABLED; const int CI_IP_ENABLE_ThievesTools = CI_IP_PROPERTY_ENABLED; // Thieves' Tools won't work at all if this is FALSE const int CI_IP_ENABLE_Trap = CI_IP_PROPERTY_ENABLED; // Traps won't work at all if this is FALSE const int CI_IP_ENABLE_TrueSeeing = CI_IP_PROPERTY_DISABLED; // TRUE Seeing is bugged in regards to Hide/Move Silently // NOT AVAILABLE const int CI_IP_ENABLE_TurnResistance = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_UnlimitedAmmo = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_VampiricRegeneration = CI_IP_PROPERTY_ENABLED; // NOT AVAILABLE const int CI_IP_ENABLE_VisualEffect = CI_IP_PROPERTY_ENABLED; // NOT AVAILABLE const int CI_IP_ENABLE_WeightIncrease = CI_IP_PROPERTY_ENABLED; const int CI_IP_ENABLE_WeightReduction = CI_IP_PROPERTY_ENABLED; //////////////////////////////////////////// // !!! DON'T TOUCH ANYTHING BELOW THIS !!! / // !!! DON'T TOUCH ANYTHING BELOW THIS !!! / // !!! DON'T TOUCH ANYTHING BELOW THIS !!! / //////////////////////////////////////////// const string CS_IP_VAR_CREATION_VERSION = "ip_Creation_Version"; const string CS_IP_VAR_CREATION_LEVEL = "ip_Creation_Level"; const string CS_IP_INI_USERDEFINEDEVENTNUMBER = "IP_EVENTID"; const string CS_IP_INIB_USERDEFINEDEVENTNUMBER = "IPB_EVENTID"; const string CS_IP_TABLE = "ip_Properties"; const string CS_IP_ARRAY_INIT = "IP_ARRAY_INIT"; // In case we don't use NWNx, we need alternatives const string CS_IP_DB_PRELOAD_STORE_OBJ = "IP_PRE_STORE"; const string CS_IP_DB_PRELOAD_STORE = "IP_PRE_S_TAG"; const string CS_IP_DB_PRELOAD_AREA_OBJ = "IP_PRE_AREA"; const string CS_IP_DB_PRELOAD_ARRAY = "IP_PRE_ARRAY"; const string CS_IP_DB_AREA = "A_EGS"; const string CS_IP_DB_WAYPOINT = "WP_EGS"; const string CS_IP_DB_MERCHANT_RESREF = "M_EGS"; const string CS_IP_DB_ITEMINFO_RESREF = "I_EGS_ItemInfo"; const string CS_IP_DB_MERCHANT_ID = "M_IP_ID"; const string CS_IP_DB_MERCHANT_MAIN = "M_IP_M"; const string CS_IP_DB_MERCHANT_SUB = "M_IP_S"; const string CS_IP_DB_MERCHANT_BASE = "M_IP_B"; const string CS_IP_DB_MERCHANT_MONSTERONLY_ID = "M_IP_MID"; const string CS_IP_DB_MERCHANT_MONSTERONLY_MAIN = "M_IP_MOM"; const string CS_IP_DB_MERCHANT_MONSTERONLY_SUB = "M_IP_MOS"; const string CS_IP_DB_MERCHANT_MONSTERONLY_BASE = "M_IP_MOB"; const string CS_IP_ARRAY_ID = "IP_A_ID"; const string CS_IP_ARRAY_MAINCATEGORY = "IP_MC"; const string CS_IP_ARRAY_SUBCATEGORY = "IP_SC"; const string CS_IP_ARRAY_BASEITEM = "IP_BI"; const string CS_IP_DB_TEMPARRAY_MAINCATEGORIES = "IP_TMP_C"; const string CS_IP_DB_TEMPARRAY_SUBCATEGORIES = "IP_TMP_S"; const string CS_IP_DB_TEMPARRAY_BASEITEMS = "IP_TMP_B"; const string CS_IP_DB_TEMPARRAY_SELECTIP = "IP_TMP_SIP"; const string CS_IP_DB_TEMPARRAY_STORE = "IP_TMP_STO"; struct STRUCT_IP_PropertyDetails { itemproperty IP; string Prefix1; string Prefix2; string Postfix; int PropID; int Var1; int Var2; int Var3; }; // Field Definitions const string CS_IP_ENTRY_ID = "Entry_ID"; const string CS_IP_ID = "Property_ID"; const string CS_IP_TYPE = "Type"; const string CS_IP_CATEGORIES_MAIN = "MainCategories"; const string CS_IP_CATEGORIES_SUB = "SubCategories"; const string CS_IP_BASEITEMS = "BaseItems"; const string CS_IP_LEVEL = "Level"; const string CS_IP_VARONE = "Variable1"; const string CS_IP_VARTWO = "Variable2"; const string CS_IP_VARTHREE = "Variable3"; const string CS_IP_MONSTERONLY = "MonsterOnly"; const string CS_IP_PLAYERONLY = "PlayerOnly"; const string CS_IP_PREFIX_I = "Prefix1"; const string CS_IP_PREFIX_II = "Prefix2"; const string CS_IP_POSTFIX = "Postfix"; // Property Types const int CI_IP_TYPE_POSITIVE = 0; const int CI_IP_TYPE_NEGATIVE = 1; const int CI_IP_TYPE_RESTRICTIVE = 2; // SpellType constants const int CI_IP_POTION = 1; const int CI_IP_WAND = 2; const int CI_IP_OTHER = 3; // Property constants const int CI_IP_Invalid = -1; const int CI_IP_AbilityBonus = ITEM_PROPERTY_ABILITY_BONUS; const int CI_IP_ACBonus = ITEM_PROPERTY_AC_BONUS; const int CI_IP_ACBonusVsAlign = ITEM_PROPERTY_AC_BONUS_VS_ALIGNMENT_GROUP; // NON_EXISTANT! const int CI_IP_ACBonusVsAlignAllIncluded = -2; const int CI_IP_ACBonusVsDmgType = ITEM_PROPERTY_AC_BONUS_VS_DAMAGE_TYPE; const int CI_IP_ACBonusVsRace = ITEM_PROPERTY_AC_BONUS_VS_RACIAL_GROUP; const int CI_IP_ACBonusVsSAlign = ITEM_PROPERTY_AC_BONUS_VS_SPECIFIC_ALIGNMENT; const int CI_IP_AdditionalProperty = ITEM_PROPERTY_ADDITIONAL; const int CI_IP_ArcaneSpellFailure = ITEM_PROPERTY_ARCANE_SPELL_FAILURE; const int CI_IP_AttackBonus = ITEM_PROPERTY_ATTACK_BONUS; const int CI_IP_AttackBonusVsAlign = ITEM_PROPERTY_ATTACK_BONUS_VS_ALIGNMENT_GROUP; // NON_EXISTANT! const int CI_IP_AttackBonusVsAlignAllIncluded = -3; const int CI_IP_AttackBonusVsRace = ITEM_PROPERTY_ATTACK_BONUS_VS_RACIAL_GROUP; const int CI_IP_AttackBonusVsSAlign = ITEM_PROPERTY_ATTACK_BONUS_VS_SPECIFIC_ALIGNMENT; const int CI_IP_AttackPenalty = ITEM_PROPERTY_DECREASED_ATTACK_MODIFIER; const int CI_IP_BonusFeat = ITEM_PROPERTY_BONUS_FEAT; const int CI_IP_BonusLevelSpell = ITEM_PROPERTY_BONUS_SPELL_SLOT_OF_LEVEL_N; const int CI_IP_BonusSavingThrow = ITEM_PROPERTY_SAVING_THROW_BONUS; const int CI_IP_BonusSavingThrowVsX = ITEM_PROPERTY_SAVING_THROW_BONUS_SPECIFIC; const int CI_IP_BonusSavingThrowVsXUniversalIncluded = -4; const int CI_IP_BonusSpellResistance = ITEM_PROPERTY_SPELL_RESISTANCE; const int CI_IP_CastSpell = ITEM_PROPERTY_CAST_SPELL; const int CI_IP_CastSpellPotion = -5; const int CI_IP_CastSpellWand = -6; const int CI_IP_ContainerReducedWeight = ITEM_PROPERTY_ENHANCED_CONTAINER_REDUCED_WEIGHT; const int CI_IP_DamageBonus = ITEM_PROPERTY_DAMAGE_BONUS; const int CI_IP_DamageBonusVsAlign = ITEM_PROPERTY_DAMAGE_BONUS_VS_ALIGNMENT_GROUP; // NON_EXISTANT! const int CI_IP_DamageBonusVsAlignAllIncluded = -7; const int CI_IP_DamageBonusVsRace = ITEM_PROPERTY_DAMAGE_BONUS_VS_RACIAL_GROUP; const int CI_IP_DamageBonusVsSAlign = ITEM_PROPERTY_DAMAGE_BONUS_VS_SPECIFIC_ALIGNMENT; const int CI_IP_DamageImmunity = ITEM_PROPERTY_IMMUNITY_DAMAGE_TYPE; const int CI_IP_DamagePenalty = ITEM_PROPERTY_DECREASED_DAMAGE; const int CI_IP_DamageReduction = ITEM_PROPERTY_DAMAGE_REDUCTION; const int CI_IP_DamageResistance = ITEM_PROPERTY_DAMAGE_RESISTANCE; const int CI_IP_DamageVulnerability = ITEM_PROPERTY_DAMAGE_VULNERABILITY; const int CI_IP_Darkvision = ITEM_PROPERTY_DARKVISION; const int CI_IP_DecreaseAbility = ITEM_PROPERTY_DECREASED_ABILITY_SCORE; const int CI_IP_DecreaseAC = ITEM_PROPERTY_DECREASED_AC; const int CI_IP_DecreaseSkill = ITEM_PROPERTY_DECREASED_SKILL_MODIFIER; const int CI_IP_DecreaseSkillAllSkillsIncluded = -8; const int CI_IP_EnhancementBonus = ITEM_PROPERTY_ENHANCEMENT_BONUS; const int CI_IP_EnhancementBonusVsAlign = ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_ALIGNMENT_GROUP; // NON_EXISTANT! const int CI_IP_EnhancementBonusVsAlignAllIncluded = -9; const int CI_IP_EnhancementBonusVsRace = ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_RACIAL_GROUP; const int CI_IP_EnhancementBonusVsSAlign = ITEM_PROPERTY_ENHANCEMENT_BONUS_VS_SPECIFIC_ALIGNEMENT; // Deactivated const int CI_IP_EnhancementPenalty = -10; const int CI_IP_ExtraMeleeDamageType = ITEM_PROPERTY_EXTRA_MELEE_DAMAGE_TYPE; const int CI_IP_ExtraRangeDamageType = ITEM_PROPERTY_EXTRA_RANGED_DAMAGE_TYPE; // NON_EXISTANT! const int CI_IP_FreeAction = -11; const int CI_IP_Haste = ITEM_PROPERTY_HASTE; const int CI_IP_HealersKit = ITEM_PROPERTY_HEALERS_KIT; const int CI_IP_HolyAvenger = ITEM_PROPERTY_HOLY_AVENGER; const int CI_IP_ImmunityMisc = ITEM_PROPERTY_IMMUNITY_MISCELLANEOUS; const int CI_IP_ImmunityToSpellLevel = ITEM_PROPERTY_IMMUNITY_SPELLS_BY_LEVEL; const int CI_IP_ImprovedEvasion = ITEM_PROPERTY_IMPROVED_EVASION; const int CI_IP_Keen = ITEM_PROPERTY_KEEN; const int CI_IP_Light = ITEM_PROPERTY_LIGHT; const int CI_IP_LimitUseByAlign = ITEM_PROPERTY_USE_LIMITATION_ALIGNMENT_GROUP; const int CI_IP_LimitUseByClass = ITEM_PROPERTY_USE_LIMITATION_CLASS; const int CI_IP_LimitUseByRace = ITEM_PROPERTY_USE_LIMITATION_RACIAL_TYPE; const int CI_IP_LimitUseBySAlign = ITEM_PROPERTY_USE_LIMITATION_SPECIFIC_ALIGNMENT; const int CI_IP_MassiveCritical = ITEM_PROPERTY_MASSIVE_CRITICALS; const int CI_IP_MaxRangeStrengthMod = ITEM_PROPERTY_MIGHTY; const int CI_IP_MonsterDamage = ITEM_PROPERTY_MONSTER_DAMAGE; const int CI_IP_NoDamage = ITEM_PROPERTY_NO_DAMAGE; const int CI_IP_OnHitCastSpell = ITEM_PROPERTY_ONHITCASTSPELL; const int CI_IP_OnHitProps = ITEM_PROPERTY_ON_HIT_PROPERTIES; const int CI_IP_OnMonsterHitProperties = ITEM_PROPERTY_ON_MONSTER_HIT; const int CI_IP_ReducedSavingThrow = ITEM_PROPERTY_DECREASED_SAVING_THROWS; const int CI_IP_ReducedSavingThrowVsX = ITEM_PROPERTY_DECREASED_SAVING_THROWS_SPECIFIC; const int CI_IP_ReducedSavingThrowVsXUniversalIncluded = -12; const int CI_IP_Regeneration = ITEM_PROPERTY_REGENERATION; const int CI_IP_SkillBonus = ITEM_PROPERTY_SKILL_BONUS; const int CI_IP_SkillBonusAllIncluded = -13; const int CI_IP_SpecialWalk = ITEM_PROPERTY_SPECIAL_WALK; const int CI_IP_SpellImmunitySchool = ITEM_PROPERTY_IMMUNITY_SPELL_SCHOOL; const int CI_IP_SpellImmunitySpecific = ITEM_PROPERTY_IMMUNITY_SPECIFIC_SPELL; const int CI_IP_ThievesTools = ITEM_PROPERTY_THIEVES_TOOLS; const int CI_IP_Trap = ITEM_PROPERTY_TRAP; const int CI_IP_TrueSeeing = ITEM_PROPERTY_TRUE_SEEING; const int CI_IP_TurnResistance = ITEM_PROPERTY_TURN_RESISTANCE; const int CI_IP_UnlimitedAmmo = ITEM_PROPERTY_UNLIMITED_AMMUNITION; const int CI_IP_VampiricRegeneration = ITEM_PROPERTY_REGENERATION_VAMPIRIC; const int CI_IP_VisualEffect = ITEM_PROPERTY_VISUALEFFECT; const int CI_IP_WeightIncrease = ITEM_PROPERTY_WEIGHT_INCREASE; const int CI_IP_WeightReduction = ITEM_PROPERTY_BASE_ITEM_WEIGHT_REDUCTION;