IPSafeAddItemProperty(object, itemproperty, float, int, int, int)

Safely add an itemproperty to an item.

void IPSafeAddItemProperty(
    object oItem,
    itemproperty nip,
    float fDuration = 0.0f,
    int nAddItemPropertyPolicy = X2_IP_ADDPROP_POLICY_REPLACE_EXISTING,
    int bIgnoreDurationType = FALSE,
    int bIgnoreSubType = FALSE
);

Parameters

oItem

Item to add property to

nip

Itemproperty to add

fDuration

0.0 for permanent, anything else is temporary (Default: 0.0f)

nAddItemPropertyPolicy

X2_IP_ADDPROP_POLICY_* (Default: X2_IP_ADDPROP_POLICY_REPLACE_EXISTING)

bIgnoreDurationType

TRUE or FALSE (Default: FALSE)

bIgnoreSubType

TRUE or FALSE (Default: FALSE)


Description

Add an item property in a safe fashion, preventing unwanted stacking.

* Parameters:
* oItem - the item to add the property to
* ip - the itemproperty to add
* fDuration - set 0.0f to add the property permanent, anything else is temporary
* nAddItemPropertyPolicy - How to handle existing properties. Valid values are:
* X2_IP_ADDPROP_POLICY_REPLACE_EXISTING - remove any property of the same type, subtype, durationtype before adding;
* X2_IP_ADDPROP_POLICY_KEEP_EXISTING - do not add if any property with same type, subtype and durationtype already exists;
* X2_IP_ADDPROP_POLICY_IGNORE_EXISTING - add itemproperty in any case - Do not Use with OnHit or OnHitSpellCast props!
*
* bIgnoreDurationType - If set to TRUE, an item property will be considered identical even if the DurationType is different. Be careful when using this with X2_IP_ADDPROP_POLICY_REPLACE_EXISTING, as this could lead to a temporary item property removing a permanent one

* bIgnoreSubType - If set to TRUE an item property will be considered identical even if the SubType is different.



Remarks

The itemproperty commands are special constructors - they construct an itemproperty "object" which can then be, for instance, applied to an item using the AddItemProperty command. Much like effects need to be first constructed, then applied with ApplyEffectToObject.


Known Bugs

Uses RemoveItemProperty, which has an accumulator
bug that may give an erroneous Stacking error message or affect subsequent functions in the same script.- 1/16/04, NWN Toolset version vts026, game version 1.61.8042 English
See test code under ItemPropertyLimitUseByAlign. -PB


Requirements

#include "x2_inc_itemprop"

Version

1.61

See Also

functions: AddItemProperty | RemoveItemProperty
categories: Item Creation Functions | Item Properties Functions
constants: X2_IP_ADDPROP_POLICY_* Constants


 author: Lilac Soul, editor: Peter Busby