- [X] Deletes serialization annotations - [X] Updates to ModernUO.Serialization.Annotations nuget - [X] Updates serializer to v2.0 - [X] Changes all `Serializable()` to `SerializationGenerator()` - [X] Updates to schema generator v2.0
117 lines
2.6 KiB
C#
117 lines
2.6 KiB
C#
using System;
|
|
using ModernUO.Serialization;
|
|
|
|
namespace Server.Items;
|
|
|
|
[SerializationGenerator(0, false)]
|
|
public partial class TreasureChestLevel2 : LockableContainer
|
|
{
|
|
[Constructible]
|
|
public TreasureChestLevel2() : base(0xE41)
|
|
{
|
|
SetChestAppearance();
|
|
Movable = false;
|
|
|
|
TrapType = TrapType.ExplosionTrap;
|
|
TrapPower = 2 * Utility.Random(1, 25);
|
|
Locked = true;
|
|
|
|
RequiredSkill = 72;
|
|
LockLevel = RequiredSkill - Utility.Random(1, 10);
|
|
MaxLockLevel = RequiredSkill + Utility.Random(1, 10);
|
|
|
|
// According to OSI, loot in level 2 chest is:
|
|
// Gold 80 - 150
|
|
// Arrows 10
|
|
// Reagents
|
|
// Scrolls
|
|
// Potions
|
|
// Gems
|
|
|
|
// Gold
|
|
DropItem(new Gold(Utility.Random(70, 100)));
|
|
|
|
// Drop bolts
|
|
// DropItem( new Arrow( 10 ) );
|
|
|
|
// Reagents
|
|
for (var i = Utility.Random(3); i > 0; i--)
|
|
{
|
|
var reagents = Loot.RandomReagent();
|
|
reagents.Amount = Utility.Random(1, 2);
|
|
DropItem(reagents);
|
|
}
|
|
|
|
// Scrolls
|
|
if (Utility.RandomBool())
|
|
{
|
|
var scrolls = Loot.RandomScroll(0, 39, SpellbookType.Regular);
|
|
scrolls.Amount = Utility.Random(1, 8);
|
|
DropItem(scrolls);
|
|
}
|
|
|
|
// Potions
|
|
if (Utility.RandomBool())
|
|
{
|
|
DropItem(Loot.RandomPotion());
|
|
}
|
|
|
|
// Gems
|
|
if (Utility.RandomBool())
|
|
{
|
|
var gems = Loot.RandomGem();
|
|
gems.Amount = Utility.Random(1, 6);
|
|
DropItem(gems);
|
|
}
|
|
}
|
|
|
|
public override bool Decays => true;
|
|
|
|
public override bool IsDecoContainer => false;
|
|
|
|
public override TimeSpan DecayTime => TimeSpan.FromMinutes(Utility.Random(15, 60));
|
|
|
|
public override int DefaultGumpID => 0x42;
|
|
|
|
public override int DefaultDropSound => 0x42;
|
|
|
|
public override Rectangle2D Bounds => new(18, 105, 144, 73);
|
|
|
|
private static readonly (int, int)[] _chestAppearances =
|
|
{
|
|
// Large Crate
|
|
(0xe3c, 0x44),
|
|
(0xe3d, 0x44),
|
|
|
|
// Medium Crate
|
|
(0xe3e, 0x44),
|
|
(0xe3f, 0x44),
|
|
|
|
// Small Crate
|
|
(0x9a9, 0x44),
|
|
(0xe7e, 0x44),
|
|
|
|
// Wooden Chest
|
|
(0xe42, 0x49),
|
|
(0xe43, 0x49),
|
|
|
|
// Metal Chest
|
|
(0x9ab, 0x4A),
|
|
(0xe7c, 0x4A),
|
|
|
|
// Metal Golden Chest
|
|
(0xe40, 0x42),
|
|
(0xe41, 0x42),
|
|
|
|
// Keg
|
|
(0xe7f, 0x3e),
|
|
|
|
// Barrel
|
|
(0xe77, 0x3e),
|
|
};
|
|
|
|
private void SetChestAppearance()
|
|
{
|
|
(ItemID, GumpID) = _chestAppearances.RandomElement();
|
|
}
|
|
}
|