using System; namespace Server.Items { public enum TrophyRank { Bronze, Silver, Gold } [Flippable( 5020, 4647 )] public class Trophy : Item { private TrophyRank m_Rank; [CommandProperty( AccessLevel.GameMaster )] public string Title { get; set; } [CommandProperty( AccessLevel.GameMaster )] public TrophyRank Rank{ get => m_Rank; set{ m_Rank = value; UpdateStyle(); } } [CommandProperty( AccessLevel.GameMaster )] public Mobile Owner { get; set; } [CommandProperty( AccessLevel.GameMaster )] public DateTime Date { get; private set; } [Constructible] public Trophy( string title, TrophyRank rank ) : base( 5020 ) { Title = title; m_Rank = rank; Date = DateTime.UtcNow; LootType = LootType.Blessed; UpdateStyle(); } public Trophy( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 1 ); // version writer.Write( (string) Title ); writer.Write( (int) m_Rank ); writer.Write( (Mobile) Owner ); writer.Write( (DateTime) Date ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); Title = reader.ReadString(); m_Rank = (TrophyRank) reader.ReadInt(); Owner = reader.ReadMobile(); Date = reader.ReadDateTime(); if ( version == 0 ) LootType = LootType.Blessed; } public override void OnAdded(IEntity parent) { base.OnAdded( parent ); if ( Owner == null ) Owner = RootParent as Mobile; } public override void OnSingleClick( Mobile from ) { base.OnSingleClick( from ); if ( Owner != null ) LabelTo( from, "{0} -- {1}", Title, Owner.RawName ); else if ( Title != null ) LabelTo( from, Title ); if ( Date != DateTime.MinValue ) LabelTo( from, Date.ToString( "d" ) ); } public void UpdateStyle() { Name = $"{m_Rank.ToString().ToLower()} trophy"; switch ( m_Rank ) { case TrophyRank.Gold: Hue = 2213; break; case TrophyRank.Silver: Hue = 0; break; case TrophyRank.Bronze: Hue = 2206; break; } } } }