239 lines
7.6 KiB
C#
239 lines
7.6 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|