using System; using Server.Items; using Server.Mobiles; using Server.Network; namespace Server.Engines.Quests.Samurai { public class HaochisTreasureChest : WoodenFootLocker { [Constructible] public HaochisTreasureChest() { Movable = false; GenerateTreasure(); } public HaochisTreasureChest( Serial serial ) : base( serial ) { } public override bool IsDecoContainer => false; private void GenerateTreasure() { for ( int i = Items.Count - 1; i >= 0; i-- ) Items[i].Delete(); for ( int i = 0; i < 75; i++ ) { switch ( Utility.Random( 3 ) ) { case 0: DropItem( new GoldBracelet() ); break; case 1: DropItem( new GoldRing() ); break; case 2: DropItem( Loot.RandomGem() ); break; } } } public override bool CheckHold( Mobile m, Item item, bool message, bool checkItems, int plusItems, int plusWeight ) { return false; } public override bool CheckItemUse( Mobile from, Item item ) { return item == this; } public override bool CheckLift( Mobile from, Item item, ref LRReason reject ) { if ( from.AccessLevel >= AccessLevel.GameMaster ) return true; if ( from is PlayerMobile player && player.Quest is HaochisTrialsQuest ) { if ( player.Quest.FindObjective( typeof( FifthTrialIntroObjective ) ) is FifthTrialIntroObjective obj ) { if ( obj.StolenTreasure ) from.SendLocalizedMessage( 1063247 ); // The guard is watching you carefully! It would be unwise to remove another item from here. else return true; } } return false; } public override void OnItemLifted( Mobile from, Item item ) { if ( from is PlayerMobile player && player.Quest is HaochisTrialsQuest ) { if ( player.Quest.FindObjective( typeof( FifthTrialIntroObjective ) ) is FifthTrialIntroObjective obj ) obj.StolenTreasure = true; } Timer.DelayCall( TimeSpan.FromMinutes( 2.0 ), new TimerCallback( GenerateTreasure ) ); } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.WriteEncodedInt( 0 ); // version } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadEncodedInt(); Timer.DelayCall( TimeSpan.Zero, new TimerCallback( GenerateTreasure ) ); } } }