//:://///////////////////////////////////////////// //:: 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 = 5; int RANGE_2_MIN = 6; int RANGE_2_MAX = 8; int RANGE_3_MIN = 9; int RANGE_3_MAX = 10; int RANGE_4_MIN = 11; int RANGE_4_MAX = 13; int RANGE_5_MIN = 14; int RANGE_5_MAX = 16; int RANGE_6_MIN = 17; 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 = 0.5; float MEDIUM_MOD_GOLD = 1.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 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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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_wbwmsl008"; 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 = GetHitDice(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 = GetHitDice(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_wbwmsl008"; 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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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_wbwmsl008"; 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 = GetHitDice(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_wbwmsh005"; break; case 40: sItem = "nw_wbwmsh005"; 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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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 = GetHitDice(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; }