// Create an item, supplying a new name and description. void CreateItem(object oTarget, string sResRef, int nStackSize=1, string sNewTag="", string sNewName="", string sNewDescription=""); // Destroy a specific item, even if plot flag is set void DestroyItem(object oTarget); // Remove (destroy) an item from an object, identified by a specific tag int RemoveAllItemsByTag(object oTarget, string sTag, int bRemoveFromEquipped=FALSE); // Remove (destroy) an item from an object, identified by a specific ResRef int RemoveAllItemsByResRef(object oTarget, string sResref, int bRemoveFromEquipped=FALSE); // Remove (destroy) a specific number of an object, identified by tag int RemoveXItemsByTag(object oTarget, string sTag, int amount); // Remove (destroy) a specific number of an object, identified by ResRef int RemoveXItemsByResRef(object oTarget, string sResRef, int amount); // Count number of items by tag (ignores equipped items) int CountItemsByTag(object oTarget, string sTag); // Count number of items by ResRef (ignores equipped items) int CountItemsByResRef(object oTarget, string sResRef); // Display a message to a player void Msg(object oPC, string message, int nActionQueue = FALSE); // Destroys all items in the inventory of the target void RemoveAllItems(object oTarget, int bRemoveFromEquipped=FALSE); // Sets the PCs level void SetPCLevel(object oPC, int level); void DestroyItem(object oTarget) { if (GetIsObjectValid(oTarget)) { SetPlotFlag(oTarget,FALSE); DestroyObject(oTarget); } } void CreateItem(object oTarget, string sResRef, int nStackSize=1, string sNewTag="", string sNewName="", string sNewDescription="") { if (GetIsObjectValid(oTarget)) { object oObject = CreateItemOnObject(sResRef, oTarget, nStackSize, sNewTag); if (GetIsObjectValid(oObject)) { SetName(oObject, sNewName); SetDescription(oObject, sNewDescription); } } } int RemoveAllItemsByResRef(object oTarget, string sResRef, int bRemoveFromEquipped=FALSE) { int bRemovedItem = FALSE; if (GetIsObjectValid(oTarget)) { // Check general Inventory and clear it out. object oItem = GetFirstItemInInventory(oTarget); while(GetIsObjectValid(oItem)) { if (GetResRef(oItem) == sResRef) { DestroyItem(oItem); bRemovedItem = TRUE; } oItem = GetNextItemInInventory(oTarget); } if (bRemoveFromEquipped && (GetIsPC(oTarget) || GetObjectType(oTarget)==OBJECT_TYPE_CREATURE)) { // Check Equip Items and get rid of them int i; for(i=0; i<14; i++) { object oEquip = GetItemInSlot(i,oTarget); if(GetIsObjectValid(oEquip) && GetResRef(oEquip) == sResRef) { DestroyItem(oEquip); bRemovedItem = TRUE; } } } } return bRemovedItem; } int RemoveAllItemsByTag(object oTarget, string sTag, int bRemoveFromEquipped=FALSE) { int bRemovedItem = FALSE; if (GetIsObjectValid(oTarget)) { // Check general Inventory and clear it out. object oItem = GetFirstItemInInventory(oTarget); while(GetIsObjectValid(oItem)) { if (GetTag(oItem) == sTag) { DestroyItem(oItem); bRemovedItem = TRUE; } oItem = GetNextItemInInventory(oTarget); } if (bRemoveFromEquipped && (GetIsPC(oTarget) || GetObjectType(oTarget)==OBJECT_TYPE_CREATURE)) { // Check Equip Items and get rid of them int i; for(i=0; i<14; i++) { object oEquip = GetItemInSlot(i,oTarget); if(GetIsObjectValid(oEquip) && GetTag(oEquip) == sTag) { DestroyItem(oEquip); bRemovedItem = TRUE; } } } } return bRemovedItem; } void Msg(object oPC, string message, int nActionQueue = FALSE) { if (nActionQueue) { AssignCommand(oPC, ActionDoCommand(FloatingTextStringOnCreature(message, oPC, FALSE))); } else { FloatingTextStringOnCreature(message, oPC, FALSE); } } void SetPCLevel(object oPC, int level) { if (GetIsObjectValid(oPC) && GetIsPC(oPC)) { int nXP = ((level*(level - 1))/2)*1000; SetXP(oPC,nXP); } } void RemoveAllItems(object oTarget, int bRemoveFromEquipped=FALSE) { if (GetIsObjectValid(oTarget) && GetHasInventory(oTarget)) { object oItem = GetFirstItemInInventory(); if(GetIsObjectValid(oItem)) { while(GetIsObjectValid(oItem)) { DestroyItem(oItem); oItem = GetNextItemInInventory(); } } if (bRemoveFromEquipped && (GetIsPC(oTarget) || GetObjectType(oTarget)==OBJECT_TYPE_CREATURE)) { // Check Equip Items and get rid of them int i; for(i=0; i<14; i++) { object oEquip = GetItemInSlot(i,oTarget); if(GetIsObjectValid(oEquip)) { DestroyItem(oItem); } } } } } int RemoveXItemsByTag(object oTarget, string sTag, int amount) { int bRemovedItems = FALSE; object oItem = GetFirstItemInInventory(oTarget); while(GetIsObjectValid(oItem) && amount > 0) { if (GetTag(oItem) == sTag) { int nStackSize = GetItemStackSize(oItem); if (nStackSize>amount && nStackSize>1) { SetItemStackSize(oItem, nStackSize-amount); amount = 0; bRemovedItems = TRUE; } else { DestroyItem(oItem); amount=amount-nStackSize; bRemovedItems = TRUE; } } oItem = GetNextItemInInventory(oTarget); } return bRemovedItems; } int RemoveXItemsByResRef(object oTarget, string sResRef, int amount) { int bRemovedItems = FALSE; object oItem = GetFirstItemInInventory(oTarget); while(GetIsObjectValid(oItem) && amount > 0) { if (GetResRef(oItem) == sResRef) { int nStackSize = GetItemStackSize(oItem); if (nStackSize>amount && nStackSize>1) { SetItemStackSize(oItem, nStackSize-amount); amount = 0; bRemovedItems = TRUE; } else { DestroyItem(oItem); amount=amount-nStackSize; bRemovedItems = TRUE; } } oItem = GetNextItemInInventory(oTarget); } return bRemovedItems; } int CountItemsByTag(object oTarget, string sTag) { int nNumberOfItems; object oItem = GetFirstItemInInventory(oTarget); while(GetIsObjectValid(oItem)) { if (GetTag(oItem) == sTag) { int nStackSize = GetItemStackSize(oItem); nNumberOfItems=nNumberOfItems+nStackSize; } oItem = GetNextItemInInventory(oTarget); } return nNumberOfItems; } int CountItemsByResRef(object oTarget, string sResRef) { int nNumberOfItems; object oItem = GetFirstItemInInventory(oTarget); while(GetIsObjectValid(oItem)) { if (GetResRef(oItem) == sResRef) { int nStackSize = GetItemStackSize(oItem); nNumberOfItems=nNumberOfItems+nStackSize; } oItem = GetNextItemInInventory(oTarget); } return nNumberOfItems; } //void main(){}