4792 lines
197 KiB
Plaintext
4792 lines
197 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: 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
|
|
//::
|
|
//:: Updated for .35 by Jaysyn 2023/03/10
|
|
//:://////////////////////////////////////////////
|
|
// :: 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
|
|
|
|
#include "prc_class_const"
|
|
|
|
// * ---------
|
|
// * CONSTANTS
|
|
// * ---------
|
|
|
|
// * tweaking constants
|
|
|
|
// * SIX LEVEL RANGES
|
|
const int RANGE_1_MIN = 0;
|
|
const int RANGE_1_MAX = 5;
|
|
const int RANGE_2_MIN = 6;
|
|
const int RANGE_2_MAX = 8;
|
|
|
|
const int RANGE_3_MIN = 9;
|
|
const int RANGE_3_MAX = 10;
|
|
|
|
const int RANGE_4_MIN = 11;
|
|
const int RANGE_4_MAX = 13;
|
|
|
|
const int RANGE_5_MIN = 14;
|
|
const int RANGE_5_MAX = 16;
|
|
|
|
const int RANGE_6_MIN = 17;
|
|
const int RANGE_6_MAX = 100;
|
|
|
|
// * NUMBER OF ITEMS APPEARING
|
|
const int NUMBER_LOW_ONE = 100; const int NUMBER_MED_ONE = 60; const int NUMBER_HIGH_ONE = 40; const int NUMBER_BOSS_ONE = 100;
|
|
const int NUMBER_LOW_TWO = 0; const int NUMBER_MED_TWO = 30; const int NUMBER_HIGH_TWO = 40; const int NUMBER_BOSS_TWO = 0;
|
|
const int NUMBER_LOW_THREE = 0; const int NUMBER_MED_THREE = 10; const int NUMBER_HIGH_THREE = 20; const int NUMBER_BOSS_THREE = 0;
|
|
|
|
const int NUMBER_BOOK_ONE = 75;
|
|
const int NUMBER_BOOK_TWO = 20;
|
|
const int NUMBER_BOOK_THREE = 5;
|
|
|
|
// * AMOUNT OF GOLD BY VALUE
|
|
const float LOW_MOD_GOLD = 0.5; const float MEDIUM_MOD_GOLD = 1.0; const float HIGH_MOD_GOLD = 3.0;
|
|
// * FREQUENCY OF ITEM TYPE APPEARING BY TREASURE TYPE
|
|
const int LOW_PROB_BOOK = 1; const int MEDIUM_PROB_BOOK = 1; const int HIGH_PROB_BOOK =1;
|
|
const int LOW_PROB_ANIMAL = 0; const int MEDIUM_PROB_ANIMAL = 0; const int HIGH_PROB_ANIMAL = 0;
|
|
const int LOW_PROB_JUNK = 2; const int MEDIUM_PROB_JUNK = 1; const int HIGH_PROB_JUNK = 1;
|
|
const int LOW_PROB_GOLD = 43; const int MEDIUM_PROB_GOLD = 38; const int HIGH_PROB_GOLD = 15;
|
|
const int LOW_PROB_GEM = 9; const int MEDIUM_PROB_GEM = 15; const int HIGH_PROB_GEM = 15;
|
|
const int LOW_PROB_JEWEL = 4; const int MEDIUM_PROB_JEWEL = 6; const int HIGH_PROB_JEWEL = 15;
|
|
const int LOW_PROB_ARCANE = 3; const int MEDIUM_PROB_ARCANE = 3; const int HIGH_PROB_ARCANE = 3;
|
|
const int LOW_PROB_DIVINE = 3; const int MEDIUM_PROB_DIVINE = 3; const int HIGH_PROB_DIVINE = 3;
|
|
const int LOW_PROB_AMMO = 10; const int MEDIUM_PROB_AMMO = 5; const int HIGH_PROB_AMMO = 3;
|
|
const int LOW_PROB_KIT = 5; const int MEDIUM_PROB_KIT = 5; const int HIGH_PROB_KIT = 5;
|
|
const int LOW_PROB_POTION =17; const int MEDIUM_PROB_POTION = 20; const int HIGH_PROB_POTION= 9;
|
|
const int LOW_PROB_TABLE2 = 3; const int MEDIUM_PROB_TABLE2 = 3; const int HIGH_PROB_TABLE2= 30;
|
|
|
|
|
|
// * readability constants
|
|
|
|
const int TREASURE_LOW = 1;
|
|
const int TREASURE_MEDIUM = 2;
|
|
const int TREASURE_HIGH = 3;
|
|
const int TREASURE_BOSS = 4;
|
|
const 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
|
|
|
|
const 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
|
|
|| nClass == CLASS_TYPE_ANTI_PALADIN || nClass == CLASS_TYPE_BRAWLER || nClass == CLASS_TYPE_CRUSADER
|
|
|| nClass == CLASS_TYPE_DUSKBLADE || nClass == CLASS_TYPE_KNIGHT || nClass == CLASS_TYPE_MARSHAL
|
|
|| nClass == CLASS_TYPE_PSYWAR || nClass == CLASS_TYPE_SOHEI)
|
|
{
|
|
//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 || nClass == CLASS_TYPE_BOWMAN
|
|
|| nClass == CLASS_TYPE_HEXBLADE || nClass == CLASS_TYPE_WARBLADE)
|
|
{
|
|
//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_ARCHIVIST || nClass == CLASS_TYPE_DRAGON_SHAMAN || nClass == CLASS_TYPE_FAVOURED_SOUL
|
|
|| nClass == CLASS_TYPE_MYSTIC || nClass == CLASS_TYPE_WARMAGE || nClass == CLASS_TYPE_TEMPLAR)
|
|
{
|
|
//type 1
|
|
nProbMisc = 25;
|
|
nProbClass = 0;
|
|
nProbRodStaffWand = 15;
|
|
nProbSimple = 15;
|
|
nProbMartial = 8;
|
|
nProbExotic = 6;
|
|
nProbLight = 15;
|
|
nProbMedium = 10;
|
|
nProbHeavy = 6;
|
|
}
|
|
else
|
|
if (nClass == CLASS_TYPE_NOBLE || nClass == CLASS_TYPE_SWASHBUCKLER || nClass == CLASS_TYPE_SWORDSAGE
|
|
|| nClass == CLASS_TYPE_ULTIMATE_RANGER)
|
|
{
|
|
//type 2
|
|
nProbMisc = 27;
|
|
nProbClass = 0;
|
|
nProbRodStaffWand = 5;
|
|
nProbSimple = 15;
|
|
nProbMartial = 20;
|
|
nProbExotic = 10;
|
|
nProbLight = 10;
|
|
nProbMedium = 8;
|
|
nProbHeavy = 5;
|
|
}
|
|
else
|
|
if (nClass == CLASS_TYPE_BEGUILER || nClass == CLASS_TYPE_DREAD_NECROMANCER || nClass == CLASS_TYPE_HEALER
|
|
|| nClass == CLASS_TYPE_SCOUT || nClass == CLASS_TYPE_SHAMAN || nClass == CLASS_TYPE_SOULKNIFE
|
|
|| nClass == CLASS_TYPE_TRUENAMER || nClass == CLASS_TYPE_WARLOCK || nClass == CLASS_TYPE_WILDER)
|
|
{
|
|
//type 3
|
|
nProbMisc = 45;
|
|
nProbClass = 0;
|
|
nProbRodStaffWand = 7;
|
|
nProbSimple = 15;
|
|
nProbMartial = 5;
|
|
nProbExotic = 5;
|
|
nProbLight = 15;
|
|
nProbMedium = 4;
|
|
nProbHeavy = 4;
|
|
}
|
|
else
|
|
if (nClass == CLASS_TYPE_DRAGONFIRE_ADEPT || nClass == CLASS_TYPE_PSION || nClass == CLASS_TYPE_WITCH)
|
|
{
|
|
//type 4
|
|
nProbMisc = 50;
|
|
nProbClass = 0;
|
|
nProbRodStaffWand = 10;
|
|
nProbSimple = 20;
|
|
nProbMartial = 5;
|
|
nProbExotic = 5;
|
|
nProbLight = 4;
|
|
nProbMedium = 3;
|
|
nProbHeavy = 3;
|
|
}
|
|
else
|
|
if (nClass == CLASS_TYPE_NINJA)
|
|
{
|
|
//type 5
|
|
nProbMisc = 45;
|
|
nProbClass = 0;
|
|
nProbRodStaffWand = 2;
|
|
nProbSimple = 12;
|
|
nProbMartial = 6;
|
|
nProbExotic = 26;
|
|
nProbLight = 3;
|
|
nProbMedium = 3;
|
|
nProbHeavy = 3;
|
|
}
|
|
else
|
|
if (nClass == CLASS_TYPE_CW_SAMURAI || nClass == CLASS_TYPE_SAMURAI)
|
|
{
|
|
//type 6
|
|
nProbMisc = 25;
|
|
nProbClass = 0;
|
|
nProbRodStaffWand = 5;
|
|
nProbSimple = 5;
|
|
nProbMartial = 10;
|
|
nProbExotic = 20;
|
|
nProbLight = 10;
|
|
nProbMedium = 20;
|
|
nProbHeavy = 5;
|
|
}
|
|
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 || nClass == CLASS_TYPE_PSYCHIC_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 if (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);
|
|
}
|
|
}
|
|
}
|
|
|
|
int nGetIsBaseClass(int nClass)
|
|
{
|
|
return (nClass <= CLASS_TYPE_WIZARD ||
|
|
nClass == CLASS_TYPE_ANTI_PALADIN ||
|
|
nClass == CLASS_TYPE_ARCHIVIST ||
|
|
nClass == CLASS_TYPE_BEGUILER ||
|
|
nClass == CLASS_TYPE_BOWMAN ||
|
|
nClass == CLASS_TYPE_BRAWLER ||
|
|
nClass == CLASS_TYPE_CRUSADER ||
|
|
nClass == CLASS_TYPE_DRAGON_SHAMAN ||
|
|
nClass == CLASS_TYPE_DRAGONFIRE_ADEPT ||
|
|
nClass == CLASS_TYPE_DREAD_NECROMANCER ||
|
|
nClass == CLASS_TYPE_DUSKBLADE ||
|
|
nClass == CLASS_TYPE_FAVOURED_SOUL ||
|
|
nClass == CLASS_TYPE_HEALER ||
|
|
nClass == CLASS_TYPE_HEXBLADE ||
|
|
nClass == CLASS_TYPE_KNIGHT ||
|
|
nClass == CLASS_TYPE_MARSHAL ||
|
|
nClass == CLASS_TYPE_MYSTIC ||
|
|
nClass == CLASS_TYPE_NINJA ||
|
|
nClass == CLASS_TYPE_NOBLE ||
|
|
nClass == CLASS_TYPE_PSION ||
|
|
nClass == CLASS_TYPE_PSYWAR ||
|
|
nClass == CLASS_TYPE_PSYCHIC_ROGUE ||
|
|
nClass == CLASS_TYPE_SAMURAI ||
|
|
nClass == CLASS_TYPE_CW_SAMURAI ||
|
|
nClass == CLASS_TYPE_SCOUT ||
|
|
nClass == CLASS_TYPE_SHAMAN ||
|
|
nClass == CLASS_TYPE_SOHEI ||
|
|
nClass == CLASS_TYPE_SOULKNIFE ||
|
|
nClass == CLASS_TYPE_SWASHBUCKLER ||
|
|
nClass == CLASS_TYPE_SWORDSAGE ||
|
|
nClass == CLASS_TYPE_TRUENAMER ||
|
|
nClass == CLASS_TYPE_ULTIMATE_RANGER ||
|
|
nClass == CLASS_TYPE_WARBLADE ||
|
|
nClass == CLASS_TYPE_WARLOCK ||
|
|
nClass == CLASS_TYPE_WARMAGE ||
|
|
nClass == CLASS_TYPE_WILDER ||
|
|
nClass == CLASS_TYPE_WITCH ||
|
|
nClass == CLASS_TYPE_TEMPLAR);
|
|
}
|
|
|
|
//::///////////////////////////////////////////////
|
|
//:: 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 nClass1 = GetClassByPosition(1, oCharacter);
|
|
int nClass2 = GetClassByPosition(2, oCharacter);
|
|
int nClass3 = GetClassByPosition(3, oCharacter);
|
|
int nClass4 = GetClassByPosition(4, oCharacter);
|
|
int nClass5 = GetClassByPosition(5, oCharacter);
|
|
int nClass6 = GetClassByPosition(6, oCharacter);
|
|
int nClass7 = GetClassByPosition(7, oCharacter);
|
|
int nClass8 = GetClassByPosition(8, oCharacter);
|
|
|
|
int nState1 = GetLevelByClass(nClass1, oCharacter) * 100 / nTotal;
|
|
int nState2 = GetLevelByClass(nClass2, oCharacter) * 100 / nTotal + nState1;
|
|
int nState3 = GetLevelByClass(nClass3, oCharacter) * 100 / nTotal + nState2;
|
|
int nState4 = GetLevelByClass(nClass4, oCharacter) * 100 / nTotal + nState3;
|
|
int nState5 = GetLevelByClass(nClass5, oCharacter) * 100 / nTotal + nState4;
|
|
int nState6 = GetLevelByClass(nClass6, oCharacter) * 100 / nTotal + nState5;
|
|
int nState7 = GetLevelByClass(nClass7, oCharacter) * 100 / nTotal + nState6;
|
|
|
|
// nState8 will always be 100 if there is an eigth class, or 0 if there isn't
|
|
//int nState8 = GetLevelByClass(nClass3, oCharacter) * 100 / nTotal + nState7;
|
|
|
|
// correct for unrecognized classes - assumes the first class will be a non-prestige player class
|
|
if(nClass2 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass2))
|
|
{
|
|
nClass2 = CLASS_TYPE_INVALID;
|
|
nState1 = nState2;
|
|
}
|
|
if(nClass3 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass3))
|
|
{
|
|
nClass3 = CLASS_TYPE_INVALID;
|
|
nState1 = nState3;
|
|
}
|
|
if(nClass4 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass4))
|
|
{
|
|
nClass4 = CLASS_TYPE_INVALID;
|
|
nState1 = nState4;
|
|
}
|
|
if(nClass5 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass5))
|
|
{
|
|
nClass5 = CLASS_TYPE_INVALID;
|
|
nState1 = nState5;
|
|
}
|
|
if(nClass6 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass6))
|
|
{
|
|
nClass6 = CLASS_TYPE_INVALID;
|
|
nState1 = nState6;
|
|
}
|
|
if(nClass7 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass7))
|
|
{
|
|
nClass7 = CLASS_TYPE_INVALID;
|
|
nState1 = nState7;
|
|
}
|
|
if(nClass8 != CLASS_TYPE_INVALID && !nGetIsBaseClass(nClass8))
|
|
{
|
|
nClass8 = CLASS_TYPE_INVALID;
|
|
if(nClass7 != CLASS_TYPE_INVALID)
|
|
nState7 = 100;
|
|
else nState1 = 100;
|
|
}
|
|
|
|
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
|
|
{
|
|
// might be possible to end up here by accident because of a rounding error
|
|
// so just in case...
|
|
if(nClass3 == CLASS_TYPE_INVALID) nClass = nClass1;
|
|
else nClass = nClass3;
|
|
}
|
|
|
|
//dbSpeak("Class from determineClass " + IntToString(nClass));
|
|
return nClass;
|
|
}
|
|
|
|
//:: Test Void
|
|
//void main () {}
|
|
|