LoT_PRC8/_module/nss/pgs_chest_dsturb.nss
Jaysyn904 ec287507a1 Initial upload
Initial upload.
2023-09-25 21:32:17 -04:00

109 lines
4.3 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name: pgs_chest_dsturb
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
OnDisturb event for guild storage chests.
*/
//:://////////////////////////////////////////////
//:: Created By: Samius Maximus
//:: Created On:
//:://////////////////////////////////////////////
#include "inc_gsystem"
void main()
{
object oPlayer = GetLastDisturbed();
//--------------------------------------------
//Check if the script should proceed.
//--------------------------------------------
if (((!GetIsPC (oPlayer)) && (!GetIsDM (oPlayer))) || (GetLocalInt (OBJECT_SELF, "Item_Transfer_In_Progress")))
return;
object oChest = GetLocalObject (OBJECT_SELF, "Temp_Storage_Chest");
object oItem = GetInventoryDisturbItem();
int iItemCount = GetLocalInt (oChest, "Item_Count");
//--------------------------------------------
//Determine if item was added or removed.
//--------------------------------------------
if (GetInventoryDisturbType() == INVENTORY_DISTURB_TYPE_ADDED)
{
if (iItemCount == GetMaxHitPoints (oChest)) /*Check for more room.*/
{
SendMessageToPC (oPlayer, "This storage chest is currently at " +
"maximum capacity.");
CopyItem (oItem, oPlayer); /*Bypass OnDisturbed event again.*/
DestroyObject (oItem);
}
else if (GetHasInventory (oItem))
{
SendMessageToPC (oPlayer, "Containers may not be stored in here.");
CopyItem (oItem, oPlayer); /*Bypass OnDisturbed event again.*/
DestroyObject (oItem);
}
else if (GetTag (oItem) == "NW_IT_GOLD001")
{
int iGuild = GetLocalInt (oPlayer, "Player_Guild_Number");
if (iGuild != 0)
{
int iAmount = GetItemStackSize (oItem);
//---------------------------------------------
//Take player gold and add it to guild account.
//---------------------------------------------
SetModuleGuildAccountValue (iGuild, GetModuleGuildAccountValue
(iGuild) + iAmount);
SendPGSGuildNotice (iGuild, GetName (oPlayer) + " has donated " +
IntToString (iAmount) + " gold piece(s) to the guild account.");
DestroyObject (oItem);
}
}
else /*Valid item to store in chest.*/
{
//---------------------------------------------
//Store item on storage creature for persistency.
//---------------------------------------------
CopyItem (oItem, GetLocalObject (OBJECT_SELF, "Temp_Storage_Creature"));
//---------------------------------------------
//Increment storage count and inform player.
//---------------------------------------------
SetLocalInt (oChest, "Item_Count", iItemCount + 1);
SendMessageToPC (oPlayer, "Item has succesfully been added to " +
"the storage chest.");
}
}
else /*Item has been removed.*/
{
object oStorage = GetLocalObject (OBJECT_SELF, "Temp_Storage_Creature");
object oItemLoop = GetFirstItemInInventory (oStorage);
//--------------------------------------------
//Find item on storage creature and remove it.
//--------------------------------------------
while (GetIsObjectValid (oItemLoop))
{
//--------------------------------------------
//Check item resref and stack count for match.
//--------------------------------------------
if ((GetResRef (oItem) == GetResRef (oItemLoop)) && (GetItemStackSize (oItem) == GetItemStackSize (oItemLoop)))
{
DestroyObject (oItemLoop);
break;
}
oItemLoop = GetNextItemInInventory (oStorage);
}
//--------------------------------------------
//Decrement item count, and inform player.
//--------------------------------------------
SetLocalInt (oChest, "Item_Count", iItemCount - 1);
SendMessageToPC (oPlayer, "Item has succesfully been removed from the " +
"storage chest.");
}
}