Initial Upload
Initial Upload
This commit is contained in:
159
_module/nss/itemupdater_inc.nss
Normal file
159
_module/nss/itemupdater_inc.nss
Normal file
@@ -0,0 +1,159 @@
|
||||
#include "nw_o0_itemmaker"
|
||||
|
||||
const string ITEMS_UPADTE_2DA = "item_updates";
|
||||
const string ITEM_COLUMN_2DA = "ITEM";
|
||||
const string REPLACEMENT_COLUMN_2DA = "REPLACEMENT";
|
||||
const string ALL_ITEMS_STRING = "all_items_string";
|
||||
const string REPLACEMENT_ITEM = "replacement_item";
|
||||
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Name: BuildItemsForUpdateString
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
Basically builds a one long string of all
|
||||
the item tags that are to be removed/replaced/etc.
|
||||
Each item tag in the string is comma seperated.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Elvin
|
||||
//:: Created On: 04-Dec-2004
|
||||
//:://////////////////////////////////////////////
|
||||
void BuildItemsForUpdateString()
|
||||
{
|
||||
int nItemCount = 0;
|
||||
string sItemTag = "";
|
||||
string sAllItems = "";
|
||||
|
||||
sItemTag = Get2DAString(ITEMS_UPADTE_2DA, ITEM_COLUMN_2DA, nItemCount);
|
||||
while(sItemTag != "")
|
||||
{
|
||||
sAllItems += (sItemTag + ",");
|
||||
sItemTag = Get2DAString(ITEMS_UPADTE_2DA, ITEM_COLUMN_2DA, nItemCount);
|
||||
nItemCount++;
|
||||
}
|
||||
|
||||
SetLocalString(GetModule(), ALL_ITEMS_STRING, sAllItems);
|
||||
}
|
||||
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Name: UpdateCharEquipment
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
Updates all the items on a PC, if they require
|
||||
removing/replacing/etc.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Elvin
|
||||
//:: Created On: 04-Dec-2004
|
||||
void UpdateCharEquipment(object oPC)
|
||||
{
|
||||
// Get the big long string containing all the item tags that are
|
||||
// to be replaced.
|
||||
string sAllItemsString = GetLocalString(GetModule(), ALL_ITEMS_STRING);
|
||||
int nCreateItemCount = 0;
|
||||
|
||||
object oItem = GetFirstItemInInventory(oPC);
|
||||
int nNumber = 0;
|
||||
while(GetIsObjectValid(oItem))
|
||||
{
|
||||
int nItemCount = 0;
|
||||
string sItemTag = "";
|
||||
string sReplaceResRef = "";
|
||||
int nGoldCompensation = 0;
|
||||
string sInventItemTag = GetTag(oItem);
|
||||
|
||||
// Get first item tag (in the items column) in the 2da file
|
||||
sItemTag = Get2DAString(ITEMS_UPADTE_2DA, ITEM_COLUMN_2DA, nItemCount);
|
||||
|
||||
// If the item tag is a sub string of the string that contains ALL
|
||||
// the items, then this item is among those that need updating
|
||||
if(FindSubString(sAllItemsString, sInventItemTag) != -1)
|
||||
{
|
||||
// If an item tag was found
|
||||
while(sItemTag != "")
|
||||
{
|
||||
if( sItemTag == sInventItemTag )
|
||||
{
|
||||
// Get ResRef of replacement item/gold
|
||||
sReplaceResRef = Get2DAString(ITEMS_UPADTE_2DA, REPLACEMENT_COLUMN_2DA, nItemCount);
|
||||
|
||||
DestroyObject(oItem);
|
||||
nGoldCompensation = StringToInt(sReplaceResRef);
|
||||
|
||||
// If replacement is a number, then the player gets gold
|
||||
// in return
|
||||
if(nGoldCompensation > 0 )
|
||||
{
|
||||
GiveGoldToCreature(oPC, nGoldCompensation);
|
||||
}
|
||||
// Else if the ResRef is not an empty string, then
|
||||
// the player gets a replacement item.
|
||||
else if(sReplaceResRef != "")
|
||||
{
|
||||
SetLocalArrayString(oPC, REPLACEMENT_ITEM, nCreateItemCount, sReplaceResRef);
|
||||
nCreateItemCount++;
|
||||
}
|
||||
}
|
||||
// Get next item in 2da file
|
||||
nItemCount++;
|
||||
sItemTag = Get2DAString(ITEMS_UPADTE_2DA, ITEM_COLUMN_2DA, nItemCount);
|
||||
sReplaceResRef = "";
|
||||
}
|
||||
}
|
||||
oItem = GetNextItemInInventory(oPC);
|
||||
}
|
||||
|
||||
// Now do the same for all the equipped items
|
||||
int nSlot;
|
||||
for(nSlot = 0; nSlot <= NUM_INVENTORY_SLOTS; nSlot++ )
|
||||
{
|
||||
oItem = GetItemInSlot(nSlot);
|
||||
string sEquippedItemTag = GetTag(oItem);
|
||||
int nItemCount = 0;
|
||||
string sItemTag = "";
|
||||
string sReplaceResRef = "";
|
||||
int nGoldCompensation = 0;
|
||||
|
||||
if(GetIsObjectValid(oItem) && FindSubString(sAllItemsString, sEquippedItemTag) != -1)
|
||||
{
|
||||
sItemTag = Get2DAString(ITEMS_UPADTE_2DA, ITEM_COLUMN_2DA, nItemCount);
|
||||
while(sItemTag != "")
|
||||
{
|
||||
if(sEquippedItemTag == sItemTag)
|
||||
{
|
||||
sReplaceResRef = Get2DAString(ITEMS_UPADTE_2DA, REPLACEMENT_COLUMN_2DA, nItemCount);
|
||||
nGoldCompensation = StringToInt(sReplaceResRef);
|
||||
DestroyObject(oItem);
|
||||
|
||||
// If replacement is a number, then the player gets gold
|
||||
// in return
|
||||
if(nGoldCompensation > 0 )
|
||||
{
|
||||
GiveGoldToCreature(oPC, nGoldCompensation);
|
||||
}
|
||||
// Else if the ResRef is not an empty string, then
|
||||
// the player gets a replacement item.
|
||||
else if(sReplaceResRef != "")
|
||||
{
|
||||
SetLocalArrayString(oPC, REPLACEMENT_ITEM, nCreateItemCount, sReplaceResRef);
|
||||
nCreateItemCount++;
|
||||
}
|
||||
}
|
||||
|
||||
nItemCount++;
|
||||
sItemTag = Get2DAString(ITEMS_UPADTE_2DA, ITEM_COLUMN_2DA, nItemCount);
|
||||
sReplaceResRef = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( nCreateItemCount > 0 )
|
||||
{
|
||||
int nCount;
|
||||
string sResRef;
|
||||
for( nCount = 0; nCount < nCreateItemCount; nCount++)
|
||||
{ sResRef = GetLocalArrayString(oPC, REPLACEMENT_ITEM, nCount);
|
||||
CreateItemOnObject(sResRef, oPC);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user