public CrateRectangle(GenericReader reader)
        {
            int version = reader.ReadInt();

            Rectangle = reader.ReadRect2D();
            FirstDirection = (Direction)reader.ReadInt();
            SecondDirection = (Direction)reader.ReadInt();
        }
Example #2
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			if( version >= 1 )
			{
				m_Owner = reader.ReadMobile();
				m_Tent = reader.ReadItem() as TentAddon;
				m_Bedroll = reader.ReadItem() as TentBedroll;
				m_Chest = reader.ReadItem() as SecureTentChest;
				m_Bounds = reader.ReadRect2D();

				if( m_Owner != null && m_Chest != null && m_Tent != null )
					m_Region = new TravelTentRegion( m_Owner, m_Chest, m_Tent.Map, m_Bounds, 16 );
			}
		}
Example #3
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
                case 2:
                    {
                        m_GameItems = reader.ReadStrongItemList();
                        m_WinnerLocation = reader.ReadPoint3D();
                        goto case 1;
                    }
                case 1:
                    {
                        m_GameArea = reader.ReadRect2D();
                        break;
                    }
            }
        }
Example #4
0
		public void Deserialize(GenericReader reader)
		{
			reader.ReadByte();

			Level = reader.ReadInt();
			Decoder = reader.ReadMobile();
			Map = reader.ReadMap();
			Location = reader.ReadPoint2D();
			Bounds = reader.ReadRect2D();
		}
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 1:
				{
					m_RegionBounds = reader.ReadRect2D();
					m_Traps = reader.ReadStrongItemList<BaseTrap>();

					goto case 0;
				}
				case 0:
				{
					if ( version < 1 )
					{
						m_Traps = new List<BaseTrap>();
						m_RegionBounds = new Rectangle2D( X - 40, Y - 40, 80, 80 );
					}

					m_Creatures = reader.ReadStrongMobileList();

					m_TypeName = reader.ReadString();
					m_Door = reader.ReadItem<BaseDoor>(); ;
					m_Addon = reader.ReadItem<BaseAddon>(); ;
					m_Sequence = reader.ReadItem<GauntletSpawner>();

					State = (GauntletSpawnerState)reader.ReadInt();

					break;
				}
			}
		}
Example #6
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 14:
            {
                //version 14
                m_Coords    = ReadRect3DArray(reader);
                m_InnBounds = ReadRect3DArray(reader);
                goto case 13;
            }

            case 13:
            {
                m_TargetMap  = reader.ReadMap();
                m_GoLocation = reader.ReadPoint3D();
                m_MinZ       = reader.ReadInt();
                m_MaxZ       = reader.ReadInt();
                goto case 12;
            }

            case 12:
            {
                m_Enabled = reader.ReadBool();
                goto case 11;
            }

            case 11:
            {
                int size = reader.ReadInt();
                m_Types = new ArrayList(size);

                for (int i = 0; i < size; ++i)
                {
                    string typeName = reader.ReadString();
                    m_Types.Add(typeName);
                }
                goto case 10;
            }

            case 10:
            {
                m_MaxFollowers = reader.ReadInt();
                goto case 9;
            }

            case 9:
            {
                m_RestrictedMagicMsg = reader.ReadString();
                goto case 8;
            }

            case 8:
            {
                m_Music = (MusicName)reader.ReadInt();
                goto case 7;
            }

            case 7:
            {
                if (m_InnBounds == null)
                {
                    m_InnBounds = ReadRect2DArray(reader);
                }
                else
                {
                    m_InnBounds.AddRange(ReadRect2DArray(reader));
                }
                m_InnLogoutDelay = reader.ReadTimeSpan();

                goto case 6;
            }

            case 6:
            {
                m_PlayerLogoutDelay = reader.ReadTimeSpan();
                goto case 5;
            }

            case 5:
            {
                if (version < 13)
                {                                       // converted to a flag
                    bool m_IsDungeon = (bool)reader.ReadBool();
                    IsDungeon = m_IsDungeon;
                }
                goto case 4;
            }

            case 4:
            {
                m_IOBAlignment = (IOBAlignment)reader.ReadInt();
                goto case 3;
            }

            case 3:
            {
                m_LightLevel = reader.ReadInt();
                goto case 2;
            }

            case 2:
            {
                goto case 1;
            }

            case 1:
            {
                if (Coords == null)
                {
                    Coords = ReadRect2DArray(reader);
                }
                else
                {
                    Coords.AddRange(ReadRect2DArray(reader));
                }
                m_Priority = (CustomRegionPriority)reader.ReadInt();

                m_RestrictedSpells = ReadBitArray(reader);
                m_RestrictedSkills = ReadBitArray(reader);

                m_Flags = (RegionFlag)reader.ReadInt();

                m_RegionName = reader.ReadString();
                break;
            }

            case 0:
            {
                Coords = new ArrayList();

                Coords.Add(reader.ReadRect2D());
                m_RestrictedSpells = ReadBitArray(reader);
                m_RestrictedSkills = ReadBitArray(reader);

                m_Flags = (RegionFlag)reader.ReadInt();

                m_RegionName = reader.ReadString();
                break;
            }
            }
            if (version < 12)
            {
                m_Enabled = true;
            }

            if (version < 11)
            {
                m_Types = new ArrayList();
            }

            if (version < 8)
            {
                m_Music = MusicName.Invalid;
            }

            // fixup this table if Skills have been added or removed.
            if (SkillInfo.Table.Length != m_RestrictedSkills.Count)
            {
                BitArray temp          = new BitArray(SkillInfo.Table.Length);
                int      MaxIterations = Math.Min(temp.Length, m_RestrictedSkills.Count);
                for (int ix = 0; ix < MaxIterations; ix++)
                {
                    temp[ix] = m_RestrictedSkills[ix];
                }

                m_RestrictedSkills = temp;
            }

            // fixup this table if Spells have been added or removed.
            if (SpellRegistry.Types.Length != m_RestrictedSpells.Count)
            {
                BitArray temp          = new BitArray(SpellRegistry.Types.Length);
                int      MaxIterations = Math.Min(temp.Length, m_RestrictedSpells.Count);
                for (int ix = 0; ix < MaxIterations; ix++)
                {
                    temp[ix] = m_RestrictedSpells[ix];
                }

                m_RestrictedSkills = temp;
            }

            UpdateRegion();
        }
Example #7
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
                case 6:
                    {
                        m_MobilesSeekHome = reader.ReadBool();
                        m_UsesSpawnerHome = reader.ReadBool();
                        goto case 5;
                    }
                case 5:
                    {
                        m_SpawnArea = reader.ReadRect2D();
                        m_UsesSpawnerHome = reader.ReadBool();

                        goto case 4;
                    }
                case 4:
                    {
                        m_WalkingRange = reader.ReadInt();

                        goto case 3;
                    }
                case 3:
                case 2:
                    {
                        m_WayPoint = reader.ReadItem() as WayPoint;

                        goto case 1;
                    }

                case 1:
                    {
                        m_Group = reader.ReadBool();

                        goto case 0;
                    }

                case 0:
                    {
                        m_MinDelay = reader.ReadTimeSpan();
                        m_MaxDelay = reader.ReadTimeSpan();
                        m_Count = reader.ReadInt();
                        m_Team = reader.ReadInt();
                        m_HomeRange = reader.ReadInt();
                        m_Running = reader.ReadBool();

                        TimeSpan ts = TimeSpan.Zero;

                        if (m_Running)
                            ts = reader.ReadDeltaTime() - DateTime.Now;

                        int size = reader.ReadInt();

                        m_SpawnNames = new List<string>(size);

                        for (int i = 0; i < size; ++i)
                        {
                            string creatureString = reader.ReadString();

                            m_SpawnNames.Add(creatureString);
                            string typeName = ParseType(creatureString);

                            if (ScriptCompiler.FindTypeByName(typeName) == null)
                            {
                                if (m_WarnTimer == null)
                                    m_WarnTimer = new WarnTimer();

                                m_WarnTimer.Add(Location, Map, typeName);
                            }
                        }

                        int count = reader.ReadInt();

                        m_Spawned = new List<ISpawnable>(count);

                        for (int i = 0; i < count; ++i)
                        {
                            ISpawnable e = World.FindEntity(reader.ReadInt()) as ISpawnable;

                            if (e != null)
                            {
                                e.Spawner = this;
                                m_Spawned.Add(e);
                            }
                        }

                        if (m_Running)
                        {
                            RemoveSpawned();
                            m_Running = false;
                        }

                        break;
                    }
            }

            if (version < 3 && Weight == 0)
                Weight = -1;
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            this.m_DamageEntries = new Dictionary <Mobile, int>();

            int version = reader.ReadInt();

            switch (version)
            {
            case 7:
                KillsMod  = reader.ReadDouble();
                GroupName = reader.ReadString();
                goto case 6;

            case 6:
                SpawnName   = reader.ReadString();
                AutoRestart = reader.ReadBool();
                SpawnMod    = reader.ReadDouble();
                SpawnRadius = reader.ReadInt();
                goto case 5;

            case 5:
            {
                int    entries = reader.ReadInt();
                Mobile m;
                int    damage;
                for (int i = 0; i < entries; ++i)
                {
                    m      = reader.ReadMobile();
                    damage = reader.ReadInt();

                    if (m == null)
                    {
                        continue;
                    }

                    this.m_DamageEntries.Add(m, damage);
                }

                goto case 4;
            }

            case 4:
            {
                this.m_ConfinedRoaming = reader.ReadBool();
                this.m_Idol            = reader.ReadItem <IdolOfTheChampion>();
                this.m_HasBeenAdvanced = reader.ReadBool();

                goto case 3;
            }

            case 3:
            {
                this.m_SpawnArea = reader.ReadRect2D();

                goto case 2;
            }

            case 2:
            {
                this.m_RandomizeType = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                if (version < 3)
                {
                    int oldRange = reader.ReadInt();

                    this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - oldRange, this.Y - oldRange), new Point2D(this.X + oldRange, this.Y + oldRange));
                }

                this.m_Kills = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                if (version < 1)
                {
                    this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - 24, this.Y - 24), new Point2D(this.X + 24, this.Y + 24));           //Default was 24
                }
                bool active = reader.ReadBool();
                this.m_Type         = (ChampionSpawnType)reader.ReadInt();
                this.m_Creatures    = reader.ReadStrongMobileList();
                this.m_RedSkulls    = reader.ReadStrongItemList();
                this.m_WhiteSkulls  = reader.ReadStrongItemList();
                this.m_Platform     = reader.ReadItem <ChampionPlatform>();
                this.m_Altar        = reader.ReadItem <ChampionAltar>();
                this.m_ExpireDelay  = reader.ReadTimeSpan();
                this.m_ExpireTime   = reader.ReadDeltaTime();
                this.m_Champion     = reader.ReadMobile();
                this.m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool())
                {
                    this.m_RestartTime = reader.ReadDeltaTime();
                    this.BeginRestart(this.m_RestartTime - DateTime.UtcNow);
                }

                if (version < 4)
                {
                    this.m_Idol = new IdolOfTheChampion(this);
                    this.m_Idol.MoveToWorld(new Point3D(this.X, this.Y, this.Z - 15), this.Map);
                }

                if (this.m_Platform == null || this.m_Altar == null || this.m_Idol == null)
                {
                    this.Delete();
                }
                else if (active)
                {
                    this.Start();
                }

                break;
            }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
Example #9
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 3:
            {
                m_State = (HouseRaffleState)reader.ReadEncodedInt();

                goto case 2;
            }

            case 2:
            {
                m_ExpireAction = (HouseRaffleExpireAction)reader.ReadEncodedInt();

                goto case 1;
            }

            case 1:
            {
                m_Deed = reader.ReadItem <HouseRaffleDeed>();

                goto case 0;
            }

            case 0:
            {
                bool oldActive = (version < 3) ? reader.ReadBool() : false;

                m_Bounds = reader.ReadRect2D();
                m_Facet  = reader.ReadMap();

                m_Winner = reader.ReadMobile();

                m_TicketPrice = reader.ReadInt();
                m_Started     = reader.ReadDateTime();
                m_Duration    = reader.ReadTimeSpan();

                int entryCount = reader.ReadInt();
                m_Entries = new List <RaffleEntry>(entryCount);

                for (int i = 0; i < entryCount; i++)
                {
                    RaffleEntry entry = new RaffleEntry(reader, version);

                    if (entry.From == null)
                    {
                        continue;         // Character was deleted
                    }
                    m_Entries.Add(entry);
                }

                InvalidateRegion();

                m_AllStones.Add(this);

                if (version < 3)
                {
                    if (oldActive)
                    {
                        m_State = HouseRaffleState.Active;
                    }
                    else if (m_Winner != null)
                    {
                        m_State = HouseRaffleState.Completed;
                    }
                    else
                    {
                        m_State = HouseRaffleState.Inactive;
                    }
                }

                break;
            }
            }
        }
Example #10
0
        public object DeserializeObject(GenericReader reader)
        {
            object        output        = null;
            XmlObjectType xmlObjectType = (XmlObjectType)reader.ReadInt();

            if (xmlObjectType == XmlObjectType.Mobile)
            {
                output = reader.ReadMobile();
            }
            else if (xmlObjectType == XmlObjectType.Item)
            {
                output = reader.ReadItem();
            }
            else if (xmlObjectType == XmlObjectType.MobileList)
            {
                output = reader.ReadStrongMobileList();
            }
            else if (xmlObjectType == XmlObjectType.ItemList)
            {
                output = reader.ReadStrongItemList();
            }
            else if (xmlObjectType == XmlObjectType.ArrayList)
            {
                int       elements = reader.ReadInt();
                ArrayList list     = new ArrayList(elements);
                for (int i = 0; i < elements; i++)
                {
                    list.Add(DeserializeObject(reader));
                }
                output = list;
            }
            else if (xmlObjectType == XmlObjectType.DateTime)
            {
                output = reader.ReadDateTime();
            }
            else if (xmlObjectType == XmlObjectType.DateTimeOffset)
            {
                output = reader.ReadDateTimeOffset();
            }
            else if (xmlObjectType == XmlObjectType.BaseGuild)
            {
                output = reader.ReadGuild();
            }
            else if (xmlObjectType == XmlObjectType.IPAddress)
            {
                output = reader.ReadIPAddress();
            }
            else if (xmlObjectType == XmlObjectType.Map)
            {
                output = reader.ReadMap();
            }
            else if (xmlObjectType == XmlObjectType.Point3D)
            {
                output = reader.ReadPoint3D();
            }
            else if (xmlObjectType == XmlObjectType.Point2D)
            {
                output = reader.ReadPoint2D();
            }
            else if (xmlObjectType == XmlObjectType.TimeSpan)
            {
                output = reader.ReadTimeSpan();
            }
            else if (xmlObjectType == XmlObjectType.Rectangle2D)
            {
                output = reader.ReadRect2D();
            }
            else if (xmlObjectType == XmlObjectType.Rectangle3D)
            {
                output = reader.ReadRect3D();
            }
            else if (xmlObjectType == XmlObjectType.Double)
            {
                output = reader.ReadDouble();
            }
            else if (xmlObjectType == XmlObjectType.Integer)
            {
                output = reader.ReadInt();
            }
            else if (xmlObjectType == XmlObjectType.Boolean)
            {
                output = reader.ReadBool();
            }
            else if (xmlObjectType == XmlObjectType.UInt64)
            {
                output = reader.ReadULong();
            }
            else if (xmlObjectType == XmlObjectType.String)
            {
                output = reader.ReadString();
            }
            else if (xmlObjectType == XmlObjectType.Type)
            {
                output = UberScriptFunctions.Methods.TYPE(null, reader.ReadString());
            }
            else if (xmlObjectType == XmlObjectType.Other)
            {
                LoggingCustom.Log(
                    "ERROR_Uberscript.txt",
                    DateTime.Now + ": xmlobject: " + Name + " attached to " + AttachedTo +
                    " with data of type other was deserialized");
            }
            return(output);
        }
Example #11
0
        public Arena(GenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch ( version )
            {
                case 7:
                    {
                        this.m_IsGuarded = reader.ReadBool();

                        goto case 6;
                    }
                case 6:
                    {
                        this.m_Ladder = reader.ReadItem() as LadderController;

                        goto case 5;
                    }
                case 5:
                    {
                        this.m_Tournament = reader.ReadItem() as TournamentController;
                        this.m_Announcer = reader.ReadMobile();

                        goto case 4;
                    }
                case 4:
                    {
                        this.m_Name = reader.ReadString();

                        goto case 3;
                    }
                case 3:
                    {
                        this.m_Zone = reader.ReadRect2D();

                        goto case 2;
                    }
                case 2:
                    {
                        this.m_GateIn = reader.ReadPoint3D();
                        this.m_GateOut = reader.ReadPoint3D();
                        this.m_Teleporter = reader.ReadItem();

                        goto case 1;
                    }
                case 1:
                    {
                        this.m_Players = reader.ReadStrongMobileList();

                        goto case 0;
                    }
                case 0:
                    {
                        this.m_Facet = reader.ReadMap();
                        this.m_Bounds = reader.ReadRect2D();
                        this.m_Outside = reader.ReadPoint3D();
                        this.m_Wall = reader.ReadPoint3D();

                        if (version == 0)
                        {
                            reader.ReadBool();
                            this.m_Players = new List<Mobile>();
                        }

                        this.m_Active = reader.ReadBool();
                        this.m_Points = new ArenaStartPoints(reader);

                        if (this.m_Active)
                        {
                            m_Arenas.Add(this);
                            m_Arenas.Sort();
                        }

                        break;
                    }
            }

            if (this.m_Zone.Start != Point2D.Zero && this.m_Zone.End != Point2D.Zero && this.m_Facet != null)
                this.m_Region = new SafeZone(this.m_Zone, this.m_Outside, this.m_Facet, this.m_IsGuarded);

            if (this.IsOccupied)
                Timer.DelayCall(TimeSpan.FromSeconds(2.0), new TimerCallback(Evict));

            if (this.m_Tournament != null)
                Timer.DelayCall(TimeSpan.Zero, new TimerCallback(AttachToTournament_Sandbox));
        }
Example #12
0
		public object DeserializeObject(GenericReader reader)
		{
			object output = null;
			XmlObjectType xmlObjectType = (XmlObjectType)reader.ReadInt();

			if (xmlObjectType == XmlObjectType.Mobile)
			{
				output = reader.ReadMobile();
			}
			else if (xmlObjectType == XmlObjectType.Item)
			{
				output = reader.ReadItem();
			}
			else if (xmlObjectType == XmlObjectType.MobileList)
			{
				output = reader.ReadStrongMobileList();
			}
			else if (xmlObjectType == XmlObjectType.ItemList)
			{
				output = reader.ReadStrongItemList();
			}
			else if (xmlObjectType == XmlObjectType.ArrayList)
			{
				int elements = reader.ReadInt();
				ArrayList list = new ArrayList(elements);
				for (int i = 0; i < elements; i++)
				{
					list.Add(DeserializeObject(reader));
				}
				output = list;
			}
			else if (xmlObjectType == XmlObjectType.DateTime)
			{
				output = reader.ReadDateTime();
			}
			else if (xmlObjectType == XmlObjectType.DateTimeOffset)
			{
				output = reader.ReadDateTimeOffset();
			}
			else if (xmlObjectType == XmlObjectType.BaseGuild)
			{
				output = reader.ReadGuild();
			}
			else if (xmlObjectType == XmlObjectType.IPAddress)
			{
				output = reader.ReadIPAddress();
			}
			else if (xmlObjectType == XmlObjectType.Map)
			{
				output = reader.ReadMap();
			}
			else if (xmlObjectType == XmlObjectType.Point3D)
			{
				output = reader.ReadPoint3D();
			}
			else if (xmlObjectType == XmlObjectType.Point2D)
			{
				output = reader.ReadPoint2D();
			}
			else if (xmlObjectType == XmlObjectType.TimeSpan)
			{
				output = reader.ReadTimeSpan();
			}
			else if (xmlObjectType == XmlObjectType.Rectangle2D)
			{
				output = reader.ReadRect2D();
			}
			else if (xmlObjectType == XmlObjectType.Rectangle3D)
			{
				output = reader.ReadRect3D();
			}
			else if (xmlObjectType == XmlObjectType.Double)
			{
				output = reader.ReadDouble();
			}
			else if (xmlObjectType == XmlObjectType.Integer)
			{
				output = reader.ReadInt();
			}
			else if (xmlObjectType == XmlObjectType.Boolean)
			{
				output = reader.ReadBool();
			}
			else if (xmlObjectType == XmlObjectType.UInt64)
			{
				output = reader.ReadULong();
			}
			else if (xmlObjectType == XmlObjectType.String)
			{
				output = reader.ReadString();
			}
			else if (xmlObjectType == XmlObjectType.Type)
			{
				output = UberScriptFunctions.Methods.TYPE(null, reader.ReadString());
			}
			else if (xmlObjectType == XmlObjectType.Other)
			{
				LoggingCustom.Log(
					"ERROR_Uberscript.txt",
					DateTime.Now + ": xmlobject: " + Name + " attached to " + AttachedTo +
					" with data of type other was deserialized");
			}
			return output;
		}
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            this.m_ChallengeArea = new Rectangle3D[0];

            switch (version)
            {
            case 2:
            case 1:
            {
                this.m_Disable = reader.ReadBool();
                goto case 0;
            }

            case 0:
            {
                this.m_Music    = (MusicName)reader.ReadInt();
                this.m_Priority = reader.ReadInt();
                if (version < 2)
                {
                    // old region area
                    reader.ReadRect2D();
                }
                this.m_ChallengeRegionName = reader.ReadString();
                string mapname = reader.ReadString();
                try
                {
                    this.m_ChallengeMap = Map.Parse(mapname);
                }
                catch
                {
                }
                this.m_CopiedRegion = reader.ReadString();

                // do the coord list
                int count = reader.ReadInt();
                if (count > 0)
                {
                    // the old version used 2D rectangles for the region area.  The new version uses 3D
                    if (version < 2)
                    {
                        Rectangle2D[] area = new Rectangle2D[count];
                        for (int i = 0; i < count; i++)
                        {
                            area[i] = reader.ReadRect2D();
                        }
                        this.m_ChallengeArea = Region.ConvertTo3D(area);
                    }
                    else
                    {
                        this.m_ChallengeArea = new Rectangle3D[count];
                        for (int i = 0; i < count; i++)
                        {
                            this.m_ChallengeArea[i] = new Rectangle3D(reader.ReadPoint3D(), reader.ReadPoint3D());
                        }
                    }
                }
                break;
            }
            }

            // refresh the region
            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(RefreshRegions));
        }
Example #14
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            m_DamageEntries = new Dictionary <Mobile, int>();

            int version = reader.ReadInt();

            switch (version)
            {
            case 7:
            {
                this.m_ExpireDelay = reader.ReadTimeSpan();
                this.m_ExpireTime  = reader.ReadDeltaTime();

                goto case 6;
            }

            case 6:
            {
                this.m_Champion2 = reader.ReadMobile();

                goto case 5;
            }

            case 5:
            {
                int    entries = reader.ReadInt();
                Mobile m;
                int    damage;
                for (int i = 0; i < entries; ++i)
                {
                    m      = reader.ReadMobile();
                    damage = reader.ReadInt();

                    if (m == null)
                    {
                        continue;
                    }

                    this.m_DamageEntries.Add(m, damage);
                }

                goto case 4;
            }

            case 4:
            {
                this.m_ConfinedRoaming = reader.ReadBool();
                this.m_HasBeenAdvanced = reader.ReadBool();

                goto case 3;
            }

            case 3:
            {
                this.m_SpawnArea = reader.ReadRect2D();

                goto case 2;
            }

            case 2:
            {
                this.m_RandomizeType = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                this.m_Kills = reader.ReadInt();
                Spwnd        = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                bool active = reader.ReadBool();
                this.m_Type         = (MiniChampType)reader.ReadInt();
                this.m_Creatures    = reader.ReadStrongMobileList();
                this.m_Champion     = reader.ReadMobile();
                this.m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool())
                {
                    this.m_RestartTime = reader.ReadDeltaTime();
                    BeginRestart(this.m_RestartTime - DateTime.Now);
                }

                if (active)
                {
                    this.Start();
                }

                break;
            }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
Example #15
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            m_DamageEntries = new Dictionary <Mobile, int>();

            int version = reader.ReadInt();

            switch (version)
            {
            case 5:
            {
                int    entries = reader.ReadInt();
                Mobile m;
                int    damage;
                for (int i = 0; i < entries; ++i)
                {
                    m      = reader.ReadMobile();
                    damage = reader.ReadInt();

                    if (m == null)
                    {
                        continue;
                    }

                    m_DamageEntries.Add(m, damage);
                }

                goto case 4;
            }

            case 4:
            {
                m_ConfinedRoaming = reader.ReadBool();
                m_HasBeenAdvanced = reader.ReadBool();

                goto case 3;
            }

            case 3:
            {
                m_SpawnArea = reader.ReadRect2D();

                goto case 2;
            }

            case 2:
            {
                m_RandomizeType = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                if (version < 3)
                {
                    int oldRange = reader.ReadInt();

                    m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange));
                }

                m_Kills = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                if (version < 1)
                {
                    m_SpawnArea = new Rectangle2D(new Point2D(X - 18, Y - 18), new Point2D(X + 18, Y + 18));            //Default was 24
                }
                bool active = reader.ReadBool();
                m_Type         = (MiniChampType)reader.ReadInt();
                m_Creatures    = reader.ReadStrongMobileList();
                m_RedSkulls    = reader.ReadStrongItemList();
                m_WhiteSkulls  = reader.ReadStrongItemList();
                m_MiniPlatform = reader.ReadItem <MiniChampPlatform>();
                m_MiniAltar    = reader.ReadItem <MiniChampAltar>();
                m_ExpireDelay  = reader.ReadTimeSpan();
                m_ExpireTime   = reader.ReadDeltaTime();
                m_MiniChamp    = reader.ReadMobile();
                m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool())
                {
                    m_RestartTime = reader.ReadDeltaTime();
                    BeginRestart(m_RestartTime - DateTime.Now);
                }

                if (m_MiniPlatform == null || m_MiniAltar == null)
                {
                    Delete();
                }
                else if (active)
                {
                    Start();
                }

                break;
            }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
Example #16
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 4:
            {
                m_ConfinedRoaming = reader.ReadBool();
                m_Idol            = reader.ReadItem <IdolOfTheChampion>();
                m_HasBeenAdvanced = reader.ReadBool();

                goto case 3;
            }

            case 3:
            {
                m_SpawnArea = reader.ReadRect2D();

                goto case 2;
            }

            case 2:
            {
                m_RandomizeType = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                if (version < 3)
                {
                    int oldRange = reader.ReadInt();

                    m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange));
                }

                m_Kills = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                if (version < 1)
                {
                    m_SpawnArea = new Rectangle2D(new Point2D(X - 24, Y - 24), new Point2D(X + 24, Y + 24));                                    //Default was 24
                }
                bool active = reader.ReadBool();
                m_Type         = (ChampionSpawnType)reader.ReadInt();
                m_Creatures    = reader.ReadStrongMobileList();
                m_RedSkulls    = reader.ReadStrongItemList();
                m_WhiteSkulls  = reader.ReadStrongItemList();
                m_Platform     = reader.ReadItem <ChampionPlatform>();
                m_Altar        = reader.ReadItem <ChampionAltar>();
                m_ExpireDelay  = reader.ReadTimeSpan();
                m_ExpireTime   = reader.ReadDeltaTime();
                m_Champion     = reader.ReadMobile();
                m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool())
                {
                    m_RestartTime = reader.ReadDeltaTime();
                    BeginRestart(m_RestartTime - DateTime.Now);
                }

                if (version < 4)
                {
                    m_Idol = new IdolOfTheChampion(this);
                    m_Idol.MoveToWorld(new Point3D(X, Y, Z - 15), Map);
                }

                if (m_Platform == null || m_Altar == null || m_Idol == null)
                {
                    Delete();
                }
                else if (active)
                {
                    Start();
                }

                break;
            }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            this.m_Active = reader.ReadBool();
            this.m_Word = reader.ReadString();
            this.m_Destination = reader.ReadRect2D();
        }
Example #18
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 8:
            {
                m_MinimumDuelers = (int)reader.ReadInt();
                m_LastReset      = (DateTime)reader.ReadDateTime();
                goto case 7;
            }

            case 7:
            {
                m_TimerEnabled = (bool)reader.ReadBool();
                goto case 6;
            }

            case 6:
            {
                m_CoinsPerRound = (int)reader.ReadInt();
                m_CoinsWinner   = (int)reader.ReadInt();
                goto case 5;
            }

            case 5:
            {
                m_BroadcastHue = (int)reader.ReadInt();
                goto case 4;
            }

            case 4:
            {
                m_WallHue = (int)reader.ReadInt();
                m_WallID  = (int)reader.ReadInt();
                goto case 3;
            }

            case 3:
            {
                m_WallMidPoint     = (Point3D)reader.ReadPoint3D();
                m_WallExtendWidth  = (int)reader.ReadInt();;
                m_WallNorthToSouth = (bool)reader.ReadBool();
                goto case 2;
            }

            case 2:
            {
                m_CurrentRound      = (int)reader.ReadInt();
                m_TotalParticipants = (int)reader.ReadInt();
                goto case 1;
            }

            case 1:
            {
                m_Running          = (bool)reader.ReadBool();
                m_AcceptingPlayers = (bool)reader.ReadBool();
                m_MapLocation      = (Map)reader.ReadMap();
                goto case 0;
            }

            case 0:
            {
                m_EventRate     = (TimeSpan)reader.ReadTimeSpan();
                m_StartLocation = (Point3D)reader.ReadPoint3D();
                m_LostLocation  = (Point3D)reader.ReadPoint3D();
                m_DuelLocation1 = (Point3D)reader.ReadPoint3D();
                m_DuelLocation2 = (Point3D)reader.ReadPoint3D();
                m_LastEvent     = (DateTime)reader.ReadDateTime();

                m_DuelingArea  = (Rectangle2D)reader.ReadRect2D();
                m_StageingArea = (Rectangle2D)reader.ReadRect2D();
                m_ViewingArea  = (Rectangle2D)reader.ReadRect2D();
                break;
            }
            }
            if (version == 7)
            {
                m_LastReset = DateTime.Now;
            }

            if (version == 5)
            {
                m_CoinsPerRound = 2;
                m_CoinsWinner   = 10;
            }

            if (version == 4)
            {
                m_BroadcastHue = 269;
            }

            if (version == 3)
            {
                m_WallHue = 0;
                m_WallID  = 0x0081;
            }

            if (m_DuelList == null)
            {
                m_DuelList = new List <Mobile>();
            }
            if (m_CurrentDuelers == null)
            {
                m_CurrentDuelers = new List <Mobile>();
            }
            if (m_WallList == null)
            {
                m_WallList = new List <Item>();
            }
            if (m_BroadcastList == null)
            {
                m_BroadcastList = new List <Mobile>();
            }
            m_CountDown = 0;
            UpdateRegions(false);

            m_RestartTimer = new InternalTimer(this, TimeSpan.FromSeconds(1.0));

            if (m_TimerEnabled)
            {
                m_RestartTimer.Start();
            }
        }
Example #19
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 0:
                    {
                        this.m_Bounds = reader.ReadRect2D();

                        this.m_Width = reader.ReadInt();
                        this.m_Height = reader.ReadInt();

                        this.m_Protected = reader.ReadBool();

                        int count = reader.ReadInt();
                        for (int i = 0; i < count; i++)
                            this.m_Pins.Add(reader.ReadPoint2D());

                        break;
                    }
            }
        }
Example #20
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 3:
                    {
                        this.m_State = (HouseRaffleState)reader.ReadEncodedInt();

                        goto case 2;
                    }
                case 2:
                    {
                        this.m_ExpireAction = (HouseRaffleExpireAction)reader.ReadEncodedInt();

                        goto case 1;
                    }
                case 1:
                    {
                        this.m_Deed = reader.ReadItem<HouseRaffleDeed>();

                        goto case 0;
                    }
                case 0:
                    {
                        bool oldActive = (version < 3) ? reader.ReadBool() : false;

                        this.m_Bounds = reader.ReadRect2D();
                        this.m_Facet = reader.ReadMap();

                        this.m_Winner = reader.ReadMobile();

                        this.m_TicketPrice = reader.ReadInt();
                        this.m_Started = reader.ReadDateTime();
                        this.m_Duration = reader.ReadTimeSpan();

                        int entryCount = reader.ReadInt();
                        this.m_Entries = new List<RaffleEntry>(entryCount);

                        for (int i = 0; i < entryCount; i++)
                        {
                            RaffleEntry entry = new RaffleEntry(reader, version);

                            if (entry.From == null)
                                continue; // Character was deleted

                            this.m_Entries.Add(entry);
                        }

                        this.InvalidateRegion();

                        m_AllStones.Add(this);

                        if (version < 3)
                        {
                            if (oldActive)
                                this.m_State = HouseRaffleState.Active;
                            else if (this.m_Winner != null)
                                this.m_State = HouseRaffleState.Completed;
                            else
                                this.m_State = HouseRaffleState.Inactive;
                        }

                        break;
                    }
            }
        }
Example #21
0
        public static List<Rectangle2D> ReadRect2DArray(GenericReader reader)
        {
            int size = reader.ReadInt();
            List<Rectangle2D> newAry = new List<Rectangle2D>();

            for (int i = 0; i < size; i++)
            {
                newAry.Add(reader.ReadRect2D());
            }

            return newAry;
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            m_MobFactionArea = new Rectangle3D[0];

            switch (version)
            {
            case 1:
            {
                m_EjectLocation = reader.ReadPoint3D();
                string ejectmap = reader.ReadString();
                try
                {
                    m_EjectMap = Map.Parse(ejectmap);
                }
                catch { }

                string factiontype = reader.ReadString();
                try
                {
                    m_FactionType = (XmlMobFactions.GroupTypes)Enum.Parse(typeof(XmlMobFactions.GroupTypes), factiontype);
                }
                catch {}
                m_FactionLevel = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                m_Music = (MusicName)reader.ReadInt();
                m_MobFactionPriority = reader.ReadInt();
                if (version < 1)
                {
                    // old region area
                    reader.ReadRect2D();
                }
                m_MobFactionRegionName = reader.ReadString();
                string mapname = reader.ReadString();
                try
                {
                    m_MobFactionMap = Map.Parse(mapname);
                }
                catch { }
                m_CopiedRegion = reader.ReadString();
                // do the coord list
                int count = reader.ReadInt();
                if (count > 0)
                {
                    // the old version used 2D rectangles for the region area.  The new version uses 3D
                    if (version < 1)
                    {
                        Rectangle2D[] area = new Rectangle2D[count];
                        for (int i = 0; i < count; i++)
                        {
                            area[i] = reader.ReadRect2D();
                        }
                        m_MobFactionArea = Region.ConvertTo3D(area);
                    }
                    else
                    {
                        m_MobFactionArea = new Rectangle3D[count];
                        for (int i = 0; i < count; i++)
                        {
                            m_MobFactionArea[i] = new Rectangle3D(reader.ReadPoint3D(), reader.ReadPoint3D());
                        }
                    }
                }

                break;
            }
            }

            // refresh the region
            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(RefreshRegions));
        }
Example #23
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            Spawn      = new Dictionary <BaseCreature, List <BaseCreature> >();
            SpawnZones = new List <Rectangle2D>();

            if (Map == Map.Trammel)
            {
                TramInstance = this;
            }

            if (Map == Map.Felucca)
            {
                FelInstance = this;
            }

            CurrentInvasion = (City)reader.ReadInt();
            InvasionType    = (InvasionType)reader.ReadInt();
            Beacon          = reader.ReadItem() as InvasionBeacon;
            CurrentWave     = reader.ReadInt();

            if (Beacon != null)
            {
                Beacon.Controller = this;
            }

            int count = reader.ReadInt();

            for (int i = 0; i < count; i++)
            {
                SpawnZones.Add(reader.ReadRect2D());
            }

            count = reader.ReadInt();
            for (int i = 0; i < count; i++)
            {
                BaseCreature captain = reader.ReadMobile() as BaseCreature;
                int          c       = reader.ReadInt();

                List <BaseCreature> list = new List <BaseCreature>();

                for (int j = 0; j < c; j++)
                {
                    BaseCreature spawn = reader.ReadMobile() as BaseCreature;

                    if (spawn != null)
                    {
                        list.Add(spawn);
                    }
                }

                if (captain != null)
                {
                    Spawn[captain] = list;
                }
                else
                {
                    list.Clear();
                }
            }

            Timer.DelayCall(TimeSpan.FromSeconds(10), () =>
            {
                if (Beacon == null || Beacon.Destroyed)
                {
                    Timer.DelayCall(TimeSpan.FromMinutes(2), () =>
                    {
                        Cleanup();
                        BeginInvasion();
                    });
                }
            });
        }
Example #24
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            _mPlayerScores = new Dictionary<Mobile, double>();

            var version = reader.ReadInt();

            switch (version)
            {
                case 0:
                {
                    var entries = reader.ReadInt();
                    for (var i = 0; i < entries; ++i)
                    {
                        var m = reader.ReadMobile();
                        var damage = reader.ReadDouble();
                        if (m != null)
                            _mPlayerScores.Add(m, damage);
                    }

                    _mNextActiveTime = reader.ReadDeltaTime();

                    _mArea = reader.ReadRect2D();

                    _mAlwaysGrey = reader.ReadBool();
                    _mNoCorpseCarving = reader.ReadBool();

                    var active = reader.ReadBool();
                    _mExpireDelay = reader.ReadTimeSpan();
                    _mExpireTime = reader.ReadDeltaTime();
                    _mRestartDelay = reader.ReadTimeSpan();

                    if (reader.ReadBool())
                    {
                        _mRestartTime = reader.ReadDeltaTime();
                        BeginRestart(_mRestartTime - DateTime.UtcNow);
                    }


                    if (active)
                        Start();

                    break;
                }
            }

            Timer.DelayCall(TimeSpan.Zero, UpdateRegion);
        }
Example #25
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();
            int count;
            bool loadedDynamicDecay = false;

            switch ( version )
            {
                case 15:
                    {
                        int stage = reader.ReadInt();

                        if (stage != -1)
                        {
                            this.m_CurrentStage = (DecayLevel)stage;
                            this.m_NextDecayStage = reader.ReadDateTime();
                            loadedDynamicDecay = true;
                        }

                        goto case 14;
                    }
                case 14:
                    {
                        this.m_RelativeBanLocation = reader.ReadPoint3D();
                        goto case 13;
                    }
                case 13: // removed ban location serialization
                case 12:
                    {
                        this.m_VendorRentalContracts = reader.ReadItemList();
                        this.m_InternalizedVendors = reader.ReadMobileList();

                        int relocatedCount = reader.ReadEncodedInt();
                        for (int i = 0; i < relocatedCount; i++)
                        {
                            Point3D relLocation = reader.ReadPoint3D();
                            IEntity entity = World.FindEntity(reader.ReadInt());

                            if (entity != null)
                                this.m_RelocatedEntities.Add(new RelocatedEntity(entity, relLocation));
                        }

                        int inventoryCount = reader.ReadEncodedInt();
                        for (int i = 0; i < inventoryCount; i++)
                        {
                            VendorInventory inventory = new VendorInventory(this, reader);
                            this.m_VendorInventories.Add(inventory);
                        }

                        goto case 11;
                    }
                case 11:
                    {
                        this.m_LastRefreshed = reader.ReadDateTime();
                        this.m_RestrictDecay = reader.ReadBool();
                        goto case 10;
                    }
                case 10: // just a signal for updates
                case 9:
                    {
                        this.m_Visits = reader.ReadInt();
                        goto case 8;
                    }
                case 8:
                    {
                        this.m_Price = reader.ReadInt();
                        goto case 7;
                    }
                case 7:
                    {
                        this.m_Access = reader.ReadMobileList();
                        goto case 6;
                    }
                case 6:
                    {
                        this.m_BuiltOn = reader.ReadDateTime();
                        this.m_LastTraded = reader.ReadDateTime();
                        goto case 5;
                    }
                case 5: // just removed fields
                case 4:
                    {
                        this.m_Addons = reader.ReadItemList();
                        goto case 3;
                    }
                case 3:
                    {
                        count = reader.ReadInt();
                        this.m_Secures = new ArrayList(count);

                        for (int i = 0; i < count; ++i)
                        {
                            SecureInfo info = new SecureInfo(reader);

                            if (info.Item != null)
                            {
                                info.Item.IsSecure = true;
                                this.m_Secures.Add(info);
                            }
                        }

                        goto case 2;
                    }
                case 2:
                    {
                        this.m_Public = reader.ReadBool();
                        goto case 1;
                    }
                case 1:
                    {
                        if (version < 13)
                            reader.ReadPoint3D(); // house ban location
                        goto case 0;
                    }
                case 0:
                    {
                        if (version < 14)
                            this.m_RelativeBanLocation = this.BaseBanLocation;

                        if (version < 12)
                        {
                            this.m_VendorRentalContracts = new ArrayList();
                            this.m_InternalizedVendors = new ArrayList();
                        }

                        if (version < 4)
                            this.m_Addons = new ArrayList();

                        if (version < 7)
                            this.m_Access = new ArrayList();

                        if (version < 8)
                            this.m_Price = this.DefaultPrice;

                        this.m_Owner = reader.ReadMobile();

                        if (version < 5)
                        {
                            count = reader.ReadInt();

                            for (int i = 0; i < count; i++)
                                reader.ReadRect2D();
                        }

                        this.UpdateRegion();

                        this.m_CoOwners = reader.ReadMobileList();
                        this.m_Friends = reader.ReadMobileList();
                        this.m_Bans = reader.ReadMobileList();

                        this.m_Sign = reader.ReadItem() as HouseSign;
                        this.m_Trash = reader.ReadItem() as TrashBarrel;

                        this.m_Doors = reader.ReadItemList();
                        this.m_LockDowns = reader.ReadItemList();

                        for (int i = 0; i < this.m_LockDowns.Count; ++i)
                            ((Item)this.m_LockDowns[i]).IsLockedDown = true;

                        for (int i = 0; i < this.m_VendorRentalContracts.Count; ++i)
                            ((Item)this.m_VendorRentalContracts[i]).IsLockedDown = true;

                        if (version < 3)
                        {
                            ArrayList items = reader.ReadItemList();
                            this.m_Secures = new ArrayList(items.Count);

                            for (int i = 0; i < items.Count; ++i)
                            {
                                Container c = items[i] as Container;

                                if (c != null)
                                {
                                    c.IsSecure = true;
                                    this.m_Secures.Add(new SecureInfo(c, SecureLevel.CoOwners));
                                }
                            }
                        }

                        this.m_MaxLockDowns = reader.ReadInt();
                        this.m_MaxSecures = reader.ReadInt();

                        if ((this.Map == null || this.Map == Map.Internal) && this.Location == Point3D.Zero)
                            this.Delete();

                        if (this.m_Owner != null)
                        {
                            List<BaseHouse> list = null;
                            m_Table.TryGetValue(this.m_Owner, out list);

                            if (list == null)
                                m_Table[this.m_Owner] = list = new List<BaseHouse>();

                            list.Add(this);
                        }
                        break;
                    }
            }

            if (version <= 1)
                this.ChangeSignType(0xBD2);//private house, plain brass sign

            if (version < 10)
            {
                /* NOTE: This can exceed the house lockdown limit. It must be this way, because
                * we do not want players' items to decay without them knowing. Or not even
                * having a chance to fix it themselves.
                */
                Timer.DelayCall(TimeSpan.Zero, new TimerCallback(FixLockdowns_Sandbox));
            }

            if (version < 11)
                this.m_LastRefreshed = DateTime.UtcNow + TimeSpan.FromHours(24 * Utility.RandomDouble());

            if (DynamicDecay.Enabled && !loadedDynamicDecay)
            {
                DecayLevel old = this.GetOldDecayLevel();

                if (old == DecayLevel.DemolitionPending)
                    old = DecayLevel.Collapsed;

                this.SetDynamicDecay(old);
            }

            if (!this.CheckDecay())
            {
                if (this.RelocatedEntities.Count > 0)
                    Timer.DelayCall(TimeSpan.Zero, new TimerCallback(RestoreRelocatedEntities));

                if (this.m_Owner == null && this.m_Friends.Count == 0 && this.m_CoOwners.Count == 0)
                    Timer.DelayCall(TimeSpan.FromSeconds(10.0), new TimerCallback(Delete));
            }
        }
Example #26
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            this.m_ChallengeArea = new Rectangle3D[0];

            switch ( version )
            {
                case 2:
                case 1:
                    {
                        this.m_Disable = reader.ReadBool();
                        goto case 0;
                    }
                case 0:
                    {
                        this.m_Music = (MusicName)reader.ReadInt();
                        this.m_Priority = reader.ReadInt();
                        if (version < 2)
                        {
                            // old region area
                            reader.ReadRect2D();
                        }
                        this.m_ChallengeRegionName = reader.ReadString();
                        string mapname = reader.ReadString();
                        try
                        {
                            this.m_ChallengeMap = Map.Parse(mapname);
                        }
                        catch
                        {
                        }
                        this.m_CopiedRegion = reader.ReadString();

                        // do the coord list
                        int count = reader.ReadInt();
                        if (count > 0)
                        {
                            // the old version used 2D rectangles for the region area.  The new version uses 3D
                            if (version < 2)
                            {
                                Rectangle2D[] area = new Rectangle2D[count];
                                for (int i = 0; i < count; i++)
                                {
                                    area[i] = reader.ReadRect2D();
                                }
                                this.m_ChallengeArea = Region.ConvertTo3D(area);
                            }
                            else
                            {
                                this.m_ChallengeArea = new Rectangle3D[count];
                                for (int i = 0; i < count; i++)
                                {
                                    this.m_ChallengeArea[i] = new Rectangle3D(reader.ReadPoint3D(), reader.ReadPoint3D());
                                }
                            }
                        }
                        break;
                    }
            }

            // refresh the region
            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(RefreshRegions));
        }
Example #27
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            m_DamageEntries = new Dictionary <Mobile, int>();

            int version = reader.ReadInt();

            switch (version)
            {
            case 5:
            {
                m_KickDelay = reader.ReadTimeSpan();
                m_KickTime  = reader.ReadDateTime();

                m_SpawnArea = reader.ReadRect2D();

                goto case 4;
            }

            case 4:
            {
                int    entries = reader.ReadInt();
                Mobile m;
                int    damage;
                for (int i = 0; i < entries; ++i)
                {
                    m      = reader.ReadMobile();
                    damage = reader.ReadInt();

                    if (m != null)
                    {
                        m_DamageEntries.Add(m, damage);
                    }
                }

                goto case 3;
            }

            case 3:
            {
                m_HasBeenAdvanced = reader.ReadBool();

                m_Idol = reader.ReadItem() as IdolOfTheChampion;

                goto case 2;
            }

            case 2:
            {
                m_RandomizeType = reader.ReadBool();

                goto case 1;
            }

            case 1:
            {
                if (version < 5)
                {
                    int oldRange = reader.ReadInt();

                    m_SpawnArea = new Rectangle2D(new Point2D(X - oldRange, Y - oldRange), new Point2D(X + oldRange, Y + oldRange));
                }

                m_Kills = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                if (version < 1)
                {
                    SetSpawnArea(50);
                }

                bool active = reader.ReadBool();
                m_Type         = (ChampionSpawnType)reader.ReadInt();
                m_Creatures    = reader.ReadStrongMobileList();
                m_RedSkulls    = reader.ReadStrongItemList();
                m_WhiteSkulls  = reader.ReadStrongItemList();
                m_Platform     = reader.ReadItem <ChampionPlatform>();
                m_Altar        = reader.ReadItem <ChampionAltar>();
                m_ExpireDelay  = reader.ReadTimeSpan();
                m_ExpireTime   = reader.ReadDeltaTime();
                m_Champion     = reader.ReadMobile();
                m_RestartDelay = reader.ReadTimeSpan();

                if (reader.ReadBool())
                {
                    m_RestartTime = reader.ReadDeltaTime();
                    BeginRestart(m_RestartTime - DateTime.Now);
                }

                if (m_Platform == null || m_Altar == null)
                {
                    Delete();
                }
                else if (active)
                {
                    Start(false);
                }

                break;
            }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
Example #28
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
			int count;

			switch ( version )
			{
				case 15:
				{
					goto case 14;
				}
				case 14:
				{
					m_RelativeBanLocation = reader.ReadPoint3D();
					goto case 13;
				}
				case 13: // removed ban location serialization
				case 12:
				{
					m_InternalizedVendors = reader.ReadMobileList();

					int inventoryCount = reader.ReadEncodedInt();
					for ( int i = 0; i < inventoryCount; i++ )
					{
						VendorInventory inventory = new VendorInventory( this, reader );
						m_VendorInventories.Add( inventory );
					}

					goto case 11;
				}
				case 11:
				{
					m_LastRefreshed = reader.ReadDateTime();
					m_RestrictDecay = reader.ReadBool();
					goto case 10;
				}
				case 10: // just a signal for updates
				case 9:
				{
					m_Visits = reader.ReadInt();
					goto case 8;
				}
				case 8:
				{
					m_Price = reader.ReadInt();
					goto case 7;
				}
				case 7:
				{
					m_Access = reader.ReadMobileList();
					goto case 6;
				}
				case 6:
				{
					m_BuiltOn = reader.ReadDateTime();
					goto case 5;
				}
				case 5: // just removed fields
				case 4:
				{
					m_Addons = reader.ReadItemList();
					goto case 3;
				}
				case 3:
				case 2:
				{
					m_Public = reader.ReadBool();
					goto case 1;
				}
				case 1:
				{
					if ( version < 13 )
						reader.ReadPoint3D(); // house ban location
					goto case 0;
				}
				case 0:
				{
					if ( version < 14 )
						m_RelativeBanLocation = this.BaseBanLocation;

					if ( version < 12 )
					{
						m_InternalizedVendors = new ArrayList();
					}

					if ( version < 4 )
						m_Addons = new ArrayList();

					if ( version < 7 )
						m_Access = new ArrayList();

					if ( version < 8 )
						m_Price = DefaultPrice;

					m_Owner = reader.ReadMobile();

					if ( version < 5 )
					{
						count = reader.ReadInt();

						for(int i=0;i<count;i++)
							reader.ReadRect2D();
					}

					UpdateRegion();

					m_CoOwners = reader.ReadMobileList();
					m_Friends = reader.ReadMobileList();
					m_Bans = reader.ReadMobileList();

					m_Sign = reader.ReadItem() as HouseSign;
					m_Trash = reader.ReadItem() as TrashBarrel;

					m_Doors = reader.ReadItemList();
					m_LockDowns = reader.ReadItemList();

					for ( int i = 0; i < m_LockDowns.Count; ++i )
						((Item)m_LockDowns[i]).IsLockedDown = true;

                    m_Secures = reader.ReadItemList();

                    for (int i = 0; i < m_Secures.Count; ++i)
                        ((Item)m_Secures[i]).IsSecure = true;
                        
					m_MaxLockDowns = reader.ReadInt();
					m_MaxSecures = reader.ReadInt();

					if ( (Map == null || Map == Map.Internal) && Location == Point3D.Zero )
						Delete();

					if ( m_Owner != null )
					{
						List<BaseHouse> list = null;
						m_Table.TryGetValue( m_Owner, out list );

						if ( list == null )
							m_Table[m_Owner] = list = new List<BaseHouse>();

						list.Add( this );
					}
					break;
				}
			}

			if ( version <= 1 )
				ChangeSignType( 0xBD2 );//private house, plain brass sign

			if ( version < 10 )
			{
				/* NOTE: This can exceed the house lockdown limit. It must be this way, because
				 * we do not want players' items to decay without them knowing. Or not even
				 * having a chance to fix it themselves.
				 */

				Timer.DelayCall( TimeSpan.Zero, new TimerCallback( FixLockdowns_Sandbox ) );
			}

			if ( version < 11 )
				m_LastRefreshed = DateTime.Now + TimeSpan.FromHours( 24 * Utility.RandomDouble() );

			if ( !CheckDecay() )
			{
				if ( m_Owner == null && m_Friends.Count == 0 && m_CoOwners.Count == 0 )
					Timer.DelayCall( TimeSpan.FromSeconds( 10.0 ), new TimerCallback( Delete ) );
			}
		}
Example #29
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 6:
            {
                m_MobilesSeekHome = reader.ReadBool();
                m_UsesSpawnerHome = reader.ReadBool();
                goto case 5;
            }

            case 5:
            {
                m_SpawnArea       = reader.ReadRect2D();
                m_UsesSpawnerHome = reader.ReadBool();

                goto case 4;
            }

            case 4:
            {
                m_WalkingRange = reader.ReadInt();

                goto case 3;
            }

            case 3:
            case 2:
            {
                m_WayPoint = reader.ReadItem() as WayPoint;

                goto case 1;
            }

            case 1:
            {
                m_Group = reader.ReadBool();

                goto case 0;
            }

            case 0:
            {
                m_MinDelay  = reader.ReadTimeSpan();
                m_MaxDelay  = reader.ReadTimeSpan();
                m_Count     = reader.ReadInt();
                m_Team      = reader.ReadInt();
                m_HomeRange = reader.ReadInt();
                m_Running   = reader.ReadBool();

                TimeSpan ts = TimeSpan.Zero;

                if (m_Running)
                {
                    ts = reader.ReadDeltaTime() - DateTime.UtcNow;
                }

                int size = reader.ReadInt();

                m_SpawnNames = new List <string>(size);

                for (int i = 0; i < size; ++i)
                {
                    string creatureString = reader.ReadString();

                    m_SpawnNames.Add(creatureString);
                    string typeName = ParseType(creatureString);

                    if (ScriptCompiler.FindTypeByName(typeName) == null)
                    {
                        if (m_WarnTimer == null)
                        {
                            m_WarnTimer = new WarnTimer();
                        }

                        m_WarnTimer.Add(Location, Map, typeName);
                    }
                }

                int count = reader.ReadInt();

                m_Spawned = new List <ISpawnable>(count);

                for (int i = 0; i < count; ++i)
                {
                    ISpawnable e = World.FindEntity(reader.ReadInt()) as ISpawnable;

                    if (e != null)
                    {
                        e.Spawner = this;
                        m_Spawned.Add(e);
                    }
                }

                if (m_Running)
                {
                    DoTimer(ts);
                }

                break;
            }
            }

            if (version < 3 && Weight == 0)
            {
                Weight = -1;
            }
        }
Example #30
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();
            int count;
            bool loadedDynamicDecay = false;

            switch (version)
            {
                case 16:
                {
                    VendorMultiplier = reader.ReadDouble();
                    StorageMultiplier = reader.ReadDouble();

                    goto case 15;
                }
                case 15:
                {
                    int stage = reader.ReadInt();

                    if (stage != -1)
                    {
                        m_CurrentStage = (DecayLevel) stage;
                        m_NextDecayStage = reader.ReadDateTime();
                        loadedDynamicDecay = true;
                    }

                    goto case 14;
                }
                case 14:
                {
                    m_RelativeBanLocation = reader.ReadPoint3D();
                    goto case 13;
                }
                case 13: // removed ban location serialization
                case 12:
                {
                    m_VendorRentalContracts = reader.ReadStrongItemList();
                    m_InternalizedVendors = reader.ReadStrongMobileList();

                    int relocatedCount = reader.ReadEncodedInt();
                    for (int i = 0; i < relocatedCount; i++)
                    {
                        Point3D relLocation = reader.ReadPoint3D();
                        IEntity entity = World.FindEntity(reader.ReadInt());
                        // DO NOT READ ENTITY DIRECTLY, BECAUSE IF IT ISN'T IN THE WORLD (Item or Mobile)
                        // then it creates a new one, which caused a problem previously
                        //IEntity entity = reader.ReadEntity();

                        if (entity != null)
                        {
                            m_RelocatedEntities.Add(new RelocatedEntity(entity, relLocation));
                        }
                    }

                    int inventoryCount = reader.ReadEncodedInt();
                    for (int i = 0; i < inventoryCount; i++)
                    {
                        var inventory = new VendorInventory(this, reader);
                        m_VendorInventories.Add(inventory);
                    }

                    goto case 11;
                }
                case 11:
                {
                    m_LastRefreshed = reader.ReadDateTime();
                    m_RestrictDecay = reader.ReadBool();
                    goto case 10;
                }
                case 10: // just a signal for updates
                case 9:
                {
                    m_Visits = reader.ReadInt();
                    goto case 8;
                }
                case 8:
                {
                    m_Price = reader.ReadInt();
                    goto case 7;
                }
                case 7:
                {
                    m_Access = reader.ReadStrongMobileList();
                    goto case 6;
                }
                case 6:
                {
                    m_BuiltOn = reader.ReadDateTime();
                    m_LastTraded = reader.ReadDateTime();
                    goto case 5;
                }
                case 5: // just removed fields
                case 4:
                {
                    m_Addons = reader.ReadStrongItemList();
                    goto case 3;
                }
                case 3:
                {
                    count = reader.ReadInt();
                    m_Secures = new List<SecureInfo>(count);

                    for (int i = 0; i < count; ++i)
                    {
                        var info = new SecureInfo(reader);

                        if (info.Item != null)
                        {
                            info.Item.IsSecure = true;
                            m_Secures.Add(info);
                        }
                    }

                    goto case 2;
                }
                case 2:
                {
                    m_Public = reader.ReadBool();
                    goto case 1;
                }
                case 1:
                {
                    if (version < 13)
                    {
                        reader.ReadPoint3D(); // house ban location
                    }
                    goto case 0;
                }
                case 0:
                {
                    if (version < 14)
                    {
                        m_RelativeBanLocation = BaseBanLocation;
                    }

                    if (version < 12)
                    {
                        m_VendorRentalContracts = new List<Item>();
                        m_InternalizedVendors = new List<Mobile>();
                    }

                    if (version < 4)
                    {
                        m_Addons = new List<Item>();
                    }

                    if (version < 7)
                    {
                        m_Access = new List<Mobile>();
                    }

                    if (version < 8)
                    {
                        m_Price = DefaultPrice;
                    }

                    m_Owner = reader.ReadMobile();

                    if (version < 5)
                    {
                        count = reader.ReadInt();

                        for (int i = 0; i < count; i++)
                        {
                            reader.ReadRect2D();
                        }
                    }

                    UpdateRegion();

                    m_CoOwners = reader.ReadStrongMobileList();
                    m_Friends = reader.ReadStrongMobileList();
                    m_Bans = reader.ReadStrongMobileList();

                    m_Sign = reader.ReadItem() as HouseSign;
                    m_Trash = reader.ReadItem() as TrashBarrel;

                    m_Doors = reader.ReadStrongItemList<Item>();
                    m_LockDowns = reader.ReadStrongItemList();

                    for (int i = 0; i < m_LockDowns.Count; ++i)
                    {
                        m_LockDowns[i].IsLockedDown = true;
                    }

                    for (int i = 0; i < m_VendorRentalContracts.Count; ++i)
                    {
                        m_VendorRentalContracts[i].IsLockedDown = true;
                    }

                    if (version < 3)
                    {
                        List<Item> items = reader.ReadStrongItemList();
                        m_Secures = new List<SecureInfo>(items.Count);

                        for (int i = 0; i < items.Count; ++i)
                        {
                            var c = items[i] as Container;

                            if (c != null)
                            {
                                c.IsSecure = true;
                                m_Secures.Add(new SecureInfo(c, SecureLevel.CoOwners));
                            }
                        }
                    }

                    m_MaxLockDowns = reader.ReadInt();
                    m_MaxSecures = reader.ReadInt();

                    if ((Map == null || Map == Map.Internal) && Location == Point3D.Zero)
                    {
                        Delete();
                    }

                    if (m_Owner != null)
                    {
                        List<BaseHouse> list = null;
                        m_Table.TryGetValue(m_Owner, out list);

                        if (list == null)
                        {
                            m_Table[m_Owner] = list = new List<BaseHouse>();
                        }

                        list.Add(this);
                    }
                    break;
                }
            }

            if (version <= 1)
            {
                ChangeSignType(0xBD2); //private house, plain brass sign
            }

            if (version < 10)
            {
                /* NOTE: This can exceed the house lockdown limit. It must be this way, because
				 * we do not want players' items to decay without them knowing. Or not even
				 * having a chance to fix it themselves.
				 */

                Timer.DelayCall(TimeSpan.Zero, FixLockdowns_Sandbox);
            }

            if (version < 11)
            {
                m_LastRefreshed = DateTime.UtcNow + TimeSpan.FromHours(24 * Utility.RandomDouble());
            }

            if (DynamicDecay.Enabled && !loadedDynamicDecay)
            {
                DecayLevel old = GetOldDecayLevel();

                if (old == DecayLevel.DemolitionPending)
                {
                    old = DecayLevel.Collapsed;
                }

                SetDynamicDecay(old);
            }

            if (!CheckDecay())
            {
                if (RelocatedEntities.Count > 0)
                {
                    Timer.DelayCall(TimeSpan.Zero, RestoreRelocatedEntities);
                }

                //if ( m_Owner == null && m_Friends.Count == 0 && m_CoOwners.Count == 0 )
                //	Timer.DelayCall( TimeSpan.FromSeconds( 10.0 ), new TimerCallback( Delete ) );
            }
        }
Example #31
0
        public Arena(GenericReader reader)
        {
            int version = reader.ReadEncodedInt();

            switch (version)
            {
            case 7:
            {
                m_IsGuarded = reader.ReadBool();

                goto case 6;
            }

            case 6:
            {
                m_Ladder = reader.ReadItem() as LadderController;

                goto case 5;
            }

            case 5:
            {
                m_Tournament = reader.ReadItem() as TournamentController;
                m_Announcer  = reader.ReadMobile();

                goto case 4;
            }

            case 4:
            {
                m_Name = reader.ReadString();

                goto case 3;
            }

            case 3:
            {
                m_Zone = reader.ReadRect2D();

                goto case 2;
            }

            case 2:
            {
                m_GateIn     = reader.ReadPoint3D();
                m_GateOut    = reader.ReadPoint3D();
                m_Teleporter = reader.ReadItem();

                goto case 1;
            }

            case 1:
            {
                m_Players = reader.ReadStrongMobileList();

                goto case 0;
            }

            case 0:
            {
                m_Facet   = reader.ReadMap();
                m_Bounds  = reader.ReadRect2D();
                m_Outside = reader.ReadPoint3D();
                m_Wall    = reader.ReadPoint3D();

                if (version == 0)
                {
                    reader.ReadBool();
                    m_Players = new List <Mobile>();
                }

                m_Active = reader.ReadBool();
                m_Points = new ArenaStartPoints(reader);

                if (m_Active)
                {
                    m_Arenas.Add(this);
                    m_Arenas.Sort();
                }

                break;
            }
            }

            if (m_Zone.Start != Point2D.Zero && m_Zone.End != Point2D.Zero && m_Facet != null)
            {
                m_Region = new SafeZone(m_Zone, m_Outside, m_Facet, m_IsGuarded);
            }

            if (IsOccupied)
            {
                Timer.DelayCall(TimeSpan.FromSeconds(2.0), new TimerCallback(Evict));
            }

            if (m_Tournament != null)
            {
                Timer.DelayCall(TimeSpan.Zero, new TimerCallback(AttachToTournament_Sandbox));
            }
        }
 public DaviesDeedEntry(GenericReader reader)
 {
     int version = reader.ReadByte();
     m_type = reader.ReadInt();
     m_Level = reader.ReadInt();
     m_Decoder = reader.ReadMobile();
     m_Map = reader.ReadMap();
     m_Location2d = reader.ReadPoint2D();
     m_Location3d = reader.ReadPoint3D();
     m_Bounds = reader.ReadRect2D();
     m_Mapnumber = reader.ReadString();
 }
Example #33
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            if (version >= 13)
            {
                c_ForcePrivate = reader.ReadBool();
                c_ForcePublic  = reader.ReadBool();
                c_NoTrade      = reader.ReadBool();
            }

            if (version >= 12)
            {
                c_Free = reader.ReadBool();
            }

            if (version >= 11)
            {
                c_Murderers = (Intu)reader.ReadInt();
            }

            if (version >= 10)
            {
                c_LeaveItems = reader.ReadBool();
            }

            if (version >= 9)
            {
                c_RentToOwn        = reader.ReadBool();
                c_OriginalRentTime = reader.ReadTimeSpan();
                c_RTOPayments      = reader.ReadInt();
            }

            c_PreviewItems = new ArrayList();
            if (version >= 7)
            {
                c_PreviewItems = reader.ReadItemList();
            }

            if (version >= 6)
            {
                c_ItemsPrice = reader.ReadInt();
                c_KeepItems  = reader.ReadBool();
            }

            c_DecoreItemInfos = new ArrayList();
            if (version >= 5)
            {
                int            decorecount = reader.ReadInt();
                DecoreItemInfo info;
                for (int i = 0; i < decorecount; ++i)
                {
                    info = new DecoreItemInfo();
                    info.Load(reader);
                    c_DecoreItemInfos.Add(info);
                }

                c_Relock = reader.ReadBool();
            }

            if (version >= 4)
            {
                c_RecurRent     = reader.ReadBool();
                c_RentByTime    = reader.ReadTimeSpan();
                c_RentTime      = reader.ReadDateTime();
                c_DemolishTime  = reader.ReadDateTime();
                c_YoungOnly     = reader.ReadBool();
                c_MinTotalSkill = reader.ReadInt();
                c_MaxTotalSkill = reader.ReadInt();
            }

            if (version >= 3)
            {
                c_MinZ = reader.ReadInt();
                c_MaxZ = reader.ReadInt();
            }

            if (version >= 2)
            {
                c_House = (TownHouse)reader.ReadItem();
            }

            c_Price    = reader.ReadInt();
            c_Locks    = reader.ReadInt();
            c_Secures  = reader.ReadInt();
            c_BanLoc   = reader.ReadPoint3D();
            c_SignLoc  = reader.ReadPoint3D();
            c_Skill    = reader.ReadString();
            c_SkillReq = reader.ReadDouble();

            c_Blocks = new ArrayList();
            int count = reader.ReadInt();

            for (int i = 0; i < count; ++i)
            {
                c_Blocks.Add(reader.ReadRect2D());
            }

            if (c_RentTime > DateTime.Now)
            {
                BeginRentTimer(c_RentTime - DateTime.Now);
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(StartTimers));

            ClearPreview();

            s_TownHouseSigns.Add(this);
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            this.m_DamageEntries = new Dictionary<Mobile, int>();

            int version = reader.ReadInt();

            switch( version )
            {
				case 6:
					SpawnName = reader.ReadString();
					AutoRestart = reader.ReadBool();
					SpawnMod = reader.ReadDouble();
					SpawnRadius = reader.ReadInt();
					goto case 5;
                case 5:
                    {
                        int entries = reader.ReadInt();
                        Mobile m;
                        int damage;
                        for (int i = 0; i < entries; ++i)
                        {
                            m = reader.ReadMobile();
                            damage = reader.ReadInt();

                            if (m == null)
                                continue;

                            this.m_DamageEntries.Add(m, damage);
                        }

                        goto case 4;
                    }
                case 4:
                    {
                        this.m_ConfinedRoaming = reader.ReadBool();
                        this.m_Idol = reader.ReadItem<IdolOfTheChampion>();
                        this.m_HasBeenAdvanced = reader.ReadBool();

                        goto case 3;
                    }
                case 3:
                    {
                        this.m_SpawnArea = reader.ReadRect2D();

                        goto case 2;
                    }
                case 2:
                    {
                        this.m_RandomizeType = reader.ReadBool();

                        goto case 1;
                    }
                case 1:
                    {
                        if (version < 3)
                        {
                            int oldRange = reader.ReadInt();

                            this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - oldRange, this.Y - oldRange), new Point2D(this.X + oldRange, this.Y + oldRange));
                        }

                        this.m_Kills = reader.ReadInt();

                        goto case 0;
                    }
                case 0:
                    {
                        if (version < 1)
                            this.m_SpawnArea = new Rectangle2D(new Point2D(this.X - 24, this.Y - 24), new Point2D(this.X + 24, this.Y + 24));	//Default was 24

                        bool active = reader.ReadBool();
                        this.m_Type = (ChampionSpawnType)reader.ReadInt();
                        this.m_Creatures = reader.ReadStrongMobileList();
                        this.m_RedSkulls = reader.ReadStrongItemList();
                        this.m_WhiteSkulls = reader.ReadStrongItemList();
                        this.m_Platform = reader.ReadItem<ChampionPlatform>();
                        this.m_Altar = reader.ReadItem<ChampionAltar>();
                        this.m_ExpireDelay = reader.ReadTimeSpan();
                        this.m_ExpireTime = reader.ReadDeltaTime();
                        this.m_Champion = reader.ReadMobile();
                        this.m_RestartDelay = reader.ReadTimeSpan();

                        if (reader.ReadBool())
                        {
                            this.m_RestartTime = reader.ReadDeltaTime();
                            this.BeginRestart(this.m_RestartTime - DateTime.UtcNow);
                        }

                        if (version < 4)
                        {
                            this.m_Idol = new IdolOfTheChampion(this);
                            this.m_Idol.MoveToWorld(new Point3D(this.X, this.Y, this.Z - 15), this.Map);
                        }

                        if (this.m_Platform == null || this.m_Altar == null || this.m_Idol == null)
                            this.Delete();
                        else if (active)
                            this.Start();

                        break;
                    }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(UpdateRegion));
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            this.m_MobFactionArea = new Rectangle3D[0];

            switch (version)
            {
                case 1:
                    {
                        this.m_EjectLocation = reader.ReadPoint3D();
                        string ejectmap = reader.ReadString();
                        try
                        {
                            this.m_EjectMap = Map.Parse(ejectmap);
                        }
                        catch
                        {
                        }

                        string factiontype = reader.ReadString();
                        try
                        {
                            this.m_FactionType = (XmlMobFactions.GroupTypes)Enum.Parse(typeof(XmlMobFactions.GroupTypes), factiontype);
                        }
                        catch
                        {
                        }
                        this.m_FactionLevel = reader.ReadInt();

                        goto case 0;
                    }
                case 0:
                    {
                        this.m_Music = (MusicName)reader.ReadInt();
                        this.m_MobFactionPriority = reader.ReadInt();
                        if (version < 1)
                        {
                            // old region area
                            reader.ReadRect2D();
                        }
                        this.m_MobFactionRegionName = reader.ReadString();
                        string mapname = reader.ReadString();
                        try
                        {
                            this.m_MobFactionMap = Map.Parse(mapname);
                        }
                        catch
                        {
                        }
                        this.m_CopiedRegion = reader.ReadString();
                        // do the coord list
                        int count = reader.ReadInt();
                        if (count > 0)
                        {
                            // the old version used 2D rectangles for the region area.  The new version uses 3D
                            if (version < 1)
                            {
                                Rectangle2D[] area = new Rectangle2D[count];
                                for (int i = 0; i < count; i++)
                                {
                                    area[i] = reader.ReadRect2D();
                                }
                                this.m_MobFactionArea = Region.ConvertTo3D(area);
                            }
                            else
                            {
                                this.m_MobFactionArea = new Rectangle3D[count];
                                for (int i = 0; i < count; i++)
                                {
                                    this.m_MobFactionArea[i] = new Rectangle3D(reader.ReadPoint3D(), reader.ReadPoint3D());
                                }
                            }
                        }

                        break;
                    }
            }

            // refresh the region
            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(RefreshRegions));
        }
Example #36
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();
			
			_LinkedCreatureGuardType = ScriptCompiler.FindTypeByName( reader.ReadString() );
			
			_GuardedRegion = reader.ReadRect2D();
			_GuardedMap = reader.ReadMap();
			
			_TossPoint = reader.ReadPoint3D();
			_TossMap = reader.ReadMap();
		}