using System; using Server; using Server.Items; using Server.Mobiles; using Server.Network; namespace Server.Items { public class ShrineController : Item { private VirtueName m_Shrine; [CommandProperty( AccessLevel.GameMaster )] public VirtueName Shrine { get { return m_Shrine; } set { m_Shrine = value; InvalidateProperties(); } } [Constructable] public ShrineController() : this( VirtueName.Compassion ) { } [Constructable] public ShrineController( VirtueName shrine ) : base( 0x1BC3 ) { m_Shrine = shrine; Name = shrine.ToString() + " Shrine Controller"; Movable = false; Visible = false; } public ShrineController( Serial serial ) : base( serial ) { } public override bool HandlesOnSpeech { get { return true; } } public override void OnSpeech( SpeechEventArgs e ) { if ( e.Handled || !e.Mobile.InRange( this.GetWorldLocation(), 5 ) ) return; string speech = e.Speech.ToLower().Trim(); string mantra = GetMantra( m_Shrine ); if ( speech == mantra ) { PlayerMobile pm = e.Mobile as PlayerMobile; if ( pm != null ) { foreach ( Item item in pm.Backpack.Items ) { if ( item is VirtueSigil && ((VirtueSigil)item).Shrine == m_Shrine ) { pm.SendMessage( 33, "You already possess the sigil for this shrine." ); return; } } pm.SendMessage( 63, "The shrine recognizes your devotion and grants you a sigil!" ); pm.PlaySound( 0x244 ); Effects.SendLocationParticles( EffectItem.Create( pm.Location, pm.Map, EffectItem.DefaultDuration ), 0x376A, 10, 10, 2023 ); pm.AddToBackpack( new VirtueSigil( m_Shrine ) ); e.Handled = true; } } } private string GetMantra( VirtueName virtue ) { switch ( virtue ) { case VirtueName.Compassion: return "mu"; case VirtueName.Honesty: return "ahm"; case VirtueName.Honor: return "summ"; case VirtueName.Humility: return "lum"; case VirtueName.Justice: return "beh"; case VirtueName.Sacrifice: return "cah"; case VirtueName.Spirituality: return "om"; case VirtueName.Valor: return "ra"; default: return "om"; } } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); // version writer.Write( (int) m_Shrine ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); m_Shrine = (VirtueName)reader.ReadInt(); } } public class CompassionController : ShrineController { [Constructable] public CompassionController() : base( VirtueName.Compassion ) { } public CompassionController( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class HonestyController : ShrineController { [Constructable] public HonestyController() : base( VirtueName.Honesty ) { } public HonestyController( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class HonorController : ShrineController { [Constructable] public HonorController() : base( VirtueName.Honor ) { } public HonorController( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class HumilityController : ShrineController { [Constructable] public HumilityController() : base( VirtueName.Humility ) { } public HumilityController( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class JusticeController : ShrineController { [Constructable] public JusticeController() : base( VirtueName.Justice ) { } public JusticeController( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class SacrificeController : ShrineController { [Constructable] public SacrificeController() : base( VirtueName.Sacrifice ) { } public SacrificeController( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class SpiritualityController : ShrineController { [Constructable] public SpiritualityController() : base( VirtueName.Spirituality ) { } public SpiritualityController( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } public class ValorController : ShrineController { [Constructable] public ValorController() : base( VirtueName.Valor ) { } public ValorController( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); } } }