Added PnP Dire Rat.
Added PnP Dire Rat.
This commit is contained in:
205
nwn_dark_sun/oo_bw_reloot2.nss
Normal file
205
nwn_dark_sun/oo_bw_reloot2.nss
Normal file
@@ -0,0 +1,205 @@
|
||||
// create loot for random encounter areas,
|
||||
// mostly healing potions, kits, etc.
|
||||
//
|
||||
// -Brian Watson
|
||||
|
||||
void main()
|
||||
{
|
||||
int nTreas = GetLocalInt(OBJECT_SELF, "nTreasure");
|
||||
|
||||
if (nTreas == 0)
|
||||
{
|
||||
// set default var's
|
||||
int nHD = 1;
|
||||
int nStack = 1;
|
||||
string sBP;
|
||||
int nItem;
|
||||
|
||||
// determine who opened this container
|
||||
object oOpener = GetLastOpenedBy();
|
||||
if (!GetIsObjectValid(oOpener))
|
||||
{
|
||||
oOpener = GetLastKiller();
|
||||
}
|
||||
if (GetIsObjectValid(oOpener))
|
||||
{
|
||||
nHD = GetHitDice(oOpener);
|
||||
}
|
||||
|
||||
// randomize level for variable item generation (-9 to +9 HD)
|
||||
int nLevelAdj = (d10(2) - 11);
|
||||
int nModHD = nHD + nLevelAdj;
|
||||
|
||||
// detemine random treasure item
|
||||
int nRandom = d100(); // 10% chance of nothing
|
||||
if (nRandom <= 40) // 40% chance of gold
|
||||
{
|
||||
sBP = "nw_it_gold001";
|
||||
|
||||
int nGoldHD = nModHD;
|
||||
if (nGoldHD < 1) nGoldHD = 1;
|
||||
|
||||
nStack = d20(nGoldHD); // 1-20 gp per modified character level
|
||||
}
|
||||
else if (nRandom <= 70) // 30% chance of gems
|
||||
{
|
||||
int nRandGem;
|
||||
int nRandType = d3(); // 1-3
|
||||
|
||||
if (nModHD < 6) // common gems
|
||||
{
|
||||
if (nRandType == 1) nRandGem = d4(); // 1-4
|
||||
else if (nRandType == 2) nRandGem = 7;
|
||||
else nRandGem = (13 + d2()); // 14-15
|
||||
|
||||
nStack = (d6(2) - 4); // common, 1-8 gems instead
|
||||
}
|
||||
else if (nModHD < 15) // rare
|
||||
{
|
||||
if (nRandType == 1) nRandGem = 10;
|
||||
else if (nRandType == 2) nRandGem = 11;
|
||||
else nRandGem = 13;
|
||||
|
||||
nStack = (d6() - 3); // rare, 1-3 (66% chance of 1)
|
||||
}
|
||||
else if (nModHD < 23)
|
||||
{
|
||||
if (nRandType == 1) nRandGem = 5;
|
||||
else if (nRandType == 2) nRandGem = 8;
|
||||
else nRandGem = 9;
|
||||
|
||||
nStack = (d6() - 4); // rare, 1-2 (83% chance of 1)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (nRandType == 1) nRandGem = 6;
|
||||
else if (nRandType == 2) nRandGem = 12;
|
||||
else nRandGem = 5;
|
||||
}
|
||||
|
||||
string sBaseBP = "nw_it_gem00";
|
||||
if (nRandGem > 9)
|
||||
{
|
||||
sBaseBP = "nw_it_gem0";
|
||||
}
|
||||
sBP = (sBaseBP + IntToString(nRandGem));
|
||||
}
|
||||
else if (nRandom <= 90) // 20% chance of jewelry
|
||||
{
|
||||
nStack = (d6() - 3);
|
||||
|
||||
if (nModHD < 3)
|
||||
{
|
||||
sBP = "nw_it_mring021"; // copper ring
|
||||
}
|
||||
else if (nModHD < 8)
|
||||
{
|
||||
sBP = "nw_it_mneck020"; // copper necklace
|
||||
}
|
||||
else if (nModHD < 13)
|
||||
{
|
||||
sBP = "nw_it_mring022"; // silver ring
|
||||
}
|
||||
else if (nModHD < 18)
|
||||
{
|
||||
sBP = "nw_it_mneck021"; // silver necklace
|
||||
|
||||
}
|
||||
else if (nModHD < 23)
|
||||
{
|
||||
sBP = "nw_it_mring023"; // gold ring
|
||||
}
|
||||
else
|
||||
{
|
||||
sBP = "nw_it_mneck022"; // gold necklace
|
||||
}
|
||||
}
|
||||
|
||||
if (sBP != "") // valid blueprint determined, create treasure
|
||||
{
|
||||
if (nStack < 1) nStack = 1;
|
||||
|
||||
CreateItemOnObject(sBP, OBJECT_SELF, nStack);
|
||||
}
|
||||
|
||||
// determine random healing item
|
||||
nRandom = d100(); // 10% chance of nothing
|
||||
if (nRandom <= 40) // 40% chance of healing kit
|
||||
{
|
||||
if (nModHD < 5)
|
||||
{
|
||||
sBP = "nw_it_medkit001"; // +1
|
||||
}
|
||||
else if (nModHD < 15)
|
||||
{
|
||||
sBP = "nw_it_medkit002"; // +3
|
||||
}
|
||||
else if (nModHD < 25)
|
||||
{
|
||||
sBP = "nw_it_medkit003"; // +6
|
||||
}
|
||||
else
|
||||
{
|
||||
sBP = "nw_it_medkit004"; // +10
|
||||
}
|
||||
}
|
||||
else if (nRandom <= 80) // 40% chance of healing potion
|
||||
{
|
||||
if (nModHD < 0)
|
||||
{
|
||||
sBP = "nw_it_mpotion001"; // cure light
|
||||
}
|
||||
else if (nModHD < 10)
|
||||
{
|
||||
sBP = "nw_it_mpotion020"; // cure moderate
|
||||
}
|
||||
else if (nModHD < 20)
|
||||
{
|
||||
sBP = "nw_it_mpotion002"; // cure serious
|
||||
}
|
||||
else
|
||||
{
|
||||
sBP = "nw_it_mpotion003"; // cure critical
|
||||
}
|
||||
}
|
||||
else if (nRandom <= 90) // 10% chance of ANY standard potion
|
||||
{
|
||||
nItem = (d20() + d6() - 1); // # from 1-25 determines potion
|
||||
if (nItem < 24)
|
||||
{
|
||||
if (nItem < 10)
|
||||
{
|
||||
sBP = ("nw_it_mpotion00" + IntToString(nItem));
|
||||
}
|
||||
else
|
||||
{
|
||||
sBP = ("nw_it_mpotion0" + IntToString(nItem));
|
||||
}
|
||||
}
|
||||
else if (nItem == 24)
|
||||
{
|
||||
sBP = "x2_it_mpotion001";
|
||||
}
|
||||
else if (nItem == 25)
|
||||
{
|
||||
sBP = "x2_it_mpotion002";
|
||||
}
|
||||
else
|
||||
{
|
||||
sBP = "nw_it_mpotion002"; // default to cure serious wounds
|
||||
}
|
||||
}
|
||||
|
||||
if (sBP != "") // valid blueprint determined, create healing item
|
||||
{
|
||||
// determine stack size for healing/potion item
|
||||
nStack = (d6() - 3);
|
||||
if (nStack < 1) nStack = 1; // 1 to 3, with 1 most likely (66%)
|
||||
|
||||
CreateItemOnObject(sBP, OBJECT_SELF, nStack);
|
||||
}
|
||||
|
||||
// don't do this again
|
||||
SetLocalInt(OBJECT_SELF, "nTreasure", 1);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user