Aschbourne_PRC8/_module/nss/_open_tchest.nss

697 lines
23 KiB
Plaintext
Raw Normal View History

2024-06-14 10:48:20 -04:00
string GetTreasure(int iMaxTreasureRange);
string GetScrollLow();
string GetScrollMed();
string GetScrollHigh();
//void VerifyNotStore(object oTreasure, object oSelf);
void main()
{
object oSelf=OBJECT_SELF;
if (GetLocalInt(oSelf,"iAmOpened")!=0) return;
SetLocalInt(oSelf,"iAmOpened",99);
int iChestLevel = GetLocalInt(oSelf,"iChestLevel");
int iGold = iChestLevel*500; //500gp per chest level gives 500-5000 gold.
int iMaxTreasureRange = 10*iChestLevel;
int iTreasureItems=15+(d4(1)*iChestLevel);
CreateItemOnObject("nw_it_gold001",oSelf,iGold);
string sResRef;
int iStack;
object oTreasure;
float fDelay=10.0;
for (iTreasureItems; iTreasureItems>0; iTreasureItems--)
{
fDelay = fDelay+0.3;
sResRef = GetTreasure(iMaxTreasureRange);
iStack = StringToInt(GetStringRight(sResRef,2));
sResRef=GetStringLeft(sResRef,GetStringLength(sResRef)-3);
oTreasure = CreateItemOnObject(sResRef,oSelf,iStack);
/*
if (GetStringLeft(sResRef,6)=="scribe")
{
AssignCommand(oTreasure,DelayCommand(fDelay,VerifyNotStore(oTreasure,oSelf)));
SendMessageToPC(GetFirstPC(),"Attempting to fix scroll "+sResRef);
}
else
{
SendMessageToPC(GetFirstPC(),"Created item : "+sResRef);
}
if (GetIsObjectValid(oTreasure)==FALSE) SendMessageToPC(GetFirstPC(),"Object Not Created");
*/
}
}
string GetTreasure(int iMaxTreasureRange)
{
string sResRef = "OBJECT_INVALID";
int iTempRange = iMaxTreasureRange;
//Small chance of any treasure no matter the level of the map
if (Random(1000)<(iMaxTreasureRange*5)) iTempRange=100;
if (Random(1000)<300) iTempRange = iTempRange+d10(1);
if (Random(1000)<300) iTempRange = iTempRange+d10(1);
if (iTempRange>100) iTempRange=100;
int iRandom = Random(iTempRange);
int iStack=1;
int iTempVal;
switch (iRandom)
{
case 1:{sResRef="ring_iron_";break;}
case 2:{sResRef="_UOAGEM";iStack=d4(1);break;}
case 3:{sResRef="_UOA_SMALLSHIELD";break;}
case 4:{sResRef="_UOA_SCROLL";iStack=d6(1)/2;break;} //scrolls
case 5:{sResRef="_UOA_WEAP";break;}
case 6:{sResRef="_UOA_SCROLL";iStack=d4(1)/2;break;} //scrolls
case 7:{sResRef="nw_it_gold001";iStack=d20(4)+19;break;}
case 8:{sResRef="_UOA_SCROLL";iStack=d4(1);break;} //scrolls
case 9:{sResRef="_UOA_CHAINMAIL";break;}
case 10:{sResRef="_UOA_HELMET";break;}
case 11:{sResRef="ingot002";iStack=10;break;} //Dull Copper Ingots
case 12:{sResRef="_UOA_STUD";break;}
case 13:{sResRef="_UOA_ESSENCE";iStack=d4(2)+2;break;}
case 14:{sResRef="ring_dull_";break;}
case 15:{sResRef="acid003";iStack=10;break;} //Acid, Weak
case 16:{sResRef="_UOA_SCROLL";iStack=d4(1);break;} //scrolls
case 17:{sResRef="ingot003";iStack=10;break;} //Shadow Iron Ingots
case 18:{sResRef="ingot001";iStack=10;break;}
case 19:{sResRef="_UOA_WEAP";break;}
case 20:{sResRef="_UOA_CHAINMAIL";break;}
case 21:{sResRef="ingot002";iStack=10;break;}
case 22:{sResRef="_UOA_SHIELD";break;}
case 23:{sResRef="_UOA_HELMET";break;}
case 24:{sResRef="ingot004";iStack=10;break;} //Copper Ingots
case 25:{sResRef="_UOAGEM";iStack=(d4(2)/2)+1;break;}
case 26:{sResRef="softleather007";break;} //Medium Soft Leather
case 27:{sResRef="hardleather007";break;} //Medium Hard Leather
case 28:{sResRef="ingot010";iStack=10;break;} //Silver ingots
case 29:{sResRef="_UOA_ESSENCE";iStack=d4(2)+2;break;}
case 30:{sResRef="_UOA_WEAP";break;}
case 31:{sResRef="ingot005";iStack=10;break;} //Bronze Ingots
case 32:{sResRef="_UOA_CHAINMAIL";break;}
case 33:{sResRef="scrl_blank_norma";iStack=10;break;} //Blank Parchment
case 34:{sResRef="_UOAGEM";iStack=d6(1);break;}
case 35:{sResRef="_UOA_WEAP";break;}
case 36:{sResRef="_UOA_SHIELD";break;}
case 37:{sResRef="ingot006";iStack=10;break;} //Gold Ingots
case 38:{sResRef="_UOA_CHAINMAIL";break;}
case 39:{sResRef="acid002";iStack=10;break;} //Acid, Moderate
case 40:{sResRef="_UOA_STUD";break;}
case 41:{sResRef="_UOAGEM";iStack=d4(2);break;}
case 42:{sResRef="_UOA_ESSENCE";iStack=d4(2)+2;break;}
case 43:{sResRef="ring_shadow_";break;}
case 44:{sResRef="ring_copper_";break;}
case 45:{sResRef="ingot007";iStack=10;break;} //Agapite Ingots
case 46:{sResRef="ingot013";iStack=10;break;} //Platinum Ingots
case 47:{sResRef="ring_bronze_";break;}
case 48:{sResRef="arrowhead041";iStack=d10(4)+10;break;} //Platinum Arrowheads(Exceptional)
case 49:{sResRef="arrowhead077";iStack=d10(4)+10;break;} //Platinum Bolt Tips(Exceptional)
case 50:{sResRef="ring_gold_";break;}
case 51:{sResRef="arrowhead023";iStack=d10(4)+10;break;} //Agapite Arrowheads (Exceptional)
case 52:{sResRef="arrowhead059";iStack=d10(4)+10;break;} //Agapite Bolt Tips (Exceptional)
case 53:{sResRef="ring_agapite_";break;}
case 54:{sResRef="ring_platnum_";break;}
case 55:{sResRef="_UOAGEM";iStack=d4(2)+2;break;}
case 56:{sResRef="belt006";break;} //Black Leather Belt (exceptional)
case 57:{sResRef="ring_silver_";break;}
case 58:{sResRef="_UOA_HELMET";break;}
case 59:{sResRef="_UOA_ESSENCE";iStack=d4(2)+2;break;}
case 60:{sResRef="_UOA_LARGESHIELD";break;}
case 61:{sResRef="_UOA_WEAP";break;}
case 62:{sResRef="_UOA_STUD";break;}
case 63:{sResRef="boots009";break;} //Soft White Leather Boots (Exceptional)
case 64:{sResRef="gloves009";break;} //White Leather Gloves (Exceptional)
case 65:{sResRef="_UOAGEM";iStack=d4(2)+2;break;}
case 66:{sResRef="acid003";iStack=10;break;} //Acid, Strong
case 67:{sResRef="_UOA_SMALLSHIELD";break;}
case 68:{sResRef="_UOA_SHIELD";break;}
case 69:{sResRef="_UOAGEM";iStack=d4(2)+2;break;}
case 70:{sResRef="_UOA_WEAP";break;}
case 71:{sResRef="_UOA_SHIELD";break;}
case 72:{sResRef="_UOA_HELMET";break;}
case 73:{sResRef="ring_verite_";break;}
case 74:{sResRef="ingot008";iStack=10;break;} //Verite Ingots
case 75:{sResRef="ring_mithril_";break;}
case 76:{sResRef="_UOA_SMALLSHIELD";break;}
case 77:{sResRef="ingot011";iStack=10;break;} //Mithril Ingots
case 78:{sResRef="_UOA_WEAP";break;}
case 79:{sResRef="_UOAGEM";iStack=d4(2)+2;break;}
case 80:{sResRef="_UOA_SCROLL";iStack=d4(1);break;} //scrolls
case 81:{sResRef="_UOA_LARGESHIELD";break;}
case 82:{sResRef="_UOA_WEAP";break;}
case 83:{sResRef="nw_it_gold001";iStack=d20(4)+19;break;}
case 84:{sResRef="_UOA_SMALLSHIELD";break;}
case 85:{sResRef="_UOAGEM";iStack=d4(2)+2;break;}
case 86:{sResRef="_UOA_CHAINMAIL";break;}
case 87:{sResRef="_UOA_SHIELD";break;}
case 88:{sResRef="_UOA_WEAP";break;}
case 89:{sResRef="_UOA_LARGESHIELD";break;}
case 90:{sResRef="_UOAGEM";iStack=d4(2)+2;break;}
case 91:{sResRef="ingot012";iStack=10;break;} //Adamantite Ingots
case 92:{sResRef="ring_val_";break;}
case 93:{sResRef="ingot009";iStack=10;break;} //Valorite Ingots
case 94:{sResRef="ring_admnt_";break;}
case 95:{sResRef="_UOA_CHAINMAIL";break;}
case 96:{sResRef="_UOA_LARGESHIELD";break;}
case 97:{sResRef="_UOA_CHAINMAIL";break;}
case 98:{sResRef="_UOA_WEAP";break;}
case 99:{sResRef="_UOA_CHAINMAIL";break;}
case 100:{sResRef="_UOA_CHAINMAIL";break;}
default:{sResRef="ingot001";iStack=10;break;} //Iron ingots
}
//determine ring type
if (GetStringLeft(sResRef,5)=="ring_")
{
iTempVal = (iMaxTreasureRange/2)+6; //56 gem types
sResRef=sResRef+IntToString(101+Random(iTempVal));
}
//Determine Gem Type
if (sResRef=="_UOAGEM")
{
iTempVal = (iMaxTreasureRange/2)+6; //56 gem types
switch (Random(iTempVal)+1)
{
case 2:{sResRef = "bandedagate";break;}
case 3:{sResRef = "bluequartz";break;}
case 4:{sResRef = "eyeagate";break;}
case 5:{sResRef = "hematite";break;}
case 6:{sResRef = "lapislazuli";break;}
case 7:{sResRef = "malachite";break;}
case 8:{sResRef = "mossagate";break;}
case 9:{sResRef = "obsidian";break;}
case 10:{sResRef = "rhodochrosite";break;}
case 11:{sResRef = "tigereye";break;}
case 12:{sResRef = "turquoise";break;}
case 13:{sResRef = "bloodstone";break;}
case 14:{sResRef = "carnelian";break;}
case 15:{sResRef = "chalcendony";break;}
case 16:{sResRef = "chrysoprase";break;}
case 17:{sResRef = "citrine";break;}
case 18:{sResRef = "jasper";break;}
case 19:{sResRef = "moonstone";break;}
case 20:{sResRef = "onyx";break;}
case 21:{sResRef = "rockcrystal";break;}
case 22:{sResRef = "sardonyx";break;}
case 23:{sResRef = "smokyquartz";break;}
case 24:{sResRef = "zircon";break;}
case 25:{sResRef = "starrosequart";break;}
case 26:{sResRef = "amber";break;}
case 27:{sResRef = "alexandrite";break;}
case 28:{sResRef = "amethyst";break;}
case 29:{sResRef = "chrysoberyl";break;}
case 30:{sResRef = "coral";break;}
case 31:{sResRef = "garnetsmall";break;}
case 32:{sResRef = "jade";break;}
case 33:{sResRef = "jet";break;}
case 34:{sResRef = "whitepearl";break;}
case 35:{sResRef = "redspinel";break;}
case 36:{sResRef = "tourmaline";break;}
case 37:{sResRef = "aquamarine";break;}
case 38:{sResRef = "garnetviolet";break;}
case 39:{sResRef = "blackpearl";break;}
case 40:{sResRef = "peridot";break;}
case 41:{sResRef = "bluespinel";break;}
case 42:{sResRef = "topaz";break;}
case 43:{sResRef = "blackopal";break;}
case 44:{sResRef = "emerald";break;}
case 45:{sResRef = "fireopal";break;}
case 46:{sResRef = "opal";break;}
case 47:{sResRef = "orientalameth";break;}
case 48:{sResRef = "orientaltopaz";break;}
case 49:{sResRef = "sapphire";break;}
case 50:{sResRef = "starruby";break;}
case 51:{sResRef = "starsapphire";break;}
case 52:{sResRef = "blacksapphire";break;}
case 53:{sResRef = "diamond";break;}
case 54:{sResRef = "jacinth";break;}
case 55:{sResRef = "orientalemera";break;}
case 56:{sResRef = "ruby";break;}
default:{sResRef = "azurite";break;}
}
if (d20(1)<6)
{
sResRef=sResRef+"00"+IntToString(d4(1));
}
}
//Shields
if (sResRef=="_UOA_LARGESHIELD")
{
iTempVal = (iMaxTreasureRange/10)+3;
sResRef="ashlw"+GetStringRight("000"+IntToString(Random(iTempVal)+1),3);
}
if (sResRef=="_UOA_SMALLSHIELD")
{
iTempVal = (iMaxTreasureRange/10)+3;
sResRef="ashsw"+GetStringRight("000"+IntToString(Random(iTempVal)+1),3);
}
if (sResRef=="_UOA_SHIELD")
{
iTempVal = (iMaxTreasureRange/10)+3;
sResRef="ashto"+GetStringRight("000"+IntToString(Random(iTempVal)+1),3);
}
//Determine Helmets
if (sResRef=="_UOA_HELMET")
{
int iBase;
iTempVal = ((iMaxTreasureRange/10)+2)*3;
if (Random(100)<10)
{
iTempVal = 12;
}
else
{
switch(d10(1)/2)
{
case 1:{iBase=13;break;}
case 2:{iBase=49;break;}
case 3:{iBase=85;break;}
case 4:{iBase=121;break;}
default:{iBase=157;break;}
}
}
sResRef="arhe"+GetStringRight("000"+IntToString(Random(iTempVal)+iBase),3);
}
//metal armors
if (sResRef=="_UOA_CHAINMAIL")
{
iTempVal = ((iMaxTreasureRange/10)+2)*3;
if (iMaxTreasureRange<20) iTempVal = ((iMaxTreasureRange/10)+2)+12;
switch (d8(1)-1)
{
case 2:{sResRef="aarcl"+GetStringRight("000"+IntToString(Random(iTempVal)+56),3);break;}
case 3:{sResRef="aarcl"+GetStringRight("000"+IntToString(Random(iTempVal)+92),3);break;}
case 4:{sResRef="aarcl"+GetStringRight("000"+IntToString(Random(iTempVal)+128),3);break;}
case 5:{sResRef="aarcl"+GetStringRight("000"+IntToString(Random(iTempVal)+272),3);break;}
case 6:{sResRef="aarcl"+GetStringRight("000"+IntToString(Random(iTempVal)+200),3);break;}
case 7:{sResRef="aarcl"+GetStringRight("000"+IntToString(Random(iTempVal)+236),3);break;}
default:{sResRef="aarcl"+GetStringRight("000"+IntToString(Random(iTempVal)+20),3);break;}
}
}
//Studded armors
if (sResRef=="_UOA_STUD")
{
iTempVal = ((iMaxTreasureRange/10)+2)*3;
switch (Random(3))
{
case 1:{sResRef="aarcl"+GetStringRight("000"+IntToString(Random(iTempVal)+405),3);break;}
case 2:{sResRef="aarcl"+GetStringRight("000"+IntToString(Random(iTempVal)+366),3);break;}
default:{sResRef="aarcl"+GetStringRight("000"+IntToString(Random(iTempVal)+315),3);break;}
}
}
//Weapons
if (sResRef=="_UOA_WEAP")
{
if (d20(1)<17)
{
iTempVal = ((iMaxTreasureRange/10)+2)*3;
switch (Random(25)+1)
{
case 1:{sResRef="wswdg";break;}
case 2:{sResRef="wswss";break;}
case 3:{sResRef="waxhn";break;}
case 4:{sResRef="waxbt";break;}
case 5:{sResRef="wblfl";break;}
case 6:{sResRef="wblfh";break;}
case 7:{sResRef="wblhl";break;}
case 8:{sResRef="wblhw";break;}
case 9:{sResRef="wblml";break;}
case 10:{sResRef="wblms";break;}
case 11:{sResRef="wswbs";break;}
case 12:{sResRef="wswgs";break;}
case 13:{sResRef="wswls";break;}
case 14:{sResRef="wswka";break;}
case 15:{sResRef="wswrp";break;}
case 16:{sResRef="wswsc";break;}
case 17:{sResRef="wspka";break;}
case 18:{sResRef="wspku";break;}
case 19:{sResRef="wspsc";break;}
case 20:{sResRef="wdbma";break;}
case 21:{sResRef="wdbax";break;}
case 22:{sResRef="wdbsw";break;}
case 23:{sResRef="wplhb";break;}
case 24:{sResRef="wplsc";break;}
default:{sResRef="wplss";break;}
}
}
else
{
iTempVal = ((iMaxTreasureRange/5)-1)*3;
switch(d4(1))
{
case 1:{sResRef="wbwsh";break;}
case 2:{sResRef="wbwln";break;}
case 3:{sResRef="wbwxl";break;}
default:{sResRef="wbwxh";break;}
}
}
sResRef=sResRef+GetStringRight("000"+IntToString(Random(iTempVal)+4),3);
}
if (sResRef=="_UOA_SCROLL")
{
if (iMaxTreasureRange<=30)
{
sResRef = GetScrollLow();
}
else
{
if (iMaxTreasureRange<=65)
{
if (Random(1000)<500)
{
sResRef = GetScrollLow();
}
else
{
sResRef = GetScrollMed();
}
}
else
{
switch (d4(1))
{
case 1:{sResRef =GetScrollLow();break;}
case 2:{sResRef =GetScrollMed();break;}
case 3:{sResRef =GetScrollHigh();break;}
default:{sResRef =GetScrollLow();break;}
}
} //end >30
} //End <=30
} //End scrolls
if (sResRef=="_UOA_ESSENCE")
{
sResRef = "essence"+GetStringRight("000"+IntToString(d20(1)),3);
}
sResRef=sResRef+"*"+GetStringRight("00"+IntToString(iStack),2);
return sResRef;
}
/*
void VerifyNotStore(object oTreasure, object oSelf)
{
if (GetLocalInt(oTreasure,"iRan")!=0) return; //already been copied
SetLocalInt(oTreasure,"iRan",99);
//HoTU persistent variables make this line necessary
AssignCommand(oTreasure,DelayCommand(20.0,DeleteLocalInt(oTreasure,"iRan")));
string sTag = GetTag(oTreasure);
if (GetStringRight(sTag,6)=="_Store")
{
string sTag2 = GetStringLeft(sTag,GetStringLength(sTag)-6)+"a";
object oTemp =CopyObject(oTreasure,GetLocation(oSelf),oSelf,sTag2);
DestroyObject(oTreasure,2.0);
SendMessageToPC(GetFirstPC(),"Created copy - "+GetTag(oTemp));
}
return;
}
*/
string GetScrollLow()
{
string sResRef;
int iNum;
switch (Random(107))
{
case 0:{iNum=5;break;}
case 1:{iNum=6;break;}
case 2:{iNum=7;break;}
case 3:{iNum=8;break;}
case 4:{iNum=10;break;}
case 5:{iNum=11;break;}
case 6:{iNum=13;break;}
case 7:{iNum=14;break;}
case 8:{iNum=16;break;}
case 9:{iNum=21;break;}
case 10:{iNum=22;break;}
case 11:{iNum=25;break;}
case 12:{iNum=28;break;}
case 13:{iNum=30;break;}
case 14:{iNum=31;break;}
case 15:{iNum=38;break;}
case 16:{iNum=39;break;}
case 17:{iNum=40;break;}
case 18:{iNum=42;break;}
case 19:{iNum=43;break;}
case 20:{iNum=45;break;}
case 21:{iNum=53;break;}
case 22:{iNum=55;break;}
case 23:{iNum=57;break;}
case 24:{iNum=60;break;}
case 25:{iNum=61;break;}
case 26:{iNum=62;break;}
case 27:{iNum=63;break;}
case 28:{iNum=66;break;}
case 29:{iNum=69;break;}
case 30:{iNum=70;break;}
case 31:{iNum=71;break;}
case 32:{iNum=72;break;}
case 33:{iNum=73;break;}
case 34:{iNum=77;break;}
case 35:{iNum=84;break;}
case 36:{iNum=85;break;}
case 37:{iNum=87;break;}
case 38:{iNum=95;break;}
case 39:{iNum=96;break;}
case 40:{iNum=99;break;}
case 41:{iNum=100;break;}
case 42:{iNum=103;break;}
case 43:{iNum=104;break;}
case 44:{iNum=105;break;}
case 45:{iNum=108;break;}
case 46:{iNum=109;break;}
case 47:{iNum=113;break;}
case 48:{iNum=114;break;}
case 49:{iNum=115;break;}
case 50:{iNum=116;break;}
case 51:{iNum=118;break;}
case 52:{iNum=120;break;}
case 53:{iNum=121;break;}
case 54:{iNum=122;break;}
case 55:{iNum=132;break;}
case 56:{iNum=133;break;}
case 57:{iNum=136;break;}
case 58:{iNum=138;break;}
case 59:{iNum=139;break;}
case 60:{iNum=140;break;}
case 61:{iNum=142;break;}
case 62:{iNum=143;break;}
case 63:{iNum=147;break;}
case 64:{iNum=149;break;}
case 65:{iNum=150;break;}
case 66:{iNum=159;break;}
case 67:{iNum=160;break;}
case 68:{iNum=163;break;}
case 69:{iNum=166;break;}
case 70:{iNum=173;break;}
case 71:{iNum=176;break;}
case 72:{iNum=180;break;}
case 73:{iNum=182;break;}
case 74:{iNum=184;break;}
case 75:{iNum=185;break;}
case 76:{iNum=186;break;}
case 77:{iNum=187;break;}
case 78:{iNum=193;break;}
case 79:{iNum=197;break;}
case 80:{iNum=198;break;}
case 81:{iNum=199;break;}
case 82:{iNum=200;break;}
case 83:{iNum=201;break;}
case 84:{iNum=207;break;}
case 85:{iNum=209;break;}
case 86:{iNum=211;break;}
case 87:{iNum=212;break;}
case 88:{iNum=215;break;}
case 89:{iNum=216;break;}
case 90:{iNum=217;break;}
case 91:{iNum=219;break;}
case 92:{iNum=221;break;}
case 93:{iNum=223;break;}
case 94:{iNum=226;break;}
case 95:{iNum=227;break;}
case 96:{iNum=228;break;}
case 97:{iNum=229;break;}
case 98:{iNum=232;break;}
case 99:{iNum=234;break;}
case 100:{iNum=237;break;}
case 101:{iNum=238;break;}
case 102:{iNum=239;break;}
case 103:{iNum=240;break;}
case 104:{iNum=243;break;}
case 105:{iNum=244;break;}
default:{iNum=246;break;}
}
sResRef="scribe"+GetStringRight("000"+IntToString(iNum),3);
return sResRef;
}
string GetScrollMed()
{
string sResRef;
int iNum;
switch (Random(85))
{
case 0:{iNum=1;break;}
case 1:{iNum=2;break;}
case 2:{iNum=9;break;}
case 3:{iNum=12;break;}
case 4:{iNum=15;break;}
case 5:{iNum=17;break;}
case 6:{iNum=18;break;}
case 7:{iNum=19;break;}
case 8:{iNum=24;break;}
case 9:{iNum=27;break;}
case 10:{iNum=29;break;}
case 11:{iNum=33;break;}
case 12:{iNum=34;break;}
case 13:{iNum=35;break;}
case 14:{iNum=36;break;}
case 15:{iNum=37;break;}
case 16:{iNum=44;break;}
case 17:{iNum=46;break;}
case 18:{iNum=49;break;}
case 19:{iNum=50;break;}
case 20:{iNum=52;break;}
case 21:{iNum=54;break;}
case 22:{iNum=58;break;}
case 23:{iNum=64;break;}
case 24:{iNum=65;break;}
case 25:{iNum=67;break;}
case 26:{iNum=68;break;}
case 27:{iNum=76;break;}
case 28:{iNum=80;break;}
case 29:{iNum=81;break;}
case 30:{iNum=86;break;}
case 31:{iNum=88;break;}
case 32:{iNum=89;break;}
case 33:{iNum=90;break;}
case 34:{iNum=98;break;}
case 35:{iNum=101;break;}
case 36:{iNum=102;break;}
case 37:{iNum=106;break;}
case 38:{iNum=110;break;}
case 39:{iNum=111;break;}
case 40:{iNum=119;break;}
case 41:{iNum=123;break;}
case 42:{iNum=125;break;}
case 43:{iNum=126;break;}
case 44:{iNum=129;break;}
case 45:{iNum=131;break;}
case 46:{iNum=135;break;}
case 47:{iNum=141;break;}
case 48:{iNum=146;break;}
case 49:{iNum=148;break;}
case 50:{iNum=151;break;}
case 51:{iNum=153;break;}
case 52:{iNum=155;break;}
case 53:{iNum=156;break;}
case 54:{iNum=158;break;}
case 55:{iNum=162;break;}
case 56:{iNum=164;break;}
case 57:{iNum=167;break;}
case 58:{iNum=168;break;}
case 59:{iNum=169;break;}
case 60:{iNum=170;break;}
case 61:{iNum=171;break;}
case 62:{iNum=172;break;}
case 63:{iNum=174;break;}
case 64:{iNum=177;break;}
case 65:{iNum=181;break;}
case 66:{iNum=183;break;}
case 67:{iNum=189;break;}
case 68:{iNum=190;break;}
case 69:{iNum=194;break;}
case 70:{iNum=204;break;}
case 71:{iNum=206;break;}
case 72:{iNum=210;break;}
case 73:{iNum=213;break;}
case 74:{iNum=214;break;}
case 75:{iNum=218;break;}
case 76:{iNum=220;break;}
case 77:{iNum=224;break;}
case 78:{iNum=225;break;}
case 79:{iNum=230;break;}
case 80:{iNum=231;break;}
case 81:{iNum=233;break;}
case 82:{iNum=235;break;}
case 83:{iNum=236;break;}
default:{iNum=241;break;}
}
sResRef="scribe"+GetStringRight("000"+IntToString(iNum),3);
return sResRef;
}
string GetScrollHigh()
{
string sResRef;
int iNum;
switch (Random(51))
{
case 0:{iNum=20;break;}
case 1:{iNum=23;break;}
case 2:{iNum=26;break;}
case 3:{iNum=32;break;}
case 4:{iNum=41;break;}
case 5:{iNum=47;break;}
case 6:{iNum=48;break;}
case 7:{iNum=51;break;}
case 8:{iNum=56;break;}
case 9:{iNum=59;break;}
case 10:{iNum=74;break;}
case 11:{iNum=75;break;}
case 12:{iNum=78;break;}
case 13:{iNum=79;break;}
case 14:{iNum=82;break;}
case 15:{iNum=83;break;}
case 16:{iNum=91;break;}
case 17:{iNum=92;break;}
case 18:{iNum=93;break;}
case 19:{iNum=94;break;}
case 20:{iNum=97;break;}
case 21:{iNum=107;break;}
case 22:{iNum=112;break;}
case 23:{iNum=117;break;}
case 24:{iNum=124;break;}
case 25:{iNum=127;break;}
case 26:{iNum=128;break;}
case 27:{iNum=130;break;}
case 28:{iNum=134;break;}
case 29:{iNum=137;break;}
case 30:{iNum=144;break;}
case 31:{iNum=145;break;}
case 32:{iNum=152;break;}
case 33:{iNum=154;break;}
case 34:{iNum=157;break;}
case 35:{iNum=161;break;}
case 36:{iNum=165;break;}
case 37:{iNum=175;break;}
case 38:{iNum=178;break;}
case 39:{iNum=179;break;}
case 40:{iNum=188;break;}
case 41:{iNum=191;break;}
case 42:{iNum=192;break;}
case 43:{iNum=195;break;}
case 44:{iNum=202;break;}
case 45:{iNum=203;break;}
case 46:{iNum=205;break;}
case 47:{iNum=208;break;}
case 48:{iNum=222;break;}
case 49:{iNum=242;break;}
default:{iNum=245;break;}
}
sResRef="scribe"+GetStringRight("000"+IntToString(iNum),3);
return sResRef;
}