95 lines
2.9 KiB
C#
95 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 TreasureBagLevel4 : BaseTreasureBag
|
|
{
|
|
[Constructible]
|
|
public TreasureBagLevel4()
|
|
{
|
|
Locked = Utility.RandomDouble() < 0.95; // 99% Locked (5% Unlocked)
|
|
RequiredSkill = 92;
|
|
LockLevel = RequiredSkill - Utility.Random(1, 10);
|
|
MaxLockLevel = RequiredSkill + Utility.Random(1, 10);
|
|
|
|
if (Utility.RandomDouble() < 0.99) // 99% Trapped
|
|
{
|
|
TrapType = TrapType.ExplosionTrap;
|
|
TrapPower = 4 * Utility.Random(10, 25);
|
|
}
|
|
|
|
// --- UNIFIED LOOT GENERATION ---
|
|
// Everyone gets this massive loot pool. The 1% just get to open it for free!
|
|
|
|
DropItem(new Gold(Utility.Random(500, 900)));
|
|
|
|
for (var i = Utility.Random(4) + 1; i > 0; i--)
|
|
{
|
|
var reagents = Loot.RandomReagent();
|
|
reagents.Amount = 12;
|
|
DropItem(reagents);
|
|
}
|
|
|
|
for (var i = Utility.Random(4) + 1; i > 0; i--)
|
|
{
|
|
var scroll = Loot.RandomScroll(0, 47, SpellbookType.Regular);
|
|
scroll.Amount = 16;
|
|
DropItem(scroll);
|
|
}
|
|
|
|
DropItem(new BlankScroll(Utility.Random(1, 4)));
|
|
|
|
for (var i = Utility.Random(4) + 1; i > 0; i--)
|
|
{
|
|
DropItem(Loot.RandomPotion());
|
|
}
|
|
|
|
for (var i = Utility.Random(4) + 1; i > 0; i--)
|
|
{
|
|
var gems = Loot.RandomGem();
|
|
gems.Amount = 12;
|
|
DropItem(gems);
|
|
}
|
|
|
|
for (var i = Utility.Random(4) + 1; i > 0; i--)
|
|
{
|
|
DropItem(Loot.RandomWand());
|
|
}
|
|
|
|
for (var i = Utility.Random(4) + 1; i > 0; i--)
|
|
{
|
|
var item = Loot.RandomArmorOrShieldOrWeapon();
|
|
|
|
if (item is BaseWeapon weapon)
|
|
{
|
|
weapon.DamageLevel = (WeaponDamageLevel)Utility.Random(4);
|
|
weapon.AccuracyLevel = (WeaponAccuracyLevel)Utility.Random(4);
|
|
weapon.DurabilityLevel = (WeaponDurabilityLevel)Utility.Random(4);
|
|
weapon.Quality = WeaponQuality.Regular;
|
|
}
|
|
else if (item is BaseArmor armor)
|
|
{
|
|
armor.ProtectionLevel = (ArmorProtectionLevel)Utility.Random(4);
|
|
armor.Durability = (ArmorDurabilityLevel)Utility.Random(4);
|
|
armor.Quality = ArmorQuality.Regular;
|
|
}
|
|
|
|
DropItem(item);
|
|
}
|
|
|
|
for (var i = Utility.Random(3) + 1; i > 0; i--)
|
|
{
|
|
DropItem(Loot.RandomClothing());
|
|
}
|
|
|
|
for (var i = Utility.Random(3) + 1; i > 0; i--)
|
|
{
|
|
DropItem(Loot.RandomJewelry());
|
|
}
|
|
}
|
|
}
|