NWNDS/nwnds_module/tchest_loot.nss
Jaysyn904 de24f81734 Added NWN Dark Sun module contents
Added NWN Dark Sun module contents.
2021-07-12 21:24:46 -04:00

583 lines
19 KiB
Plaintext

//Treasure Chest Loot
/*
By: The Great Slayer of Gelatinous Cubes
On: 1/31/03
This generates loot in a treasure chest based on initial items placed in it
Included is a CreateLootXTimes, for easy customization
This goes in a containers on open event
Enjoy!
*/
#include "TGSOFGC_INC"
void CreateLoot(object oSelf, int iNum)
//Originally I used the local object to set the stack size
//However, while this method should work, it seems to only work the first time
//The function is called, why is still a mystery
{
int iPick = Random(iNum)+1; //The random number of the pick
string sNum = IntToString(iPick); //Convert the number into a string to use as a name
string sResref = GetLocalString(oSelf, sNum); //Get the resref stored under that number
//////These two lines are relics to a mystery I would love an answer to
// object oRef = GetLocalObject(oSelf, sNum);
// int iStack = GetNumStackedItems(oRef);
///////////////////////////////////////////////
CreateItemOnObject(sResref, oSelf, 1); //Spawn a stack size one of that loot
}
void CreateLootXTimes(int iTimes, object oChest, int iNum)
//This function is included for customization by novice scriptors whom are scared
//It Also reduces future needs to type, I am only including suport for:
//ints ranging between 0-30, if You run a function like create loot 30+ times you are asking to crash
//I recommend keeping this low, especially lower than about 15-20
//This script is dedicated to the god send of Copy+Paste
{
if(iTimes == 1){
CreateLoot(oChest, iNum);
}
if(iTimes == 2){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 3){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 4){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 5){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 6){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 7){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 8){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 9){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 10){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 11){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 12){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 13){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 14){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 15){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 16){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 17){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 18){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 19){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 20){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 21){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 22){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 23){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 24){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 25){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 26){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 27){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 28){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 29){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
if(iTimes == 30){
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
CreateLoot(oChest, iNum);
}
else{}
}
void main()
//This script goes in a container's on open event
{
object oChest = OBJECT_SELF; //The container
float fDelay = RandomFloat(1200.0)+600.0; //Respawn delay = 10-20 minutes
//float fDelay = 1.0; //This is a relic of testing
int iLocal = GetLocalInt(oChest, "switch"); //The switch local keeps track of three states, first time open/unopened = 0, will spawn treasure when opened = 1, nothing special = 2
if(iLocal == 0){ //This should only fire the first time it is opened
int iNumber = CountItemsInInventory(oChest); //This should only run once, and sets the approprait local variables for the createloot function
SetLocalInt(oChest, "items", iNumber);//Store the info above, so you don't need to run more counts
EmptyInventory(oChest);//Get rid of the initial stuff, that made up the options or loot table
CreateLoot(oChest, iNumber); //Create one peice of loot
SetLocalInt(oChest, "switch", 2); //Set to deactivate
DelayCommand(fDelay, SetLocalInt(oChest, "switch", 1)); //After the delay passes set to 1, or active
}
if(iLocal == 1){
int iNum = GetLocalInt(oChest, "items"); //Get the local int, set above so you don't need to count again. Multiple counts after the emptying and or additions wrecks the loot table
CreateLoot(oChest, iNum); //Create one peice of loot
SetLocalInt(oChest, "switch", 2);//Set it to disabled
DelayCommand(fDelay, SetLocalInt(oChest, "switch", 1));//After the delay re-enable the chest
}
else{}//if iLocal doesn't equal 1 or 0, ie 2, then it is disabled (take no special actions)
}