//:://///////////////////////////////////////////// //:: NW_O2_CONINCLUDE.nss //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* This include file handles the random treasure distribution for treasure from creatures and containers [ ] Documented */ //::////////////////////////////////////////////// //:: Created By: Brent, Andrew //:: Created On: November - May //::////////////////////////////////////////////// // :: MODS // April 23 2002: Removed animal parts. They were silly. // May 6 2002: Added Undead to the EXCLUSION treasure list (they drop nothing now) // - redistributed treasure (to lessen amoun t of armor and increase 'class specific treasure' // - Rangers with heavy armor prof. will be treated as Fighters else as Barbarians // - Gave wizards, druids and monk their own function // MAY 29 2002: Removed the heal potion from treasure // Moved nymph cloak +4 to treasure bracket 6 // Added Monk Enhancement items to random treasure // * --------- // * CONSTANTS // * --------- // * tweaking constants // * SIX LEVEL RANGES int RANGE_1_MIN = 0; int RANGE_1_MAX = 3; int RANGE_2_MIN = 4; int RANGE_2_MAX = 6; int RANGE_3_MIN = 7; int RANGE_3_MAX = 9; int RANGE_4_MIN = 10; int RANGE_4_MAX = 12; int RANGE_5_MIN = 13; int RANGE_5_MAX = 15; int RANGE_6_MIN = 16; int RANGE_6_MAX = 100; // * NUMBER OF ITEMS APPEARING int NUMBER_LOW_ONE = 100; int NUMBER_MED_ONE = 60; int NUMBER_HIGH_ONE = 40; int NUMBER_BOSS_ONE = 100; int NUMBER_LOW_TWO = 0; int NUMBER_MED_TWO = 30; int NUMBER_HIGH_TWO = 40; int NUMBER_BOSS_TWO = 0; int NUMBER_LOW_THREE = 0; int NUMBER_MED_THREE = 10; int NUMBER_HIGH_THREE = 20; int NUMBER_BOSS_THREE = 0; int NUMBER_BOOK_ONE = 75; int NUMBER_BOOK_TWO = 20; int NUMBER_BOOK_THREE = 5; // * AMOUNT OF GOLD BY VALUE float LOW_MOD_GOLD = 1.0; float MEDIUM_MOD_GOLD = 2.0; float HIGH_MOD_GOLD = 3.0; // * FREQUENCY OF ITEM TYPE APPEARING BY TREASURE TYPE int LOW_PROB_BOOK = 1; int MEDIUM_PROB_BOOK = 1; int HIGH_PROB_BOOK =1; int LOW_PROB_ANIMAL = 0; int MEDIUM_PROB_ANIMAL = 0; int HIGH_PROB_ANIMAL = 0; int LOW_PROB_JUNK = 2; int MEDIUM_PROB_JUNK = 1; int HIGH_PROB_JUNK = 1; int LOW_PROB_GOLD = 43; int MEDIUM_PROB_GOLD = 38; int HIGH_PROB_GOLD = 15; int LOW_PROB_GEM = 9; int MEDIUM_PROB_GEM = 15; int HIGH_PROB_GEM = 15; int LOW_PROB_JEWEL = 4; int MEDIUM_PROB_JEWEL = 6; int HIGH_PROB_JEWEL = 15; int LOW_PROB_ARCANE = 3; int MEDIUM_PROB_ARCANE = 3; int HIGH_PROB_ARCANE = 3; int LOW_PROB_DIVINE = 3; int MEDIUM_PROB_DIVINE = 3; int HIGH_PROB_DIVINE = 3; int LOW_PROB_AMMO = 10; int MEDIUM_PROB_AMMO = 5; int HIGH_PROB_AMMO = 3; int LOW_PROB_KIT = 5; int MEDIUM_PROB_KIT = 5; int HIGH_PROB_KIT = 5; int LOW_PROB_POTION =17; int MEDIUM_PROB_POTION = 20; int HIGH_PROB_POTION= 9; int LOW_PROB_TABLE2 = 3; int MEDIUM_PROB_TABLE2 = 3; int HIGH_PROB_TABLE2= 30; // * readability constants int TREASURE_LOW = 1; int TREASURE_MEDIUM = 2; int TREASURE_HIGH = 3; int TREASURE_BOSS = 4; int TREASURE_BOOK = 5; // * JUMP_LEVEL is used in a Specific item function // * in the case where a generic item is called for within that function // * it will create a generic item by adding JUMP_LEVEL to the character's // * hit die for the purposes of the treasure evaluation. // * May 2002: Lowered JUMP_LEVEL from 3 to 2 int JUMP_LEVEL = 2; //* Declarations void CreateGenericExotic(object oTarget, object oAdventurer, int nModifier = 0); void CreateGenericMonkWeapon(object oTarget, object oAdventurer, int nModifier = 0); void CreateSpecificMonkWeapon(object oTarget, object oAdventurer, int nModifier = 0); void CreateGenericDruidWeapon(object oTarget, object oAdventurer, int nModifier = 0); void CreateSpecificDruidWeapon(object oTarget, object oAdventurer, int nModifier = 0); void CreateGenericWizardWeapon(object oTarget, object oAdventurer, int nModifier = 0); void CreateSpecificWizardWeapon(object oTarget, object oAdventurer, int nModifier = 0); int nDetermineClassToUse(object oCharacter); // * // * IMPLEMENTATION // * // * Comment the speakstring in to debug treasure generation void dbSpeak(string s) { // SpeakString(s); } //* made this function to help with debugging void dbCreateItemOnObject(string sItemTemplate, object oTarget = OBJECT_SELF, int nStackSize = 1) { if (sItemTemplate == "") { PrintString("blank item passed into dbCreateItemOnObject. Please report as bug to Brent."); } dbSpeak(sItemTemplate); //sItemTemplate = GetStringLowerCase if (nStackSize == 1) { // * checks to see if this is a throwing item and if it is // * it creates more string sRoot = GetSubString(sItemTemplate, 0, 6); dbSpeak("ROOT: " + sRoot); if (GetStringLowerCase(sRoot) == "nw_wth") { nStackSize = Random(30) + 1; } } object oItem = CreateItemOnObject(sItemTemplate, oTarget, nStackSize); if (GetIsObjectValid(oItem) == FALSE && sItemTemplate != "NW_IT_GOLD001") { // * check to see if item is there in a stack, if not give warning if (GetIsObjectValid(GetItemPossessedBy(oTarget, GetStringUpperCase(sItemTemplate))) == FALSE && GetIsObjectValid(GetItemPossessedBy(oTarget, GetStringLowerCase(sItemTemplate))) == FALSE) { PrintString("**DESIGN***"); PrintString("******" + sItemTemplate + " is an invalid item template. Please report as bug to Brent."); PrintString("*******"); } } } // * // * GET FUNCTIONS // * /* Returns the adjusted hit dice of the target creature. This function is used to reduce loot farming by high level characters in low risk areas. Maximum level can be defined by container or area. The local integer GT_MAX_LEVEL is used to define the maximum level. */ int GetAdjHitDice(object oTarget) { int iMaxLevel, iHitDice, iAdjHitDice; /* does container have a maximum level set? */ iMaxLevel = GetLocalInt(OBJECT_SELF, "GT_MAX_LEVEL"); /* if not, does area? */ if (iMaxLevel == 0) { iMaxLevel = GetLocalInt(GetArea(OBJECT_SELF), "GT_MAX_LEVEL"); dbSpeak("Area max level = " + IntToString(iMaxLevel)); } else { dbSpeak("Item max level = " + IntToString(iMaxLevel)); } iHitDice = GetHitDice(oTarget); /* if max level is set and hit dice exceeds it then cap it */ if ((iMaxLevel > 0) && (iHitDice > iMaxLevel)) { iAdjHitDice = iMaxLevel; dbSpeak("iAdjHitDice = " + IntToString(iAdjHitDice)); } else { iAdjHitDice = iHitDice; dbSpeak("iHitDice = " + IntToString(iHitDice)); } return iAdjHitDice; } /* Get the refill delay for the container. The generate treasure functions (X_O2_*) use this function to refill a container after a delay. The delay is in seconds and can be defined by container, area or a default. The local float GT_REFILL_DELAY is used to define the refill delay. */ float GetRefillDelay() { float fRefillDelay; /* does container have a refill delay set? */ fRefillDelay = GetLocalFloat(OBJECT_SELF, "GT_REFILL_DELAY"); /* if not, does area? */ if (fRefillDelay == 0.0) { fRefillDelay = GetLocalFloat(GetArea(OBJECT_SELF), "GT_REFILL_DELAY"); if (fRefillDelay == 0.0) { fRefillDelay = 1000.0; /* no refill delay found, use default */ dbSpeak("Default refill delay = " + FloatToString(fRefillDelay)); } else { dbSpeak("Area refill delay = " + FloatToString(fRefillDelay)); } } else { dbSpeak("Item refill delay = " + FloatToString(fRefillDelay)); } return fRefillDelay; } // * Returns the object that either last opened the container or destroyed it object GetLastOpener() { if (GetIsObjectValid(GetLastOpenedBy()) == TRUE) { dbSpeak("LastOpener: GetLastOpenedBy " + GetTag(GetLastOpenedBy())); return GetLastOpenedBy(); } else if (GetIsObjectValid(GetLastKiller()) == TRUE) { dbSpeak("LastOpener: GetLastAttacker"); return GetLastKiller(); } dbSpeak("LastOpener: The Object is Invalid you weenie!"); return OBJECT_INVALID; } //:://///////////////////////////////////////////// //:: GetRange //:: Copyright (c) 2002 Bioware Corp. //::////////////////////////////////////////////// /* Returns true if nHD matches the correct level range for the indicated nCategory. (i.e., First to Fourth level characters are considered Range1) */ //::////////////////////////////////////////////// //:: Created By: Brent //:: Created On: //::////////////////////////////////////////////// int GetRange(int nCategory, int nHD) { int nMin = 0; int nMax = 0; switch (nCategory) { case 6: nMin = RANGE_6_MIN; nMax = RANGE_6_MAX; break; case 5: nMin = RANGE_5_MIN; nMax = RANGE_5_MAX; break; case 4: nMin = RANGE_4_MIN; nMax = RANGE_4_MAX; break; case 3: nMin = RANGE_3_MIN; nMax = RANGE_3_MAX; break; case 2: nMin = RANGE_2_MIN; nMax = RANGE_2_MAX; break; case 1: nMin = RANGE_1_MIN; nMax = RANGE_1_MAX; break; } dbSpeak("nMin = " + IntToString(nMin)); dbSpeak("nMax = " + IntToString(nMax)); dbSpeak("GetRange.nHD = " + IntToString(nHD)); if (nHD >= nMin && nHD <= nMax) { return TRUE; } return FALSE; } //:://///////////////////////////////////////////// //:: GetNumberOfItems //:: Copyright (c) 2002 Bioware Corp. //::////////////////////////////////////////////// /* Returns the number of items to create. */ //::////////////////////////////////////////////// //:: Created By: Brent //:: Created On: //::////////////////////////////////////////////// int GetNumberOfItems(int nTreasureType) { int nItems = 0; int nRandom = 0; int nProbThreeItems = 0; int nProbTwoItems = 0; int nProbOneItems = 0; if (nTreasureType == TREASURE_LOW) { nProbThreeItems = NUMBER_LOW_THREE; nProbTwoItems = NUMBER_LOW_TWO; nProbOneItems = NUMBER_LOW_ONE; } else if (nTreasureType == TREASURE_MEDIUM) { nProbThreeItems = NUMBER_MED_THREE; nProbTwoItems = NUMBER_MED_TWO; nProbOneItems = NUMBER_MED_ONE; } else if (nTreasureType == TREASURE_HIGH) { nProbThreeItems = NUMBER_HIGH_THREE; nProbTwoItems = NUMBER_HIGH_TWO; nProbOneItems = NUMBER_HIGH_ONE; } else if (nTreasureType == TREASURE_BOSS) { nProbThreeItems = NUMBER_BOSS_THREE; nProbTwoItems = NUMBER_BOSS_TWO; nProbOneItems = NUMBER_BOSS_ONE; } else if (nTreasureType == TREASURE_BOOK) { nProbThreeItems = NUMBER_BOOK_THREE; nProbTwoItems = NUMBER_BOOK_TWO; nProbOneItems = NUMBER_BOOK_ONE; } nRandom = d100(); if (nRandom <= nProbThreeItems) { nItems = 3; } else if (nRandom <= nProbTwoItems + nProbThreeItems) { nItems = 2; } else { nItems = 1; } // * May 13 2002: Cap number of items, in case of logic error if (nItems > 3) { nItems = 3; } return nItems; } // * // * TREASURE GENERATION FUNCTIONS // * // * // * Non-Scaling Treasure // * void CreateBook(object oTarget) { int nBook1 = Random(31) + 1; string sRes = "NW_IT_BOOK01"; if (nBook1 < 10) { sRes = "NW_IT_BOOK00" + IntToString(nBook1); } else { sRes = "NW_IT_BOOK0" + IntToString(nBook1); } dbSpeak("Create book"); dbCreateItemOnObject(sRes, oTarget); } void CreateAnimalPart(object oTarget) { string sRes = ""; int nResult = Random(3) + 1; switch (nResult) { case 1: sRes = "NW_IT_MSMLMISC20"; break; case 2: sRes = "NW_IT_MMIDMISC05"; break; case 3: sRes = "NW_IT_MMIDMISC06"; break; } dbSpeak("animal"); dbCreateItemOnObject(sRes, oTarget); } void CreateJunk(object oTarget) { string sRes = "NW_IT_TORCH001"; int NUM_ITEMS = 6; int nResult = Random(NUM_ITEMS) + 1; int nKit = 0; switch (nResult) { case 1: sRes = "NW_IT_MPOTION021"; break; //ale case 2: sRes = "NW_IT_MPOTION021"; break; // ale case 3: sRes = "NW_IT_MPOTION023"; break; // wine case 4: sRes = "NW_IT_MPOTION021"; break; // ale case 5: sRes = "NW_IT_MPOTION022"; break; // spirits case 6: sRes = "NW_IT_TORCH001"; break; //torch } dbSpeak("CreateJunk"); dbCreateItemOnObject(sRes, oTarget); } // * // * Scaling Treasure // * void CreateGold(object oTarget, object oAdventurer, int nTreasureType, int nModifier = 0) { int nHD = GetAdjHitDice(oAdventurer) + nModifier; int nAmount = 0; if (GetRange(1, nHD)) { nAmount = d10(); } else if (GetRange(2, nHD)) { nAmount = d20(); } else if (GetRange(3, nHD)) { nAmount = d20(2); } else if (GetRange(4, nHD)) { nAmount = d20(5); } else if (GetRange(5, nHD)) { nAmount = d20(8); } else if (GetRange(6, nHD)) { nAmount = d20(10); } float nMod = 0.0; if (nTreasureType == TREASURE_LOW) nMod = LOW_MOD_GOLD; else if (nTreasureType == TREASURE_MEDIUM) nMod = MEDIUM_MOD_GOLD; else if (nTreasureType == TREASURE_HIGH) nMod = HIGH_MOD_GOLD; // * always at least 1gp is created nAmount = FloatToInt(nAmount * nMod); if (nAmount <= 0) { nAmount = 1; } dbSpeak("gold"); dbCreateItemOnObject("NW_IT_GOLD001", oTarget, nAmount); } void CreateGem(object oTarget, object oAdventurer, int nTreasureType, int nModifier = 0) { int nHD = GetAdjHitDice(oAdventurer) + nModifier; string sGem = "nw_it_gem001"; if (GetRange(1, nHD)) { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sGem = "nw_it_gem001"; break; case 2: sGem = "nw_it_gem007"; break; case 3: sGem = "nw_it_gem002"; break; case 4: case 5: sGem = "nw_it_gem004"; break; case 6: case 7: sGem = "nw_it_gem014"; break; case 8: sGem = "nw_it_gem003"; break; case 9: sGem = "nw_it_gem015"; break; } } else if (GetRange(2, nHD)) // 30 GP Avg; 150 gp Max { int nRandom = d12(); switch (nRandom) { case 1: sGem = "nw_it_gem001"; break; case 2: sGem = "nw_it_gem007"; break; case 3: sGem = "nw_it_gem002"; break; case 4: sGem = "nw_it_gem004"; break; case 5: case 6: sGem = "nw_it_gem014"; break; case 7: case 8: sGem = "nw_it_gem003"; break; case 9: case 10: sGem = "nw_it_gem015"; break; case 11: sGem = "nw_it_gem011"; break; case 12: sGem = "nw_it_gem013"; break; } } else if (GetRange(3, nHD)) // 75GP Avg; 500 gp max { int nRandom = d2(); switch (nRandom) { case 1: sGem = "nw_it_gem013"; break; case 2: sGem = "nw_it_gem010"; break; } } else if (GetRange(4, nHD)) // 150 gp avg; 1000 gp max { int nRandom = d3(); switch (nRandom) { case 1: sGem = "nw_it_gem013"; break; case 2: sGem = "nw_it_gem010"; break; case 3: sGem = "nw_it_gem008"; break; } } else if (GetRange(5, nHD)) // 300 gp avg; any { int nRandom = d6(); switch (nRandom) { case 1: sGem = "nw_it_gem013"; break; case 2: sGem = "nw_it_gem010"; break; case 3: case 4: sGem = "nw_it_gem008"; break; case 5: sGem = "nw_it_gem009"; break; case 6: sGem = "nw_it_gem009"; break; } } else if (GetRange(6, nHD))// * Anything higher than level 15 500 gp avg; any { int nRandom = Random(8) + 1; switch (nRandom) { case 1: sGem = "nw_it_gem013"; break; case 2: sGem = "nw_it_gem010"; break; case 3: case 4: sGem = "nw_it_gem008"; break; case 5: sGem = "nw_it_gem009"; break; case 6: sGem = "nw_it_gem009"; break; case 7: sGem = "nw_it_gem006"; break; case 8: sGem = "nw_it_gem012"; break; } } dbSpeak("Create Gem"); dbCreateItemOnObject(sGem, oTarget, 1); } void CreateJewel(object oTarget, object oAdventurer, int nTreasureType, int nModifier = 0) { int nHD = GetAdjHitDice(oAdventurer) + nModifier; string sJewel = ""; if (GetRange(1, nHD)) // 15 gp avg; 75 gp max { int nRandom = d2(); switch (nRandom) { case 1: sJewel = "nw_it_mring021"; break; case 2: sJewel = "nw_it_mneck020"; break; } } else if (GetRange(2, nHD)) // 30 GP Avg; 150 gp Max { int nRandom = d6(); switch (nRandom) { case 1: sJewel = "nw_it_mring021"; break; case 2: case 3: sJewel = "nw_it_mneck020"; break; case 4: sJewel = "nw_it_mring022"; break; case 5: case 6: sJewel = "nw_it_mneck023"; break; } } else if (GetRange(3, nHD)) // 75GP Avg; 500 gp max { int nRandom = d6(); switch (nRandom) { case 1: sJewel = "nw_it_mring021"; break; case 2: case 3: sJewel = "nw_it_mneck020"; break; case 4: case 5: sJewel = "nw_it_mring022"; break; case 6: sJewel = "nw_it_mneck021"; break; } } else if (GetRange(4, nHD)) // 150 gp avg; 1000 gp max { int nRandom = d6(); switch (nRandom) { case 1: sJewel = "nw_it_mring021"; break; case 2: sJewel = "nw_it_mring022"; break; case 3: case 4: case 5: sJewel = "nw_it_mneck021"; break; case 6: sJewel = "nw_it_mring023"; break; } } else if (GetRange(5, nHD)) // 300 gp avg; any { int nRandom = d8(); switch (nRandom) { case 1: sJewel = "nw_it_mring022"; break; case 2: case 3: sJewel = "nw_it_mneck021"; break; case 4: case 5: case 6: sJewel = "nw_it_mring023"; break; case 7: case 8: sJewel = "nw_it_mneck022"; break; } } else if (GetRange(6, nHD)) { int nRandom = d6(); switch (nRandom) { case 1: sJewel = "nw_it_mring022"; break; case 2: sJewel = "nw_it_mneck021"; break; case 3: case 4: sJewel = "nw_it_mring023"; break; case 5: case 6: sJewel = "nw_it_mneck022"; break; } } dbSpeak("Create Jewel"); dbCreateItemOnObject(sJewel, oTarget, 1); } // * returns the valid upper limit for any arcane spell scroll int TrimLevel(int nScroll, int nLevel) { int nMax = 5; switch (nLevel) { case 0: nMax = 4; break; case 1: nMax = 13; break; case 2: nMax = 21; break; case 3: nMax = 15; break; case 4: nMax = 17; break; case 5: nMax = 13; break; case 6: nMax = 14; break; case 7: nMax = 8; break; case 8: nMax = 9; break; case 9: nMax = 12; break; } if (nScroll > nMax) nScroll = nMax; return nScroll; } // * nModifier is to 'raise' the level of the oAdventurer void CreateArcaneScroll(object oTarget, object oAdventurer, int nModifier = 0) { int nMaxSpells = 21; int nHD = GetAdjHitDice(oAdventurer) + nModifier; int nScroll = 1; int nLevel = 1; if (GetRange(1, nHD)) // l 1-2 { nLevel = d2(); nScroll = Random(nMaxSpells) + 1; } else if (GetRange(2, nHD)) // l 1-4 { nLevel = d4(); nScroll = Random(nMaxSpells) + 1; } else if (GetRange(3, nHD)) // l 2-6 { nLevel = d6(); if (nLevel < 2) nLevel = 2; nScroll = Random(nMaxSpells) + 1; } else if (GetRange(4, nHD)) // l 3-8 { nLevel = d8(); if (nLevel < 3) nLevel = 3; nScroll = Random(nMaxSpells) + 1; } else if (GetRange(5, nHD)) // l 4-9 { nLevel = d8() + 1; if (nLevel < 4) nLevel = 4; nScroll = Random(nMaxSpells) + 1; } else if (GetRange(6, nHD)) // 5 -9 { nLevel = d8() + 1; if (nLevel < 5) nLevel = 5; nScroll = Random(nMaxSpells) + 1; } // * Trims the level of the scroll to match the max # of scrolls in each level range nScroll = TrimLevel(nScroll, nLevel); string sRes = "nw_it_sparscr216"; if (nScroll < 10) { sRes = "NW_IT_SPARSCR" + IntToString(nLevel) + "0" + IntToString(nScroll); } else { sRes = "NW_IT_SPARSCR" + IntToString(nLevel) + IntToString(nScroll); } dbCreateItemOnObject(sRes, oTarget, 1); } void CreateDivineScroll(object oTarget, object oAdventurer, int nModifier=0) { int nHD = GetAdjHitDice(oAdventurer) + nModifier; string sScroll = ""; if (GetRange(1, nHD)) { int nRandom = d4(); switch (nRandom) { case 1: sScroll = "nw_it_spdvscr201"; break; case 2: sScroll = "nw_it_spdvscr202"; break; case 3: sScroll = "nw_it_spdvscr203"; break; case 4: sScroll = "nw_it_spdvscr204"; break; } } else if (GetRange(2, nHD)) { int nRandom = d8(); switch (nRandom) { case 1: sScroll = "nw_it_spdvscr201"; break; case 2: sScroll = "nw_it_spdvscr202";break; case 3: sScroll = "nw_it_spdvscr203"; break; case 4: sScroll = "nw_it_spdvscr204"; break; case 5: sScroll = "nw_it_spdvscr301"; break; case 6: sScroll = "nw_it_spdvscr302"; break; case 7: sScroll = "nw_it_spdvscr401"; break; case 8: sScroll = "nw_it_spdvscr402"; break; } } else if (GetRange(3, nHD)) { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sScroll = "nw_it_spdvscr201"; break; case 2: sScroll = "nw_it_spdvscr202"; break; case 3: sScroll = "nw_it_spdvscr203"; break; case 4: sScroll = "nw_it_spdvscr204"; break; case 5: sScroll = "nw_it_spdvscr301"; break; case 6: sScroll = "nw_it_spdvscr302"; break; case 7: sScroll = "nw_it_spdvscr401"; break; case 8: sScroll = "nw_it_spdvscr402"; break; case 9: sScroll = "nw_it_spdvscr501"; break; } } else { int nRandom = Random(7) + 1; switch (nRandom) { case 1: sScroll = "nw_it_spdvscr301"; break; case 2: sScroll = "nw_it_spdvscr302"; break; case 3: sScroll = "nw_it_spdvscr401"; break; case 4: sScroll = "nw_it_spdvscr402"; break; case 5: sScroll = "nw_it_spdvscr501"; break; case 6: sScroll = "nw_it_spdvscr701"; break; case 7: sScroll = "nw_it_spdvscr702"; break; } } dbSpeak("Divine Scroll"); dbCreateItemOnObject(sScroll, oTarget, 1); } void CreateAmmo(object oTarget, object oAdventurer, int nModifier=0) { int nHD = GetAdjHitDice(oAdventurer) + nModifier; string sAmmo = ""; if (GetRange(1, nHD)) // * 200 gp max { int nRandom = d3(); switch (nRandom) { case 1: sAmmo = "nw_wamar001"; break; case 2: sAmmo = "nw_wambo001"; break; case 3: sAmmo = "nw_wambu001"; break; } } else if (GetRange(2, nHD)) // * 800 gp max { int nRandom = d6(); switch (nRandom) { case 1: sAmmo = "nw_wamar001"; break; case 2: sAmmo = "nw_wambo001"; break; case 3: sAmmo = "nw_wambu001"; break; case 4: sAmmo = "nw_wammar001"; break; case 5: sAmmo = "nw_wammbo001"; break; case 6: sAmmo = "nw_wammbo002"; break; } } else if (GetRange(3, nHD)) // * - 2500 gp { int nRandom = d20(); switch (nRandom) { case 1: sAmmo = "nw_wamar001"; break; case 2: sAmmo = "nw_wambo001"; break; case 3: sAmmo = "nw_wambu001"; break; case 4: sAmmo = "nw_wammar001"; break; case 5: sAmmo = "nw_wammbo001"; break; case 6: sAmmo = "nw_wammbo002"; break; case 7: sAmmo = "nw_wammbo003"; break; case 8: sAmmo = "nw_wammbu002"; break; case 9: sAmmo = "nw_wammar002"; break; case 10: sAmmo = "nw_wammar001"; break; case 11: sAmmo = "nw_wammar003"; break; case 12: sAmmo = "nw_wammar004"; break; case 13: sAmmo = "nw_wammar005"; break; case 14: sAmmo = "nw_wammar006"; break; case 15: sAmmo = "nw_wammbo004"; break; case 16: sAmmo = "nw_wammbo005"; break; case 17: sAmmo = "nw_wammbu004"; break; case 18: sAmmo = "nw_wammbu005"; break; case 19: sAmmo = "nw_wammbu006"; break; case 20: sAmmo = "nw_wammbu007"; break; } } else { int nRandom = d20(); switch (nRandom) { case 1: sAmmo = "nw_wamar001"; break; case 2: sAmmo = "nw_wammbu001"; break; case 3: sAmmo = "nw_wammbu003"; break; case 4: sAmmo = "nw_wammar001"; break; case 5: sAmmo = "nw_wammbo001"; break; case 6: sAmmo = "nw_wammbo002"; break; case 7: sAmmo = "nw_wammbo003"; break; case 8: sAmmo = "nw_wammbu002"; break; case 9: sAmmo = "nw_wammar002"; break; case 10: sAmmo = "nw_wammar001"; break; case 11: sAmmo = "nw_wammar003"; break; case 12: sAmmo = "nw_wammar004"; break; case 13: sAmmo = "nw_wammar005"; break; case 14: sAmmo = "nw_wammar006"; break; case 15: sAmmo = "nw_wammbo004"; break; case 16: sAmmo = "nw_wammbo005"; break; case 17: sAmmo = "nw_wammbu004"; break; case 18: sAmmo = "nw_wammbu005"; break; case 19: sAmmo = "nw_wammbu006"; break; case 20: sAmmo = "nw_wammbu007"; break; } } dbSpeak("ammo"); dbCreateItemOnObject(sAmmo, oTarget, Random(30) + 1); // create up to 30 of the specified ammo type } void CreateTrapKit(object oTarget, object oAdventurer, int nModifier = 0) { int nHD = GetAdjHitDice(oAdventurer) + nModifier; string sKit = ""; if (GetRange(1, nHD)) // 200 { int nRandom = d3(); switch (nRandom) { case 1: sKit = "nw_it_trap001"; break; case 2: sKit = "nw_it_trap029"; break; case 3: sKit = "nw_it_trap033"; break; } } else if (GetRange(2, nHD)) // 800 { int nRandom = d12(); switch (nRandom) { case 1: sKit = "nw_it_trap001"; break; case 2: sKit = "nw_it_trap029"; break; case 3: sKit = "nw_it_trap033"; break; case 4: sKit = "nw_it_trap002"; break; case 5: sKit = "nw_it_trap030"; break; case 6: sKit = "nw_it_trap037"; break; case 7: sKit = "nw_it_trap034"; break; case 8: sKit = "nw_it_trap005"; break; case 9: sKit = "nw_it_trap038"; break; case 10: sKit = "nw_it_trap041"; break; case 11: sKit = "nw_it_trap003"; break; case 12: sKit = "nw_it_trap031"; break; } } else if (GetRange(3, nHD)) // 200 - 2500 { int nRandom = Random(17) + 1; switch (nRandom) { case 1: sKit = "nw_it_trap002"; break; case 2: sKit = "nw_it_trap030"; break; case 3: sKit = "nw_it_trap037"; break; case 4: sKit = "nw_it_trap034"; break; case 5: sKit = "nw_it_trap005"; break; case 6: sKit = "nw_it_trap038"; break; case 7: sKit = "nw_it_trap041"; break; case 8: sKit = "nw_it_trap003"; break; case 9: sKit = "nw_it_trap031"; break; case 10: sKit = "nw_it_trap035"; break; case 11: sKit = "nw_it_trap006"; break; case 12: sKit = "nw_it_trap042"; break; case 13: sKit = "nw_it_trap004"; break; case 14: sKit = "nw_it_trap032"; break; case 15: sKit = "nw_it_trap039"; break; case 16: sKit = "nw_it_trap009"; break; case 17: sKit = "nw_it_trap036"; break; } } else if (GetRange(4, nHD)) // 800 - 10000 { int nRandom = Random(19) + 1; switch (nRandom) { case 1: sKit = "nw_it_trap035"; break; case 2: sKit = "nw_it_trap006"; break; case 3: sKit = "nw_it_trap042"; break; case 4: sKit = "nw_it_trap004"; break; case 5: sKit = "nw_it_trap032"; break; case 6: sKit = "nw_it_trap039"; break; case 7: sKit = "nw_it_trap009"; break; case 8: sKit = "nw_it_trap036"; break; case 9: sKit = "nw_it_trap013"; break; case 10: sKit = "nw_it_trap040"; break; case 11: sKit = "nw_it_trap007"; break; case 12: sKit = "nw_it_trap043"; break; case 13: sKit = "nw_it_trap010"; break; case 14: sKit = "nw_it_trap017"; break; case 15: sKit = "nw_it_trap021"; break; case 16: sKit = "nw_it_trap014"; break; case 17: sKit = "nw_it_trap025"; break; case 18: sKit = "nw_it_trap008"; break; case 19: sKit = "nw_it_trap044"; break; } } else if (GetRange(5, nHD)) // 2000 -16500 { int nRandom = Random(18) + 1; switch (nRandom) { case 1: sKit = "nw_it_trap039"; break; case 2: sKit = "nw_it_trap009"; break; case 3: sKit = "nw_it_trap036"; break; case 4: sKit = "nw_it_trap013"; break; case 5: sKit = "nw_it_trap040"; break; case 6: sKit = "nw_it_trap007"; break; case 7: sKit = "nw_it_trap043"; break; case 8: sKit = "nw_it_trap010"; break; case 9: sKit = "nw_it_trap017"; break; case 10: sKit = "nw_it_trap021"; break; case 11: sKit = "nw_it_trap014"; break; case 12: sKit = "nw_it_trap025"; break; case 13: sKit = "nw_it_trap008"; break; case 14: sKit = "nw_it_trap044"; break; case 15: sKit = "nw_it_trap018"; break; case 16: sKit = "nw_it_trap011"; break; case 17: sKit = "nw_it_trap022"; break; case 18: sKit = "nw_it_trap026"; break; } } else if (GetRange(6, nHD)) // 2000 - ? { int nRandom = Random(27) + 1; switch (nRandom) { case 1: sKit = "nw_it_trap039"; break; case 2: sKit = "nw_it_trap009"; break; case 3: sKit = "nw_it_trap036"; break; case 4: sKit = "nw_it_trap013"; break; case 5: sKit = "nw_it_trap040"; break; case 6: sKit = "nw_it_trap007"; break; case 7: sKit = "nw_it_trap043"; break; case 8: sKit = "nw_it_trap010"; break; case 9: sKit = "nw_it_trap017"; break; case 10: sKit = "nw_it_trap021"; break; case 11: sKit = "nw_it_trap014"; break; case 12: sKit = "nw_it_trap025"; break; case 13: sKit = "nw_it_trap008"; break; case 14: sKit = "nw_it_trap044"; break; case 15: sKit = "nw_it_trap018"; break; case 16: sKit = "nw_it_trap011"; break; case 17: sKit = "nw_it_trap022"; break; case 18: sKit = "nw_it_trap026"; break; case 19: sKit = "nw_it_trap015"; break; case 20: sKit = "nw_it_trap012"; break; case 21: sKit = "nw_it_trap019"; break; case 22: sKit = "nw_it_trap023"; break; case 23: sKit = "nw_it_trap016"; break; case 24: sKit = "nw_it_trap027"; break; case 25: sKit = "nw_it_trap020"; break; case 26: sKit = "nw_it_trap024"; break; case 27: sKit = "nw_it_trap028"; break; } } dbSpeak("Create Trapkit"); dbCreateItemOnObject(sKit, oTarget, 1); } void CreateHealingKit(object oTarget, object oAdventurer, int nModifier = 0) { int nHD = GetAdjHitDice(oAdventurer) + nModifier; string sKit = ""; if (GetRange(1, nHD)) // 200 { int nRandom = Random(1) + 1; switch (nRandom) { case 1: sKit = "nw_it_medkit001"; break; } } else if (GetRange(2, nHD)) // 800 { int nRandom = Random(2) + 1; switch (nRandom) { case 1: sKit = "nw_it_medkit001"; break; case 2: sKit = "nw_it_medkit002"; break; } } else if (GetRange(3, nHD)) // 200 - 2500 { int nRandom = Random(2) + 1; switch (nRandom) { case 1: sKit = "nw_it_medkit002"; break; case 2: sKit = "nw_it_medkit003"; break; } } else if (GetRange(4, nHD)) // 800 - 10000 { int nRandom = Random(2) + 1; switch (nRandom) { case 1: sKit = "nw_it_medkit003";break; case 2: sKit = "nw_it_medkit004"; break; } } else if (GetRange(5, nHD)) // 2000 -16500 { int nRandom = Random(2) + 1; switch (nRandom) { case 1: sKit = "nw_it_medkit003"; break; case 2: sKit = "nw_it_medkit004";break; } } else if (GetRange(6, nHD)) // 2000 - ? { int nRandom = Random(2) + 1; switch (nRandom) { case 1: sKit = "nw_it_medkit003"; break; case 2: sKit = "nw_it_medkit004";break; } } dbSpeak("Create Healing Kit"); dbCreateItemOnObject(sKit, oTarget, 1); } void CreateLockPick(object oTarget, object oAdventurer, int nModifier = 0) { int nHD = GetAdjHitDice(oAdventurer) + nModifier; string sKit = ""; if (GetRange(1, nHD)) // 200 { int nRandom = d8(); switch (nRandom) { case 1: sKit = "nw_it_picks001"; break; case 2: sKit = "nw_it_picks002"; break; case 3: sKit = "nw_it_picks001"; break; case 4: sKit = "nw_it_picks001"; break; case 5: sKit = "nw_it_picks001"; break; case 6: sKit = "nw_it_picks001"; break; case 7: sKit = "nw_it_picks001"; break; case 8: sKit = "nw_it_picks001"; break; } } else if (GetRange(2, nHD)) // 800 { int nRandom = d6(); switch (nRandom) { case 1: sKit = "nw_it_picks001"; break; case 2: sKit = "nw_it_picks002"; break; case 3: sKit = "nw_it_picks003"; break; case 4: sKit = "nw_it_picks002"; break; case 5: sKit = "nw_it_picks002"; break; case 6: sKit = "nw_it_picks002"; break; } } else if (GetRange(3, nHD)) // 200 - 2500 { int nRandom = Random(2) + 1; switch (nRandom) { case 1: sKit = "nw_it_picks003"; break; case 2: sKit = "nw_it_picks004"; break; } } else if (GetRange(4, nHD)) // 800 - 10000 { int nRandom = Random(1) + 1; switch (nRandom) { case 1: sKit = "nw_it_picks004"; break; } } else if (GetRange(5, nHD)) // 2000 -16500 { int nRandom = Random(1) + 1; switch (nRandom) { case 1: sKit = "nw_it_picks004"; break; } } else if (GetRange(6, nHD)) // 2000 - ? { int nRandom = Random(1) + 1; switch (nRandom) { case 1: sKit = "nw_it_picks004"; break; } } dbSpeak("Create Lockpick"); dbCreateItemOnObject(sKit, oTarget, 1); } void CreateKit(object oTarget, object oAdventurer, int nModifier = 0) { // * April 23 2002: Major restructuring of this function // * to allow me to switch (Random(8) + 1) { case 1: CreateTrapKit(oTarget, oAdventurer, nModifier); break; case 2: case 3: case 4: case 5: CreateHealingKit(oTarget, oAdventurer, nModifier); break; case 6: case 7: case 8: CreateLockPick(oTarget, oAdventurer, nModifier); break; } } void CreatePotion(object oTarget, object oAdventurer, int nModifier = 0) { string sPotion = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) { int nRandom = d10(); switch (nRandom) { case 1: case 2: case 3: case 4: sPotion = "nw_it_mpotion001"; break; case 5: case 6: case 7: sPotion = "nw_it_mpotion020"; break; case 8: sPotion = "nw_it_mpotion002"; break; case 9: sPotion = "nw_it_mpotion009"; break; case 10: sPotion = "nw_it_mpotion005"; break; } } else if (GetRange(2, nHD)) { int nRandom = Random(29) + 1; switch (nRandom) { case 1: case 2: case 3: sPotion = "nw_it_mpotion001"; break; case 4: case 5: case 6: case 7: case 8: sPotion = "nw_it_mpotion020"; break; case 9: case 10: case 11: case 12: sPotion = "nw_it_mpotion002"; break; case 13: case 14: sPotion = "nw_it_mpotion003"; break; case 15: sPotion = "nw_it_mpotion009"; break; case 16: sPotion = "nw_it_mpotion005"; break; case 17: sPotion = "nw_it_mpotion007"; break; case 18: sPotion = "nw_it_mpotion008"; break; case 19: sPotion = "nw_it_mpotion010"; break; case 20: sPotion = "nw_it_mpotion011"; break; case 21: sPotion = "nw_it_mpotion013"; break; case 22: sPotion = "nw_it_mpotion014"; break; case 23: sPotion = "nw_it_mpotion015"; break; case 24: sPotion = "nw_it_mpotion016"; break; case 25: sPotion = "nw_it_mpotion017"; break; case 26: sPotion = "nw_it_mpotion018"; break; case 27: sPotion = "nw_it_mpotion019"; break; case 28: sPotion = "nw_it_mpotion004"; break; case 29: sPotion = "nw_it_mpotion006"; break; } } else if (GetRange(3, nHD)) { int nRandom = Random(29) + 1; switch (nRandom) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: case 13: case 14: sPotion = "nw_it_mpotion003"; break; case 15: sPotion = "nw_it_mpotion009"; break; case 16: sPotion = "nw_it_mpotion005"; break; case 17: sPotion = "nw_it_mpotion007"; break; case 18: sPotion = "nw_it_mpotion008"; break; case 19: sPotion = "nw_it_mpotion010"; break; case 20: sPotion = "nw_it_mpotion011"; break; case 21: sPotion = "nw_it_mpotion013"; break; case 22: sPotion = "nw_it_mpotion014"; break; case 23: sPotion = "nw_it_mpotion015"; break; case 24: sPotion = "nw_it_mpotion016"; break; case 25: sPotion = "nw_it_mpotion017"; break; case 26: sPotion = "nw_it_mpotion018"; break; case 27: sPotion = "nw_it_mpotion019"; break; case 28: sPotion = "nw_it_mpotion004"; break; case 29: sPotion = "nw_it_mpotion006"; break; } } else if (GetRange(4, nHD)) { int nRandom = Random(29) + 1; switch (nRandom) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: sPotion = "nw_it_mpotion003"; break; case 13: case 14: sPotion = "nw_it_mpotion003"; break; case 15: sPotion = "nw_it_mpotion009"; break; case 16: sPotion = "nw_it_mpotion005"; break; case 17: sPotion = "nw_it_mpotion007"; break; case 18: sPotion = "nw_it_mpotion008"; break; case 19: sPotion = "nw_it_mpotion010"; break; case 20: sPotion = "nw_it_mpotion011"; break; case 21: sPotion = "nw_it_mpotion013"; break; case 22: sPotion = "nw_it_mpotion014"; break; case 23: sPotion = "nw_it_mpotion015"; break; case 24: sPotion = "nw_it_mpotion016"; break; case 25: sPotion = "nw_it_mpotion017"; break; case 26: sPotion = "nw_it_mpotion018"; break; case 27: sPotion = "nw_it_mpotion019"; break; case 28: sPotion = "nw_it_mpotion004"; break; case 29: sPotion = "nw_it_mpotion006"; break; } } else // keep 5 and 6 the same { int nRandom = Random(29) + 1; switch (nRandom) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: sPotion = "nw_it_mpotion003" ; case 10: case 11: case 12: case 13: case 14: sPotion = "nw_it_mpotion003"; break; case 15: sPotion = "nw_it_mpotion009"; break; case 16: sPotion = "nw_it_mpotion005"; break; case 17: sPotion = "nw_it_mpotion007"; break; case 18: sPotion = "nw_it_mpotion008"; break; case 19: sPotion = "nw_it_mpotion010"; break; case 20: sPotion = "nw_it_mpotion011"; break; case 21: sPotion = "nw_it_mpotion013"; break; case 22: sPotion = "nw_it_mpotion014"; break; case 23: sPotion = "nw_it_mpotion015"; break; case 24: sPotion = "nw_it_mpotion016"; break; case 25: sPotion = "nw_it_mpotion017"; break; case 26: sPotion = "nw_it_mpotion018"; break; case 27: sPotion = "nw_it_mpotion019"; break; case 28: sPotion = "nw_it_mpotion004"; break; case 29: sPotion = "nw_it_mpotion006"; break; } } dbSpeak("Create Potion"); dbCreateItemOnObject(sPotion, oTarget, 1); } //:://///////////////////////////////////////////// //:: CreateTable2GenericItem //:: Copyright (c) 2002 Bioware Corp. //::////////////////////////////////////////////// /* Creates an item based upon the class of oAdventurer */ //::////////////////////////////////////////////// //:: Created By: Brent //:: Created On: //::////////////////////////////////////////////// void CreateGenericMiscItem(object oTarget, object oAdventurer, int nModifier=0) { int nHD = GetAdjHitDice(oAdventurer) + nModifier; string sItem = ""; if (GetRange(1, nHD)) // * 200 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_it_mglove004"; break; case 2: sItem = "nw_it_mglove004"; break; case 3: sItem = "nw_it_mglove005"; break; case 4: sItem = "nw_it_mglove006"; break; case 5: sItem = "nw_it_mglove007"; break; case 6: sItem = "nw_it_mglove008"; break; case 7: sItem = "nw_it_mglove009"; break; case 8: sItem = "nw_mcloth006"; break; case 9: sItem = "nw_it_mglove012"; break; } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(25) + 1; switch (nRandom) { case 1: sItem = "nw_mcloth006"; break; case 2: sItem = "nw_it_mring009"; break; case 3: sItem = "nw_it_mring009"; break; case 4: sItem = "nw_it_mring010"; break; case 5: sItem = "nw_it_mring011"; break; case 6: sItem = "nw_it_mboots010"; break; case 7: sItem = "nw_it_mneck024"; break; case 8: sItem = "nw_mcloth007"; break; case 9: sItem = "nw_it_mring024"; break; case 10: sItem = "nw_it_mring012"; break; case 11: sItem = "nw_mcloth008"; break; case 12: sItem = "nw_it_mglove010"; break; case 13: sItem = "nw_it_mglove011"; break; case 14: sItem = "nw_it_mglove013"; break; case 15: sItem = "nw_it_mglove014"; break; case 16: sItem = "nw_it_mglove015"; break; case 17: sItem = "nw_maarcl097"; break; case 18: sItem = "nw_maarcl097"; break; case 19: sItem = "nw_maarcl099"; break; case 20: sItem = "nw_it_mneck032"; break; case 21: sItem = "nw_mcloth010"; break; case 22: sItem = "nw_it_mbracer002"; break; case 23: sItem = "nw_it_mneck001"; break; case 24: sItem = "nw_maarcl055"; break; case 25: sItem = "nw_mcloth009"; break; } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(44) + 1; switch (nRandom) { case 1: sItem = "nw_it_mring009"; break; case 2: sItem = "nw_it_mring009"; break; case 3: sItem = "nw_it_mring010"; break; case 4: sItem = "nw_it_mring011"; break; case 5: sItem = "nw_it_mboots010"; break; case 6: sItem = "nw_it_mneck024"; break; case 7: sItem = "nw_mcloth007"; break; case 8: sItem = "nw_it_mring024"; break; case 9: sItem = "nw_it_mring012"; break; case 10: sItem = "nw_mcloth008"; break; case 11: sItem = "nw_it_mglove010"; break; case 12: sItem = "nw_it_mglove011"; break; case 13: sItem = "nw_it_mglove013"; break; case 14: sItem = "nw_it_mglove014"; break; case 15: sItem = "nw_it_mglove015"; break; case 16: sItem = "nw_it_contain003"; break; case 17: sItem = "nw_maarcl097"; break; case 18: sItem = "nw_maarcl099"; break; case 19: sItem = "nw_it_mneck032"; break; case 20: sItem = "nw_mcloth010"; break; case 21: sItem = "nw_it_mbracer002"; break; case 22: sItem = "nw_it_mneck001"; break; case 23: sItem = "nw_maarcl055"; break; case 24: sItem = "nw_mcloth009"; break; case 25: sItem = "nw_it_mring001"; break; case 26: sItem = "nw_it_mboots001"; break; case 27: sItem = "nw_it_mbracer001"; break; case 28: sItem = "nw_it_mneck007"; break; case 29: sItem = "nw_maarcl096"; break; case 30: sItem = "nw_it_mglove003"; break; case 31: sItem = "nw_it_contain004"; break; case 32: sItem = "nw_it_mneck031"; break; case 33: sItem = "nw_it_mring006"; break; case 34: sItem = "nw_it_mneck006"; break; case 35: sItem = "nw_it_mneck029"; break; case 36: sItem = "nw_it_mring013"; break; case 37: sItem = "nw_it_mboots011"; break; case 38: sItem = "nw_it_mneck025"; break; case 39: sItem = "nw_it_mbelt009"; break; case 40: sItem = "nw_it_mbelt010"; break; case 41: sItem = "nw_it_mbelt011"; break; case 42: sItem = "nw_it_mring025"; break; case 43: sItem = "nw_it_mring025"; break; case 44: sItem = "nw_maarcl031"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(48) + 1; switch (nRandom) { case 1: sItem = "nw_it_mring001"; break; case 2: sItem = "nw_it_mboots001"; break; case 3: sItem = "nw_it_mbracer001"; break; case 4: sItem = "nw_it_mneck007"; break; case 5: sItem = "nw_maarcl096"; break; case 6: sItem = "nw_it_mglove003"; break; case 7: sItem = "nw_it_mneck031"; break; case 8: sItem = "nw_it_mneck031"; break; case 9: sItem = "nw_it_mring006"; break; case 10: sItem = "nw_it_mneck006"; break; case 11: sItem = "nw_it_mneck029"; break; case 12: sItem = "nw_it_mring013"; break; case 13: sItem = "nw_it_mboots011"; break; case 14: sItem = "nw_it_mneck025"; break; case 15: sItem = "nw_it_mbelt009"; break; case 16: sItem = "nw_it_mbelt010"; break; case 17: sItem = "nw_it_mbelt011"; break; case 18: sItem = "nw_it_mring025"; break; case 19: sItem = "nw_it_mring025"; break; case 20: sItem = "nw_it_mbracer007"; break; case 21: sItem = "nw_it_mbracer007"; break; case 22: sItem = "nw_it_mneck012"; break; case 23: sItem = "nw_maarcl088"; break; case 24: sItem = "nw_it_mboots012"; break; case 25: sItem = "nw_it_mneck026"; break; case 26: sItem = "nw_it_mboots006"; break; case 27: sItem = "nw_it_mbracer003"; break; case 28: sItem = "nw_it_mneck008"; break; case 29: sItem = "nw_it_mring008"; break; case 30: sItem = "nw_maarcl056"; break; case 31: sItem = "nw_maarcl092"; break; case 32: sItem = "nw_it_mring014"; break; case 33: sItem = "nw_it_mneck016"; break; case 34: sItem = "nw_it_mboots013"; break; case 35: sItem = "nw_it_mneck027"; break; case 36: sItem = "nw_it_mbracer008"; break; case 37: sItem = "nw_it_mneck013"; break; case 38: sItem = "nw_maarcl089"; break; case 39: sItem = "nw_it_mbelt012"; break; case 40: sItem = "nw_it_mbelt013"; break; case 41: sItem = "nw_it_mbelt014"; break; case 42: sItem = "nw_it_mring027"; break; case 43: sItem = "nw_it_mboots007"; break; case 44: sItem = "nw_it_mbracer004"; break; case 45: sItem = "nw_it_mneck009"; break; case 46: sItem = "nw_it_mring018"; break; case 47: sItem = "nw_maarcl093"; break; case 48: sItem = "nw_it_mboots002"; break; } } else if (GetRange(5, nHD)) // * 2500 - 16500 { int nRandom = Random(42) + 1; switch (nRandom) { case 1: sItem = "nw_it_mbracer007"; break; case 2: sItem = "nw_it_mbracer007"; break; case 3: sItem = "nw_it_mneck012"; break; case 4: sItem = "nw_maarcl088"; break; case 5: sItem = "nw_it_mboots012"; break; case 6: sItem = "nw_it_mneck026"; break; case 7: sItem = "nw_it_mboots006"; break; case 8: sItem = "nw_it_mbracer003"; break; case 9: sItem = "nw_it_mneck008"; break; case 10: sItem = "nw_it_mring008"; break; case 11: sItem = "nw_maarcl056"; break; case 12: sItem = "nw_maarcl092"; break; case 13: sItem = "nw_it_mring014"; break; case 14: sItem = "nw_it_mneck016"; break; case 15: sItem = "nw_it_mboots013"; break; case 16: sItem = "nw_it_mneck027"; break; case 17: sItem = "nw_it_mbracer008"; break; case 18: sItem = "nw_it_mneck013"; break; case 19: sItem = "nw_maarcl089"; break; case 20: sItem = "nw_it_mbelt012"; break; case 21: sItem = "nw_it_mbelt013"; break; case 22: sItem = "nw_it_mbelt014"; break; case 23: sItem = "nw_it_mring027"; break; case 24: sItem = "nw_it_mboots007"; break; case 25: sItem = "nw_it_mbracer004"; break; case 26: sItem = "nw_it_mneck009"; break; case 27: sItem = "nw_it_mring018"; break; case 28: sItem = "nw_maarcl093"; break; case 29: sItem = "nw_it_mboots002"; break; case 30: sItem = "nw_it_mboots014"; break; case 31: sItem = "nw_it_mneck028"; break; case 32: sItem = "nw_it_mring015"; break; case 33: sItem = "nw_it_mbracer009"; break; case 34: sItem = "nw_it_mneck014"; break; case 35: sItem = "nw_maarcl090"; break; case 36: sItem = "nw_it_mring028"; break; case 37: sItem = "nw_it_mneck017"; break; case 38: sItem = "nw_it_mboots008"; break; case 39: sItem = "nw_it_mbracer005"; break; case 40: sItem = "nw_it_mneck010"; break; case 41: sItem = "nw_it_mmidmisc02"; break; case 42: sItem = "nw_it_mring019"; break; } } else if (GetRange(6, nHD)) // * 8000 - 25000 { int nRandom = Random(30) + 1; switch (nRandom) { case 1: sItem = "nw_it_mring027"; break; case 2: sItem = "nw_it_mboots007"; break; case 3: sItem = "nw_it_mbracer004"; break; case 4: sItem = "nw_it_mneck009"; break; case 5: sItem = "nw_it_mring018"; break; case 6: sItem = "nw_maarcl093"; break; case 7: sItem = "nw_it_mboots002"; break; case 8: sItem = "nw_it_mboots014"; break; case 9: sItem = "nw_it_mneck028"; break; case 10: sItem = "nw_it_mring015"; break; case 11: sItem = "nw_it_mbracer009"; break; case 12: sItem = "nw_it_mneck014"; break; case 13: sItem = "nw_maarcl090"; break; case 14: sItem = "nw_it_mring028"; break; case 15: sItem = "nw_it_mneck017"; break; case 16: sItem = "nw_it_mboots008"; break; case 17: sItem = "nw_it_mbracer005"; break; case 18: sItem = "nw_it_mneck010"; break; case 19: sItem = "nw_it_mmidmisc02"; break; case 20: sItem = "nw_maarcl094"; break; case 21: sItem = "nw_it_mring019"; break; case 22: sItem = "nw_it_mring016"; break; case 23: sItem = "nw_it_mbracer010"; break; case 24: sItem = "nw_it_mneck015"; break; case 25: sItem = "nw_maarcl091"; break; case 26: sItem = "nw_it_mboots009"; break; case 27: sItem = "nw_it_mbracer006"; break; case 28: sItem = "nw_it_mneck011"; break; case 29: sItem = "nw_maarcl095"; break; case 30: sItem = "nw_it_mneck018"; break; } } dbSpeak("Create Misc"); dbCreateItemOnObject(sItem, oTarget, 1); } // * this function just returns an item that is more appropriate // * for this class. Only wizards, sorcerers, clerics, monks, rogues and bards get this void CreateGenericClassItem(object oTarget, object oAdventurer, int nSpecific =0) { if (GetLevelByClass(CLASS_TYPE_DRUID, oAdventurer)>= 1) { if (nSpecific == 0) { CreateGenericDruidWeapon(oTarget, oAdventurer); } else { CreateSpecificDruidWeapon(oTarget, oAdventurer); } } else if (GetLevelByClass(CLASS_TYPE_WIZARD, oAdventurer)>= 1 || GetLevelByClass(CLASS_TYPE_SORCERER, oAdventurer) >= 1) { // * 30% chance of getting a magic scroll else get a weapon suited for a wizard if (Random(100) + 1 > 70) { // * grab an arcane scroll as if the wizard had +4 levels CreateArcaneScroll(oTarget, oAdventurer, 4); } else if (nSpecific == 0) { CreateGenericWizardWeapon(oTarget, oAdventurer); } else { CreateSpecificWizardWeapon(oTarget, oAdventurer); } } else if (GetLevelByClass(CLASS_TYPE_CLERIC, oAdventurer)>= 1) { int nRandom = Random(4) + 1; string sItem = "nw_it_medkit001"; switch (nRandom) { case 1: sItem = "nw_it_medkit001"; break; case 2: sItem = "nw_it_medkit002"; break; case 3: sItem = "nw_it_medkit003"; break; case 4: sItem = "nw_it_medkit004"; break; } dbCreateItemOnObject(sItem, oTarget, 1); } else if (GetLevelByClass(CLASS_TYPE_MONK, oAdventurer)>= 1) { dbSpeak("in monk function"); if (nSpecific == 0) { CreateGenericMonkWeapon(oTarget, oAdventurer); } else { CreateSpecificMonkWeapon(oTarget, oAdventurer); } } else if (GetLevelByClass(CLASS_TYPE_ROGUE, oAdventurer)>= 1) { // * give a misc item as if a couple levels higher CreateGenericMiscItem(oTarget, oAdventurer, 2); } else if (GetLevelByClass(CLASS_TYPE_BARD, oAdventurer)>= 1) { // * give a misc item as if a couple levels higher CreateGenericMiscItem(oTarget, oAdventurer, 2); } } void CreateGenericRodStaffWand(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 200 { int nRandom = Random(3) + 1; switch (nRandom) { case 1: sItem = "nw_wmgwn013"; break; case 2: sItem = "nw_wmgwn006"; break; case 3: sItem = "nw_it_gem002"; break; // gem for variety } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(3) + 1; switch (nRandom) { case 1: sItem = "nw_wmgwn013"; break; case 2: sItem = "nw_wmgwn006"; break; case 3: sItem = "nw_it_gem002"; break;// gem for variety } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(4) + 1; switch (nRandom) { case 1: sItem = "nw_wmgwn006"; break; case 2: sItem = "nw_wmgwn004"; break; case 3: sItem = "nw_wmgrd002"; break; case 4: sItem = "nw_wmgwn012"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(11) + 1; switch (nRandom) { case 1: sItem = "nw_wmgwn004"; break; case 2: sItem = "nw_wmgwn002"; break; case 3: sItem = "nw_wmgwn007"; break; case 4: sItem = "nw_wmgwn003"; break; case 5: sItem = "nw_wmgwn010"; break; case 6: sItem = "nw_wmgwn011"; break; case 7: sItem = "nw_wmgwn005"; break; case 8: sItem = "nw_wmgwn008"; break; case 9: sItem = "nw_wmgwn009"; break; case 10: sItem = "nw_wmgrd002"; break; case 11: sItem = "nw_wmgwn012"; break; } } else // * 2500 - 16500 { int nRandom = d8(); switch (nRandom) { case 1: sItem = "nw_wmgwn002"; break; case 2: sItem = "nw_wmgwn007"; break; case 3: sItem = "nw_wmgwn003"; break; case 4: sItem = "nw_wmgwn010"; break; case 5: sItem = "nw_wmgwn011"; break; case 6: sItem = "nw_wmgwn005"; break; case 7: sItem = "nw_wmgwn008"; break; case 8: sItem = "nw_wmgwn009"; break; } } dbSpeak("Generic Rod staff wand"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateGenericMonkWeapon(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 200 { int nRandom = Random(10) + 1; switch (nRandom) { case 1: sItem = "nw_wthsh001"; break; case 2: sItem = "nw_wblcl001"; break; case 3: sItem = "nw_wdbqs001"; break; case 4: sItem = "nw_wbwsl001"; break; case 5: sItem = "nw_wswdg001"; break; case 6: sItem = "nw_wspka001"; break; case 7: sItem = "nw_wbwxh001"; break; case 8: sItem = "nw_waxhn001"; break; case 9: sItem = "nw_wbwxl001"; break; case 10: sItem = "nw_wthmsh002"; break; } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(14) + 1; switch (nRandom) { case 1: sItem = "nw_wthsh001"; break; case 2: sItem = "nw_wblcl001"; break; case 3: sItem = "nw_wdbqs001"; break; case 4: sItem = "nw_wbwsl001"; break; case 5: sItem = "nw_wswdg001"; break; case 6: sItem = "nw_wspka001"; break; case 7: sItem = "nw_wbwxh001"; break; case 8: sItem = "nw_waxhn001"; break; case 9: sItem = "nw_wbwxl001"; break; case 10: sItem = "nw_wthmsh002"; break; case 11: sItem = "nw_wbwmsl001"; break; case 12: sItem = "nw_wbwmxh002"; break; case 13: sItem = "nw_wthmsh008"; break; case 14: sItem = "nw_wbwmxl002"; break; } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(13) + 1; switch (nRandom) { case 1: sItem = "nw_wbwmsl001"; break; case 2: sItem = "nw_wbwmxh002"; break; case 3: sItem = "nw_wthmsh008"; break; case 4: sItem = "nw_wbwmxl002"; break; case 5: sItem = "nw_wthmsh009"; break; case 6: sItem = "nw_wblmcl002"; break; case 7: sItem = "nw_wdbmqs002"; break; case 8: sItem = "nw_wswmdg002"; break; case 9: sItem = "nw_wspmka002"; break; case 10: sItem = "nw_waxmhn002"; break; case 11: sItem = "nw_wbwmsl009"; break; case 12: sItem = "nw_wbwmxh008"; break; case 13: sItem = "nw_wbwmxl008"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(17) + 1; switch (nRandom) { case 1: sItem = "nw_wthmsh009"; break; case 2: sItem = "nw_wblmcl002"; break; case 3: sItem = "nw_wdbmqs002"; break; case 4: sItem = "nw_wswmdg002"; break; case 5: sItem = "nw_wspmka002"; break; case 6: sItem = "nw_waxmhn002"; break; case 7: sItem = "nw_wbwmsl009"; break; case 8: sItem = "nw_wbwmxh008"; break; case 9: sItem = "nw_wbwmxl008"; break; case 10: sItem = "nw_wbwmsl010"; break; case 11: sItem = "nw_wbwmxh009"; break; case 12: sItem = "nw_wbwmxl009"; break; case 13: sItem = "nw_wblmcl010"; break; case 14: sItem = "nw_wdbmqs008"; break; case 15: sItem = "nw_wswmdg008"; break; case 16: sItem = "nw_wspmka008"; break; case 17: sItem = "nw_waxmhn010"; break; } } else // * 2500 - 16500 { int nRandom = Random(13) + 1; switch (nRandom) { case 1: sItem = "nw_wbwmsl010"; break; case 2: sItem = "nw_wbwmxh009"; break; case 3: sItem = "nw_wbwmxl009"; break; case 4: sItem = "nw_wblmcl010"; break; case 5: sItem = "nw_wdbmqs008"; break; case 6: sItem = "nw_wswmdg008"; break; case 7: sItem = "nw_wspmka008"; break; case 8: sItem = "nw_waxmhn010"; break; case 9: sItem = "nw_wblmcl011"; break; case 10: sItem = "nw_wdbmqs009"; break; case 11: sItem = "nw_wswmdg009"; break; case 12: sItem = "nw_wspmka009"; break; case 13: sItem = "nw_waxmhn011"; break; } } dbSpeak("Generic Monk Weapon"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateSpecificMonkWeapon(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 800 { int nRandom = Random(3) + 1; switch (nRandom) { case 1: sItem = "nw_wthmsh003"; break; case 2: sItem = "nw_wthmsh006"; break; case 3: CreateGenericMonkWeapon(oTarget, oAdventurer, JUMP_LEVEL); return; break; } } else if (GetRange(2, nHD)) // * 2500 { int nRandom = Random(8) + 1; switch (nRandom) { case 1: sItem = "nw_wthmsh003"; break; case 2: sItem = "nw_wthmsh006"; break; case 3: sItem = "nw_wthmsh004"; break; case 4: sItem = "nw_wthmsh007"; break; case 5: sItem = "NW_IT_MGLOVE016"; break; case 6: sItem = "NW_IT_MGLOVE021"; break; case 7: sItem = "NW_IT_MGLOVE026"; break; case 8: CreateGenericMonkWeapon(oTarget, oAdventurer, JUMP_LEVEL); return; break; } } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(21) + 1; switch (nRandom) { case 1: sItem = "nw_wthmsh006"; break; case 2: sItem = "nw_wthmsh004"; break; case 3: sItem = "nw_wthmsh007"; break; case 4: sItem = "nw_wbwmsl005"; break; case 5: sItem = "nw_wbwmxh005"; break; case 6: sItem = "nw_wspmka004"; break; case 7: sItem = "nw_wbwmxl005"; break; case 8: sItem = "nw_wspmka007"; break; case 9: sItem = "nw_wswmdg006"; break; case 10: sItem = "nw_wspmka005"; break; case 11: sItem = "NW_IT_MGLOVE016"; break; case 12: sItem = "NW_IT_MGLOVE021"; break; case 13: sItem = "NW_IT_MGLOVE026"; break; case 14: sItem = "NW_IT_MGLOVE017"; break; case 15: sItem = "NW_IT_MGLOVE022"; break; case 16: sItem = "NW_IT_MGLOVE027"; break; case 17: sItem = "NW_IT_MGLOVE018"; break; case 18: sItem = "NW_IT_MGLOVE023"; break; case 19: sItem = "NW_IT_MGLOVE028"; break; case 20: sItem = "NW_IT_MGLOVE029"; break; case 21: sItem = "NW_IT_MGLOVE030"; break; } } else if (GetRange(4, nHD)) // * 2500 -16500 { int nRandom = Random(22) + 1; switch (nRandom) { case 1: sItem = "nw_wbwmsl005"; break; case 2: sItem = "nw_wbwmxh005"; break; case 3: sItem = "nw_wspmka004"; break; case 4: sItem = "nw_wbwmxl005"; break; case 5: sItem = "nw_wspmka007"; break; case 6: sItem = "nw_wswmdg006"; break; case 7: sItem = "nw_wspmka005"; break; case 8: sItem = "nw_wblmcl004"; break; case 9: sItem = "nw_wblmcl003"; break; case 10: sItem = "nw_wbwmsl003"; break; case 11: sItem = "nw_wbwmxh003"; break; case 12: sItem = "nw_waxmhn004"; break; case 13: sItem = "nw_wbwmxl003"; break; case 14: sItem = "NW_IT_MGLOVE017"; break; case 15: sItem = "NW_IT_MGLOVE022"; break; case 16: sItem = "NW_IT_MGLOVE018"; break; case 17: sItem = "NW_IT_MGLOVE023"; break; case 18: sItem = "NW_IT_MGLOVE028"; break; case 19: sItem = "NW_IT_MGLOVE029"; break; case 20: sItem = "NW_IT_MGLOVE030"; break; case 21: sItem = "NW_IT_MGLOVE019"; break; case 22: sItem = "NW_IT_MGLOVE024"; break; } } else // * 16000 + { int nRandom = Random(24) + 1; switch (nRandom) { case 1: sItem = "nw_wbwmxl003"; break; case 2: sItem = "nw_wspmka006"; break; case 3: sItem = "nw_wbwmxl004"; break; case 4: sItem = "nw_wspmka003"; break; case 5: sItem = "nw_wbwmxl007"; break; case 6: sItem = "nw_waxmhn003"; break; case 7: sItem = "nw_wblmcl005"; break; case 8: sItem = "nw_wswmdg004"; break; case 9: sItem = "nw_wbwmsl007"; break; case 10: sItem = "nw_wbwmxh004"; break; case 11: sItem = "nw_waxmhn005"; break; case 12: sItem = "nw_wbwmxh007"; break; case 13: sItem = "nw_wswmdg003"; break; case 14: sItem = "nw_wswmdg007"; break; case 15: sItem = "nw_wbwmsl006"; break; case 16: sItem = "nw_wbwmsl007"; break; case 17: sItem = "nw_wblmcl006"; break; case 18: sItem = "nw_wbwmsl004"; break; case 19: sItem = "nw_waxmhn006"; break; case 20: sItem = "nw_wbwmxh006"; break; case 21: sItem = "nw_wswmdg005"; break; case 22: sItem = "nw_wbwmxl006"; break; case 23: sItem = "NW_IT_MGLOVE020"; break; case 24: sItem = "NW_IT_MGLOVE025"; break; } } dbSpeak("Specific Monk Weapon"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateGenericDruidWeapon(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 200 { int nRandom = Random(8) + 1; switch (nRandom) { case 1: sItem = "nw_wthdt001"; break; case 2: sItem = "nw_wblcl001"; break; case 3: sItem = "nw_wdbqs001"; break; case 4: sItem = "nw_wplss001"; break; case 5: sItem = "nw_wswdg001"; break; case 6: sItem = "nw_wspsc001"; break; case 7: sItem = "nw_wswsc001"; break; case 8: sItem = "nw_wthmdt002"; break; } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(11) + 1; switch (nRandom) { case 1: sItem = "nw_wthdt001"; break; case 2: sItem = "nw_wblcl001"; break; case 3: sItem = "nw_wdbqs001"; break; case 4: sItem = "nw_wplss001"; break; case 5: sItem = "nw_wswdg001"; break; case 6: sItem = "nw_wspsc001"; break; case 7: sItem = "nw_wswsc001"; break; case 8: sItem = "nw_wthmdt002"; break; case 9: sItem = "nw_wthmdt005"; break; case 10: sItem = "nw_wbwmsl001"; break; case 11: sItem = "nw_wthmdt008"; break; } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(13) + 1; switch (nRandom) { case 1: sItem = "nw_wthmdt005"; break; case 2: sItem = "nw_wbwmsl001"; break; case 3: sItem = "nw_wthmdt008"; break; case 4: sItem = "nw_wthmdt009"; break; case 5: sItem = "nw_wthmdt006"; break; case 6: sItem = "nw_wblmcl002"; break; case 7: sItem = "nw_wdbmqs002"; break; case 8: sItem = "nw_wplmss002"; break; case 9: sItem = "nw_wswmdg002"; break; case 10: sItem = "nw_wspmsc002"; break; case 11: sItem = "nw_wswmsc002"; break; case 12: sItem = "nw_wthmdt003"; break; case 13: sItem = "nw_wbwmsl009"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(19) + 1; switch (nRandom) { case 1: sItem = "nw_wthmdt009"; break; case 2: sItem = "nw_wthmdt006"; break; case 3: sItem = "nw_wblmcl002"; break; case 4: sItem = "nw_wdbmqs002"; break; case 5: sItem = "nw_wplmss002"; break; case 6: sItem = "nw_wswmdg002"; break; case 7: sItem = "nw_wspmsc002"; break; case 8: sItem = "nw_wswmsc002"; break; case 9: sItem = "nw_wthmdt003"; break; case 10: sItem = "nw_wbwmsl009"; break; case 11: sItem = "nw_wthmdt007"; break; case 12: sItem = "nw_wthmdt004"; break; case 13: sItem = "nw_wbwmsl010"; break; case 14: sItem = "nw_wblmcl010"; break; case 15: sItem = "nw_wdbmqs008"; break; case 16: sItem = "nw_wplmss010"; break; case 17: sItem = "nw_wswmdg008"; break; case 18: sItem = "nw_wspmsc010"; break; case 19: sItem = "nw_wswmsc010"; break; } } else // * 2500 - 16500 { int nRandom = Random(15) + 1; switch (nRandom) { case 1: sItem = "nw_wthmdt007"; break; case 2: sItem = "nw_wthmdt004"; break; case 3: sItem = "nw_wbwmsl010"; break; case 4: sItem = "nw_wblmcl010"; break; case 5: sItem = "nw_wdbmqs008"; break; case 6: sItem = "nw_wplmss010"; break; case 7: sItem = "nw_wswmdg008"; break; case 8: sItem = "nw_wspmsc010"; break; case 9: sItem = "nw_wswmsc010"; break; case 10: sItem = "nw_wblmcl011"; break; case 11: sItem = "nw_wdbmqs009"; break; case 12: sItem = "nw_wplmss011"; break; case 13: sItem = "nw_wswmdg009"; break; case 14: sItem = "nw_wspmsc011"; break; case 15: sItem = "nw_wswmsc011"; break; } } dbSpeak("Generic Druid weapon"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateSpecificDruidWeapon(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 800 { CreateGenericDruidWeapon(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(2, nHD)) // * 2500 { CreateGenericDruidWeapon(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(5) + 1; switch (nRandom) { case 1: sItem = "nw_wdbmqs005"; break; case 2: sItem = "nw_wdbmqs006"; break; case 3: sItem = "nw_wbwmsl005"; break; case 4: sItem = "nw_wswmdg006"; break; case 5: CreateGenericDruidWeapon(oTarget, oAdventurer, JUMP_LEVEL); return; break; } } else if (GetRange(4, nHD)) // * 2500 -16500 { int nRandom = Random(10) + 1; switch (nRandom) { case 1: sItem = "nw_wdbmqs005"; break; case 2: sItem = "nw_wdbmqs006"; break; case 3: sItem = "nw_wbwmsl005"; break; case 4: sItem = "nw_wswmdg006"; break; case 5: sItem = "nw_wblmcl004"; break; case 6: sItem = "nw_wdbmqs004"; break; case 7: sItem = "nw_wblmcl003"; break; case 8: sItem = "nw_wbwmsl003"; break; case 9: sItem = "nw_wswmsc004"; break; case 10: sItem = "nw_wplmss005"; break; } } else // * 16000 + { int nRandom = Random(18) + 1; switch (nRandom) { case 1: sItem = "nw_wdbmqs003"; break; case 2: sItem = "nw_wblmcl005"; break; case 3: sItem = "nw_wplmss007"; break; case 4: sItem = "nw_wswmdg004"; break; case 5: sItem = "nw_wbwmsl007"; break; case 6: sItem = "nw_wplmss006"; break; case 7: sItem = "nw_wswmsc006"; break; case 8: sItem = "nw_wswmdg003"; break; case 9: sItem = "nw_wswmdg007"; break; case 10: sItem = "nw_wswmsc007"; break; case 11: sItem = "nw_wbwmsl006"; break; case 12: sItem = "nw_wbwmsl007"; break; case 13: sItem = "nw_wdbmqs007"; break; case 14: sItem = "nw_wblmcl006"; break; case 15: sItem = "nw_wbwmsl004"; break; case 16: sItem = "nw_wswmsc005"; break; case 17: sItem = "nw_wplmss004"; break; case 18: sItem = "nw_wswmdg005"; break; } } dbSpeak("specific druid weapon"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateGenericWizardWeapon(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 200 { int nRandom = Random(5) + 1; switch (nRandom) { case 1: sItem = "nw_wblcl001"; break; case 2: sItem = "nw_wdbqs001"; break; case 3: sItem = "nw_wswdg001"; break; case 4: sItem = "nw_wbwxh001"; break; case 5: sItem = "nw_wbwxl001"; break; } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(6) + 1; switch (nRandom) { case 1: sItem = "nw_wblcl001"; break; case 2: sItem = "nw_wdbqs001"; break; case 3: sItem = "nw_wswdg001"; break; case 4: sItem = "nw_wbwxh001"; break; case 5: sItem = "nw_wbwxl001"; break; case 6: sItem = "nw_wbwmxl002"; break; } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(6) + 1; switch (nRandom) { case 1: sItem = "nw_wbwmxl002"; break; case 2: sItem = "nw_wblmcl002"; break; case 3: sItem = "nw_wdbmqs002"; break; case 4: sItem = "nw_wswmdg002"; break; case 5: sItem = "nw_wbwmxh008"; break; case 6: sItem = "nw_wbwmxl008"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(10) + 1; switch (nRandom) { case 1: sItem = "nw_wblmcl002"; break; case 2: sItem = "nw_wdbmqs002"; break; case 3: sItem = "nw_wswmdg002"; break; case 4: sItem = "nw_wbwmxh008"; break; case 5: sItem = "nw_wbwmxl008"; break; case 6: sItem = "nw_wbwmxh009"; break; case 7: sItem = "nw_wbwmxl009"; break; case 8: sItem = "nw_wblmcl010"; break; case 9: sItem = "nw_wdbmqs008"; break; case 10: sItem = "nw_wswmdg008"; break; } } else // * 2500 - 16500 { int nRandom = Random(8) + 1; switch (nRandom) { case 1: sItem = "nw_wbwmxh009"; break; case 2: sItem = "nw_wbwmxl009"; break; case 3: sItem = "nw_wblmcl010"; break; case 4: sItem = "nw_wdbmqs008"; break; case 5: sItem = "nw_wswmdg008"; break; case 6: sItem = "nw_wblmcl011"; break; case 7: sItem = "nw_wdbmqs009"; break; case 8: sItem = "nw_wswmdg009"; break; } } dbSpeak("Generic Wizard or Sorcerer Weapon"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateSpecificWizardWeapon(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 800 { CreateGenericWizardWeapon(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(2, nHD)) // * 2500 { CreateGenericWizardWeapon(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(5) + 1; switch (nRandom) { case 1: sItem = "nw_wdbmqs005"; break; case 2: sItem = "nw_wdbmqs006"; break; case 3: sItem = "nw_wbwmxh005"; break; case 4: sItem = "nw_wbwmxl005"; break; case 5: sItem = "nw_wswmdg006"; break; } } else if (GetRange(4, nHD)) // * 2500 -16500 { int nRandom = Random(10) + 1; switch (nRandom) { case 1: sItem = "nw_wdbmqs005"; break; case 2: sItem = "nw_wdbmqs006"; break; case 3: sItem = "nw_wbwmxh005"; break; case 4: sItem = "nw_wbwmxl005"; break; case 5: sItem = "nw_wswmdg006"; break; case 6: sItem = "nw_wblmcl004"; break; case 7: sItem = "nw_wdbmqs004"; break; case 8: sItem = "nw_wblmcl003"; break; case 9: sItem = "nw_wbwmxh003"; break; case 10: sItem = "nw_wbwmxl003"; break; } } else // * 16000 + { int nRandom = Random(15) + 1; switch (nRandom) { case 1: sItem = "nw_wbwmxl003"; break; case 2: sItem = "nw_wdbmqs003"; break; case 3: sItem = "nw_wbwmxl004"; break; case 4: sItem = "nw_wbwmxl007"; break; case 5: sItem = "nw_wblmcl005"; break; case 6: sItem = "nw_wswmdg004"; break; case 7: sItem = "nw_wbwmxh004"; break; case 8: sItem = "nw_wbwmxh007"; break; case 9: sItem = "nw_wswmdg003"; break; case 10: sItem = "nw_wswmdg007"; break; case 11: sItem = "nw_wdbmqs007"; break; case 12: sItem = "nw_wblmcl006"; break; case 13: sItem = "nw_wbwmxh006"; break; case 14: sItem = "nw_wswmdg005"; break; case 15: sItem = "nw_wbwmxl006"; break; } } dbSpeak("Specific Wizard or Sorcerer Weapon"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateGenericSimple(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 200 { int nRandom = d12(); switch (nRandom) { case 1: sItem = "nw_wthdt001"; break; case 2: sItem = "nw_wblcl001"; break; case 3: sItem = "nw_wbwsl001"; break; case 4: sItem = "nw_wplss001"; break; case 5: sItem = "nw_wdbqs001"; break; case 6: sItem = "nw_wswdg001"; break; case 7: sItem = "nw_wblml001"; break; case 8: sItem = "nw_wbwxh001"; break; case 9: sItem = "nw_wspsc001"; break; case 10: sItem = "nw_wblms001"; break; case 11: sItem = "nw_wbwxl001"; break; case 12: sItem = "nw_wthmdt002"; break; } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(17) + 1; switch (nRandom) { case 1: sItem = "nw_wthdt001"; break; case 2: sItem = "nw_wblcl001"; break; case 3: sItem = "nw_wbwsl001"; break; case 4: sItem = "nw_wplss001"; break; case 5: sItem = "nw_wdbqs001"; break; case 6: sItem = "nw_wswdg001"; break; case 7: sItem = "nw_wblml001"; break; case 8: sItem = "nw_wbwxh001"; break; case 9: sItem = "nw_wspsc001"; break; case 10: sItem = "nw_wblms001"; break; case 11: sItem = "nw_wbwxl001"; break; case 12: sItem = "nw_wthmdt002"; break; case 13: sItem = "nw_wthmdt005"; break; case 14: sItem = "nw_wbwmsl001"; break; case 15: sItem = "nw_wbwmxh002"; break; case 16: sItem = "nw_wthmdt008"; break; case 17: sItem = "nw_wbwmxl002"; break; } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(19) + 1; switch (nRandom) { case 1: sItem = "nw_wthmdt005"; break; case 2: sItem = "nw_wbwmsl001"; break; case 3: sItem = "nw_wbwmxh002"; break; case 4: sItem = "nw_wthmdt008"; break; case 5: sItem = "nw_wbwmxl002"; break; case 6: sItem = "nw_wthmdt009"; break; case 7: sItem = "nw_wthmdt006"; break; case 8: sItem = "nw_wblmcl002"; break; case 9: sItem = "nw_wplmss002"; break; case 10: sItem = "nw_wdbmqs002"; break; case 11: sItem = "nw_wswmdg002"; break; case 12: sItem = "nw_wblmml002"; break; case 13: sItem = "nw_wspmsc002"; break; case 14: sItem = "nw_wblmms002"; break; case 15: sItem = "nw_wthmdt003"; break; case 16: sItem = "nw_wthmdt003"; break; case 17: sItem = "nw_wbwmsl009"; break; case 18: sItem = "nw_wbwmxh008"; break; case 19: sItem = "nw_wbwmxl008"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(27) + 1; switch (nRandom) { case 1: sItem = "nw_wthmdt009"; break; case 2: sItem = "nw_wthmdt006"; break; case 3: sItem = "nw_wblmcl002"; break; case 4: sItem = "nw_wplmss002"; break; case 5: sItem = "nw_wdbmqs002"; break; case 6: sItem = "nw_wswmdg002"; break; case 7: sItem = "nw_wblmml002"; break; case 8: sItem = "nw_wspmsc002"; break; case 9: sItem = "nw_wblmms002"; break; case 10: sItem = "nw_wthmdt003"; break; case 11: sItem = "nw_wthmdt003"; break; case 12: sItem = "nw_wbwmsl009"; break; case 13: sItem = "nw_wbwmxh008"; break; case 14: sItem = "nw_wbwmxl008"; break; case 15: sItem = "nw_wthmdt007"; break; case 16: sItem = "nw_wthmdt004"; break; case 17: sItem = "nw_wbwmsl010"; break; case 18: sItem = "nw_wbwmxh009"; break; case 19: sItem = "nw_wbwmxl009"; break; case 20: sItem = "nw_wbwmsl005"; break; case 21: sItem = "nw_wblmcl010"; break; case 22: sItem = "nw_wplmss010"; break; case 23: sItem = "nw_wdbmqs008"; break; case 24: sItem = "nw_wswmdg008"; break; case 25: sItem = "nw_wblmml011"; break; case 26: sItem = "nw_wspmsc010"; break; case 27: sItem = "nw_wblmms010"; break; } } else if (GetRange(5, nHD)) // * 2500 - 16500 { int nRandom = Random(23) + 1; switch (nRandom) { case 1: sItem = "nw_wthmdt007"; break; case 2: sItem = "nw_wthmdt004"; break; case 3: sItem = "nw_wbwmsl010"; break; case 4: sItem = "nw_wbwmxh009"; break; case 5: sItem = "nw_wbwmxl009"; break; case 6: sItem = "nw_wbwmsl005"; break; case 7: sItem = "nw_wblmcl010"; break; case 8: sItem = "nw_wplmss010"; break; case 9: sItem = "nw_wdbmqs008"; break; case 10: sItem = "nw_wswmdg008"; break; case 11: sItem = "nw_wblmml011"; break; case 12: sItem = "nw_wspmsc010"; break; case 13: sItem = "nw_wblmms010"; break; case 14: sItem = "nw_wblmms010"; break; case 15: sItem = "nw_wblmms010"; break; case 16: sItem = "nw_wblmms010"; break; case 17: sItem = "nw_wblmcl011"; break; case 18: sItem = "nw_wplmss011"; break; case 19: sItem = "nw_wdbmqs009"; break; case 20: sItem = "nw_wswmdg009"; break; case 21: sItem = "nw_wblmml012"; break; case 22: sItem = "nw_wspmsc011"; break; case 23: sItem = "nw_wblmms011"; break; } } else if (GetRange(6, nHD)) // * 8000 - 25000 { int nRandom = Random(7) + 1; switch (nRandom) { case 1: sItem = "nw_wblmcl011"; break; case 2: sItem = "nw_wplmss011"; break; case 3: sItem = "nw_wdbmqs009"; break; case 4: sItem = "nw_wswmdg009"; break; case 5: sItem = "nw_wblmml012"; break; case 6: sItem = "nw_wspmsc011"; break; case 7: sItem = "nw_wblmms011"; break; } } dbSpeak("Create Generic SImple; Specific = " + IntToString(nModifier)); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateGenericMartial(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) +nModifier; if (GetRange(1, nHD)) // * 200 { int nRandom = Random(17) + 1; switch (nRandom) { case 1: sItem = "nw_wthax001"; break; case 2: sItem = "nw_wblhl001"; break; case 3: sItem = "nw_waxhn001"; break; case 4: sItem = "nw_wblfl001"; break; case 5: sItem = "nw_waxbt001"; break; case 6: sItem = "nw_wplhb001"; break; case 7: sItem = "nw_wswss001"; break; case 8: sItem = "nw_wblhw001"; break; case 9: sItem = "nw_wblfh001"; break; case 10: sItem = "nw_wswls001"; break; case 11: sItem = "nw_wswsc001"; break; case 12: sItem = "nw_waxgr001"; break; case 13: sItem = "nw_wswrp001"; break; case 14: sItem = "nw_wbwsh001"; break; case 15: sItem = "nw_wswbs001"; break; case 16: sItem = "nw_wswgs001"; break; case 17: sItem = "nw_wbwln001"; break; } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(20) + 1; switch (nRandom) { case 1: sItem = "nw_wthax001"; break; case 2: sItem = "nw_wblhl001"; break; case 3: sItem = "nw_waxhn001"; break; case 4: sItem = "nw_wblfl001"; break; case 5: sItem = "nw_waxbt001"; break; case 6: sItem = "nw_wplhb001"; break; case 7: sItem = "nw_wswss001"; break; case 8: sItem = "nw_wblhw001"; break; case 9: sItem = "nw_wblfh001"; break; case 10: sItem = "nw_wswls001"; break; case 11: sItem = "nw_wswsc001"; break; case 12: sItem = "nw_waxgr001"; break; case 13: sItem = "nw_wswrp001"; break; case 14: sItem = "nw_wbwsh001"; break; case 15: sItem = "nw_wswbs001"; break; case 16: sItem = "nw_wswgs001"; break; case 17: sItem = "nw_wbwln001"; break; case 18: sItem = "nw_wthmax002"; break; case 19: sItem = "nw_wbwmsh002"; break; case 20: sItem = "nw_wbwmln002"; break; } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(20) + 1; switch (nRandom) { case 1: sItem = "nw_wthmax002"; break; case 2: sItem = "nw_wbwmsh002"; break; case 3: sItem = "nw_wbwmln002"; break; case 4: sItem = "nw_wblmhl002"; break; case 5: sItem = "nw_waxmhn002"; break; case 6: sItem = "nw_wblmfl002"; break; case 7: sItem = "nw_waxmbt002"; break; case 8: sItem = "nw_wplmhb002"; break; case 9: sItem = "nw_wblmhw002"; break; case 10: sItem = "nw_wblmfh002"; break; case 11: sItem = "nw_wswmls002"; break; case 12: sItem = "nw_wswmsc002"; break; case 13: sItem = "nw_waxmgr002"; break; case 14: sItem = "nw_wswmrp002"; break; case 15: sItem = "nw_wswmbs002"; break; case 16: sItem = "nw_wswmgs002"; break; case 17: sItem = "nw_wthmax008"; break; case 18: sItem = "nw_wbwmsh008"; break; case 19: sItem = "nw_wbwmln008"; break; case 20: sItem = "nw_wswmss002"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(33) + 1; switch (nRandom) { case 1: sItem = "nw_wblmhl002"; break; case 2: sItem = "nw_waxmhn002"; break; case 3: sItem = "nw_wblmfl002"; break; case 4: sItem = "nw_waxmbt002"; break; case 5: sItem = "nw_wplmhb002"; break; case 6: sItem = "nw_wblmhw002"; break; case 7: sItem = "nw_wblmfh002"; break; case 8: sItem = "nw_wswmls002"; break; case 9: sItem = "nw_wswmsc002"; break; case 10: sItem = "nw_waxmgr002"; break; case 11: sItem = "nw_wswmrp002"; break; case 12: sItem = "nw_wswmbs002"; break; case 13: sItem = "nw_wswmgs002"; break; case 14: sItem = "nw_wthmax008"; break; case 15: sItem = "nw_wbwmsh008"; break; case 16: sItem = "nw_wbwmln008"; break; case 17: sItem = "nw_wbwmsh009"; break; case 18: sItem = "nw_wbwmln009"; break; case 19: sItem = "nw_wblmhl010"; break; case 20: sItem = "nw_waxmhn010"; break; case 21: sItem = "nw_wblmfl010"; break; case 22: sItem = "nw_waxmbt010"; break; case 23: sItem = "nw_wplmhb010"; break; case 24: sItem = "nw_wblmhw011"; break; case 25: sItem = "nw_wblmfh010"; break; case 26: sItem = "nw_wswmls010"; break; case 27: sItem = "nw_waxmgr009"; break; case 28: sItem = "nw_wswmbs009"; break; case 29: sItem = "nw_wswmgs011"; break; case 30: sItem = "nw_wswmrp010"; break; case 31: sItem = "nw_wswmsc010"; break; case 32: sItem = "nw_wswmss002"; break; case 33: sItem = "nw_wswmss009"; break; } } else if (GetRange(5, nHD)) // * 2500 - 16500 { int nRandom = Random(20) + 1; switch (nRandom) { case 1: sItem = "nw_wbwmsh009"; break; case 2: sItem = "nw_wbwmln009"; break; case 3: sItem = "nw_wblmhl010"; break; case 4: sItem = "nw_waxmhn010"; break; case 5: sItem = "nw_wblmfl010"; break; case 6: sItem = "nw_waxmbt010"; break; case 7: sItem = "nw_wplmhb010"; break; case 8: sItem = "nw_wblmhw011"; break; case 9: sItem = "nw_wblmfh010"; break; case 10: sItem = "nw_wswmls010"; break; case 11: sItem = "nw_waxmgr009"; break; case 12: sItem = "nw_wswmbs009"; break; case 13: sItem = "nw_wswmgs011"; break; case 14: sItem = "nw_wthmax009"; break; case 15: sItem = "nw_wswmrp010"; break; case 16: sItem = "nw_wswmrp011"; break; case 17: sItem = "nw_wswmsc010"; break; case 18: sItem = "nw_wswmss009"; break; case 19: sItem = "nw_wswmsc011"; break; case 20: sItem = "nw_wswmss011"; break; } } else if (GetRange(6, nHD)) // * 8000 - 25000 { int nRandom = Random(14) + 1; switch (nRandom) { case 1: sItem = "nw_wthmax009"; break; case 2: sItem = "nw_waxmhn011"; break; case 3: sItem = "nw_wblmfl011"; break; case 4: sItem = "nw_waxmbt011"; break; case 5: sItem = "nw_wplmhb011"; break; case 6: sItem = "nw_wblmhw012"; break; case 7: sItem = "nw_wblmfh011"; break; case 8: sItem = "nw_wswmls012"; break; case 9: sItem = "nw_waxmgr011"; break; case 10: sItem = "nw_wswmbs010"; break; case 11: sItem = "nw_wswmgs012"; break; case 12: sItem = "nw_wswmrp011"; break; case 13: sItem = "nw_wswmsc011"; break; case 14: sItem = "nw_wswmss011"; break; } } dbSpeak("Create Generic Martial"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateGenericExotic(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 200 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_wthsh001"; break; case 2: sItem = "nw_wspka001"; break; case 3: sItem = "nw_wspku001"; break; case 4: sItem = "nw_wplsc001"; break; case 5: sItem = "nw_wdbax001"; break; case 6: sItem = "nw_wdbma001"; break; case 7: sItem = "nw_wswka001"; break; case 8: sItem = "nw_wthmsh002"; break; case 9: sItem = "nw_wdbsw001"; break; } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(17) + 1; switch (nRandom) { case 1: sItem = "nw_wthsh001"; break; case 2: sItem = "nw_wspka001"; break; case 3: sItem = "nw_wspku001"; break; case 4: sItem = "nw_wplsc001"; break; case 5: sItem = "nw_wdbax001"; break; case 6: sItem = "nw_wdbma001"; break; case 7: sItem = "nw_wswka001"; break; case 8: sItem = "nw_wthmsh002"; break; case 9: sItem = "nw_wdbsw001"; break; case 10: sItem = "nw_wthmsh005"; break; case 11: sItem = "nw_wspmka002"; break; case 12: sItem = "nw_wspmku002"; break; case 13: sItem = "nw_wplmsc002"; break; case 14: sItem = "nw_wdbmax002"; break; case 15: sItem = "nw_wdbmma002"; break; case 16: sItem = "nw_wswmka002"; break; case 17: sItem = "nw_wdbmsw002"; break; } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_wdbsw001"; break; case 2: sItem = "nw_wthmsh005"; break; case 3: sItem = "nw_wspmka002"; break; case 4: sItem = "nw_wspmku002"; break; case 5: sItem = "nw_wplmsc002"; break; case 6: sItem = "nw_wdbmax002"; break; case 7: sItem = "nw_wdbmma002"; break; case 8: sItem = "nw_wswmka002"; break; case 9: sItem = "nw_wdbmsw002"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(17) + 1; switch (nRandom) { case 1: sItem = "nw_wthmsh005"; break; case 2: sItem = "nw_wspmka002"; break; case 3: sItem = "nw_wspmku002"; break; case 4: sItem = "nw_wplmsc002"; break; case 5: sItem = "nw_wdbmax002"; break; case 6: sItem = "nw_wdbmma002"; break; case 7: sItem = "nw_wswmka002"; break; case 8: sItem = "nw_wdbmsw002"; break; case 9: sItem = "nw_wthmsh008"; break; case 10: sItem = "nw_wspmka008"; break; case 11: sItem = "nw_wspmku008"; break; case 12: sItem = "nw_wplmsc010"; break; case 13: sItem = "nw_wdbmax010"; break; case 14: sItem = "nw_wdbmma010"; break; case 15: sItem = "nw_wswmka010"; break; case 16: sItem = "nw_wdbmsw010"; break; case 17: sItem = "nw_wthmsh009"; break; } } else if (GetRange(5, nHD)) // * 2500 - 16500 { int nRandom = Random(13) + 1; switch (nRandom) { case 1: sItem = "nw_wspmka008"; break; case 2: sItem = "nw_wspmku008"; break; case 3: sItem = "nw_wplmsc010"; break; case 4: sItem = "nw_wdbmax010"; break; case 5: sItem = "nw_wdbmma010"; break; case 6: sItem = "nw_wswmka010"; break; case 7: sItem = "nw_wdbmsw010"; break; case 8: sItem = "nw_wthmsh009"; break; case 9: sItem = "nw_wspmka009"; break; case 10: sItem = "nw_wspmku009"; break; case 11: sItem = "nw_wplmsc011"; break; case 12: sItem = "nw_wdbmax011"; break; case 13: sItem = "nw_wdbmma011"; break; } } else if (GetRange(6, nHD)) // * 8000 - 25000 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_wdbmsw010"; break; case 2: sItem = "nw_wthmsh009"; break; case 3: sItem = "nw_wspmka009"; break; case 4: sItem = "nw_wspmku009"; break; case 5: sItem = "nw_wplmsc011"; break; case 6: sItem = "nw_wdbmax011"; break; case 7: sItem = "nw_wdbmma011"; break; case 8: sItem = "nw_wswmka011"; break; case 9: sItem = "nw_wdbmsw011"; break; } } dbSpeak("Create generic exotic"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateGenericLightArmor(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 200 { int nRandom = Random(5) + 1; switch (nRandom) { case 1: sItem = "nw_aarcl009"; break; case 2: sItem = "nw_ashsw001"; break; case 3: sItem = "nw_aarcl001"; break; case 4: sItem = "nw_aarcl002"; break; case 5: sItem = "nw_aarcl012"; break; } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_aarcl009"; break; case 2: sItem = "nw_ashsw001"; break; case 3: sItem = "nw_aarcl001"; break; case 4: sItem = "nw_aarcl002"; break; case 5: sItem = "nw_aarcl012"; break; case 6: sItem = "nw_maarcl043"; break; case 7: sItem = "nw_ashmsw002"; break; case 8: sItem = "nw_maarcl044"; break; case 9: sItem = "nw_maarcl045"; break; } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(8) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl043"; break; case 2: sItem = "nw_ashmsw002"; break; case 3: sItem = "nw_maarcl044"; break; case 4: sItem = "nw_maarcl045"; break; case 5: sItem = "nw_maarcl072"; break; case 6: sItem = "nw_ashmsw008"; break; case 7: sItem = "nw_maarcl071"; break; case 8: sItem = "nw_maarcl075"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl072"; break; case 2: sItem = "nw_ashmsw008"; break; case 3: sItem = "nw_maarcl071"; break; case 4: sItem = "nw_maarcl075"; break; case 5: sItem = "nw_maarcl084"; break; case 6: sItem = "nw_ashmsw009"; break; case 7: sItem = "nw_maarcl083"; break; case 8: sItem = "nw_maarcl087"; break; case 9: sItem = "nw_maarcl079"; break; } } else if (GetRange(5, nHD)) // * 2500 - 16500 { int nRandom = Random(5) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl084"; break; case 2: sItem = "nw_ashmsw009"; break; case 3: sItem = "nw_maarcl083"; break; case 4: sItem = "nw_maarcl087"; break; case 5: sItem = "nw_maarcl079"; break; } } else if (GetRange(6, nHD)) // * 8000 - 25000 { int nRandom = Random(5) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl084"; break; case 2: sItem = "nw_ashmsw009"; break; case 3: sItem = "nw_maarcl083"; break; case 4: sItem = "nw_maarcl087"; break; case 5: sItem = "nw_maarcl079"; break; } } dbSpeak("Create Generic light"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateGenericMediumArmor(object oTarget, object oAdventurer, int nModifier = 0) { int nHD = GetAdjHitDice(oAdventurer) + nModifier; string sItem = ""; if (GetRange(1, nHD)) // * 200 { int nRandom = Random(10) + 1; switch (nRandom) { case 1: sItem = "nw_arhe001"; break; case 2: sItem = "nw_arhe002"; break; case 3: sItem = "nw_arhe003"; break; case 4: sItem = "nw_arhe004"; break; case 5: sItem = "nw_arhe005"; break; case 6: sItem = "nw_aarcl008"; break; case 7: sItem = "nw_ashlw001"; break; case 8: sItem = "nw_aarcl003"; break; case 9: sItem = "nw_aarcl004"; break; case 10: sItem = "nw_aarcl010"; break; } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(17) + 1; switch (nRandom) { case 1: sItem = "nw_arhe001"; break; case 2: sItem = "nw_arhe002"; break; case 3: sItem = "nw_arhe003"; break; case 4: sItem = "nw_arhe004"; break; case 5: sItem = "nw_arhe005"; break; case 6: sItem = "nw_aarcl008"; break; case 7: sItem = "nw_ashlw001"; break; case 8: sItem = "nw_aarcl003"; break; case 9: sItem = "nw_aarcl004"; break; case 10: sItem = "nw_aarcl010"; break; case 11: sItem = "nw_maarcl047"; break; case 12: sItem = "nw_ashmlw002"; break; case 13: sItem = "nw_maarcl046"; break; case 14: sItem = "nw_maarcl048"; break; case 15: sItem = "nw_maarcl035"; break; case 16: sItem = "nw_maarcl049"; break; case 17: sItem = "nw_maarcl050"; break; } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl047"; break; case 2: sItem = "nw_ashmlw002"; break; case 3: sItem = "nw_maarcl046"; break; case 4: sItem = "nw_maarcl048"; break; case 5: sItem = "nw_maarcl035"; break; case 6: sItem = "nw_maarcl049"; break; case 7: sItem = "nw_maarcl050"; break; case 8: sItem = "nw_maarcl070"; break; case 9: sItem = "nw_ashmlw008"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(14) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl035"; break; case 2: sItem = "nw_maarcl049"; break; case 3: sItem = "nw_maarcl050"; break; case 4: sItem = "nw_maarcl070"; break; case 5: sItem = "nw_ashmlw008"; break; case 6: sItem = "nw_maarcl067"; break; case 7: sItem = "nw_maarcl073"; break; case 8: sItem = "nw_maarcl065"; break; case 9: sItem = "nw_maarcl066"; break; case 10: sItem = "nw_maarcl082"; break; case 11: sItem = "nw_ashmlw009"; break; case 12: sItem = "nw_maarcl085"; break; case 13: sItem = "nw_maarcl077"; break; case 14: sItem = "nw_maarcl078"; break; } } else if (GetRange(5, nHD)) // * 2500 - 16500 { int nRandom = Random(11) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl070"; break; case 2: sItem = "nw_ashmlw008"; break; case 3: sItem = "nw_maarcl067"; break; case 4: sItem = "nw_maarcl073"; break; case 5: sItem = "nw_maarcl065"; break; case 6: sItem = "nw_maarcl066"; break; case 7: sItem = "nw_maarcl082"; break; case 8: sItem = "nw_ashmlw009"; break; case 9: sItem = "nw_maarcl085"; break; case 10: sItem = "nw_maarcl077"; break; case 11: sItem = "nw_maarcl078"; break; } } else if (GetRange(6, nHD)) // * 8000 - 25000 { int nRandom = Random(11) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl070"; break; case 2: sItem = "nw_ashmlw008"; break; case 3: sItem = "nw_maarcl067"; break; case 4: sItem = "nw_maarcl073"; break; case 5: sItem = "nw_maarcl065"; break; case 6: sItem = "nw_maarcl066"; break; case 7: sItem = "nw_maarcl082"; break; case 8: sItem = "nw_ashmlw009"; break; case 9: sItem = "nw_maarcl085"; break; case 10: sItem = "nw_maarcl077"; break; case 11: sItem = "nw_maarcl078"; break; } } dbSpeak("Create Generic medium"); dbCreateItemOnObject(sItem, oTarget, 1); } void CreateGenericHeavyArmor(object oTarget, object oAdventurer, int nModifier = 0) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer) + nModifier; if (GetRange(1, nHD)) // * 200 { int nRandom = Random(3) + 1; switch (nRandom) { case 1: sItem = "nw_ashto001"; break; case 2: sItem = "nw_aarcl005"; break; case 3: sItem = "nw_aarcl011"; break; } } else if (GetRange(2, nHD)) // * 800 { int nRandom = Random(6) + 1; switch (nRandom) { case 1: sItem = "nw_ashto001"; break; case 2: sItem = "nw_aarcl005"; break; case 3: sItem = "nw_aarcl011"; break; case 4: sItem = "nw_aarcl006"; break; case 5: sItem = "nw_ashmto002"; break; case 6: sItem = "nw_maarcl051"; break; } } else if (GetRange(3, nHD)) // * 200 - 2500 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_aarcl005"; break; case 2: sItem = "nw_aarcl011"; break; case 3: sItem = "nw_aarcl006"; break; case 4: sItem = "nw_ashmto002"; break; case 5: sItem = "nw_maarcl051"; break; case 6: sItem = "nw_maarcl052"; break; case 7: sItem = "nw_aarcl007"; break; case 8: sItem = "nw_maarcl053"; break; case 9: sItem = "nw_ashmto008"; break; } } else if (GetRange(4, nHD)) // * 800 - 10000 { int nRandom = Random(15) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl051"; break; case 2: sItem = "nw_maarcl052"; break; case 3: sItem = "nw_aarcl007"; break; case 4: sItem = "nw_maarcl053"; break; case 5: sItem = "nw_ashmto008"; break; case 6: sItem = "nw_maarcl064"; break; case 7: sItem = "nw_maarcl074"; break; case 8: sItem = "nw_maarcl069"; break; case 9: sItem = "nw_maarcl068"; break; case 10: sItem = "nw_ashmto003"; break; case 11: sItem = "nw_ashmto009"; break; case 12: sItem = "nw_maarcl076"; break; case 13: sItem = "nw_maarcl086"; break; case 14: sItem = "nw_maarcl081"; break; case 15: sItem = "nw_maarcl080"; break; } } else if (GetRange(5, nHD)) // * 2500 - 16500 { int nRandom = Random(10) + 1; switch (nRandom) { case 1: sItem = "nw_ashmto008"; break; case 2: sItem = "nw_maarcl064"; break; case 3: sItem = "nw_maarcl074"; break; case 4: sItem = "nw_maarcl069"; break; case 5: sItem = "nw_maarcl068"; break; case 6: sItem = "nw_ashmto009"; break; case 7: sItem = "nw_maarcl076"; break; case 8: sItem = "nw_maarcl086"; break; case 9: sItem = "nw_maarcl081"; break; case 10: sItem = "nw_maarcl080"; break; } } else if (GetRange(6, nHD)) // * 8000 - 25000 { int nRandom = Random(5) + 1; switch (nRandom) { case 1: sItem = "nw_ashmto009"; break; case 2: sItem = "nw_maarcl076"; break; case 3: sItem = "nw_maarcl086"; break; case 4: sItem = "nw_maarcl081"; break; case 5: sItem = "nw_maarcl080"; break; } } dbSpeak("Create Generic heavy"); dbCreateItemOnObject(sItem, oTarget, 1); } // * // * SPECIC TREASURE ITEMS (re: Named Items) // * void CreateSpecificMiscItem(object oTarget,object oAdventurer) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer); if (GetRange(1, nHD)) // * 800 { CreateGenericMiscItem(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(2, nHD)) // * 200 - 2500 { int nRandom = Random(3) + 1; switch (nRandom) { case 1: CreateGenericMiscItem(oTarget, oAdventurer, JUMP_LEVEL); return; break; case 2: sItem = "nw_maarcl057"; break; case 3: sItem = "nw_it_mbelt005"; break; } } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(13) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl057"; break; case 2: sItem = "nw_it_mbelt005"; break; case 3: sItem = "nw_maarcl101"; break; case 4: sItem = "nw_maarcl102"; break; case 5: sItem = "nw_maarcl103"; break; case 6: sItem = "nw_it_mglove001"; break; case 7: sItem = "nw_maarcl100"; break; case 8: sItem = "nw_it_mbracer011"; break; case 9: sItem = "nw_it_mmidmisc04"; break; case 10: sItem = "nw_it_mring003"; break; case 11: sItem = "nw_it_mbelt006"; break; case 12: sItem = "nw_it_mbelt002"; break; case 13: sItem = "nw_it_mmidmisc03"; break; } } else if (GetRange(4, nHD)) // * 2500 - 16500 { int nRandom = Random(19) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl101"; break; case 2: sItem = "nw_maarcl101"; break; case 3: sItem = "nw_maarcl102"; break; case 4: sItem = "nw_maarcl103"; break; case 5: sItem = "nw_it_mglove001"; break; case 6: sItem = "nw_maarcl100"; break; case 7: sItem = "nw_it_mbracer011"; break; case 8: sItem = "nw_it_mmidmisc04"; break; case 9: sItem = "nw_it_mring003"; break; case 10: sItem = "nw_it_mbelt006"; break; case 11: sItem = "nw_it_mbelt002"; break; case 12: sItem = "nw_it_mmidmisc03"; break; case 13: sItem = "nw_it_mring002"; break; case 14: sItem = "nw_it_mbelt004"; break; case 15: sItem = "nw_it_mring005"; break; case 16: sItem = "nw_it_mboots005"; break; case 17: sItem = "nw_it_mring007"; break; case 18: sItem = "nw_it_mneck003"; break; case 19: sItem = "nw_it_mbelt007"; break; } } else if (GetRange(5, nHD)) // * 8000 - 25000 { int nRandom = Random(15) + 1; switch (nRandom) { case 1: sItem = "nw_it_mbelt002"; break; case 2: sItem = "nw_it_mbelt002"; break; case 3: sItem = "nw_it_mmidmisc03"; break; case 4: sItem = "nw_it_mring002"; break; case 5: sItem = "nw_it_mbelt004"; break; case 6: sItem = "nw_it_mring005"; break; case 7: sItem = "nw_it_mboots005"; break; case 8: sItem = "nw_it_mring007"; break; case 9: sItem = "nw_it_mneck003"; break; case 10: sItem = "nw_it_mbelt007"; break; case 11: sItem = "nw_it_mboots004"; break; case 12: sItem = "nw_it_mboots003"; break; case 13: sItem = "nw_it_mneck005"; break; case 14: sItem = "nw_it_mbelt008"; break; case 15: sItem = "nw_it_mring020"; break; } } else if (GetRange(6, nHD)) // * 16000 and up { int nRandom = Random(19) + 1; switch (nRandom) { case 1: sItem = "nw_it_mboots004"; break; case 2: sItem = "nw_it_mboots004"; break; case 3: sItem = "nw_it_mboots003"; break; case 4: sItem = "nw_it_mneck005"; break; case 5: sItem = "nw_it_mbelt008"; break; case 6: sItem = "nw_it_mring020"; break; case 7: sItem = "nw_it_mbelt001"; break; case 8: sItem = "nw_it_mring017"; break; case 9: sItem = "nw_mcloth001"; break; case 10: sItem = "nw_it_mneck019"; break; case 11: sItem = "nw_it_mneck002"; break; case 12: sItem = "nw_it_mneck004"; break; case 13: sItem = "nw_it_mmidmisc01"; break; case 14: sItem = "nw_mcloth002"; break; case 15: sItem = "nw_mcloth003"; break; case 16: sItem = "nw_mcloth004"; break; case 17: sItem = "nw_it_mbelt003"; break; // * new items case 18: sItem = "NW_IT_MBELT020"; break; case 19: sItem = "NW_IT_MBELT021"; break; } } dbCreateItemOnObject(sItem, oTarget, 1); } void CreateSpecificRodStaffWand(object oTarget, object oAdventurer) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer); if (GetRange(1, nHD)) // * 800 { CreateGenericRodStaffWand(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(2, nHD)) // * 200 - 2500 { CreateGenericRodStaffWand(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(4) + 1; switch (nRandom) { case 1: sItem = "nw_wmgst004"; break; case 2: sItem = "nw_wmgst006"; break; case 3: sItem = "nw_wmgmrd003"; break; case 4: sItem = "nw_wmgst004"; break; } } else if (GetRange(4, nHD)) // * 2500 - 16500 { int nRandom = Random(7) + 1; switch (nRandom) { case 1: sItem = "nw_wmgmrd003"; break; case 2: sItem = "nw_wmgst006"; break; case 3: sItem = "nw_wmgmrd003"; break; case 4: sItem = "nw_wmgst004"; break; case 5: sItem = "nw_wmgst005"; break; case 6: sItem = "nw_wmgmrd004"; break; case 7: sItem = "nw_wmgrd002"; break; } } else if (GetRange(5, nHD)) // * 8000 - 25000 { int nRandom = Random(8) + 1; switch (nRandom) { case 1: sItem = "nw_wblmcl012"; break; case 2: sItem = "nw_wmgmrd003"; break; case 3: sItem = "nw_wmgst004"; break; case 4: sItem = "nw_wmgst005"; break; case 5: sItem = "nw_wblmcl012"; break; case 6: sItem = "nw_wmgmrd004"; break; case 7: sItem = "nw_wmgst002"; break; case 8: sItem = "nw_wmgmrd005"; break; } } else if (GetRange(6, nHD)) // * 16000 and up { int nRandom = Random(6) + 1; switch (nRandom) { case 1: sItem = "nw_wmgmrd004"; break; case 2: sItem = "nw_wmgst002"; break; case 3: sItem = "nw_wmgmrd005"; break; case 4: sItem = "nw_wmgmrd002"; break; case 5: sItem = "nw_wmgst003"; break; case 6: sItem = "nw_wblmcl012"; break; } } dbCreateItemOnObject(sItem, oTarget, 1); } void CreateSpecificSimple(object oTarget, object oAdventurer) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer); if (GetRange(1, nHD)) // * 800 { CreateGenericSimple(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(2, nHD)) // * 200 - 2500 { CreateGenericSimple(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_wdbmqs005"; break; case 2: sItem = "nw_wdbmqs005"; break; case 3: sItem = "nw_wdbmqs006"; break; case 4: sItem = "nw_wbwmxh005"; break; case 5: sItem = "nw_wbwmxl005"; break; case 6: sItem = "nw_wswmdg006"; break; case 7: sItem = "nw_wblmml006"; break; case 8: sItem = "nw_wspmsc004"; break; case 9: sItem = "nw_wblmms007"; break; } } else if (GetRange(4, nHD)) // * 2500 - 16500 { int nRandom = Random(22) + 1; switch (nRandom) { case 1: sItem = "nw_wdbmqs006"; break; case 2: sItem = "nw_wdbmqs005"; break; case 3: sItem = "nw_wdbmqs006"; break; case 4: sItem = "nw_wbwmxh005"; break; case 5: sItem = "nw_wbwmxl005"; break; case 6: sItem = "nw_wswmdg006"; break; case 7: sItem = "nw_wblmml006"; break; case 8: sItem = "nw_wspmsc004"; break; case 9: sItem = "nw_wblmms007"; break; case 10: sItem = "nw_wblmms003"; break; case 11: sItem = "nw_wblmcl004"; break; case 12: sItem = "nw_wspmsc006"; break; case 13: sItem = "nw_wspmsc006"; break; case 14: sItem = "nw_wdbmqs004"; break; case 15: sItem = "nw_wblmcl003"; break; case 16: sItem = "nw_wbwmsl003"; break; case 17: sItem = "nw_wbwmxh003"; break; case 18: sItem = "nw_wspmsc003"; break; case 19: sItem = "nw_wplmss005"; break; case 20: sItem = "nw_wplmss005"; break; case 21: sItem = "nw_wbwmxl003"; break; case 22: sItem = "nw_wblmml004"; break; } } else if (GetRange(5, nHD)) // * 8000 - 25000 { int nRandom = Random(27) + 1; switch (nRandom) { case 1: sItem = "nw_wblmms003"; break; case 2: sItem = "nw_wblmms003"; break; case 3: sItem = "nw_wblmcl004"; break; case 4: sItem = "nw_wspmsc006"; break; case 5: sItem = "nw_wspmsc006"; break; case 6: sItem = "nw_wdbmqs004"; break; case 7: sItem = "nw_wblmcl003"; break; case 8: sItem = "nw_wbwmsl003"; break; case 9: sItem = "nw_wbwmxh003"; break; case 10: sItem = "nw_wspmsc003"; break; case 11: sItem = "nw_wplmss005"; break; case 12: sItem = "nw_wplmss005"; break; case 13: sItem = "nw_wbwmxl003"; break; case 14: sItem = "nw_wblmml004"; break; case 15: sItem = "nw_wdbmqs003"; break; case 16: sItem = "nw_wbwmxl004"; break; case 17: sItem = "nw_wbwmxl007"; break; case 18: sItem = "nw_wblmml005"; break; case 19: sItem = "nw_wblmcl005"; break; case 20: sItem = "nw_wplmss007"; break; case 21: sItem = "nw_wswmdg004"; break; case 22: sItem = "nw_wbwmsl007"; break; case 23: sItem = "nw_wblmml007"; break; case 24: sItem = "nw_wblmml007"; break; case 25: sItem = "nw_wbwmxh004"; break; case 26: sItem = "nw_wplmss006"; break; case 27: sItem = "nw_wbwmxh007"; break; } } else if (GetRange(6, nHD)) // * 16000 and up { int nRandom = Random(31) + 1; switch (nRandom) { case 1: sItem = "nw_wbwmxl003"; break; case 2: sItem = "nw_wbwmxl003"; break; case 3: sItem = "nw_wblmml004"; break; case 4: sItem = "nw_wdbmqs003"; break; case 5: sItem = "nw_wbwmxl004"; break; case 6: sItem = "nw_wbwmxl007"; break; case 7: sItem = "nw_wblmml005"; break; case 8: sItem = "nw_wblmcl005"; break; case 9: sItem = "nw_wplmss007"; break; case 10: sItem = "nw_wswmdg004"; break; case 11: sItem = "nw_wbwmsl007"; break; case 12: sItem = "nw_wblmml007"; break; case 13: sItem = "nw_wblmml007"; break; case 14: sItem = "nw_wbwmxh004"; break; case 15: sItem = "nw_wplmss006"; break; case 16: sItem = "nw_wbwmxh007"; break; case 17: sItem = "nw_wblmms006"; break; case 18: sItem = "nw_wswmdg003"; break; case 19: sItem = "nw_wswmdg007"; break; case 20: sItem = "nw_wblmms004"; break; case 21: sItem = "nw_wbwmsl006"; break; case 22: sItem = "nw_wbwmsl007"; break; case 23: sItem = "nw_wblmml008"; break; case 24: sItem = "nw_wdbmqs007"; break; case 25: sItem = "nw_wblmcl006"; break; case 26: sItem = "nw_wbwmsl004"; break; case 27: sItem = "nw_wbwmxh006"; break; case 28: sItem = "nw_wplmss004"; break; case 29: sItem = "nw_wswmdg005"; break; case 30: sItem = "nw_wbwmxl006"; break; case 31: sItem = "nw_wspmsc005"; break; } } dbCreateItemOnObject(sItem, oTarget, 1); } void CreateSpecificMartial(object oTarget, object oAdventurer) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer); if (GetRange(1, nHD)) // * 800 { CreateGenericMartial(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(2, nHD)) // * 200 - 2500 { int nRandom = Random(3) + 1; switch (nRandom) { case 1: CreateGenericMartial(oTarget, oAdventurer, JUMP_LEVEL); return; break; case 2: sItem = "nw_wthmax005"; break; case 3: sItem = "nw_wthmax007"; break; } } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(14) + 1; switch (nRandom) { case 1: sItem = "nw_wthmax003"; break; case 2: sItem = "nw_wthmax005"; break; case 3: sItem = "nw_wthmax007"; break; case 4: sItem = "nw_wthmax003"; break; case 5: sItem = "nw_wthmax004"; break; case 6: sItem = "nw_wthmax006"; break; case 7: sItem = "nw_wswmrp004"; break; case 8: sItem = "nw_wswmrp004"; break; case 9: sItem = "nw_wblmfl004"; break; case 10: sItem = "nw_wblmhl004"; break; case 11: sItem = "nw_wbwmsh003"; break; case 12: sItem = "nw_wblmhw006"; break; case 13: sItem = "nw_wblmhw006"; break; case 14: sItem = "nw_wbwmln004"; break; } } else if (GetRange(4, nHD)) // * 2500 - 16500 { int nRandom = Random(28) + 1; switch (nRandom) { case 1: sItem = "nw_wblmfl005"; break; case 2: sItem = "nw_wthmax007"; break; case 3: sItem = "nw_wthmax003"; break; case 4: sItem = "nw_wthmax004"; break; case 5: sItem = "nw_wthmax006"; break; case 6: sItem = "nw_wswmrp004"; break; case 7: sItem = "nw_wswmrp004"; break; case 8: sItem = "nw_wblmfl004"; break; case 9: sItem = "nw_wblmhl004"; break; case 10: sItem = "nw_wbwmsh003"; break; case 11: sItem = "nw_wblmhw006"; break; case 12: sItem = "nw_wblmhw006"; break; case 13: sItem = "nw_wbwmln004"; break; case 14: sItem = "nw_wblmfl005"; break; case 15: sItem = "nw_wswmgs006"; break; case 16: sItem = "nw_waxmgr003"; break; case 17: sItem = "nw_wplmhb004"; break; case 18: sItem = "nw_wblmhw005"; break; case 19: sItem = "nw_wblmfh004"; break; case 20: sItem = "nw_wblmfh008"; break; case 21: sItem = "nw_wbwmsh006"; break; case 22: sItem = "nw_wswmsc004"; break; case 23: sItem = "nw_waxmgr006"; break; case 24: sItem = "nw_wswmrp005"; break; case 25: sItem = "nw_wswmls007"; break; case 26: sItem = "nw_wswmgs004"; break; case 27: sItem = "nw_waxmhn004"; break; case 28: sItem = "nw_wswmbs005"; break; } } else if (GetRange(5, nHD)) // * 8000 - 25000 { int nRandom = Random(42) + 1; switch (nRandom) { case 1: sItem = "nw_wblmhw006"; break; case 2: sItem = "nw_wblmhw006"; break; case 3: sItem = "nw_wblmhw006"; break; case 4: sItem = "nw_wbwmln004"; break; case 5: sItem = "nw_wblmfl005"; break; case 6: sItem = "nw_wswmgs006"; break; case 7: sItem = "nw_waxmgr003"; break; case 8: sItem = "nw_wplmhb004"; break; case 9: sItem = "nw_wblmhw005"; break; case 10: sItem = "nw_wblmfh004"; break; case 11: sItem = "nw_wblmfh008"; break; case 12: sItem = "nw_wbwmsh006"; break; case 13: sItem = "nw_wswmsc004"; break; case 14: sItem = "nw_waxmgr006"; break; case 15: sItem = "nw_wswmrp005"; break; case 16: sItem = "nw_wswmls007"; break; case 17: sItem = "nw_wswmgs004"; break; case 18: sItem = "nw_waxmhn004"; break; case 19: sItem = "nw_wswmbs005"; break; case 20: sItem = "nw_wblmhl005"; break; case 21: sItem = "nw_wblmhl011"; break; case 22: sItem = "nw_wswmss005"; break; case 23: sItem = "nw_wplmhb003"; break; case 24: sItem = "nw_wbwmln007"; break; case 25: sItem = "nw_wbwmln007"; break; case 26: sItem = "nw_wbwmsh007"; break; case 27: sItem = "nw_waxmbt006"; break; case 28: sItem = "nw_wswmbs006"; break; case 29: sItem = "nw_wblmfl007"; break; case 30: sItem = "nw_waxmhn003"; break; case 31: sItem = "nw_wblmhl006"; break; case 32: sItem = "nw_wblmfl006"; break; case 33: sItem = "nw_wswmls005"; break; case 34: sItem = "nw_wswmss004"; break; case 35: sItem = "nw_wbwmln006"; break; case 36: sItem = "nw_wblmhw003"; break; case 37: sItem = "nw_wblmfh006"; break; case 38: sItem = "nw_wswmsc006"; break; case 39: sItem = "nw_waxmhn005"; break; case 40: sItem = "nw_wblmfh003"; break; case 41: sItem = "nw_wswmls006"; break; case 42: sItem = "nw_wswmrp007"; break; } } else if (GetRange(6, nHD)) // * 16000 and up { int nRandom = Random(55) + 1; switch (nRandom) { case 1: sItem = "nw_wblmhl005"; break; case 2: sItem = "nw_wblmhl005"; break; case 3: sItem = "nw_wblmhl011"; break; case 4: sItem = "nw_wswmss005"; break; case 5: sItem = "nw_wplmhb003"; break; case 6: sItem = "nw_wbwmln007"; break; case 7: sItem = "nw_wbwmln007"; break; case 8: sItem = "nw_wbwmsh007"; break; case 9: sItem = "nw_waxmbt006"; break; case 10: sItem = "nw_wswmbs006"; break; case 11: sItem = "nw_wblmfl007"; break; case 12: sItem = "nw_waxmhn003"; break; case 13: sItem = "nw_wblmhl006"; break; case 14: sItem = "nw_wblmfl006"; break; case 15: sItem = "nw_wswmls005"; break; case 16: sItem = "nw_wswmss004"; break; case 17: sItem = "nw_wbwmln006"; break; case 18: sItem = "nw_wblmhw003"; break; case 19: sItem = "nw_wblmfh006"; break; case 20: sItem = "nw_wswmsc006"; break; case 21: sItem = "nw_waxmhn005"; break; case 22: sItem = "nw_wblmfh003"; break; case 23: sItem = "nw_wswmls006"; break; case 24: sItem = "nw_wswmrp007"; break; case 25: sItem = "nw_wswmgs005"; break; case 26: sItem = "nw_wswmgs005"; break; case 27: sItem = "nw_waxmgr005"; break; case 28: sItem = "nw_wplmhb007"; break; case 29: sItem = "nw_wswmsc007"; break; case 30: sItem = "nw_wswmrp006"; break; case 31: sItem = "nw_wswmss006"; break; case 32: sItem = "nw_wblmhl009"; break; case 33: sItem = "nw_wswmbs007"; break; case 34: sItem = "nw_wbwmln005"; break; case 35: sItem = "nw_wblmfh005"; break; case 36: sItem = "nw_wswmgs003"; break; case 37: sItem = "nw_waxmbt003"; break; case 38: sItem = "nw_wswmls004"; break; case 39: sItem = "nw_wbwmsh004"; break; case 40: sItem = "nw_wbwmsh004"; break; case 41: sItem = "nw_waxmbt004"; break; case 42: sItem = "nw_waxmbt004"; break; case 43: sItem = "nw_wblmhl003"; break; case 44: sItem = "nw_wblmhl003"; break; case 45: sItem = "nw_wswmbs003"; break; case 46: sItem = "nw_waxmbt005"; break; case 47: sItem = "nw_waxmhn006"; break; case 48: sItem = "nw_wswmss003"; break; case 49: sItem = "nw_wswmsc005"; break; case 50: sItem = "nw_wplmhb006"; break; case 51: sItem = "nw_wbwmsh004"; break; case 52: sItem = "nw_wswmbs004"; break; case 53: sItem = "nw_wbwmln003"; break; case 54: sItem = "nw_wblmhw004"; break; case 55: sItem = "nw_waxmgr004"; break; } } dbCreateItemOnObject(sItem, oTarget, 1); } void CreateSpecificExotic(object oTarget, object oAdventurer) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer); if (GetRange(1, nHD)) // * 800 { int nRandom = Random(3) + 1; switch (nRandom) { case 1: CreateGenericExotic(oTarget, oAdventurer, JUMP_LEVEL); return; break; case 2: sItem = "nw_wthmsh003"; break; case 3: sItem = "nw_wthmsh006"; break; } } else if (GetRange(2, nHD)) // * 200 - 2500 { int nRandom = Random(5) + 1; switch (nRandom) { case 1: CreateGenericExotic(oTarget, oAdventurer, JUMP_LEVEL); return; break; case 2: sItem = "nw_wthmsh003"; break; case 3: sItem = "nw_wthmsh006"; break; case 4: sItem = "nw_wthmsh004"; break; case 5: sItem = "nw_wthmsh007"; break; } } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(14) + 1; switch (nRandom) { case 1: sItem = "nw_wthmsh006"; break; case 2: sItem = "nw_wthmsh006"; break; case 3: sItem = "nw_wthmsh004"; break; case 4: sItem = "nw_wthmsh007"; break; case 5: sItem = "nw_wspmku006"; break; case 6: sItem = "nw_wdbmma003"; break; case 7: sItem = "nw_wswmka005"; break; case 8: sItem = "nw_wspmka004"; break; case 9: sItem = "nw_wspmka007"; break; case 10: sItem = "nw_wdbmax006"; break; case 11: sItem = "nw_wdbmsw006"; break; case 12: sItem = "nw_wspmku005"; break; case 13: sItem = "nw_wdbmsw007"; break; case 14: sItem = "nw_wspmka005"; break; } } else if (GetRange(4, nHD)) // * 2500 - 16500 { int nRandom = Random(16) + 1; switch (nRandom) { case 1:sItem = "nw_wthmsh007"; break; case 2: sItem = "nw_wthmsh007"; break; case 3: sItem = "nw_wspmku006"; break; case 4: sItem = "nw_wdbmma003"; break; case 5: sItem = "nw_wswmka005"; break; case 6: sItem = "nw_wspmka004"; break; case 7: sItem = "nw_wspmka007"; break; case 8: sItem = "nw_wdbmax006"; break; case 9: sItem = "nw_wdbmsw006"; break; case 10: sItem = "nw_wspmku005"; break; case 11: sItem = "nw_wdbmsw007"; break; case 12: sItem = "nw_wspmka005"; break; case 13: sItem = "nw_wplmsc003"; break; case 14: sItem = "nw_wdbmax005"; break; case 15: sItem = "nw_wspmku004"; break; case 16: sItem = "nw_wdbmma005"; break; } } else if (GetRange(5, nHD)) // * 8000 - 25000 { int nRandom = Random(17) + 1; switch (nRandom) { case 1: sItem = "nw_wplmsc003"; break; case 2: sItem = "nw_wspmka005"; break; case 3: sItem = "nw_wplmsc003"; break; case 4: sItem = "nw_wdbmax005"; break; case 5: sItem = "nw_wspmku004"; break; case 6: sItem = "nw_wdbmma005"; break; case 7: sItem = "nw_wdbmma005"; break; case 8: sItem = "nw_wdbmax004"; break; case 9: sItem = "nw_wdbmma004"; break; case 10: sItem = "nw_wswmka007"; break; case 11: sItem = "nw_wdbmsw005"; break; case 12: sItem = "nw_wspmka006"; break; case 13: sItem = "nw_wspmka003"; break; case 14: sItem = "nw_wdbmax007"; break; case 15: sItem = "nw_wplmsc006"; break; case 16: sItem = "nw_wspmku007"; break; case 17: sItem = "nw_wdbmma006"; break; } } else if (GetRange(6, nHD)) // * 16000 and up { int nRandom = Random(21) + 1; switch (nRandom) { case 1: sItem = "nw_wdbmma005"; break; case 2: sItem = "nw_wdbmma005"; break; case 3: sItem = "nw_wdbmma005"; break; case 4: sItem = "nw_wdbmax004"; break; case 5: sItem = "nw_wdbmma004"; break; case 6: sItem = "nw_wswmka007"; break; case 7: sItem = "nw_wdbmsw005"; break; case 8: sItem = "nw_wspmka006"; break; case 9: sItem = "nw_wspmka003"; break; case 10: sItem = "nw_wdbmax007"; break; case 11: sItem = "nw_wplmsc006"; break; case 12: sItem = "nw_wspmku007"; break; case 13: sItem = "nw_wdbmma006"; break; case 14: sItem = "nw_wspmku003"; break; case 15: sItem = "nw_wswmka006"; break; case 16: sItem = "nw_wplmsc005"; break; case 17: sItem = "nw_wplmsc005"; break; case 18: sItem = "nw_wswmka004"; break; case 19: sItem = "nw_wswmka004"; break; case 20: sItem = "nw_wdbmsw004"; break; case 21: sItem = "nw_wplmsc004"; break; } } dbCreateItemOnObject(sItem, oTarget, 1); } void CreateSpecificLightArmor(object oTarget, object oAdventurer) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer); if (GetRange(1, nHD)) // * 800 { CreateGenericLightArmor(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(2, nHD)) // * 200 - 2500 { int nRandom = Random(3) + 1; switch (nRandom) { case 1: CreateGenericLightArmor(oTarget, oAdventurer, JUMP_LEVEL); return; break; case 2: sItem = "nw_ashmsw011"; break; case 3: sItem = "nw_ashmsw010"; break; } } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_ashmsw011"; break; case 2: sItem = "nw_ashmsw011"; break; case 3: sItem = "nw_ashmsw010"; break; case 4: sItem = "nw_maarcl011"; break; case 5: sItem = "nw_ashmsw006"; break; case 6: sItem = "nw_maarcl017"; break; case 7: sItem = "nw_ashmsw005"; break; case 8: sItem = "nw_maarcl013"; break; case 9: sItem = "nw_maarcl012"; break; } } else if (GetRange(4, nHD)) // * 2500 - 16500 { int nRandom = Random(13) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl011"; break; case 2: sItem = "nw_maarcl011"; break; case 3: sItem = "nw_ashmsw006"; break; case 4: sItem = "nw_maarcl017"; break; case 5: sItem = "nw_ashmsw005"; break; case 6: sItem = "nw_maarcl013"; break; case 7: sItem = "nw_maarcl012"; break; case 8: sItem = "nw_ashmsw004"; break; case 9: sItem = "nw_maarcl006"; break; case 10: sItem = "nw_maarcl032"; break; case 11: sItem = "nw_maarcl003"; break; case 12: sItem = "nw_maarcl002"; break; case 13: sItem = "nw_maarcl007"; break; } } else if (GetRange(5, nHD)) // * 8000 - 25000 { int nRandom = Random(11) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl012"; break; case 2: sItem = "nw_maarcl012"; break; case 3: sItem = "nw_ashmsw004"; break; case 4: sItem = "nw_maarcl006"; break; case 5: sItem = "nw_maarcl032"; break; case 6: sItem = "nw_maarcl003"; break; case 7: sItem = "nw_maarcl002"; break; case 8: sItem = "nw_maarcl005"; break; case 9: sItem = "nw_ashmsw003"; break; case 10: sItem = "nw_maarcl001"; break; case 11: sItem = "nw_maarcl034"; break; } } else if (GetRange(6, nHD)) // * 16000 and up { int nRandom = Random(11) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl005"; break; case 2: sItem = "nw_maarcl005"; break; case 3: sItem = "nw_ashmsw003"; break; case 4: sItem = "nw_maarcl001"; break; case 5: sItem = "nw_maarcl034"; break; case 6: sItem = "nw_maarcl008"; break; case 7: sItem = "nw_ashmsw007"; break; case 8: sItem = "nw_maarcl033"; break; case 9: sItem = "nw_mcloth005"; break; case 10: sItem = "nw_maarcl009"; break; case 11: sItem = "nw_maarcl004"; break; } } dbCreateItemOnObject(sItem, oTarget, 1); } void CreateSpecificMediumArmor(object oTarget, object oAdventurer) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer); if (GetRange(1, nHD)) // * 800 { CreateGenericMediumArmor(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(2, nHD)) // * 200 - 2500 { CreateGenericMediumArmor(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(5) + 1; switch (nRandom) { case 1: sItem = "nw_armhe008"; break; case 2: sItem = "nw_armhe008"; break; case 3: sItem = "nw_armhe007"; break; case 4: sItem = "nw_armhe009"; break; case 5: sItem = "nw_armhe010"; break; } } else if (GetRange(4, nHD)) // * 2500 - 16500 { int nRandom = Random(9) + 1; switch (nRandom) { case 1: sItem = "nw_armhe008"; break; case 2: sItem = "nw_armhe008"; break; case 3: sItem = "nw_armhe007"; break; case 4: sItem = "nw_armhe009"; break; case 5: sItem = "nw_armhe010"; break; case 6: sItem = "nw_armhe006"; break; case 7: sItem = "nw_ashmlw007"; break; case 8: sItem = "nw_ashmlw005"; break; case 9: sItem = "nw_maarcl016"; break; } } else if (GetRange(5, nHD)) // * 8000 - 25000 { int nRandom = Random(12) + 1; switch (nRandom) { case 1: sItem = "nw_armhe009"; break; case 2: sItem = "nw_armhe009"; break; case 3: sItem = "nw_armhe010"; break; case 4: sItem = "nw_armhe006"; break; case 5: sItem = "nw_ashmlw007"; break; case 6: sItem = "nw_ashmlw005"; break; case 7: sItem = "nw_maarcl016"; break; case 8: sItem = "nw_maarcl036"; break; case 9: sItem = "nw_ashmlw004"; break; case 10: sItem = "nw_maarcl037"; break; case 11: sItem = "nw_maarcl040"; break; case 12: sItem = "nw_ashmlw006"; break; } } else if (GetRange(6, nHD)) // * 16000 and up { int nRandom = Random(12) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl016"; break; case 2: sItem = "nw_maarcl016"; break; case 3: sItem = "nw_maarcl036"; break; case 4: sItem = "nw_ashmlw004"; break; case 5: sItem = "nw_maarcl037"; break; case 6: sItem = "nw_maarcl040"; break; case 7: sItem = "nw_ashmlw006"; break; case 8: sItem = "nw_ashmlw003"; break; case 9: sItem = "nw_maarcl014"; break; case 10: sItem = "nw_maarcl039"; break; case 11: sItem = "nw_maarcl010"; break; case 12: sItem = "nw_maarcl015"; break; } } dbCreateItemOnObject(sItem, oTarget, 1); } void CreateSpecificHeavyArmor(object oTarget, object oAdventurer) { string sItem = ""; int nHD = GetAdjHitDice(oAdventurer); if (GetRange(1, nHD)) // * 800 { CreateGenericHeavyArmor(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(2, nHD)) // * 200 - 2500 { CreateGenericHeavyArmor(oTarget, oAdventurer, JUMP_LEVEL); return; } else if (GetRange(3, nHD)) // * 800 - 10000 { int nRandom = Random(6) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl026"; break; case 2: sItem = "nw_maarcl026"; break; case 3: sItem = "nw_maarcl021"; break; case 4: sItem = "nw_ashmto003"; break; case 5: sItem = "nw_maarcl029"; break; case 6: sItem = "nw_maarcl020"; break; } } else if (GetRange(4, nHD)) // * 2500 - 16500 { int nRandom = Random(13) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl021"; break; case 2: sItem = "nw_maarcl026"; break; case 3: sItem = "nw_maarcl021"; break; case 4: sItem = "nw_ashmto003"; break; case 5: sItem = "nw_maarcl029"; break; case 6: sItem = "nw_maarcl020"; break; case 7: sItem = "nw_ashmto006"; break; case 8: sItem = "nw_maarcl041"; break; case 9: sItem = "nw_ashmto005"; break; case 10: sItem = "nw_ashmto007"; break; case 11: sItem = "nw_ashmto010"; break; case 12: sItem = "nw_maarcl022"; break; case 13: sItem = "nw_maarcl018"; break; } } else if (GetRange(5, nHD)) // * 8000 - 25000 { int nRandom = Random(13) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl020"; break; case 2: sItem = "nw_maarcl020"; break; case 3: sItem = "nw_ashmto006"; break; case 4: sItem = "nw_maarcl041"; break; case 5: sItem = "nw_ashmto005"; break; case 6: sItem = "nw_ashmto007"; break; case 7: sItem = "nw_ashmto010"; break; case 8: sItem = "nw_maarcl022"; break; case 9: sItem = "nw_maarcl018"; break; case 10: sItem = "nw_maarcl024"; break; case 11: sItem = "nw_ashmto011"; break; case 12: sItem = "nw_maarcl042"; break; case 13: sItem = "nw_maarcl054"; break; } } else if (GetRange(6, nHD)) // * 16000 and up { int nRandom = Random(10) + 1; switch (nRandom) { case 1: sItem = "nw_maarcl018"; break; case 2: sItem = "nw_maarcl018"; break; case 3: sItem = "nw_maarcl024"; break; case 4: sItem = "nw_ashmto011"; break; case 5: sItem = "nw_maarcl042"; break; case 6: sItem = "nw_maarcl054"; break; case 7: sItem = "nw_ashmto004"; break; case 8: sItem = "nw_maarcl025"; break; case 9: sItem = "nw_maarcl028"; break; case 10: sItem = "nw_maarcl027"; break; } } dbCreateItemOnObject(sItem, oTarget, 1); } // * if nSpecific is = 1 then spawn in 'named' items at the higher levels void CreateTable2Item(object oTarget, object oAdventurer, int nSpecific=0) { dbSpeak("In CreateTable2Item"); string sItem = ""; int nProbMisc = 0; int nProbClass = 0; int nProbRodStaffWand = 0; int nProbSimple = 0; int nProbMartial = 0; int nProbExotic = 0; int nProbLight = 0; int nProbMedium = 0; int nProbHeavy = 0; int nSpecialRanger = 0; // 2 Means to treat the ranger as a barbarian. A 1 is to treat it as a fighter // * May 2002: Changed using Preston's multiclass function // * it randomly chooses one of your classes int nClass = nDetermineClassToUse(oAdventurer); // * SPECIAL RANGER BEHAVIOR // * If the ranger has the Heavy Armor proficiency, will treat the ranger if ( nClass == CLASS_TYPE_RANGER && GetHasFeat(FEAT_ARMOR_PROFICIENCY_HEAVY)) { nSpecialRanger = 1; } else if (nClass == CLASS_TYPE_RANGER) { nSpecialRanger = 2; } //* SETUP probabilities based on Class if ( nClass == CLASS_TYPE_FIGHTER || nClass == CLASS_TYPE_PALADIN || nSpecialRanger == 1) { dbSpeak("I am fighter or paladin or heavy ranger"); nProbMisc = 20; nProbClass = 0; nProbRodStaffWand = 5; nProbSimple = 5; nProbMartial = 20; nProbExotic = 10; nProbLight = 5; nProbMedium = 15; nProbHeavy = 20; } else if (nClass == CLASS_TYPE_WIZARD || nClass == CLASS_TYPE_SORCERER) { dbSpeak("I am wizard or sorcerer"); nProbMisc = 40; nProbClass = 30; nProbRodStaffWand = 15; nProbSimple = 3; nProbMartial = 3; nProbExotic = 3; nProbLight = 2; nProbMedium = 2; nProbHeavy = 2; } else if (nClass == CLASS_TYPE_BARBARIAN || nSpecialRanger == 2) { dbSpeak("I am barbarian or light ranger"); nProbMisc = 20; nProbClass = 0; nProbRodStaffWand = 5; nProbSimple = 17; nProbMartial = 27; nProbExotic = 15; nProbLight = 8; nProbMedium = 5; nProbHeavy = 3; } else if (nClass == CLASS_TYPE_CLERIC) { dbSpeak("I am cleric"); nProbMisc = 20; nProbClass = 10; nProbRodStaffWand = 10; nProbSimple = 25; nProbMartial = 7; nProbExotic = 5; nProbLight = 5; nProbMedium = 8; nProbHeavy = 10; } else if (nClass == CLASS_TYPE_DRUID) { dbSpeak("I am druid"); nProbMisc = 20; nProbClass = 25; nProbRodStaffWand = 15; nProbSimple = 10; nProbMartial = 5; nProbExotic = 5; nProbLight = 10; nProbMedium = 5; nProbHeavy = 5; } else if (nClass == CLASS_TYPE_MONK) { dbSpeak("I am monk"); nProbMisc = 20; nProbClass = 50; nProbRodStaffWand = 2; nProbSimple = 7; nProbMartial = 2; nProbExotic = 7; nProbLight = 4; nProbMedium = 4; nProbHeavy = 4; } else if (nClass == CLASS_TYPE_ROGUE) { dbSpeak("I am rogue"); nProbMisc = 25; nProbClass = 10; nProbRodStaffWand = 10; nProbSimple = 25; nProbMartial = 5; nProbExotic = 5; nProbLight = 10; nProbMedium = 5; nProbHeavy = 5; } else if (nClass == CLASS_TYPE_BARD) { dbSpeak("I am bard"); nProbMisc = 25; nProbClass = 5; nProbRodStaffWand = 5; nProbSimple = 25; nProbMartial = 10; nProbExotic = 10; nProbLight = 10; nProbMedium = 5; nProbHeavy = 5; } else { dbSpeak("No Valid Class"); } dbSpeak("Table2Item: After Class Distribution"); //* Create Items based on Probabilities int nRandom = d100(); if (nRandom <= nProbMisc) { if (nSpecific == 0) CreateGenericMiscItem(oTarget, oAdventurer); else CreateSpecificMiscItem(oTarget, oAdventurer); } else if (nRandom <= nProbMisc + nProbClass) { // * no need for a seperate specific function here CreateGenericClassItem(oTarget, oAdventurer, nSpecific); } else if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand) { if (nSpecific == 0) CreateGenericRodStaffWand(oTarget, oAdventurer); else CreateSpecificRodStaffWand(oTarget, oAdventurer); } else if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple) { if (nSpecific == 0) CreateGenericSimple(oTarget, oAdventurer); else CreateSpecificSimple(oTarget, oAdventurer); } else if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple + nProbMartial) { if (nSpecific == 0) CreateGenericMartial(oTarget, oAdventurer); else CreateSpecificMartial(oTarget, oAdventurer); } else if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple + nProbMartial + nProbExotic) { if (nSpecific == 0) CreateGenericExotic(oTarget, oAdventurer); else CreateSpecificExotic(oTarget, oAdventurer); } else if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple + nProbMartial + nProbExotic + nProbLight) { if (nSpecific == 0) CreateGenericLightArmor(oTarget, oAdventurer); else CreateSpecificLightArmor(oTarget, oAdventurer); } else if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple + nProbMartial + nProbExotic + nProbLight + nProbMedium) { if (nSpecific == 0) CreateGenericMediumArmor(oTarget, oAdventurer); else CreateSpecificMediumArmor(oTarget, oAdventurer); } else if (nRandom <= nProbMisc + nProbClass + nProbRodStaffWand + nProbSimple + nProbMartial + nProbExotic + nProbLight + nProbMedium + nProbHeavy) { if (nSpecific == 0) CreateGenericHeavyArmor(oTarget, oAdventurer); else CreateSpecificHeavyArmor(oTarget, oAdventurer); } else { dbSpeak("Generic Generic or Specific; error: 3524"); } } //:://///////////////////////////////////////////// //:: GenerateTreasure //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Generate Treasure NOTE: When used by NPCs, the treasure is scaled to how powerful the NPC is. If used by containers, it is scaled by how powerful the PC is. PARAMETERS oLastOpener = The creature that opened the container oCreateOn = The place to put the treasure. If this is invalid then the treasure is placed on oLastOpener */ //::////////////////////////////////////////////// //:: Created By: Andrew //:: Created On: //::////////////////////////////////////////////// void GenerateTreasure(int nTreasureType, object oLastOpener, object oCreateOn) { dbSpeak("*********************NEW TREASURE*************************"); // * abort treasure if no one opened the container if (GetIsObjectValid(oLastOpener) == FALSE) { dbSpeak("Aborted. No valid Last Opener"); return; } // * if no valid create on object, then create on oLastOpener if (oCreateOn == OBJECT_INVALID) { oCreateOn = oLastOpener; } // * if an Animal then generate 100% animal treasure // not done yet // * VARIABLES int nProbBook = 0; int nProbAnimal = 0; int nProbJunk = 0; int nProbGold = 0; int nProbGem = 0; int nProbJewel = 0; int nProbArcane = 0; int nProbDivine = 0; int nProbAmmo = 0; int nProbKit = 0; int nProbPotion = 0; int nProbTable2 = 0; int nSpecific = 0; int i = 0; int nNumberItems = GetNumberOfItems(nTreasureType); // * Set Treasure Type Values if (nTreasureType == TREASURE_LOW) { nProbBook = LOW_PROB_BOOK; nProbAnimal = LOW_PROB_ANIMAL; nProbJunk = LOW_PROB_JUNK; nProbGold = LOW_PROB_GOLD; nProbGem = LOW_PROB_GEM; nProbJewel = LOW_PROB_JEWEL; nProbArcane = LOW_PROB_ARCANE; nProbDivine = LOW_PROB_DIVINE; nProbAmmo = LOW_PROB_AMMO ; nProbKit = LOW_PROB_KIT; nProbPotion = LOW_PROB_POTION; nProbTable2 = LOW_PROB_TABLE2; } else if (nTreasureType == TREASURE_MEDIUM) { nProbBook = MEDIUM_PROB_BOOK; nProbAnimal = MEDIUM_PROB_ANIMAL; nProbJunk = MEDIUM_PROB_JUNK; nProbGold = MEDIUM_PROB_GOLD; nProbGem = MEDIUM_PROB_GEM; nProbJewel = MEDIUM_PROB_JEWEL; nProbArcane = MEDIUM_PROB_ARCANE; nProbDivine = MEDIUM_PROB_DIVINE; nProbAmmo = MEDIUM_PROB_AMMO ; nProbKit = MEDIUM_PROB_KIT; nProbPotion = MEDIUM_PROB_POTION; nProbTable2 = MEDIUM_PROB_TABLE2; } else if (nTreasureType == TREASURE_HIGH) { nProbBook = HIGH_PROB_BOOK; nProbAnimal = HIGH_PROB_ANIMAL; nProbJunk = HIGH_PROB_JUNK; nProbGold = HIGH_PROB_GOLD; nProbGem = HIGH_PROB_GEM; nProbJewel = HIGH_PROB_JEWEL; nProbArcane = HIGH_PROB_ARCANE; nProbDivine = HIGH_PROB_DIVINE; nProbAmmo = HIGH_PROB_AMMO ; nProbKit = HIGH_PROB_KIT; nProbPotion = HIGH_PROB_POTION; nProbTable2 = HIGH_PROB_TABLE2; } else if (nTreasureType == TREASURE_BOSS) { dbSpeak("boss"); nProbTable2 = 100; nSpecific = 1; } else if (nTreasureType == TREASURE_BOOK) { nProbBook = 90; nProbArcane = 6; nProbDivine = 4; } dbSpeak("Generate Treasure nSpecific = " + IntToString(nSpecific)); for (i = 1; i <= nNumberItems; i++) { int nRandom = d100(); if (nRandom <= nProbBook) CreateBook(oCreateOn); // * Book else if (nRandom <= nProbBook + nProbAnimal) CreateAnimalPart(oCreateOn); // * Animal else if (nRandom <= nProbBook + nProbAnimal + nProbJunk) CreateJunk(oCreateOn); // * Junk else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold) CreateGold(oCreateOn, oLastOpener, nTreasureType); // * Gold else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem) CreateGem(oCreateOn, oLastOpener, nTreasureType); // * Gem else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel) CreateJewel(oCreateOn, oLastOpener, nTreasureType); // * Jewel else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane) CreateArcaneScroll(oCreateOn, oLastOpener); // * Arcane Scroll else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane + nProbDivine) CreateDivineScroll(oCreateOn, oLastOpener); // * Divine Scroll else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane + nProbDivine + nProbAmmo) CreateAmmo(oCreateOn, oLastOpener); // * Ammo else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane + nProbDivine + nProbAmmo + nProbKit) CreateKit(oCreateOn, oLastOpener); // * Healing, Trap, or Thief kit else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane + nProbDivine + nProbAmmo + nProbKit + nProbPotion) CreatePotion(oCreateOn, oLastOpener); // * Potion else if (nRandom <= nProbBook + nProbAnimal + nProbJunk + nProbGold + nProbGem + nProbJewel + nProbArcane + nProbDivine + nProbAmmo + nProbKit + nProbPotion + nProbTable2) { CreateTable2Item(oCreateOn, oLastOpener, nSpecific); // * Weapons, Armor, Misc - Class based } else dbSpeak("other stuff"); } } void GenerateLowTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID) { GenerateTreasure(TREASURE_LOW, oLastOpener, oCreateOn); } void GenerateMediumTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID) { GenerateTreasure(TREASURE_MEDIUM, oLastOpener, oCreateOn); } void GenerateHighTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID) { GenerateTreasure(TREASURE_HIGH, oLastOpener, oCreateOn); } void GenerateBossTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID) { GenerateTreasure(TREASURE_BOSS, oLastOpener, oCreateOn); } void GenerateBookTreasure(object oLastOpener, object oCreateOn=OBJECT_INVALID) { GenerateTreasure(TREASURE_BOOK, oLastOpener, oCreateOn); } //:://///////////////////////////////////////////// //:: GenerateNPCTreasure //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Preferrably called from OnSpawn scripts. Use the random treasure functions to generate appropriate treasure for the creature to drop. */ //::////////////////////////////////////////////// //:: Created By: Brent //:: Created On: January 2002 //::////////////////////////////////////////////// void GenerateNPCTreasure(int nTreasureValue=1, object oTreasureGetter=OBJECT_SELF, object oKiller=OBJECT_SELF) { //DestroyObject(OBJECT_SELF); // * if I am an animal ,then give me animal stuff instead if (GetObjectType(oTreasureGetter) == OBJECT_TYPE_CREATURE) { if ( (GetRacialType(oTreasureGetter) == RACIAL_TYPE_UNDEAD) || (GetRacialType(oTreasureGetter) == RACIAL_TYPE_ANIMAL) || (GetRacialType(oTreasureGetter) == RACIAL_TYPE_BEAST) || (GetRacialType(oTreasureGetter) == RACIAL_TYPE_MAGICAL_BEAST) || (GetRacialType(oTreasureGetter) == RACIAL_TYPE_VERMIN) ) { //CreateAnimalPart(oTreasureGetter); // April 23 2002: Removed animal parts. They are silly. return; } } if (nTreasureValue == 1) { // April 2002: 30% chance of not getting any treasure now // if a creature if (Random(100)+1 >= 75) { GenerateTreasure(TREASURE_LOW, oTreasureGetter, oKiller); } } else if (nTreasureValue == 2) { GenerateTreasure(TREASURE_MEDIUM, oTreasureGetter, oKiller); } else if (nTreasureValue == 3) { GenerateTreasure(TREASURE_HIGH, oTreasureGetter, oKiller); } else if (nTreasureValue == 4) { GenerateBossTreasure(oKiller, oTreasureGetter); } } // * // * Theft Prevention // * //:://///////////////////////////////////////////// //:: ShoutDisturbed //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* */ //::////////////////////////////////////////////// //:: Created By: //:: Created On: //::////////////////////////////////////////////// // * Container shouts if disturbed void ShoutDisturbed() { if (GetIsDead(OBJECT_SELF) == TRUE) { object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE); //Cycle through the targets within the spell shape until an invalid object is captured. while (GetIsObjectValid(oTarget)) { if (GetFactionEqual(oTarget, OBJECT_SELF) == TRUE) { // * Make anyone who is a member of my faction hostile if I am violated object oAttacker = GetLastAttacker(); SetIsTemporaryEnemy(oAttacker,oTarget); AssignCommand(oTarget, ActionAttack(oAttacker)); } oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE); } } else (GetIsOpen(OBJECT_SELF) == TRUE); { object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE); //Cycle through the targets within the spell shape until an invalid object is captured. while (GetIsObjectValid(oTarget)) { if (GetFactionEqual(oTarget, OBJECT_SELF) == TRUE) { // * Make anyone who is a member of my faction hostile if I am violated object oAttacker = GetLastOpener(); SetIsTemporaryEnemy(oAttacker,oTarget); AssignCommand(oTarget, ActionAttack(oAttacker)); } oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_LARGE, GetLocation(OBJECT_SELF), TRUE, OBJECT_TYPE_CREATURE); } } } //:://///////////////////////////////////////////// //:: Determine Class to Use //:: Copyright (c) 2002 Bioware Corp. //::////////////////////////////////////////////// /* Determines which of a NPCs three classes to use in the random treasure system */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: April 4, 2002 //::////////////////////////////////////////////// int nDetermineClassToUse(object oCharacter) { int nClass; int nTotal = GetAdjHitDice(oCharacter); dbSpeak("Hit dice " + IntToString(nTotal)); if (nTotal < 1) { nTotal = 1; } float fTotal = IntToFloat(nTotal); if (GetIsObjectValid(oCharacter) == FALSE) { dbSpeak("DetermineClassToUse: This character is invalid"); } int nClass1 = GetClassByPosition(1, oCharacter); int nState1 = FloatToInt((IntToFloat(GetLevelByClass(nClass1, oCharacter)) / fTotal) * 100); dbSpeak("Level 1 Class Level = " + IntToString(GetLevelByClass(nClass1,oCharacter))); //PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 1 " + IntToString(nState1)); dbSpeak("State 1 " + IntToString(nState1)); int nClass2 = GetClassByPosition(2, oCharacter); int nState2 = FloatToInt((IntToFloat(GetLevelByClass(nClass2, oCharacter)) / fTotal) * 100) + nState1; //PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 2 " + IntToString(nState2)); int nClass3 = GetClassByPosition(3, oCharacter); int nState3 = FloatToInt((IntToFloat(GetLevelByClass(nClass3, oCharacter)) / fTotal) * 100) + nState2; //PrintString("GENERIC SCRIPT DEBUG STRING ********** " + GetTag(oCharacter) + "Class 3 " + IntToString(nState3)); int nUseClass = d100(); //PrintString("GENERIC SCRIPT DEBUG STRING ********** " + "D100 Roll " +IntToString(nUseClass)); dbSpeak("Before comparison : " + IntToString(nClass1)); if(nUseClass <= nState1) { nClass = nClass1; } else if(nUseClass > nState1 && nUseClass <= nState2) { nClass = nClass2; } else { nClass = nClass3; } dbSpeak("Class from determineClass " + IntToString(nClass)); return nClass; }