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

92 lines
3.4 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name: pgs_chest_used
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
OnUsed event for storage chests.
*/
//:://////////////////////////////////////////////
//:: Created By: Samius Maximus
//:: Created On:
//:://////////////////////////////////////////////
#include "inc_gsystem_terr"
void main()
{
object oPlayer = GetLastUsedBy();
if (GetLocalInt (OBJECT_SELF, "Currently_In_Use")) /*Check if available.*/
{
SendMessageToPC (oPlayer, "This storage chest is currently in use.");
return;
}
int iTerritory = GetPGSStorageTerritory (OBJECT_SELF);
int iTerritoryGuild = GetTerritoryGuildNumber (iTerritory);
object oCreature = GetTerritoryStorageCreature (iTerritory);
vector vChest = GetPosition (OBJECT_SELF);
int iCopyItems = FALSE;
//--------------------------------------------
//Create storage object - has actual storage.
//--------------------------------------------
object oUniqueStorage = CreateObject (OBJECT_TYPE_PLACEABLE, "storage_chest_u",
Location (GetArea (OBJECT_SELF), Vector (vChest.x, vChest.y, vChest.z -
10.0f), GetFacing (oPlayer)));
//--------------------------------------------
//Check for previous initialization of storage.
//--------------------------------------------
if (!GetIsObjectValid (oCreature))
oCreature = CreateObject (OBJECT_TYPE_CREATURE, "storagecreature",
GetLocation (OBJECT_SELF));
else if (GetIsDM (oPlayer) || iTerritory == 0 || (GetLocalInt (oPlayer, "Player_Guild_Rank") == 4 && GetLocalInt (oPlayer, "Player_Guild_Number") == iTerritoryGuild))
iCopyItems = TRUE;
if (iCopyItems)
PrintString ("DM has access to storage chests.");
//--------------------------------------------
//Make storage creature invis. to players.
//--------------------------------------------
ApplyEffectToObject (DURATION_TYPE_PERMANENT, EffectVisualEffect
(VFX_DUR_CUTSCENE_INVISIBILITY), oCreature);
//--------------------------------------------
//Loop through items to calculate item count.
//--------------------------------------------
object oItem = GetFirstItemInInventory (oCreature);
int iItemCount = 0;
SetLocalInt (oPlayer, "Item_Transfer_In_Progress", TRUE);
//--------------------------------------------
//Copy storage items into storage chest.
//--------------------------------------------
while (GetIsObjectValid (oItem))
{
if (iCopyItems)
CopyItem (oItem, oUniqueStorage);
iItemCount++;
oItem = GetNextItemInInventory (oCreature);
}
DeleteLocalInt (oPlayer, "Item_Transfer_In_Progress");
SetLocalInt (OBJECT_SELF, "Item_Count", iItemCount);
//--------------------------------------------
//Store storage-related variables.
//--------------------------------------------
SetLocalInt (OBJECT_SELF, "Currently_In_Use", TRUE);
SetLocalObject (oUniqueStorage, "Temp_Storage_Creature", oCreature);
SetLocalObject (oUniqueStorage, "Temp_Storage_Chest", OBJECT_SELF);
//--------------------------------------------
//Give player access to storage inventory.
//--------------------------------------------
DelayCommand (1.0f, AssignCommand (oPlayer, ActionInteractObject
(oUniqueStorage)));
}