55 lines
1.7 KiB
Plaintext
55 lines
1.7 KiB
Plaintext
//sChest = string SourceChest tag
|
|
//oChest = Object Destination Chest
|
|
// grab random object from source Chest
|
|
// and create a copy of it in Destination chest
|
|
// the source chests are in the Dungeon Master's Palace
|
|
// and have unique names
|
|
void MakeTreasure(string sChest,object oChest){
|
|
int nCountItems;
|
|
int nRandomItem;
|
|
object oSource;
|
|
object oItem;
|
|
string sResRefItem;
|
|
oSource = GetObjectByTag(sChest);
|
|
if(!GetIsObjectValid(oSource))return;
|
|
//count item logic
|
|
oItem=GetFirstItemInInventory(oSource);
|
|
nCountItems = 0;
|
|
while(GetIsObjectValid(oItem)){
|
|
nCountItems++;
|
|
oItem=GetNextItemInInventory(oSource);
|
|
}
|
|
//now get random item
|
|
nRandomItem=Random(nCountItems)+1;
|
|
oItem=GetFirstItemInInventory(oSource);
|
|
while(nRandomItem>1){
|
|
nRandomItem--;
|
|
oItem=GetNextItemInInventory(oSource);
|
|
}
|
|
sResRefItem = GetResRef(oItem);
|
|
CreateItemOnObject(sResRefItem,oChest);
|
|
}
|
|
|
|
void main()
|
|
{
|
|
object oThisChest = OBJECT_SELF;
|
|
location lThisChest = GetLocation(oThisChest);
|
|
float fDelay = 10.0; // delay in seconds
|
|
int nFlag= 0;
|
|
string sSourceChest; // Source of Treasure
|
|
nFlag = GetLocalInt(oThisChest, "Used");
|
|
sSourceChest = GetLocalString(GetArea(oThisChest),"SourceChest");
|
|
if(nFlag > 0) return; // timer in progress
|
|
//2 pieces of junk, 1 good item
|
|
//obviously chests with these tags apear in the
|
|
//Dungeon Masters Palace and have the appropriate
|
|
//items in them
|
|
MakeTreasure("cgchestjunk",oThisChest);
|
|
if(d2() > 1 ) MakeTreasure("cgchestjunk",oThisChest);
|
|
MakeTreasure(sSourceChest,oThisChest);
|
|
//MakeTreasure("cgchest3",oThisChest);
|
|
SetLocalInt(oThisChest,"Used",1); // this chest has been
|
|
// used already, don't do it again
|
|
|
|
}
|