EN6_PRC8/_module/nss/nwnx_itemprop.nss
Jaysyn904 a6f6db7303 Initial commit
Initial commit.  Updated release archive.
2024-06-13 15:08:33 -04:00

114 lines
3.9 KiB
Plaintext

/// @addtogroup itemproperty ItemProperty
/// @brief Utility functions to manipulate the builtin itemproperty type.
/// @{
/// @file nwnx_itemprop.nss
#include "nwnx"
const string NWNX_ItemProperty = "NWNX_ItemProperty"; ///< @private
/// @brief An unpacked itemproperty.
struct NWNX_IPUnpacked
{
string sID; ///< @todo Describe
int nProperty; ///< @todo Describe
int nSubType; ///< @todo Describe
int nCostTable; ///< @todo Describe
int nCostTableValue; ///< @todo Describe
int nParam1; ///< @todo Describe
int nParam1Value; ///< @todo Describe
int nUsesPerDay; ///< @todo Describe
int nChanceToAppear; ///< @todo Describe
int bUsable; ///< @todo Describe
int nSpellId; ///< @todo Describe
object oCreator; ///< @todo Describe
string sTag; ///< @todo Describe
};
/// @brief Convert native itemproperty type to unpacked structure.
/// @param ip The itemproperty to convert.
/// @return A constructed NWNX_IPUnpacked.
struct NWNX_IPUnpacked NWNX_ItemProperty_UnpackIP(itemproperty ip);
/// @brief Convert unpacked itemproperty structure to native type.
/// @param ip The NWNX_IPUnpacked structure to convert.
/// @return The itemproperty.
itemproperty NWNX_ItemProperty_PackIP(struct NWNX_IPUnpacked ip);
/// @brief Gets the active item property at the index
/// @param oItem - the item with the property
/// @param nIndex - the index such as returned by some Item Events
/// @return A constructed NWNX_IPUnpacked, except for creator, and spell id.
struct NWNX_IPUnpacked NWNX_ItemProperty_GetActiveProperty(object oItem, int nIndex);
/// @}
struct NWNX_IPUnpacked NWNX_ItemProperty_UnpackIP(itemproperty ip)
{
string sFunc = "UnpackIP";
NWNX_PushArgumentItemProperty(ip);
NWNX_CallFunction(NWNX_ItemProperty, sFunc);
struct NWNX_IPUnpacked n;
n.sID = NWNX_GetReturnValueString();
n.nProperty = NWNX_GetReturnValueInt();
n.nSubType = NWNX_GetReturnValueInt();
n.nCostTable = NWNX_GetReturnValueInt();
n.nCostTableValue = NWNX_GetReturnValueInt();
n.nParam1 = NWNX_GetReturnValueInt();
n.nParam1Value = NWNX_GetReturnValueInt();
n.nUsesPerDay = NWNX_GetReturnValueInt();
n.nChanceToAppear = NWNX_GetReturnValueInt();
n.bUsable = NWNX_GetReturnValueInt();
n.nSpellId = NWNX_GetReturnValueInt();
n.oCreator = NWNX_GetReturnValueObject();
n.sTag = NWNX_GetReturnValueString();
return n;
}
itemproperty NWNX_ItemProperty_PackIP(struct NWNX_IPUnpacked n)
{
string sFunc = "PackIP";
NWNX_PushArgumentString(n.sTag);
NWNX_PushArgumentObject(n.oCreator);
NWNX_PushArgumentInt(n.nSpellId);
NWNX_PushArgumentInt(n.bUsable);
NWNX_PushArgumentInt(n.nChanceToAppear);
NWNX_PushArgumentInt(n.nUsesPerDay);
NWNX_PushArgumentInt(n.nParam1Value);
NWNX_PushArgumentInt(n.nParam1);
NWNX_PushArgumentInt(n.nCostTableValue);
NWNX_PushArgumentInt(n.nCostTable);
NWNX_PushArgumentInt(n.nSubType);
NWNX_PushArgumentInt(n.nProperty);
NWNX_CallFunction(NWNX_ItemProperty, sFunc);
return NWNX_GetReturnValueItemProperty();
}
struct NWNX_IPUnpacked NWNX_ItemProperty_GetActiveProperty(object oItem, int nIndex)
{
string sFunc = "GetActiveProperty";
NWNX_PushArgumentInt(nIndex);
NWNX_PushArgumentObject(oItem);
NWNX_CallFunction(NWNX_ItemProperty, sFunc);
struct NWNX_IPUnpacked n;
n.nProperty = NWNX_GetReturnValueInt();
n.nSubType = NWNX_GetReturnValueInt();
n.nCostTable = NWNX_GetReturnValueInt();
n.nCostTableValue = NWNX_GetReturnValueInt();
n.nParam1 = NWNX_GetReturnValueInt();
n.nParam1Value = NWNX_GetReturnValueInt();
n.nUsesPerDay = NWNX_GetReturnValueInt();
n.nChanceToAppear = NWNX_GetReturnValueInt();
n.bUsable = NWNX_GetReturnValueInt();
n.sTag = NWNX_GetReturnValueString();
return n;
}