Example #1
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 1:
				case 0:
				{
					m_MultiID = reader.ReadInt();
					m_Offset = reader.ReadPoint3D();
					m_ShipName = reader.ReadString();

					if ( version == 0 )
						reader.ReadUInt();

					break;
				}
			}

			if ( LootType == LootType.Newbied )
				LootType = LootType.Blessed;

			if ( Weight == 0.0 )
				Weight = 1.0;
		}
Example #2
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 0:
				{
					m_Boat = reader.ReadItem() as BaseBoat;
					m_Side = (PlankSide) reader.ReadInt();
					m_Locked = reader.ReadBool();
					m_KeyValue = reader.ReadUInt();

					if ( m_Boat == null )
						Delete();

					break;
				}
			}

			if ( IsOpen )
			{
				m_CloseTimer = new CloseTimer( this );
				m_CloseTimer.Start();
			}
		}
		public KeyInfo( GenericReader reader )
		{
			int version = reader.ReadInt();

			m_KeyVal = reader.ReadUInt();
			m_Description = reader.ReadString();
			m_MaxRange = reader.ReadInt();
			m_Link = reader.ReadItem();
			m_Type = (KeyType)reader.ReadInt();
		}
Example #4
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                m_Owner    = reader.ReadItem() as BaseHouse;
                m_OrgOwner = reader.ReadMobile();
                m_KeyOwner = reader.ReadUInt();

                break;
            }
            }

            if (this.Name == "a house sign")
            {
                this.Name = null;
            }
        }
Example #5
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 2:
            {
                m_MaxRange = reader.ReadInt();

                goto case 1;
            }

            case 1:
            {
                m_Link = reader.ReadItem();

                goto case 0;
            }

            case 0:
            {
                if (version < 2 || m_MaxRange == 0)
                {
                    m_MaxRange = 3;
                }

                m_Description = reader.ReadString();

                m_KeyVal = reader.ReadUInt();

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

            int version = reader.ReadInt();

            switch (version)
            {
            case 1:
            case 0:
            {
                m_MultiID  = reader.ReadInt();
                m_Offset   = reader.ReadPoint3D();
                m_ShipName = reader.ReadString();

                if (version == 0)
                {
                    reader.ReadUInt();
                }

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

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                m_KeyValue    = reader.ReadUInt();
                m_Open        = reader.ReadBool();
                m_Locked      = reader.ReadBool();
                m_OpenedID    = reader.ReadInt();
                m_ClosedID    = reader.ReadInt();
                m_OpenedSound = reader.ReadInt();
                m_ClosedSound = reader.ReadInt();
                m_Offset      = reader.ReadPoint3D();
                m_Link        = reader.ReadItem() as BaseDoor;

                m_Timer = new InternalTimer(this);

                if (m_Open)
                {
                    m_Timer.Start();
                }

                if (Server.Items.DoorType.IsDungeonDoor(this))
                {
                    Locked = false;
                }

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

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                m_Boat     = reader.ReadItem() as BaseGalleon;
                m_Side     = (BoatRopeSide)reader.ReadInt();
                m_Locked   = reader.ReadBool();
                m_KeyValue = reader.ReadUInt();

                if (m_Boat == null)
                {
                    Delete();
                }

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

            int version = reader.ReadInt();

            switch (version)
            {
            case 1:
            {
                m_CustomClosedID = reader.ReadInt();
                m_CustomOpenedID = reader.ReadInt();
                m_Facing         = (DoorFacing)reader.ReadInt();
                m_KeyValue       = reader.ReadUInt();
                m_Open           = reader.ReadBool();
                m_Locked         = reader.ReadBool();
                m_OpenedID       = reader.ReadInt();
                m_ClosedID       = reader.ReadInt();
                m_OpenedSound    = reader.ReadInt();
                m_ClosedSound    = reader.ReadInt();
                m_Offset         = reader.ReadPoint3D();
                m_Link           = reader.ReadItem() as BaseDoor;

                m_Timer = new InternalTimer(this);

                if (m_Open)
                {
                    m_Timer.Start();
                }

                break;                                 // NO FALLTHROUGH
            }

            case 0:
            {
                m_KeyValue    = reader.ReadUInt();
                m_Open        = reader.ReadBool();
                m_Locked      = reader.ReadBool();
                m_OpenedID    = reader.ReadInt();
                m_ClosedID    = reader.ReadInt();
                m_OpenedSound = reader.ReadInt();
                m_ClosedSound = reader.ReadInt();
                m_Offset      = reader.ReadPoint3D();
                m_Link        = reader.ReadItem() as BaseDoor;

                m_Timer = new InternalTimer(this);

                if (m_Open)
                {
                    m_Timer.Start();
                }

                // bring ver 0 up to ver 1
                for (int i = 0; i < 8; i++)
                {
                    if (m_Offset == m_Offsets[i])
                    {
                        m_OpenedID      -= 2 * i;
                        m_ClosedID      -= 2 * i;
                        m_CustomClosedID = -1;
                        m_CustomOpenedID = -1;
                        m_Offset         = Point3D.Zero;
                        m_Facing         = (DoorFacing)i;

                        break;
                    }
                }
                if (m_Offset != Point3D.Zero)
                {
                    m_Facing         = DoorFacing.EastCCW;
                    m_CustomOpenedID = m_OpenedID;
                    m_CustomClosedID = m_ClosedID;
                }

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

			int version = reader.ReadInt();

			switch ( version )
			{
                /* Erzse - GuildID is now saved. */
                case 1:
                    {
                        m_Guild = reader.ReadEncodedInt();
                        goto case 0;
                    }
                /* end Erzse */

				case 0:
				{
					m_KeyValue = reader.ReadUInt();
					m_Open = reader.ReadBool();
					m_Locked = reader.ReadBool();
					m_OpenedID = reader.ReadInt();
					m_ClosedID = reader.ReadInt();
					m_OpenedSound = reader.ReadInt();
					m_ClosedSound = reader.ReadInt();
					m_Offset = reader.ReadPoint3D();
					m_Link = reader.ReadItem() as BaseDoor;

					m_Timer = new InternalTimer( this );

					if ( m_Open )
						m_Timer.Start();

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

            int version = reader.ReadInt();

            switch (version) {
            case 1:
                if (reader.ReadBool()) {
                    data = new uint[LotteryConstants.Picks];
                    for (uint i = 0; i < LotteryConstants.Picks; i++)
                        data[i] = reader.ReadUInt();
                    drawing = reader.ReadUInt();
                }
                break;
            }
        }
Example #12
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 2:
				{
					m_MaxRange = reader.ReadInt();

					goto case 1;
				}
				case 1:
				{
					m_Link = reader.ReadItem();

					goto case 0;
				}
				case 0:
				{
					if ( version < 2 || m_MaxRange == 0 )
						m_MaxRange = 3;

					m_Description = reader.ReadString();

					m_KeyVal = reader.ReadUInt();

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

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
                drawing = reader.ReadUInt();

                for (uint i = 0; i < jackpot.Length; i++)
                {
                    jackpot[i] = reader.ReadULong();
                }

                for (uint i = 0; i < awards.Length; i++)
                {
                    awards[i] = reader.ReadULong();
                }

                award     = reader.ReadULong();
                given     = reader.ReadULong();
                destroyed = reader.ReadULong();
                mode      = (LotteryBasketMode)reader.ReadInt();

                if (reader.ReadBool())
                {
                    outcome = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                    {
                        outcome[p] = reader.ReadUInt();
                    }
                }

                uint count = reader.ReadUInt();
                for (uint i = 0; i < count; i++)
                {
                    int    id   = reader.ReadInt();
                    uint[] data = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                    {
                        data[p] = reader.ReadUInt();
                    }
                    RegisteredTicket rt = new RegisteredTicket(id, data);
                    rt.Class    = reader.ReadInt();
                    tickets[id] = rt;
                }

                count = reader.ReadUInt();
                for (uint i = 0; i < count; i++)
                {
                    int    id   = reader.ReadInt();
                    uint[] data = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                    {
                        data[p] = reader.ReadUInt();
                    }
                    incoming[id] = new RegisteredTicket(id, data);
                }

                board     = reader.ReadItem();
                itemPrize = reader.ReadBool();
                break;

            case 1:
                drawing = reader.ReadUInt();

                for (uint i = 0; i < drawingCount.Length; i++)
                {
                    drawingCount[i] = reader.ReadUInt();
                }

                for (uint i = 0; i < jackpot.Length; i++)
                {
                    jackpot[i] = reader.ReadULong();
                }

                for (uint i = 0; i < awards.Length; i++)
                {
                    awards[i] = reader.ReadULong();
                }

                for (uint i = 0; i < winners.Length; i++)
                {
                    winners[i] = reader.ReadInt();
                }

                oldParticipants = reader.ReadUInt();

                award     = reader.ReadULong();
                given     = reader.ReadULong();
                destroyed = reader.ReadULong();
                mode      = (LotteryBasketMode)reader.ReadInt();

                if (reader.ReadBool())
                {
                    outcome = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                    {
                        outcome[p] = reader.ReadUInt();
                    }
                }

                count = reader.ReadUInt();
                for (uint i = 0; i < count; i++)
                {
                    int    id   = reader.ReadInt();
                    uint[] data = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                    {
                        data[p] = reader.ReadUInt();
                    }
                    RegisteredTicket rt = new RegisteredTicket(id, data);
                    rt.Class    = reader.ReadInt();
                    tickets[id] = rt;
                }

                count = reader.ReadUInt();
                for (uint i = 0; i < count; i++)
                {
                    int    id   = reader.ReadInt();
                    uint[] data = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                    {
                        data[p] = reader.ReadUInt();
                    }
                    incoming[id] = new RegisteredTicket(id, data);
                }

                board     = reader.ReadItem();
                itemPrize = reader.ReadBool();
                break;
            }
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 5:
            {
                m_MultiID  = reader.ReadInt();
                m_Offset   = reader.ReadPoint3D();
                m_ShipName = reader.ReadString();
                m_BoatItem = reader.ReadItem() as BaseBoat;
                break;
            }

            case 4:
            {
                switch (reader.ReadInt())
                {
                default:
                case 0: break;

                case 1: m_PilotEntry = new PilotEntry(reader);
                    break;
                }
                goto case 3;
            }

            case 3:
            {
                m_BaseHue = reader.ReadInt();

                if (version < 5)
                {
                    reader.ReadItem();
                }
                reader.ReadItem();
                m_Owner = reader.ReadMobile();
                goto case 2;
            }

            case 2:
            {
                switch (reader.ReadInt())
                {
                default:
                case 0: break;

                case 1: m_SecurityEntry = new SecurityEntry(null, reader);
                    break;
                }
                goto case 1;
            }

            case 1:
            case 0:
            {
                m_MultiID  = reader.ReadInt();
                m_Offset   = reader.ReadPoint3D();
                m_ShipName = reader.ReadString();

                if (version == 0)
                {
                    reader.ReadUInt();
                }

                break;
            }
            }

            if (LootType == LootType.Newbied)
            {
                LootType = LootType.Blessed;
            }

            if (Weight == 0.0)
            {
                Weight = 1.0;
            }
        }
Example #15
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            m_Side = (PlankSide)reader.ReadInt();
            m_Locked = reader.ReadBool();
            m_KeyValue = reader.ReadUInt();

            if (IsOpen)
            {
                m_CloseTimer = new CloseTimer(this);
                m_CloseTimer.Start();
            }
        }
Example #16
0
		public override void Deserialize( GenericReader reader ) {
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch( version ) {

				case 2: {
						_lockLevel = reader.ReadInt();
						_maxLockLevel = reader.ReadInt();
						_requiredSkill = reader.ReadInt();
						_hasLock = reader.ReadBool();

						goto case 1;
					}
				case 1: {
						_timed = reader.ReadBool();
						_timeToClose = reader.ReadTimeSpan();

						goto case 0;
					}
				case 0: {
						m_KeyValue = reader.ReadUInt();
						m_Open = reader.ReadBool();
						m_Locked = reader.ReadBool();
						m_OpenedID = reader.ReadInt();
						m_ClosedID = reader.ReadInt();
						m_OpenedSound = reader.ReadInt();
						m_ClosedSound = reader.ReadInt();
						m_Offset = reader.ReadPoint3D();
						m_Link = reader.ReadItem() as BaseDoor;

						break;
					}
			}
		}
Example #17
0
        public KeyringEntry( GenericReader reader )
        {
            int version = reader.ReadByte();

            switch ( version )
            {
                case 0:
                {
                    m_KeyValue = reader.ReadUInt();
                    m_Link = reader.ReadItem();
                    m_MaxRange = reader.ReadInt();
                    m_ItemID = reader.ReadInt();
                    m_LootType = (LootType)reader.ReadByte();
                    m_Description = reader.ReadString();

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

            int version = reader.ReadInt();

            switch ( version )
            {
                case 7:
                    {
                        m_Locker = reader.ReadMobile();

                        goto case 6;
                    }
				case 6:
					{
						this.m_Crafter = reader.ReadMobile();

						goto case 5;
					}
                case 5:
                    {
                        this.m_IsShipwreckedItem = reader.ReadBool();

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

                        goto case 3;
                    }
                case 3:
                    {
                        this.m_MaxLockLevel = reader.ReadInt();

                        goto case 2;
                    }
                case 2:
                    {
                        this.m_KeyValue = reader.ReadUInt();

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

                        goto case 0;
                    }
                case 0:
                    {
                        if (version < 3)
                            this.m_MaxLockLevel = 100;

                        if (version < 4)
                        {
                            if ((this.m_MaxLockLevel - this.m_LockLevel) == 40)
                            {
                                this.m_RequiredSkill = this.m_LockLevel + 6;
                                this.m_LockLevel = this.m_RequiredSkill - 10;
                                this.m_MaxLockLevel = this.m_RequiredSkill + 39;
                            }
                            else
                            {
                                this.m_RequiredSkill = this.m_LockLevel;
                            }
                        }

                        this.m_Locked = reader.ReadBool();

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

			int version = reader.ReadInt();

			switch ( version )
			{
				case 0:
				{
					m_Boat = reader.ReadItem() as BaseGalleon;
					m_Side = (BoatRopeSide) reader.ReadInt();
					m_Locked = reader.ReadBool();
					m_KeyValue = reader.ReadUInt();
					
					if ( m_Boat == null )
						Delete();

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

            int version = reader.ReadInt();

            switch ( version )
            {
                case 8:
                case 7:
                case 6:
                case 5:
                {
                    SaveFlag flags = (SaveFlag)reader.ReadUInt();

                    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 * AccuracySkillBonus );
                        ((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 );

                    if ( GetSaveFlag( flags, SaveFlag.MagicAffect ) )
                        m_PreUORMagEff = (PreUORMagEff)reader.ReadInt();
                    else
                        m_PreUORMagEff = PreUORMagEff.None;

                    if ( GetSaveFlag( flags, SaveFlag.AffectCharges ) )
                        MagEffCharges = reader.ReadInt();
                    else
                        MagEffCharges = 0;

                    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 * AccuracySkillBonus);
                        ((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 < 6 )
                m_PlayerConstructed = true; // we don't know, so, assume it's crafted
        }
Example #21
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            version = reader.ReadInt();

            if (version > 8)
                m_RelockOnClose = reader.ReadBool();

            if (version > 7)
                m_Picker = reader.ReadMobile();

            if( version > 6 )
                m_ClosesAutomatically = reader.ReadBool();

            m_TrapLevel = reader.ReadInt();
            m_TrapPower = reader.ReadInt();
            m_TrapType = (TrapType)reader.ReadInt();
            m_TrapOnLockpick = reader.ReadBool();
            m_RequiredSkill = reader.ReadInt();
            m_MaxLockLevel = reader.ReadInt();
            m_LockLevel = reader.ReadInt();

            m_KeyValue = reader.ReadUInt();

            m_Open = reader.ReadBool();
            m_Locked = reader.ReadBool();
            m_OpenedID = reader.ReadInt();
            m_ClosedID = reader.ReadInt();
            m_OpenedSound = reader.ReadInt();
            m_ClosedSound = reader.ReadInt();
            m_Offset = reader.ReadPoint3D();
            m_Link = reader.ReadItem() as BaseDoor;

            m_Timer = new InternalTimer( this );

            if ( m_Open && m_ClosesAutomatically )
                m_Timer.Start();

            if( this.LockLevel < 100 )
                this.LockLevel = 100;

            if( this.RequiredSkill < 100 )
                this.RequiredSkill = 100;
        }
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 7:
            {
                m_Locker = reader.ReadMobile();

                goto case 6;
            }

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

                goto case 5;
            }

            case 5:
            {
                this.m_IsShipwreckedItem = reader.ReadBool();

                goto case 4;
            }

            case 4:
            {
                this.m_RequiredSkill = reader.ReadInt();

                goto case 3;
            }

            case 3:
            {
                this.m_MaxLockLevel = reader.ReadInt();

                goto case 2;
            }

            case 2:
            {
                this.m_KeyValue = reader.ReadUInt();

                goto case 1;
            }

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

                goto case 0;
            }

            case 0:
            {
                if (version < 3)
                {
                    this.m_MaxLockLevel = 100;
                }

                if (version < 4)
                {
                    if ((this.m_MaxLockLevel - this.m_LockLevel) == 40)
                    {
                        this.m_RequiredSkill = this.m_LockLevel + 6;
                        this.m_LockLevel     = this.m_RequiredSkill - 10;
                        this.m_MaxLockLevel  = this.m_RequiredSkill + 39;
                    }
                    else
                    {
                        this.m_RequiredSkill = this.m_LockLevel;
                    }
                }

                this.m_Locked = reader.ReadBool();

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

			int version = reader.ReadInt();

			switch ( version )
			{
				case 1:
				{
					m_CustomClosedID = reader.ReadInt();
					m_CustomOpenedID = reader.ReadInt();
					m_Facing = (DoorFacing)reader.ReadInt();
					m_KeyValue = reader.ReadUInt();
					m_Open = reader.ReadBool();
					m_Locked = reader.ReadBool();
					m_OpenedID = reader.ReadInt();
					m_ClosedID = reader.ReadInt();
					m_OpenedSound = reader.ReadInt();
					m_ClosedSound = reader.ReadInt();
					m_Offset = reader.ReadPoint3D();
					m_Link = reader.ReadItem() as BaseDoor;

					m_Timer = new InternalTimer( this );

					if ( m_Open )
						m_Timer.Start();

					break; // NO FALLTHROUGH
				}
				case 0:
				{
					m_KeyValue = reader.ReadUInt();
					m_Open = reader.ReadBool();
					m_Locked = reader.ReadBool();
					m_OpenedID = reader.ReadInt(); 
					m_ClosedID = reader.ReadInt();
					m_OpenedSound = reader.ReadInt();
					m_ClosedSound = reader.ReadInt();
					m_Offset = reader.ReadPoint3D();
					m_Link = reader.ReadItem() as BaseDoor;

					m_Timer = new InternalTimer( this );

					if ( m_Open )
						m_Timer.Start();

					// bring ver 0 up to ver 1
					for (int i = 0; i < 8; i++)
					{
						if (m_Offset == m_Offsets[i])
						{
							m_OpenedID -= 2 * i;
							m_ClosedID -= 2 * i;
							m_CustomClosedID = -1;
							m_CustomOpenedID = -1;
							m_Offset = Point3D.Zero;
							m_Facing = (DoorFacing)i;

							break;
						}
					}
					if (m_Offset != Point3D.Zero)
					{
						m_Facing = DoorFacing.EastCCW;
						m_CustomOpenedID = m_OpenedID;
						m_CustomClosedID = m_ClosedID;
					}

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

            int version = reader.ReadInt();

            switch ( version ) {
            case 0:
                drawing = reader.ReadUInt();

                for (uint i = 0; i < jackpot.Length; i++)
                    jackpot[i] = reader.ReadULong();

                for (uint i = 0; i < awards.Length; i++)
                    awards[i] = reader.ReadULong();

                award = reader.ReadULong();
                given = reader.ReadULong();
                destroyed = reader.ReadULong();
                mode = (LotteryBasketMode)reader.ReadInt();

                if (reader.ReadBool()) {
                    outcome = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                        outcome[p] = reader.ReadUInt();
                }

                uint count = reader.ReadUInt();
                for (uint i = 0; i < count; i++) {
                    int id = reader.ReadInt();
                    uint[] data = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                        data[p] = reader.ReadUInt();
                    RegisteredTicket rt = new RegisteredTicket(id, data);
                    rt.Class = reader.ReadInt();
                    tickets[id] = rt;
                }

                count = reader.ReadUInt();
                for (uint i = 0; i < count; i++) {
                    int id = reader.ReadInt();
                    uint[] data = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                        data[p] = reader.ReadUInt();
                    incoming[id] = new RegisteredTicket(id, data);
                }

		board = reader.ReadItem();
		itemPrize = reader.ReadBool();
                break;

	    case 1:
	        drawing = reader.ReadUInt();

                for (uint i = 0; i < drawingCount.Length; i++)
                    drawingCount[i] = reader.ReadUInt();

                for (uint i = 0; i < jackpot.Length; i++)
                    jackpot[i] = reader.ReadULong();

                for (uint i = 0; i < awards.Length; i++)
                    awards[i] = reader.ReadULong();

		for (uint i = 0; i < winners.Length; i++)
                    winners[i] = reader.ReadInt();

		oldParticipants = reader.ReadUInt();

		award = reader.ReadULong();
                given = reader.ReadULong();
                destroyed = reader.ReadULong();
                mode = (LotteryBasketMode)reader.ReadInt();

                if (reader.ReadBool()) {
                    outcome = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                        outcome[p] = reader.ReadUInt();
                }

                count = reader.ReadUInt();
                for (uint i = 0; i < count; i++) {
                    int id = reader.ReadInt();
                    uint[] data = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
                        data[p] = reader.ReadUInt();
                    RegisteredTicket rt = new RegisteredTicket(id, data);
                    rt.Class = reader.ReadInt();
                    tickets[id] = rt;
                }

                count = reader.ReadUInt();
                for (uint i = 0; i < count; i++) {
                    int id = reader.ReadInt();
                    uint[] data = new uint[LotteryConstants.Picks];
                    for (uint p = 0; p < LotteryConstants.Picks; p++)
		        data[p] = reader.ReadUInt();
                    incoming[id] = new RegisteredTicket(id, data);
                }

		board = reader.ReadItem();
		itemPrize = reader.ReadBool();
	      break;
            }
        }
Example #25
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 1:
            {
                key_KeyVal      = reader.ReadUInt();
                key_Description = reader.ReadString();
                key_Max         = reader.ReadInt();
                key_Delay       = TimeSpan.Parse(reader.ReadString());
                i_Door          = reader.ReadItem();

                goto case 0;
            }

            case 0:
            {
                m_SpawnRange = reader.ReadInt();
                m_WayPoint   = reader.ReadItem() as WayPoint;
                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_CreaturesName = new ArrayList(size);

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

                    m_CreaturesName.Add(typeName);

                    if (SpawnerType.GetType(typeName) == null)
                    {
                        if (m_WarnTimer == null)
                        {
                            m_WarnTimer = new gWarnTimer();
                        }

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

                int count = reader.ReadInt();

                m_Creatures = new ArrayList(count);

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

                    if (e != null)
                    {
                        m_Creatures.Add(e);
                    }
                }

                if (m_Running)
                {
                    DoTimer(ts);
                }

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

			int version = reader.ReadInt();

			switch (version)
			{
				case 7:
					{
						// remove m_TrapOnLockpick
						// see case 6
						goto case 6;
					}
				case 6:
					{
						m_IsShipwreckedItem = reader.ReadBool();
						if (version < 7)
						{
							reader.ReadBool(); // m_TrapOnLockpick
						}
						goto case 5;
					}
				case 5:
					{
						m_AutoReset = reader.ReadBool();
						m_AutoResetTime = reader.ReadTimeSpan();
						if (m_AutoReset == true)
						{
							m_AutoResetTimer = new AutoResetTimer(this, m_AutoResetTime);
							m_AutoResetTimer.Start();
						}
						goto case 4;
					}
				case 4:
					{
						m_RequiredSkill = reader.ReadInt();

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

						goto case 2;
					}
				case 2:
					{
						m_KeyValue = reader.ReadUInt();

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

						goto case 0;
					}
				case 0:
					{
						if (version < 3)
							m_MaxLockLevel = 100;

						if (version < 4)
						{
							if ((m_MaxLockLevel - m_LockLevel) == 40)
							{
								m_RequiredSkill = m_LockLevel + 6;
								m_LockLevel = m_RequiredSkill - 10;
								m_LockLevel = m_RequiredSkill + 39;
							}
							else
							{
								m_RequiredSkill = m_LockLevel;
							}
						}

						m_Locked = reader.ReadBool();

						break;
					}
			}

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

            int version = reader.ReadInt();

            switch ( version )
            {
                case 0:
                {
                    m_KeyValue = reader.ReadUInt();
                    m_Open = reader.ReadBool();
                    m_Locked = reader.ReadBool();
                    m_OpenedID = reader.ReadInt();
                    m_ClosedID = reader.ReadInt();
                    m_OpenedSound = reader.ReadInt();
                    m_ClosedSound = reader.ReadInt();
                    m_Offset = reader.ReadPoint3D();
                    m_Link = reader.ReadItem() as BaseDoor;

                    m_Timer = new InternalTimer( this );

                    if ( m_Open )
                        m_Timer.Start();

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

            int version = reader.ReadInt();

            switch( version )
            {
                case 0:
                    {
                        i_Description = reader.ReadString();
                        i_KeyVal = reader.ReadUInt();
                        i_Uses = reader.ReadInt();
                        i_Max = reader.ReadInt();
                        i_Delay = TimeSpan.Parse( reader.ReadString() );
                        break;
                    }
            }
        }
Example #29
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 8:
            {
                m_PlayerConstructed = reader.ReadBool();
                m_Resource          = (CraftResource)reader.ReadInt();
                m_Quality           = (ItemQuality)reader.ReadInt();

                goto case 7;
            }

            case 7:
            {
                m_Crafter = reader.ReadMobile();

                goto case 6;
            }

            case 6:
            {
                m_IsShipwreckedItem = reader.ReadBool();

                goto case 5;
            }

            case 5:
            {
                m_TrapOnLockpick = reader.ReadBool();

                goto case 4;
            }

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

                goto case 3;
            }

            case 3:
            {
                m_MaxLockLevel = reader.ReadInt();

                goto case 2;
            }

            case 2:
            {
                m_KeyValue = reader.ReadUInt();

                goto case 1;
            }

            case 1:
            {
                m_LockLevel = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                if (version < 3)
                {
                    m_MaxLockLevel = 100;
                }

                if (version < 4)
                {
                    if ((m_MaxLockLevel - m_LockLevel) == 40)
                    {
                        m_RequiredSkill = m_LockLevel + 6;
                        m_LockLevel     = m_RequiredSkill - 10;
                        m_MaxLockLevel  = m_RequiredSkill + 39;
                    }
                    else
                    {
                        m_RequiredSkill = m_LockLevel;
                    }
                }

                m_Locked = reader.ReadBool();

                break;
            }
            }
        }
Example #30
0
        public void Deserialize(GenericReader reader)
        {
            Flag = reader.ReadFlag <DataType>();
            Type = Flag.ToType();

            switch (Flag)
            {
            case DataType.Null:
                Value = null;
                break;

            case DataType.Bool:
                Value = reader.ReadBool();
                break;

            case DataType.Char:
                Value = reader.ReadChar();
                break;

            case DataType.Byte:
                Value = reader.ReadByte();
                break;

            case DataType.SByte:
                Value = reader.ReadSByte();
                break;

            case DataType.Short:
                Value = reader.ReadShort();
                break;

            case DataType.UShort:
                Value = reader.ReadUShort();
                break;

            case DataType.Int:
                Value = reader.ReadInt();
                break;

            case DataType.UInt:
                Value = reader.ReadUInt();
                break;

            case DataType.Long:
                Value = reader.ReadLong();
                break;

            case DataType.ULong:
                Value = reader.ReadULong();
                break;

            case DataType.Float:
                Value = reader.ReadFloat();
                break;

            case DataType.Decimal:
                Value = reader.ReadDecimal();
                break;

            case DataType.Double:
                Value = reader.ReadDouble();
                break;

            case DataType.String:
                Value = reader.ReadString() ?? String.Empty;
                break;

            case DataType.DateTime:
                Value = reader.ReadDateTime();
                break;

            case DataType.TimeSpan:
                Value = reader.ReadTimeSpan();
                break;
            }
        }
Example #31
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 6:
            {
                m_IsShipwreckedItem = reader.ReadBool();

                goto case 5;
            }

            case 5:
            {
                m_TrapOnLockpick = reader.ReadBool();

                goto case 4;
            }

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

                goto case 3;
            }

            case 3:
            {
                m_MaxLockLevel = reader.ReadInt();

                goto case 2;
            }

            case 2:
            {
                m_KeyValue = reader.ReadUInt();

                goto case 1;
            }

            case 1:
            {
                m_LockLevel = reader.ReadInt();

                goto case 0;
            }

            case 0:
            {
                if (version < 3)
                {
                    m_MaxLockLevel = 100;
                }

                if (version < 4)
                {
                    if ((m_MaxLockLevel - m_LockLevel) == 40)
                    {
                        m_RequiredSkill = m_LockLevel + 6;
                        m_LockLevel     = m_RequiredSkill - 10;
                        m_MaxLockLevel  = m_RequiredSkill + 39;
                    }
                    else
                    {
                        m_RequiredSkill = m_LockLevel;
                    }
                }

                m_Locked = reader.ReadBool();

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

            int version = reader.ReadInt();
            // version 0
            this.m_Names = reader.ReadUInt();
            this.m_Values = new int[reader.ReadEncodedInt()];

            for (int i = 0; i < this.m_Values.Length; ++i)
                this.m_Values[i] = reader.ReadEncodedInt();
        }
Example #33
0
        public override void Deserialize( GenericReader reader )
        {
            base.Deserialize( reader );

            int version = reader.ReadInt();

            switch ( version )
            {
                case 6:
                {
                    m_IsShipwreckedItem = reader.ReadBool();

                    goto case 5;
                }
                case 5:
                {
                    m_TrapOnLockpick = reader.ReadBool();

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

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

                    goto case 2;
                }
                case 2:
                {
                    m_KeyValue = reader.ReadUInt();

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

                    goto case 0;
                }
                case 0:
                {
                    if ( version < 3 )
                        m_MaxLockLevel = 100;

                    if ( version < 4 )
                    {
                        if ( (m_MaxLockLevel - m_LockLevel) == 40 )
                        {
                            m_RequiredSkill = m_LockLevel + 6;
                            m_LockLevel = m_RequiredSkill - 10;
                            m_MaxLockLevel = m_RequiredSkill + 39;
                        }
                        else
                        {
                            m_RequiredSkill = m_LockLevel;
                        }
                    }

                    m_Locked = reader.ReadBool();

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

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

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

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

                        goto case 15;
                    }
                case 15: //Maka
                    {
                        m_HouseKeyVal = reader.ReadUInt();
                        goto case 14;
                    }
				case 14:
				{
					m_RelativeBanLocation = reader.ReadPoint3D();
					goto case 13;
				}
				case 13: // removed ban location serialization
				case 12:
				{
					m_VendorRentalContracts = reader.ReadItemList();
					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 )
							m_RelocatedEntities.Add( new RelocatedEntity( entity, relLocation ) );
					}

					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();
					m_LastTraded = reader.ReadDateTime();
					goto case 5;
				}
				case 5: // just removed fields
				case 4:
				{
					m_Addons = reader.ReadItemList();
					goto case 3;
				}
				case 3:
				{
					count = reader.ReadInt();
					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;
							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 ArrayList();
						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;

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

					if ( version < 3 )
					{
						ArrayList items = reader.ReadItemList();
						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;
								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, new TimerCallback( FixLockdowns_Sandbox ) );
			}

			if ( version < 11 )
				m_LastRefreshed = DateTime.Now + 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, new TimerCallback( RestoreRelocatedEntities ) );

				if ( m_Owner == null && m_Friends.Count == 0 && m_CoOwners.Count == 0 )
					Timer.DelayCall( TimeSpan.FromSeconds( 10.0 ), new TimerCallback( Delete ) );
			}
		}