home *** CD-ROM | disk | FTP | other *** search
/ PC Zone 125 / DPPCZ0203B.7z / DPPCZ0203B.ISO / Demos / Neverwinter / data1.cab / override / nw_o2_coninclude.nss < prev    next >
Text File  |  2002-09-10  |  198KB  |  4,586 lines

  1. //::///////////////////////////////////////////////
  2. //:: NW_O2_CONINCLUDE.nss
  3. //:: Copyright (c) 2001 Bioware Corp.
  4. //:://////////////////////////////////////////////
  5. /*
  6.   This include file handles the random treasure
  7.   distribution for treasure from creatures and containers
  8.  
  9.  [ ] Documented
  10. */
  11. //:://////////////////////////////////////////////
  12. //:: Created By:  Brent, Andrew
  13. //:: Created On:  November - May
  14. //:://////////////////////////////////////////////
  15. // :: MODS
  16. // April 23 2002: Removed animal parts. They were silly.
  17. // May 6 2002: Added Undead to the EXCLUSION treasure list (they drop nothing now)
  18. //  - redistributed treasure (to lessen amoun   t of armor and increase 'class specific treasure'
  19. //  - Rangers with heavy armor prof. will be treated as Fighters else as Barbarians
  20. //  - Gave wizards, druids and monk their own function
  21. // MAY 29 2002: Removed the heal potion from treasure
  22. //              Moved nymph cloak +4 to treasure bracket 6
  23. //              Added Monk Enhancement items to random treasure
  24.  
  25. // * ---------
  26. // * CONSTANTS
  27. // * ---------
  28.  
  29.  
  30. // * tweaking constants
  31.  
  32.     // * SIX LEVEL RANGES
  33.     int RANGE_1_MIN = 0;
  34.     int RANGE_1_MAX = 5;
  35.     int RANGE_2_MIN = 6;
  36.     int RANGE_2_MAX = 8;
  37.     
  38.     int RANGE_3_MIN = 9;
  39.     int RANGE_3_MAX = 10;
  40.     
  41.     int RANGE_4_MIN = 11;
  42.     int RANGE_4_MAX = 13;
  43.     
  44.     int RANGE_5_MIN = 14;
  45.     int RANGE_5_MAX = 16;
  46.     
  47.     int RANGE_6_MIN = 17;
  48.     int RANGE_6_MAX = 100;
  49.  
  50.     // * NUMBER OF ITEMS APPEARING
  51.     int NUMBER_LOW_ONE   = 100; int NUMBER_MED_ONE    = 60; int NUMBER_HIGH_ONE   = 40;  int NUMBER_BOSS_ONE = 100;
  52.     int NUMBER_LOW_TWO   = 0;   int NUMBER_MED_TWO    = 30; int NUMBER_HIGH_TWO   = 40;  int NUMBER_BOSS_TWO = 0;
  53.     int NUMBER_LOW_THREE = 0;   int NUMBER_MED_THREE  = 10; int NUMBER_HIGH_THREE = 20;  int NUMBER_BOSS_THREE = 0;
  54.  
  55.     int NUMBER_BOOK_ONE = 75;
  56.     int NUMBER_BOOK_TWO = 20;
  57.     int NUMBER_BOOK_THREE = 5;
  58.  
  59.     // * AMOUNT OF GOLD BY VALUE
  60.     float LOW_MOD_GOLD = 0.5;   float MEDIUM_MOD_GOLD = 1.0; float HIGH_MOD_GOLD = 3.0;
  61.     // * FREQUENCY OF ITEM TYPE APPEARING BY TREASURE TYPE
  62.     int LOW_PROB_BOOK    = 1;  int MEDIUM_PROB_BOOK =   1;  int HIGH_PROB_BOOK =1;
  63.     int LOW_PROB_ANIMAL  = 0;  int MEDIUM_PROB_ANIMAL = 0;  int HIGH_PROB_ANIMAL = 0;
  64.     int LOW_PROB_JUNK    = 2;  int MEDIUM_PROB_JUNK =    1;  int HIGH_PROB_JUNK = 1;
  65.     int LOW_PROB_GOLD = 43;    int MEDIUM_PROB_GOLD =   38; int HIGH_PROB_GOLD = 15;
  66.     int LOW_PROB_GEM  = 9;     int MEDIUM_PROB_GEM =    15; int HIGH_PROB_GEM = 15;
  67.     int LOW_PROB_JEWEL = 4;    int MEDIUM_PROB_JEWEL =  6; int HIGH_PROB_JEWEL = 15;
  68.     int LOW_PROB_ARCANE = 3;   int MEDIUM_PROB_ARCANE = 3; int HIGH_PROB_ARCANE = 3;
  69.     int LOW_PROB_DIVINE = 3;   int MEDIUM_PROB_DIVINE = 3;  int HIGH_PROB_DIVINE = 3;
  70.     int LOW_PROB_AMMO = 10;    int MEDIUM_PROB_AMMO =   5;  int HIGH_PROB_AMMO  =   3;
  71.     int LOW_PROB_KIT = 5;      int MEDIUM_PROB_KIT =    5;  int HIGH_PROB_KIT   =   5;
  72.     int LOW_PROB_POTION =17;   int MEDIUM_PROB_POTION = 20; int HIGH_PROB_POTION=   9;
  73.     int LOW_PROB_TABLE2 = 3;   int MEDIUM_PROB_TABLE2 = 3; int HIGH_PROB_TABLE2=   30;
  74.  
  75.  
  76. // * readability constants
  77.  
  78. int    TREASURE_LOW = 1;
  79. int    TREASURE_MEDIUM = 2;
  80. int    TREASURE_HIGH = 3;
  81. int    TREASURE_BOSS = 4;
  82. int    TREASURE_BOOK = 5;
  83.  
  84.  
  85. // * JUMP_LEVEL is used in a Specific item function
  86. // * in the case where a generic item is called for within that function
  87. // * it will create a generic item by adding JUMP_LEVEL to the character's
  88. // * hit die for the purposes of the treasure evaluation.
  89. // * May 2002: Lowered JUMP_LEVEL from 3 to 2
  90.  
  91. int JUMP_LEVEL = 2;
  92.  
  93.  
  94. //* Declarations
  95.     void CreateGenericExotic(object oTarget, object oAdventurer, int nModifier = 0);
  96.     void CreateGenericMonkWeapon(object oTarget, object oAdventurer, int nModifier = 0);
  97.     void CreateSpecificMonkWeapon(object oTarget, object oAdventurer, int nModifier = 0);
  98.     void CreateGenericDruidWeapon(object oTarget, object oAdventurer, int nModifier = 0);
  99.     void CreateSpecificDruidWeapon(object oTarget, object oAdventurer, int nModifier = 0);
  100.     void CreateGenericWizardWeapon(object oTarget, object oAdventurer, int nModifier = 0);
  101.     void CreateSpecificWizardWeapon(object oTarget, object oAdventurer, int nModifier = 0);
  102.     int nDetermineClassToUse(object oCharacter);
  103.  
  104.  
  105. // *
  106. // * IMPLEMENTATION
  107. // *
  108.  
  109. // * Comment the speakstring in to debug treasure generation
  110. void dbSpeak(string s)
  111. {
  112. //   SpeakString(s);
  113. }
  114.  
  115. //* made this function to help with debugging
  116. void dbCreateItemOnObject(string sItemTemplate, object oTarget = OBJECT_SELF, int nStackSize = 1)
  117. {
  118.     if (sItemTemplate == "")
  119.     {
  120.         PrintString("blank item passed into dbCreateItemOnObject. Please report as bug to Brent.");
  121.     }
  122.     dbSpeak(sItemTemplate);
  123.  
  124.     //sItemTemplate = GetStringLowerCase
  125.     
  126.     if (nStackSize == 1)
  127.     {
  128.         // * checks to see if this is a throwing item and if it is
  129.         // * it creates more
  130.  
  131.         string sRoot = GetSubString(sItemTemplate, 0, 6);
  132.         dbSpeak("ROOT: " + sRoot);
  133.         if (GetStringLowerCase(sRoot) == "nw_wth")
  134.         {
  135.             nStackSize = Random(30) + 1;
  136.         }
  137.     }
  138.     object oItem = CreateItemOnObject(sItemTemplate, oTarget, nStackSize);
  139.     if (GetIsObjectValid(oItem) == FALSE && sItemTemplate != "NW_IT_GOLD001")
  140.     {
  141.     
  142.         // * check to see if item is there in a stack, if not give warning
  143.         if (GetIsObjectValid(GetItemPossessedBy(oTarget, GetStringUpperCase(sItemTemplate))) == FALSE &&
  144.             GetIsObjectValid(GetItemPossessedBy(oTarget, GetStringLowerCase(sItemTemplate))) == FALSE)
  145.         {
  146.             PrintString("**DESIGN***");
  147.             PrintString("******" + sItemTemplate + " is an invalid item template. Please report as bug to Brent.");
  148.             PrintString("*******");
  149.         }
  150.     }
  151. }
  152.  
  153.  
  154. // *
  155. // * GET FUNCTIONS
  156. // *
  157.  
  158. // * Returns the object that either last opened the container or destroyed it
  159. object GetLastOpener()
  160. {
  161.     if (GetIsObjectValid(GetLastOpenedBy()) == TRUE)
  162.     {
  163.         dbSpeak("LastOpener: GetLastOpenedBy " + GetTag(GetLastOpenedBy()));
  164.         return GetLastOpenedBy();
  165.     }
  166.     else
  167.     if (GetIsObjectValid(GetLastKiller()) == TRUE)
  168.     {
  169.         dbSpeak("LastOpener: GetLastAttacker");
  170.         return GetLastKiller();
  171.     }
  172.     dbSpeak("LastOpener: The Object is Invalid you weenie!");
  173.     return OBJECT_INVALID;
  174. }
  175.  
  176. //::///////////////////////////////////////////////
  177. //:: GetRange
  178. //:: Copyright (c) 2002 Bioware Corp.
  179. //:://////////////////////////////////////////////
  180. /*
  181.     Returns true if nHD matches the correct
  182.     level range for the indicated nCategory.
  183.     (i.e., First to Fourth level characters
  184.     are considered Range1)
  185. */
  186. //:://////////////////////////////////////////////
  187. //:: Created By:  Brent
  188. //:: Created On:
  189. //:://////////////////////////////////////////////
  190. int GetRange(int nCategory, int nHD)
  191. {
  192.     int nMin = 0; int nMax = 0;
  193.     switch (nCategory)
  194.     {
  195.         case 6: nMin = RANGE_6_MIN; nMax = RANGE_6_MAX; break;
  196.         case 5: nMin = RANGE_5_MIN; nMax = RANGE_5_MAX; break;
  197.         case 4: nMin = RANGE_4_MIN; nMax = RANGE_4_MAX; break;
  198.         case 3: nMin = RANGE_3_MIN; nMax = RANGE_3_MAX; break;
  199.         case 2: nMin = RANGE_2_MIN; nMax = RANGE_2_MAX; break;
  200.         case 1: nMin = RANGE_1_MIN; nMax = RANGE_1_MAX; break;
  201.     }
  202.     
  203.    dbSpeak("nMin = " + IntToString(nMin));
  204.    dbSpeak("nMax = " + IntToString(nMax));
  205.    dbSpeak("GetRange.nHD = " + IntToString(nHD));
  206.    if (nHD >= nMin && nHD <= nMax)
  207.    {
  208.     return TRUE;
  209.    }
  210.  
  211.   return FALSE;
  212.  
  213. }
  214.  
  215. //::///////////////////////////////////////////////
  216. //:: GetNumberOfItems
  217. //:: Copyright (c) 2002 Bioware Corp.
  218. //:://////////////////////////////////////////////
  219. /*
  220.     Returns the number of items to create.
  221. */
  222. //:://////////////////////////////////////////////
  223. //:: Created By:  Brent
  224. //:: Created On:
  225. //:://////////////////////////////////////////////
  226. int GetNumberOfItems(int nTreasureType)
  227. {
  228.     int nItems = 0;
  229.     int nRandom = 0;
  230.  
  231.     int nProbThreeItems = 0;
  232.     int nProbTwoItems = 0;
  233.     int nProbOneItems = 0;
  234.  
  235.     if (nTreasureType == TREASURE_LOW)
  236.     {
  237.      nProbThreeItems = NUMBER_LOW_THREE;
  238.      nProbTwoItems = NUMBER_LOW_TWO;
  239.      nProbOneItems = NUMBER_LOW_ONE;
  240.     }
  241.     else
  242.     if (nTreasureType == TREASURE_MEDIUM)
  243.     {
  244.      nProbThreeItems = NUMBER_MED_THREE;
  245.      nProbTwoItems = NUMBER_MED_TWO;
  246.      nProbOneItems = NUMBER_MED_ONE;
  247.     }
  248.     else
  249.     if (nTreasureType == TREASURE_HIGH)
  250.     {
  251.      nProbThreeItems = NUMBER_HIGH_THREE;
  252.      nProbTwoItems = NUMBER_HIGH_TWO;
  253.      nProbOneItems = NUMBER_HIGH_ONE;
  254.     }
  255.     else
  256.     if (nTreasureType == TREASURE_BOSS)
  257.     {
  258.      nProbThreeItems = NUMBER_BOSS_THREE;
  259.      nProbTwoItems = NUMBER_BOSS_TWO;
  260.      nProbOneItems = NUMBER_BOSS_ONE;
  261.     }
  262.     else
  263.     if (nTreasureType == TREASURE_BOOK)
  264.     {
  265.      nProbThreeItems = NUMBER_BOOK_THREE;
  266.      nProbTwoItems = NUMBER_BOOK_TWO;
  267.      nProbOneItems = NUMBER_BOOK_ONE;
  268.     }
  269.  
  270.  
  271.     nRandom = d100();
  272.     if (nRandom <= nProbThreeItems)
  273.     {
  274.         nItems = 3;
  275.     }
  276.     else
  277.     if (nRandom <= nProbTwoItems + nProbThreeItems)
  278.     {
  279.         nItems = 2;
  280.     }
  281.     else
  282.     {
  283.         nItems = 1;
  284.     }
  285.  
  286.     // * May 13 2002: Cap number of items, in case of logic error
  287.     if (nItems > 3)
  288.     {
  289.         nItems = 3;
  290.     }
  291.  
  292.     return nItems;
  293. }
  294.  
  295.  
  296. // *
  297. // * TREASURE GENERATION FUNCTIONS
  298. // *
  299.     // *
  300.     // * Non-Scaling Treasure
  301.     // *
  302.     void CreateBook(object oTarget)
  303.     {
  304.         int nBook1 = Random(31) + 1;
  305.         string sRes = "NW_IT_BOOK01";
  306.  
  307.         if (nBook1 < 10)
  308.         {
  309.             sRes = "NW_IT_BOOK00" + IntToString(nBook1);
  310.         }
  311.         else
  312.         {
  313.             sRes = "NW_IT_BOOK0" + IntToString(nBook1);
  314.         }
  315.         dbSpeak("Create book");
  316.         dbCreateItemOnObject(sRes, oTarget);
  317.     }
  318.  
  319.     void CreateAnimalPart(object oTarget)
  320.     {
  321.  
  322.         string sRes = "";
  323.         int nResult = Random(3) + 1;
  324.         switch (nResult)
  325.         {
  326.             case 1: sRes = "NW_IT_MSMLMISC20"; break;
  327.             case 2: sRes = "NW_IT_MMIDMISC05"; break;
  328.             case 3: sRes = "NW_IT_MMIDMISC06"; break;
  329.         }
  330.         dbSpeak("animal");
  331.         dbCreateItemOnObject(sRes, oTarget);
  332.     }
  333.  
  334.     void CreateJunk(object oTarget)
  335.     {
  336.         string sRes = "NW_IT_TORCH001";
  337.         int NUM_ITEMS = 6;
  338.         int nResult = Random(NUM_ITEMS) + 1;
  339.         int nKit = 0;
  340.         switch (nResult)
  341.         {
  342.             case 1: sRes = "NW_IT_MPOTION021"; break; //ale
  343.             case 2: sRes = "NW_IT_MPOTION021"; break;   // ale
  344.             case 3: sRes = "NW_IT_MPOTION023"; break; // wine
  345.             case 4: sRes = "NW_IT_MPOTION021"; break; // ale
  346.             case 5: sRes = "NW_IT_MPOTION022"; break; // spirits
  347.             case 6: sRes = "NW_IT_TORCH001"; break; //torch
  348.         }
  349.         dbSpeak("CreateJunk");
  350.         dbCreateItemOnObject(sRes, oTarget);
  351.     }
  352.     // *
  353.     // * Scaling Treasure
  354.     // *
  355.     void CreateGold(object oTarget, object oAdventurer, int nTreasureType, int nModifier = 0)
  356.     {
  357.         int nHD = GetHitDice(oAdventurer) + nModifier;
  358.         int nAmount = 0;
  359.  
  360.         if (GetRange(1, nHD))
  361.         {
  362.             nAmount = d10();
  363.         }
  364.         else if (GetRange(2, nHD))
  365.         {
  366.             nAmount = d20();
  367.         }
  368.         else if (GetRange(3, nHD))
  369.         {
  370.             nAmount = d20(2);
  371.         }
  372.         else if (GetRange(4, nHD))
  373.         {
  374.             nAmount = d20(5);
  375.         }
  376.         else if (GetRange(5, nHD))
  377.         {
  378.             nAmount = d20(8);
  379.         }
  380.         else if (GetRange(6, nHD))
  381.         {
  382.             nAmount = d20(10);
  383.         }
  384.         float nMod = 0.0;
  385.         if (nTreasureType == TREASURE_LOW) nMod = LOW_MOD_GOLD;
  386.         else if (nTreasureType == TREASURE_MEDIUM) nMod = MEDIUM_MOD_GOLD;
  387.         else if (nTreasureType == TREASURE_HIGH) nMod = HIGH_MOD_GOLD;
  388.  
  389.         // * always at least 1gp is created
  390.         nAmount = FloatToInt(nAmount * nMod);
  391.         if (nAmount <= 0)
  392.         {
  393.             nAmount = 1;
  394.         }
  395.         dbSpeak("gold");
  396.         dbCreateItemOnObject("NW_IT_GOLD001", oTarget, nAmount);
  397.     }
  398.     void CreateGem(object oTarget, object oAdventurer, int nTreasureType, int nModifier = 0)
  399.     {
  400.         int nHD = GetHitDice(oAdventurer) + nModifier;
  401.         string sGem = "nw_it_gem001";
  402.         if (GetRange(1, nHD))
  403.         {
  404.             int nRandom = Random(9) + 1;
  405.             switch (nRandom)
  406.             {
  407.                 case 1: sGem = "nw_it_gem001";  break;
  408.                 case 2: sGem = "nw_it_gem007";  break;
  409.                 case 3: sGem = "nw_it_gem002";  break;
  410.                 case 4: case 5: sGem = "nw_it_gem004"; break;
  411.                 case 6: case 7: sGem = "nw_it_gem014"; break;
  412.                 case 8: sGem = "nw_it_gem003";         break;
  413.                 case 9: sGem = "nw_it_gem015";         break;
  414.             }
  415.         }
  416.         else if (GetRange(2, nHD))               // 30 GP Avg; 150 gp Max
  417.         {
  418.             int nRandom = d12();
  419.             switch (nRandom)
  420.             {
  421.                 case 1: sGem = "nw_it_gem001";         break;
  422.                 case 2: sGem = "nw_it_gem007";         break;
  423.                 case 3: sGem = "nw_it_gem002";         break;
  424.                 case 4: sGem = "nw_it_gem004";         break;
  425.                 case 5: case 6: sGem = "nw_it_gem014";  break;
  426.                 case 7: case 8: sGem = "nw_it_gem003";  break;
  427.                 case 9: case 10: sGem = "nw_it_gem015"; break;
  428.                 case 11: sGem = "nw_it_gem011";         break;
  429.                 case 12: sGem = "nw_it_gem013";         break;
  430.             }
  431.  
  432.         }
  433.         else if (GetRange(3, nHD))  // 75GP Avg; 500 gp max
  434.         {
  435.             int nRandom = d2();
  436.             switch (nRandom)
  437.             {
  438.                 case 1: sGem = "nw_it_gem013";         break;
  439.                 case 2: sGem = "nw_it_gem010";         break;
  440.             }
  441.  
  442.         }
  443.         else if (GetRange(4, nHD))  // 150 gp avg; 1000 gp max
  444.         {
  445.             int nRandom = d3();
  446.             switch (nRandom)
  447.             {
  448.                 case 1: sGem = "nw_it_gem013";  break;
  449.                 case 2: sGem = "nw_it_gem010";    break;
  450.                 case 3: sGem = "nw_it_gem008";           break;
  451.             }
  452.         }
  453.         else if (GetRange(5, nHD))  // 300 gp avg; any
  454.         {
  455.             int nRandom = d6();
  456.             switch (nRandom)
  457.             {
  458.                 case 1: sGem = "nw_it_gem013";  break;
  459.                 case 2: sGem = "nw_it_gem010";    break;
  460.                 case 3: case 4: sGem = "nw_it_gem008";           break;
  461.                 case 5: sGem = "nw_it_gem009";           break;
  462.                 case 6: sGem = "nw_it_gem009";           break;
  463.             }
  464.         }
  465.         else if (GetRange(6, nHD))// * Anything higher than level 15    500 gp avg; any
  466.         {
  467.             int nRandom = Random(8) + 1;
  468.             switch (nRandom)
  469.             {
  470.                 case 1: sGem = "nw_it_gem013";  break;
  471.                 case 2: sGem = "nw_it_gem010";    break;
  472.                 case 3: case 4: sGem = "nw_it_gem008";           break;
  473.                 case 5: sGem = "nw_it_gem009";           break;
  474.                 case 6: sGem = "nw_it_gem009";           break;
  475.                 case 7: sGem = "nw_it_gem006";           break;
  476.                 case 8: sGem = "nw_it_gem012";           break;
  477.             }
  478.         }
  479.       dbSpeak("Create Gem");
  480.       dbCreateItemOnObject(sGem, oTarget, 1);
  481.     }
  482.     void CreateJewel(object oTarget, object oAdventurer, int nTreasureType, int nModifier = 0)
  483.     {
  484.         int nHD = GetHitDice(oAdventurer) + nModifier;
  485.         string sJewel = "";
  486.  
  487.         if (GetRange(1, nHD))        // 15 gp avg; 75 gp max
  488.         {
  489.           int nRandom = d2();
  490.           switch (nRandom)
  491.           {
  492.             case 1: sJewel = "nw_it_mring021";   break;
  493.             case 2: sJewel = "nw_it_mneck020";   break;
  494.           }
  495.         }
  496.         else if (GetRange(2, nHD))   // 30 GP Avg; 150 gp Max
  497.         {
  498.           int nRandom = d6();
  499.           switch (nRandom)
  500.           {
  501.             case 1: sJewel = "nw_it_mring021";            break;
  502.             case 2: case 3: sJewel = "nw_it_mneck020";    break;
  503.             case 4: sJewel = "nw_it_mring022";            break;
  504.             case 5: case 6: sJewel = "nw_it_mneck023";            break;          }
  505.         }
  506.         else if (GetRange(3, nHD))  // 75GP Avg; 500 gp max
  507.         {
  508.           int nRandom = d6();
  509.           switch (nRandom)
  510.           {
  511.             case 1: sJewel = "nw_it_mring021";           break;
  512.             case 2: case 3: sJewel = "nw_it_mneck020";   break;
  513.             case 4: case 5: sJewel = "nw_it_mring022";   break;
  514.             case 6: sJewel = "nw_it_mneck021";           break;
  515.           }
  516.         }
  517.         else if (GetRange(4, nHD))  // 150 gp avg; 1000 gp max
  518.         {
  519.           int nRandom = d6();
  520.           switch (nRandom)
  521.           {
  522.             case 1: sJewel = "nw_it_mring021";            break;
  523.             case 2: sJewel = "nw_it_mring022";            break;
  524.             case 3: case 4: case 5: sJewel = "nw_it_mneck021";    break;
  525.             case 6: sJewel = "nw_it_mring023";            break;
  526.           }
  527.         }
  528.         else if (GetRange(5, nHD))  // 300 gp avg; any
  529.         {
  530.           int nRandom = d8();
  531.           switch (nRandom)
  532.           {
  533.             case 1: sJewel = "nw_it_mring022";           break;
  534.             case 2: case 3: sJewel = "nw_it_mneck021";   break;
  535.             case 4: case 5: case 6: sJewel = "nw_it_mring023"; break;
  536.             case 7: case 8: sJewel = "nw_it_mneck022";               break;
  537.           }
  538.         }
  539.         else if (GetRange(6, nHD))
  540.         {
  541.           int nRandom = d6();
  542.           switch (nRandom)
  543.           {
  544.             case 1: sJewel = "nw_it_mring022";              break;
  545.             case 2: sJewel = "nw_it_mneck021";              break;
  546.             case 3: case 4: sJewel = "nw_it_mring023";      break;
  547.             case 5: case 6: sJewel = "nw_it_mneck022";      break;
  548.           }
  549.         }
  550.       dbSpeak("Create Jewel");
  551.  
  552.       dbCreateItemOnObject(sJewel, oTarget, 1);
  553.  
  554.     }
  555.     // * returns the valid upper limit for any arcane spell scroll
  556.     int TrimLevel(int nScroll, int nLevel)
  557.     {   int nMax = 5;
  558.         switch (nLevel)
  559.         {
  560.             case 0: nMax = 4; break;
  561.             case 1: nMax = 13; break;
  562.             case 2: nMax = 21; break;
  563.             case 3: nMax = 15; break;
  564.             case 4: nMax = 17; break;
  565.             case 5: nMax = 13; break;
  566.             case 6: nMax = 14; break;
  567.             case 7: nMax = 8; break;
  568.             case 8: nMax = 9; break;
  569.             case 9: nMax = 12; break;
  570.         }
  571.         if (nScroll > nMax) nScroll = nMax;
  572.         return nScroll;
  573.  
  574.     }
  575.     // * nModifier is to 'raise' the level of the oAdventurer
  576.     void CreateArcaneScroll(object oTarget, object oAdventurer, int nModifier = 0)
  577.     {
  578.         int nMaxSpells = 21;
  579.         int nHD = GetHitDice(oAdventurer) + nModifier;
  580.         int nScroll = 1;
  581.         int nLevel = 1;
  582.  
  583.         if (GetRange(1, nHD))           // l 1-2
  584.         {
  585.           nLevel = d2();
  586.           nScroll =  Random(nMaxSpells) + 1;
  587.         }
  588.         else if (GetRange(2, nHD))      // l 1-4
  589.         {
  590.           nLevel = d4();
  591.           nScroll =  Random(nMaxSpells) + 1;
  592.         }
  593.         else if (GetRange(3, nHD))    // l 2-6
  594.         {
  595.           nLevel = d6();
  596.           if (nLevel < 2) nLevel = 2;
  597.  
  598.           nScroll =  Random(nMaxSpells) + 1;
  599.         }
  600.         else if (GetRange(4, nHD))   // l 3-8
  601.         {
  602.           nLevel = d8();
  603.           if (nLevel < 3) nLevel = 3;
  604.  
  605.           nScroll =  Random(nMaxSpells) + 1;
  606.         }
  607.         else if (GetRange(5, nHD))   // l 4-9
  608.         {
  609.           nLevel = d8() + 1;
  610.           if (nLevel < 4) nLevel = 4;
  611.  
  612.           nScroll =  Random(nMaxSpells) + 1;
  613.         }
  614.         else if (GetRange(6, nHD))   // 5 -9
  615.         {
  616.           nLevel = d8() + 1;
  617.           if (nLevel < 5) nLevel = 5;
  618.  
  619.           nScroll =  Random(nMaxSpells) + 1;
  620.         }
  621.  
  622.         // * Trims the level of the scroll to match the max # of scrolls in each level range
  623.         nScroll = TrimLevel(nScroll, nLevel);
  624.  
  625.         string sRes = "nw_it_sparscr216";
  626.  
  627.         if (nScroll < 10)
  628.         {
  629.             sRes = "NW_IT_SPARSCR" + IntToString(nLevel) + "0" + IntToString(nScroll);
  630.         }
  631.         else
  632.         {
  633.             sRes = "NW_IT_SPARSCR" + IntToString(nLevel) + IntToString(nScroll);
  634.         }
  635.           dbCreateItemOnObject(sRes, oTarget, 1);
  636.         }
  637.  
  638.     void CreateDivineScroll(object oTarget, object oAdventurer, int nModifier=0)
  639.     {
  640.         int nHD = GetHitDice(oAdventurer) + nModifier;
  641.         string sScroll = "";
  642.         if (GetRange(1, nHD))
  643.         {
  644.             int nRandom = d4();
  645.             switch (nRandom)
  646.             {
  647.                 case 1: sScroll = "nw_it_spdvscr201"; break;
  648.                 case 2: sScroll = "nw_it_spdvscr202"; break;
  649.                 case 3: sScroll = "nw_it_spdvscr203"; break;
  650.                 case 4: sScroll = "nw_it_spdvscr204"; break;
  651.             }
  652.         }
  653.         else if (GetRange(2, nHD))
  654.         {
  655.             int nRandom = d8();
  656.             switch (nRandom)
  657.             {
  658.                 case 1: sScroll = "nw_it_spdvscr201"; break;
  659.                 case 2: sScroll = "nw_it_spdvscr202";break;
  660.                 case 3: sScroll = "nw_it_spdvscr203"; break;
  661.                 case 4: sScroll = "nw_it_spdvscr204"; break;
  662.                 case 5: sScroll = "nw_it_spdvscr301"; break;
  663.                 case 6: sScroll = "nw_it_spdvscr302"; break;
  664.                 case 7: sScroll = "nw_it_spdvscr401"; break;
  665.                 case 8: sScroll = "nw_it_spdvscr402"; break;
  666.             }
  667.  
  668.         }
  669.         else if (GetRange(3, nHD))
  670.         {
  671.             int nRandom = Random(9) + 1;
  672.             switch (nRandom)
  673.             {
  674.                 case 1: sScroll = "nw_it_spdvscr201"; break;
  675.                 case 2: sScroll = "nw_it_spdvscr202"; break;
  676.                 case 3: sScroll = "nw_it_spdvscr203"; break;
  677.                 case 4: sScroll = "nw_it_spdvscr204"; break;
  678.                 case 5: sScroll = "nw_it_spdvscr301"; break;
  679.                 case 6: sScroll = "nw_it_spdvscr302"; break;
  680.                 case 7: sScroll = "nw_it_spdvscr401"; break;
  681.                 case 8: sScroll = "nw_it_spdvscr402"; break;
  682.                 case 9: sScroll = "nw_it_spdvscr501"; break;
  683.             }
  684.  
  685.         }
  686.         else
  687.         {
  688.             int nRandom = Random(7) + 1;
  689.             switch (nRandom)
  690.             {
  691.                 case 1: sScroll = "nw_it_spdvscr301"; break;
  692.                 case 2: sScroll = "nw_it_spdvscr302";  break;
  693.                 case 3: sScroll = "nw_it_spdvscr401"; break;
  694.                 case 4: sScroll = "nw_it_spdvscr402"; break;
  695.                 case 5: sScroll = "nw_it_spdvscr501"; break;
  696.                 case 6: sScroll = "nw_it_spdvscr701"; break;
  697.                 case 7: sScroll = "nw_it_spdvscr702";  break;
  698.             }
  699.         }
  700.         dbSpeak("Divine Scroll");
  701.  
  702.         dbCreateItemOnObject(sScroll, oTarget, 1);
  703.  
  704.     }
  705.     void CreateAmmo(object oTarget, object oAdventurer, int nModifier=0)
  706.     {
  707.         int nHD = GetHitDice(oAdventurer) + nModifier;
  708.         string sAmmo = "";
  709.  
  710.         if (GetRange(1, nHD))           // * 200 gp max
  711.         {
  712.             int nRandom = d3();
  713.             switch (nRandom)
  714.             {
  715.                 case 1: sAmmo = "nw_wamar001";  break;
  716.                 case 2: sAmmo = "nw_wambo001";  break;
  717.                 case 3: sAmmo = "nw_wambu001";  break;
  718.             }
  719.           }
  720.         else if (GetRange(2, nHD))       // * 800 gp max
  721.         {
  722.             int nRandom = d6();
  723.             switch (nRandom)
  724.             {
  725.                 case 1: sAmmo = "nw_wamar001";  break;
  726.                 case 2: sAmmo = "nw_wambo001";  break;
  727.                 case 3: sAmmo = "nw_wambu001";  break;
  728.                 case 4: sAmmo = "nw_wammar001"; break;
  729.                 case 5: sAmmo = "nw_wammbo001"; break;
  730.                 case 6: sAmmo = "nw_wammbo002"; break;
  731.             }
  732.         }
  733.         else if (GetRange(3, nHD))    // *  - 2500 gp
  734.         {
  735.             int nRandom = d20();
  736.             switch (nRandom)
  737.             {
  738.                 case 1: sAmmo = "nw_wamar001";   break;
  739.                 case 2: sAmmo = "nw_wambo001";   break;
  740.                 case 3: sAmmo = "nw_wambu001";   break;
  741.                 case 4: sAmmo = "nw_wammar001";  break;
  742.                 case 5: sAmmo = "nw_wammbo001";  break;
  743.                 case 6: sAmmo = "nw_wammbo002";   break;
  744.                 case 7: sAmmo = "nw_wammbo003";  break;
  745.                 case 8: sAmmo = "nw_wammbu002";  break;
  746.                 case 9: sAmmo = "nw_wammar002";  break;
  747.                 case 10: sAmmo = "nw_wammar001"; break;
  748.                 case 11: sAmmo = "nw_wammar003"; break;
  749.                 case 12: sAmmo = "nw_wammar004"; break;
  750.                 case 13: sAmmo = "nw_wammar005"; break;
  751.                 case 14: sAmmo = "nw_wammar006"; break;
  752.                 case 15: sAmmo = "nw_wammbo004";  break;
  753.                 case 16: sAmmo = "nw_wammbo005"; break;
  754.                 case 17: sAmmo = "nw_wammbu004"; break;
  755.                 case 18: sAmmo = "nw_wammbu005"; break;
  756.                 case 19: sAmmo = "nw_wammbu006"; break;
  757.                 case 20: sAmmo = "nw_wammbu007"; break;
  758.             }
  759.         }
  760.         else
  761.         {
  762.             int nRandom = d20();
  763.             switch (nRandom)
  764.             {
  765.                 case 1: sAmmo = "nw_wamar001";      break;
  766.                 case 2: sAmmo = "nw_wammbu001";     break;
  767.                 case 3: sAmmo = "nw_wammbu003";     break;
  768.                 case 4: sAmmo = "nw_wammar001";     break;
  769.                 case 5: sAmmo = "nw_wammbo001";      break;
  770.                 case 6: sAmmo = "nw_wammbo002";     break;
  771.                 case 7: sAmmo = "nw_wammbo003";     break;
  772.                 case 8: sAmmo = "nw_wammbu002";     break;
  773.                 case 9: sAmmo = "nw_wammar002";     break;
  774.                 case 10: sAmmo = "nw_wammar001";    break;
  775.                 case 11: sAmmo = "nw_wammar003";    break;
  776.                 case 12: sAmmo = "nw_wammar004";     break;
  777.                 case 13: sAmmo = "nw_wammar005";    break;
  778.                 case 14: sAmmo = "nw_wammar006";    break;
  779.                 case 15: sAmmo = "nw_wammbo004";    break;
  780.                 case 16: sAmmo = "nw_wammbo005";    break;
  781.                 case 17: sAmmo = "nw_wammbu004";    break;
  782.                 case 18: sAmmo = "nw_wammbu005";    break;
  783.                 case 19: sAmmo = "nw_wammbu006";    break;
  784.                 case 20: sAmmo = "nw_wammbu007";    break;
  785.             }
  786.         }
  787.         dbSpeak("ammo");
  788.         dbCreateItemOnObject(sAmmo, oTarget, Random(30) + 1); // create up to 30 of the specified ammo type
  789.     }
  790.     
  791.     void CreateTrapKit(object oTarget, object oAdventurer, int nModifier = 0)
  792.     {
  793.       int nHD = GetHitDice(oAdventurer) + nModifier;
  794.       string sKit = "";
  795.         if (GetRange(1, nHD))      // 200
  796.         {
  797.             int nRandom = d3();
  798.             switch (nRandom)
  799.             {
  800.                 case 1: sKit = "nw_it_trap001";    break;
  801.                 case 2: sKit = "nw_it_trap029";    break;
  802.                 case 3: sKit = "nw_it_trap033";    break;
  803.             }
  804.         }
  805.         else if (GetRange(2, nHD))  // 800
  806.         {
  807.             int nRandom = d12();
  808.             switch (nRandom)
  809.             {
  810.                 case 1: sKit = "nw_it_trap001";    break;
  811.                 case 2: sKit = "nw_it_trap029";    break;
  812.                 case 3: sKit = "nw_it_trap033";    break;
  813.                 case 4: sKit = "nw_it_trap002";    break;
  814.                 case 5: sKit = "nw_it_trap030";    break;
  815.                 case 6: sKit = "nw_it_trap037";    break;
  816.                 case 7: sKit = "nw_it_trap034";   break;
  817.                 case 8: sKit = "nw_it_trap005";   break;
  818.                 case 9: sKit = "nw_it_trap038";   break;
  819.                 case 10: sKit = "nw_it_trap041";   break;
  820.                 case 11: sKit = "nw_it_trap003";    break;
  821.                 case 12: sKit = "nw_it_trap031";   break;
  822.             }
  823.  
  824.         }
  825.         else if (GetRange(3, nHD))   // 200 - 2500
  826.         {
  827.             int nRandom = Random(17) + 1;
  828.             switch (nRandom)
  829.             {
  830.                 case 1: sKit = "nw_it_trap002";  break;
  831.                 case 2: sKit = "nw_it_trap030";  break;
  832.                 case 3: sKit = "nw_it_trap037";  break;
  833.                 case 4: sKit = "nw_it_trap034";   break;
  834.                 case 5: sKit = "nw_it_trap005";  break;
  835.                 case 6: sKit = "nw_it_trap038";   break;
  836.                 case 7: sKit = "nw_it_trap041";   break;
  837.                 case 8: sKit = "nw_it_trap003";   break;
  838.                 case 9: sKit = "nw_it_trap031";   break;
  839.                 case 10: sKit = "nw_it_trap035";   break;
  840.                 case 11: sKit = "nw_it_trap006";   break;
  841.                 case 12: sKit = "nw_it_trap042";   break;
  842.                 case 13: sKit = "nw_it_trap004";   break;
  843.                 case 14: sKit = "nw_it_trap032";   break;
  844.                 case 15: sKit = "nw_it_trap039";    break;
  845.                 case 16: sKit = "nw_it_trap009";   break;
  846.                 case 17: sKit = "nw_it_trap036";   break;
  847.             }
  848.  
  849.        }
  850.         else if (GetRange(4, nHD))  // 800 - 10000
  851.         {
  852.             int nRandom = Random(19) + 1;
  853.             switch (nRandom)
  854.             {
  855.                 case 1: sKit = "nw_it_trap035";  break;
  856.                 case 2: sKit = "nw_it_trap006";  break;
  857.                 case 3: sKit = "nw_it_trap042";  break;
  858.                 case 4: sKit = "nw_it_trap004";   break;
  859.                 case 5: sKit = "nw_it_trap032";   break;
  860.                 case 6: sKit = "nw_it_trap039";   break;
  861.                 case 7: sKit = "nw_it_trap009";   break;
  862.                 case 8: sKit = "nw_it_trap036";   break;
  863.                 case 9: sKit = "nw_it_trap013";   break;
  864.                 case 10: sKit = "nw_it_trap040";  break;
  865.                 case 11: sKit = "nw_it_trap007";  break;
  866.                 case 12: sKit = "nw_it_trap043";  break;
  867.                 case 13: sKit = "nw_it_trap010";  break;
  868.                 case 14: sKit = "nw_it_trap017";  break;
  869.                 case 15: sKit = "nw_it_trap021"; break;
  870.                 case 16: sKit = "nw_it_trap014"; break;
  871.                 case 17: sKit = "nw_it_trap025"; break;
  872.                 case 18: sKit = "nw_it_trap008";  break;
  873.                 case 19: sKit = "nw_it_trap044";  break;
  874.             }
  875.  
  876.         }
  877.         else if (GetRange(5, nHD))  // 2000 -16500
  878.         {
  879.             int nRandom = Random(18) + 1;
  880.             switch (nRandom)
  881.             {
  882.                 case 1: sKit = "nw_it_trap039";   break;
  883.                 case 2: sKit = "nw_it_trap009";   break;
  884.                 case 3: sKit = "nw_it_trap036";   break;
  885.                 case 4: sKit = "nw_it_trap013";   break;
  886.                 case 5: sKit = "nw_it_trap040";   break;
  887.                 case 6: sKit = "nw_it_trap007";   break;
  888.                 case 7: sKit = "nw_it_trap043";   break;
  889.                 case 8: sKit = "nw_it_trap010";  break;
  890.                 case 9: sKit = "nw_it_trap017";  break;
  891.                 case 10: sKit = "nw_it_trap021";  break;
  892.                 case 11: sKit = "nw_it_trap014";  break;
  893.                 case 12: sKit = "nw_it_trap025";  break;
  894.                 case 13: sKit = "nw_it_trap008";  break;
  895.                 case 14: sKit = "nw_it_trap044";  break;
  896.                 case 15: sKit = "nw_it_trap018";  break;
  897.                 case 16: sKit = "nw_it_trap011";  break;
  898.                 case 17: sKit = "nw_it_trap022";  break;
  899.                 case 18: sKit = "nw_it_trap026";  break;
  900.             }
  901.  
  902.         }
  903.         else if (GetRange(6, nHD))   // 2000 - ?
  904.         {
  905.             int nRandom = Random(27) + 1;
  906.             switch (nRandom)
  907.             {
  908.                 case 1: sKit = "nw_it_trap039";  break;
  909.                 case 2: sKit = "nw_it_trap009";  break;
  910.                 case 3: sKit = "nw_it_trap036";  break;
  911.                 case 4: sKit = "nw_it_trap013";  break;
  912.                 case 5: sKit = "nw_it_trap040";  break;
  913.                 case 6: sKit = "nw_it_trap007";  break;
  914.                 case 7: sKit = "nw_it_trap043";  break;
  915.                 case 8: sKit = "nw_it_trap010"; break;
  916.                 case 9: sKit = "nw_it_trap017"; break;
  917.                 case 10: sKit = "nw_it_trap021"; break;
  918.                 case 11: sKit = "nw_it_trap014"; break;
  919.                 case 12: sKit = "nw_it_trap025"; break;
  920.                 case 13: sKit = "nw_it_trap008"; break;
  921.                 case 14: sKit = "nw_it_trap044"; break;
  922.                 case 15: sKit = "nw_it_trap018"; break;
  923.                 case 16: sKit = "nw_it_trap011"; break;
  924.                 case 17: sKit = "nw_it_trap022"; break;
  925.                 case 18: sKit = "nw_it_trap026"; break;
  926.                 case 19: sKit = "nw_it_trap015"; break;
  927.                 case 20: sKit = "nw_it_trap012"; break;
  928.                 case 21: sKit = "nw_it_trap019"; break;
  929.                 case 22: sKit = "nw_it_trap023"; break;
  930.                 case 23: sKit = "nw_it_trap016"; break;
  931.                 case 24: sKit = "nw_it_trap027"; break;
  932.                 case 25: sKit = "nw_it_trap020"; break;
  933.                 case 26: sKit = "nw_it_trap024"; break;
  934.                 case 27: sKit = "nw_it_trap028"; break;
  935.              }
  936.  
  937.         }
  938.         dbSpeak("Create Trapkit");
  939.         dbCreateItemOnObject(sKit, oTarget, 1);
  940.  
  941.     }
  942.     void CreateHealingKit(object oTarget, object oAdventurer, int nModifier = 0)
  943.     {
  944.         int nHD = GetHitDice(oAdventurer) + nModifier;
  945.         string sKit = "";
  946.         if (GetRange(1, nHD))      // 200
  947.         {
  948.             int nRandom = Random(1) + 1;
  949.             switch (nRandom)
  950.             {
  951.                 case 1: sKit = "nw_it_medkit001";  break;
  952.             }
  953.         }
  954.         else if (GetRange(2, nHD))  // 800
  955.         {
  956.             int nRandom = Random(2) + 1;
  957.             switch (nRandom)
  958.             {
  959.                 case 1: sKit = "nw_it_medkit001";  break;
  960.                 case 2: sKit = "nw_it_medkit002";  break;
  961.             }
  962.  
  963.         }
  964.         else if (GetRange(3, nHD))   // 200 - 2500
  965.         {
  966.             int nRandom = Random(2) + 1;
  967.             switch (nRandom)
  968.             {
  969.                 case 1: sKit = "nw_it_medkit002"; break;
  970.                 case 2: sKit = "nw_it_medkit003";  break;
  971.             }
  972.  
  973.        }
  974.         else if (GetRange(4, nHD))  // 800 - 10000
  975.         {
  976.             int nRandom = Random(2) + 1;
  977.             switch (nRandom)
  978.             {
  979.                 case 1: sKit = "nw_it_medkit003";break;
  980.                 case 2: sKit = "nw_it_medkit004"; break;
  981.             }
  982.  
  983.         }
  984.         else if (GetRange(5, nHD))  // 2000 -16500
  985.         {
  986.             int nRandom = Random(2) + 1;
  987.             switch (nRandom)
  988.             {
  989.                 case 1: sKit = "nw_it_medkit003"; break;
  990.                 case 2: sKit = "nw_it_medkit004";break;
  991.             }
  992.  
  993.         }
  994.         else if (GetRange(6, nHD))   // 2000 - ?
  995.         {
  996.             int nRandom = Random(2) + 1;
  997.             switch (nRandom)
  998.             {
  999.                 case 1: sKit = "nw_it_medkit003"; break;
  1000.                 case 2: sKit = "nw_it_medkit004";break;
  1001.              }
  1002.  
  1003.         }
  1004.         dbSpeak("Create Healing Kit");
  1005.  
  1006.         dbCreateItemOnObject(sKit, oTarget, 1);
  1007.  
  1008.     }
  1009.     void CreateLockPick(object oTarget, object oAdventurer, int nModifier = 0)
  1010.     {
  1011.         int nHD = GetHitDice(oAdventurer) + nModifier;
  1012.         string sKit = "";
  1013.         if (GetRange(1, nHD))      // 200
  1014.         {
  1015.             int nRandom = d8();
  1016.             switch (nRandom)
  1017.             {
  1018.                 case 1: sKit = "nw_it_picks001";   break;
  1019.                 case 2: sKit = "nw_it_picks002";   break;
  1020.                 case 3: sKit = "nw_it_picks001";   break;
  1021.                 case 4: sKit = "nw_it_picks001";   break;
  1022.                 case 5: sKit = "nw_it_picks001";   break;
  1023.                 case 6: sKit = "nw_it_picks001";   break;
  1024.                 case 7: sKit = "nw_it_picks001";   break;
  1025.                 case 8: sKit = "nw_it_picks001";   break;
  1026.             }
  1027.         }
  1028.         else if (GetRange(2, nHD))  // 800
  1029.         {
  1030.             int nRandom = d6();
  1031.             switch (nRandom)
  1032.             {
  1033.                 case 1: sKit = "nw_it_picks001";   break;
  1034.                 case 2: sKit = "nw_it_picks002";    break;
  1035.                 case 3: sKit = "nw_it_picks003";   break;
  1036.                 case 4: sKit = "nw_it_picks002";    break;
  1037.                 case 5: sKit = "nw_it_picks002";    break;
  1038.                 case 6: sKit = "nw_it_picks002";    break;
  1039.             }
  1040.  
  1041.         }
  1042.         else if (GetRange(3, nHD))   // 200 - 2500
  1043.         {
  1044.             int nRandom = Random(2) + 1;
  1045.             switch (nRandom)
  1046.             {
  1047.                 case 1: sKit = "nw_it_picks003";  break;
  1048.                 case 2: sKit = "nw_it_picks004";  break;
  1049.             }
  1050.  
  1051.        }
  1052.         else if (GetRange(4, nHD))  // 800 - 10000
  1053.         {
  1054.             int nRandom = Random(1) + 1;
  1055.             switch (nRandom)
  1056.             {
  1057.                 case 1: sKit = "nw_it_picks004";  break;
  1058.             }
  1059.  
  1060.         }
  1061.         else if (GetRange(5, nHD))  // 2000 -16500
  1062.         {
  1063.             int nRandom = Random(1) + 1;
  1064.             switch (nRandom)
  1065.             {
  1066.                 case 1: sKit = "nw_it_picks004"; break;
  1067.             }
  1068.  
  1069.         }
  1070.         else if (GetRange(6, nHD))   // 2000 - ?
  1071.         {
  1072.             int nRandom = Random(1) + 1;
  1073.             switch (nRandom)
  1074.             {
  1075.                 case 1: sKit = "nw_it_picks004"; break;
  1076.              }
  1077.  
  1078.         }
  1079.        dbSpeak("Create Lockpick");
  1080.  
  1081.         dbCreateItemOnObject(sKit, oTarget, 1);
  1082.  
  1083.     }
  1084.     void CreateKit(object oTarget, object oAdventurer, int nModifier = 0)
  1085.     {
  1086.         // * April 23 2002: Major restructuring of this function
  1087.         // * to allow me to
  1088.         
  1089.         switch (Random(8) + 1)
  1090.         {
  1091.             case 1: CreateTrapKit(oTarget, oAdventurer, nModifier); break;
  1092.             case 2: case 3: case 4: case 5: CreateHealingKit(oTarget, oAdventurer, nModifier); break;
  1093.             case 6: case 7: case 8: CreateLockPick(oTarget, oAdventurer, nModifier); break;
  1094.         }
  1095.     }
  1096.  
  1097.     void CreatePotion(object oTarget, object oAdventurer, int nModifier = 0)
  1098.     {
  1099.         string sPotion = "";
  1100.         int nHD = GetHitDice(oAdventurer) + nModifier;
  1101.  
  1102.         if (GetRange(1, nHD))
  1103.         {
  1104.             int nRandom = d10();
  1105.             switch (nRandom)
  1106.             {
  1107.                 case 1: case 2: case 3: case 4: sPotion = "nw_it_mpotion001"; break;
  1108.                 case 5: case 6: case 7: sPotion = "nw_it_mpotion020";  break;
  1109.                 case 8: sPotion = "nw_it_mpotion002";  break;
  1110.                 case 9: sPotion = "nw_it_mpotion009";  break;
  1111.                 case 10: sPotion = "nw_it_mpotion005";  break;
  1112.             }
  1113.  
  1114.         }
  1115.         else if (GetRange(2, nHD))
  1116.         {
  1117.            int nRandom = Random(29) + 1;
  1118.             switch (nRandom)
  1119.             {
  1120.                 case 1: case 2: case 3: sPotion = "nw_it_mpotion001"; break;
  1121.                 case 4: case 5: case 6: case 7: case 8: sPotion = "nw_it_mpotion020";  break;
  1122.                 case 9: case 10: case 11: case 12: sPotion = "nw_it_mpotion002";  break;
  1123.                 case 13: case 14: sPotion = "nw_it_mpotion003";  break;
  1124.                 case 15: sPotion = "nw_it_mpotion009";  break;
  1125.                 case 16: sPotion = "nw_it_mpotion005";  break;
  1126.                 case 17: sPotion = "nw_it_mpotion007";  break;
  1127.                 case 18: sPotion = "nw_it_mpotion008";  break;
  1128.                 case 19: sPotion = "nw_it_mpotion010";  break;
  1129.                 case 20: sPotion = "nw_it_mpotion011";  break;
  1130.                 case 21: sPotion = "nw_it_mpotion013";  break;
  1131.                 case 22: sPotion = "nw_it_mpotion014";  break;
  1132.                 case 23: sPotion = "nw_it_mpotion015";  break;
  1133.                 case 24: sPotion = "nw_it_mpotion016";  break;
  1134.                 case 25: sPotion = "nw_it_mpotion017";  break;
  1135.                 case 26: sPotion = "nw_it_mpotion018";  break;
  1136.                 case 27: sPotion = "nw_it_mpotion019";  break;
  1137.                 case 28: sPotion = "nw_it_mpotion004";  break;
  1138.                 case 29: sPotion = "nw_it_mpotion006";  break;
  1139.             }
  1140.         }
  1141.         else if (GetRange(3, nHD))
  1142.         {
  1143.            int nRandom = Random(29) + 1;
  1144.             switch (nRandom)
  1145.             {
  1146.                 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
  1147.                 case 9: case 10: case 11: case 12:
  1148.                 case 13: case 14: sPotion = "nw_it_mpotion003";  break;
  1149.                 case 15: sPotion = "nw_it_mpotion009";  break;
  1150.                 case 16: sPotion = "nw_it_mpotion005";  break;
  1151.                 case 17: sPotion = "nw_it_mpotion007";  break;
  1152.                 case 18: sPotion = "nw_it_mpotion008";  break;
  1153.                 case 19: sPotion = "nw_it_mpotion010";  break;
  1154.                 case 20: sPotion = "nw_it_mpotion011";  break;
  1155.                 case 21: sPotion = "nw_it_mpotion013";  break;
  1156.                 case 22: sPotion = "nw_it_mpotion014";  break;
  1157.                 case 23: sPotion = "nw_it_mpotion015";  break;
  1158.                 case 24: sPotion = "nw_it_mpotion016";  break;
  1159.                 case 25: sPotion = "nw_it_mpotion017";  break;
  1160.                 case 26: sPotion = "nw_it_mpotion018";  break;
  1161.                 case 27: sPotion = "nw_it_mpotion019";  break;
  1162.                 case 28: sPotion = "nw_it_mpotion004";  break;
  1163.                 case 29: sPotion = "nw_it_mpotion006";  break;
  1164.             }
  1165.         }
  1166.         else if (GetRange(4, nHD))
  1167.         {
  1168.            int nRandom = Random(29) + 1;
  1169.             switch (nRandom)
  1170.             {
  1171.                 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
  1172.                 case 9: case 10: case 11: case 12: sPotion = "nw_it_mpotion003"; break;
  1173.                 case 13: case 14: sPotion = "nw_it_mpotion003";  break;
  1174.                 case 15: sPotion = "nw_it_mpotion009";  break;
  1175.                 case 16: sPotion = "nw_it_mpotion005";  break;
  1176.                 case 17: sPotion = "nw_it_mpotion007";  break;
  1177.                 case 18: sPotion = "nw_it_mpotion008";  break;
  1178.                 case 19: sPotion = "nw_it_mpotion010";  break;
  1179.                 case 20: sPotion = "nw_it_mpotion011";  break;
  1180.                 case 21: sPotion = "nw_it_mpotion013";  break;
  1181.                 case 22: sPotion = "nw_it_mpotion014";  break;
  1182.                 case 23: sPotion = "nw_it_mpotion015";  break;
  1183.                 case 24: sPotion = "nw_it_mpotion016";  break;
  1184.                 case 25: sPotion = "nw_it_mpotion017";  break;
  1185.                 case 26: sPotion = "nw_it_mpotion018";  break;
  1186.                 case 27: sPotion = "nw_it_mpotion019";  break;
  1187.                 case 28: sPotion = "nw_it_mpotion004";  break;
  1188.                 case 29: sPotion = "nw_it_mpotion006";  break;
  1189.             }
  1190.         }
  1191.         else  // keep 5 and 6 the same
  1192.         {
  1193.            int nRandom = Random(29) + 1;
  1194.             switch (nRandom)
  1195.             {
  1196.                 case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
  1197.                 case 9: sPotion = "nw_it_mpotion003" ;
  1198.                 case 10: case 11: case 12: case 13: case 14: sPotion = "nw_it_mpotion003";  break;
  1199.                 case 15: sPotion = "nw_it_mpotion009";  break;
  1200.                 case 16: sPotion = "nw_it_mpotion005";  break;
  1201.                 case 17: sPotion = "nw_it_mpotion007";  break;
  1202.                 case 18: sPotion = "nw_it_mpotion008";  break;
  1203.                 case 19: sPotion = "nw_it_mpotion010";  break;
  1204.                 case 20: sPotion = "nw_it_mpotion011";  break;
  1205.                 case 21: sPotion = "nw_it_mpotion013";  break;
  1206.                 case 22: sPotion = "nw_it_mpotion014";  break;
  1207.                 case 23: sPotion = "nw_it_mpotion015";  break;
  1208.                 case 24: sPotion = "nw_it_mpotion016";  break;
  1209.                 case 25: sPotion = "nw_it_mpotion017";  break;
  1210.                 case 26: sPotion = "nw_it_mpotion018";  break;
  1211.                 case 27: sPotion = "nw_it_mpotion019";  break;
  1212.                 case 28: sPotion = "nw_it_mpotion004";  break;
  1213.                 case 29: sPotion = "nw_it_mpotion006";  break;
  1214.             }
  1215.         }
  1216.         dbSpeak("Create Potion");
  1217.         dbCreateItemOnObject(sPotion, oTarget, 1);
  1218.     }
  1219.     //::///////////////////////////////////////////////
  1220.     //:: CreateTable2GenericItem
  1221.     //:: Copyright (c) 2002 Bioware Corp.
  1222.     //:://////////////////////////////////////////////
  1223.     /*
  1224.         Creates an item based upon the class of
  1225.         oAdventurer
  1226.     */
  1227.     //:://////////////////////////////////////////////
  1228.     //:: Created By:  Brent
  1229.     //:: Created On:
  1230.     //:://////////////////////////////////////////////
  1231.         void CreateGenericMiscItem(object oTarget, object oAdventurer, int nModifier=0)
  1232.         {
  1233.             int nHD = GetHitDice(oAdventurer) + nModifier;
  1234.             string sItem = "";
  1235.             if (GetRange(1, nHD))    // * 200
  1236.             {
  1237.                 int nRandom = Random(9) + 1;
  1238.                 switch (nRandom)
  1239.                 {
  1240.                  case 1: sItem = "nw_it_mglove004"; break;
  1241.                  case 2: sItem = "nw_it_mglove004"; break;
  1242.                  case 3: sItem = "nw_it_mglove005"; break;
  1243.                  case 4: sItem = "nw_it_mglove006"; break;
  1244.                  case 5: sItem = "nw_it_mglove007"; break;
  1245.                  case 6: sItem = "nw_it_mglove008"; break;
  1246.                  case 7: sItem = "nw_it_mglove009"; break;
  1247.                  case 8: sItem = "nw_mcloth006"; break;
  1248.                  case 9: sItem = "nw_it_mglove012"; break;
  1249.                 }
  1250.             }
  1251.             else if (GetRange(2, nHD))   // * 800
  1252.             {
  1253.                 int nRandom = Random(25) + 1;
  1254.                 switch (nRandom)
  1255.                 {
  1256.                  case 1: sItem = "nw_mcloth006"; break;
  1257.                  case 2: sItem = "nw_it_mring009"; break;
  1258.                  case 3: sItem = "nw_it_mring009"; break;
  1259.                  case 4: sItem = "nw_it_mring010"; break;
  1260.                  case 5: sItem = "nw_it_mring011"; break;
  1261.                  case 6: sItem = "nw_it_mboots010"; break;
  1262.                  case 7: sItem = "nw_it_mneck024"; break;
  1263.                  case 8: sItem = "nw_mcloth007"; break;
  1264.                  case 9: sItem = "nw_it_mring024"; break;
  1265.                  case 10: sItem = "nw_it_mring012"; break;
  1266.                  case 11: sItem = "nw_mcloth008"; break;
  1267.                  case 12: sItem = "nw_it_mglove010"; break;
  1268.                  case 13: sItem = "nw_it_mglove011"; break;
  1269.                  case 14: sItem = "nw_it_mglove013"; break;
  1270.                  case 15: sItem = "nw_it_mglove014"; break;
  1271.                  case 16: sItem = "nw_it_mglove015"; break;
  1272.                  case 17: sItem = "nw_maarcl097"; break;
  1273.                  case 18: sItem = "nw_maarcl097"; break;
  1274.                  case 19: sItem = "nw_maarcl099"; break;
  1275.                  case 20: sItem = "nw_it_mneck032"; break;
  1276.                  case 21: sItem = "nw_mcloth010"; break;
  1277.                  case 22: sItem = "nw_it_mbracer002"; break;
  1278.                  case 23: sItem = "nw_it_mneck001"; break;
  1279.                  case 24: sItem = "nw_maarcl055"; break;
  1280.                  case 25: sItem = "nw_mcloth009"; break;
  1281.                 }
  1282.  
  1283.             }
  1284.             else if (GetRange(3, nHD))   // * 200 - 2500
  1285.             {
  1286.                 int nRandom = Random(44) + 1;
  1287.                 switch (nRandom)
  1288.                 {
  1289.                  case 1: sItem = "nw_it_mring009"; break;
  1290.                  case 2: sItem = "nw_it_mring009"; break;
  1291.                  case 3: sItem = "nw_it_mring010"; break;
  1292.                  case 4: sItem = "nw_it_mring011"; break;
  1293.                  case 5: sItem = "nw_it_mboots010"; break;
  1294.                  case 6: sItem = "nw_it_mneck024"; break;
  1295.                  case 7: sItem = "nw_mcloth007"; break;
  1296.                  case 8: sItem = "nw_it_mring024"; break;
  1297.                  case 9: sItem = "nw_it_mring012"; break;
  1298.                  case 10: sItem = "nw_mcloth008"; break;
  1299.                  case 11: sItem = "nw_it_mglove010"; break;
  1300.                  case 12: sItem = "nw_it_mglove011"; break;
  1301.                  case 13: sItem = "nw_it_mglove013"; break;
  1302.                  case 14: sItem = "nw_it_mglove014"; break;
  1303.                  case 15: sItem = "nw_it_mglove015"; break;
  1304.                  case 16: sItem = "nw_it_contain003"; break;
  1305.                  case 17: sItem = "nw_maarcl097"; break;
  1306.                  case 18: sItem = "nw_maarcl099"; break;
  1307.                  case 19: sItem = "nw_it_mneck032"; break;
  1308.                  case 20: sItem = "nw_mcloth010"; break;
  1309.                  case 21: sItem = "nw_it_mbracer002"; break;
  1310.                  case 22: sItem = "nw_it_mneck001"; break;
  1311.                  case 23: sItem = "nw_maarcl055"; break;
  1312.                  case 24: sItem = "nw_mcloth009"; break;
  1313.                  case 25: sItem = "nw_it_mring001"; break;
  1314.                  case 26: sItem = "nw_it_mboots001"; break;
  1315.                  case 27: sItem = "nw_it_mbracer001"; break;
  1316.                  case 28: sItem = "nw_it_mneck007"; break;
  1317.                  case 29: sItem = "nw_maarcl096"; break;
  1318.                  case 30: sItem = "nw_it_mglove003"; break;
  1319.                  case 31: sItem = "nw_it_contain004"; break;
  1320.                  case 32: sItem = "nw_it_mneck031"; break;
  1321.                  case 33: sItem = "nw_it_mring006"; break;
  1322.                  case 34: sItem = "nw_it_mneck006"; break;
  1323.                  case 35: sItem = "nw_it_mneck029"; break;
  1324.                  case 36: sItem = "nw_it_mring013"; break;
  1325.                  case 37: sItem = "nw_it_mboots011"; break;
  1326.                  case 38: sItem = "nw_it_mneck025"; break;
  1327.                  case 39: sItem = "nw_it_mbelt009"; break;
  1328.                  case 40: sItem = "nw_it_mbelt010"; break;
  1329.                  case 41: sItem = "nw_it_mbelt011"; break;
  1330.                  case 42: sItem = "nw_it_mring025"; break;
  1331.                  case 43: sItem = "nw_it_mring025"; break;
  1332.                  case 44: sItem = "nw_maarcl031"; break;
  1333.  
  1334.                 }
  1335.  
  1336.             }
  1337.             else if (GetRange(4, nHD))   // * 800 - 10000
  1338.             {
  1339.                 int nRandom = Random(48) + 1;
  1340.                 switch (nRandom)
  1341.                 {
  1342.                  case 1: sItem = "nw_it_mring001"; break;
  1343.                  case 2: sItem = "nw_it_mboots001"; break;
  1344.                  case 3: sItem = "nw_it_mbracer001"; break;
  1345.                  case 4: sItem = "nw_it_mneck007"; break;
  1346.                  case 5: sItem = "nw_maarcl096"; break;
  1347.                  case 6: sItem = "nw_it_mglove003"; break;
  1348.                  case 7: sItem = "nw_it_mneck031"; break;
  1349.                  case 8: sItem = "nw_it_mneck031"; break;
  1350.                  case 9: sItem = "nw_it_mring006"; break;
  1351.                  case 10: sItem = "nw_it_mneck006"; break;
  1352.                  case 11: sItem = "nw_it_mneck029"; break;
  1353.                  case 12: sItem = "nw_it_mring013"; break;
  1354.                  case 13: sItem = "nw_it_mboots011"; break;
  1355.                  case 14: sItem = "nw_it_mneck025"; break;
  1356.                  case 15: sItem = "nw_it_mbelt009"; break;
  1357.                  case 16: sItem = "nw_it_mbelt010"; break;
  1358.                  case 17: sItem = "nw_it_mbelt011"; break;
  1359.                  case 18: sItem = "nw_it_mring025"; break;
  1360.                  case 19: sItem = "nw_it_mring025"; break;
  1361.                  case 20: sItem = "nw_it_mbracer007"; break;
  1362.                  case 21: sItem = "nw_it_mbracer007"; break;
  1363.                  case 22: sItem = "nw_it_mneck012"; break;
  1364.                  case 23: sItem = "nw_maarcl088"; break;
  1365.                  case 24: sItem = "nw_it_mboots012"; break;
  1366.                  case 25: sItem = "nw_it_mneck026"; break;
  1367.                  case 26: sItem = "nw_it_mboots006"; break;
  1368.                  case 27: sItem = "nw_it_mbracer003"; break;
  1369.                  case 28: sItem = "nw_it_mneck008"; break;
  1370.                  case 29: sItem = "nw_it_mring008"; break;
  1371.                  case 30: sItem = "nw_maarcl056"; break;
  1372.                  case 31: sItem = "nw_maarcl092"; break;
  1373.                  case 32: sItem = "nw_it_mring014"; break;
  1374.                  case 33: sItem = "nw_it_mneck016"; break;
  1375.                  case 34: sItem = "nw_it_mboots013"; break;
  1376.                  case 35: sItem = "nw_it_mneck027"; break;
  1377.                  case 36: sItem = "nw_it_mbracer008"; break;
  1378.                  case 37: sItem = "nw_it_mneck013"; break;
  1379.                  case 38: sItem = "nw_maarcl089"; break;
  1380.                  case 39: sItem = "nw_it_mbelt012"; break;
  1381.                  case 40: sItem = "nw_it_mbelt013"; break;
  1382.                  case 41: sItem = "nw_it_mbelt014"; break;
  1383.                  case 42: sItem = "nw_it_mring027"; break;
  1384.                  case 43: sItem = "nw_it_mboots007"; break;
  1385.                  case 44: sItem = "nw_it_mbracer004"; break;
  1386.                  case 45: sItem = "nw_it_mneck009"; break;
  1387.                  case 46: sItem = "nw_it_mring018"; break;
  1388.                  case 47: sItem = "nw_maarcl093"; break;
  1389.                  case 48: sItem = "nw_it_mboots002"; break;
  1390.  
  1391.                 }
  1392.             }
  1393.             else if (GetRange(5, nHD))   // * 2500 - 16500
  1394.             {
  1395.                 int nRandom = Random(42) + 1;
  1396.                 switch (nRandom)
  1397.                 {
  1398.                  case 1: sItem = "nw_it_mbracer007"; break;
  1399.                  case 2: sItem = "nw_it_mbracer007"; break;
  1400.                  case 3: sItem = "nw_it_mneck012"; break;
  1401.                  case 4: sItem = "nw_maarcl088"; break;
  1402.                  case 5: sItem = "nw_it_mboots012"; break;
  1403.                  case 6: sItem = "nw_it_mneck026"; break;
  1404.                  case 7: sItem = "nw_it_mboots006"; break;
  1405.                  case 8: sItem = "nw_it_mbracer003"; break;
  1406.                  case 9: sItem = "nw_it_mneck008"; break;
  1407.                  case 10: sItem = "nw_it_mring008"; break;
  1408.                  case 11: sItem = "nw_maarcl056"; break;
  1409.                  case 12: sItem = "nw_maarcl092"; break;
  1410.                  case 13: sItem = "nw_it_mring014"; break;
  1411.                  case 14: sItem = "nw_it_mneck016"; break;
  1412.                  case 15: sItem = "nw_it_mboots013"; break;
  1413.                  case 16: sItem = "nw_it_mneck027"; break;
  1414.                  case 17: sItem = "nw_it_mbracer008"; break;
  1415.                  case 18: sItem = "nw_it_mneck013"; break;
  1416.                  case 19: sItem = "nw_maarcl089"; break;
  1417.                  case 20: sItem = "nw_it_mbelt012"; break;
  1418.                  case 21: sItem = "nw_it_mbelt013"; break;
  1419.                  case 22: sItem = "nw_it_mbelt014"; break;
  1420.                  case 23: sItem = "nw_it_mring027"; break;
  1421.                  case 24: sItem = "nw_it_mboots007"; break;
  1422.                  case 25: sItem = "nw_it_mbracer004"; break;
  1423.                  case 26: sItem = "nw_it_mneck009"; break;
  1424.                  case 27: sItem = "nw_it_mring018"; break;
  1425.                  case 28: sItem = "nw_maarcl093"; break;
  1426.                  case 29: sItem = "nw_it_mboots002"; break;
  1427.                  case 30: sItem = "nw_it_mboots014"; break;
  1428.                  case 31: sItem = "nw_it_mneck028"; break;
  1429.                  case 32: sItem = "nw_it_mring015"; break;
  1430.                  case 33: sItem = "nw_it_mbracer009"; break;
  1431.                  case 34: sItem = "nw_it_mneck014"; break;
  1432.                  case 35: sItem = "nw_maarcl090"; break;
  1433.                  case 36: sItem = "nw_it_mring028"; break;
  1434.                  case 37: sItem = "nw_it_mneck017"; break;
  1435.                  case 38: sItem = "nw_it_mboots008"; break;
  1436.                  case 39: sItem = "nw_it_mbracer005"; break;
  1437.                  case 40: sItem = "nw_it_mneck010"; break;
  1438.                  case 41: sItem = "nw_it_mmidmisc02"; break;
  1439.                  case 42: sItem = "nw_it_mring019"; break;
  1440.                 }
  1441.             }
  1442.             else if (GetRange(6, nHD))   // * 8000 - 25000
  1443.             {
  1444.                 int nRandom = Random(30) + 1;
  1445.                 switch (nRandom)
  1446.                 {
  1447.                  case 1: sItem = "nw_it_mring027"; break;
  1448.                  case 2: sItem = "nw_it_mboots007"; break;
  1449.                  case 3: sItem = "nw_it_mbracer004"; break;
  1450.                  case 4: sItem = "nw_it_mneck009"; break;
  1451.                  case 5: sItem = "nw_it_mring018"; break;
  1452.                  case 6: sItem = "nw_maarcl093"; break;
  1453.                  case 7: sItem = "nw_it_mboots002"; break;
  1454.                  case 8: sItem = "nw_it_mboots014"; break;
  1455.                  case 9: sItem = "nw_it_mneck028"; break;
  1456.                  case 10: sItem = "nw_it_mring015"; break;
  1457.                  case 11: sItem = "nw_it_mbracer009"; break;
  1458.                  case 12: sItem = "nw_it_mneck014"; break;
  1459.                  case 13: sItem = "nw_maarcl090"; break;
  1460.                  case 14: sItem = "nw_it_mring028"; break;
  1461.                  case 15: sItem = "nw_it_mneck017"; break;
  1462.                  case 16: sItem = "nw_it_mboots008"; break;
  1463.                  case 17: sItem = "nw_it_mbracer005"; break;
  1464.                  case 18: sItem = "nw_it_mneck010"; break;
  1465.                  case 19: sItem = "nw_it_mmidmisc02"; break;
  1466.                  case 20: sItem = "nw_maarcl094"; break;
  1467.                  case 21: sItem = "nw_it_mring019"; break;
  1468.                  case 22: sItem = "nw_it_mring016"; break;
  1469.                  case 23: sItem = "nw_it_mbracer010"; break;
  1470.                  case 24: sItem = "nw_it_mneck015"; break;
  1471.                  case 25: sItem = "nw_maarcl091"; break;
  1472.                  case 26: sItem = "nw_it_mboots009"; break;
  1473.                  case 27: sItem = "nw_it_mbracer006"; break;
  1474.                  case 28: sItem = "nw_it_mneck011"; break;
  1475.                  case 29: sItem = "nw_maarcl095"; break;
  1476.                  case 30: sItem = "nw_it_mneck018"; break;
  1477.                 }
  1478.              }
  1479.              dbSpeak("Create Misc");
  1480.  
  1481.              dbCreateItemOnObject(sItem, oTarget, 1);
  1482.          }
  1483.          
  1484.          // * this function just returns an item that is more appropriate
  1485.          // * for this class. Only wizards, sorcerers, clerics, monks, rogues and bards get this
  1486.         void CreateGenericClassItem(object oTarget, object oAdventurer, int nSpecific =0)
  1487.         {
  1488.  
  1489.  
  1490.             if (GetLevelByClass(CLASS_TYPE_DRUID, oAdventurer)>= 1)
  1491.             {
  1492.                 if (nSpecific == 0)
  1493.                 {
  1494.                     CreateGenericDruidWeapon(oTarget, oAdventurer);
  1495.                 }
  1496.                 else
  1497.                 {
  1498.                     CreateSpecificDruidWeapon(oTarget, oAdventurer);
  1499.                 }
  1500.             }
  1501.             else
  1502.             if (GetLevelByClass(CLASS_TYPE_WIZARD, oAdventurer)>= 1 || GetLevelByClass(CLASS_TYPE_SORCERER, oAdventurer) >= 1)
  1503.             {
  1504.                 // * 30% chance of getting a magic scroll else get a weapon suited for a wizard
  1505.                 if (Random(100) + 1 > 70)
  1506.                 {
  1507.                     // * grab an arcane scroll as if the wizard had +4 levels
  1508.                     CreateArcaneScroll(oTarget, oAdventurer, 4);
  1509.                 }
  1510.                 else
  1511.                 if (nSpecific == 0)
  1512.                 {
  1513.                     CreateGenericWizardWeapon(oTarget, oAdventurer);
  1514.                 }
  1515.                 else
  1516.                 {
  1517.                     CreateSpecificWizardWeapon(oTarget, oAdventurer);
  1518.                 }
  1519.  
  1520.  
  1521.             }
  1522.             else
  1523.             if (GetLevelByClass(CLASS_TYPE_CLERIC, oAdventurer)>= 1)
  1524.             {
  1525.                   int nRandom = Random(4) + 1;
  1526.                   string sItem = "nw_it_medkit001";
  1527.                   switch (nRandom)
  1528.                   {
  1529.                        case 1: sItem = "nw_it_medkit001"; break;
  1530.                        case 2: sItem = "nw_it_medkit002"; break;
  1531.                        case 3: sItem = "nw_it_medkit003"; break;
  1532.                        case 4: sItem = "nw_it_medkit004"; break;
  1533.                    }
  1534.                   dbCreateItemOnObject(sItem, oTarget, 1);
  1535.             }
  1536.             else
  1537.             if (GetLevelByClass(CLASS_TYPE_MONK, oAdventurer)>= 1)
  1538.             {
  1539.                 dbSpeak("in monk function");
  1540.                 if (nSpecific == 0)
  1541.                 {
  1542.                     CreateGenericMonkWeapon(oTarget, oAdventurer);
  1543.                 }
  1544.                 else
  1545.                 {
  1546.                     CreateSpecificMonkWeapon(oTarget, oAdventurer);
  1547.                 }
  1548.             }
  1549.             else
  1550.             if (GetLevelByClass(CLASS_TYPE_ROGUE, oAdventurer)>= 1)
  1551.             {
  1552.                 // * give a misc item as if a couple levels higher
  1553.                 CreateGenericMiscItem(oTarget, oAdventurer, 2);
  1554.             }
  1555.             else
  1556.             if (GetLevelByClass(CLASS_TYPE_BARD, oAdventurer)>= 1)
  1557.             {
  1558.                 // * give a misc item as if a couple levels higher
  1559.                 CreateGenericMiscItem(oTarget, oAdventurer, 2);
  1560.             }
  1561.  
  1562.         }
  1563.         void CreateGenericRodStaffWand(object oTarget, object oAdventurer, int nModifier = 0)
  1564.         {
  1565.             string sItem = "";
  1566.             int nHD = GetHitDice(oAdventurer) + nModifier;
  1567.  
  1568.             if (GetRange(1, nHD))    // * 200
  1569.             {
  1570.                 int nRandom = Random(3) + 1;
  1571.                 switch (nRandom)
  1572.                 {
  1573.                     case 1: sItem = "nw_wmgwn013"; break;
  1574.                     case 2: sItem = "nw_wmgwn006"; break;
  1575.                     case 3: sItem = "nw_it_gem002";  break;  // gem for variety
  1576.                 }
  1577.             }
  1578.             else if (GetRange(2, nHD))   // * 800
  1579.             {
  1580.                 int nRandom = Random(3) + 1;
  1581.                 switch (nRandom)
  1582.                 {
  1583.                     case 1: sItem = "nw_wmgwn013"; break;
  1584.                     case 2: sItem = "nw_wmgwn006"; break;
  1585.                     case 3: sItem = "nw_it_gem002";  break;// gem for variety
  1586.                 }
  1587.             }
  1588.             else if (GetRange(3, nHD))   // * 200 - 2500
  1589.             {
  1590.                 int nRandom = Random(4) + 1;
  1591.                 switch (nRandom)
  1592.                 {
  1593.                     case 1: sItem = "nw_wmgwn006"; break;
  1594.                     case 2: sItem = "nw_wmgwn004"; break;
  1595.                     case 3: sItem = "nw_wmgrd002"; break;
  1596.                     case 4: sItem = "nw_wmgwn012"; break;
  1597.                 }
  1598.             }
  1599.             else if (GetRange(4, nHD))   // * 800 - 10000
  1600.             {
  1601.                 int nRandom = Random(11) + 1;
  1602.                 switch (nRandom)
  1603.                 {
  1604.                     case 1: sItem = "nw_wmgwn004"; break;
  1605.                     case 2: sItem = "nw_wmgwn002"; break;
  1606.                     case 3: sItem = "nw_wmgwn007"; break;
  1607.                     case 4: sItem = "nw_wmgwn003"; break;
  1608.                     case 5: sItem = "nw_wmgwn010"; break;
  1609.                     case 6: sItem = "nw_wmgwn011"; break;
  1610.                     case 7: sItem = "nw_wmgwn005"; break;
  1611.                     case 8: sItem = "nw_wmgwn008"; break;
  1612.                     case 9: sItem = "nw_wmgwn009"; break;
  1613.                     case 10: sItem = "nw_wmgrd002"; break;
  1614.                     case 11: sItem = "nw_wmgwn012"; break;
  1615.                 }
  1616.  
  1617.             }
  1618.             else  // * 2500 - 16500
  1619.             {
  1620.                 int nRandom = d8();
  1621.                 switch (nRandom)
  1622.                 {
  1623.                     case 1: sItem = "nw_wmgwn002"; break;
  1624.                     case 2: sItem = "nw_wmgwn007"; break;
  1625.                     case 3: sItem = "nw_wmgwn003"; break;
  1626.                     case 4: sItem = "nw_wmgwn010"; break;
  1627.                     case 5: sItem = "nw_wmgwn011"; break;
  1628.                     case 6: sItem = "nw_wmgwn005"; break;
  1629.                     case 7: sItem = "nw_wmgwn008"; break;
  1630.                     case 8: sItem = "nw_wmgwn009"; break;
  1631.                 }
  1632.  
  1633.             }
  1634.           dbSpeak("Generic Rod staff wand");
  1635.  
  1636.            dbCreateItemOnObject(sItem, oTarget, 1);
  1637.         }
  1638.         
  1639.         void CreateGenericMonkWeapon(object oTarget, object oAdventurer, int nModifier = 0)
  1640.         {
  1641.             string sItem = "";
  1642.             int nHD = GetHitDice(oAdventurer) + nModifier;
  1643.  
  1644.             if (GetRange(1, nHD))    // * 200
  1645.             {
  1646.                   int nRandom = Random(10) + 1;
  1647.                   switch (nRandom)
  1648.                   {
  1649.                        case 1: sItem = "nw_wthsh001"; break;
  1650.                        case 2: sItem = "nw_wblcl001"; break;
  1651.                        case 3: sItem = "nw_wdbqs001"; break;
  1652.                        case 4: sItem = "nw_wbwsl001"; break;
  1653.                        case 5: sItem = "nw_wswdg001"; break;
  1654.                        case 6: sItem = "nw_wspka001"; break;
  1655.                        case 7: sItem = "nw_wbwxh001"; break;
  1656.                        case 8: sItem = "nw_waxhn001"; break;
  1657.                        case 9: sItem = "nw_wbwxl001"; break;
  1658.                        case 10: sItem = "nw_wthmsh002"; break;
  1659.                    }
  1660.  
  1661.             }
  1662.             else if (GetRange(2, nHD))   // * 800
  1663.             {
  1664.                   int nRandom = Random(14) + 1;
  1665.                   switch (nRandom)
  1666.                   {
  1667.                        case 1: sItem = "nw_wthsh001"; break;
  1668.                        case 2: sItem = "nw_wblcl001"; break;
  1669.                        case 3: sItem = "nw_wdbqs001"; break;
  1670.                        case 4: sItem = "nw_wbwsl001"; break;
  1671.                        case 5: sItem = "nw_wswdg001"; break;
  1672.                        case 6: sItem = "nw_wspka001"; break;
  1673.                        case 7: sItem = "nw_wbwxh001"; break;
  1674.                        case 8: sItem = "nw_waxhn001"; break;
  1675.                        case 9: sItem = "nw_wbwxl001"; break;
  1676.                        case 10: sItem = "nw_wthmsh002"; break;
  1677.                        case 11: sItem = "nw_wbwmsl001"; break;
  1678.                        case 12: sItem = "nw_wbwmxh002"; break;
  1679.                        case 13: sItem = "nw_wthmsh008"; break;
  1680.                        case 14: sItem = "nw_wbwmxl002"; break;
  1681.                    }
  1682.  
  1683.             }
  1684.             else if (GetRange(3, nHD))   // * 200 - 2500
  1685.             {
  1686.                   int nRandom = Random(13) + 1;
  1687.                   switch (nRandom)
  1688.                   {
  1689.                        case 1: sItem = "nw_wbwmsl001"; break;
  1690.                        case 2: sItem = "nw_wbwmxh002"; break;
  1691.                        case 3: sItem = "nw_wthmsh008"; break;
  1692.                        case 4: sItem = "nw_wbwmxl002"; break;
  1693.                        case 5: sItem = "nw_wthmsh009"; break;
  1694.                        case 6: sItem = "nw_wblmcl002"; break;
  1695.                        case 7: sItem = "nw_wdbmqs002"; break;
  1696.                        case 8: sItem = "nw_wswmdg002"; break;
  1697.                        case 9: sItem = "nw_wspmka002"; break;
  1698.                        case 10: sItem = "nw_waxmhn002"; break;
  1699.                        case 11: sItem = "nw_wbwmsl009"; break;
  1700.                        case 12: sItem = "nw_wbwmxh008"; break;
  1701.                        case 13: sItem = "nw_wbwmxl008"; break;
  1702.                    }
  1703.  
  1704.  
  1705.             }
  1706.             else if (GetRange(4, nHD))   // * 800 - 10000
  1707.             {
  1708.                   int nRandom = Random(17) + 1;
  1709.                   switch (nRandom)
  1710.                   {
  1711.                        case 1: sItem = "nw_wthmsh009"; break;
  1712.                        case 2: sItem = "nw_wblmcl002"; break;
  1713.                        case 3: sItem = "nw_wdbmqs002"; break;
  1714.                        case 4: sItem = "nw_wswmdg002"; break;
  1715.                        case 5: sItem = "nw_wspmka002"; break;
  1716.                        case 6: sItem = "nw_waxmhn002"; break;
  1717.                        case 7: sItem = "nw_wbwmsl009"; break;
  1718.                        case 8: sItem = "nw_wbwmxh008"; break;
  1719.                        case 9: sItem = "nw_wbwmxl008"; break;
  1720.                        case 10: sItem = "nw_wbwmsl010"; break;
  1721.                        case 11: sItem = "nw_wbwmxh009"; break;
  1722.                        case 12: sItem = "nw_wbwmxl009"; break;
  1723.                        case 13: sItem = "nw_wblmcl010"; break;
  1724.                        case 14: sItem = "nw_wdbmqs008"; break;
  1725.                        case 15: sItem = "nw_wswmdg008"; break;
  1726.                        case 16: sItem = "nw_wspmka008"; break;
  1727.                        case 17: sItem = "nw_waxmhn010"; break;
  1728.                    }
  1729.             }
  1730.             else  // * 2500 - 16500
  1731.             {
  1732.                   int nRandom = Random(13) + 1;
  1733.                   switch (nRandom)
  1734.                   {
  1735.                        case 1: sItem = "nw_wbwmsl010"; break;
  1736.                        case 2: sItem = "nw_wbwmxh009"; break;
  1737.                        case 3: sItem = "nw_wbwmxl009"; break;
  1738.                        case 4: sItem = "nw_wblmcl010"; break;
  1739.                        case 5: sItem = "nw_wdbmqs008"; break;
  1740.                        case 6: sItem = "nw_wswmdg008"; break;
  1741.                        case 7: sItem = "nw_wspmka008"; break;
  1742.                        case 8: sItem = "nw_waxmhn010"; break;
  1743.                        case 9: sItem = "nw_wblmcl011"; break;
  1744.                        case 10: sItem = "nw_wdbmqs009"; break;
  1745.                        case 11: sItem = "nw_wswmdg009"; break;
  1746.                        case 12: sItem = "nw_wspmka009"; break;
  1747.                        case 13: sItem = "nw_waxmhn011"; break;
  1748.                    }
  1749.             }
  1750.           dbSpeak("Generic Monk Weapon");
  1751.  
  1752.            dbCreateItemOnObject(sItem, oTarget, 1);
  1753.         }
  1754.         void CreateSpecificMonkWeapon(object oTarget, object oAdventurer, int nModifier = 0)
  1755.         {
  1756.  
  1757.             string sItem = "";
  1758.             int nHD = GetHitDice(oAdventurer) + nModifier;
  1759.  
  1760.             if (GetRange(1, nHD))    // * 800
  1761.             {
  1762.                   int nRandom = Random(3) + 1;
  1763.                   switch (nRandom)
  1764.                   {
  1765.                        case 1: sItem = "nw_wthmsh003"; break;
  1766.                        case 2: sItem = "nw_wthmsh006"; break;
  1767.                        case 3: CreateGenericMonkWeapon(oTarget, oAdventurer, JUMP_LEVEL); return; break;
  1768.                   }
  1769.  
  1770.             }
  1771.             else if (GetRange(2, nHD))   // * 2500
  1772.             {
  1773.                   int nRandom = Random(8) + 1;
  1774.                   switch (nRandom)
  1775.                   {
  1776.                        case 1: sItem = "nw_wthmsh003"; break;
  1777.                        case 2: sItem = "nw_wthmsh006"; break;
  1778.                        case 3: sItem = "nw_wthmsh004"; break;
  1779.                        case 4: sItem = "nw_wthmsh007"; break;
  1780.                        case 5: sItem = "NW_IT_MGLOVE016"; break;
  1781.                        case 6: sItem = "NW_IT_MGLOVE021"; break;
  1782.                        case 7: sItem = "NW_IT_MGLOVE026"; break;
  1783.                        case 8: CreateGenericMonkWeapon(oTarget, oAdventurer, JUMP_LEVEL); return; break;
  1784.                    }
  1785.  
  1786.             }
  1787.             else if (GetRange(3, nHD))   // * 800 - 10000
  1788.             {
  1789.                   int nRandom = Random(21) + 1;
  1790.                   switch (nRandom)
  1791.                   {
  1792.                        case 1: sItem = "nw_wthmsh006"; break;
  1793.                        case 2: sItem = "nw_wthmsh004"; break;
  1794.                        case 3: sItem = "nw_wthmsh007"; break;
  1795.                        case 4: sItem = "nw_wbwmsl005"; break;
  1796.                        case 5: sItem = "nw_wbwmxh005"; break;
  1797.                        case 6: sItem = "nw_wspmka004"; break;
  1798.                        case 7: sItem = "nw_wbwmxl005"; break;
  1799.                        case 8: sItem = "nw_wspmka007"; break;
  1800.                        case 9: sItem = "nw_wswmdg006"; break;
  1801.                        case 10: sItem = "nw_wspmka005"; break;
  1802.                        case 11: sItem = "NW_IT_MGLOVE016"; break;
  1803.                        case 12: sItem = "NW_IT_MGLOVE021"; break;
  1804.                        case 13: sItem = "NW_IT_MGLOVE026"; break;
  1805.  
  1806.                        case 14: sItem = "NW_IT_MGLOVE017"; break;
  1807.                        case 15: sItem = "NW_IT_MGLOVE022"; break;
  1808.                        case 16: sItem = "NW_IT_MGLOVE027"; break;
  1809.  
  1810.                        case 17: sItem = "NW_IT_MGLOVE018"; break;
  1811.                        case 18: sItem = "NW_IT_MGLOVE023"; break;
  1812.                        case 19: sItem = "NW_IT_MGLOVE028"; break;
  1813.  
  1814.                        case 20: sItem = "NW_IT_MGLOVE029"; break;
  1815.                        case 21: sItem = "NW_IT_MGLOVE030"; break;
  1816.  
  1817.  
  1818.                    }
  1819.  
  1820.             }
  1821.             else if (GetRange(4, nHD))   // * 2500 -16500
  1822.             {
  1823.                   int nRandom = Random(22) + 1;
  1824.                   switch (nRandom)
  1825.                   {
  1826.                        case 1: sItem = "nw_wbwmsl005"; break;
  1827.                        case 2: sItem = "nw_wbwmxh005"; break;
  1828.                        case 3: sItem = "nw_wspmka004"; break;
  1829.                        case 4: sItem = "nw_wbwmxl005"; break;
  1830.                        case 5: sItem = "nw_wspmka007"; break;
  1831.                        case 6: sItem = "nw_wswmdg006"; break;
  1832.                        case 7: sItem = "nw_wspmka005"; break;
  1833.                        case 8: sItem = "nw_wblmcl004"; break;
  1834.                        case 9: sItem = "nw_wblmcl003"; break;
  1835.                        case 10: sItem = "nw_wbwmsl003"; break;
  1836.                        case 11: sItem = "nw_wbwmxh003"; break;
  1837.                        case 12: sItem = "nw_waxmhn004"; break;
  1838.                        case 13: sItem = "nw_wbwmxl003"; break;
  1839.  
  1840.                        case 14: sItem = "NW_IT_MGLOVE017"; break;
  1841.                        case 15: sItem = "NW_IT_MGLOVE022"; break;
  1842.  
  1843.                        case 16: sItem = "NW_IT_MGLOVE018"; break;
  1844.                        case 17: sItem = "NW_IT_MGLOVE023"; break;
  1845.                        case 18: sItem = "NW_IT_MGLOVE028"; break;
  1846.  
  1847.                        case 19: sItem = "NW_IT_MGLOVE029"; break;
  1848.                        case 20: sItem = "NW_IT_MGLOVE030"; break;
  1849.  
  1850.                        case 21: sItem = "NW_IT_MGLOVE019"; break;
  1851.                        case 22: sItem = "NW_IT_MGLOVE024"; break;
  1852.  
  1853.  
  1854.                    }
  1855.  
  1856.             }
  1857.             else  // * 16000 +
  1858.             {
  1859.                   int nRandom = Random(24) + 1;
  1860.                   switch (nRandom)
  1861.                   {
  1862.                        case 1: sItem = "nw_wbwmxl003"; break;
  1863.                        case 2: sItem = "nw_wspmka006"; break;
  1864.                        case 3: sItem = "nw_wbwmxl004"; break;
  1865.                        case 4: sItem = "nw_wspmka003"; break;
  1866.                        case 5: sItem = "nw_wbwmxl007"; break;
  1867.                        case 6: sItem = "nw_waxmhn003"; break;
  1868.                        case 7: sItem = "nw_wblmcl005"; break;
  1869.                        case 8: sItem = "nw_wswmdg004"; break;
  1870.                        case 9: sItem = "nw_wbwmsl007"; break;
  1871.                        case 10: sItem = "nw_wbwmxh004"; break;
  1872.                        case 11: sItem = "nw_waxmhn005"; break;
  1873.                        case 12: sItem = "nw_wbwmxh007"; break;
  1874.                        case 13: sItem = "nw_wswmdg003"; break;
  1875.                        case 14: sItem = "nw_wswmdg007"; break;
  1876.                        case 15: sItem = "nw_wbwmsl006"; break;
  1877.                        case 16: sItem = "nw_wbwmsl008"; break;
  1878.                        case 17: sItem = "nw_wblmcl006"; break;
  1879.                        case 18: sItem = "nw_wbwmsl004"; break;
  1880.                        case 19: sItem = "nw_waxmhn006"; break;
  1881.                        case 20: sItem = "nw_wbwmxh006"; break;
  1882.                        case 21: sItem = "nw_wswmdg005"; break;
  1883.                        case 22: sItem = "nw_wbwmxl006"; break;
  1884.                        
  1885.                        case 23: sItem = "NW_IT_MGLOVE020"; break;
  1886.                        case 24: sItem = "NW_IT_MGLOVE025"; break;
  1887.  
  1888.                    }
  1889.  
  1890.             }
  1891.            dbSpeak("Specific Monk Weapon");
  1892.  
  1893.            dbCreateItemOnObject(sItem, oTarget, 1);
  1894.  
  1895.         }
  1896.  
  1897.         void CreateGenericDruidWeapon(object oTarget, object oAdventurer, int nModifier = 0)
  1898.         {
  1899.             string sItem = "";
  1900.             int nHD = GetHitDice(oAdventurer) + nModifier;
  1901.  
  1902.             if (GetRange(1, nHD))    // * 200
  1903.             {
  1904.                   int nRandom = Random(8) + 1;
  1905.                   switch (nRandom)
  1906.                   {
  1907.                        case 1: sItem = "nw_wthdt001"; break;
  1908.                        case 2: sItem = "nw_wblcl001"; break;
  1909.                        case 3: sItem = "nw_wdbqs001"; break;
  1910.                        case 4: sItem = "nw_wplss001"; break;
  1911.                        case 5: sItem = "nw_wswdg001"; break;
  1912.                        case 6: sItem = "nw_wspsc001"; break;
  1913.                        case 7: sItem = "nw_wswsc001"; break;
  1914.                        case 8: sItem = "nw_wthmdt002"; break;
  1915.                    }
  1916.             }
  1917.             else if (GetRange(2, nHD))   // * 800
  1918.             {
  1919.                   int nRandom = Random(11) + 1;
  1920.                   switch (nRandom)
  1921.                   {
  1922.                        case 1: sItem = "nw_wthdt001"; break;
  1923.                        case 2: sItem = "nw_wblcl001"; break;
  1924.                        case 3: sItem = "nw_wdbqs001"; break;
  1925.                        case 4: sItem = "nw_wplss001"; break;
  1926.                        case 5: sItem = "nw_wswdg001"; break;
  1927.                        case 6: sItem = "nw_wspsc001"; break;
  1928.                        case 7: sItem = "nw_wswsc001"; break;
  1929.                        case 8: sItem = "nw_wthmdt002"; break;
  1930.                        case 9: sItem = "nw_wthmdt005"; break;
  1931.                        case 10: sItem = "nw_wbwmsl001"; break;
  1932.                        case 11: sItem = "nw_wthmdt008"; break;
  1933.                    }
  1934.  
  1935.             }
  1936.             else if (GetRange(3, nHD))   // * 200 - 2500
  1937.             {
  1938.                   int nRandom = Random(13) + 1;
  1939.                   switch (nRandom)
  1940.                   {
  1941.                        case 1: sItem = "nw_wthmdt005"; break;
  1942.                        case 2: sItem = "nw_wbwmsl001"; break;
  1943.                        case 3: sItem = "nw_wthmdt008"; break;
  1944.                        case 4: sItem = "nw_wthmdt009"; break;
  1945.                        case 5: sItem = "nw_wthmdt006"; break;
  1946.                        case 6: sItem = "nw_wblmcl002"; break;
  1947.                        case 7: sItem = "nw_wdbmqs002"; break;
  1948.                        case 8: sItem = "nw_wplmss002"; break;
  1949.                        case 9: sItem = "nw_wswmdg002"; break;
  1950.                        case 10: sItem = "nw_wspmsc002"; break;
  1951.                        case 11: sItem = "nw_wswmsc002"; break;
  1952.                        case 12: sItem = "nw_wthmdt003"; break;
  1953.                        case 13: sItem = "nw_wbwmsl009"; break;
  1954.                    }
  1955.  
  1956.             }
  1957.             else if (GetRange(4, nHD))   // * 800 - 10000
  1958.             {
  1959.                   int nRandom = Random(19) + 1;
  1960.                   switch (nRandom)
  1961.                   {
  1962.                        case 1: sItem = "nw_wthmdt009"; break;
  1963.                        case 2: sItem = "nw_wthmdt006"; break;
  1964.                        case 3: sItem = "nw_wblmcl002"; break;
  1965.                        case 4: sItem = "nw_wdbmqs002"; break;
  1966.                        case 5: sItem = "nw_wplmss002"; break;
  1967.                        case 6: sItem = "nw_wswmdg002"; break;
  1968.                        case 7: sItem = "nw_wspmsc002"; break;
  1969.                        case 8: sItem = "nw_wswmsc002"; break;
  1970.                        case 9: sItem = "nw_wthmdt003"; break;
  1971.                        case 10: sItem = "nw_wbwmsl009"; break;
  1972.                        case 11: sItem = "nw_wthmdt007"; break;
  1973.                        case 12: sItem = "nw_wthmdt004"; break;
  1974.                        case 13: sItem = "nw_wbwmsl010"; break;
  1975.                        case 14: sItem = "nw_wblmcl010"; break;
  1976.                        case 15: sItem = "nw_wdbmqs008"; break;
  1977.                        case 16: sItem = "nw_wplmss010"; break;
  1978.                        case 17: sItem = "nw_wswmdg008"; break;
  1979.                        case 18: sItem = "nw_wspmsc010"; break;
  1980.                        case 19: sItem = "nw_wswmsc010"; break;
  1981.                    }
  1982.  
  1983.             }
  1984.             else  // * 2500 - 16500
  1985.             {
  1986.                   int nRandom = Random(15) + 1;
  1987.                   switch (nRandom)
  1988.                   {
  1989.                        case 1: sItem = "nw_wthmdt007"; break;
  1990.                        case 2: sItem = "nw_wthmdt004"; break;
  1991.                        case 3: sItem = "nw_wbwmsl010"; break;
  1992.                        case 4: sItem = "nw_wblmcl010"; break;
  1993.                        case 5: sItem = "nw_wdbmqs008"; break;
  1994.                        case 6: sItem = "nw_wplmss010"; break;
  1995.                        case 7: sItem = "nw_wswmdg008"; break;
  1996.                        case 8: sItem = "nw_wspmsc010"; break;
  1997.                        case 9: sItem = "nw_wswmsc010"; break;
  1998.                        case 10: sItem = "nw_wblmcl011"; break;
  1999.                        case 11: sItem = "nw_wdbmqs009"; break;
  2000.                        case 12: sItem = "nw_wplmss011"; break;
  2001.                        case 13: sItem = "nw_wswmdg009"; break;
  2002.                        case 14: sItem = "nw_wspmsc011"; break;
  2003.                        case 15: sItem = "nw_wswmsc011"; break;
  2004.                    }
  2005.  
  2006.             }
  2007.           dbSpeak("Generic Druid weapon");
  2008.  
  2009.            dbCreateItemOnObject(sItem, oTarget, 1);
  2010.  
  2011.  
  2012.         }
  2013.         void CreateSpecificDruidWeapon(object oTarget, object oAdventurer, int nModifier = 0)
  2014.         {
  2015.  
  2016.             string sItem = "";
  2017.             int nHD = GetHitDice(oAdventurer) + nModifier;
  2018.  
  2019.             if (GetRange(1, nHD))    // * 800
  2020.             {
  2021.                 CreateGenericDruidWeapon(oTarget, oAdventurer, JUMP_LEVEL); return;
  2022.  
  2023.             }
  2024.             else if (GetRange(2, nHD))   // * 2500
  2025.             {
  2026.                 CreateGenericDruidWeapon(oTarget, oAdventurer, JUMP_LEVEL); return;
  2027.             }
  2028.             else if (GetRange(3, nHD))   // * 800 - 10000
  2029.             {
  2030.                   int nRandom = Random(5) + 1;
  2031.                   switch (nRandom)
  2032.                   {
  2033.                        case 1: sItem = "nw_wdbmqs005"; break;
  2034.                        case 2: sItem = "nw_wdbmqs006"; break;
  2035.                        case 3: sItem = "nw_wbwmsl005"; break;
  2036.                        case 4: sItem = "nw_wswmdg006"; break;
  2037.                        case 5: CreateGenericDruidWeapon(oTarget, oAdventurer, JUMP_LEVEL); return; break;
  2038.                    }
  2039.  
  2040.             }
  2041.             else if (GetRange(4, nHD))   // * 2500 -16500
  2042.             {
  2043.                   int nRandom = Random(10) + 1;
  2044.                   switch (nRandom)
  2045.                   {
  2046.                        case 1: sItem = "nw_wdbmqs005"; break;
  2047.                        case 2: sItem = "nw_wdbmqs006"; break;
  2048.                        case 3: sItem = "nw_wbwmsl005"; break;
  2049.                        case 4: sItem = "nw_wswmdg006"; break;
  2050.                        case 5: sItem = "nw_wblmcl004"; break;
  2051.                        case 6: sItem = "nw_wdbmqs004"; break;
  2052.                        case 7: sItem = "nw_wblmcl003"; break;
  2053.                        case 8: sItem = "nw_wbwmsl003"; break;
  2054.                        case 9: sItem = "nw_wswmsc004"; break;
  2055.                        case 10: sItem = "nw_wplmss005"; break;
  2056.                    }
  2057.  
  2058.             }
  2059.             else  // * 16000 +
  2060.             {
  2061.                   int nRandom = Random(18) + 1;
  2062.                   switch (nRandom)
  2063.                   {
  2064.                        case 1: sItem = "nw_wdbmqs003"; break;
  2065.                        case 2: sItem = "nw_wblmcl005"; break;
  2066.                        case 3: sItem = "nw_wplmss007"; break;
  2067.                        case 4: sItem = "nw_wswmdg004"; break;
  2068.                        case 5: sItem = "nw_wbwmsl007"; break;
  2069.                        case 6: sItem = "nw_wplmss006"; break;
  2070.                        case 7: sItem = "nw_wswmsc006"; break;
  2071.                        case 8: sItem = "nw_wswmdg003"; break;
  2072.                        case 9: sItem = "nw_wswmdg007"; break;
  2073.                        case 10: sItem = "nw_wswmsc007"; break;
  2074.                        case 11: sItem = "nw_wbwmsl006"; break;
  2075.                        case 12: sItem = "nw_wbwmsl008"; break;
  2076.                        case 13: sItem = "nw_wdbmqs007"; break;
  2077.                        case 14: sItem = "nw_wblmcl006"; break;
  2078.                        case 15: sItem = "nw_wbwmsl004"; break;
  2079.                        case 16: sItem = "nw_wswmsc005"; break;
  2080.                        case 17: sItem = "nw_wplmss004"; break;
  2081.                        case 18: sItem = "nw_wswmdg005"; break;
  2082.                    }
  2083.  
  2084.             }
  2085.           dbSpeak("specific druid weapon");
  2086.  
  2087.            dbCreateItemOnObject(sItem, oTarget, 1);
  2088.  
  2089.         }
  2090.  
  2091.         void CreateGenericWizardWeapon(object oTarget, object oAdventurer, int nModifier = 0)
  2092.         {
  2093.             string sItem = "";
  2094.             int nHD = GetHitDice(oAdventurer) + nModifier;
  2095.  
  2096.             if (GetRange(1, nHD))    // * 200
  2097.             {
  2098.                   int nRandom = Random(5) + 1;
  2099.                   switch (nRandom)
  2100.                   {
  2101.                        case 1: sItem = "nw_wblcl001"; break;
  2102.                        case 2: sItem = "nw_wdbqs001"; break;
  2103.                        case 3: sItem = "nw_wswdg001"; break;
  2104.                        case 4: sItem = "nw_wbwxh001"; break;
  2105.                        case 5: sItem = "nw_wbwxl001"; break;
  2106.                    }
  2107.  
  2108.             }
  2109.             else if (GetRange(2, nHD))   // * 800
  2110.             {
  2111.                   int nRandom = Random(6) + 1;
  2112.                   switch (nRandom)
  2113.                   {
  2114.                        case 1: sItem = "nw_wblcl001"; break;
  2115.                        case 2: sItem = "nw_wdbqs001"; break;
  2116.                        case 3: sItem = "nw_wswdg001"; break;
  2117.                        case 4: sItem = "nw_wbwxh001"; break;
  2118.                        case 5: sItem = "nw_wbwxl001"; break;
  2119.                        case 6: sItem = "nw_wbwmxl002"; break;
  2120.                    }
  2121.  
  2122.             }
  2123.             else if (GetRange(3, nHD))   // * 200 - 2500
  2124.             {
  2125.                   int nRandom = Random(6) + 1;
  2126.                   switch (nRandom)
  2127.                   {
  2128.                        case 1: sItem = "nw_wbwmxl002"; break;
  2129.                        case 2: sItem = "nw_wblmcl002"; break;
  2130.                        case 3: sItem = "nw_wdbmqs002"; break;
  2131.                        case 4: sItem = "nw_wswmdg002"; break;
  2132.                        case 5: sItem = "nw_wbwmxh008"; break;
  2133.                        case 6: sItem = "nw_wbwmxl008"; break;
  2134.                    }
  2135.  
  2136.             }
  2137.             else if (GetRange(4, nHD))   // * 800 - 10000
  2138.             {
  2139.                   int nRandom = Random(10) + 1;
  2140.                   switch (nRandom)
  2141.                   {
  2142.                        case 1: sItem = "nw_wblmcl002"; break;
  2143.                        case 2: sItem = "nw_wdbmqs002"; break;
  2144.                        case 3: sItem = "nw_wswmdg002"; break;
  2145.                        case 4: sItem = "nw_wbwmxh008"; break;
  2146.                        case 5: sItem = "nw_wbwmxl008"; break;
  2147.                        case 6: sItem = "nw_wbwmxh009"; break;
  2148.                        case 7: sItem = "nw_wbwmxl009"; break;
  2149.                        case 8: sItem = "nw_wblmcl010"; break;
  2150.                        case 9: sItem = "nw_wdbmqs008"; break;
  2151.                        case 10: sItem = "nw_wswmdg008"; break;
  2152.                    }
  2153.  
  2154.             }
  2155.             else  // * 2500 - 16500
  2156.             {
  2157.                   int nRandom = Random(8) + 1;
  2158.                   switch (nRandom)
  2159.                   {
  2160.                        case 1: sItem = "nw_wbwmxh009"; break;
  2161.                        case 2: sItem = "nw_wbwmxl009"; break;
  2162.                        case 3: sItem = "nw_wblmcl010"; break;
  2163.                        case 4: sItem = "nw_wdbmqs008"; break;
  2164.                        case 5: sItem = "nw_wswmdg008"; break;
  2165.                        case 6: sItem = "nw_wblmcl011"; break;
  2166.                        case 7: sItem = "nw_wdbmqs009"; break;
  2167.                        case 8: sItem = "nw_wswmdg009"; break;
  2168.                    }
  2169.  
  2170.             }
  2171.           dbSpeak("Generic Wizard or Sorcerer Weapon");
  2172.  
  2173.            dbCreateItemOnObject(sItem, oTarget, 1);
  2174.  
  2175.         }
  2176.         void CreateSpecificWizardWeapon(object oTarget, object oAdventurer, int nModifier = 0)
  2177.         {
  2178.  
  2179.             string sItem = "";
  2180.             int nHD = GetHitDice(oAdventurer) + nModifier;
  2181.  
  2182.             if (GetRange(1, nHD))    // * 800
  2183.             {
  2184.                 CreateGenericWizardWeapon(oTarget, oAdventurer, JUMP_LEVEL); return;
  2185.             }
  2186.             else if (GetRange(2, nHD))   // * 2500
  2187.             {
  2188.                 CreateGenericWizardWeapon(oTarget, oAdventurer, JUMP_LEVEL); return;
  2189.             }
  2190.             else if (GetRange(3, nHD))   // * 800 - 10000
  2191.             {
  2192.                   int nRandom = Random(5) + 1;
  2193.                   switch (nRandom)
  2194.                   {
  2195.                        case 1: sItem = "nw_wdbmqs005"; break;
  2196.                        case 2: sItem = "nw_wdbmqs006"; break;
  2197.                        case 3: sItem = "nw_wbwmxh005"; break;
  2198.                        case 4: sItem = "nw_wbwmxl005"; break;
  2199.                        case 5: sItem = "nw_wswmdg006"; break;
  2200.                    }
  2201.  
  2202.             }
  2203.             else if (GetRange(4, nHD))   // * 2500 -16500
  2204.             {
  2205.                   int nRandom = Random(10) + 1;
  2206.                   switch (nRandom)
  2207.                   {
  2208.                        case 1: sItem = "nw_wdbmqs005"; break;
  2209.                        case 2: sItem = "nw_wdbmqs006"; break;
  2210.                        case 3: sItem = "nw_wbwmxh005"; break;
  2211.                        case 4: sItem = "nw_wbwmxl005"; break;
  2212.                        case 5: sItem = "nw_wswmdg006"; break;
  2213.                        case 6: sItem = "nw_wblmcl004"; break;
  2214.                        case 7: sItem = "nw_wdbmqs004"; break;
  2215.                        case 8: sItem = "nw_wblmcl003"; break;
  2216.                        case 9: sItem = "nw_wbwmxh003"; break;
  2217.                        case 10: sItem = "nw_wbwmxl003"; break;
  2218.                    }
  2219.  
  2220.             }
  2221.             else  // * 16000 +
  2222.             {
  2223.                   int nRandom = Random(15) + 1;
  2224.                   switch (nRandom)
  2225.                   {
  2226.                        case 1: sItem = "nw_wbwmxl003"; break;
  2227.                        case 2: sItem = "nw_wdbmqs003"; break;
  2228.                        case 3: sItem = "nw_wbwmxl004"; break;
  2229.                        case 4: sItem = "nw_wbwmxl007"; break;
  2230.                        case 5: sItem = "nw_wblmcl005"; break;
  2231.                        case 6: sItem = "nw_wswmdg004"; break;
  2232.                        case 7: sItem = "nw_wbwmxh004"; break;
  2233.                        case 8: sItem = "nw_wbwmxh007"; break;
  2234.                        case 9: sItem = "nw_wswmdg003"; break;
  2235.                        case 10: sItem = "nw_wswmdg007"; break;
  2236.                        case 11: sItem = "nw_wdbmqs007"; break;
  2237.                        case 12: sItem = "nw_wblmcl006"; break;
  2238.                        case 13: sItem = "nw_wbwmxh006"; break;
  2239.                        case 14: sItem = "nw_wswmdg005"; break;
  2240.                        case 15: sItem = "nw_wbwmxl006"; break;
  2241.                    }
  2242.  
  2243.             }
  2244.           dbSpeak("Specific Wizard or Sorcerer Weapon");
  2245.  
  2246.            dbCreateItemOnObject(sItem, oTarget, 1);
  2247.  
  2248.         }
  2249.  
  2250.         void CreateGenericSimple(object oTarget, object oAdventurer, int nModifier = 0)
  2251.         {
  2252.            string sItem = "";
  2253.            int nHD = GetHitDice(oAdventurer) + nModifier;
  2254.  
  2255.             if (GetRange(1, nHD))    // * 200
  2256.             {
  2257.                 int nRandom = d12();
  2258.                 switch (nRandom)
  2259.                 {
  2260.                     case 1: sItem = "nw_wthdt001"; break;
  2261.                     case 2: sItem = "nw_wblcl001"; break;
  2262.                     case 3: sItem = "nw_wbwsl001"; break;
  2263.                     case 4: sItem = "nw_wplss001"; break;
  2264.                     case 5: sItem = "nw_wdbqs001"; break;
  2265.                     case 6: sItem = "nw_wswdg001"; break;
  2266.                     case 7: sItem = "nw_wblml001"; break;
  2267.                     case 8: sItem = "nw_wbwxh001"; break;
  2268.                     case 9: sItem = "nw_wspsc001"; break;
  2269.                     case 10: sItem = "nw_wblms001"; break;
  2270.                     case 11: sItem = "nw_wbwxl001"; break;
  2271.                     case 12: sItem = "nw_wthmdt002"; break;
  2272.                 }
  2273.  
  2274.             }
  2275.             else if (GetRange(2, nHD))   // * 800
  2276.             {
  2277.                 int nRandom = Random(17) + 1;
  2278.                 switch (nRandom)
  2279.                 {
  2280.                     case 1: sItem = "nw_wthdt001"; break;
  2281.                     case 2: sItem = "nw_wblcl001"; break;
  2282.                     case 3: sItem = "nw_wbwsl001"; break;
  2283.                     case 4: sItem = "nw_wplss001"; break;
  2284.                     case 5: sItem = "nw_wdbqs001"; break;
  2285.                     case 6: sItem = "nw_wswdg001"; break;
  2286.                     case 7: sItem = "nw_wblml001"; break;
  2287.                     case 8: sItem = "nw_wbwxh001"; break;
  2288.                     case 9: sItem = "nw_wspsc001"; break;
  2289.                     case 10: sItem = "nw_wblms001"; break;
  2290.                     case 11: sItem = "nw_wbwxl001"; break;
  2291.                     case 12: sItem = "nw_wthmdt002"; break;
  2292.                     case 13: sItem = "nw_wthmdt005"; break;
  2293.                     case 14: sItem = "nw_wbwmsl001"; break;
  2294.                     case 15: sItem = "nw_wbwmxh002"; break;
  2295.                     case 16: sItem = "nw_wthmdt008"; break;
  2296.                     case 17: sItem = "nw_wbwmxl002"; break;
  2297.                 }
  2298.             }
  2299.             else if (GetRange(3, nHD))   // * 200 - 2500
  2300.             {
  2301.                 int nRandom = Random(19) + 1;
  2302.                 switch (nRandom)
  2303.                 {
  2304.                     case 1: sItem = "nw_wthmdt005"; break;
  2305.                     case 2: sItem = "nw_wbwmsl001"; break;
  2306.                     case 3: sItem = "nw_wbwmxh002"; break;
  2307.                     case 4: sItem = "nw_wthmdt008"; break;
  2308.                     case 5: sItem = "nw_wbwmxl002"; break;
  2309.                     case 6: sItem = "nw_wthmdt009"; break;
  2310.                     case 7: sItem = "nw_wthmdt006"; break;
  2311.                     case 8: sItem = "nw_wblmcl002"; break;
  2312.                     case 9: sItem = "nw_wplmss002"; break;
  2313.                     case 10: sItem = "nw_wdbmqs002"; break;
  2314.                     case 11: sItem = "nw_wswmdg002"; break;
  2315.                     case 12: sItem = "nw_wblmml002"; break;
  2316.                     case 13: sItem = "nw_wspmsc002"; break;
  2317.                     case 14: sItem = "nw_wblmms002"; break;
  2318.                     case 15: sItem = "nw_wthmdt003"; break;
  2319.                     case 16: sItem = "nw_wthmdt003"; break;
  2320.                     case 17: sItem = "nw_wbwmsl009"; break;
  2321.                     case 18: sItem = "nw_wbwmxh008"; break;
  2322.                     case 19: sItem = "nw_wbwmxl008"; break;
  2323.                 }
  2324.             }
  2325.             else if (GetRange(4, nHD))   // * 800 - 10000
  2326.             {
  2327.                 int nRandom = Random(27) + 1;
  2328.                 switch (nRandom)
  2329.                 {
  2330.                     case 1: sItem = "nw_wthmdt009"; break;
  2331.                     case 2: sItem = "nw_wthmdt006"; break;
  2332.                     case 3: sItem = "nw_wblmcl002"; break;
  2333.                     case 4: sItem = "nw_wplmss002"; break;
  2334.                     case 5: sItem = "nw_wdbmqs002"; break;
  2335.                     case 6: sItem = "nw_wswmdg002"; break;
  2336.                     case 7: sItem = "nw_wblmml002"; break;
  2337.                     case 8: sItem = "nw_wspmsc002"; break;
  2338.                     case 9: sItem = "nw_wblmms002"; break;
  2339.                     case 10: sItem = "nw_wthmdt003"; break;
  2340.                     case 11: sItem = "nw_wthmdt003"; break;
  2341.                     case 12: sItem = "nw_wbwmsl009"; break;
  2342.                     case 13: sItem = "nw_wbwmxh008"; break;
  2343.                     case 14: sItem = "nw_wbwmxl008"; break;
  2344.                     case 15: sItem = "nw_wthmdt007"; break;
  2345.                     case 16: sItem = "nw_wthmdt004"; break;
  2346.                     case 17: sItem = "nw_wbwmsl010"; break;
  2347.                     case 18: sItem = "nw_wbwmxh009"; break;
  2348.                     case 19: sItem = "nw_wbwmxl009"; break;
  2349.                     case 20: sItem = "nw_wbwmsl005"; break;
  2350.                     case 21: sItem = "nw_wblmcl010"; break;
  2351.                     case 22: sItem = "nw_wplmss010"; break;
  2352.                     case 23: sItem = "nw_wdbmqs008"; break;
  2353.                     case 24: sItem = "nw_wswmdg008"; break;
  2354.                     case 25: sItem = "nw_wblmml011"; break;
  2355.                     case 26: sItem = "nw_wspmsc010"; break;
  2356.                     case 27: sItem = "nw_wblmms010"; break;
  2357.  
  2358.  
  2359.  
  2360.                 }
  2361.  
  2362.             }
  2363.             else if (GetRange(5, nHD))   // * 2500 - 16500
  2364.             {
  2365.                 int nRandom = Random(23) + 1;
  2366.                 switch (nRandom)
  2367.                 {
  2368.                     case 1: sItem = "nw_wthmdt007"; break;
  2369.                     case 2: sItem = "nw_wthmdt004"; break;
  2370.                     case 3: sItem = "nw_wbwmsl010"; break;
  2371.                     case 4: sItem = "nw_wbwmxh009"; break;
  2372.                     case 5: sItem = "nw_wbwmxl009"; break;
  2373.                     case 6: sItem = "nw_wbwmsl005"; break;
  2374.                     case 7: sItem = "nw_wblmcl010"; break;
  2375.                     case 8: sItem = "nw_wplmss010"; break;
  2376.                     case 9: sItem = "nw_wdbmqs008"; break;
  2377.                     case 10: sItem = "nw_wswmdg008"; break;
  2378.                     case 11: sItem = "nw_wblmml011"; break;
  2379.                     case 12: sItem = "nw_wspmsc010"; break;
  2380.                     case 13: sItem = "nw_wblmms010"; break;
  2381.                     case 14: sItem = "nw_wblmms010"; break;
  2382.                     case 15: sItem = "nw_wblmms010"; break;
  2383.                     case 16: sItem = "nw_wblmms010"; break;
  2384.                     case 17: sItem = "nw_wblmcl011"; break;
  2385.                     case 18: sItem = "nw_wplmss011"; break;
  2386.                     case 19: sItem = "nw_wdbmqs009"; break;
  2387.                     case 20: sItem = "nw_wswmdg009"; break;
  2388.                     case 21: sItem = "nw_wblmml012"; break;
  2389.                     case 22: sItem = "nw_wspmsc011"; break;
  2390.                     case 23: sItem = "nw_wblmms011"; break;
  2391.  
  2392.  
  2393.  
  2394.                 }
  2395.             }
  2396.             else if (GetRange(6, nHD))   // * 8000 - 25000
  2397.             {
  2398.                 int nRandom = Random(7) + 1;
  2399.                 switch (nRandom)
  2400.                 {
  2401.                     case 1: sItem = "nw_wblmcl011"; break;
  2402.                     case 2: sItem = "nw_wplmss011"; break;
  2403.                     case 3: sItem = "nw_wdbmqs009"; break;
  2404.                     case 4: sItem = "nw_wswmdg009"; break;
  2405.                     case 5: sItem = "nw_wblmml012"; break;
  2406.                     case 6: sItem = "nw_wspmsc011"; break;
  2407.                     case 7: sItem = "nw_wblmms011"; break;
  2408.  
  2409.  
  2410.  
  2411.                 }
  2412.             }
  2413.             dbSpeak("Create Generic SImple; Specific = " + IntToString(nModifier));
  2414.  
  2415.             dbCreateItemOnObject(sItem, oTarget, 1);
  2416.         }
  2417.         void CreateGenericMartial(object oTarget, object oAdventurer, int nModifier = 0)
  2418.         {
  2419.            string sItem = "";
  2420.  
  2421.             int nHD = GetHitDice(oAdventurer) +nModifier;
  2422.  
  2423.             if (GetRange(1, nHD))    // * 200
  2424.             {
  2425.                 int nRandom = Random(17) + 1;
  2426.                 switch (nRandom)
  2427.                 {
  2428.                     case 1: sItem = "nw_wthax001"; break;
  2429.                     case 2: sItem = "nw_wblhl001"; break;
  2430.                     case 3: sItem = "nw_waxhn001"; break;
  2431.                     case 4: sItem = "nw_wblfl001"; break;
  2432.                     case 5: sItem = "nw_waxbt001"; break;
  2433.                     case 6: sItem = "nw_wplhb001"; break;
  2434.                     case 7: sItem = "nw_wswss001"; break;
  2435.                     case 8: sItem = "nw_wblhw001"; break;
  2436.                     case 9: sItem = "nw_wblfh001"; break;
  2437.                     case 10: sItem = "nw_wswls001"; break;
  2438.                     case 11: sItem = "nw_wswsc001"; break;
  2439.                     case 12: sItem = "nw_waxgr001"; break;
  2440.                     case 13: sItem = "nw_wswrp001"; break;
  2441.                     case 14: sItem = "nw_wbwsh001"; break;
  2442.                     case 15: sItem = "nw_wswbs001"; break;
  2443.                     case 16: sItem = "nw_wswgs001"; break;
  2444.                     case 17: sItem = "nw_wbwln001"; break;
  2445.                 }
  2446.  
  2447.             }
  2448.             else if (GetRange(2, nHD))   // * 800
  2449.             {
  2450.                 int nRandom = Random(20) + 1;
  2451.                 switch (nRandom)
  2452.                 {
  2453.                     case 1: sItem = "nw_wthax001"; break;
  2454.                     case 2: sItem = "nw_wblhl001"; break;
  2455.                     case 3: sItem = "nw_waxhn001"; break;
  2456.                     case 4: sItem = "nw_wblfl001"; break;
  2457.                     case 5: sItem = "nw_waxbt001"; break;
  2458.                     case 6: sItem = "nw_wplhb001"; break;
  2459.                     case 7: sItem = "nw_wswss001"; break;
  2460.                     case 8: sItem = "nw_wblhw001"; break;
  2461.                     case 9: sItem = "nw_wblfh001"; break;
  2462.                     case 10: sItem = "nw_wswls001"; break;
  2463.                     case 11: sItem = "nw_wswsc001"; break;
  2464.                     case 12: sItem = "nw_waxgr001"; break;
  2465.                     case 13: sItem = "nw_wswrp001"; break;
  2466.                     case 14: sItem = "nw_wbwsh001"; break;
  2467.                     case 15: sItem = "nw_wswbs001"; break;
  2468.                     case 16: sItem = "nw_wswgs001"; break;
  2469.                     case 17: sItem = "nw_wbwln001"; break;
  2470.                     case 18: sItem = "nw_wthmax002"; break;
  2471.                     case 19: sItem = "nw_wbwmsh002"; break;
  2472.                     case 20: sItem = "nw_wbwmln002"; break;
  2473.                 }
  2474.  
  2475.             }
  2476.             else if (GetRange(3, nHD))   // * 200 - 2500
  2477.             {
  2478.                 int nRandom = Random(20) + 1;
  2479.                 switch (nRandom)
  2480.                 {
  2481.                          case 1: sItem = "nw_wthmax002"; break;
  2482.                          case 2: sItem = "nw_wbwmsh002"; break;
  2483.                          case 3: sItem = "nw_wbwmln002"; break;
  2484.                          case 4: sItem = "nw_wblmhl002"; break;
  2485.                          case 5: sItem = "nw_waxmhn002"; break;
  2486.                          case 6: sItem = "nw_wblmfl002"; break;
  2487.                          case 7: sItem = "nw_waxmbt002"; break;
  2488.                          case 8: sItem = "nw_wplmhb002"; break;
  2489.                          case 9: sItem = "nw_wblmhw002"; break;
  2490.                          case 10: sItem = "nw_wblmfh002"; break;
  2491.                          case 11: sItem = "nw_wswmls002"; break;
  2492.                          case 12: sItem = "nw_wswmsc002"; break;
  2493.                          case 13: sItem = "nw_waxmgr002"; break;
  2494.                          case 14: sItem = "nw_wswmrp002"; break;
  2495.                          case 15: sItem = "nw_wswmbs002"; break;
  2496.                          case 16: sItem = "nw_wswmgs002"; break;
  2497.                          case 17: sItem = "nw_wthmax008"; break;
  2498.                          case 18: sItem = "nw_wbwmsh008"; break;
  2499.                          case 19: sItem = "nw_wbwmln008"; break;
  2500.                          case 20: sItem = "nw_wswmss002"; break;
  2501.  
  2502.                  }
  2503.  
  2504.             }
  2505.             else if (GetRange(4, nHD))   // * 800 - 10000
  2506.             {
  2507.                 int nRandom = Random(33) + 1;
  2508.                 switch (nRandom)
  2509.                 {
  2510.                      case 1: sItem = "nw_wblmhl002"; break;
  2511.                      case 2: sItem = "nw_waxmhn002"; break;
  2512.                      case 3: sItem = "nw_wblmfl002"; break;
  2513.                      case 4: sItem = "nw_waxmbt002"; break;
  2514.                      case 5: sItem = "nw_wplmhb002"; break;
  2515.                      case 6: sItem = "nw_wblmhw002"; break;
  2516.                      case 7: sItem = "nw_wblmfh002"; break;
  2517.                      case 8: sItem = "nw_wswmls002"; break;
  2518.                      case 9: sItem = "nw_wswmsc002"; break;
  2519.                      case 10: sItem = "nw_waxmgr002"; break;
  2520.                      case 11: sItem = "nw_wswmrp002"; break;
  2521.                      case 12: sItem = "nw_wswmbs002"; break;
  2522.                      case 13: sItem = "nw_wswmgs002"; break;
  2523.                      case 14: sItem = "nw_wthmax008"; break;
  2524.                      case 15: sItem = "nw_wbwmsh008"; break;
  2525.                      case 16: sItem = "nw_wbwmln008"; break;
  2526.                      case 17: sItem = "nw_wbwmsh009"; break;
  2527.                      case 18: sItem = "nw_wbwmln009"; break;
  2528.                      case 19: sItem = "nw_wblmhl010"; break;
  2529.                      case 20: sItem = "nw_waxmhn010"; break;
  2530.                      case 21: sItem = "nw_wblmfl010"; break;
  2531.                      case 22: sItem = "nw_waxmbt010"; break;
  2532.                      case 23: sItem = "nw_wplmhb010"; break;
  2533.                      case 24: sItem = "nw_wblmhw011"; break;
  2534.                      case 25: sItem = "nw_wblmfh010"; break;
  2535.                      case 26: sItem = "nw_wswmls010"; break;
  2536.                      case 27: sItem = "nw_waxmgr009"; break;
  2537.                      case 28: sItem = "nw_wswmbs009"; break;
  2538.                      case 29: sItem = "nw_wswmgs011"; break;
  2539.                      case 30: sItem = "nw_wswmrp010"; break;
  2540.                     case 31: sItem = "nw_wswmsc010"; break;
  2541.                     case 32: sItem = "nw_wswmss002"; break;
  2542.                     case 33: sItem = "nw_wswmss009"; break;
  2543.                  }
  2544.  
  2545.             }
  2546.             else if (GetRange(5, nHD))   // * 2500 - 16500
  2547.             {
  2548.                   int nRandom = Random(20) + 1;
  2549.                   switch (nRandom)
  2550.                   {
  2551.                        case 1: sItem = "nw_wbwmsh009"; break;
  2552.                        case 2: sItem = "nw_wbwmln009"; break;
  2553.                        case 3: sItem = "nw_wblmhl010"; break;
  2554.                        case 4: sItem = "nw_waxmhn010"; break;
  2555.                        case 5: sItem = "nw_wblmfl010"; break;
  2556.                        case 6: sItem = "nw_waxmbt010"; break;
  2557.                        case 7: sItem = "nw_wplmhb010"; break;
  2558.                        case 8: sItem = "nw_wblmhw011"; break;
  2559.                        case 9: sItem = "nw_wblmfh010"; break;
  2560.                        case 10: sItem = "nw_wswmls010"; break;
  2561.                        case 11: sItem = "nw_waxmgr009"; break;
  2562.                        case 12: sItem = "nw_wswmbs009"; break;
  2563.                        case 13: sItem = "nw_wswmgs011"; break;
  2564.                        case 14: sItem = "nw_wthmax009"; break;
  2565.                         case 15: sItem = "nw_wswmrp010"; break;
  2566.                         case 16: sItem = "nw_wswmrp011"; break;
  2567.                         case 17: sItem = "nw_wswmsc010"; break;
  2568.                         case 18: sItem = "nw_wswmss009"; break;
  2569.                         case 19: sItem = "nw_wswmsc011"; break;
  2570.                         case 20: sItem = "nw_wswmss011"; break;
  2571.                    }
  2572.  
  2573.             }
  2574.             else if (GetRange(6, nHD))   // * 8000 - 25000
  2575.             {
  2576.                   int nRandom = Random(14) + 1;
  2577.                   switch (nRandom)
  2578.                   {
  2579.                        case 1: sItem = "nw_wthmax009"; break;
  2580.                        case 2: sItem = "nw_waxmhn011"; break;
  2581.                        case 3: sItem = "nw_wblmfl011"; break;
  2582.                        case 4: sItem = "nw_waxmbt011"; break;
  2583.                        case 5: sItem = "nw_wplmhb011"; break;
  2584.                        case 6: sItem = "nw_wblmhw012"; break;
  2585.                        case 7: sItem = "nw_wblmfh011"; break;
  2586.                        case 8: sItem = "nw_wswmls012"; break;
  2587.                        case 9: sItem = "nw_waxmgr011"; break;
  2588.                        case 10: sItem = "nw_wswmbs010"; break;
  2589.                        case 11: sItem = "nw_wswmgs012"; break;
  2590.                         case 12: sItem = "nw_wswmrp011"; break;
  2591.                         case 13: sItem = "nw_wswmsc011"; break;
  2592.                         case 14: sItem = "nw_wswmss011"; break;
  2593.                    }
  2594.  
  2595.             }
  2596.  
  2597.             dbSpeak("Create Generic Martial");
  2598.  
  2599.            dbCreateItemOnObject(sItem, oTarget, 1);
  2600.         }
  2601.         void CreateGenericExotic(object oTarget, object oAdventurer, int nModifier = 0)
  2602.         {
  2603.             string sItem = "";
  2604.  
  2605.             int nHD = GetHitDice(oAdventurer) + nModifier;
  2606.  
  2607.             if (GetRange(1, nHD))    // * 200
  2608.             {
  2609.                   int nRandom = Random(9) + 1;
  2610.                   switch (nRandom)
  2611.                   {
  2612.                        case 1: sItem = "nw_wthsh001"; break;
  2613.                        case 2: sItem = "nw_wspka001"; break;
  2614.                        case 3: sItem = "nw_wspku001"; break;
  2615.                        case 4: sItem = "nw_wplsc001"; break;
  2616.                        case 5: sItem = "nw_wdbax001"; break;
  2617.                        case 6: sItem = "nw_wdbma001"; break;
  2618.                        case 7: sItem = "nw_wswka001"; break;
  2619.                        case 8: sItem = "nw_wthmsh002"; break;
  2620.                        case 9: sItem = "nw_wdbsw001"; break;
  2621.                    }
  2622.  
  2623.             }
  2624.             else if (GetRange(2, nHD))   // * 800
  2625.             {
  2626.                   int nRandom = Random(17) + 1;
  2627.                   switch (nRandom)
  2628.                   {
  2629.                        case 1: sItem = "nw_wthsh001"; break;
  2630.                        case 2: sItem = "nw_wspka001"; break;
  2631.                        case 3: sItem = "nw_wspku001"; break;
  2632.                        case 4: sItem = "nw_wplsc001"; break;
  2633.                        case 5: sItem = "nw_wdbax001"; break;
  2634.                        case 6: sItem = "nw_wdbma001"; break;
  2635.                        case 7: sItem = "nw_wswka001"; break;
  2636.                        case 8: sItem = "nw_wthmsh002"; break;
  2637.                        case 9: sItem = "nw_wdbsw001"; break;
  2638.                        case 10: sItem = "nw_wthmsh005"; break;
  2639.                        case 11: sItem = "nw_wspmka002"; break;
  2640.                        case 12: sItem = "nw_wspmku002"; break;
  2641.                        case 13: sItem = "nw_wplmsc002"; break;
  2642.                        case 14: sItem = "nw_wdbmax002"; break;
  2643.                        case 15: sItem = "nw_wdbmma002"; break;
  2644.                        case 16: sItem = "nw_wswmka002"; break;
  2645.                        case 17: sItem = "nw_wdbmsw002"; break;
  2646.                    }
  2647.  
  2648.             }
  2649.             else if (GetRange(3, nHD))   // * 200 - 2500
  2650.             {
  2651.                   int nRandom = Random(9) + 1;
  2652.                   switch (nRandom)
  2653.                   {
  2654.                        case 1: sItem = "nw_wdbsw001"; break;
  2655.                        case 2: sItem = "nw_wthmsh005"; break;
  2656.                        case 3: sItem = "nw_wspmka002"; break;
  2657.                        case 4: sItem = "nw_wspmku002"; break;
  2658.                        case 5: sItem = "nw_wplmsc002"; break;
  2659.                        case 6: sItem = "nw_wdbmax002"; break;
  2660.                        case 7: sItem = "nw_wdbmma002"; break;
  2661.                        case 8: sItem = "nw_wswmka002"; break;
  2662.                        case 9: sItem = "nw_wdbmsw002"; break;
  2663.                    }
  2664.  
  2665.             }
  2666.             else if (GetRange(4, nHD))   // * 800 - 10000
  2667.             {
  2668.                   int nRandom = Random(17) + 1;
  2669.                   switch (nRandom)
  2670.                   {
  2671.                        case 1: sItem = "nw_wthmsh005"; break;
  2672.                        case 2: sItem = "nw_wspmka002"; break;
  2673.                        case 3: sItem = "nw_wspmku002"; break;
  2674.                        case 4: sItem = "nw_wplmsc002"; break;
  2675.                        case 5: sItem = "nw_wdbmax002"; break;
  2676.                        case 6: sItem = "nw_wdbmma002"; break;
  2677.                        case 7: sItem = "nw_wswmka002"; break;
  2678.                        case 8: sItem = "nw_wdbmsw002"; break;
  2679.                        case 9: sItem = "nw_wthmsh008"; break;
  2680.                        case 10: sItem = "nw_wspmka008"; break;
  2681.                        case 11: sItem = "nw_wspmku008"; break;
  2682.                        case 12: sItem = "nw_wplmsc010"; break;
  2683.                        case 13: sItem = "nw_wdbmax010"; break;
  2684.                        case 14: sItem = "nw_wdbmma010"; break;
  2685.                        case 15: sItem = "nw_wswmka010"; break;
  2686.                        case 16: sItem = "nw_wdbmsw010"; break;
  2687.                        case 17: sItem = "nw_wthmsh009"; break;
  2688.                    }
  2689.  
  2690.             }
  2691.             else if (GetRange(5, nHD))   // * 2500 - 16500
  2692.             {
  2693.                   int nRandom = Random(13) + 1;
  2694.                   switch (nRandom)
  2695.                   {
  2696.                        case 1: sItem = "nw_wspmka008"; break;
  2697.                        case 2: sItem = "nw_wspmku008"; break;
  2698.                        case 3: sItem = "nw_wplmsc010"; break;
  2699.                        case 4: sItem = "nw_wdbmax010"; break;
  2700.                        case 5: sItem = "nw_wdbmma010"; break;
  2701.                        case 6: sItem = "nw_wswmka010"; break;
  2702.                        case 7: sItem = "nw_wdbmsw010"; break;
  2703.                        case 8: sItem = "nw_wthmsh009"; break;
  2704.                        case 9: sItem = "nw_wspmka009"; break;
  2705.                        case 10: sItem = "nw_wspmku009"; break;
  2706.                        case 11: sItem = "nw_wplmsc011"; break;
  2707.                        case 12: sItem = "nw_wdbmax011"; break;
  2708.                        case 13: sItem = "nw_wdbmma011"; break;
  2709.                    }
  2710.  
  2711.             }
  2712.             else if (GetRange(6, nHD))   // * 8000 - 25000
  2713.             {
  2714.             int nRandom = Random(9) + 1;
  2715.                   switch (nRandom)
  2716.                   {
  2717.                        case 1: sItem = "nw_wdbmsw010"; break;
  2718.                        case 2: sItem = "nw_wthmsh009"; break;
  2719.                        case 3: sItem = "nw_wspmka009"; break;
  2720.                        case 4: sItem = "nw_wspmku009"; break;
  2721.                        case 5: sItem = "nw_wplmsc011"; break;
  2722.                        case 6: sItem = "nw_wdbmax011"; break;
  2723.                        case 7: sItem = "nw_wdbmma011"; break;
  2724.                        case 8: sItem = "nw_wswmka011"; break;
  2725.                        case 9: sItem = "nw_wdbmsw011"; break;
  2726.                    }
  2727.  
  2728.             }
  2729.                   dbSpeak("Create generic exotic");
  2730.  
  2731.            dbCreateItemOnObject(sItem, oTarget, 1);
  2732.         }
  2733.         void CreateGenericLightArmor(object oTarget, object oAdventurer, int nModifier = 0)
  2734.         {
  2735.             string sItem = "";
  2736.  
  2737.             int nHD = GetHitDice(oAdventurer) + nModifier;
  2738.  
  2739.             if (GetRange(1, nHD))    // * 200
  2740.             {
  2741.                   int nRandom = Random(5) + 1;
  2742.                   switch (nRandom)
  2743.                   {
  2744.                        case 1: sItem = "nw_aarcl009"; break;
  2745.                        case 2: sItem = "nw_ashsw001"; break;
  2746.                        case 3: sItem = "nw_aarcl001"; break;
  2747.                        case 4: sItem = "nw_aarcl002"; break;
  2748.                        case 5: sItem = "nw_aarcl012"; break;
  2749.                    }
  2750.  
  2751.             }
  2752.             else if (GetRange(2, nHD))   // * 800
  2753.             {
  2754.                   int nRandom = Random(9) + 1;
  2755.                   switch (nRandom)
  2756.                   {
  2757.                        case 1: sItem = "nw_aarcl009"; break;
  2758.                        case 2: sItem = "nw_ashsw001"; break;
  2759.                        case 3: sItem = "nw_aarcl001"; break;
  2760.                        case 4: sItem = "nw_aarcl002"; break;
  2761.                        case 5: sItem = "nw_aarcl012"; break;
  2762.                        case 6: sItem = "nw_maarcl043"; break;
  2763.                        case 7: sItem = "nw_ashmsw002"; break;
  2764.                        case 8: sItem = "nw_maarcl044"; break;
  2765.                        case 9: sItem = "nw_maarcl045"; break;
  2766.                    }
  2767.  
  2768.             }
  2769.             else if (GetRange(3, nHD))   // * 200 - 2500
  2770.             {
  2771.                   int nRandom = Random(8) + 1;
  2772.                   switch (nRandom)
  2773.                   {
  2774.                        case 1: sItem = "nw_maarcl043"; break;
  2775.                        case 2: sItem = "nw_ashmsw002"; break;
  2776.                        case 3: sItem = "nw_maarcl044"; break;
  2777.                        case 4: sItem = "nw_maarcl045"; break;
  2778.                        case 5: sItem = "nw_maarcl072"; break;
  2779.                        case 6: sItem = "nw_ashmsw008"; break;
  2780.                        case 7: sItem = "nw_maarcl071"; break;
  2781.                        case 8: sItem = "nw_maarcl075"; break;
  2782.                    }
  2783.  
  2784.             }
  2785.             else if (GetRange(4, nHD))   // * 800 - 10000
  2786.             {
  2787.                   int nRandom = Random(9) + 1;
  2788.                   switch (nRandom)
  2789.                   {
  2790.                        case 1: sItem = "nw_maarcl072"; break;
  2791.                        case 2: sItem = "nw_ashmsw008"; break;
  2792.                        case 3: sItem = "nw_maarcl071"; break;
  2793.                        case 4: sItem = "nw_maarcl075"; break;
  2794.                        case 5: sItem = "nw_maarcl084"; break;
  2795.                        case 6: sItem = "nw_ashmsw009"; break;
  2796.                        case 7: sItem = "nw_maarcl083"; break;
  2797.                        case 8: sItem = "nw_maarcl087"; break;
  2798.                        case 9: sItem = "nw_maarcl079"; break;
  2799.                    }
  2800.  
  2801.             }
  2802.             else if (GetRange(5, nHD))   // * 2500 - 16500
  2803.             {
  2804.                   int nRandom = Random(5) + 1;
  2805.                   switch (nRandom)
  2806.                   {
  2807.                        case 1: sItem = "nw_maarcl084"; break;
  2808.                        case 2: sItem = "nw_ashmsw009"; break;
  2809.                        case 3: sItem = "nw_maarcl083"; break;
  2810.                        case 4: sItem = "nw_maarcl087"; break;
  2811.                        case 5: sItem = "nw_maarcl079"; break;
  2812.                    }
  2813.  
  2814.             }
  2815.             else if (GetRange(6, nHD))   // * 8000 - 25000
  2816.             {
  2817.                   int nRandom = Random(5) + 1;
  2818.                   switch (nRandom)
  2819.                   {
  2820.                        case 1: sItem = "nw_maarcl084"; break;
  2821.                        case 2: sItem = "nw_ashmsw009"; break;
  2822.                        case 3: sItem = "nw_maarcl083"; break;
  2823.                        case 4: sItem = "nw_maarcl087"; break;
  2824.                        case 5: sItem = "nw_maarcl079"; break;
  2825.                    }
  2826.  
  2827.             }
  2828.                   dbSpeak("Create Generic light");
  2829.  
  2830.            dbCreateItemOnObject(sItem, oTarget, 1);
  2831.         }
  2832.         void CreateGenericMediumArmor(object oTarget, object oAdventurer, int nModifier = 0)
  2833.         {
  2834.             int nHD = GetHitDice(oAdventurer) + nModifier;
  2835.             string sItem = "";
  2836.             if (GetRange(1, nHD))    // * 200
  2837.             {
  2838.                  int nRandom = Random(10) + 1;
  2839.                   switch (nRandom)
  2840.                   {
  2841.                        case 1: sItem = "nw_arhe001"; break;
  2842.                        case 2: sItem = "nw_arhe002"; break;
  2843.                        case 3: sItem = "nw_arhe003"; break;
  2844.                        case 4: sItem = "nw_arhe004"; break;
  2845.                        case 5: sItem = "nw_arhe005"; break;
  2846.                        case 6: sItem = "nw_aarcl008"; break;
  2847.                        case 7: sItem = "nw_ashlw001"; break;
  2848.                        case 8: sItem = "nw_aarcl003"; break;
  2849.                        case 9: sItem = "nw_aarcl004"; break;
  2850.                        case 10: sItem = "nw_aarcl010"; break;
  2851.                    }
  2852.             }
  2853.             else if (GetRange(2, nHD))   // * 800
  2854.             {
  2855.                   int nRandom = Random(17) + 1;
  2856.                   switch (nRandom)
  2857.                   {
  2858.                        case 1: sItem = "nw_arhe001"; break;
  2859.                        case 2: sItem = "nw_arhe002"; break;
  2860.                        case 3: sItem = "nw_arhe003"; break;
  2861.                        case 4: sItem = "nw_arhe004"; break;
  2862.                        case 5: sItem = "nw_arhe005"; break;
  2863.                        case 6: sItem = "nw_aarcl008"; break;
  2864.                        case 7: sItem = "nw_ashlw001"; break;
  2865.                        case 8: sItem = "nw_aarcl003"; break;
  2866.                        case 9: sItem = "nw_aarcl004"; break;
  2867.                        case 10: sItem = "nw_aarcl010"; break;
  2868.                        case 11: sItem = "nw_maarcl047"; break;
  2869.                        case 12: sItem = "nw_ashmlw002"; break;
  2870.                        case 13: sItem = "nw_maarcl046"; break;
  2871.                        case 14: sItem = "nw_maarcl048"; break;
  2872.                        case 15: sItem = "nw_maarcl035"; break;
  2873.                        case 16: sItem = "nw_maarcl049"; break;
  2874.                        case 17: sItem = "nw_maarcl050"; break;
  2875.                    }
  2876.  
  2877.             }
  2878.             else if (GetRange(3, nHD))   // * 200 - 2500
  2879.             {
  2880.                   int nRandom = Random(9) + 1;
  2881.                   switch (nRandom)
  2882.                   {
  2883.                        case 1: sItem = "nw_maarcl047"; break;
  2884.                        case 2: sItem = "nw_ashmlw002"; break;
  2885.                        case 3: sItem = "nw_maarcl046"; break;
  2886.                        case 4: sItem = "nw_maarcl048"; break;
  2887.                        case 5: sItem = "nw_maarcl035"; break;
  2888.                        case 6: sItem = "nw_maarcl049"; break;
  2889.                        case 7: sItem = "nw_maarcl050"; break;
  2890.                        case 8: sItem = "nw_maarcl070"; break;
  2891.                        case 9: sItem = "nw_ashmlw008"; break;
  2892.                    }
  2893.  
  2894.             }
  2895.             else if (GetRange(4, nHD))   // * 800 - 10000
  2896.             {
  2897.                    int nRandom = Random(14) + 1;
  2898.                   switch (nRandom)
  2899.                   {
  2900.                        case 1: sItem = "nw_maarcl035"; break;
  2901.                        case 2: sItem = "nw_maarcl049"; break;
  2902.                        case 3: sItem = "nw_maarcl050"; break;
  2903.                        case 4: sItem = "nw_maarcl070"; break;
  2904.                        case 5: sItem = "nw_ashmlw008"; break;
  2905.                        case 6: sItem = "nw_maarcl067"; break;
  2906.                        case 7: sItem = "nw_maarcl073"; break;
  2907.                        case 8: sItem = "nw_maarcl065"; break;
  2908.                        case 9: sItem = "nw_maarcl066"; break;
  2909.                        case 10: sItem = "nw_maarcl082"; break;
  2910.                        case 11: sItem = "nw_ashmlw009"; break;
  2911.                        case 12: sItem = "nw_maarcl085"; break;
  2912.                        case 13: sItem = "nw_maarcl077"; break;
  2913.                        case 14: sItem = "nw_maarcl078"; break;
  2914.                    }
  2915.  
  2916.             }
  2917.             else if (GetRange(5, nHD))   // * 2500 - 16500
  2918.             {
  2919.                   int nRandom = Random(11) + 1;
  2920.                   switch (nRandom)
  2921.                   {
  2922.                        case 1: sItem = "nw_maarcl070"; break;
  2923.                        case 2: sItem = "nw_ashmlw008"; break;
  2924.                        case 3: sItem = "nw_maarcl067"; break;
  2925.                        case 4: sItem = "nw_maarcl073"; break;
  2926.                        case 5: sItem = "nw_maarcl065"; break;
  2927.                        case 6: sItem = "nw_maarcl066"; break;
  2928.                        case 7: sItem = "nw_maarcl082"; break;
  2929.                        case 8: sItem = "nw_ashmlw009"; break;
  2930.                        case 9: sItem = "nw_maarcl085"; break;
  2931.                        case 10: sItem = "nw_maarcl077"; break;
  2932.                        case 11: sItem = "nw_maarcl078"; break;
  2933.                    }
  2934.  
  2935.             }
  2936.             else if (GetRange(6, nHD))   // * 8000 - 25000
  2937.             {
  2938.                   int nRandom = Random(11) + 1;
  2939.                   switch (nRandom)
  2940.                   {
  2941.                        case 1: sItem = "nw_maarcl070"; break;
  2942.                        case 2: sItem = "nw_ashmlw008"; break;
  2943.                        case 3: sItem = "nw_maarcl067"; break;
  2944.                        case 4: sItem = "nw_maarcl073"; break;
  2945.                        case 5: sItem = "nw_maarcl065"; break;
  2946.                        case 6: sItem = "nw_maarcl066"; break;
  2947.                        case 7: sItem = "nw_maarcl082"; break;
  2948.                        case 8: sItem = "nw_ashmlw009"; break;
  2949.                        case 9: sItem = "nw_maarcl085"; break;
  2950.                        case 10: sItem = "nw_maarcl077"; break;
  2951.                        case 11: sItem = "nw_maarcl078"; break;
  2952.                    }
  2953.  
  2954.             }
  2955.                   dbSpeak("Create Generic medium");
  2956.  
  2957.            dbCreateItemOnObject(sItem, oTarget, 1);
  2958.         }
  2959.         void CreateGenericHeavyArmor(object oTarget, object oAdventurer, int nModifier = 0)
  2960.         {
  2961.             string sItem = "";
  2962.             int nHD = GetHitDice(oAdventurer) + nModifier;
  2963.  
  2964.             if (GetRange(1, nHD))    // * 200
  2965.             {
  2966.                   int nRandom = Random(3) + 1;
  2967.                   switch (nRandom)
  2968.                   {
  2969.                        case 1: sItem = "nw_ashto001"; break;
  2970.                        case 2: sItem = "nw_aarcl005"; break;
  2971.                        case 3: sItem = "nw_aarcl011"; break;
  2972.                    }
  2973.  
  2974.             }
  2975.             else if (GetRange(2, nHD))   // * 800
  2976.             {
  2977.                   int nRandom = Random(6) + 1;
  2978.                   switch (nRandom)
  2979.                   {
  2980.                        case 1: sItem = "nw_ashto001"; break;
  2981.                        case 2: sItem = "nw_aarcl005"; break;
  2982.                        case 3: sItem = "nw_aarcl011"; break;
  2983.                        case 4: sItem = "nw_aarcl006"; break;
  2984.                        case 5: sItem = "nw_ashmto002"; break;
  2985.                        case 6: sItem = "nw_maarcl051"; break;
  2986.                    }
  2987.  
  2988.             }
  2989.             else if (GetRange(3, nHD))   // * 200 - 2500
  2990.             {
  2991.                   int nRandom = Random(9) + 1;
  2992.                   switch (nRandom)
  2993.                   {
  2994.                        case 1: sItem = "nw_aarcl005"; break;
  2995.                        case 2: sItem = "nw_aarcl011"; break;
  2996.                        case 3: sItem = "nw_aarcl006"; break;
  2997.                        case 4: sItem = "nw_ashmto002"; break;
  2998.                        case 5: sItem = "nw_maarcl051"; break;
  2999.                        case 6: sItem = "nw_maarcl052"; break;
  3000.                        case 7: sItem = "nw_aarcl007"; break;
  3001.                        case 8: sItem = "nw_maarcl053"; break;
  3002.                        case 9: sItem = "nw_ashmto008"; break;
  3003.                    }
  3004.  
  3005.             }
  3006.             else if (GetRange(4, nHD))   // * 800 - 10000
  3007.             {
  3008.                   int nRandom = Random(15) + 1;
  3009.                   switch (nRandom)
  3010.                   {
  3011.                        case 1: sItem = "nw_maarcl051"; break;
  3012.                        case 2: sItem = "nw_maarcl052"; break;
  3013.                        case 3: sItem = "nw_aarcl007"; break;
  3014.                        case 4: sItem = "nw_maarcl053"; break;
  3015.                        case 5: sItem = "nw_ashmto008"; break;
  3016.                        case 6: sItem = "nw_maarcl064"; break;
  3017.                        case 7: sItem = "nw_maarcl074"; break;
  3018.                        case 8: sItem = "nw_maarcl069"; break;
  3019.                        case 9: sItem = "nw_maarcl068"; break;
  3020.                        case 10: sItem = "nw_ashmto003"; break;
  3021.                        case 11: sItem = "nw_ashmto009"; break;
  3022.                        case 12: sItem = "nw_maarcl076"; break;
  3023.                        case 13: sItem = "nw_maarcl086"; break;
  3024.                        case 14: sItem = "nw_maarcl081"; break;
  3025.                        case 15: sItem = "nw_maarcl080"; break;
  3026.                    }
  3027.  
  3028.             }
  3029.             else if (GetRange(5, nHD))   // * 2500 - 16500
  3030.             {
  3031.                   int nRandom = Random(10) + 1;
  3032.                   switch (nRandom)
  3033.                   {
  3034.                        case 1: sItem = "nw_ashmto008"; break;
  3035.                        case 2: sItem = "nw_maarcl064"; break;
  3036.                        case 3: sItem = "nw_maarcl074"; break;
  3037.                        case 4: sItem = "nw_maarcl069"; break;
  3038.                        case 5: sItem = "nw_maarcl068"; break;
  3039.                        case 6: sItem = "nw_ashmto009"; break;
  3040.                        case 7: sItem = "nw_maarcl076"; break;
  3041.                        case 8: sItem = "nw_maarcl086"; break;
  3042.                        case 9: sItem = "nw_maarcl081"; break;
  3043.                        case 10: sItem = "nw_maarcl080"; break;
  3044.                    }
  3045.  
  3046.  
  3047.             }
  3048.             else if (GetRange(6, nHD))   // * 8000 - 25000
  3049.             {
  3050.                   int nRandom = Random(5) + 1;
  3051.                   switch (nRandom)
  3052.                   {
  3053.                        case 1: sItem = "nw_ashmto009"; break;
  3054.                        case 2: sItem = "nw_maarcl076"; break;
  3055.                        case 3: sItem = "nw_maarcl086"; break;
  3056.                        case 4: sItem = "nw_maarcl081"; break;
  3057.                        case 5: sItem = "nw_maarcl080"; break;
  3058.                    }
  3059.  
  3060.             }
  3061.                   dbSpeak("Create Generic heavy");
  3062.  
  3063.            dbCreateItemOnObject(sItem, oTarget, 1);
  3064.         }
  3065.         // *
  3066.         // * SPECIC TREASURE ITEMS (re: Named Items)
  3067.         // *
  3068.         void CreateSpecificMiscItem(object oTarget,object oAdventurer)
  3069.         {
  3070.             string sItem = "";
  3071.             int nHD = GetHitDice(oAdventurer);
  3072.  
  3073.             if (GetRange(1, nHD))    // * 800
  3074.             {
  3075.                 CreateGenericMiscItem(oTarget, oAdventurer, JUMP_LEVEL);
  3076.                 return;
  3077.             }
  3078.             else if (GetRange(2, nHD))   // * 200 - 2500
  3079.             {
  3080.                   int nRandom = Random(3) + 1;
  3081.                   switch (nRandom)
  3082.                   {
  3083.                        case 1: CreateGenericMiscItem(oTarget, oAdventurer, JUMP_LEVEL); return; break;
  3084.                        case 2: sItem = "nw_maarcl057"; break;
  3085.                        case 3: sItem = "nw_it_mbelt005"; break;
  3086.                    }
  3087.  
  3088.             }
  3089.             else if (GetRange(3, nHD))   // * 800 - 10000
  3090.             {
  3091.                   int nRandom = Random(13) + 1;
  3092.                   switch (nRandom)
  3093.                   {
  3094.                        case 1: sItem = "nw_maarcl057"; break;
  3095.                        case 2: sItem = "nw_it_mbelt005"; break;
  3096.                        case 3: sItem = "nw_maarcl101"; break;
  3097.                        case 4: sItem = "nw_maarcl102"; break;
  3098.                        case 5: sItem = "nw_maarcl103"; break;
  3099.                        case 6: sItem = "nw_it_mglove001"; break;
  3100.                        case 7: sItem = "nw_maarcl100"; break;
  3101.                        case 8: sItem = "nw_it_mbracer011"; break;
  3102.                        case 9: sItem = "nw_it_mmidmisc04"; break;
  3103.                        case 10: sItem = "nw_it_mring003"; break;
  3104.                        case 11: sItem = "nw_it_mbelt006"; break;
  3105.                        case 12: sItem = "nw_it_mbelt002"; break;
  3106.                        case 13: sItem = "nw_it_mmidmisc03"; break;
  3107.                    }
  3108.  
  3109.             }
  3110.             else if (GetRange(4, nHD))   // * 2500 - 16500
  3111.             {
  3112.                   int nRandom = Random(19) + 1;
  3113.                   switch (nRandom)
  3114.                   {
  3115.                        case 1: sItem = "nw_maarcl101"; break;
  3116.                        case 2: sItem = "nw_maarcl101"; break;
  3117.                        case 3: sItem = "nw_maarcl102"; break;
  3118.                        case 4: sItem = "nw_maarcl103"; break;
  3119.                        case 5: sItem = "nw_it_mglove001"; break;
  3120.                        case 6: sItem = "nw_maarcl100"; break;
  3121.                        case 7: sItem = "nw_it_mbracer011"; break;
  3122.                        case 8: sItem = "nw_it_mmidmisc04"; break;
  3123.                        case 9: sItem = "nw_it_mring003"; break;
  3124.                        case 10: sItem = "nw_it_mbelt006"; break;
  3125.                        case 11: sItem = "nw_it_mbelt002"; break;
  3126.                        case 12: sItem = "nw_it_mmidmisc03"; break;
  3127.                        case 13: sItem = "nw_it_mring002"; break;
  3128.                        case 14: sItem = "nw_it_mbelt004"; break;
  3129.                        case 15: sItem = "nw_it_mring005"; break;
  3130.                        case 16: sItem = "nw_it_mboots005"; break;
  3131.                        case 17: sItem = "nw_it_mring007"; break;
  3132.                        case 18: sItem = "nw_it_mneck003"; break;
  3133.                        case 19: sItem = "nw_it_mbelt007"; break;
  3134.                    }
  3135.  
  3136.             }
  3137.             else if (GetRange(5, nHD))   // * 8000 - 25000
  3138.             {
  3139.                   int nRandom = Random(15) + 1;
  3140.                   switch (nRandom)
  3141.                   {
  3142.                        case 1: sItem = "nw_it_mbelt002"; break;
  3143.                        case 2: sItem = "nw_it_mbelt002"; break;
  3144.                        case 3: sItem = "nw_it_mmidmisc03"; break;
  3145.                        case 4: sItem = "nw_it_mring002"; break;
  3146.                        case 5: sItem = "nw_it_mbelt004"; break;
  3147.                        case 6: sItem = "nw_it_mring005"; break;
  3148.                        case 7: sItem = "nw_it_mboots005"; break;
  3149.                        case 8: sItem = "nw_it_mring007"; break;
  3150.                        case 9: sItem = "nw_it_mneck003"; break;
  3151.                        case 10: sItem = "nw_it_mbelt007"; break;
  3152.                        case 11: sItem = "nw_it_mboots004"; break;
  3153.                        case 12: sItem = "nw_it_mboots003"; break;
  3154.                        case 13: sItem = "nw_it_mneck005"; break;
  3155.                        case 14: sItem = "nw_it_mbelt008"; break;
  3156.                        case 15: sItem = "nw_it_mring020"; break;
  3157.                    }
  3158.  
  3159.             }
  3160.             else if (GetRange(6, nHD))   // * 16000 and up
  3161.             {
  3162.                   int nRandom = Random(19) + 1;
  3163.                   switch (nRandom)
  3164.                   {
  3165.                        case 1: sItem = "nw_it_mboots004"; break;
  3166.                        case 2: sItem = "nw_it_mboots004"; break;
  3167.                        case 3: sItem = "nw_it_mboots003"; break;
  3168.                        case 4: sItem = "nw_it_mneck005"; break;
  3169.                        case 5: sItem = "nw_it_mbelt008"; break;
  3170.                        case 6: sItem = "nw_it_mring020"; break;
  3171.                        case 7: sItem = "nw_it_mbelt001"; break;
  3172.                        case 8: sItem = "nw_it_mring017"; break;
  3173.                        case 9: sItem = "nw_mcloth001"; break;
  3174.                        case 10: sItem = "nw_it_mneck019"; break;
  3175.                        case 11: sItem = "nw_it_mneck002"; break;
  3176.                        case 12: sItem = "nw_it_mneck004"; break;
  3177.                        case 13: sItem = "nw_it_mmidmisc01"; break;
  3178.                        case 14: sItem = "nw_mcloth002"; break;
  3179.                        case 15: sItem = "nw_mcloth003"; break;
  3180.                        case 16: sItem = "nw_mcloth004"; break;
  3181.                        case 17: sItem = "nw_it_mbelt003"; break;
  3182.                        // * new items
  3183.                        case 18: sItem = "NW_IT_MBELT020"; break;
  3184.                        case 19: sItem = "NW_IT_MBELT021"; break;
  3185.                    }
  3186.  
  3187.             }
  3188.                 dbCreateItemOnObject(sItem, oTarget, 1);
  3189.         }
  3190.         void CreateSpecificRodStaffWand(object oTarget, object oAdventurer)
  3191.         {
  3192.             string sItem = "";
  3193.             int nHD = GetHitDice(oAdventurer);
  3194.  
  3195.             if (GetRange(1, nHD))    // * 800
  3196.             {
  3197.                 CreateGenericRodStaffWand(oTarget, oAdventurer, JUMP_LEVEL);
  3198.                 return;
  3199.             }
  3200.             else if (GetRange(2, nHD))   // * 200 - 2500
  3201.             {
  3202.                 CreateGenericRodStaffWand(oTarget, oAdventurer, JUMP_LEVEL);
  3203.                 return;
  3204.             }
  3205.             else if (GetRange(3, nHD))   // * 800 - 10000
  3206.             {
  3207.                   int nRandom = Random(4) + 1;
  3208.                   switch (nRandom)
  3209.                   {
  3210.                        case 1: sItem = "nw_wmgst004"; break;
  3211.                        case 2: sItem = "nw_wmgst006"; break;
  3212.                        case 3: sItem = "nw_wmgmrd003"; break;
  3213.                        case 4: sItem = "nw_wmgst004"; break;
  3214.                    }
  3215.  
  3216.             }
  3217.             else if (GetRange(4, nHD))   // * 2500 - 16500
  3218.             {
  3219.                   int nRandom = Random(7) + 1;
  3220.                   switch (nRandom)
  3221.                   {
  3222.                        case 1: sItem = "nw_wmgmrd003"; break;
  3223.                        case 2: sItem = "nw_wmgst006"; break;
  3224.                        case 3: sItem = "nw_wmgmrd003"; break;
  3225.                        case 4: sItem = "nw_wmgst004"; break;
  3226.                        case 5: sItem = "nw_wmgst005"; break;
  3227.                        case 6: sItem = "nw_wmgmrd004"; break;
  3228.                        case 7: sItem = "nw_wmgrd002"; break;
  3229.                    }
  3230.  
  3231.             }
  3232.             else if (GetRange(5, nHD))   // * 8000 - 25000
  3233.             {
  3234.                   int nRandom = Random(8) + 1;
  3235.                   switch (nRandom)
  3236.                   {
  3237.                        case 1: sItem = "nw_wblmcl012"; break;
  3238.                        case 2: sItem = "nw_wmgmrd003"; break;
  3239.                        case 3: sItem = "nw_wmgst004"; break;
  3240.                        case 4: sItem = "nw_wmgst005"; break;
  3241.                        case 5: sItem = "nw_wblmcl012"; break;
  3242.                        case 6: sItem = "nw_wmgmrd004"; break;
  3243.                        case 7: sItem = "nw_wmgst002"; break;
  3244.                        case 8: sItem = "nw_wmgmrd005"; break;
  3245.                    }
  3246.  
  3247.             }
  3248.             else if (GetRange(6, nHD))   // * 16000 and up
  3249.             {
  3250.                   int nRandom = Random(6) + 1;
  3251.                   switch (nRandom)
  3252.                   {
  3253.                        case 1: sItem = "nw_wmgmrd004"; break;
  3254.                        case 2: sItem = "nw_wmgst002"; break;
  3255.                        case 3: sItem = "nw_wmgmrd005"; break;
  3256.                        case 4: sItem = "nw_wmgmrd002"; break;
  3257.                        case 5: sItem = "nw_wmgst003"; break;
  3258.                        case 6: sItem = "nw_wblmcl012"; break;
  3259.                    }
  3260.  
  3261.             }
  3262.                 dbCreateItemOnObject(sItem, oTarget, 1);
  3263.         }
  3264.         
  3265.         
  3266.         void CreateSpecificSimple(object oTarget, object oAdventurer)
  3267.         {
  3268.            string sItem = "";
  3269.             int nHD = GetHitDice(oAdventurer);
  3270.  
  3271.             if (GetRange(1, nHD))    // * 800
  3272.             {
  3273.                 CreateGenericSimple(oTarget, oAdventurer, JUMP_LEVEL);
  3274.                 return;
  3275.             }
  3276.             else if (GetRange(2, nHD))   // * 200 - 2500
  3277.             {
  3278.                 CreateGenericSimple(oTarget, oAdventurer, JUMP_LEVEL);
  3279.                 return;
  3280.             }
  3281.             else if (GetRange(3, nHD))   // * 800 - 10000
  3282.             {
  3283.                   int nRandom = Random(9) + 1;
  3284.                   switch (nRandom)
  3285.                   {
  3286.                        case 1: sItem = "nw_wdbmqs005"; break;
  3287.                        case 2: sItem = "nw_wdbmqs005"; break;
  3288.                        case 3: sItem = "nw_wdbmqs006"; break;
  3289.                        case 4: sItem = "nw_wbwmxh005"; break;
  3290.                        case 5: sItem = "nw_wbwmxl005"; break;
  3291.                        case 6: sItem = "nw_wswmdg006"; break;
  3292.                        case 7: sItem = "nw_wblmml006"; break;
  3293.                        case 8: sItem = "nw_wspmsc004"; break;
  3294.                        case 9: sItem = "nw_wblmms007"; break;
  3295.                    }
  3296.  
  3297.             }
  3298.             else if (GetRange(4, nHD))   // * 2500 - 16500
  3299.             {
  3300.                   int nRandom = Random(22) + 1;
  3301.                   switch (nRandom)
  3302.                   {
  3303.                        case 1: sItem = "nw_wdbmqs006"; break;
  3304.                        case 2: sItem = "nw_wdbmqs005"; break;
  3305.                        case 3: sItem = "nw_wdbmqs006"; break;
  3306.                        case 4: sItem = "nw_wbwmxh005"; break;
  3307.                        case 5: sItem = "nw_wbwmxl005"; break;
  3308.                        case 6: sItem = "nw_wswmdg006"; break;
  3309.                        case 7: sItem = "nw_wblmml006"; break;
  3310.                        case 8: sItem = "nw_wspmsc004"; break;
  3311.                        case 9: sItem = "nw_wblmms007"; break;
  3312.                        case 10: sItem = "nw_wblmms003"; break;
  3313.                        case 11: sItem = "nw_wblmcl004"; break;
  3314.                        case 12: sItem = "nw_wspmsc006"; break;
  3315.                        case 13: sItem = "nw_wspmsc006"; break;
  3316.                        case 14: sItem = "nw_wdbmqs004"; break;
  3317.                        case 15: sItem = "nw_wblmcl003"; break;
  3318.                        case 16: sItem = "nw_wbwmsl003"; break;
  3319.                        case 17: sItem = "nw_wbwmxh003"; break;
  3320.                        case 18: sItem = "nw_wspmsc003"; break;
  3321.                        case 19: sItem = "nw_wplmss005"; break;
  3322.                        case 20: sItem = "nw_wplmss005"; break;
  3323.                        case 21: sItem = "nw_wbwmxl003"; break;
  3324.                        case 22: sItem = "nw_wblmml004"; break;
  3325.                    }
  3326.  
  3327.             }
  3328.             else if (GetRange(5, nHD))   // * 8000 - 25000
  3329.             {
  3330.                   int nRandom = Random(27) + 1;
  3331.                   switch (nRandom)
  3332.                   {
  3333.                        case 1: sItem = "nw_wblmms003"; break;
  3334.                        case 2: sItem = "nw_wblmms003"; break;
  3335.                        case 3: sItem = "nw_wblmcl004"; break;
  3336.                        case 4: sItem = "nw_wspmsc006"; break;
  3337.                        case 5: sItem = "nw_wspmsc006"; break;
  3338.                        case 6: sItem = "nw_wdbmqs004"; break;
  3339.                        case 7: sItem = "nw_wblmcl003"; break;
  3340.                        case 8: sItem = "nw_wbwmsl003"; break;
  3341.                        case 9: sItem = "nw_wbwmxh003"; break;
  3342.                        case 10: sItem = "nw_wspmsc003"; break;
  3343.                        case 11: sItem = "nw_wplmss005"; break;
  3344.                        case 12: sItem = "nw_wplmss005"; break;
  3345.                        case 13: sItem = "nw_wbwmxl003"; break;
  3346.                        case 14: sItem = "nw_wblmml004"; break;
  3347.                        case 15: sItem = "nw_wdbmqs003"; break;
  3348.                        case 16: sItem = "nw_wbwmxl004"; break;
  3349.                        case 17: sItem = "nw_wbwmxl007"; break;
  3350.                        case 18: sItem = "nw_wblmml005"; break;
  3351.                        case 19: sItem = "nw_wblmcl005"; break;
  3352.                        case 20: sItem = "nw_wplmss007"; break;
  3353.                        case 21: sItem = "nw_wswmdg004"; break;
  3354.                        case 22: sItem = "nw_wbwmsl007"; break;
  3355.                        case 23: sItem = "nw_wblmml007"; break;
  3356.                        case 24: sItem = "nw_wblmml007"; break;
  3357.                        case 25: sItem = "nw_wbwmxh004"; break;
  3358.                        case 26: sItem = "nw_wplmss006"; break;
  3359.                        case 27: sItem = "nw_wbwmxh007"; break;
  3360.                    }
  3361.  
  3362.             }
  3363.             else if (GetRange(6, nHD))   // * 16000 and up
  3364.             {
  3365.                   int nRandom = Random(31) + 1;
  3366.                   switch (nRandom)
  3367.                   {
  3368.                        case 1: sItem = "nw_wbwmxl003"; break;
  3369.                        case 2: sItem = "nw_wbwmxl003"; break;
  3370.                        case 3: sItem = "nw_wblmml004"; break;
  3371.                        case 4: sItem = "nw_wdbmqs003"; break;
  3372.                        case 5: sItem = "nw_wbwmxl004"; break;
  3373.                        case 6: sItem = "nw_wbwmxl007"; break;
  3374.                        case 7: sItem = "nw_wblmml005"; break;
  3375.                        case 8: sItem = "nw_wblmcl005"; break;
  3376.                        case 9: sItem = "nw_wplmss007"; break;
  3377.                        case 10: sItem = "nw_wswmdg004"; break;
  3378.                        case 11: sItem = "nw_wbwmsl007"; break;
  3379.                        case 12: sItem = "nw_wblmml007"; break;
  3380.                        case 13: sItem = "nw_wblmml007"; break;
  3381.                        case 14: sItem = "nw_wbwmxh004"; break;
  3382.                        case 15: sItem = "nw_wplmss006"; break;
  3383.                        case 16: sItem = "nw_wbwmxh007"; break;
  3384.                        case 17: sItem = "nw_wblmms006"; break;
  3385.                        case 18: sItem = "nw_wswmdg003"; break;
  3386.                        case 19: sItem = "nw_wswmdg007"; break;
  3387.                        case 20: sItem = "nw_wblmms004"; break;
  3388.                        case 21: sItem = "nw_wbwmsl006"; break;
  3389.                        case 22: sItem = "nw_wbwmsl008"; break;
  3390.                        case 23: sItem = "nw_wblmml008"; break;
  3391.                        case 24: sItem = "nw_wdbmqs007"; break;
  3392.                        case 25: sItem = "nw_wblmcl006"; break;
  3393.                        case 26: sItem = "nw_wbwmsl004"; break;
  3394.                        case 27: sItem = "nw_wbwmxh006"; break;
  3395.                        case 28: sItem = "nw_wplmss004"; break;
  3396.                        case 29: sItem = "nw_wswmdg005"; break;
  3397.                        case 30: sItem = "nw_wbwmxl006"; break;
  3398.                        case 31: sItem = "nw_wspmsc005"; break;
  3399.  
  3400.                    }
  3401.  
  3402.             }
  3403.                 dbCreateItemOnObject(sItem, oTarget, 1);
  3404.         }
  3405.         void CreateSpecificMartial(object oTarget, object oAdventurer)
  3406.         {
  3407.             string sItem = "";
  3408.             int nHD = GetHitDice(oAdventurer);
  3409.  
  3410.             if (GetRange(1, nHD))    // * 800
  3411.             {
  3412.                 CreateGenericMartial(oTarget, oAdventurer, JUMP_LEVEL);
  3413.                 return;
  3414.             }
  3415.             else if (GetRange(2, nHD))   // * 200 - 2500
  3416.             {
  3417.                   int nRandom = Random(3) + 1;
  3418.                   switch (nRandom)
  3419.                   {
  3420.                        case 1: CreateGenericMartial(oTarget, oAdventurer, JUMP_LEVEL); return; break;
  3421.                        case 2: sItem = "nw_wthmax005"; break;
  3422.                        case 3: sItem = "nw_wthmax007"; break;
  3423.                    }
  3424.  
  3425.             }
  3426.             else if (GetRange(3, nHD))   // * 800 - 10000
  3427.             {
  3428.                   int nRandom = Random(14) + 1;
  3429.                   switch (nRandom)
  3430.                   {
  3431.                        case 1: sItem = "nw_wthmax003"; break;
  3432.                        case 2: sItem = "nw_wthmax005"; break;
  3433.                        case 3: sItem = "nw_wthmax007"; break;
  3434.                        case 4: sItem = "nw_wthmax003"; break;
  3435.                        case 5: sItem = "nw_wthmax004"; break;
  3436.                        case 6: sItem = "nw_wthmax006"; break;
  3437.                        case 7: sItem = "nw_wswmrp004"; break;
  3438.                        case 8: sItem = "nw_wswmrp004"; break;
  3439.                        case 9: sItem = "nw_wblmfl004"; break;
  3440.                        case 10: sItem = "nw_wblmhl004"; break;
  3441.                        case 11: sItem = "nw_wbwmsh003"; break;
  3442.                        case 12: sItem = "nw_wblmhw006"; break;
  3443.                        case 13: sItem = "nw_wblmhw006"; break;
  3444.                        case 14: sItem = "nw_wbwmln004"; break;
  3445.                    }
  3446.  
  3447.             }
  3448.             else if (GetRange(4, nHD))   // * 2500 - 16500
  3449.             {
  3450.                   int nRandom = Random(28) + 1;
  3451.                   switch (nRandom)
  3452.                   {
  3453.                        case 1: sItem = "nw_wblmfl005"; break;
  3454.                        case 2: sItem = "nw_wthmax007"; break;
  3455.                        case 3: sItem = "nw_wthmax003"; break;
  3456.                        case 4: sItem = "nw_wthmax004"; break;
  3457.                        case 5: sItem = "nw_wthmax006"; break;
  3458.                        case 6: sItem = "nw_wswmrp004"; break;
  3459.                        case 7: sItem = "nw_wswmrp004"; break;
  3460.                        case 8: sItem = "nw_wblmfl004"; break;
  3461.                        case 9: sItem = "nw_wblmhl004"; break;
  3462.                        case 10: sItem = "nw_wbwmsh003"; break;
  3463.                        case 11: sItem = "nw_wblmhw006"; break;
  3464.                        case 12: sItem = "nw_wblmhw006"; break;
  3465.                        case 13: sItem = "nw_wbwmln004"; break;
  3466.                        case 14: sItem = "nw_wblmfl005"; break;
  3467.                        case 15: sItem = "nw_wswmgs006"; break;
  3468.                        case 16: sItem = "nw_waxmgr003"; break;
  3469.                        case 17: sItem = "nw_wplmhb004"; break;
  3470.                        case 18: sItem = "nw_wblmhw005"; break;
  3471.                        case 19: sItem = "nw_wblmfh004"; break;
  3472.                        case 20: sItem = "nw_wblmfh008"; break;
  3473.                        case 21: sItem = "nw_wbwmsh006"; break;
  3474.                        case 22: sItem = "nw_wswmsc004"; break;
  3475.                        case 23: sItem = "nw_waxmgr006"; break;
  3476.                        case 24: sItem = "nw_wswmrp005"; break;
  3477.                        case 25: sItem = "nw_wswmls007"; break;
  3478.                        case 26: sItem = "nw_wswmgs004"; break;
  3479.                        case 27: sItem = "nw_waxmhn004"; break;
  3480.                        case 28: sItem = "nw_wswmbs005"; break;
  3481.                    }
  3482.  
  3483.             }
  3484.             else if (GetRange(5, nHD))   // * 8000 - 25000
  3485.             {
  3486.                   int nRandom = Random(42) + 1;
  3487.                   switch (nRandom)
  3488.                   {
  3489.                        case 1: sItem = "nw_wblmhw006"; break;
  3490.                        case 2: sItem = "nw_wblmhw006"; break;
  3491.                        case 3: sItem = "nw_wblmhw006"; break;
  3492.                        case 4: sItem = "nw_wbwmln004"; break;
  3493.                        case 5: sItem = "nw_wblmfl005"; break;
  3494.                        case 6: sItem = "nw_wswmgs006"; break;
  3495.                        case 7: sItem = "nw_waxmgr003"; break;
  3496.                        case 8: sItem = "nw_wplmhb004"; break;
  3497.                        case 9: sItem = "nw_wblmhw005"; break;
  3498.                        case 10: sItem = "nw_wblmfh004"; break;
  3499.                        case 11: sItem = "nw_wblmfh008"; break;
  3500.                        case 12: sItem = "nw_wbwmsh006"; break;
  3501.                        case 13: sItem = "nw_wswmsc004"; break;
  3502.                        case 14: sItem = "nw_waxmgr006"; break;
  3503.                        case 15: sItem = "nw_wswmrp005"; break;
  3504.                        case 16: sItem = "nw_wswmls007"; break;
  3505.                        case 17: sItem = "nw_wswmgs004"; break;
  3506.                        case 18: sItem = "nw_waxmhn004"; break;
  3507.                        case 19: sItem = "nw_wswmbs005"; break;
  3508.                        case 20: sItem = "nw_wblmhl005"; break;
  3509.                        case 21: sItem = "nw_wblmhl011"; break;
  3510.                        case 22: sItem = "nw_wswmss005"; break;
  3511.                        case 23: sItem = "nw_wplmhb003"; break;
  3512.                        case 24: sItem = "nw_wbwmln007"; break;
  3513.                        case 25: sItem = "nw_wbwmln007"; break;
  3514.                        case 26: sItem = "nw_wbwmsh007"; break;
  3515.                        case 27: sItem = "nw_waxmbt006"; break;
  3516.                        case 28: sItem = "nw_wswmbs006"; break;
  3517.                        case 29: sItem = "nw_wblmfl007"; break;
  3518.                        case 30: sItem = "nw_waxmhn003"; break;
  3519.                        case 31: sItem = "nw_wblmhl006"; break;
  3520.                        case 32: sItem = "nw_wblmfl006"; break;
  3521.                        case 33: sItem = "nw_wswmls005"; break;
  3522.                        case 34: sItem = "nw_wswmss004"; break;
  3523.                        case 35: sItem = "nw_wbwmln006"; break;
  3524.                        case 36: sItem = "nw_wblmhw003"; break;
  3525.                        case 37: sItem = "nw_wblmfh006"; break;
  3526.                        case 38: sItem = "nw_wswmsc006"; break;
  3527.                        case 39: sItem = "nw_waxmhn005"; break;
  3528.                        case 40: sItem = "nw_wblmfh003"; break;
  3529.                        case 41: sItem = "nw_wswmls006"; break;
  3530.                        case 42: sItem = "nw_wswmrp007"; break;
  3531.                    }
  3532.  
  3533.             }
  3534.             else if (GetRange(6, nHD))   // * 16000 and up
  3535.             {
  3536.                   int nRandom = Random(55) + 1;
  3537.                   switch (nRandom)
  3538.                   {
  3539.                        case 1: sItem = "nw_wblmhl005"; break;
  3540.                        case 2: sItem = "nw_wblmhl005"; break;
  3541.                        case 3: sItem = "nw_wblmhl011"; break;
  3542.                        case 4: sItem = "nw_wswmss005"; break;
  3543.                        case 5: sItem = "nw_wplmhb003"; break;
  3544.                        case 6: sItem = "nw_wbwmln007"; break;
  3545.                        case 7: sItem = "nw_wbwmln007"; break;
  3546.                        case 8: sItem = "nw_wbwmsh007"; break;
  3547.                        case 9: sItem = "nw_waxmbt006"; break;
  3548.                        case 10: sItem = "nw_wswmbs006"; break;
  3549.                        case 11: sItem = "nw_wblmfl007"; break;
  3550.                        case 12: sItem = "nw_waxmhn003"; break;
  3551.                        case 13: sItem = "nw_wblmhl006"; break;
  3552.                        case 14: sItem = "nw_wblmfl006"; break;
  3553.                        case 15: sItem = "nw_wswmls005"; break;
  3554.                        case 16: sItem = "nw_wswmss004"; break;
  3555.                        case 17: sItem = "nw_wbwmln006"; break;
  3556.                        case 18: sItem = "nw_wblmhw003"; break;
  3557.                        case 19: sItem = "nw_wblmfh006"; break;
  3558.                        case 20: sItem = "nw_wswmsc006"; break;
  3559.                        case 21: sItem = "nw_waxmhn005"; break;
  3560.                        case 22: sItem = "nw_wblmfh003"; break;
  3561.                        case 23: sItem = "nw_wswmls006"; break;
  3562.                        case 24: sItem = "nw_wswmrp007"; break;
  3563.                        case 25: sItem = "nw_wswmgs005"; break;
  3564.                        case 26: sItem = "nw_wswmgs005"; break;
  3565.                        case 27: sItem = "nw_waxmgr005"; break;
  3566.                        case 28: sItem = "nw_wplmhb007"; break;
  3567.                        case 29: sItem = "nw_wswmsc007"; break;
  3568.                        case 30: sItem = "nw_wswmrp006"; break;
  3569.                        case 31: sItem = "nw_wswmss006"; break;
  3570.                        case 32: sItem = "nw_wblmhl009"; break;
  3571.                        case 33: sItem = "nw_wswmbs007"; break;
  3572.                        case 34: sItem = "nw_wbwmln005"; break;
  3573.                        case 35: sItem = "nw_wblmfh005"; break;
  3574.                        case 36: sItem = "nw_wswmgs003"; break;
  3575.                        case 37: sItem = "nw_waxmbt003"; break;
  3576.                        case 38: sItem = "nw_wswmls004"; break;
  3577.                        case 39: sItem = "nw_wbwmsh005"; break;
  3578.                        case 40: sItem = "nw_wbwmsh005"; break;
  3579.                        case 41: sItem = "nw_waxmbt004"; break;
  3580.                        case 42: sItem = "nw_waxmbt004"; break;
  3581.                        case 43: sItem = "nw_wblmhl003"; break;
  3582.                        case 44: sItem = "nw_wblmhl003"; break;
  3583.                        case 45: sItem = "nw_wswmbs003"; break;
  3584.                        case 46: sItem = "nw_waxmbt005"; break;
  3585.                        case 47: sItem = "nw_waxmhn006"; break;
  3586.                        case 48: sItem = "nw_wswmss003"; break;
  3587.                        case 49: sItem = "nw_wswmsc005"; break;
  3588.                        case 50: sItem = "nw_wplmhb006"; break;
  3589.                        case 51: sItem = "nw_wbwmsh004"; break;
  3590.                        case 52: sItem = "nw_wswmbs004"; break;
  3591.                        case 53: sItem = "nw_wbwmln003"; break;
  3592.                        case 54: sItem = "nw_wblmhw004"; break;
  3593.                        case 55: sItem = "nw_waxmgr004"; break;
  3594.                    }
  3595.  
  3596.             }
  3597.                 dbCreateItemOnObject(sItem, oTarget, 1);
  3598.         }
  3599.         void CreateSpecificExotic(object oTarget, object oAdventurer)
  3600.         {
  3601.             string sItem = "";
  3602.             int nHD = GetHitDice(oAdventurer);
  3603.  
  3604.             if (GetRange(1, nHD))    // * 800
  3605.             {
  3606.                   int nRandom = Random(3) + 1;
  3607.                   switch (nRandom)
  3608.                   {
  3609.                        case 1: CreateGenericExotic(oTarget, oAdventurer, JUMP_LEVEL); return; break;
  3610.                        case 2: sItem = "nw_wthmsh003"; break;
  3611.                        case 3: sItem = "nw_wthmsh006"; break;
  3612.                    }
  3613.  
  3614.             }
  3615.             else if (GetRange(2, nHD))   // * 200 - 2500
  3616.             {
  3617.                   int nRandom = Random(5) + 1;
  3618.                   switch (nRandom)
  3619.                   {
  3620.                        case 1: CreateGenericExotic(oTarget, oAdventurer, JUMP_LEVEL); return; break;
  3621.                        case 2: sItem = "nw_wthmsh003"; break;
  3622.                        case 3: sItem = "nw_wthmsh006"; break;
  3623.                        case 4: sItem = "nw_wthmsh004"; break;
  3624.                        case 5: sItem = "nw_wthmsh007"; break;
  3625.                    }
  3626.  
  3627.             }
  3628.             else if (GetRange(3, nHD))   // * 800 - 10000
  3629.             {
  3630.                   int nRandom = Random(14) + 1;
  3631.                   switch (nRandom)
  3632.                   {
  3633.                        case 1: sItem = "nw_wthmsh006"; break;
  3634.                        case 2: sItem = "nw_wthmsh006"; break;
  3635.                        case 3: sItem = "nw_wthmsh004"; break;
  3636.                        case 4: sItem = "nw_wthmsh007"; break;
  3637.                        case 5: sItem = "nw_wspmku006"; break;
  3638.                        case 6: sItem = "nw_wdbmma003"; break;
  3639.                        case 7: sItem = "nw_wswmka005"; break;
  3640.                        case 8: sItem = "nw_wspmka004"; break;
  3641.                        case 9: sItem = "nw_wspmka007"; break;
  3642.                        case 10: sItem = "nw_wdbmax006"; break;
  3643.                        case 11: sItem = "nw_wdbmsw006"; break;
  3644.                        case 12: sItem = "nw_wspmku005"; break;
  3645.                        case 13: sItem = "nw_wdbmsw007"; break;
  3646.                        case 14: sItem = "nw_wspmka005"; break;
  3647.                    }
  3648.  
  3649.             }
  3650.             else if (GetRange(4, nHD))   // * 2500 - 16500
  3651.             {
  3652.                   int nRandom = Random(16) + 1;
  3653.                   switch (nRandom)
  3654.                   {
  3655.                        case 1:sItem = "nw_wthmsh007"; break;
  3656.                        case 2: sItem = "nw_wthmsh007"; break;
  3657.                        case 3: sItem = "nw_wspmku006"; break;
  3658.                        case 4: sItem = "nw_wdbmma003"; break;
  3659.                        case 5: sItem = "nw_wswmka005"; break;
  3660.                        case 6: sItem = "nw_wspmka004"; break;
  3661.                        case 7: sItem = "nw_wspmka007"; break;
  3662.                        case 8: sItem = "nw_wdbmax006"; break;
  3663.                        case 9: sItem = "nw_wdbmsw006"; break;
  3664.                        case 10: sItem = "nw_wspmku005"; break;
  3665.                        case 11: sItem = "nw_wdbmsw007"; break;
  3666.                        case 12: sItem = "nw_wspmka005"; break;
  3667.                        case 13: sItem = "nw_wplmsc003"; break;
  3668.                        case 14: sItem = "nw_wdbmax005"; break;
  3669.                        case 15: sItem = "nw_wspmku004"; break;
  3670.                        case 16: sItem = "nw_wdbmma005"; break;
  3671.                    }
  3672.  
  3673.             }
  3674.             else if (GetRange(5, nHD))   // * 8000 - 25000
  3675.             {
  3676.                   int nRandom = Random(17) + 1;
  3677.                   switch (nRandom)
  3678.                   {
  3679.                        case 1: sItem = "nw_wplmsc003"; break;
  3680.                        case 2: sItem = "nw_wspmka005"; break;
  3681.                        case 3: sItem = "nw_wplmsc003"; break;
  3682.                        case 4: sItem = "nw_wdbmax005"; break;
  3683.                        case 5: sItem = "nw_wspmku004"; break;
  3684.                        case 6: sItem = "nw_wdbmma005"; break;
  3685.                        case 7: sItem = "nw_wdbmma005"; break;
  3686.                        case 8: sItem = "nw_wdbmax004"; break;
  3687.                        case 9: sItem = "nw_wdbmma004"; break;
  3688.                        case 10: sItem = "nw_wswmka007"; break;
  3689.                        case 11: sItem = "nw_wdbmsw005"; break;
  3690.                        case 12: sItem = "nw_wspmka006"; break;
  3691.                        case 13: sItem = "nw_wspmka003"; break;
  3692.                        case 14: sItem = "nw_wdbmax007"; break;
  3693.                        case 15: sItem = "nw_wplmsc006"; break;
  3694.                        case 16: sItem = "nw_wspmku007"; break;
  3695.                        case 17: sItem = "nw_wdbmma006"; break;
  3696.                    }
  3697.  
  3698.             }
  3699.             else if (GetRange(6, nHD))   // * 16000 and up
  3700.             {
  3701.                   int nRandom = Random(21) + 1;
  3702.                   switch (nRandom)
  3703.                   {
  3704.                        case 1: sItem = "nw_wdbmma005"; break;
  3705.                        case 2: sItem = "nw_wdbmma005"; break;
  3706.                        case 3: sItem = "nw_wdbmma005"; break;
  3707.                        case 4: sItem = "nw_wdbmax004"; break;
  3708.                        case 5: sItem = "nw_wdbmma004"; break;
  3709.                        case 6: sItem = "nw_wswmka007"; break;
  3710.                        case 7: sItem = "nw_wdbmsw005"; break;
  3711.                        case 8: sItem = "nw_wspmka006"; break;
  3712.                        case 9: sItem = "nw_wspmka003"; break;
  3713.                        case 10: sItem = "nw_wdbmax007"; break;
  3714.                        case 11: sItem = "nw_wplmsc006"; break;
  3715.                        case 12: sItem = "nw_wspmku007"; break;
  3716.                        case 13: sItem = "nw_wdbmma006"; break;
  3717.                        case 14: sItem = "nw_wspmku003"; break;
  3718.                        case 15: sItem = "nw_wswmka006"; break;
  3719.                        case 16: sItem = "nw_wplmsc005"; break;
  3720.                        case 17: sItem = "nw_wplmsc005"; break;
  3721.                        case 18: sItem = "nw_wswmka004"; break;
  3722.                        case 19: sItem = "nw_wswmka004"; break;
  3723.                        case 20: sItem = "nw_wdbmsw004"; break;
  3724.                        case 21: sItem = "nw_wplmsc004"; break;
  3725.                    }
  3726.  
  3727.             }
  3728.                 dbCreateItemOnObject(sItem, oTarget, 1);
  3729.         }
  3730.         void CreateSpecificLightArmor(object oTarget, object oAdventurer)
  3731.         {
  3732.             string sItem = "";
  3733.             int nHD = GetHitDice(oAdventurer);
  3734.  
  3735.             if (GetRange(1, nHD))    // * 800
  3736.             {
  3737.                 CreateGenericLightArmor(oTarget, oAdventurer, JUMP_LEVEL);
  3738.                 return;
  3739.             }
  3740.             else if (GetRange(2, nHD))   // * 200 - 2500
  3741.             {
  3742.                   int nRandom = Random(3) + 1;
  3743.                   switch (nRandom)
  3744.                   {
  3745.                        case 1: CreateGenericLightArmor(oTarget, oAdventurer, JUMP_LEVEL); return; break;
  3746.                        case 2: sItem = "nw_ashmsw011"; break;
  3747.                        case 3: sItem = "nw_ashmsw010"; break;
  3748.                    }
  3749.             }
  3750.             else if (GetRange(3, nHD))   // * 800 - 10000
  3751.             {
  3752.                   int nRandom = Random(9) + 1;
  3753.                   switch (nRandom)
  3754.                   {
  3755.                        case 1: sItem = "nw_ashmsw011"; break;
  3756.                        case 2: sItem = "nw_ashmsw011"; break;
  3757.                        case 3: sItem = "nw_ashmsw010"; break;
  3758.                        case 4: sItem = "nw_maarcl011"; break;
  3759.                        case 5: sItem = "nw_ashmsw006"; break;
  3760.                        case 6: sItem = "nw_maarcl017"; break;
  3761.                        case 7: sItem = "nw_ashmsw005"; break;
  3762.                        case 8: sItem = "nw_maarcl013"; break;
  3763.                        case 9: sItem = "nw_maarcl012"; break;
  3764.                    }
  3765.  
  3766.             }
  3767.             else if (GetRange(4, nHD))   // * 2500 - 16500
  3768.             {
  3769.                   int nRandom = Random(13) + 1;
  3770.                   switch (nRandom)
  3771.                   {
  3772.                        case 1: sItem = "nw_maarcl011"; break;
  3773.                        case 2: sItem = "nw_maarcl011"; break;
  3774.                        case 3: sItem = "nw_ashmsw006"; break;
  3775.                        case 4: sItem = "nw_maarcl017"; break;
  3776.                        case 5: sItem = "nw_ashmsw005"; break;
  3777.                        case 6: sItem = "nw_maarcl013"; break;
  3778.                        case 7: sItem = "nw_maarcl012"; break;
  3779.                        case 8: sItem = "nw_ashmsw004"; break;
  3780.                        case 9: sItem = "nw_maarcl006"; break;
  3781.                        case 10: sItem = "nw_maarcl032"; break;
  3782.                        case 11: sItem = "nw_maarcl003"; break;
  3783.                        case 12: sItem = "nw_maarcl002"; break;
  3784.                        case 13: sItem = "nw_maarcl007"; break;
  3785.                    }
  3786.  
  3787.             }
  3788.             else if (GetRange(5, nHD))   // * 8000 - 25000
  3789.             {
  3790.                   int nRandom = Random(11) + 1;
  3791.                   switch (nRandom)
  3792.                   {
  3793.                        case 1: sItem = "nw_maarcl012"; break;
  3794.                        case 2: sItem = "nw_maarcl012"; break;
  3795.                        case 3: sItem = "nw_ashmsw004"; break;
  3796.                        case 4: sItem = "nw_maarcl006"; break;
  3797.                        case 5: sItem = "nw_maarcl032"; break;
  3798.                        case 6: sItem = "nw_maarcl003"; break;
  3799.                        case 7: sItem = "nw_maarcl002"; break;
  3800.                        case 8: sItem = "nw_maarcl005"; break;
  3801.                        case 9: sItem = "nw_ashmsw003"; break;
  3802.                        case 10: sItem = "nw_maarcl001"; break;
  3803.                        case 11: sItem = "nw_maarcl034"; break;
  3804.                    }
  3805.  
  3806.             }
  3807.             else if (GetRange(6, nHD))   // * 16000 and up
  3808.             {
  3809.                   int nRandom = Random(11) + 1;
  3810.                   switch (nRandom)
  3811.                   {
  3812.                        case 1: sItem = "nw_maarcl005"; break;
  3813.                        case 2: sItem = "nw_maarcl005"; break;
  3814.                        case 3: sItem = "nw_ashmsw003"; break;
  3815.                        case 4: sItem = "nw_maarcl001"; break;
  3816.                        case 5: sItem = "nw_maarcl034"; break;
  3817.                        case 6: sItem = "nw_maarcl008"; break;
  3818.                        case 7: sItem = "nw_ashmsw007"; break;
  3819.                        case 8: sItem = "nw_maarcl033"; break;
  3820.                        case 9: sItem = "nw_mcloth005"; break;
  3821.                        case 10: sItem = "nw_maarcl009"; break;
  3822.                        case 11: sItem = "nw_maarcl004"; break;
  3823.                    }
  3824.  
  3825.             }
  3826.               dbCreateItemOnObject(sItem, oTarget, 1);
  3827.         }
  3828.         void CreateSpecificMediumArmor(object oTarget, object oAdventurer)
  3829.         {
  3830.             string sItem = "";
  3831.             int nHD = GetHitDice(oAdventurer);
  3832.  
  3833.             if (GetRange(1, nHD))    // * 800
  3834.             {
  3835.                 CreateGenericMediumArmor(oTarget, oAdventurer, JUMP_LEVEL);
  3836.                 return;
  3837.             }
  3838.             else if (GetRange(2, nHD))   // * 200 - 2500
  3839.             {
  3840.                 CreateGenericMediumArmor(oTarget, oAdventurer, JUMP_LEVEL);
  3841.                 return;
  3842.             }
  3843.             else if (GetRange(3, nHD))   // * 800 - 10000
  3844.             {
  3845.                   int nRandom = Random(5) + 1;
  3846.                   switch (nRandom)
  3847.                   {
  3848.                        case 1: sItem = "nw_armhe008"; break;
  3849.                        case 2: sItem = "nw_armhe008"; break;
  3850.                        case 3: sItem = "nw_armhe007"; break;
  3851.                        case 4: sItem = "nw_armhe009"; break;
  3852.                        case 5: sItem = "nw_armhe010"; break;
  3853.                    }
  3854.  
  3855.             }
  3856.             else if (GetRange(4, nHD))   // * 2500 - 16500
  3857.             {
  3858.                   int nRandom = Random(9) + 1;
  3859.                   switch (nRandom)
  3860.                   {
  3861.                        case 1: sItem = "nw_armhe008"; break;
  3862.                        case 2: sItem = "nw_armhe008"; break;
  3863.                        case 3: sItem = "nw_armhe007"; break;
  3864.                        case 4: sItem = "nw_armhe009"; break;
  3865.                        case 5: sItem = "nw_armhe010"; break;
  3866.                        case 6: sItem = "nw_armhe006"; break;
  3867.                        case 7: sItem = "nw_ashmlw007"; break;
  3868.                        case 8: sItem = "nw_ashmlw005"; break;
  3869.                        case 9: sItem = "nw_maarcl016"; break;
  3870.                    }
  3871.  
  3872.             }
  3873.             else if (GetRange(5, nHD))   // * 8000 - 25000
  3874.             {
  3875.                   int nRandom = Random(12) + 1;
  3876.                   switch (nRandom)
  3877.                   {
  3878.                        case 1: sItem = "nw_armhe009"; break;
  3879.                        case 2: sItem = "nw_armhe009"; break;
  3880.                        case 3: sItem = "nw_armhe010"; break;
  3881.                        case 4: sItem = "nw_armhe006"; break;
  3882.                        case 5: sItem = "nw_ashmlw007"; break;
  3883.                        case 6: sItem = "nw_ashmlw005"; break;
  3884.                        case 7: sItem = "nw_maarcl016"; break;
  3885.                        case 8: sItem = "nw_maarcl036"; break;
  3886.                        case 9: sItem = "nw_ashmlw004"; break;
  3887.                        case 10: sItem = "nw_maarcl037"; break;
  3888.                        case 11: sItem = "nw_maarcl040"; break;
  3889.                        case 12: sItem = "nw_ashmlw006"; break;
  3890.                    }
  3891.  
  3892.             }
  3893.             else if (GetRange(6, nHD))   // * 16000 and up
  3894.             {
  3895.                   int nRandom = Random(12) + 1;
  3896.                   switch (nRandom)
  3897.                   {
  3898.                        case 1: sItem = "nw_maarcl016"; break;
  3899.                        case 2: sItem = "nw_maarcl016"; break;
  3900.                        case 3: sItem = "nw_maarcl036"; break;
  3901.                        case 4: sItem = "nw_ashmlw004"; break;
  3902.                        case 5: sItem = "nw_maarcl037"; break;
  3903.                        case 6: sItem = "nw_maarcl040"; break;
  3904.                        case 7: sItem = "nw_ashmlw006"; break;
  3905.                        case 8: sItem = "nw_ashmlw003"; break;
  3906.                        case 9: sItem = "nw_maarcl014"; break;
  3907.                        case 10: sItem = "nw_maarcl039"; break;
  3908.                        case 11: sItem = "nw_maarcl010"; break;
  3909.                        case 12: sItem = "nw_maarcl015"; break;
  3910.                    }
  3911.  
  3912.             }
  3913.                   dbCreateItemOnObject(sItem, oTarget, 1);
  3914.         }
  3915.         void CreateSpecificHeavyArmor(object oTarget, object oAdventurer)
  3916.         {
  3917.             string sItem = "";
  3918.             int nHD = GetHitDice(oAdventurer);
  3919.  
  3920.             if (GetRange(1, nHD))    // * 800
  3921.             {
  3922.                 CreateGenericHeavyArmor(oTarget, oAdventurer, JUMP_LEVEL);
  3923.                 return;
  3924.             }
  3925.             else if (GetRange(2, nHD))   // * 200 - 2500
  3926.             {
  3927.                 CreateGenericHeavyArmor(oTarget, oAdventurer, JUMP_LEVEL);
  3928.                 return;
  3929.             }
  3930.             else if (GetRange(3, nHD))   // * 800 - 10000
  3931.             {
  3932.                   int nRandom = Random(6) + 1;
  3933.                   switch (nRandom)
  3934.                   {
  3935.                        case 1: sItem = "nw_maarcl026"; break;
  3936.                        case 2: sItem = "nw_maarcl026"; break;
  3937.                        case 3: sItem = "nw_maarcl021"; break;
  3938.                        case 4: sItem = "nw_ashmto003"; break;
  3939.                        case 5: sItem = "nw_maarcl029"; break;
  3940.                        case 6: sItem = "nw_maarcl020"; break;
  3941.                    }
  3942.  
  3943.             }
  3944.             else if (GetRange(4, nHD))   // * 2500 - 16500
  3945.             {
  3946.                   int nRandom = Random(13) + 1;
  3947.                   switch (nRandom)
  3948.                   {
  3949.                        case 1: sItem = "nw_maarcl021"; break;
  3950.                        case 2: sItem = "nw_maarcl026"; break;
  3951.                        case 3: sItem = "nw_maarcl021"; break;
  3952.                        case 4: sItem = "nw_ashmto003"; break;
  3953.                        case 5: sItem = "nw_maarcl029"; break;
  3954.                        case 6: sItem = "nw_maarcl020"; break;
  3955.                        case 7: sItem = "nw_ashmto006"; break;
  3956.                        case 8: sItem = "nw_maarcl041"; break;
  3957.                        case 9: sItem = "nw_ashmto005"; break;
  3958.                        case 10: sItem = "nw_ashmto007"; break;
  3959.                        case 11: sItem = "nw_ashmto010"; break;
  3960.                        case 12: sItem = "nw_maarcl022"; break;
  3961.                        case 13: sItem = "nw_maarcl018"; break;
  3962.                    }
  3963.  
  3964.             }
  3965.             else if (GetRange(5, nHD))   // * 8000 - 25000
  3966.             {
  3967.                   int nRandom = Random(13) + 1;
  3968.                   switch (nRandom)
  3969.                   {
  3970.                        case 1: sItem = "nw_maarcl020"; break;
  3971.                        case 2: sItem = "nw_maarcl020"; break;
  3972.                        case 3: sItem = "nw_ashmto006"; break;
  3973.                        case 4: sItem = "nw_maarcl041"; break;
  3974.                        case 5: sItem = "nw_ashmto005"; break;
  3975.                        case 6: sItem = "nw_ashmto007"; break;
  3976.                        case 7: sItem = "nw_ashmto010"; break;
  3977.                        case 8: sItem = "nw_maarcl022"; break;
  3978.                        case 9: sItem = "nw_maarcl018"; break;
  3979.                        case 10: sItem = "nw_maarcl024"; break;
  3980.                        case 11: sItem = "nw_ashmto011"; break;
  3981.                        case 12: sItem = "nw_maarcl042"; break;
  3982.                        case 13: sItem = "nw_maarcl054"; break;
  3983.                    }
  3984.  
  3985.             }
  3986.             else if (GetRange(6, nHD))   // * 16000 and up
  3987.             {
  3988.                   int nRandom = Random(10) + 1;
  3989.                   switch (nRandom)
  3990.                   {
  3991.                        case 1: sItem = "nw_maarcl018"; break;
  3992.                        case 2: sItem = "nw_maarcl018"; break;
  3993.                        case 3: sItem = "nw_maarcl024"; break;
  3994.                        case 4: sItem = "nw_ashmto011"; break;
  3995.                        case 5: sItem = "nw_maarcl042"; break;
  3996.                        case 6: sItem = "nw_maarcl054"; break;
  3997.                        case 7: sItem = "nw_ashmto004"; break;
  3998.                        case 8: sItem = "nw_maarcl025"; break;
  3999.                        case 9: sItem = "nw_maarcl028"; break;
  4000.                        case 10: sItem = "nw_maarcl027"; break;
  4001.                    }
  4002.  
  4003.             }
  4004.                   dbCreateItemOnObject(sItem, oTarget, 1);
  4005.  
  4006.         }
  4007.         // * if nSpecific is = 1 then spawn in 'named' items at the higher levels
  4008.     void CreateTable2Item(object oTarget, object oAdventurer, int nSpecific=0)
  4009.     {
  4010.         dbSpeak("In CreateTable2Item");
  4011.         string sItem = "";
  4012.         int nProbMisc = 0;
  4013.         int nProbClass = 0;
  4014.         int nProbRodStaffWand = 0;
  4015.         int nProbSimple = 0;
  4016.         int nProbMartial = 0;
  4017.         int nProbExotic = 0;
  4018.         int nProbLight = 0;
  4019.         int nProbMedium = 0;
  4020.         int nProbHeavy = 0;
  4021.         
  4022.         int nSpecialRanger = 0; // 2 Means to treat the ranger as a barbarian. A 1 is to treat it as a fighter
  4023.  
  4024.         
  4025.         // * May 2002: Changed using Preston's multiclass function
  4026.         // * it randomly chooses one of your classes
  4027.         int nClass =  nDetermineClassToUse(oAdventurer);
  4028.  
  4029.  
  4030.         // * SPECIAL RANGER BEHAVIOR
  4031.         // * If the ranger has the Heavy Armor proficiency, will treat the ranger
  4032.         if ( nClass == CLASS_TYPE_RANGER && GetHasFeat(FEAT_ARMOR_PROFICIENCY_HEAVY))
  4033.         {
  4034.             nSpecialRanger = 1;
  4035.         }
  4036.         else
  4037.         if (nClass == CLASS_TYPE_RANGER)
  4038.         {
  4039.             nSpecialRanger = 2;
  4040.         }
  4041.  
  4042.  
  4043.  
  4044.         //* SETUP probabilities based on Class
  4045.         if ( nClass == CLASS_TYPE_FIGHTER || nClass == CLASS_TYPE_PALADIN || nSpecialRanger == 1)
  4046.         {
  4047.             dbSpeak("I am fighter or paladin or heavy ranger");
  4048.             nProbMisc = 20;
  4049.             nProbClass = 0;
  4050.             nProbRodStaffWand = 5;
  4051.             nProbSimple = 5;
  4052.             nProbMartial = 20;
  4053.             nProbExotic = 10;
  4054.             nProbLight = 5;
  4055.             nProbMedium = 15;
  4056.             nProbHeavy = 20;
  4057.         }
  4058.         else
  4059.         if (nClass == CLASS_TYPE_WIZARD || nClass == CLASS_TYPE_SORCERER)
  4060.         {
  4061.             dbSpeak("I am wizard or sorcerer");
  4062.             nProbMisc = 40;
  4063.             nProbClass = 30;
  4064.             nProbRodStaffWand = 15;
  4065.             nProbSimple = 3;
  4066.             nProbMartial = 3;
  4067.             nProbExotic = 3;
  4068.             nProbLight = 2;
  4069.             nProbMedium = 2;
  4070.             nProbHeavy = 2;
  4071.         }
  4072.         else
  4073.         if (nClass == CLASS_TYPE_BARBARIAN || nSpecialRanger == 2)
  4074.         {
  4075.             dbSpeak("I am barbarian or light ranger");
  4076.  
  4077.             nProbMisc = 20;
  4078.             nProbClass = 0;
  4079.             nProbRodStaffWand = 5;
  4080.             nProbSimple = 17;
  4081.             nProbMartial = 27;
  4082.             nProbExotic = 15;
  4083.             nProbLight = 8;
  4084.             nProbMedium = 5;
  4085.             nProbHeavy = 3;
  4086.         }
  4087.         else
  4088.         if (nClass == CLASS_TYPE_CLERIC)
  4089.         {
  4090.             dbSpeak("I am cleric");
  4091.  
  4092.             nProbMisc = 20;
  4093.             nProbClass = 10;
  4094.             nProbRodStaffWand = 10;
  4095.             nProbSimple = 25;
  4096.             nProbMartial = 7;
  4097.             nProbExotic = 5;
  4098.             nProbLight = 5;
  4099.             nProbMedium = 8;
  4100.             nProbHeavy = 10;
  4101.         }
  4102.         else
  4103.         if (nClass == CLASS_TYPE_DRUID)
  4104.         {
  4105.             dbSpeak("I am druid");
  4106.  
  4107.             nProbMisc = 20;
  4108.             nProbClass = 25;
  4109.             nProbRodStaffWand = 15;
  4110.             nProbSimple = 10;
  4111.             nProbMartial = 5;
  4112.             nProbExotic = 5;
  4113.             nProbLight = 10;
  4114.             nProbMedium = 5;
  4115.             nProbHeavy = 5;
  4116.         }
  4117.         else
  4118.         if (nClass == CLASS_TYPE_MONK)
  4119.         {
  4120.             dbSpeak("I am monk");
  4121.             nProbMisc = 20;
  4122.             nProbClass = 50;
  4123.             nProbRodStaffWand = 2;
  4124.             nProbSimple = 7;
  4125.             nProbMartial = 2;
  4126.             nProbExotic = 7;
  4127.             nProbLight = 4;
  4128.             nProbMedium = 4;
  4129.             nProbHeavy = 4;
  4130.         }
  4131.         else
  4132.         if (nClass == CLASS_TYPE_ROGUE)
  4133.         {
  4134.             dbSpeak("I am rogue");
  4135.  
  4136.             nProbMisc = 25;
  4137.             nProbClass = 10;
  4138.             nProbRodStaffWand = 10;
  4139.             nProbSimple = 25;
  4140.             nProbMartial = 5;
  4141.             nProbExotic = 5;
  4142.             nProbLight = 10;
  4143.             nProbMedium = 5;
  4144.             nProbHeavy = 5;
  4145.         }
  4146.         else
  4147.         if (nClass == CLASS_TYPE_BARD)
  4148.         {
  4149.             dbSpeak("I am bard");
  4150.  
  4151.             nProbMisc = 25;
  4152.             nProbClass = 5;
  4153.             nProbRodStaffWand = 5;
  4154.             nProbSimple = 25;
  4155.             nProbMartial = 10;
  4156.             nProbExotic = 10;
  4157.             nProbLight = 10;
  4158.             nProbMedium = 5;
  4159.             nProbHeavy = 5;
  4160.         }
  4161.         else
  4162.         {
  4163.             dbSpeak("No Valid Class");
  4164.         }
  4165.         dbSpeak("Table2Item: After Class Distribution");
  4166.         //* Create Items based on Probabilities
  4167.         int nRandom = d100();
  4168.         if (nRandom <= nProbMisc)
  4169.         {
  4170.             if (nSpecific == 0) CreateGenericMiscItem(oTarget, oAdventurer);
  4171.             else CreateSpecificMiscItem(oTarget, oAdventurer);
  4172.  
  4173.         }
  4174.         else
  4175.         if (nRandom <= nProbMisc + nProbClass)
  4176.         {   // * no need for a seperate specific function here
  4177.             CreateGenericClassItem(oTarget, oAdventurer, nSpecific);
  4178.         }
  4179.         else
  4180.         if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand)
  4181.         {
  4182.             if (nSpecific == 0) CreateGenericRodStaffWand(oTarget, oAdventurer);
  4183.             else CreateSpecificRodStaffWand(oTarget, oAdventurer);
  4184.         }
  4185.         else
  4186.         if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple)
  4187.         {
  4188.             if (nSpecific == 0) CreateGenericSimple(oTarget, oAdventurer);
  4189.             else CreateSpecificSimple(oTarget, oAdventurer);
  4190.         }
  4191.         else
  4192.         if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple + nProbMartial)
  4193.         {
  4194.  
  4195.              if (nSpecific == 0) CreateGenericMartial(oTarget, oAdventurer);
  4196.              else CreateSpecificMartial(oTarget, oAdventurer);
  4197.         }
  4198.         else
  4199.         if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple + nProbMartial + nProbExotic)
  4200.         {
  4201.             if (nSpecific == 0) CreateGenericExotic(oTarget, oAdventurer);
  4202.             else CreateSpecificExotic(oTarget, oAdventurer);
  4203.         }
  4204.         else
  4205.         if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple + nProbMartial + nProbExotic + nProbLight)
  4206.         {
  4207.             if (nSpecific == 0) CreateGenericLightArmor(oTarget, oAdventurer);
  4208.             else CreateSpecificLightArmor(oTarget, oAdventurer);
  4209.         }
  4210.         else
  4211.         if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple + nProbMartial + nProbExotic + nProbLight + nProbMedium)
  4212.         {
  4213.             if (nSpecific == 0) CreateGenericMediumArmor(oTarget, oAdventurer);
  4214.             else CreateSpecificMediumArmor(oTarget, oAdventurer);
  4215.         }
  4216.         else
  4217.         if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple + nProbMartial + nProbExotic + nProbLight + nProbMedium + nProbHeavy)
  4218.         {
  4219.             if (nSpecific == 0) CreateGenericHeavyArmor(oTarget, oAdventurer);
  4220.             else CreateSpecificHeavyArmor(oTarget, oAdventurer);
  4221.         }
  4222.         else
  4223.         {
  4224.             dbSpeak("Generic Generic or Specific; error: 3524");
  4225.         }
  4226.     }
  4227.  
  4228. //::///////////////////////////////////////////////
  4229. //:: GenerateTreasure
  4230. //:: Copyright (c) 2001 Bioware Corp.
  4231. //:://////////////////////////////////////////////
  4232. /*
  4233.    Generate Treasure
  4234.    NOTE: When used by NPCs, the treasure is scaled
  4235.    to how powerful the NPC is.
  4236.  
  4237.    If used by containers, it is scaled by how
  4238.    powerful the PC is.
  4239.  
  4240.    PARAMETERS
  4241.    oLastOpener = The creature that opened the container
  4242.    oCreateOn = The place to put the treasure. If this is
  4243.     invalid then the treasure is placed on oLastOpener
  4244.  
  4245.  
  4246. */
  4247. //:://////////////////////////////////////////////
  4248. //:: Created By:  Andrew
  4249. //:: Created On:
  4250. //:://////////////////////////////////////////////
  4251. void GenerateTreasure(int nTreasureType, object oLastOpener, object oCreateOn)
  4252. {
  4253.  
  4254.     dbSpeak("*********************NEW TREASURE*************************");
  4255.     
  4256.     // * abort treasure if no one opened the container
  4257.     if (GetIsObjectValid(oLastOpener) == FALSE)
  4258.     {
  4259.         dbSpeak("Aborted.  No valid Last Opener");
  4260.         return;
  4261.     }
  4262.  
  4263.     // * if no valid create on object, then create on oLastOpener
  4264.     if (oCreateOn == OBJECT_INVALID)
  4265.     {
  4266.         oCreateOn = oLastOpener;
  4267.     }
  4268.  
  4269.     // * if an Animal then generate 100% animal treasure
  4270.  
  4271.     // not done yet
  4272.     // * VARIABLES
  4273.    int nProbBook =   0;
  4274.    int nProbAnimal = 0;
  4275.    int nProbJunk =   0;
  4276.    int nProbGold = 0;
  4277.    int nProbGem = 0;
  4278.    int nProbJewel = 0;
  4279.    int nProbArcane = 0;
  4280.    int nProbDivine = 0;
  4281.    int nProbAmmo = 0;
  4282.    int nProbKit = 0;
  4283.    int nProbPotion = 0;
  4284.    int nProbTable2 = 0;
  4285.  
  4286.    int nSpecific = 0;
  4287.    int i = 0;
  4288.    int nNumberItems = GetNumberOfItems(nTreasureType);
  4289.  
  4290.    // * Set Treasure Type Values
  4291.    if (nTreasureType == TREASURE_LOW)
  4292.    {
  4293.     nProbBook   = LOW_PROB_BOOK;
  4294.     nProbAnimal = LOW_PROB_ANIMAL;
  4295.     nProbJunk   = LOW_PROB_JUNK;
  4296.     nProbGold   = LOW_PROB_GOLD;
  4297.     nProbGem    = LOW_PROB_GEM;
  4298.     nProbJewel  = LOW_PROB_JEWEL;
  4299.     nProbArcane = LOW_PROB_ARCANE;
  4300.     nProbDivine  = LOW_PROB_DIVINE;
  4301.     nProbAmmo = LOW_PROB_AMMO ;
  4302.     nProbKit = LOW_PROB_KIT;
  4303.     nProbPotion = LOW_PROB_POTION;
  4304.     nProbTable2 = LOW_PROB_TABLE2;
  4305.    }
  4306.    else if (nTreasureType == TREASURE_MEDIUM)
  4307.    {
  4308.     nProbBook   = MEDIUM_PROB_BOOK;
  4309.     nProbAnimal = MEDIUM_PROB_ANIMAL;
  4310.     nProbJunk   = MEDIUM_PROB_JUNK;
  4311.     nProbGold   = MEDIUM_PROB_GOLD;
  4312.     nProbGem    = MEDIUM_PROB_GEM;
  4313.     nProbJewel  = MEDIUM_PROB_JEWEL;
  4314.     nProbArcane = MEDIUM_PROB_ARCANE;
  4315.     nProbDivine  = MEDIUM_PROB_DIVINE;
  4316.     nProbAmmo = MEDIUM_PROB_AMMO ;
  4317.     nProbKit = MEDIUM_PROB_KIT;
  4318.     nProbPotion = MEDIUM_PROB_POTION;
  4319.     nProbTable2 = MEDIUM_PROB_TABLE2;
  4320.    }
  4321.    else if (nTreasureType == TREASURE_HIGH)
  4322.    {
  4323.     nProbBook   = HIGH_PROB_BOOK;
  4324.     nProbAnimal = HIGH_PROB_ANIMAL;
  4325.     nProbJunk   = HIGH_PROB_JUNK;
  4326.     nProbGold   = HIGH_PROB_GOLD;
  4327.     nProbGem    = HIGH_PROB_GEM;
  4328.     nProbJewel  = HIGH_PROB_JEWEL;
  4329.     nProbArcane = HIGH_PROB_ARCANE;
  4330.     nProbDivine  = HIGH_PROB_DIVINE;
  4331.     nProbAmmo = HIGH_PROB_AMMO ;
  4332.     nProbKit = HIGH_PROB_KIT;
  4333.     nProbPotion = HIGH_PROB_POTION;
  4334.     nProbTable2 = HIGH_PROB_TABLE2;
  4335.    }
  4336.    else if (nTreasureType == TREASURE_BOSS)
  4337.    { dbSpeak("boss");
  4338.     nProbTable2 = 100;
  4339.     nSpecific = 1;
  4340.    }
  4341.    else if (nTreasureType == TREASURE_BOOK)
  4342.    {
  4343.     nProbBook = 90;
  4344.     nProbArcane = 6;
  4345.     nProbDivine = 4;
  4346.    }
  4347.  
  4348.    dbSpeak("Generate Treasure nSpecific = " + IntToString(nSpecific));
  4349.  
  4350.    for (i = 1; i <= nNumberItems; i++)
  4351.    {
  4352.      int nRandom = d100();
  4353.      if (nRandom <= nProbBook)
  4354.         CreateBook(oCreateOn);                                // * Book
  4355.      else if (nRandom <= nProbBook + nProbAnimal)
  4356.         CreateAnimalPart(oCreateOn);                          // * Animal
  4357.      else if (nRandom <= nProbBook + nProbAnimal + nProbJunk)
  4358.         CreateJunk(oCreateOn);                                // * Junk
  4359.      else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold)
  4360.         CreateGold(oCreateOn, oLastOpener, nTreasureType);    // * Gold
  4361.      else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem)
  4362.         CreateGem(oCreateOn, oLastOpener, nTreasureType);     // * Gem
  4363.      else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel)
  4364.         CreateJewel(oCreateOn, oLastOpener, nTreasureType);   // * Jewel
  4365.      else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane)
  4366.         CreateArcaneScroll(oCreateOn, oLastOpener);   // * Arcane Scroll
  4367.      else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane + nProbDivine)
  4368.         CreateDivineScroll(oCreateOn, oLastOpener);   // * Divine Scroll
  4369.      else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane + nProbDivine + nProbAmmo)
  4370.         CreateAmmo(oCreateOn, oLastOpener);   // * Ammo
  4371.      else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane + nProbDivine + nProbAmmo + nProbKit)
  4372.         CreateKit(oCreateOn, oLastOpener);   // * Healing, Trap, or Thief kit
  4373.      else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane + nProbDivine + nProbAmmo + nProbKit + nProbPotion)
  4374.         CreatePotion(oCreateOn, oLastOpener);   // * Potion
  4375.      else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane + nProbDivine + nProbAmmo + nProbKit + nProbPotion + nProbTable2)
  4376.      {
  4377.         CreateTable2Item(oCreateOn, oLastOpener, nSpecific);   // * Weapons, Armor, Misc - Class based
  4378.      }
  4379.      else
  4380.       dbSpeak("other stuff");
  4381.  
  4382.  
  4383.  
  4384.    }
  4385. }
  4386. void GenerateLowTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
  4387. {
  4388.  GenerateTreasure(TREASURE_LOW, oLastOpener, oCreateOn);
  4389. }
  4390. void GenerateMediumTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
  4391. {
  4392.  GenerateTreasure(TREASURE_MEDIUM, oLastOpener, oCreateOn);
  4393. }
  4394. void GenerateHighTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
  4395. {
  4396.  GenerateTreasure(TREASURE_HIGH, oLastOpener, oCreateOn);
  4397. }
  4398. void GenerateBossTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
  4399. {
  4400.  GenerateTreasure(TREASURE_BOSS, oLastOpener, oCreateOn);
  4401. }
  4402. void GenerateBookTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID)
  4403. {
  4404.  GenerateTreasure(TREASURE_BOOK, oLastOpener, oCreateOn);
  4405. }
  4406. //::///////////////////////////////////////////////
  4407. //:: GenerateNPCTreasure
  4408. //:: Copyright (c) 2001 Bioware Corp.
  4409. //:://////////////////////////////////////////////
  4410. /*
  4411.    Preferrably called from OnSpawn scripts.
  4412.    Use the random treasure functions to generate
  4413.    appropriate treasure for the creature to drop.
  4414. */
  4415. //:://////////////////////////////////////////////
  4416. //:: Created By: Brent
  4417. //:: Created On: January 2002
  4418. //:://////////////////////////////////////////////
  4419.  
  4420. void GenerateNPCTreasure(int nTreasureValue=1, object oTreasureGetter=OBJECT_SELF, object oKiller=OBJECT_SELF)
  4421. {
  4422.     //DestroyObject(OBJECT_SELF);
  4423.     // * if I am an animal ,then give me animal stuff instead
  4424.     if (GetObjectType(oTreasureGetter) == OBJECT_TYPE_CREATURE)
  4425.     {
  4426.         if (
  4427.             (GetRacialType(oTreasureGetter) == RACIAL_TYPE_UNDEAD) ||
  4428.             (GetRacialType(oTreasureGetter) == RACIAL_TYPE_ANIMAL) ||
  4429.             (GetRacialType(oTreasureGetter) == RACIAL_TYPE_BEAST) ||
  4430.             (GetRacialType(oTreasureGetter) == RACIAL_TYPE_MAGICAL_BEAST) ||
  4431.             (GetRacialType(oTreasureGetter) == RACIAL_TYPE_VERMIN)
  4432.            )
  4433.         {
  4434.             //CreateAnimalPart(oTreasureGetter);
  4435.             // April 23 2002: Removed animal parts. They are silly.
  4436.             return;
  4437.         }
  4438.     }
  4439.  
  4440.     if (nTreasureValue == 1)
  4441.     {
  4442.         // April 2002: 30% chance of not getting any treasure now
  4443.         // if a creature
  4444.         if (Random(100)+1 >= 75)
  4445.         {
  4446.             GenerateTreasure(TREASURE_LOW, oTreasureGetter, oKiller);
  4447.         }
  4448.     }
  4449.     else
  4450.     if (nTreasureValue == 2)
  4451.     {
  4452.         GenerateTreasure(TREASURE_MEDIUM, oTreasureGetter, oKiller);
  4453.     }
  4454.     else
  4455.     if (nTreasureValue == 3)
  4456.     {
  4457.         GenerateTreasure(TREASURE_HIGH, oTreasureGetter, oKiller);
  4458.     }
  4459.     else
  4460.     if (nTreasureValue == 4)
  4461.     {
  4462.         GenerateBossTreasure(oKiller, oTreasureGetter);
  4463.     }
  4464.  
  4465. }
  4466.  
  4467. // *
  4468. // * Theft Prevention
  4469. // *
  4470.  
  4471. //::///////////////////////////////////////////////
  4472. //:: ShoutDisturbed
  4473. //:: Copyright (c) 2001 Bioware Corp.
  4474. //:://////////////////////////////////////////////
  4475. /*
  4476.  
  4477. */
  4478. //:://////////////////////////////////////////////
  4479. //:: Created By:
  4480. //:: Created On:
  4481. //:://////////////////////////////////////////////
  4482.  
  4483. // * Container shouts if disturbed
  4484. void ShoutDisturbed()
  4485. {
  4486.     if (GetIsDead(OBJECT_SELF) == TRUE)
  4487.     {
  4488.             object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE);
  4489.         //Cycle through the targets within the spell shape until an invalid object is captured.
  4490.         while (GetIsObjectValid(oTarget))
  4491.         {
  4492.            if (GetFactionEqual(oTarget, OBJECT_SELF) == TRUE)
  4493.            {
  4494.                // * Make anyone who is a member of my faction hostile if I am violated
  4495.            object oAttacker = GetLastAttacker();
  4496.            SetIsTemporaryEnemy(oAttacker,oTarget);
  4497.            AssignCommand(oTarget, ActionAttack(oAttacker));
  4498.            }
  4499.            oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE);
  4500.         }
  4501.     }
  4502.     else if (GetIsOpen(OBJECT_SELF) == TRUE)
  4503.     {
  4504.             object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE);
  4505.         //Cycle through the targets within the spell shape until an invalid object is captured.
  4506.         while (GetIsObjectValid(oTarget))
  4507.         {
  4508.            if (GetFactionEqual(oTarget, OBJECT_SELF) == TRUE)
  4509.            {
  4510.                // * Make anyone who is a member of my faction hostile if I am violated
  4511.            object oAttacker = GetLastOpener();
  4512.            SetIsTemporaryEnemy(oAttacker,oTarget);
  4513.            AssignCommand(oTarget, ActionAttack(oAttacker));
  4514.  
  4515.            }
  4516.            oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE);
  4517.         }
  4518.     }
  4519. }
  4520.  
  4521.  
  4522. //::///////////////////////////////////////////////
  4523. //:: Determine Class to Use
  4524. //:: Copyright (c) 2002 Bioware Corp.
  4525. //:://////////////////////////////////////////////
  4526. /*
  4527.     Determines which of a NPCs three classes to
  4528.     use in the random treasure system
  4529. */
  4530. //:://////////////////////////////////////////////
  4531. //:: Created By: Preston Watamaniuk
  4532. //:: Created On: April 4, 2002
  4533. //:://////////////////////////////////////////////
  4534.  
  4535. int nDetermineClassToUse(object oCharacter)
  4536. {
  4537.     int nClass;
  4538.     int nTotal = GetHitDice(oCharacter);
  4539.     dbSpeak("Hit dice " + IntToString(nTotal));
  4540.     if (nTotal < 1)
  4541.     {
  4542.         nTotal = 1;
  4543.     }
  4544.     float fTotal = IntToFloat(nTotal);
  4545.     if (GetIsObjectValid(oCharacter) == FALSE)
  4546.     {
  4547.         dbSpeak("DetermineClassToUse: This character is invalid");
  4548.     }
  4549.     int nClass1 =  GetClassByPosition(1, oCharacter);
  4550.     int nState1 = FloatToInt((IntToFloat(GetLevelByClass(nClass1, oCharacter)) / fTotal) * 100);
  4551.     dbSpeak("Level 1 Class Level = " + IntToString(GetLevelByClass(nClass1,oCharacter)));
  4552.     
  4553.     PrintString("GENERIC SCRIPT DEBUG STRING ********** " +  GetTag(oCharacter) + "Class 1 " + IntToString(nState1));
  4554.     dbSpeak("State 1 " + IntToString(nState1));
  4555.     int nClass2 = GetClassByPosition(2, oCharacter);
  4556.     int nState2 = FloatToInt((IntToFloat(GetLevelByClass(nClass2, oCharacter)) / fTotal) * 100) + nState1;
  4557.     PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 2 " + IntToString(nState2));
  4558.  
  4559.     int nClass3 = GetClassByPosition(3, oCharacter);
  4560.     int nState3 = FloatToInt((IntToFloat(GetLevelByClass(nClass3, oCharacter)) / fTotal) * 100) + nState2;
  4561.     PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 3 " + IntToString(nState3));
  4562.  
  4563.     int nUseClass = d100();
  4564.     PrintString("GENERIC SCRIPT DEBUG STRING ********** " + "D100 Roll " +IntToString(nUseClass));
  4565.  
  4566.  
  4567.     dbSpeak("Before comparison : " + IntToString(nClass1));
  4568.     if(nUseClass <= nState1)
  4569.     {
  4570.         nClass = nClass1;
  4571.     }
  4572.     else if(nUseClass > nState1 && nUseClass <= nState2)
  4573.     {
  4574.         nClass = nClass2;
  4575.     }
  4576.     else
  4577.     {
  4578.         nClass = nClass3;
  4579.     }
  4580.     dbSpeak("Class from determineClass " + IntToString(nClass));
  4581.     return nClass;
  4582. }
  4583.  
  4584.  
  4585.  
  4586.