92 lines
3.4 KiB
Plaintext
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)));
|
|
}
|