96 lines
2.9 KiB
C#
96 lines
2.9 KiB
C#
using System;
|
|
using ModernUO.Serialization;
|
|
|
|
namespace Server.Items;
|
|
|
|
// ==============================================================
|
|
// LEVEL 4: 99% Trapped / 99% Locked (1% Lottery Ticket!)
|
|
// ==============================================================
|
|
[SerializationGenerator(0, false)]
|
|
public partial class RandomLootBag : Bag
|
|
{
|
|
private static void GetRandomAOSStats(out int attributeCount, out int min, out int max)
|
|
{
|
|
var rnd = Utility.Random(15);
|
|
|
|
if (rnd < 1)
|
|
{
|
|
attributeCount = Utility.RandomMinMax(2, 5);
|
|
min = 20;
|
|
max = 70;
|
|
}
|
|
else if (rnd < 3)
|
|
{
|
|
attributeCount = Utility.RandomMinMax(2, 4);
|
|
min = 20;
|
|
max = 50;
|
|
}
|
|
else if (rnd < 6)
|
|
{
|
|
attributeCount = Utility.RandomMinMax(2, 3);
|
|
min = 20;
|
|
max = 40;
|
|
}
|
|
else if (rnd < 10)
|
|
{
|
|
attributeCount = Utility.RandomMinMax(1, 2);
|
|
min = 10;
|
|
max = 30;
|
|
}
|
|
else
|
|
{
|
|
attributeCount = 1;
|
|
min = 10;
|
|
max = 20;
|
|
}
|
|
}
|
|
|
|
private static void GetRandomResists(out int phy, out int fire, out int cold, out int poison, out int energy)
|
|
{
|
|
var phyR = Utility.Random(1, 15);
|
|
phy = phyR;
|
|
var fireR = Utility.Random(1, 15);
|
|
fire = fireR;
|
|
var coldR = Utility.Random(1, 15);
|
|
cold = coldR;
|
|
var poisonR = Utility.Random(1, 15);
|
|
poison = poisonR;
|
|
var energyR = Utility.Random(1, 15);
|
|
energy = energyR;
|
|
}
|
|
|
|
[Constructible]
|
|
public RandomLootBag()
|
|
{
|
|
for (var i = Utility.Random(10) + 1; i > 0; i--)
|
|
{
|
|
var weapon = Loot.RandomWeapon();
|
|
GetRandomAOSStats(out var attributeCount, out var min, out var max);
|
|
BaseRunicTool.ApplyAttributesTo(weapon, attributeCount, min, max);
|
|
DropItem(weapon);
|
|
}
|
|
|
|
for ( var i = Utility.Random(10) + 1; i > 0; i--)
|
|
{
|
|
var armor = Loot.RandomArmorOrShield();
|
|
GetRandomAOSStats(out var attributeCount, out var min, out var max);
|
|
BaseRunicTool.ApplyAttributesTo(armor, attributeCount, min, max);
|
|
GetRandomResists(out var phy, out var fire, out var cold, out var poison, out var energy);
|
|
armor.PhysicalBonus = phy;
|
|
armor.FireBonus = fire;
|
|
armor.ColdBonus = cold;
|
|
armor.PoisonBonus = poison;
|
|
armor.EnergyBonus = energy;
|
|
DropItem(armor);
|
|
}
|
|
|
|
for (var i = Utility.Random(10) + 1; i > 0; i--)
|
|
{
|
|
var jewelry = Loot.RandomJewelry();
|
|
GetRandomAOSStats(out var attributeCount, out var min, out var max);
|
|
BaseRunicTool.ApplyAttributesTo(jewelry, attributeCount, min, max);
|
|
DropItem(jewelry);
|
|
}
|
|
}
|
|
|
|
}
|