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

			int version = reader.ReadInt();
			m_StoredColorName = reader.ReadString();
			m_StoredColorNamePrefix = reader.ReadString();
			m_StoredColor = (int) reader.ReadShort();
			m_Prepped = reader.ReadBool();
			m_Uses = (int) reader.ReadShort();

			// Handle tubs which have been lightened / darkened and not marked prepped for vice versa
			if( version == 0 )
			{
				Prepped = true;
				for(int i = 0; i < 8; i++ )
					if( StoredColor == m_SpecialColors[i, 0] )
	        			Prepped = false;
			}
		}
Ejemplo n.º 2
0
			public void Deserialize( GenericReader gr )
			{
				place = gr.ReadByte();
				action = (ushort)gr.ReadShort();
				type = gr.ReadByte();
				other = gr.ReadByte();
			}
Ejemplo n.º 3
0
        public void Load(GenericReader sr)
		{
			// Load instancing data

            // version
            short version = sr.ReadShort();

            switch (version)
            {
                case 0:
                    {
                        m_Name = sr.ReadString();
                        m_StartIndex = sr.ReadShort();
                        m_LastIndex = sr.ReadShort();
                        m_CurIndex = sr.ReadShort();
                        m_StartDate = sr.ReadDateTime();
                        m_EndDate = sr.ReadDateTime();
                        m_Serial = (Serial)sr.ReadInt();
                        break;
                    }
            }

            return;
		}
Ejemplo n.º 4
0
        public bool Load(GenericReader sr)
		{
			// Load instancing data

            // version
            short version = sr.ReadShort();

            switch (version)
            {

                case 0:
                {
                    m_Name = sr.ReadString();       // get the name
                    m_Rarity = sr.ReadShort();      // Now grab the rarity level!
                    int numDODs = sr.ReadShort();   // How many DODs does this group link?
			        if( numDODs == 0 )              // are there any to process?
				        return true;

			        // Read them all in
			        for (int ig = 0; ig < numDODs; ig++)
			        {
				        string sDOD = sr.ReadString();
				        // Match the equivalent DOD instances and link
				        for (int ii = 0; ii < RareFactory.DODInst.Count; ii++)
				        {
					        if (RareFactory.DODInst[ii] is DODInstance)
					        {
						        if (((DODInstance)RareFactory.DODInst[ii]).Name == sDOD)
						        {
							        m_DODInst.Add( (DODInstance) RareFactory.DODInst[ii] );
                                    // adam: shouldn't we be breaking here?!!
						        }
					        }
				        }
			        }
                }
                break;
            }

			return true;
		}
Ejemplo n.º 5
0
		public override void Deserialize( GenericReader gr, int ind, bool fake )
		{
			base.Deserialize( gr, ind, true );
			int version = gr.ReadInt();
			id = gr.ReadInt();
			level = (ProfessionLevels)gr.ReadShort();			
		//	castingTime = gr.ReadInt();	
		//	coolDown = gr.ReadInt();	
		}
Ejemplo n.º 6
0
 public virtual void Deserialize( GenericReader gr )
 {
     int version = gr.ReadInt();
     guid = gr.ReadInt64();
     X = gr.ReadFloat();
     Y = gr.ReadFloat();
     Z = gr.ReadFloat();
     Orientation = gr.ReadFloat();
     MapId = (UInt16)gr.ReadShort();
     ZoneId = (int)gr.ReadInt();
     /*	int dec = gr.ReadInt();
         if ( dec == 1 )
             decay = DateTime.Now;*/
 }
Ejemplo n.º 7
0
 public virtual void Deserialize( GenericReader gr, int ind, bool fake )
 {
     int version = gr.ReadInt();
     index = (ushort)ind;
     current = (ushort)gr.ReadShort();
     max = (ushort)gr.ReadShort();
 }
Ejemplo n.º 8
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;
            }
        }
Ejemplo n.º 9
0
		public override void Deserialize( GenericReader gr )
		{
			int version = gr.ReadInt();
			//	id = gr.ReadInt();
			UInt64 g = gr.ReadInt64();				
			SpawnerLink = null;//(BaseSpawner)MobileList.TempSpawner[ g ];

			int esu = 0;
			int ech = 0;
			
			esu = gr.ReadInt();
			ech = gr.ReadInt();
			name = gr.ReadString();
			if ( version > 0 )
				classe = (Classes)gr.ReadInt();
			talent = gr.ReadInt();
			Level = gr.ReadInt();
			model = gr.ReadInt();
			exp = (uint)gr.ReadInt();
			guildId = (uint)gr.ReadInt();
			petLevel = (uint)gr.ReadInt();
			petCreatureFamily = (uint)gr.ReadInt();
			petDisplayId = (uint)gr.ReadInt();
			speed  = gr.ReadFloat();
			size = gr.ReadFloat();					
			faction = (Factions)gr.ReadInt();
			str = gr.ReadInt();
			agility = gr.ReadInt();
			stamina = gr.ReadInt();
			iq = gr.ReadInt();
			spirit = gr.ReadInt();
			baseStr = gr.ReadFloat();
			baseAgility = gr.ReadFloat();
			baseStamina = gr.ReadFloat();
			baseIq = gr.ReadFloat();
			baseSpirit = gr.ReadFloat();
			walkSpeed = gr.ReadFloat();
			if ( walkSpeed == 0 )
				walkSpeed = 4.7777f;
			runSpeed = gr.ReadFloat();
			if ( runSpeed == 0 )
				runSpeed = 7f;
			swimSpeed = gr.ReadFloat();
			if ( swimSpeed == 0 )
				swimSpeed = 4.72f;
			swimBackSpeed = gr.ReadFloat();
			if ( swimBackSpeed == 0 )
				swimBackSpeed = 2.5f;
			hitPoints = gr.ReadInt();
			mana = gr.ReadInt();
			energy = gr.ReadInt();
			rage = gr.ReadInt();
			focus = gr.ReadInt();
			baseHitPoints = gr.ReadInt();
			baseMana = gr.ReadInt();
			baseEnergy = gr.ReadInt();
			baseRage = gr.ReadInt();
			baseFocus = gr.ReadInt();

			block = gr.ReadInt();
			armor = gr.ReadInt();
			resistHoly = gr.ReadInt();
			resistFire = gr.ReadInt();
			resistNature = gr.ReadInt();
			resistFrost = gr.ReadInt();
			resistShadow = gr.ReadInt();
			resistArcane = gr.ReadInt();

			int nSkills = gr.ReadInt();
			for(int t = 0;t < nSkills;t++ )
			{
				ushort skill = (ushort)gr.ReadShort();
				allSkills[ skill ] = Skill.Deserialize( gr, t );
			}

			int nSpells = gr.ReadInt();
			for(int t = 0;t < nSpells;t++ )
			{
				ushort spell = (ushort)gr.ReadShort();
				byte place = gr.ReadByte();
				knownAbilities[ (int)spell ] = (int)place;
				/*	if ( TalentDescription.IsTalent( (int)spell ) )
					{
						if ( onInitialiseTalent[ (int)spell ] != null )
						{
							( onInitialiseTalent[ (int)spell ] as TalentHandlers.TalentHandler )( Abilities.abilities[ (int)spell ], this );
						}
					//	this.AddPermanentAura( Abilities.abilities[ (int)spell ], new Aura() );
					//	permanentAura.Add( spell );
					}*/
			}

			int nTalentList = gr.ReadInt();
			for(int t = 0;t < nTalentList;t++ )
			{
				int spell = gr.ReadInt();
				int lev = gr.ReadInt();
				talentList[ spell ] = (int)lev;
			}
			
			if ( gr.ReadInt() != 0 )
				freeze = true;
			int nit = gr.ReadInt();
			for(int t = 0;t < nit;t++ )
			{
				int n = gr.ReadInt();
				if ( n == 1 )
					items[ t ] = Item.Load( gr );
				else
					items[ t ] = null;
			}
			if ( gr.ReadInt() != 0 )
				movementChange = true;

			manaType = gr.ReadInt();
			professions = gr.ReadByte();
			standState = (StandStates)gr.ReadInt();
			base.Deserialize( gr );
			moveVector = new MoveVector( this, X, Y, Z );
			//	if ( this is BaseSpawner )
			//		MobileList.TempSpawner[ Guid ] = this;
			if ( esu != 0 )
				MobileList.TempSummon[ Guid ] = this;
			if ( ech != 0 )
				MobileList.TempSummon[ Guid ] = this;
			//movementTimer = new MovementTimer( this );
		}
Ejemplo n.º 10
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			short version = reader.ReadShort();

			switch( version )
			{
				case 1 :
					goto case 0;

				case 0 :
					m_Identified = reader.ReadBool();

					string sType =reader.ReadString();
					ItemType = ScriptCompiler.FindTypeByName( sType );

					// iProps
					iProps = new int[4];

					iProps[0] = (int) reader.ReadShort();
					iProps[1] = (int) reader.ReadShort();
					iProps[2] = (int) reader.ReadShort();
					iProps[3] = (int) reader.ReadShort();

					if( version < 1 )
						reader.ReadString(); 				// ID label

					// Approx label
					sApproxLabel = reader.ReadString();

					// Skill stuff
					SkillReq = new int[52];

					iMajorSkill = (int) reader.ReadShort();

					if( version < 1 )
					{
						// Add new lines to name property
						if( m_Identified )
							this.Name = string.Format( "an enchanted {0} scroll\n\n", sApproxLabel);

						// Fix any BlackStaffs or Pitchforks
						if( iMajorSkill == (int) SkillName.Blacksmith && ( ItemType == typeof( BlackStaff ) || ItemType == typeof( Pitchfork ) ) )
							iMajorSkill = (int) SkillName.Tinkering;
					}

					SkillReq[(int) SkillName.Magery] = 80;
					SkillReq[ iMajorSkill ] = 90;

					// Determine skill required :
					if( ItemType.IsSubclassOf(typeof(BaseJewel)) ||
						ItemType.IsSubclassOf(typeof(BaseClothing)) )
						SkillReq[(int) SkillName.ItemID] = 80;
					else
						SkillReq[(int) SkillName.ArmsLore] = 80;

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

            int version = reader.ReadInt();

            switch (version)
            {
            case 8:                     //erl - added to handle packing out of PlayerConstructed property
            {
                goto case 7;
            }

            case 7:                     //erl - added for clothing wear
            {
                m_HitPoints    = reader.ReadShort();
                m_MaxHitPoints = reader.ReadShort();
                goto case 6;
            }

            case 6:                     //Adam - Addition for Scissorable attribute
            {
                m_Scissorable = reader.ReadBool();
                goto case 5;
            }

            case 5:                     //Adam - Addition for Dyable attribute
            {
                m_Dyable = reader.ReadBool();
                goto case 4;
            }

            case 4:                     //Pigpen - Addition for IOB System
            {
                m_IOBAlignment = (IOBAlignment)reader.ReadInt();
                goto case 3;
            }

            case 3:
            {
                m_MagicType    = (MagicEffect)reader.ReadInt();
                m_MagicCharges = reader.ReadInt();
                m_Identified   = reader.ReadBool();
                goto case 2;
            }

            case 2:
            {
                // erl: this is the old PlayerConstructed flag, which will no longer
                // exist for anything over version 7... made obsolete by PlayerCrafted

                if (version < 8)
                {
                    PlayerCrafted = reader.ReadBool();
                }

                goto case 1;
            }

            case 1:
            {
                m_Crafter = reader.ReadMobile();
                m_Quality = (ClothingQuality)reader.ReadInt();
                break;
            }

            case 0:
            {
                m_Crafter = null;
                m_Quality = ClothingQuality.Regular;
                break;
            }
            }

            if (version < 5)                                            // Adam - addition for dye control
            {                                                           // Allow for other non-dyable clothes outside the IOB system
                if (m_IOBAlignment != IOBAlignment.None)
                {
                    m_Dyable = false;
                }
            }

            if (version < 7)
            {
                // erl: this pre-dates hit point additions, so calculate values
                // ..

                // Check the quality of the piece. If it's exceptional or low, we want
                // the piece's hitpoint to reflect this

                int iMax = InitMaxHits;
                int iMin = InitMinHits;

                if (Quality == ClothingQuality.Exceptional)
                {
                    // Add 50% to both

                    iMax = (iMax * 3) / 2;                  // Fixed order of precedence bug
                    iMin = (iMin * 3) / 2;
                }
                else if (Quality == ClothingQuality.Low)
                {
                    // Lose 20% to both

                    iMax = (iMax * 4) / 5;                 // Fixed order of precedence bug
                    iMin = (iMin * 4) / 5;
                }

                m_HitPoints = m_MaxHitPoints = (short)Utility.RandomMinMax(iMin, iMax);
            }

            // adam: To keep players from farming new characters for newbie clothes
            //	we are moving this valuable resource into the hands of crafters.
            if (version <= 7)
            {
                if (Quality == ClothingQuality.Exceptional && MagicCharges == 0)
                {
                    // make exceptional clothes newbied
                    LootType = LootType.Newbied;
                }
                else if (MagicCharges > 0)
                {
                    // erl: explicitly change these pieces so they aren't newbied
                    LootType = LootType.Regular;
                }
            }
        }
Ejemplo n.º 12
0
		public override void Deserialize(GenericReader reader)
		{
			base.Deserialize(reader);
			int version = reader.ReadInt();
			m_Active = reader.ReadBool();
			m_Casino = (Casino)reader.ReadInt();
			m_CasinoName = reader.ReadString();
			m_TotalPlays = reader.ReadULong();
			m_TotalCollected = reader.ReadULong();
			m_TotalWon = reader.ReadULong();
			m_ErrorCode = reader.ReadInt();
			m_OrigHue = reader.ReadInt();

			m_InUseBy = reader.ReadMobile();
			m_OnCredit = reader.ReadInt();
			m_Escrow = reader.ReadInt();

			m_SecurityCamMobile = reader.ReadMobile();
			m_SecurityChatter = (VerboseType)reader.ReadInt();

			m_Bet = reader.ReadInt();
			m_TestMode = reader.ReadBool();

			m_DealerDelay = reader.ReadBool();
			m_DoubleAfterSplit = reader.ReadBool();
			m_DealerHitsSoft17 = reader.ReadBool();
			m_DealerTakesPush = reader.ReadBool();
			m_Resplits = reader.ReadBool();
			m_SplitAces = (SplitAces)reader.ReadInt();
			m_BJSplitAces21 = reader.ReadBool();
			m_BJSplitAcesPaysEven = reader.ReadBool();
			m_DoubleDown = (DoubleDown)reader.ReadInt();
			m_PlayerCardsFaceUp = reader.ReadBool();
			m_DealerCardsFaceUp = reader.ReadBool();
			m_NumberOfDecks = reader.ReadShort();
			m_ContinuousShuffle = reader.ReadBool();
			m_MinBet = (BetValues)reader.ReadInt();
			m_MaxBet = (BetValues)reader.ReadInt();
			m_BlackJackPays = (BlackJackPays)reader.ReadInt();
			m_CardSounds = reader.ReadBool();
			carddeck = new CardDeck(m_NumberOfDecks,0);
			m_BJInfo.HandInfo = new HandStruct[5];
			for (int h = 0; h < 5; h++)
			{
				m_BJInfo.HandInfo[h].bet = 0;
				m_BJInfo.HandInfo[h].totalcards = 0;
				m_BJInfo.HandInfo[h].card = new short[12];
				for (int c = 0; c < 12; c++)
					m_BJInfo.HandInfo[h].card[c] = -1;
				m_BJInfo.HandInfo[h].bestscore = 0;
				m_BJInfo.HandInfo[h].altscore = 0;
			}
		}
Ejemplo n.º 13
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.GetVersion();

            switch (version)
            {
            case 3:
                AllowNoOwner = reader.ReadBool();
                goto case 2;

            case 2:
            case 1:
                Silent = reader.ReadBool();
                goto case 0;

            case 0:
            {
                Usage         = reader.ReadString();
                Token         = reader.ReadString();
                AllowCombat   = reader.ReadBool();
                AllowDeadUser = reader.ReadBool();
                Consumable    = reader.ReadBool();
                ClearHands    = reader.ReadBool();
                DismountUser  = reader.ReadBool();
                EffectID      = reader.ReadInt();
                EffectHue     = reader.ReadInt();
                EffectSpeed   = reader.ReadInt();

                if (version < 2)
                {
                    EffectRender = (EffectRender)reader.ReadShort();
                    TargetFlags  = (TargetFlags)reader.ReadByte();
                }
                else
                {
                    EffectRender = reader.ReadFlag <EffectRender>();
                    TargetFlags  = reader.ReadFlag <TargetFlags>();
                }

                ThrowSound    = reader.ReadInt();
                ImpactSound   = reader.ReadInt();
                ThrowRange    = reader.ReadInt();
                ThrowRecovery = reader.ReadTimeSpan();
                ThrownLast    = reader.ReadDateTime();

                if (version < 2)
                {
                    RequiredSkill = (SkillName)reader.ReadShort();
                }
                else
                {
                    RequiredSkill = reader.ReadFlag <SkillName>();
                }

                RequiredSkillValue = reader.ReadDouble();
            }
            break;
            }
        }
Ejemplo n.º 14
0
		public override void Deserialize( GenericReader gr )
		{
			base.Deserialize( gr );
			int version = gr.ReadInt();
			if ( version > 6 )
			{
				int nreput = gr.ReadInt();
				for(int t = 0;t < nreput;t++ )
				{
					int krep = gr.ReadInt();
					int vrep = gr.ReadInt();
					reputationAdjustments[ krep ] = vrep;
				}
			}
			if ( version > 5 )
			{
				int nact = gr.ReadInt();
				for(int t = 0;t < nact;t++ )
					actionBar.Add( new Action( gr ) );
			}
			if ( version > 4 )
			{
				int nf = gr.ReadInt();
				for(int t = 0;t < nf;t++ )
				{
					UInt64 gu = (UInt64)gr.ReadInt64();
					friends.Add( gu );
					string user = gr.ReadString();
					friends.Add( user );
				}
			}
			if ( version > 2 )
			{
				BindingPointX = gr.ReadFloat();
				BindingPointY = gr.ReadFloat();
				BindingPointZ = gr.ReadFloat();
				BindingPointMapId = (UInt16)gr.ReadInt();
			}
			if ( version > 1 )
			{
				bool pa = gr.ReadBool();
				if ( pa )
				{
					petActions = new int[ 11 ];
					for(int t = 0;t < 11;t++ )
						petActions[ t ] = gr.ReadInt();
				}
			}
			int sum = gr.ReadInt();
			if ( sum != 0 )
			{
				UInt64 g = gr.ReadInt64();
				if ( version > 7 )
				{
					int sid = gr.ReadInt();
					Summon = new BaseCreature( gr );
					Summon.Id = sid;
				}
			//	Summon = (Mobile)MobileList.TempSummon[ g ];
				Summon.SummonedBy = this;					
				( Summon as BaseCreature ).AIEngine = new SummonedAI( this, Summon as BaseCreature );
			}
			sum = gr.ReadInt();
			if ( sum != 0 )
			{
				Charm = (Mobile)MobileList.TempSummon[ gr.ReadInt64() ];
				Charm.CharmedBy = this;
				( Charm as BaseCreature ).AIEngine = new SummonedAI( this, Charm as BaseCreature );
			}
			CorpseLocationX = gr.ReadFloat();
			CorpseLocationY = gr.ReadFloat();
			CorpseLocationZ = gr.ReadFloat();
			if ( version > 3 )
				CorpseMapId = (ushort)gr.ReadShort();
			corpsGuid = gr.ReadInt64();
			zones = new uint[ 32 ];
			for(int t = 0;t < 32;t++ )
				zones[ t ] = (uint)gr.ReadInt();
			int exi = gr.ReadInt();
			if ( exi == 1 )
			{
				mark = new Position( gr.ReadFloat(), gr.ReadFloat(), gr.ReadFloat(), gr.ReadInt() );
			}
			ammoType = gr.ReadInt();
			race = (Races)gr.ReadByte();
			if ( version == 0 )
				Classe = (Classes)gr.ReadByte();
			gender = gr.ReadByte();
			skin = gr.ReadByte();
			face = gr.ReadByte();
			hairStyle = gr.ReadByte();
			hairColour = gr.ReadByte();
			facialHair = gr.ReadByte();

			copper = (uint)gr.ReadInt();
			int nactq = 20;
			for(int t = 0;t < nactq;t++ )
			{
				int vv = gr.ReadInt();
				if ( vv == 1 )
				{
					ActiveQuest aq = new ActiveQuest( gr );
					if ( aq.Id > 0 )
						AddQuest( aq );
				}
			}

			int nq = gr.ReadInt();
			for(int t = 0;t < nq;t++ )
			{
				int id = gr.ReadInt();
				questsDone[ id ] = true;
			}
			for(int g = 0;g < 8;g++ )
			{
				int field = gr.ReadInt();
				TaxiField[ g ] = (uint)field;
			}
		//	RunSpeed = 11f;
			
		}
Ejemplo n.º 15
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			m_TreasureLevel = (TreasureLevel)reader.ReadByte();
			m_MinSpawnTime = reader.ReadShort();
			m_MaxSpawnTime = reader.ReadShort();

			if( !Locked )
				StartResetTimer();
		}
Ejemplo n.º 16
0
		public DesignState( HouseFoundation foundation, GenericReader reader )
		{
			m_Foundation = foundation;

			int version = reader.ReadInt();

			switch( version )
			{
				case 0:
				{
					m_Components = new MultiComponentList( reader );

					int length = reader.ReadInt();

					m_Fixtures = new MultiTileEntry[length];

					for( int i = 0; i < length; ++i )
					{
						m_Fixtures[i].m_ItemID = reader.ReadUShort();
						m_Fixtures[i].m_OffsetX = reader.ReadShort();
						m_Fixtures[i].m_OffsetY = reader.ReadShort();
						m_Fixtures[i].m_OffsetZ = reader.ReadShort();
						m_Fixtures[i].m_Flags = reader.ReadInt();
					}

					m_Revision = reader.ReadInt();

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

            int version = reader.ReadInt();

            switch (version)
            {
            case 5:
            {
                // erl: New "crafted by" and quality properties

                m_Crafter = reader.ReadMobile();
                m_Quality = (JewelQuality)reader.ReadShort();
                goto case 4;
            }

            case 4:
            {
                // remove AOS crap
                // see case 1 below
                goto case 3;
            }

            case 3:
            {
                m_MagicType    = (JewelMagicEffect)reader.ReadInt();
                m_MagicCharges = reader.ReadInt();
                m_Identified   = reader.ReadBool();

                goto case 2;
            }

            case 2:
            {
                m_Resource = (CraftResource)reader.ReadEncodedInt();
                m_GemType  = (GemType)reader.ReadEncodedInt();

                goto case 1;
            }

            case 1:
            {
                // pack these out of furture versions.
                if (version < 4)
                {
                    AosAttributes        dmy_AosAttributes;
                    AosElementAttributes dmy_AosResistances;
                    AosSkillBonuses      dmy_AosSkillBonuses;
                    dmy_AosAttributes   = new AosAttributes(this, reader);
                    dmy_AosResistances  = new AosElementAttributes(this, reader);
                    dmy_AosSkillBonuses = new AosSkillBonuses(this, reader);

                    if (Core.AOS && Parent is Mobile)
                    {
                        dmy_AosSkillBonuses.AddTo((Mobile)Parent);
                    }

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

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

                        string modName = 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();
                }

                break;
            }

            case 0:
            {
                // pack these out of furture versions.
                if (version < 4)
                {
                    AosAttributes        dmy_AosAttributes;
                    AosElementAttributes dmy_AosResistances;
                    AosSkillBonuses      dmy_AosSkillBonuses;
                    dmy_AosAttributes   = new AosAttributes(this);
                    dmy_AosResistances  = new AosElementAttributes(this);
                    dmy_AosSkillBonuses = new AosSkillBonuses(this);
                }

                break;
            }
            }

            if (version < 2)
            {
                m_Resource = CraftResource.Iron;
                m_GemType  = GemType.None;
            }

            if (version < 5)
            {
                m_Quality = JewelQuality.Regular;
            }
        }