Ejemplo n.º 1
1
        public VendorInventory(BaseHouse house, GenericReader reader)
        {
            this.m_House = house;

            int version = reader.ReadEncodedInt();

            this.m_Owner = reader.ReadMobile();
            this.m_VendorName = reader.ReadString();
            this.m_ShopName = reader.ReadString();

            this.m_Items = reader.ReadStrongItemList();
            this.m_Gold = reader.ReadInt();

            this.m_ExpireTime = reader.ReadDeltaTime();

            if (this.m_Items.Count == 0 && this.m_Gold == 0)
            {
                Timer.DelayCall(TimeSpan.Zero, new TimerCallback(Delete));
            }
            else
            {
                TimeSpan delay = this.m_ExpireTime - DateTime.Now;
                this.m_ExpireTimer = new ExpireTimer(this, delay > TimeSpan.Zero ? delay : TimeSpan.Zero);
                this.m_ExpireTimer.Start();
            }
        }
Ejemplo n.º 2
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            this.m_Keys = reader.ReadStrongItemList<Key>();
        }
Ejemplo n.º 3
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 0:
                    {
                        this.m_Components = reader.ReadStrongItemList();

                        break;
                    }
            }

            Timer.DelayCall(TimeSpan.Zero, new TimerCallback(this.Delete));
        }
Ejemplo n.º 4
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;
                    }
            }
        }
        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));
        }
Ejemplo n.º 6
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			int version = reader.ReadInt();

			m_Owner = reader.ReadMobile();
			m_EquippedItems = reader.ReadStrongItemList();

			m_BackpackContent = new List<LocationStorage>();
			int BackpackContentAmount = reader.ReadInt();

			for( int i = 0; i < BackpackContentAmount; ++i )
				m_BackpackContent.Add( LocationStorage.Deserialize( reader ) );
		}
Ejemplo n.º 7
0
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);
			int version = reader.ReadInt();

			switch (version)
			{
                case 32:
                case 31:
                    {
                        m_ShowGuildAbbreviation = version > 31 ? reader.ReadBool() : false;
                        m_FameKarmaTitle = reader.ReadString();
                        m_PaperdollSkillTitle = reader.ReadString();
                        m_OverheadSkillTitle = reader.ReadString();
                        m_SubtitleSkillTitle = reader.ReadString();

                        m_CurrentChampTitle = reader.ReadString();
                        m_CurrentVeteranTitle = reader.ReadInt();
                        goto case 30;
                    }
                case 30: goto case 29;
				case 29:
					{
						m_GauntletPoints = reader.ReadDouble();

						m_SSNextSeed = reader.ReadDateTime();
						m_SSSeedExpire = reader.ReadDateTime();
						m_SSSeedLocation = reader.ReadPoint3D();
						m_SSSeedMap = reader.ReadMap();

                        if (version < 30)
                        {
                            reader.ReadLong(); // Old m_LevelExp
                            int points = (int)reader.ReadLong();
                            if (points > 0)
                            {
                                Server.Engines.Points.PointsSystem.QueensLoyalty.ConvertFromOldSystem(this, points);
                            }

                            reader.ReadInt(); // Old m_Level
                            reader.ReadString(); // Old m_ExpTitle
                        }

                        m_VASTotalMonsterFame = reader.ReadInt();

						m_Quests = QuestReader.Quests(reader, this);
						m_Chains = QuestReader.Chains(reader);

						m_Collections = new Dictionary<Collection, int>();
						m_CollectionTitles = new List<object>();

						for (int i = reader.ReadInt(); i > 0; i--)
						{
							m_Collections.Add((Collection)reader.ReadInt(), reader.ReadInt());
						}

						for (int i = reader.ReadInt(); i > 0; i--)
						{
							m_CollectionTitles.Add(QuestReader.Object(reader));
						}

						m_SelectedTitle = reader.ReadInt();

						goto case 28;
					}
				case 28:
					{
						m_PeacedUntil = reader.ReadDateTime();

						goto case 27;
					}
				case 27:
					{
						m_AnkhNextUse = reader.ReadDateTime();

						goto case 26;
					}
				case 26:
					{
						m_AutoStabled = reader.ReadStrongMobileList();

						goto case 25;
					}
				case 25:
					{
						int recipeCount = reader.ReadInt();

						if (recipeCount > 0)
						{
							m_AcquiredRecipes = new Dictionary<int, bool>();

							for (int i = 0; i < recipeCount; i++)
							{
								int r = reader.ReadInt();
								if (reader.ReadBool()) //Don't add in recipies which we haven't gotten or have been removed
								{
									m_AcquiredRecipes.Add(r, true);
								}
							}
						}
						goto case 24;
					}
				case 24:
					{
						m_LastHonorLoss = reader.ReadDeltaTime();
						goto case 23;
					}
				case 23:
					{
						m_ChampionTitles = new ChampionTitleInfo(reader);
						goto case 22;
					}
				case 22:
					{
						m_LastValorLoss = reader.ReadDateTime();
						goto case 21;
					}
				case 21:
					{
						m_ToTItemsTurnedIn = reader.ReadEncodedInt();
						m_ToTTotalMonsterFame = reader.ReadInt();
						goto case 20;
					}
				case 20:
					{
						m_AllianceMessageHue = reader.ReadEncodedInt();
						m_GuildMessageHue = reader.ReadEncodedInt();

						goto case 19;
					}
				case 19:
					{
						int rank = reader.ReadEncodedInt();
						int maxRank = RankDefinition.Ranks.Length - 1;
						if (rank > maxRank)
						{
							rank = maxRank;
						}

						m_GuildRank = RankDefinition.Ranks[rank];
						m_LastOnline = reader.ReadDateTime();
						goto case 18;
					}
				case 18:
					{
						m_SolenFriendship = (SolenFriendship)reader.ReadEncodedInt();

						goto case 17;
					}
				case 17: // changed how DoneQuests is serialized
				case 16:
					{
						m_Quest = QuestSerializer.DeserializeQuest(reader);

						if (m_Quest != null)
						{
							m_Quest.From = this;
						}

						int count = reader.ReadEncodedInt();

						if (count > 0)
						{
							m_DoneQuests = new List<QuestRestartInfo>();

							for (int i = 0; i < count; ++i)
							{
								Type questType = QuestSerializer.ReadType(QuestSystem.QuestTypes, reader);
								DateTime restartTime;

								if (version < 17)
								{
									restartTime = DateTime.MaxValue;
								}
								else
								{
									restartTime = reader.ReadDateTime();
								}

								m_DoneQuests.Add(new QuestRestartInfo(questType, restartTime));
							}
						}

						m_Profession = reader.ReadEncodedInt();
						goto case 15;
					}
				case 15:
					{
						m_LastCompassionLoss = reader.ReadDeltaTime();
						goto case 14;
					}
				case 14:
					{
						m_CompassionGains = reader.ReadEncodedInt();

						if (m_CompassionGains > 0)
						{
							m_NextCompassionDay = reader.ReadDeltaTime();
						}

						goto case 13;
					}
				case 13: // just removed m_PayedInsurance list
				case 12:
					{
						m_BOBFilter = new BOBFilter(reader);
						goto case 11;
					}
				case 11:
					{
						if (version < 13)
						{
							var payed = reader.ReadStrongItemList();

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

						goto case 10;
					}
				case 10:
					{
						if (reader.ReadBool())
						{
							m_HairModID = reader.ReadInt();
							m_HairModHue = reader.ReadInt();
							m_BeardModID = reader.ReadInt();
							m_BeardModHue = reader.ReadInt();
						}

						goto case 9;
					}
				case 9:
					{
						SavagePaintExpiration = reader.ReadTimeSpan();

						if (SavagePaintExpiration > TimeSpan.Zero)
						{
							BodyMod = (Female ? 184 : 183);
							HueMod = 0;
						}

						goto case 8;
					}
				case 8:
					{
						m_NpcGuild = (NpcGuild)reader.ReadInt();
						m_NpcGuildJoinTime = reader.ReadDateTime();
						m_NpcGuildGameTime = reader.ReadTimeSpan();
						goto case 7;
					}
				case 7:
					{
						m_PermaFlags = reader.ReadStrongMobileList();
						goto case 6;
					}
				case 6:
					{
						NextTailorBulkOrder = reader.ReadTimeSpan();
						goto case 5;
					}
				case 5:
					{
						NextSmithBulkOrder = reader.ReadTimeSpan();
						goto case 4;
					}
				case 4:
					{
						m_LastJusticeLoss = reader.ReadDeltaTime();
						m_JusticeProtectors = reader.ReadStrongMobileList();
						goto case 3;
					}
				case 3:
					{
						m_LastSacrificeGain = reader.ReadDeltaTime();
						m_LastSacrificeLoss = reader.ReadDeltaTime();
						m_AvailableResurrects = reader.ReadInt();
						goto case 2;
					}
				case 2:
					{
						m_Flags = (PlayerFlag)reader.ReadInt();
						goto case 1;
					}
				case 1:
					{
						m_LongTermElapse = reader.ReadTimeSpan();
						m_ShortTermElapse = reader.ReadTimeSpan();
						m_GameTime = reader.ReadTimeSpan();
						goto case 0;
					}
				case 0:
					{
						if (version < 26)
						{
							m_AutoStabled = new List<Mobile>();
						}
						break;
					}
			}

			if (version < 29)
			{
				m_SSNextSeed = m_SSSeedExpire = DateTime.UtcNow;
				m_SSSeedLocation = Point3D.Zero;
			}

			if (m_RecentlyReported == null)
			{
				m_RecentlyReported = new List<Mobile>();
			}

			/*#region QueensLoyaltySystem
			if (version < 29)
			{
				m_Exp = 0;
			}
			#endregion*/

			#region Mondain's Legacy
			if (m_Quests == null)
			{
				m_Quests = new List<BaseQuest>();
			}

			if (m_Chains == null)
			{
				m_Chains = new Dictionary<QuestChain, BaseChain>();
			}

			if (m_DoneQuests == null)
			{
				m_DoneQuests = new List<QuestRestartInfo>();
			}

			if (m_Collections == null)
			{
				m_Collections = new Dictionary<Collection, int>();
			}

			if (m_CollectionTitles == null)
			{
				m_CollectionTitles = new List<object>();
			}
			#endregion

			// Professions weren't verified on 1.0 RC0
			if (!CharacterCreation.VerifyProfession(m_Profession))
			{
				m_Profession = 0;
			}

			if (m_PermaFlags == null)
			{
				m_PermaFlags = new List<Mobile>();
			}

			if (m_JusticeProtectors == null)
			{
				m_JusticeProtectors = new List<Mobile>();
			}

			if (m_BOBFilter == null)
			{
				m_BOBFilter = new BOBFilter();
			}

			if (m_GuildRank == null)
			{
				m_GuildRank = RankDefinition.Member;
				//Default to member if going from older version to new version (only time it should be null)
			}

			if (m_LastOnline == DateTime.MinValue && Account != null)
			{
				m_LastOnline = ((Account)Account).LastLogin;
			}

			if (m_ChampionTitles == null)
			{
				m_ChampionTitles = new ChampionTitleInfo();
			}

			var list = Stabled;

			for (int i = 0; i < list.Count; ++i)
			{
				BaseCreature bc = list[i] as BaseCreature;

				if (bc != null)
				{
					bc.IsStabled = true;
					bc.StabledBy = this;
				}
			}

			CheckAtrophies(this);

			if (Hidden) //Hiding is the only buff where it has an effect that's serialized.
			{
				AddBuff(new BuffInfo(BuffIcon.HidingAndOrStealth, 1075655));
			}
		}
Ejemplo n.º 8
0
		public override void Deserialize( GenericReader reader )
		{
			int version = reader.ReadInt();

			switch( version )
			{
				case 5:
				case 4:
				{
					m_Signpost = reader.ReadItem();
					m_SignpostGraphic = reader.ReadInt();

					goto case 3;
				}
				case 3:
				{
					m_Type = (FoundationType)reader.ReadInt();

					goto case 2;
				}
				case 2:
				{
					m_SignHanger = reader.ReadItem();

					goto case 1;
				}
				case 1:
				{
					if( version < 5 )
						m_DefaultPrice = reader.ReadInt();

					goto case 0;
				}
				case 0:
				{
					if( version < 3 )
						m_Type = FoundationType.Stone;

					if( version < 4 )
						m_SignpostGraphic = 9;

					m_LastRevision = reader.ReadInt();
					m_Fixtures = reader.ReadStrongItemList();

					m_Current = new DesignState( this, reader );
					m_Design = new DesignState( this, reader );
					m_Backup = new DesignState( this, reader );

					break;
				}
			}

			base.Deserialize( reader );
		}
Ejemplo n.º 9
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            ScoreModifier = 1.0;

            switch (version)
            {
                case 3:
                    {
                        ScoringType = (Scoring) reader.ReadInt();
                        ScoreModifier = reader.ReadDouble();
                        goto case 2;
                    }
                case 2:
                    {
                        m_EventSupplier = reader.ReadItem<EventSupplier>();
                        m_UseSphereRules = reader.ReadBool();
                        m_GiveHorses = reader.ReadBool();
                        goto case 1;
                    }
                case 1:
                    {
                        m_MatchMin = reader.ReadInt();
                        m_LeaveLocation = reader.ReadPoint3D();
                        m_LeaveMap = reader.ReadMap();
                        goto case 0;
                    }
                case 0:
                    {
                        Started = reader.ReadBool();
                        m_Active = reader.ReadBool();
                        m_AcceptingContestants = reader.ReadBool();
                        m_DMSpawnPoints = reader.ReadStrongItemList<DMSpawnPoint>();

                        #region Verify loaded spawn points

                        List<DMSpawnPoint> removalList = new List<DMSpawnPoint>();
                        foreach (DMSpawnPoint dmSpawnPoint in m_DMSpawnPoints)
                            if (dmSpawnPoint.StoneLink != this)
                                removalList.Add(dmSpawnPoint);

                        foreach (DMSpawnPoint dmSpawnPoint in removalList)
                            m_DMSpawnPoints.Remove(dmSpawnPoint);

                        #endregion

                        m_MountCollection = ReadMountCollection(reader);
                        break;
                    }
            }

            m_Started = false;
            AcceptingContestants = false;
            Active = false;
        }
Ejemplo n.º 10
0
		public VendorInventory(BaseHouse house, GenericReader reader)
		{
			House = house;

			reader.ReadEncodedInt();

			Owner = reader.ReadMobile();
			VendorName = reader.ReadString();
			ShopName = reader.ReadString();

			Items = reader.ReadStrongItemList();
			Currency = reader.ReadInt();

			ExpireTime = reader.ReadDeltaTime();

			if (Items.Count == 0 && Currency == 0)
			{
				Timer.DelayCall(TimeSpan.Zero, Delete);
			}
			else
			{
				TimeSpan delay = ExpireTime - DateTime.UtcNow;

				m_ExpireTimer = new ExpireTimer(this, delay > TimeSpan.Zero ? delay : TimeSpan.Zero);
				m_ExpireTimer.Start();
			}
		}
Ejemplo n.º 11
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 1:
                case 0:
                    {
                        this.m_Components = reader.ReadStrongItemList<AddonComponent>();
                        break;
                    }
            }

            if (version < 1 && this.Weight == 0)
                this.Weight = -1;
        }
Ejemplo n.º 12
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );
             		int version = reader.ReadInt();

             		int count = reader.ReadInt();

             		for( int i = 0; i < count; i++ )
             			TryToAddRank( reader.ReadInt(), new GuildRankInfo(reader) );

             			m_AlliedGuilds = (List<Item>)reader.ReadStrongItemList();
             			m_EnemyGuilds = (List<Item>)reader.ReadStrongItemList();
             			m_PayCycleInRLDays = reader.ReadInt();
             			m_Treasury = (Container)reader.ReadItem();
             			m_NextPay = reader.ReadDateTime();
             			m_OfficialGuild = reader.ReadBool();
             		m_ArmourHue = reader.ReadInt();
             		m_ClothingHue = reader.ReadInt();
             		m_Owner = (PlayerMobile)reader.ReadMobile();
             		m_OwnersName = reader.ReadString();
             		m_Members = reader.ReadStrongMobileList();
             		m_Applicants = reader.ReadStrongMobileList();

             		Guilds.Add( this );
            CustomGuildStone.CheckMemberActivity(this);
        }
Ejemplo n.º 13
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 27:
                case 26: m_BetaNerf = reader.ReadBool(); goto case 25;
                case 25: m_Components = reader.ReadStrongItemList(); goto case 24;
                case 24: m_NewCrafting = reader.ReadBool(); m_QualityDefense = reader.ReadInt(); goto case 23;
                case 23: m_HasHalo = reader.ReadBool(); goto case 22;
                case 22:
                case 21:
                case 20:
                {
                    m_QualityDamage = reader.ReadInt();
                    m_QualitySpeed = reader.ReadInt();
                    m_QualityAccuracy = reader.ReadInt();
                    goto case 19;
                }
                case 19:
                case 18:
                case 17:
                case 16:
                case 15:
                case 14:
                case 13:
                case 12:
                case 11:
                case 10:
                {
                    m_CraftersOriginalName = reader.ReadString();
                    goto case 9;
                }
                case 9:
                {
                    m_Engraved1 = reader.ReadString();
                    m_Engraved2 = reader.ReadString();
                    m_Engraved3 = reader.ReadString();
                    goto case 5;
                }
                case 8:
                case 7:
                case 6:
                case 5:
                {
                    SaveFlag flags = (SaveFlag)reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.DamageLevel ) )
                    {
                        m_DamageLevel = (WeaponDamageLevel)reader.ReadInt();

                        if ( m_DamageLevel > WeaponDamageLevel.Vanq )
                            m_DamageLevel = WeaponDamageLevel.Ruin;
                    }

                    if ( GetSaveFlag( flags, SaveFlag.AccuracyLevel ) )
                    {
                        m_AccuracyLevel = (WeaponAccuracyLevel)reader.ReadInt();

                        if ( m_AccuracyLevel > WeaponAccuracyLevel.Supremely )
                            m_AccuracyLevel = WeaponAccuracyLevel.Accurate;
                    }

                    if ( GetSaveFlag( flags, SaveFlag.DurabilityLevel ) )
                    {
                        m_DurabilityLevel = (WeaponDurabilityLevel)reader.ReadInt();

                        if ( m_DurabilityLevel > WeaponDurabilityLevel.Indestructible )
                            m_DurabilityLevel = WeaponDurabilityLevel.Durable;
                    }

                    if ( GetSaveFlag( flags, SaveFlag.Quality ) )
                        m_Quality = (WeaponQuality)reader.ReadInt();
                    else
                        m_Quality = WeaponQuality.Regular;

                    if ( GetSaveFlag( flags, SaveFlag.Hits ) )
                        m_Hits = reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.MaxHits ) )
                        m_MaxHits = reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.Slayer ) )
                        m_Slayer = (SlayerName)reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.Poison ) )
                        m_Poison = Poison.Deserialize( reader );

                    if ( GetSaveFlag( flags, SaveFlag.PoisonCharges ) )
                        m_PoisonCharges = reader.ReadInt();

                    if ( GetSaveFlag( flags, SaveFlag.Crafter ) )
                        m_Crafter = reader.ReadMobile();

                    if ( GetSaveFlag( flags, SaveFlag.Identified ) )
                        m_Identified = ( version >= 6 || reader.ReadBool() );

                    if ( GetSaveFlag( flags, SaveFlag.StrReq ) )
                        m_StrReq = reader.ReadInt();
                    else
                        m_StrReq = -1;

                    if ( GetSaveFlag( flags, SaveFlag.DexReq ) )
                        m_DexReq = reader.ReadInt();
                    else
                        m_DexReq = -1;

                    if ( GetSaveFlag( flags, SaveFlag.IntReq ) )
                        m_IntReq = reader.ReadInt();
                    else
                        m_IntReq = -1;

                    if ( GetSaveFlag( flags, SaveFlag.MinDamage ) )
                        m_MinDamage = reader.ReadInt();
                    else
                        m_MinDamage = -1;

                    if ( GetSaveFlag( flags, SaveFlag.MaxDamage ) )
                        m_MaxDamage = reader.ReadInt();
                    else
                        m_MaxDamage = -1;

                    if ( GetSaveFlag( flags, SaveFlag.HitSound ) )
                        m_HitSound = reader.ReadInt();
                    else
                        m_HitSound = -1;

                    if ( GetSaveFlag( flags, SaveFlag.MissSound ) )
                        m_MissSound = reader.ReadInt();
                    else
                        m_MissSound = -1;

                    if ( GetSaveFlag( flags, SaveFlag.Speed ) )
                        m_Speed = reader.ReadInt();
                    else
                        m_Speed = -1;

                    if ( GetSaveFlag( flags, SaveFlag.MaxRange ) )
                        m_MaxRange = reader.ReadInt();
                    else
                        m_MaxRange = -1;

                    if ( GetSaveFlag( flags, SaveFlag.Skill ) )
                        m_Skill = (SkillName)reader.ReadInt();
                    else
                        m_Skill = (SkillName)(-1);

                    if ( GetSaveFlag( flags, SaveFlag.Type ) )
                        m_Type = (WeaponType)reader.ReadInt();
                    else
                        m_Type = (WeaponType)(-1);

                    if ( GetSaveFlag( flags, SaveFlag.Animation ) )
                        m_Animation = (WeaponAnimation)reader.ReadInt();
                    else
                        m_Animation = (WeaponAnimation)(-1);

                    if ( GetSaveFlag( flags, SaveFlag.Resource ) )
                        m_Resource = (CraftResource)reader.ReadInt();
                    else
                        m_Resource = CraftResource.Iron;

                    if ( GetSaveFlag( flags, SaveFlag.xAttributes ) )
                        m_AosAttributes = new AosAttributes( this, reader );
                    else
                        m_AosAttributes = new AosAttributes( this );

                    if ( GetSaveFlag( flags, SaveFlag.xWeaponAttributes ) )
                        m_AosWeaponAttributes = new AosWeaponAttributes( this, reader );
                    else
                        m_AosWeaponAttributes = new AosWeaponAttributes( this );

                    if ( UseSkillMod && m_AccuracyLevel != WeaponAccuracyLevel.Regular && Parent is Mobile )
                    {
                        m_SkillMod = new DefaultSkillMod( AccuracySkill, true, (int)m_AccuracyLevel * 5 );
                        ((Mobile)Parent).AddSkillMod( m_SkillMod );
                    }

                    if ( version < 7 && m_AosWeaponAttributes.MageWeapon != 0 )
                        m_AosWeaponAttributes.MageWeapon = 30 - m_AosWeaponAttributes.MageWeapon;

                    if ( Core.AOS && m_AosWeaponAttributes.MageWeapon != 0 && m_AosWeaponAttributes.MageWeapon != 30 && Parent is Mobile )
                    {
                        m_MageMod = new DefaultSkillMod( SkillName.Magery, true, -30 + m_AosWeaponAttributes.MageWeapon );
                        ((Mobile)Parent).AddSkillMod( m_MageMod );
                    }

                    if ( GetSaveFlag( flags, SaveFlag.PlayerConstructed ) )
                        m_PlayerConstructed = true;

                    if( GetSaveFlag( flags, SaveFlag.SkillBonuses ) )
                        m_AosSkillBonuses = new AosSkillBonuses( this, reader );
                    else
                        m_AosSkillBonuses = new AosSkillBonuses( this );

                    if( GetSaveFlag( flags, SaveFlag.Slayer2 ) )
                        m_Slayer2 = (SlayerName)reader.ReadInt();

                    if( GetSaveFlag( flags, SaveFlag.ElementalDamages ) )
                        m_AosElementDamages = new AosElementAttributes( this, reader );
                    else
                        m_AosElementDamages = new AosElementAttributes( this );

                    break;
                }
                case 4:
                {
                    m_Slayer = (SlayerName)reader.ReadInt();

                    goto case 3;
                }
                case 3:
                {
                    m_StrReq = reader.ReadInt();
                    m_DexReq = reader.ReadInt();
                    m_IntReq = reader.ReadInt();

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

                    goto case 1;
                }
                case 1:
                {
                    m_MaxRange = reader.ReadInt();

                    goto case 0;
                }
                case 0:
                {
                    if ( version == 0 )
                        m_MaxRange = 1; // default

                    if ( version < 5 )
                    {
                        m_Resource = CraftResource.Iron;
                        m_AosAttributes = new AosAttributes( this );
                        m_AosWeaponAttributes = new AosWeaponAttributes( this );
                        m_AosElementDamages = new AosElementAttributes( this );
                        m_AosSkillBonuses = new AosSkillBonuses( this );
                    }

                    m_MinDamage = reader.ReadInt();
                    m_MaxDamage = reader.ReadInt();

                    m_Speed = reader.ReadInt();

                    m_HitSound = reader.ReadInt();
                    m_MissSound = reader.ReadInt();

                    m_Skill = (SkillName)reader.ReadInt();
                    m_Type = (WeaponType)reader.ReadInt();
                    m_Animation = (WeaponAnimation)reader.ReadInt();
                    m_DamageLevel = (WeaponDamageLevel)reader.ReadInt();
                    m_AccuracyLevel = (WeaponAccuracyLevel)reader.ReadInt();
                    m_DurabilityLevel = (WeaponDurabilityLevel)reader.ReadInt();
                    m_Quality = (WeaponQuality)reader.ReadInt();

                    m_Crafter = reader.ReadMobile();

                    m_Poison = Poison.Deserialize( reader );
                    m_PoisonCharges = reader.ReadInt();

                    if ( m_StrReq == OldStrengthReq )
                        m_StrReq = -1;

                    if ( m_DexReq == OldDexterityReq )
                        m_DexReq = -1;

                    if ( m_IntReq == OldIntelligenceReq )
                        m_IntReq = -1;

                    if ( m_MinDamage == OldMinDamage )
                        m_MinDamage = -1;

                    if ( m_MaxDamage == OldMaxDamage )
                        m_MaxDamage = -1;

                    if ( m_HitSound == OldHitSound )
                        m_HitSound = -1;

                    if ( m_MissSound == OldMissSound )
                        m_MissSound = -1;

                    if ( m_Speed == OldSpeed )
                        m_Speed = -1;

                    if ( m_MaxRange == OldMaxRange )
                        m_MaxRange = -1;

                    if ( m_Skill == OldSkill )
                        m_Skill = (SkillName)(-1);

                    if ( m_Type == OldType )
                        m_Type = (WeaponType)(-1);

                    if ( m_Animation == OldAnimation )
                        m_Animation = (WeaponAnimation)(-1);

                    if ( UseSkillMod && m_AccuracyLevel != WeaponAccuracyLevel.Regular && Parent is Mobile )
                    {
                        m_SkillMod = new DefaultSkillMod( AccuracySkill, true, (int)m_AccuracyLevel * 5);
                        ((Mobile)Parent).AddSkillMod( m_SkillMod );
                    }

                    break;
                }
            }

            if ( Core.AOS && Parent is Mobile )
                m_AosSkillBonuses.AddTo( (Mobile)Parent );

            int strBonus = m_AosAttributes.BonusStr;
            int dexBonus = m_AosAttributes.BonusDex;
            int intBonus = m_AosAttributes.BonusInt;

            if ( this.Parent is Mobile && (strBonus != 0 || dexBonus != 0 || intBonus != 0) )
            {
                Mobile m = (Mobile)this.Parent;

                string modName = this.Serial.ToString();

                if ( strBonus != 0 )
                    m.AddStatMod( new StatMod( StatType.Str, modName + "Str", strBonus, TimeSpan.Zero ) );

                if ( dexBonus != 0 )
                    m.AddStatMod( new StatMod( StatType.Dex, modName + "Dex", dexBonus, TimeSpan.Zero ) );

                if ( intBonus != 0 )
                    m.AddStatMod( new StatMod( StatType.Int, modName + "Int", intBonus, TimeSpan.Zero ) );
            }

            if ( Parent is Mobile )
                ((Mobile)Parent).CheckStatTimers();

            if ( m_Hits <= 0 && m_MaxHits <= 0 )
            {
                m_Hits = m_MaxHits = Utility.RandomMinMax( InitMinHits, InitMaxHits );
            }

            if( version < 15 && this is IBoneArmour )
                this.Attributes.WeaponSpeed -= 4;

            if( version < 16 )
                FixResource();

            if( version < 17 )
            {
                this.m_Speed = -1;
                this.m_MinDamage = -1;
                this.m_MaxDamage = -1;

                if( this.Hue == 2413 )
                    this.Resource = CraftResource.Copper;

                if( this.Hue == 2418 )
                    this.Resource = CraftResource.Bronze;
            }

            if( version < 18 )
                this.DurabilityLevel = WeaponDurabilityLevel.Regular;

            if( version < 19 )
            {
                if( this.HitPoints > 175 )
                    this.HitPoints = 175;

                if( this.MaxHitPoints > 175 )
                    this.MaxHitPoints = 175;
            }

            if( version < 20 )
                FixBonuses();

            if( version < 21 )
            {
                if( this is IBoneArmour )
                    Hue = 0;

                else
                    Hue = CraftResources.GetHue( this.Resource );
            }

            if( version < 22 )
            {
                Speed = -1;
                MinDamage = -1;
                MaxDamage = -1;
            }

            if ( version == 26 )
                BetaNerf = false;
        }
Ejemplo n.º 14
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 1:
                    m_Instance = reader.ReadItem() as PrimevalLichPuzzle;
                    this.m_Altar = reader.ReadItem() as ChampionSpawn;
                    this.m_Key = reader.ReadLong();
                    this.m_Successful = reader.ReadMobile();
                    this.m_Levers = reader.ReadStrongItemList<PrimevalLichPuzzleLever>();
                    break;
            }

            if (null == this.m_Levers)
                this.m_Levers = new List<PrimevalLichPuzzleLever>();
            //            if ( null != m_Instance && m_Instance.Deleted && this == m_Instance )
            //            {
            //                m_Instance = null;
            //                return;
            //            }
            //            // remove if no altar exists
            //            if ( null == m_Altar )
            //                Timer.DelayCall( TimeSpan.FromSeconds( 0.0 ), new TimerCallback( Delete ) );
            //            ResetLevers();
        }
Ejemplo n.º 15
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            this.m_Components = reader.ReadStrongItemList<PlagueBeastComponent>();
            this.m_BrainHue = reader.ReadInt();
            this.m_Opened = reader.ReadBool();
        }
Ejemplo n.º 16
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;
		}
Ejemplo n.º 17
0
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);

			int version = reader.ReadInt();

			//46+ (This should ALWAYS come just after the version!)
			if (version >= 46)
			{
				DeserializeSnapshot(reader);
			}

			if (LostStabledPetRecorder.Enabled)
			{
				LostStabledPetRecorder.PlayerMobiles.Add(this);
			}

			switch (version)
			{
                case 51:
                    {
                        HalloweenPaintExpirationOrange = reader.ReadTimeSpan();

                        if (HalloweenPaintExpirationOrange > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 1358;
                        }

                        HalloweenPaintExpirationPurple = reader.ReadTimeSpan();

                        if (HalloweenPaintExpirationPurple > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 1378;
                        }
                    }
                    goto case 50;
                case 50:
                    {
                        ZombiePaintExperationBooger = reader.ReadTimeSpan();

                        if (ZombiePaintExperationBooger > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 61;
                        }

                        ZombiePaintExperationVesper = reader.ReadTimeSpan();

                        if (ZombiePaintExperationVesper > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 1159;
                        }
                    }
                    goto case 49;
                case 49:
                    {
                        BattlePaintExpirationShadow = reader.ReadTimeSpan();

                        if (BattlePaintExpirationShadow > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 1175;
                        }

                        BattlePaintExpirationRed = reader.ReadTimeSpan();

                        if (BattlePaintExpirationRed > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 1157;
                        }
                    }
                    goto case 48;
                case 48:
			    {
			        NewbieQuestCompleted = reader.ReadBool();
			    }
                    goto case 47;
				case 47:
					{
						if (reader.ReadBool())
						{
							BodyValue = Race.Body(this);
						}
					}
					goto case 46;
				case 46:
				case 45:
					{
						EventMsgFlag = reader.ReadBool();
						EventPoints = reader.ReadInt();
					}
					goto case 44;
				case 44:
					{
						int titleCount = reader.ReadInt();

						if (titleCount > 0)
						{
							_ValorTitles = new List<string>();

							for (int i = 0; i < titleCount; i++)
							{
								string title = reader.ReadString();
								_ValorTitles.Add(title);
							}
						}
					}
					goto case 43;
				case 43:
					{
						Lastkilled = reader.ReadDateTime();
						goto case 42;
					}
				case 42:
					_ValorRating = reader.ReadInt();
					goto case 41;
				case 41:
					ValorQuests = reader.ReadInt();
					goto case 40;
				case 40:
					ValorTitle = reader.ReadString();
					goto case 39;
				case 39:
					ValorRank = reader.ReadInt();
					goto case 38;
				case 38:
					MurderersKilled = reader.ReadInt();
					goto case 37;
				case 37:
					ValorPoints = reader.ReadInt();
					goto case 36;
				case 36:
					LongTermLastDecayGameTime = reader.ReadTimeSpan();
					goto case 35;
				case 35:
					Companion = reader.ReadBool();
					goto case 34;
				case 34:
					{
						// don't check stat loss decay here, just on login
						GameParticipant = reader.ReadBool();
					}
					goto case 33;
				case 33:
					{
						// don't check stat loss decay here, just on login
						StatEnd = reader.ReadDateTime();
					}
					goto case 32;
				case 32:
					reader.ReadInt(); //m_InStat = reader.ReadInt(); 
					// TODO: Remove
					goto case 31;
				case 31:
					KMUsed = reader.ReadInt();
					goto case 30;
				case 30:
					MurderBounty = reader.ReadInt();
					goto case 29;
				case 29:
					{
						int skillgaincount = reader.ReadEncodedInt();

						for (int i = 0; i < skillgaincount; i++)
						{
							SkillGainMods.Add(new SkillGainMod(this, reader));
						}

						goto case 28;
					}
				case 28:
					PeacedUntil = reader.ReadDateTime();
					goto case 27;
				case 27:
					AnkhNextUse = reader.ReadDateTime();
					goto case 26;
				case 26:
					{
						AutoStabled = reader.ReadStrongMobileList();

						CustomFlags = (CustomPlayerFlag)reader.ReadEncodedInt();

						if (GetCustomFlag(CustomPlayerFlag.VisibilityList))
						{
							int length = reader.ReadInt();

							for (int i = 0; i < length; i++)
							{
								VisibilityList.Add(reader.ReadMobile());
							}
						}

						if (GetCustomFlag(CustomPlayerFlag.StaffLevel))
						{
							AccessLevelToggler.m_Mobiles.Add(this, new AccessLevelMod((AccessLevel)reader.ReadInt()));
						}

						if (GetCustomFlag(CustomPlayerFlag.StaffRank))
						{
							m_StaffRank = (StaffRank)reader.ReadInt();
						}

						if (GetCustomFlag(CustomPlayerFlag.DisplayStaffRank))
						{
							m_StaffTitle = reader.ReadString();
						}
					}
					goto case 25;
				case 25:
					{
						int recipeCount = reader.ReadInt();

						if (recipeCount > 0)
						{
							m_AcquiredRecipes = new Dictionary<int, bool>();

							for (int i = 0; i < recipeCount; i++)
							{
								int r = reader.ReadInt();

								//Don't add in recipies which we haven't gotten or have been removed
								if (reader.ReadBool())
								{
									m_AcquiredRecipes.Add(r, true);
								}
							}
						}
					}
					goto case 24;
				case 24:
					reader.ReadDeltaTime(); //m_LastHonorLoss = reader.ReadDeltaTime();
					// TODO: Remove
					goto case 23;
				case 23:
					ChampionTitles = new ChampionTitleInfo(reader);
					goto case 22;
				case 22:
					reader.ReadDateTime(); //m_LastValorLoss = reader.ReadDateTime();
					// TODO: Remove
					goto case 21;
				case 21:
					{
						ToTItemsTurnedIn = reader.ReadEncodedInt();
						ToTTotalMonsterFame = reader.ReadInt();
					}
					goto case 20;
				case 20:
					{
						AllianceMessageHue = reader.ReadEncodedInt();
						GuildMessageHue = reader.ReadEncodedInt();
					}
					goto case 19;
				case 19:
					{
						int rank = reader.ReadEncodedInt();
						int maxRank = RankDefinition.Ranks.Length - 1;

						if (rank > maxRank)
						{
							rank = maxRank;
						}

						m_GuildRank = RankDefinition.Ranks[rank];
						LastOnline = reader.ReadDateTime();
					}
					goto case 18;
				case 18:
					SolenFriendship = (SolenFriendship)reader.ReadEncodedInt();
					goto case 17;
				case 17: // changed how DoneQuests is serialized
				case 16:
					{
						Quest = QuestSerializer.DeserializeQuest(reader);

						if (Quest != null)
						{
							Quest.From = this;
						}

						int count = reader.ReadEncodedInt();

						DoneQuests = new List<QuestRestartInfo>(count);

						if (count > 0)
						{
							for (int i = 0; i < count; ++i)
							{
								Type questType = QuestSerializer.ReadType(QuestSystem.QuestTypes, reader);
								DateTime restartTime = version < 17 ? DateTime.MaxValue : reader.ReadDateTime();

								DoneQuests.Add(new QuestRestartInfo(questType, restartTime));
							}
						}

						Profession = reader.ReadEncodedInt();
					}
					goto case 15;
				case 15:
					reader.ReadDeltaTime(); //m_LastCompassionLoss = reader.ReadDeltaTime();
					// TODO: Remove
					goto case 14;
				case 14:
					{
						// TODO: Remove
						if (reader.ReadEncodedInt() > 0)
						{
							reader.ReadDeltaTime(); //m_NextCompassionDay = reader.ReadDeltaTime();
						}
					}
					goto case 13;
				case 13: // removed PaidInsurance list
				case 12:
					BOBFilter = new BOBFilter(reader);
					goto case 11;
				case 11:
					{
						if (version < 13)
						{
							List<Item> paid = reader.ReadStrongItemList();

							foreach (Item i in paid)
							{
								i.PaidInsurance = true;
							}
						}
					}
					goto case 10;
				case 10:
					{
						if (reader.ReadBool())
						{
							m_HairModID = reader.ReadInt();
							m_HairModHue = reader.ReadInt();
							m_BeardModID = reader.ReadInt();
							m_BeardModHue = reader.ReadInt();
						}
					}
					goto case 9;
				case 9:
					{
						SavagePaintExpiration = reader.ReadTimeSpan();

						if (SavagePaintExpiration > TimeSpan.Zero)
						{
							BodyMod = (Female ? 184 : 183);
							HueMod = 0;
						}
					}
					goto case 8;
				case 8:
					{
						NpcGuild = (NpcGuild)reader.ReadInt();
						NpcGuildJoinTime = reader.ReadDateTime();
						NpcGuildGameTime = reader.ReadTimeSpan();
					}
					goto case 7;
				case 7:
					m_PermaFlags = reader.ReadStrongMobileList();
					goto case 6;
				case 6:
					NextTailorBulkOrder = reader.ReadTimeSpan();
					goto case 5;
				case 5:
					NextSmithBulkOrder = reader.ReadTimeSpan();
					goto case 4;
				case 4:
				case 3:
				case 2:
					Flags = (PlayerFlag)reader.ReadInt();
					goto case 1;
				case 1:
					{
						m_ShortTermElapse = reader.ReadDateTime();
						m_GameTime = reader.ReadTimeSpan();
					}
					goto case 0;
				case 0:
					break;
			}

			if (RecentlyReported == null)
			{
				RecentlyReported = new List<Mobile>();
			}

			// Professions weren't verified on 1.0 RC0
			if (!CharacterCreation.VerifyProfession(Profession, Expansion))
			{
				Profession = 0;
			}

			if (m_PermaFlags == null)
			{
				m_PermaFlags = new List<Mobile>();
			}

			if (BOBFilter == null)
			{
				BOBFilter = new BOBFilter();
			}

			if (m_GuildRank == null)
			{
				//Default to member if going from older version to new version (only time it should be null)
				m_GuildRank = RankDefinition.Member;
			}

			if (LastOnline == DateTime.MinValue && Account != null)
			{
				LastOnline = ((Account)Account).LastLogin;
			}

			if (ChampionTitles == null)
			{
				ChampionTitles = new ChampionTitleInfo();
			}

			if (AccessLevel > AccessLevel.Player)
			{
				IgnoreMobiles = true;
			}

			List<Mobile> list = Stabled;

			foreach (BaseCreature bc in list.OfType<BaseCreature>())
			{
				bc.IsStabled = true; //Charge date set in BaseCreature
			}

			CheckAtrophies(this);

			if (Hidden) //Hiding is the only buff where it has an effect that's serialized.
			{
				AddBuff(new BuffInfo(BuffIcon.HidingAndOrStealth, 1075655));
			}
		}
Ejemplo n.º 18
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 2:
                case 1:
                    if (reader.ReadBool())
                        this.m_Helpers = reader.ReadStrongMobileList<BaseCreature>();
                    goto case 0;
                case 0:
                    this.m_Peerless = reader.ReadMobile() as BasePeerless;
                    this.m_BossLocation = reader.ReadPoint3D();
                    this.m_TeleportDest = reader.ReadPoint3D();
                    this.m_ExitDest = reader.ReadPoint3D();

                    this.m_Deadline = reader.ReadDateTime();

                    // deserialize master keys
                    this.m_MasterKeys = reader.ReadStrongItemList();

                    // deserialize fightes
                    this.m_Fighters = reader.ReadStrongMobileList();

                    // deserialize pets
                    this.m_Pets = new Dictionary<Mobile, List<Mobile>>();
                    int count = reader.ReadInt();

                    for (int i = 0; i < count; i ++)
                        this.m_Pets.Add(reader.ReadMobile(), reader.ReadStrongMobileList());

                    if (version < 2)
                        reader.ReadBool();

                    break;
            }

            this.FinishSequence();
        }
Ejemplo n.º 19
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadEncodedInt();

            this.m_Charges = reader.ReadEncodedInt();
            this.m_Receivers = reader.ReadStrongItemList<ReceiverCrystal>();
        }
Ejemplo n.º 20
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 12:
                    {
                        if (reader.ReadBool())
                            this.m_RestoreEquip = reader.ReadStrongItemList();

                        goto case 11;
                    }
                case 11:
                    {
                        // Version 11, we move all bools to a CorpseFlag
                        this.m_Flags = (CorpseFlag)reader.ReadInt();

                        this.m_TimeOfDeath = reader.ReadDeltaTime();

                        int count = reader.ReadInt();

                        for (int i = 0; i < count; ++i)
                        {
                            Item item = reader.ReadItem();

                            if (reader.ReadBool())
                                this.SetRestoreInfo(item, reader.ReadPoint3D());
                            else if (item != null)
                                this.SetRestoreInfo(item, item.Location);
                        }

                        if (reader.ReadBool())
                            this.BeginDecay(reader.ReadDeltaTime() - DateTime.Now);

                        this.m_Looters = reader.ReadStrongMobileList();
                        this.m_Killer = reader.ReadMobile();

                        this.m_Aggressors = reader.ReadStrongMobileList();
                        this.m_Owner = reader.ReadMobile();

                        this.m_CorpseName = reader.ReadString();

                        this.m_AccessLevel = (AccessLevel)reader.ReadInt();
                        reader.ReadInt(); // guild reserve
                        this.m_Kills = reader.ReadInt();

                        this.m_EquipItems = reader.ReadStrongItemList();
                        break;
                    }
                case 10:
                    {
                        this.m_TimeOfDeath = reader.ReadDeltaTime();

                        goto case 9;
                    }
                case 9:
                    {
                        int count = reader.ReadInt();

                        for (int i = 0; i < count; ++i)
                        {
                            Item item = reader.ReadItem();

                            if (reader.ReadBool())
                                this.SetRestoreInfo(item, reader.ReadPoint3D());
                            else if (item != null)
                                this.SetRestoreInfo(item, item.Location);
                        }

                        goto case 8;
                    }
                case 8:
                    {
                        this.SetFlag(CorpseFlag.VisitedByTaxidermist, reader.ReadBool());

                        goto case 7;
                    }
                case 7:
                    {
                        if (reader.ReadBool())
                            this.BeginDecay(reader.ReadDeltaTime() - DateTime.Now);

                        goto case 6;
                    }
                case 6:
                    {
                        this.m_Looters = reader.ReadStrongMobileList();
                        this.m_Killer = reader.ReadMobile();

                        goto case 5;
                    }
                case 5:
                    {
                        this.SetFlag(CorpseFlag.Carved, reader.ReadBool());

                        goto case 4;
                    }
                case 4:
                    {
                        this.m_Aggressors = reader.ReadStrongMobileList();

                        goto case 3;
                    }
                case 3:
                    {
                        this.m_Owner = reader.ReadMobile();

                        goto case 2;
                    }
                case 2:
                    {
                        this.SetFlag(CorpseFlag.NoBones, reader.ReadBool());

                        goto case 1;
                    }
                case 1:
                    {
                        this.m_CorpseName = reader.ReadString();

                        goto case 0;
                    }
                case 0:
                    {
                        if (version < 10)
                            this.m_TimeOfDeath = DateTime.Now;

                        if (version < 7)
                            this.BeginDecay(m_DefaultDecayTime);

                        if (version < 6)
                            this.m_Looters = new List<Mobile>();

                        if (version < 4)
                            this.m_Aggressors = new List<Mobile>();

                        this.m_AccessLevel = (AccessLevel)reader.ReadInt();
                        reader.ReadInt(); // guild reserve
                        this.m_Kills = reader.ReadInt();
                        this.SetFlag(CorpseFlag.Criminal, reader.ReadBool());

                        this.m_EquipItems = reader.ReadStrongItemList();

                        break;
                    }
            }
        }
Ejemplo n.º 21
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            this.m_Levers = reader.ReadStrongItemList();
            this.m_Statues = reader.ReadStrongItemList();
            this.m_Teles = reader.ReadStrongItemList();

            this.m_Box = reader.ReadItem() as LampRoomBox;

            this.m_Tiles = new List<LeverPuzzleRegion>();
            for (int i = 4; i < 9; i++)
                this.m_Tiles.Add(new LeverPuzzleRegion(this, TA[i]));

            this.m_LampRoom = new LampRoomRegion(this);
            this.m_Enabled = true;
            this.m_TheirKey = 0;
            this.m_MyKey = 0;
            this.GenKey();
        }
Ejemplo n.º 22
0
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);

			int version = reader.ReadInt();

			switch (version)
			{
				case 15: //Changed decay timer serialization.
				case 14: //Proxy corpse for looting when corpses have non-lootables
					ProxyCorpse = reader.ReadItem() as Corpse;
					goto case 13;
				case 13:
					{
						if (reader.ReadBool())
						{
							m_RestoreEquip = reader.ReadStrongItemList();
						}
					}
					goto case 12;
				case 12:
					m_BloodHue = reader.ReadInt();
					goto case 11;
				case 11:
					{
						// Version 11, we move all bools to a CorpseFlag
						m_Flags = (CorpseFlag)reader.ReadInt();

						m_TimeOfDeath = reader.ReadDeltaTime();

						int count = reader.ReadInt();

						for (int i = 0; i < count; ++i)
						{
							Item item = reader.ReadItem();

							if (reader.ReadBool())
							{
								SetRestoreInfo(item, reader.ReadPoint3D());
							}
							else if (item != null)
							{
								SetRestoreInfo(item, item.Location);
							}
						}

						if (version > 14 || reader.ReadBool())
						{
							BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
						}

						m_Looters = reader.ReadStrongMobileList();
						m_Killer = reader.ReadMobile();

						m_Aggressors = reader.ReadStrongMobileList();
						m_Owner = reader.ReadMobile();

						m_CorpseName = reader.ReadString();

						m_AccessLevel = (AccessLevel)reader.ReadInt();
						reader.ReadInt(); // guild reserve
						m_Kills = reader.ReadInt();

						m_EquipItems = reader.ReadStrongItemList();
					}
					break;
					//MAJOR REVISION BREAK
				case 10:
					m_TimeOfDeath = reader.ReadDeltaTime();
					goto case 9;
				case 9:
					{
						int count = reader.ReadInt();

						for (int i = 0; i < count; ++i)
						{
							Item item = reader.ReadItem();

							if (reader.ReadBool())
							{
								SetRestoreInfo(item, reader.ReadPoint3D());
							}
							else if (item != null)
							{
								SetRestoreInfo(item, item.Location);
							}
						}
					}
					goto case 8;
				case 8:
					SetFlag(CorpseFlag.VisitedByTaxidermist, reader.ReadBool());
					goto case 7;
				case 7:
					{
						if (version > 14 || reader.ReadBool())
						{
							BeginDecay(reader.ReadDeltaTime() - DateTime.UtcNow);
						}
					}
					goto case 6;
				case 6:
					{
						m_Looters = reader.ReadStrongMobileList();
						m_Killer = reader.ReadMobile();
					}
					goto case 5;
				case 5:
					SetFlag(CorpseFlag.Carved, reader.ReadBool());
					goto case 4;
				case 4:
					m_Aggressors = reader.ReadStrongMobileList();
					goto case 3;
				case 3:
					m_Owner = reader.ReadMobile();
					goto case 2;
				case 2:
					SetFlag(CorpseFlag.NoBones, reader.ReadBool());
					goto case 1;
				case 1:
					m_CorpseName = reader.ReadString();
					goto case 0;
				case 0:
					{
						if (version < 10)
						{
							m_TimeOfDeath = DateTime.UtcNow;
						}

						if (version < 7)
						{
							BeginDecay(m_DefaultDecayTime);
						}

						if (version < 6)
						{
							m_Looters = new List<Mobile>();
						}

						if (version < 4)
						{
							m_Aggressors = new List<Mobile>();
						}

						m_AccessLevel = (AccessLevel)reader.ReadInt();
						reader.ReadInt(); // guild reserve
						m_Kills = reader.ReadInt();
						SetFlag(CorpseFlag.Criminal, reader.ReadBool());

						m_EquipItems = reader.ReadStrongItemList();
					}
					break;
			}

			_Instances.Add(this);
		}
Ejemplo n.º 23
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch ( version )
            {
                case 0:
                    {
                        this.m_Items = reader.ReadStrongItemList();
                        this.m_Mobiles = reader.ReadStrongMobileList();
                        this.m_DecayTime = reader.ReadDeltaTime();

                        this.RefreshDecay(false);

                        break;
                    }
            }
        }
Ejemplo n.º 24
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            switch (version)
            {
                case 28:
                    {
                        m_PeacedUntil = reader.ReadDateTime();

                        goto case 27;
                    }
                case 27:
                case 26:
                case 25:
                case 24:
                case 23:
                case 22:
                case 21:
                case 20:
                    {
                        m_AllianceMessageHue = reader.ReadEncodedInt();
                        m_GuildMessageHue = reader.ReadEncodedInt();

                        goto case 19;
                    }
                case 19:
                    {
                        int rank = reader.ReadEncodedInt();
                        int maxRank = Guilds.RankDefinition.Ranks.Length - 1;
                        if (rank > maxRank)
                            rank = maxRank;

                        m_GuildRank = Guilds.RankDefinition.Ranks[rank];
                        m_LastOnline = reader.ReadDateTime();
                        goto case 18;
                    }
                case 18:
                case 17:
                case 16:
                    {
                        m_Profession = reader.ReadEncodedInt();
                        goto case 15;
                    }
                case 15:
                case 14:
                case 13:
                case 12:
                case 11:
                    {
                        if (version < 13)
                        {
                            List<Item> payed = reader.ReadStrongItemList();

                            for (int i = 0; i < payed.Count; ++i)
                                payed[i].PayedInsurance = true;
                        }

                        goto case 10;
                    }
                case 10:
                    {
                        if (reader.ReadBool())
                        {
                            m_HairModID = reader.ReadInt();
                            m_HairModHue = reader.ReadInt();
                            m_BeardModID = reader.ReadInt();
                            m_BeardModHue = reader.ReadInt();
                        }

                        goto case 9;
                    }
                case 9:
                    {
                        SavagePaintExpiration = reader.ReadTimeSpan();

                        if (SavagePaintExpiration > TimeSpan.Zero)
                        {
                            BodyMod = (Female ? 184 : 183);
                            HueMod = 0;
                        }

                        goto case 8;
                    }
                case 8:
                    {
                        m_NpcGuild = (NpcGuild)reader.ReadInt();
                        m_NpcGuildJoinTime = reader.ReadDateTime();
                        m_NpcGuildGameTime = reader.ReadTimeSpan();
                        goto case 7;
                    }
                case 7:
                    {
                        m_PermaFlags = reader.ReadStrongMobileList();
                        goto case 6;
                    }
                case 6:
                case 5:
                case 4:
                case 3:
                case 2:
                    {
                        m_Flags = (PlayerFlag)reader.ReadInt();
                        goto case 1;
                    }
                case 1:
                    {
                        m_LongTermElapse = reader.ReadTimeSpan();
                        m_ShortTermElapse = reader.ReadTimeSpan();
                        m_GameTime = reader.ReadTimeSpan();
                        goto case 0;
                    }
                case 0:
                    {
                        break;
                    }
			}

			if (m_RecentlyReported == null)
				m_RecentlyReported = new List<Mobile>();

			// Professions weren't verified on 1.0 RC0
			if ( !CharacterCreation.VerifyProfession( m_Profession ) )
				m_Profession = 0;

			if ( m_PermaFlags == null )
				m_PermaFlags = new List<Mobile>();

			if( m_GuildRank == null )
				m_GuildRank = Guilds.RankDefinition.Member;	//Default to member if going from older version to new version (only time it should be null)

			if( m_LastOnline == DateTime.MinValue && Account != null )
				m_LastOnline = ((Account)Account).LastLogin;

			if ( AccessLevel > AccessLevel.Player )
				m_IgnoreMobiles = true;

			List<Mobile> list = this.Stabled;

			for ( int i = 0; i < list.Count; ++i )
			{
				BaseCreature bc = list[i] as BaseCreature;

				if ( bc != null )
				{
					bc.IsStabled = true;
					bc.StabledBy = this;
				}
			}

			if( Hidden )	//Hiding is the only buff where it has an effect that's serialized.
				AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) );
		}
Ejemplo n.º 25
0
		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;
				}
			}
		}
Ejemplo n.º 26
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            m_Spawns = reader.ReadStrongMobileList();
            m_Items = reader.ReadStrongItemList();
            m_DeleteTime = reader.ReadDeltaTime();
        }
Ejemplo n.º 27
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 2:
				{
					m_Guardians = reader.ReadStrongMobileList();
					m_Temporary = reader.ReadBool();

					goto case 1;
				}
				case 1:
				{
					m_Owner = reader.ReadMobile();

					goto case 0;
				}
				case 0:
				{
					m_Level = reader.ReadInt();
					m_DeleteTime = reader.ReadDeltaTime();
					m_Lifted = reader.ReadStrongItemList();

					if ( version < 2 )
						m_Guardians = new List<Mobile>();

					break;
				}
			}

			if ( !m_Temporary )
			{
				m_Timer = new DeleteTimer( this, m_DeleteTime );
				m_Timer.Start();
			}
			else
			{
				Delete();
			}
		}
Ejemplo n.º 28
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            this.m_Components = reader.ReadStrongItemList<AddonContainerComponent>();
            this.m_Resource = (CraftResource)reader.ReadInt();

            AddonComponent.ApplyLightTo(this);
        }
Ejemplo n.º 29
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );
			int version = reader.ReadInt();

			switch ( version )
			{
				case 28:
				{
					m_PeacedUntil = reader.ReadDateTime();

					goto case 27;
				}
				case 27:
				{
					m_AnkhNextUse = reader.ReadDateTime();

					goto case 26;
				}
				case 26:
				{
					m_AutoStabled = reader.ReadStrongMobileList();

					goto case 25;
				}
				case 25:
				{
					int recipeCount = reader.ReadInt();

					if( recipeCount > 0 )
					{
						m_AcquiredRecipes = new Dictionary<int, bool>();

						for( int i = 0; i < recipeCount; i++ )
						{
							int r = reader.ReadInt();
							if( reader.ReadBool() )	//Don't add in recipies which we haven't gotten or have been removed
								m_AcquiredRecipes.Add( r, true );
						}
					}
					goto case 24;
				}
				case 24:
				{
					m_LastHonorLoss = reader.ReadDeltaTime();
					goto case 23;
				}
				case 23:
				{
					m_ChampionTitles = new ChampionTitleInfo( reader );
					goto case 22;
				}
				case 22:
				{
					m_LastValorLoss = reader.ReadDateTime();
					goto case 21;
				}
				case 21:
				{
					m_ToTItemsTurnedIn = reader.ReadEncodedInt();
					m_ToTTotalMonsterFame = reader.ReadInt();
					goto case 20;
				}
				case 20:
				{
					m_AllianceMessageHue = reader.ReadEncodedInt();
					m_GuildMessageHue = reader.ReadEncodedInt();

					goto case 19;
				}
				case 19:
				{
					int rank = reader.ReadEncodedInt();
					int maxRank = Guilds.RankDefinition.Ranks.Length -1;
					if( rank > maxRank )
						rank = maxRank;

					m_GuildRank = Guilds.RankDefinition.Ranks[rank];
					m_LastOnline = reader.ReadDateTime();
					goto case 18;
				}
				case 18:
				{
					m_SolenFriendship = (SolenFriendship) reader.ReadEncodedInt();

					goto case 17;
				}
				case 17: // changed how DoneQuests is serialized
				case 16:
				{
					m_Quest = QuestSerializer.DeserializeQuest( reader );

					if ( m_Quest != null )
						m_Quest.From = this;

					int count = reader.ReadEncodedInt();

					if ( count > 0 )
					{
						m_DoneQuests = new List<QuestRestartInfo>();

						for ( int i = 0; i < count; ++i )
						{
							Type questType = QuestSerializer.ReadType( QuestSystem.QuestTypes, reader );
							DateTime restartTime;

							if ( version < 17 )
								restartTime = DateTime.MaxValue;
							else
								restartTime = reader.ReadDateTime();

							m_DoneQuests.Add( new QuestRestartInfo( questType, restartTime ) );
						}
					}

					m_Profession = reader.ReadEncodedInt();
					goto case 15;
				}
				case 15:
				{
					m_LastCompassionLoss = reader.ReadDeltaTime();
					goto case 14;
				}
				case 14:
				{
					m_CompassionGains = reader.ReadEncodedInt();

					if ( m_CompassionGains > 0 )
						m_NextCompassionDay = reader.ReadDeltaTime();

					goto case 13;
				}
				case 13: // just removed m_PayedInsurance list
				case 12:
				{
					m_BOBFilter = new Engines.BulkOrders.BOBFilter( reader );
					goto case 11;
				}
				case 11:
				{
					if ( version < 13 )
					{
						List<Item> payed = reader.ReadStrongItemList();

						for ( int i = 0; i < payed.Count; ++i )
							payed[i].PayedInsurance = true;
					}

					goto case 10;
				}
				case 10:
				{
					if ( reader.ReadBool() )
					{
						m_HairModID = reader.ReadInt();
						m_HairModHue = reader.ReadInt();
						m_BeardModID = reader.ReadInt();
						m_BeardModHue = reader.ReadInt();
					}

					goto case 9;
				}
				case 9:
				{
					SavagePaintExpiration = reader.ReadTimeSpan();

					if ( SavagePaintExpiration > TimeSpan.Zero )
					{
						BodyMod = ( Female ? 184 : 183 );
						HueMod = 0;
					}

					goto case 8;
				}
				case 8:
				{
					m_NpcGuild = (NpcGuild)reader.ReadInt();
					m_NpcGuildJoinTime = reader.ReadDateTime();
					m_NpcGuildGameTime = reader.ReadTimeSpan();
					goto case 7;
				}
				case 7:
				{
					m_PermaFlags = reader.ReadStrongMobileList();
					goto case 6;
				}
				case 6:
				{
					NextTailorBulkOrder = reader.ReadTimeSpan();
					goto case 5;
				}
				case 5:
				{
					NextSmithBulkOrder = reader.ReadTimeSpan();
					goto case 4;
				}
				case 4:
				{
					m_LastJusticeLoss = reader.ReadDeltaTime();
					m_JusticeProtectors = reader.ReadStrongMobileList();
					goto case 3;
				}
				case 3:
				{
					m_LastSacrificeGain = reader.ReadDeltaTime();
					m_LastSacrificeLoss = reader.ReadDeltaTime();
					m_AvailableResurrects = reader.ReadInt();
					goto case 2;
				}
				case 2:
				{
					m_Flags = (PlayerFlag)reader.ReadInt();
					goto case 1;
				}
				case 1:
				{
					m_LongTermElapse = reader.ReadTimeSpan();
					m_ShortTermElapse = reader.ReadTimeSpan();
					m_GameTime = reader.ReadTimeSpan();
					goto case 0;
				}
				case 0:
				{
					if( version < 26 )
						m_AutoStabled = new List<Mobile>();
					break;
				}
			}

			if (m_RecentlyReported == null)
				m_RecentlyReported = new List<Mobile>();

			// Professions weren't verified on 1.0 RC0
			if ( !CharacterCreation.VerifyProfession( m_Profession ) )
				m_Profession = 0;

			if ( m_PermaFlags == null )
				m_PermaFlags = new List<Mobile>();

			if ( m_JusticeProtectors == null )
				m_JusticeProtectors = new List<Mobile>();

			if ( m_BOBFilter == null )
				m_BOBFilter = new Engines.BulkOrders.BOBFilter();

			if( m_GuildRank == null )
				m_GuildRank = Guilds.RankDefinition.Member;	//Default to member if going from older verstion to new version (only time it should be null)

			if( m_LastOnline == DateTime.MinValue && Account != null )
				m_LastOnline = ((Account)Account).LastLogin;

			if( m_ChampionTitles == null )
				m_ChampionTitles = new ChampionTitleInfo();

			if ( AccessLevel > AccessLevel.Player )
				m_IgnoreMobiles = true;

			List<Mobile> list = this.Stabled;

			for ( int i = 0; i < list.Count; ++i )
			{
				BaseCreature bc = list[i] as BaseCreature;

				if ( bc != null )
					bc.IsStabled = true;
			}

			CheckAtrophies( this );

			if( Hidden )	//Hiding is the only buff where it has an effect that's serialized.
				AddBuff( new BuffInfo( BuffIcon.HidingAndOrStealth, 1075655 ) );
		}
Ejemplo n.º 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 ) );
            }
        }