EN4_PRC8/_module/nss/rd_rndtreasure.nss
Jaysyn904 b464d8da05 Initial Commit
Initial Commit [v1.32PRC8]
2025-04-03 13:38:45 -04:00

3232 lines
100 KiB
Plaintext

#include "x2_inc_treasure"
#include "nw_o2_coninclude"
#include "x2_inc_compon"
#include "rd_treasure"
#include "rd_misc"
#include "prc_class_const"
void GetRandomTreasure(object oPC,object oChest);
void GetPreferedWeapon(object oLastOpener);
void AggroChest(object oPC,object oBoss);
void GenerateMagicItem(object oChest, object oPC, int iRandomPC = 0);
void GetSpecialItem(object oCreature, int iDroppable = TRUE);
void main()
{
int iRandom;
string sTag;
object oBoss;
if (GetLocalInt(OBJECT_SELF,"NW_DO_ONCE") != 0)
return;
object oLastOpener = GetLastOpener();
GetRandomTreasure(oLastOpener,OBJECT_SELF);
if (Random(12) == 0)
GetScrollsOnChest(OBJECT_SELF);
if (Random(12) == 0)
CreateTrap(OBJECT_SELF);
if (!GetIsObjectValid(GetFirstItemInInventory()))
{
WriteTimestampedLogEntry(GetTag(OBJECT_SELF) + " generated no treasure so random item added.");
CreateRandomItem(OBJECT_SELF);
}
SetLocalInt(OBJECT_SELF,"NW_DO_ONCE",1);
SetLocalInt(OBJECT_SELF,"EN4_SpecialTreasure",1);
//Attempt to find the boss of the chest and change chest to it's faction before
//shouting disturbed, but not if stealthed and hide vs DC 20 is successful
sTag = GetTag(OBJECT_SELF);
sTag = GetSubString(sTag,0,7) + "Boss_S";
oBoss = GetObjectByTag(sTag);
if (GetIsObjectValid(oBoss))
{
if (GetStealthMode(oLastOpener) == STEALTH_MODE_ACTIVATED)
{
if (!GetIsSkillSuccessful(oLastOpener,SKILL_HIDE,20))
AggroChest(oLastOpener,oBoss);
} else {
AggroChest(oLastOpener,oBoss);
}
}
}
void AggroChest(object oPC,object oBoss)
{
if (GetDistanceBetween(oPC,oBoss) < 25.0f)
{
AdjustReputation(oPC,oBoss,-100);
}
}
void GetRandomTreasure(object oPC,object oChest)
{
int iRandom;
int iMod;
int iLevel;
iLevel = GetHitDice(oPC);
iLevel = ZoneLevel(GetArea(oChest),iLevel);
iMod = iLevel/2;
if (GetLocalInt(oPC,"Lucky") == 1)
iMod = iMod + 10;
if (GetLocalInt(OBJECT_SELF,"EN4_SpecialTreasure") == 1 || GetLocalInt(OBJECT_SELF,"EN4_SpecialTreasureType") == 0)
{
if (GetHitDice(oPC) > iLevel+5 && iLevel < 26)
iRandom = Random(60)+1;
else
iRandom = Random(100) + iMod;
if (iRandom ==0)
if (Random(3)==0)
GetRareItem(oChest);
else
CreateRandomItem(oChest);
else if (iRandom ==1)
GetSpecialItem(oChest);
else if (iRandom == 2)
GetNegativeItem(oChest);
else if (iRandom<20)
GenerateLowTreasure(oPC, oChest);
else if (iRandom<35)
GenerateMediumTreasure(oPC, oChest);
else if (iRandom<50)
DTSGenerateTreasureOnContainer (oChest,oPC, X2_DTS_CLASS_LOW,X2_DTS_TYPE_DISP | X2_DTS_TYPE_GOLD);
else if (iRandom<65)
DTSGenerateTreasureOnContainer (oChest,oPC, X2_DTS_CLASS_MEDIUM,X2_DTS_TYPE_DISP | X2_DTS_TYPE_GOLD);
else if (iRandom<75)
GenerateHighTreasure(oPC, oChest);
else if (iRandom<80)
DTSGenerateTreasureOnContainer (oChest,oPC,X2_DTS_CLASS_HIGH,X2_DTS_TYPE_DISP | X2_DTS_TYPE_GOLD);
else if (iRandom<83)
GenerateBossTreasure(oPC, oChest);
else if (iRandom<88)
GetPreferedWeapon(oPC);
else if (iRandom<92)
CreateRandomItem(oChest);
else if (iRandom<96)
GetEN2Weapon(oChest,oPC);
else if (iRandom<115)
GenerateMagicItem(oChest,oPC,1);
else if (iRandom<121)
GetArtifact(oChest);
else
GenerateMagicItem(oChest,oPC,1);
} else {
object oPartyMember = GetFirstFactionMember(oPC, TRUE);
while (GetIsObjectValid(oPartyMember) == TRUE)
{
switch (GetLocalInt(OBJECT_SELF,"EN4_SpecialTreasureType"))
{
case 1: GetMinorMagicItem(oChest); break;
case 2: GetPreferedWeapon(oPartyMember); break;
case 3: GetMiscMagic(oChest); break;
case 4: GenerateBossTreasure(oPartyMember, oChest); break;
case 5: GenerateMagicItem(oChest,oPartyMember); break;
case 6: if (Random(3) == 0)
GetEN2Weapon(oChest,oPartyMember);
else
GetPreferedWeapon(oPartyMember);
break;
case 7: CreateRandomItem(oChest); break;
case 99: GetArtifact(oChest); break;
}
oPartyMember = GetNextFactionMember(oPC, TRUE);
}
}
}
void GenerateMagicItem(object oChest, object oPC, int iRandomPC = 0)
{
int iArmor;
int iRandom;
int iRandom2;
int iShield;
int iEnchant;
int iLevel;
int iEnchantments;
int iIndex;
int iPosition;
int iBuild;
string sTag;
itemproperty iProperty;
object oItem;
//object oPC;
if (iRandomPC > 0)
oPC = GetRandomTreasurePC();
iBuild = 0;
iRandom = Random(3)+1;
switch (iRandom)
{
case 1: GetWeaponType(oPC);
sTag = "en3_" + GetWeaponTag(oPC);
iBuild = 1;
break;
case 2: iBuild = 2;
iArmor = ENGetArmorType(oPC);
sTag = GetArmorTag(iArmor);
break;
case 3: GetMiscMagic(oChest);
break;
}
iLevel = GetLevelByPosition(1,oPC) +
GetLevelByPosition(2,oPC) +
GetLevelByPosition(3,oPC) +
GetLevelByPosition(4,oPC) +
GetLevelByPosition(5,oPC) +
GetLevelByPosition(6,oPC) +
GetLevelByPosition(7,oPC) +
GetLevelByPosition(8,oPC);
if (iBuild>0)
{
iRandom = Random(100)+1 + iLevel/3;
if (iRandom <=60)
iEnchant = 1;
else if (iRandom <=80)
iEnchant= 2;
else if (iRandom <=90)
iEnchant = 3;
else if (iRandom <=95)
iEnchant = 4;
else if (iRandom <=99)
iEnchant = 5;
else
iEnchant = Random(5) + 6;
if (iLevel > 20)
if (Random(100) < (iLevel-20))
iEnchant = iEnchant + Random(10)+1;
if (iBuild == 1)
{
sTag = sTag + "2";
oItem=CreateItemOnObject(sTag,oChest,1);
if (IPGetIsRangedWeapon(oItem))
{
iProperty=ItemPropertyAttackBonus(iEnchant);
IPSafeAddItemProperty(oItem,iProperty);
iProperty=ItemPropertyMaxRangeStrengthMod(iEnchant);
}
else
{
iProperty=ItemPropertyEnhancementBonus(iEnchant);
}
}
if (iBuild == 2)
{
sTag = sTag + IntToString(Random(3)+2);
oItem=CreateItemOnObject(sTag,oChest,1);
iProperty=ItemPropertyACBonus(iEnchant);
}
IPSafeAddItemProperty(oItem,iProperty);
iEnchantments = GetNumEnchantments(iLevel);
iIndex=0;
while (iIndex < iEnchantments)
{
iIndex++;
if (iBuild==1)
if (GetTag(oItem) == "en3_monkgloves1" || sTag == "en3_monkgloves2")
iProperty = MonkWeaponProperty(iEnchant);
else if (IPGetIsRangedWeapon(oItem))
iProperty = RangedWeaponProperty(iEnchant);
else
iProperty = WeaponProperty(iEnchant);
else
iProperty = ArmorProperty(iEnchant);
IPSafeAddItemProperty(oItem,iProperty);
}
}
if (IPGetIsRangedWeapon(oItem))
{
if (sTag == "en3_hxbow2" || sTag == "en3_lxbow2")
{
GetAmmo(oChest,"en3_bolt1",iEnchant);
}
if (sTag == "en3_longbow2" || sTag == "en3_sbow2")
{
GetAmmo(oChest,"en3_arrow1",iEnchant);
}
if (sTag == "en3_sling2")
{
GetAmmo(oChest,"en3_bullet1",iEnchant);
}
}
}
void CreateBastardSword(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmbs002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmbs002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmbs002"; break;
case 2: sItem = "nw_wswmbs009"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmbs009"; break;
case 2: sItem = "nw_wswmbs005"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmbs005"; break;
case 2: sItem = "nw_wswmbs010"; break;
case 3: sItem = "nw_wswmbs006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmbs010"; break;
case 2: sItem = "nw_wswmbs006"; break;
case 3: sItem = "nw_wswmbs007"; break;
case 4: sItem = "nw_wswmbs003"; break;
case 5: sItem = "nw_wswmbs004"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateBattleAxe(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmbt002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmbt002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmbt002"; break;
case 2: sItem = "nw_waxmbt010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmbt010"; break;
case 2: sItem = "nw_waxmbt011"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmbt011"; break;
case 2: sItem = "nw_waxmbt006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmbt011"; break;
case 2: sItem = "nw_waxmbt006"; break;
case 3: sItem = "nw_waxmbt003"; break;
case 4: sItem = "nw_waxmbt004"; break;
case 5: sItem = "nw_waxmbt005"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateClub(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmcl002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmcl002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmcl002"; break;
case 2: sItem = "nw_wblmcl010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmcl010"; break;
case 2: sItem = "nw_wblmcl004"; break;
case 3: sItem = "nw_wblmcl003"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmcl004"; break;
case 2: sItem = "nw_wblmcl003"; break;
case 3: sItem = "nw_wblmcl011"; break;
case 4: sItem = "nw_wblmcl005"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmcl011"; break;
case 2: sItem = "nw_wblmcl005"; break;
case 3: sItem = "nw_wblmcl006"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateDagger(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmdg002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmdg002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmdg002"; break;
case 2: sItem = "nw_wswmdg008"; break;
case 3: sItem = "nw_wswmdg006"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmdg008"; break;
case 2: sItem = "nw_wswmdg006"; break;
case 3: sItem = "nw_wswmdg009"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmdg009"; break;
case 2: sItem = "nw_wswmdg004"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmdg009"; break;
case 2: sItem = "nw_wswmdg004"; break;
case 3: sItem = "nw_wswmdg003"; break;
case 4: sItem = "nw_wswmdg007"; break;
case 5: sItem = "nw_wswmdg005"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateDart(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmdt002"; break;
case 2: sItem = "nw_wthmdt002"; break;
case 3: sItem = "nw_wthmdt008"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmdt008"; break;
case 2: sItem = "nw_wthmdt009"; break;
case 3: sItem = "nw_wthmdt003"; break;
}
}
else
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmdt009"; break;
case 2: sItem = "nw_wthmdt003"; break;
case 3: sItem = "nw_wthmdt007"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, Random(40) + 1);
}
void CreateDireMace(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmma002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmma002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmma002"; break;
case 2: sItem = "nw_wdbmma003"; break;
case 3: sItem = "nw_wdbmma010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmma003"; break;
case 2: sItem = "nw_wdbmma010"; break;
case 3: sItem = "nw_wdbmma005"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmma005"; break;
case 2: sItem = "nw_wdbmma011"; break;
case 3: sItem = "nw_wdbmma004"; break;
case 4: sItem = "nw_wdbmma006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmma005"; break;
case 2: sItem = "nw_wdbmma011"; break;
case 3: sItem = "nw_wdbmma004"; break;
case 4: sItem = "nw_wdbmma006"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateDoubleAxe(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmax002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmax002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmax002"; break;
case 2: sItem = "nw_wdbmax010"; break;
case 3: sItem = "nw_wdbmax006"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmax010"; break;
case 2: sItem = "nw_wdbmax006"; break;
case 3: sItem = "nw_wdbmax005"; break;
}
}
else if (GetRange(5, nHD))
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmax005"; break;
case 2: sItem = "nw_wdbmax011"; break;
case 3: sItem = "nw_wdbmax004"; break;
case 4: sItem = "nw_wdbmax007"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmax011"; break;
case 2: sItem = "nw_wdbmax004"; break;
case 3: sItem = "nw_wdbmax007"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateGreatAxe(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmgr002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmgr002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmgr002"; break;
case 2: sItem = "nw_waxmgr009"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmgr002"; break;
case 2: sItem = "nw_waxmgr009"; break;
case 3: sItem = "nw_waxmgr003"; break;
case 4: sItem = "nw_waxmgr006"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmgr003"; break;
case 2: sItem = "nw_waxmgr006"; break;
case 3: sItem = "nw_waxmgr011"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmgr011"; break;
case 2: sItem = "nw_waxmgr005"; break;
case 3: sItem = "nw_waxmgr004"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateGreatSword(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmgs002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmgs002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmgs002"; break;
case 2: sItem = "nw_wswmgs011"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmgs011"; break;
case 2: sItem = "nw_wswmgs006"; break;
case 3: sItem = "nw_wswmgs004"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmgs006"; break;
case 2: sItem = "nw_wswmgs004"; break;
case 3: sItem = "nw_wswmgs012"; break;
case 4: sItem = "nw_wswmgs005"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmgs012"; break;
case 2: sItem = "nw_wswmgs005"; break;
case 3: sItem = "nw_wswmgs003"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateHalberd(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmhb002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmhb002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmhb002"; break;
case 2: sItem = "nw_wplmhb010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmhb010"; break;
case 2: sItem = "nw_wplmhb004"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmhb004"; break;
case 2: sItem = "nw_wplmhb011"; break;
case 3: sItem = "nw_wplmhb003"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmhb011"; break;
case 2: sItem = "nw_wplmhb003"; break;
case 3: sItem = "nw_wplmhb007"; break;
case 4: sItem = "nw_wplmhb006"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateHandAxe(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmhn002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmhn002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmhn002"; break;
case 2: sItem = "nw_waxmhn010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmhn010"; break;
case 2: sItem = "nw_waxmhn004"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmhn004"; break;
case 2: sItem = "nw_waxmhn011"; break;
case 3: sItem = "nw_waxmhn003"; break;
case 4: sItem = "nw_waxmhn005"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_waxmhn011"; break;
case 2: sItem = "nw_waxmhn003"; break;
case 3: sItem = "nw_waxmhn005"; break;
case 4: sItem = "nw_waxmhn006"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateHeavyCrossbow(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxh002"; break;
case 2: sItem = "nw_wbwmxh002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxh002"; break;
case 2: sItem = "nw_wbwmxh008"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxh002"; break;
case 2: sItem = "nw_wbwmxh008"; break;
case 3: sItem = "nw_wbwmxh009"; break;
case 4: sItem = "nw_wbwmxh005"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxh009"; break;
case 2: sItem = "nw_wbwmxh005"; break;
case 3: sItem = "nw_wbwmxh003"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxh003"; break;
case 2: sItem = "nw_wbwmxh004"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxh004"; break;
case 2: sItem = "nw_wbwmxh007"; break;
case 3: sItem = "nw_wbwmxh006"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateHeavyFlail(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfh002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfh002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfh002"; break;
case 2: sItem = "nw_wblmfh007"; break;
case 3: sItem = "nw_wblmfh010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfh002"; break;
case 2: sItem = "nw_wblmfh007"; break;
case 3: sItem = "nw_wblmfh010"; break;
case 4: sItem = "nw_wblmfh004"; break;
case 5: sItem = "nw_wblmfh008"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfh004"; break;
case 2: sItem = "nw_wblmfh008"; break;
case 3: sItem = "nw_wblmfh011"; break;
case 4: sItem = "nw_wblmfh006"; break;
case 5: sItem = "nw_wblmfh003"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfh011"; break;
case 2: sItem = "nw_wblmfh006"; break;
case 3: sItem = "nw_wblmfh003"; break;
case 4: sItem = "nw_wblmfh005"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateKama(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmka002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmka002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmka002"; break;
case 2: sItem = "nw_wspmka004"; break;
case 3: sItem = "nw_wspmka007"; break;
case 4: sItem = "nw_wspmka008"; break;
case 5: sItem = "nw_wspmka005"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmka004"; break;
case 2: sItem = "nw_wspmka007"; break;
case 3: sItem = "nw_wspmka008"; break;
case 4: sItem = "nw_wspmka005"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmka005"; break;
case 2: sItem = "nw_wspmka009"; break;
case 3: sItem = "nw_wspmka006"; break;
case 4: sItem = "nw_wspmka003"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmka009"; break;
case 2: sItem = "nw_wspmka006"; break;
case 3: sItem = "nw_wspmka003"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateKatana(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmka002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmka002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmka002"; break;
case 2: sItem = "nw_wswmka005"; break;
case 3: sItem = "nw_wswmka010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmka005"; break;
case 2: sItem = "nw_wswmka010"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmka011"; break;
case 2: sItem = "nw_wswmka007"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmka011"; break;
case 2: sItem = "nw_wswmka007"; break;
case 3: sItem = "nw_wswmka006"; break;
case 4: sItem = "nw_wswmka004"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateKukri(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmku002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmku002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmku002"; break;
case 2: sItem = "nw_wspmku006"; break;
case 3: sItem = "nw_wspmku008"; break;
case 4: sItem = "nw_wspmku005"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmku006"; break;
case 2: sItem = "nw_wspmku008"; break;
case 3: sItem = "nw_wspmku005"; break;
case 4: sItem = "nw_wspmku004"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmku004"; break;
case 2: sItem = "nw_wspmku009"; break;
case 3: sItem = "nw_wspmku007"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmku009"; break;
case 2: sItem = "nw_wspmku007"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateLightCrossbow(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwxl001"; break;
case 2: sItem = "nw_wbwmxl002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxl002"; break;
case 2: sItem = "nw_wbwmxl008"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxl008"; break;
case 2: sItem = "nw_wbwmxl009"; break;
case 3: sItem = "nw_wbwmxl005"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxl009"; break;
case 2: sItem = "nw_wbwmxl005"; break;
case 3: sItem = "nw_wbwmxl003"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxl003"; break;
case 2: sItem = "nw_wbwmxl004"; break;
case 3: sItem = "nw_wbwmxl007"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmxl003"; break;
case 2: sItem = "nw_wbwmxl004"; break;
case 3: sItem = "nw_wbwmxl007"; break;
case 4: sItem = "nw_wbwmxl006"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateLightFlail(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfl002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfl002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfl002"; break;
case 2: sItem = "nw_wblmfl010"; break;
case 3: sItem = "nw_wblmfl004"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfl010"; break;
case 2: sItem = "nw_wblmfl004"; break;
case 3: sItem = "nw_wblmfl005"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfl005"; break;
case 2: sItem = "nw_wblmfl011"; break;
case 3: sItem = "nw_wblmfl007"; break;
case 4: sItem = "nw_wblmfl006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmfl011"; break;
case 2: sItem = "nw_wblmfl007"; break;
case 3: sItem = "nw_wblmfl006"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateLightHammer(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhl002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhl002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhl002"; break;
case 2: sItem = "nw_wblmhl010"; break;
case 3: sItem = "nw_wblmhl004"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhl010"; break;
case 2: sItem = "nw_wblmhl004"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhl005"; break;
case 2: sItem = "nw_wblmhl011"; break;
case 3: sItem = "nw_wblmhl006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhl005"; break;
case 2: sItem = "nw_wblmhl011"; break;
case 3: sItem = "nw_wblmhl006"; break;
case 4: sItem = "nw_wblmhl009"; break;
case 5: sItem = "nw_wblmhl003"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateLightMace(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmml002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmml002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmml002"; break;
case 2: sItem = "nw_wblmml011"; break;
case 3: sItem = "nw_wblmml006"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmml011"; break;
case 2: sItem = "nw_wblmml006"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmml012"; break;
case 2: sItem = "nw_wblmml004"; break;
case 3: sItem = "nw_wblmml005"; break;
case 4: sItem = "nw_wblmml007"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmml012"; break;
case 2: sItem = "nw_wblmml004"; break;
case 3: sItem = "nw_wblmml005"; break;
case 4: sItem = "nw_wblmml007"; break;
case 5: sItem = "nw_wblmml008"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateLongSword(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmls002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmls002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmls002"; break;
case 2: sItem = "nw_wswmls010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmls010"; break;
case 2: sItem = "nw_wswmls007"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmls007"; break;
case 2: sItem = "nw_wswmls012"; break;
case 3: sItem = "nw_wswmls005"; break;
case 4: sItem = "nw_wswmls006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmls012"; break;
case 2: sItem = "nw_wswmls005"; break;
case 3: sItem = "nw_wswmls006"; break;
case 4: sItem = "nw_wswmls004"; break;
case 5: sItem = "nw_wswmls013"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateLongbow(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmln002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmln002"; break;
case 2: sItem = "nw_wbwmln002"; break;
case 3: sItem = "nw_wbwmln008"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmln002"; break;
case 2: sItem = "nw_wbwmln008"; break;
case 3: sItem = "nw_wbwmln009"; break;
case 4: sItem = "nw_wbwmln004"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmln009"; break;
case 2: sItem = "nw_wbwmln004"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmln004"; break;
case 2: sItem = "nw_wbwmln007"; break;
case 3: sItem = "nw_wbwmln006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmln007"; break;
case 2: sItem = "nw_wbwmln006"; break;
case 3: sItem = "nw_wbwmln005"; break;
case 4: sItem = "nw_wbwmln003"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateMorningstar(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmms002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmms002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmms002"; break;
case 2: sItem = "nw_wblmms010"; break;
case 3: sItem = "nw_wblmms007"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmms007"; break;
case 2: sItem = "nw_wblmms003"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmms003"; break;
case 2: sItem = "nw_wblmms011"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmms011"; break;
case 2: sItem = "nw_wblmms006"; break;
case 3: sItem = "nw_wblmms004"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateRapier(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmrp002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmrp002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmrp002"; break;
case 2: sItem = "nw_wswmrp004"; break;
case 3: sItem = "nw_wswmrp010"; break;
case 4: sItem = "nw_wswmrp003"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmrp004"; break;
case 2: sItem = "nw_wswmrp010"; break;
case 3: sItem = "nw_wswmrp003"; break;
case 4: sItem = "nw_wswmrp005"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmrp003"; break;
case 2: sItem = "nw_wswmrp005"; break;
case 3: sItem = "nw_wswmrp011"; break;
case 4: sItem = "nw_wswmrp007"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmrp011"; break;
case 2: sItem = "nw_wswmrp007"; break;
case 3: sItem = "nw_wswmrp006"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateScimitar(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmsc002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmsc002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmsc002"; break;
case 2: sItem = "nw_wswmsc010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmsc010"; break;
case 2: sItem = "nw_wswmsc004"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmsc004"; break;
case 2: sItem = "nw_wswmsc011"; break;
case 3: sItem = "nw_wswmsc006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmsc011"; break;
case 2: sItem = "nw_wswmsc006"; break;
case 3: sItem = "nw_wswmsc007"; break;
case 4: sItem = "nw_wswmsc005"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateScythe(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmsc002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmsc002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmsc002"; break;
case 2: sItem = "nw_wplmsc010"; break;
case 3: sItem = "nw_wplmsc003"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmsc010"; break;
case 2: sItem = "nw_wplmsc003"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmsc003"; break;
case 2: sItem = "nw_wplmsc011"; break;
case 3: sItem = "nw_wplmsc006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmsc011"; break;
case 2: sItem = "nw_wplmsc006"; break;
case 3: sItem = "nw_wplmsc005"; break;
case 4: sItem = "nw_wplmsc004"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateShortsword(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmss002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmss002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmss002"; break;
case 2: sItem = "nw_wswmss009"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmss009"; break;
case 2: sItem = "nw_wswmss011"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmss011"; break;
case 2: sItem = "nw_wswmss005"; break;
case 3: sItem = "nw_wswmss004"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wswmss011"; break;
case 2: sItem = "nw_wswmss005"; break;
case 3: sItem = "nw_wswmss004"; break;
case 4: sItem = "nw_wswmss006"; break;
case 5: sItem = "nw_wswmss003"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateShortbow(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsh002"; break;
case 2: sItem = "nw_wbwmsh002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsh002"; break;
case 2: sItem = "nw_wbwmsh008"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsh008"; break;
case 2: sItem = "nw_wbwmsh009"; break;
case 3: sItem = "nw_wbwmsh003"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsh009"; break;
case 2: sItem = "nw_wbwmsh003"; break;
case 3: sItem = "nw_wbwmsh006"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsh006"; break;
case 2: sItem = "nw_wbwmsh007"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsh007"; break;
case 2: sItem = "nw_wbwmsh005"; break;
case 3: sItem = "nw_wbwmsh004"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateShuriken(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmsh002"; break;
case 2: sItem = "nw_wthmsh002"; break;
case 3: sItem = "nw_wthmsh003"; break;
case 4: sItem = "nw_wthmsh008"; break;
case 5: sItem = "nw_wthmsh006"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmsh002"; break;
case 2: sItem = "nw_wthmsh003"; break;
case 3: sItem = "nw_wthmsh008"; break;
case 4: sItem = "nw_wthmsh006"; break;
case 5: sItem = "nw_wthmsh009"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmsh006"; break;
case 2: sItem = "nw_wthmsh009"; break;
case 3: sItem = "nw_wthmsh005"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmsh009"; break;
case 2: sItem = "nw_wthmsh005"; break;
case 3: sItem = "nw_wthmsh004"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmsh005"; break;
case 2: sItem = "nw_wthmsh004"; break;
case 3: sItem = "nw_wthmsh007"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmsh005"; break;
case 2: sItem = "nw_wthmsh004"; break;
case 3: sItem = "nw_wthmsh007"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, Random(40) + 1);
}
void CreateSickle(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmsc002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmsc002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmsc002"; break;
case 2: sItem = "nw_wspmsc010"; break;
case 3: sItem = "nw_wspmsc004"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmsc010"; break;
case 2: sItem = "nw_wspmsc004"; break;
case 3: sItem = "nw_wspmsc005"; break;
case 4: sItem = "nw_wspmsc006"; break;
case 5: sItem = "nw_wspmsc003"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmsc005"; break;
case 2: sItem = "nw_wspmsc006"; break;
case 3: sItem = "nw_wspmsc003"; break;
case 4: sItem = "nw_wspmsc011"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wspmsc011"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateSling(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsl001"; break;
case 2: sItem = "nw_wbwmsl001"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsl001"; break;
case 2: sItem = "nw_wbwmsl009"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsl009"; break;
case 2: sItem = "nw_wbwmsl010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsl010"; break;
case 2: sItem = "nw_wbwmsl003"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsl003"; break;
case 2: sItem = "nw_wbwmsl007"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsl007"; break;
case 2: sItem = "nw_wbwmsl006"; break;
case 3: sItem = "nw_wbwmsl008"; break;
case 4: sItem = "nw_wbwmsl004"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateSpear(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmss002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmss002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmss002"; break;
case 2: sItem = "nw_wbwmsl005"; break;
case 3: sItem = "nw_wplmss010"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wbwmsl005"; break;
case 2: sItem = "nw_wplmss010"; break;
case 3: sItem = "nw_wplmss005"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmss005"; break;
case 2: sItem = "nw_wplmss011"; break;
case 3: sItem = "nw_wplmss007"; break;
case 4: sItem = "nw_wplmss006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wplmss011"; break;
case 2: sItem = "nw_wplmss007"; break;
case 3: sItem = "nw_wplmss006"; break;
case 4: sItem = "nw_wplmss004"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateStaff(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmqs002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmqs002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmqs002"; break;
case 2: sItem = "nw_wdbmqs005"; break;
case 3: sItem = "nw_wdbmqs006"; break;
case 4: sItem = "nw_wdbmqs008"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmqs005"; break;
case 2: sItem = "nw_wdbmqs006"; break;
case 3: sItem = "nw_wdbmqs008"; break;
case 4: sItem = "nw_wdbmqs004"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmqs004"; break;
case 2: sItem = "nw_wdbmqs009"; break;
case 3: sItem = "nw_wdbmqs003"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmqs009"; break;
case 2: sItem = "nw_wdbmqs003"; break;
case 3: sItem = "nw_wdbmqs007"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateThrowingAxe(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmax002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmax002"; break;
case 2: sItem = "nw_wthmax008"; break;
case 3: sItem = "nw_wthmax005"; break;
case 4: sItem = "nw_wthmax007"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(5) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmax008"; 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;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmax007"; break;
case 2: sItem = "nw_wthmax003"; break;
case 3: sItem = "nw_wthmax004"; break;
case 4: sItem = "nw_wthmax009"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmax003"; break;
case 2: sItem = "nw_wthmax004"; break;
case 3: sItem = "nw_wthmax009"; break;
case 4: sItem = "nw_wthmax006"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wthmax009"; break;
case 2: sItem = "nw_wthmax006"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, Random(40) + 1);
}
void CreateTwoBladedSword(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmsw002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmsw002"; break;
case 2: sItem = "nw_wdbmsw002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmsw002"; break;
case 2: sItem = "nw_wdbmsw010"; break;
case 3: sItem = "nw_wdbmsw006"; break;
case 4: sItem = "nw_wdbmsw007"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmsw010"; break;
case 2: sItem = "nw_wdbmsw006"; break;
case 3: sItem = "nw_wdbmsw007"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmsw011"; break;
case 2: sItem = "nw_wdbmsw005"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wdbmsw011"; break;
case 2: sItem = "nw_wdbmsw005"; break;
case 3: sItem = "nw_wdbmsw004"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
void CreateWarhammer(object oTarget, object oAdventurer)
{
string sItem = "";
int nHD = GetHitDice(oAdventurer);
if (GetRange(1, nHD)) // * 800
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhw002"; break;
}
}
else if (GetRange(2, nHD)) // * 200 - 2500
{
int nRandom = Random(1) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhw002"; break;
}
}
else if (GetRange(3, nHD)) // * 800 - 10000
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhw002"; break;
case 2: sItem = "nw_wblmhw011"; break;
case 3: sItem = "nw_wblmhw006"; break;
}
}
else if (GetRange(4, nHD)) // * 2500 - 16500
{
int nRandom = Random(2) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhw011"; break;
case 2: sItem = "nw_wblmhw006"; break;
}
}
else if (GetRange(5, nHD)) // * 8000 - 25000
{
int nRandom = Random(4) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhw006"; break;
case 2: sItem = "nw_wblmhw005"; break;
case 3: sItem = "nw_wblmhw012"; break;
case 4: sItem = "nw_wblmhw003"; break;
}
}
else if (GetRange(6, nHD)) // * 16000 and up
{
int nRandom = Random(3) + 1;
switch (nRandom)
{
case 1: sItem = "nw_wblmhw012"; break;
case 2: sItem = "nw_wblmhw003"; break;
case 3: sItem = "nw_wblmhw004"; break;
}
}
if (sItem != "")
dbCreateItemOnObject(sItem, oTarget, 1);
}
//::///////////////////////////////////////////////
//:: Prefers
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
Returns true if oAdventurer prefers using
this weapon.
CRITERIA: They have Weapon Focus
nFeatWeaponType: Uses the feat constants
to differentiate the weapon types
*/
//:://////////////////////////////////////////////
//:: Created By: Brent
//:: Created On: March 2002
//:://////////////////////////////////////////////
int Prefers(int nFeatWeaponType, object oAdventurer)
{
if (GetHasFeat(nFeatWeaponType, oAdventurer) == TRUE)
return TRUE;
else
return FALSE;
}
void GetPreferedWeapon(object oLastOpener)
{
//object oLastOpener = GetLastOpener();
object oContainer = OBJECT_SELF;
if (GetLocalInt(OBJECT_SELF, "NW_L_OPENONCE") > 0 || GetIsObjectValid(oLastOpener) == FALSE)
{
return; // * abort treasure if no one opened the container
}
SetLocalInt(OBJECT_SELF, "NW_L_OPENONCE",1);
ShoutDisturbed();
// * CHoose the weapon type to create
if (Prefers(FEAT_WEAPON_FOCUS_BASTARD_SWORD, oLastOpener) == TRUE)
{
CreateBastardSword(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_BATTLE_AXE,oLastOpener))
{
CreateBattleAxe(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_CLUB,oLastOpener))
{
CreateClub(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_DAGGER,oLastOpener))
{
CreateDagger(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_DART,oLastOpener))
{
CreateDart(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_DIRE_MACE,oLastOpener))
{
CreateDireMace(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_DOUBLE_AXE,oLastOpener))
{
CreateDoubleAxe(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_GREAT_AXE,oLastOpener))
{
CreateGreatAxe(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_GREAT_SWORD,oLastOpener))
{
CreateGreatSword(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_HALBERD,oLastOpener))
{
CreateHalberd(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_HAND_AXE,oLastOpener))
{
CreateHandAxe(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_HEAVY_CROSSBOW,oLastOpener))
{
CreateHeavyCrossbow(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_HEAVY_FLAIL,oLastOpener))
{
CreateHeavyFlail(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_KAMA,oLastOpener))
{
CreateKama(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_KATANA,oLastOpener))
{
CreateKatana(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_KUKRI,oLastOpener))
{
CreateKukri(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_LIGHT_CROSSBOW,oLastOpener))
{
CreateLightCrossbow(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_LIGHT_FLAIL,oLastOpener))
{
CreateLightFlail(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_LIGHT_HAMMER,oLastOpener))
{
CreateLightHammer(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_LIGHT_MACE,oLastOpener))
{
CreateLightMace(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_LONG_SWORD,oLastOpener))
{
CreateLongSword(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_LONGBOW,oLastOpener))
{
CreateLongbow(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_MORNING_STAR,oLastOpener))
{
CreateMorningstar(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_RAPIER,oLastOpener))
{
CreateRapier(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_SCIMITAR,oLastOpener))
{
CreateScimitar(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_SCYTHE,oLastOpener))
{
CreateScythe(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_SHORT_SWORD,oLastOpener))
{
CreateShortsword(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_SHORTBOW,oLastOpener))
{
CreateShortbow(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_SHURIKEN,oLastOpener))
{
CreateShuriken(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_SICKLE,oLastOpener))
{
CreateSickle(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_SLING,oLastOpener))
{
CreateSling(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_SPEAR,oLastOpener))
{
CreateSpear(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_STAFF,oLastOpener))
{
CreateStaff(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_THROWING_AXE,oLastOpener))
{
CreateThrowingAxe(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_TWO_BLADED_SWORD,oLastOpener))
{
CreateTwoBladedSword(oContainer, oLastOpener);
}
else if (Prefers(FEAT_WEAPON_FOCUS_WAR_HAMMER,oLastOpener))
{
CreateWarhammer(oContainer, oLastOpener);
}
else
{
// * if get to this point then the PC did not have Weapon Focus
// * in anything then do additional logic to give an appropriate weapon
if (GetLevelByClass(CLASS_TYPE_DRUID, oLastOpener)
+GetLevelByClass(CLASS_TYPE_SHAMAN, oLastOpener)
+GetLevelByClass(CLASS_TYPE_TOTEMIST, oLastOpener) >= 1)
{
CreateSpecificDruidWeapon(oContainer, oLastOpener);
}
else
if (GetLevelByClass(CLASS_TYPE_WIZARD, oLastOpener)
+GetLevelByClass(CLASS_TYPE_SHADOWCASTER, oLastOpener) >= 1)
{
CreateSpecificWizardWeapon(oContainer, oLastOpener);
}
else
if (GetLevelByClass(CLASS_TYPE_SORCERER, oLastOpener)
+GetLevelByClass(CLASS_TYPE_BEGUILER, oLastOpener)
+GetLevelByClass(CLASS_TYPE_DREAD_NECROMANCER, oLastOpener)
+GetLevelByClass(CLASS_TYPE_WARLOCK, oLastOpener)
+GetLevelByClass(CLASS_TYPE_DRAGONFIRE_ADEPT, oLastOpener) >= 1)
{
CreateDagger(oContainer, oLastOpener);
}
else
if (GetLevelByClass(CLASS_TYPE_PALADIN, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_FIGHTER, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_SWORDSAGE, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_HEXBLADE, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_PSYWAR, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_CRUSADER, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_KNIGHT, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_MARSHAL, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_SAMURAI, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_CW_SAMURAI, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_SWASHBUCKLER, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_WARBLADE, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_DUSKBLADE, oLastOpener) >= 1 ||
GetLevelByClass(CLASS_TYPE_RANGER, oLastOpener) >= 1)
{
CreateLongSword(oContainer, oLastOpener);
}
else
if (GetLevelByClass(CLASS_TYPE_BARBARIAN, oLastOpener) >= 1
|| GetLevelByClass(CLASS_TYPE_DRUID, oLastOpener)
+GetLevelByClass(CLASS_TYPE_SHAMAN, oLastOpener)
+GetLevelByClass(CLASS_TYPE_TOTEMIST, oLastOpener) >= 1)
{
CreateClub(oContainer, oLastOpener);
}
else
if (GetLevelByClass(CLASS_TYPE_MONK, oLastOpener)
+GetLevelByClass(CLASS_TYPE_SOHEI, oLastOpener) >= 1)
{
CreateSpecificMonkWeapon(oContainer, oLastOpener);
}
else
if (GetLevelByClass(CLASS_TYPE_CLERIC, oLastOpener)
+GetLevelByClass(CLASS_TYPE_ARCHIVIST, oLastOpener)
+GetLevelByClass(CLASS_TYPE_WARMAGE, oLastOpener)
+GetLevelByClass(CLASS_TYPE_FAVOURED_SOUL, oLastOpener)
+GetLevelByClass(CLASS_TYPE_HEALER, oLastOpener) >= 1)
{
CreateLightMace(oContainer, oLastOpener);
}
else
if (GetLevelByClass(CLASS_TYPE_ROGUE, oLastOpener)
+GetLevelByClass(CLASS_TYPE_NINJA, oLastOpener)
+GetLevelByClass(CLASS_TYPE_PSYCHIC_ROGUE, oLastOpener)
+GetLevelByClass(CLASS_TYPE_SCOUT, oLastOpener)
+GetLevelByClass(CLASS_TYPE_FACTOTUM, oLastOpener) >= 1 || GetLevelByClass(CLASS_TYPE_BARD, oLastOpener) >= 1)
{
CreateShortsword(oContainer, oLastOpener);
}
}
}
void GetSpecialItem(object oCreature, int iDroppable = TRUE)
{
string sTag;
object oItem;
itemproperty iProperty;
int iRandom;
int iRandom2;
int iRandom3;
int iPosition;
int iIndex;
int iEnchantments;
int iProperties;
int iMod;
int iLevel;
iMod = 0;
iRandom = Random(5)+1;
switch (iRandom)
{
case 1: sTag = "en3_magestaff";
sTag = sTag + IntToString(Random(4)+1);
iPosition = -1;
break;
case 2: sTag = "en3_wand";
iPosition = -2;
break;
case 3: sTag = "en3_rod";
iPosition = -2;
break;
case 4: sTag = "en3_misc";
sTag = sTag + IntToString(Random(6)+1);
iPosition = -3;
break;
case 5: sTag = "en3_instrument";
sTag = sTag + IntToString(Random(3)+1);
iPosition = -4;
break;
}
if (iPosition == -4 && Random(4)==0)
sTag = "en3_instrument4";
oItem=CreateItemOnObject(sTag,oCreature,1);
iLevel = GetHitDice(oCreature);
iEnchantments = GetNumEnchantments(iLevel);
//acount for usable by properties
if (iPosition == -1)
iEnchantments = iEnchantments + 3;
if (sTag == "en3_wand")
iEnchantments = iEnchantments + 5;
if (iPosition == -3)
iEnchantments = 1;
iIndex = 0;
//SendMessageToPC(GetFirstPC(),"Tag = " + sTag);
//SendMessageToPC(GetFirstPC(),"Enchantments = " + IntToString(iEnchantments));
while (iProperties < iEnchantments + iMod)
{
iIndex++;
if (iPosition >=0)
{
iProperty = MiscMagicProperty(0);
}
else if (iPosition == -1)
{
if (Random(3)==0)
iProperty = WeaponProperty(0);
else
iProperty = CastSpellEffect();
}
else if (iPosition == -2)
{
iProperty = CastSpellEffect();
}
else if (iPosition == -3)
{
if (!(sTag == "en3_misc1"))
iProperty = CastSpellEffectOnce();
}
else if (iPosition == -4)
{
iProperty = CastSpellEffect();
}
IPSafeAddItemProperty(oItem,iProperty);
iProperties = GetEnchantments(oItem);
//SendMessageToPC(GetFirstPC(),"iProperties = " + IntToString(iProperties) + " Index = " + IntToString(iIndex) );
if (iIndex > 20)
{
if (Random(3)==0)
{
iProperty = ItemPropertyDamageReduction(Random(3),Random(3));
IPSafeAddItemProperty(oItem,iProperty);
} else {
iProperty = ItemPropertyACBonus(Random(5)+1);
IPSafeAddItemProperty(oItem,iProperty);
}
iProperties = 99;
}
}
if (!(GetIsPC(oCreature)))
EquipItem(iPosition, oItem, oCreature);
if (iDroppable == FALSE)
{
SetDroppableFlag(oItem,FALSE);
//SendMessageToPC(GetFirstPC(),"Item " + GetName(oItem) + " created on " + GetName(oCreature));
}
if (sTag == "en3_ring" && Random(10) == 0)
{
iProperty = ItemPropertyLight(Random(4),Random(7));
IPSafeAddItemProperty(oItem,iProperty);
}
}