UW2_PRC8/_module/nss/sfcs_functs_rem.nss
Jaysyn904 5197ad9a4d Initial upload
Initial upload
2023-09-25 20:24:01 -04:00

789 lines
25 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Scarface's Crafting System V1.0
//:: sfcs_functs_rem
//::
//:://////////////////////////////////////////////
/*
All of the functions to remove item properties -
DO NOT TOUCH!!!
*/
//////////////////////////////////////////////////
#include "sfcs_functs"
#include "x2_inc_itemprop"
//:: Declair Functions
void RemoveACBonus(object oItem);
void RemoveAcidBonus(object oItem);
void RemoveAttackBonus(object oItem);
void RemoveBludgeonBonus(object oItem);
void RemoveCharismaBonus(object oItem);
void RemoveColdBonus(object oItem);
void RemoveConBonus(object oItem);
void RemoveDexBonus(object oItem);
void RemoveDivineBonus(object oItem);
void RemoveEnhancementBonus(object oItem);
void RemoveFireBonus(object oItem);
void RemoveHasteBonus(object oItem);
void RemoveHolyAvengerBonus(object oItem);
void RemoveKeenBonus(object oItem);
void RemoveMagicBonus(object oItem);
void RemoveNegativeBonus(object oItem);
void RemovePiercingBonus(object oItem);
void RemoveRegenBonus(object oItem);
void RemoveSlashingBonus(object oItem);
void RemoveSonicBonus(object oItem);
void RemoveStrengthBonus(object oItem);
void RemoveTrueSeeingBonus(object oItem);
void RemoveWisdomBonus(object oItem);
//:: Functions
void RemoveACBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("AC +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove AC bonus
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_AC_BONUS,
DURATION_TYPE_PERMANENT);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take AC bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyACBonus(iProp), 0.0,
X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "AC +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveAcidBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Acid +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove acid damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_DAMAGE_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_DAMAGETYPE_ACID);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take acid bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_ACID,
DamageBonus(iProp)), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Acid +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveAttackBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Attack +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Check if there are no more Attack Bonuses on the item
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_ATTACK_BONUS,
DURATION_TYPE_PERMANENT);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyAttackBonus(iProp), 0.0,
X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Attack +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveBludgeonBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Bludgeoning +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove bludge damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_DAMAGE_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_DAMAGETYPE_BLUDGEONING);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_BLUDGEONING,
DamageBonus(iProp)), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Bludgeoning +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveCharismaBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Charisma +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove Charisma bonus - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_ABILITY_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_ABILITY_CHA);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Charisma bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyAbilityBonus(IP_CONST_ABILITY_CHA,
iProp), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Charisma +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveColdBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Cold +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove cold damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_DAMAGE_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_DAMAGETYPE_COLD);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_COLD,
DamageBonus(iProp)), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Cold +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveConstitutionBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Constitution +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove Constitution bonus - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_ABILITY_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_ABILITY_CON);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Constitution bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyAbilityBonus(IP_CONST_ABILITY_CON,
iProp), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Constitution +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveDexterityBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Dexterity +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove dexterity bonus - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_ABILITY_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_ABILITY_DEX);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take strength bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyAbilityBonus(IP_CONST_ABILITY_DEX,
iProp), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Dexterity +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveDivineBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Divine +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove divine damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_DAMAGE_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_DAMAGETYPE_DIVINE);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_DIVINE,
DamageBonus(iProp)), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Divine +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveEnhancementBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Enhancement +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove emhancement damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_ENHANCEMENT_BONUS,
DURATION_TYPE_PERMANENT);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyEnhancementBonus(iProp), 0.0,
X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Enhancement +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveFireBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Fire +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove fire damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_DAMAGE_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_DAMAGETYPE_FIRE);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_FIRE,
DamageBonus(iProp)), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Fire +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveHasteBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Haste");
if (sProp != "INVALID")
{
// Remove haste
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_HASTE, DURATION_TYPE_PERMANENT);
// Delete local var
DeleteLocalString(OBJECT_SELF, sProp);
}
}
void RemoveHolyAvengerBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Holy Avenger");
if (sProp != "INVALID")
{
// Remove haste
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_HOLY_AVENGER, DURATION_TYPE_PERMANENT);
// Delete local var
DeleteLocalString(OBJECT_SELF, sProp);
}
}
void RemoveIntellegenceBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Intellegence +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove Intellegence bonus - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_ABILITY_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_ABILITY_INT);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Intellegence bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyAbilityBonus(IP_CONST_ABILITY_INT,
iProp), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Intellegence +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveKeenBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Keen");
if (sProp != "INVALID")
{
// Remove keen
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_KEEN, DURATION_TYPE_PERMANENT);
// Delete local var
DeleteLocalString(OBJECT_SELF, sProp);
}
}
void RemoveMagicBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Magical +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove magical damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_DAMAGE_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_DAMAGETYPE_MAGICAL);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_MAGICAL,
DamageBonus(iProp)), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Magical +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveNegativeBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Negative +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove negative damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_DAMAGE_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_DAMAGETYPE_NEGATIVE);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_NEGATIVE,
DamageBonus(iProp)), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Negative +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemovePiercingBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Piercing +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove piercing damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_DAMAGE_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_DAMAGETYPE_PIERCING);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_PIERCING,
DamageBonus(iProp)), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Piercing +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveRegenBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Regeneration +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove Regeneration bonus - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_REGENERATION,
DURATION_TYPE_PERMANENT);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Regeneration bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyRegeneration(iProp), 0.0,
X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Regeneration +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveSlashingBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Slashing +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove slashing damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_DAMAGE_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_DAMAGETYPE_SLASHING);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_SLASHING,
DamageBonus(iProp)), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Slashing +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveSonicBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Sonic +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove sonic damage - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_DAMAGE_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_DAMAGETYPE_SONIC);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Attack Bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyDamageBonus(IP_CONST_DAMAGETYPE_SONIC,
DamageBonus(iProp)), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Sonic +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveStrengthBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Strength +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove strength bonus - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_ABILITY_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_ABILITY_STR);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take strength bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyAbilityBonus(IP_CONST_ABILITY_STR,
iProp), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Strength +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveTrueSeeingBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("True Seeing");
if (sProp != "INVALID")
{
// Remove True Seeing
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_TRUE_SEEING, DURATION_TYPE_PERMANENT);
// Delete local var
DeleteLocalString(OBJECT_SELF, sProp);
}
}
void RemoveWisdomBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Wisdom +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove Wisdom bonus - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_ABILITY_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_ABILITY_WIS);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Wisdom bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyAbilityBonus(IP_CONST_ABILITY_WIS,
iProp), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Wisdom +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}
void RemoveIntelligenceBonus(object oItem)
{
// Get the correct property slot
string sProp = GetItemPropertySlot("Intelligence +");
if (sProp != "INVALID")
{
// Get the property amount
int iProp = GetLocalInt(OBJECT_SELF, sProp);
iProp--;
// Remove Intelligence bonus - 1
if (iProp <= 0)
{
IPRemoveMatchingItemProperties(oItem, ITEM_PROPERTY_ABILITY_BONUS,
DURATION_TYPE_PERMANENT, IP_CONST_ABILITY_INT);
// Set local vars
DeleteLocalString(OBJECT_SELF, sProp);
DeleteLocalInt(OBJECT_SELF, sProp);
}
else
{
// Take Intelligence bonus -1
IPSafeAddItemProperty(oItem, ItemPropertyAbilityBonus(IP_CONST_ABILITY_INT,
iProp), 0.0, X2_IP_ADDPROP_POLICY_REPLACE_EXISTING);
// Set local vars
SetLocalString(OBJECT_SELF, sProp, "Intelligence +" + IntToString(iProp));
SetLocalInt(OBJECT_SELF, sProp, iProp);
}
}
}