using System; using Server; using Server.Network; namespace Server.Items { public enum GasTrapType { NorthWall, WestWall, Floor } public class GasTrap : BaseTrap { private Poison m_Poison; [CommandProperty( AccessLevel.GameMaster )] public Poison Poison { get{ return m_Poison; } set{ m_Poison = value; } } [CommandProperty( AccessLevel.GameMaster )] public GasTrapType Type { get { switch ( ItemID ) { case 0x113C: return GasTrapType.NorthWall; case 0x1147: return GasTrapType.WestWall; case 0x11A8: return GasTrapType.Floor; } return GasTrapType.WestWall; } set { ItemID = GetBaseID( value ); } } public static int GetBaseID( GasTrapType type ) { switch ( type ) { case GasTrapType.NorthWall: return 0x113C; case GasTrapType.WestWall: return 0x1147; case GasTrapType.Floor: return 0x11A8; } return 0; } [Constructable] public GasTrap() : this( GasTrapType.Floor ) { } [Constructable] public GasTrap( GasTrapType type ) : this( type, Poison.Lesser ) { } [Constructable] public GasTrap( Poison poison ) : this( GasTrapType.Floor, Poison.Lesser ) { } [Constructable] public GasTrap( GasTrapType type, Poison poison ) : base( GetBaseID( type ) ) { m_Poison = poison; } public override bool PassivelyTriggered{ get{ return false; } } public override TimeSpan PassiveTriggerDelay{ get{ return TimeSpan.Zero; } } public override int PassiveTriggerRange{ get{ return 0; } } public override TimeSpan ResetDelay{ get{ return TimeSpan.FromSeconds( 0.0 ); } } public override void OnTrigger( Mobile from ) { if ( m_Poison == null || !from.Player || !from.Alive || from.AccessLevel > AccessLevel.Player ) return; Effects.SendLocationEffect( Location, Map, GetBaseID( this.Type ) - 2, 16, 3, GetEffectHue(), 0 ); Effects.PlaySound( Location, Map, 0x231 ); from.ApplyPoison( from, m_Poison ); from.LocalOverheadMessage( MessageType.Regular, 0x22, 500855 ); // You are enveloped by a noxious gas cloud! } public GasTrap( Serial serial ) : base( serial ) { } public override void Serialize( GenericWriter writer ) { base.Serialize( writer ); writer.Write( (int) 0 ); // version Poison.Serialize( m_Poison, writer ); } public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 0: { m_Poison = Poison.Deserialize( reader ); break; } } } } }