diff --git a/Scripts/Engines/MLQuests/Items/Teleporters.cs b/Scripts/Engines/MLQuests/Items/Teleporters.cs index 275fb588f..888a96eeb 100644 --- a/Scripts/Engines/MLQuests/Items/Teleporters.cs +++ b/Scripts/Engines/MLQuests/Items/Teleporters.cs @@ -1,226 +1,226 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Server; -using Server.Items; -using Server.Mobiles; - -namespace Server.Engines.MLQuests.Items -{ - public class MLQuestTeleporter : Teleporter - { - private MLQuest m_RequiredQuest; - private TextDefinition m_Message; - - [CommandProperty( AccessLevel.GameMaster )] - public MLQuest RequiredQuest - { - get { return m_RequiredQuest; } - // Needs work for in-game - set { m_RequiredQuest = value; InvalidateProperties(); } - } - - [CommandProperty( AccessLevel.GameMaster )] - public TextDefinition Message - { - get { return m_Message; } - set { m_Message = value; } - } - - [Constructable] - public MLQuestTeleporter() - : this( Point3D.Zero, null, null, null ) - { - } - - [Constructable] - public MLQuestTeleporter( Point3D pointDest, Map mapDest ) - : this( pointDest, mapDest, null, null ) - { - } - - [Constructable] - public MLQuestTeleporter( Point3D pointDest, Map mapDest, MLQuest quest, TextDefinition message ) - : base( pointDest, mapDest ) - { - m_RequiredQuest = quest; - m_Message = message; - } - - public override bool CanTeleport( Mobile m ) - { - if ( !base.CanTeleport( m ) ) - return false; - - if ( m_RequiredQuest != null ) - { - PlayerMobile pm = m as PlayerMobile; - - if ( pm == null ) - return false; - - MLQuestContext context = MLQuestSystem.GetContext( pm ); - - if ( context == null || ( !context.IsDoingQuest( m_RequiredQuest ) && !context.HasDoneQuest( m_RequiredQuest ) ) ) - { - TextDefinition.SendMessageTo( m, m_Message ); - return false; - } - } - - return true; - } - - public override void GetProperties( ObjectPropertyList list ) - { - base.GetProperties( list ); - - if ( m_RequiredQuest != null ) - list.Add( String.Format( "Required quest: {0}", m_RequiredQuest ) ); - } - - public MLQuestTeleporter( Serial serial ) - : base( serial ) - { - } - - public override void Serialize( GenericWriter writer ) - { - base.Serialize( writer ); - - writer.Write( (int) 0 ); // version - - MLQuestSystem.WriteQuestRef( writer, m_RequiredQuest ); - TextDefinition.Serialize( writer, m_Message ); - } - - public override void Deserialize( GenericReader reader ) - { - base.Deserialize( reader ); - - int version = reader.ReadInt(); - - m_RequiredQuest = MLQuestSystem.ReadQuestRef( reader ); - m_Message = TextDefinition.Deserialize( reader ); - } - } - - public interface ITicket - { - void OnTicketUsed( Mobile from ); - } - - public class TicketTeleporter : Teleporter - { - private Type m_TicketType; - private TextDefinition m_Message; - - [CommandProperty( AccessLevel.GameMaster )] - public Type TicketType - { - get { return m_TicketType; } - set { m_TicketType = value; InvalidateProperties(); } - } - - [CommandProperty( AccessLevel.GameMaster )] - public TextDefinition Message - { - get { return m_Message; } - set { m_Message = value; } - } - - /* set default config to prevent null ref @ serialize due to uninitialized data */ - - [Constructable] - public TicketTeleporter() - : this( new Point3D( 6223, 336, 60 ), Map.Trammel ) - { - } - - [Constructable] - public TicketTeleporter( Point3D pointDest, Map mapDest ) - : this( pointDest, mapDest, typeof( AcidProofRope ), 1074272 ) - { - } - - [Constructable] - public TicketTeleporter( Point3D pointDest, Map mapDest, Type ticketType, TextDefinition message ) - : base( pointDest, mapDest ) - { - m_TicketType = ticketType; - m_Message = message; - } - - public override bool CanTeleport( Mobile m ) - { - if ( !base.CanTeleport( m ) ) - return false; - - if ( m_TicketType != null ) - { - Item ticket = null; - Container pack = m.Backpack; - - if ( pack != null ) - ticket = pack.FindItemByType( m_TicketType, false ); // Check (top level) backpack - - if ( ticket == null ) - { - foreach ( Item item in m.Items ) // Check paperdoll - { - if ( m_TicketType.IsAssignableFrom( item.GetType() ) ) - { - ticket = item; - break; - } - } - } - - if ( ticket == null ) - { - TextDefinition.SendMessageTo( m, m_Message ); - return false; - } - - if ( ticket is ITicket ) - ((ITicket)ticket).OnTicketUsed( m ); - } - - return true; - } - - public override void GetProperties( ObjectPropertyList list ) - { - base.GetProperties( list ); - - if ( m_TicketType != null ) - list.Add( String.Format( "Required ticket: {0}", m_TicketType.Name ) ); - } - - public TicketTeleporter( Serial serial ) - : base( serial ) - { - } - - public override void Serialize( GenericWriter writer ) - { - base.Serialize( writer ); - - writer.Write( (int)0 ); // version - - writer.Write( m_TicketType.FullName ); - TextDefinition.Serialize( writer, m_Message ); - } - - public override void Deserialize( GenericReader reader ) - { - base.Deserialize( reader ); - - int version = reader.ReadInt(); - - m_TicketType = ScriptCompiler.FindTypeByFullName( reader.ReadString(), false ); - m_Message = TextDefinition.Deserialize( reader ); - } - } -} - +using System; +using System.Collections.Generic; +using System.Text; +using Server; +using Server.Items; +using Server.Mobiles; + +namespace Server.Engines.MLQuests.Items +{ + public class MLQuestTeleporter : Teleporter + { + private MLQuest m_RequiredQuest; + private TextDefinition m_Message; + + [CommandProperty(AccessLevel.GameMaster)] + public MLQuest RequiredQuest + { + get { return m_RequiredQuest; } + // Needs work for in-game + set { m_RequiredQuest = value; InvalidateProperties(); } + } + + [CommandProperty(AccessLevel.GameMaster)] + public TextDefinition Message + { + get { return m_Message; } + set { m_Message = value; } + } + + [Constructable] + public MLQuestTeleporter() + : this(Point3D.Zero, null, null, null) + { + } + + [Constructable] + public MLQuestTeleporter(Point3D pointDest, Map mapDest) + : this(pointDest, mapDest, null, null) + { + } + + [Constructable] + public MLQuestTeleporter(Point3D pointDest, Map mapDest, MLQuest quest, TextDefinition message) + : base(pointDest, mapDest) + { + m_RequiredQuest = quest; + m_Message = message; + } + + public override bool CanTeleport(Mobile m) + { + if (!base.CanTeleport(m)) + return false; + + if (m_RequiredQuest != null) + { + PlayerMobile pm = m as PlayerMobile; + + if (pm == null) + return false; + + MLQuestContext context = MLQuestSystem.GetContext(pm); + + if (context == null || (!context.IsDoingQuest(m_RequiredQuest) && !context.HasDoneQuest(m_RequiredQuest))) + { + TextDefinition.SendMessageTo(m, m_Message); + return false; + } + } + + return true; + } + + public override void GetProperties(ObjectPropertyList list) + { + base.GetProperties(list); + + if (m_RequiredQuest != null) + list.Add(String.Format("Required quest: {0}", m_RequiredQuest)); + } + + public MLQuestTeleporter(Serial serial) + : base(serial) + { + } + + public override void Serialize(GenericWriter writer) + { + base.Serialize(writer); + + writer.Write((int)0); // version + + MLQuestSystem.WriteQuestRef(writer, m_RequiredQuest); + TextDefinition.Serialize(writer, m_Message); + } + + public override void Deserialize(GenericReader reader) + { + base.Deserialize(reader); + + int version = reader.ReadInt(); + + m_RequiredQuest = MLQuestSystem.ReadQuestRef(reader); + m_Message = TextDefinition.Deserialize(reader); + } + } + + public interface ITicket + { + void OnTicketUsed(Mobile from); + } + + public class TicketTeleporter : Teleporter + { + private Type m_TicketType; + private TextDefinition m_Message; + + [CommandProperty(AccessLevel.GameMaster)] + public Type TicketType + { + get { return m_TicketType; } + set { m_TicketType = value; InvalidateProperties(); } + } + + [CommandProperty(AccessLevel.GameMaster)] + public TextDefinition Message + { + get { return m_Message; } + set { m_Message = value; } + } + + /* set default config to prevent null ref @ serialize due to uninitialized data */ + + [Constructable] + public TicketTeleporter() + : this(new Point3D(6223, 336, 60), Map.Trammel) + { + } + + [Constructable] + public TicketTeleporter(Point3D pointDest, Map mapDest) + : this(pointDest, mapDest, typeof(AcidProofRope), 1074272) + { + } + + [Constructable] + public TicketTeleporter(Point3D pointDest, Map mapDest, Type ticketType, TextDefinition message) + : base(pointDest, mapDest) + { + m_TicketType = ticketType; + m_Message = message; + } + + public override bool CanTeleport(Mobile m) + { + if (!base.CanTeleport(m)) + return false; + + if (m_TicketType != null) + { + Item ticket = null; + Container pack = m.Backpack; + + if (pack != null) + ticket = pack.FindItemByType(m_TicketType, false); // Check (top level) backpack + + if (ticket == null) + { + foreach (Item item in m.Items) // Check paperdoll + { + if (m_TicketType.IsAssignableFrom(item.GetType())) + { + ticket = item; + break; + } + } + } + + if (ticket == null) + { + TextDefinition.SendMessageTo(m, m_Message); + return false; + } + + if (ticket is ITicket) + ((ITicket)ticket).OnTicketUsed(m); + } + + return true; + } + + public override void GetProperties(ObjectPropertyList list) + { + base.GetProperties(list); + + if (m_TicketType != null) + list.Add(String.Format("Required ticket: {0}", m_TicketType.Name)); + } + + public TicketTeleporter(Serial serial) + : base(serial) + { + } + + public override void Serialize(GenericWriter writer) + { + base.Serialize(writer); + + writer.Write((int)0); // version + + writer.Write(m_TicketType.FullName); + TextDefinition.Serialize(writer, m_Message); + } + + public override void Deserialize(GenericReader reader) + { + base.Deserialize(reader); + + int version = reader.ReadInt(); + + m_TicketType = ScriptCompiler.FindTypeByFullName(reader.ReadString(), false); + m_Message = TextDefinition.Deserialize(reader); + } + } +} +