3232 lines
100 KiB
Plaintext
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);
|
|
}
|
|
|
|
}
|