Example #1
0
        public BaseArmor(int itemID) :  base(itemID)
        {
            m_Quality    = ArmorQuality.Regular;
            m_Durability = ArmorDurabilityLevel.Regular;
            m_Crafter    = null;

            m_Resource = DefaultResource;
            Hue        = CraftResources.GetHue(m_Resource);

            m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits);

            this.Layer = (Layer)ItemData.Quality;
        }
Example #2
0
        public BaseArmor( int itemID )
            : base(itemID)
        {
            m_Quality = ArmorQuality.Regular;
            m_Durability = ArmorDurabilityLevel.Regular;
            m_Crafter = null;

            m_Resource = DefaultResource;
            Hue = CraftResources.GetHue( m_Resource );

            m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits );

            this.Layer = (Layer)ItemData.Quality;

            m_AosAttributes = new AosAttributes( this );
            m_AosArmorAttributes = new AosArmorAttributes( this );
            m_AosSkillBonuses = new AosSkillBonuses( this );
        }
Example #3
0
        public BaseArmor(int itemID)
            : base(itemID)
        {
            m_Quality = ArmorQuality.Regular;
            m_Durability = ArmorDurabilityLevel.Regular;
            m_Crafter = null;

            m_Resource = DefaultResource;
            Hue = CraftResources.GetHue(m_Resource);

            m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits);

            Layer = (Layer) ItemData.Quality;
        }
Example #4
0
        public BaseArmor(int itemID)
            : base(itemID)
        {
            this.m_Quality = ArmorQuality.Regular;
            this.m_Durability = ArmorDurabilityLevel.Regular;
            this.m_Crafter = null;

            this.m_Resource = this.DefaultResource;
            this.Hue = CraftResources.GetHue(this.m_Resource);

            this.m_HitPoints = this.m_MaxHitPoints = Utility.RandomMinMax(this.InitMinHits, this.InitMaxHits);

            this.Layer = (Layer)this.ItemData.Quality;

            this.m_AosAttributes = new AosAttributes(this);
            this.m_AosArmorAttributes = new AosArmorAttributes(this);
            this.m_AosSkillBonuses = new AosSkillBonuses(this);

            this.m_SAAbsorptionAttributes = new SAAbsorptionAttributes(this);

            #region Mondain's Legacy Sets
            this.m_SetAttributes = new AosAttributes(this);
            this.m_SetSkillBonuses = new AosSkillBonuses(this);
            #endregion
            this.m_AosSkillBonuses = new AosSkillBonuses(this);

            // Mod to randomly add sockets and socketability features to armor. These settings will yield
            // 2% drop rate of socketed/socketable items
            // 0.1% chance of 5 sockets
            // 0.5% of 4 sockets
            // 3% chance of 3 sockets
            // 15% chance of 2 sockets
            // 50% chance of 1 socket
            // the remainder will be 0 socket (31.4% in this case)
            // uncomment the next line to prevent artifacts from being socketed
            // if(ArtifactRarity == 0)
            XmlSockets.ConfigureRandom(this, 2.0, 0.1, 0.5, 3.0, 15.0, 50.0);
        }
Example #5
0
        public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue)
        {
            Type resourceType = typeRes;

            if (resourceType == null)
                resourceType = craftItem.Resources.GetAt(0).ItemType;

            if (!craftItem.ForceNonExceptional)
                this.Resource = CraftResources.GetFromType(resourceType);

            CraftContext context = craftSystem.GetContext(from);

            if (context != null && context.DoNotColor)
                this.Hue = 0;

            if (1 < craftItem.Resources.Count)
            {
                resourceType = craftItem.Resources.GetAt(1).ItemType;

                if (resourceType == typeof(StarSapphire))
                    this.GemType = GemType.StarSapphire;
                else if (resourceType == typeof(Emerald))
                    this.GemType = GemType.Emerald;
                else if (resourceType == typeof(Sapphire))
                    this.GemType = GemType.Sapphire;
                else if (resourceType == typeof(Ruby))
                    this.GemType = GemType.Ruby;
                else if (resourceType == typeof(Citrine))
                    this.GemType = GemType.Citrine;
                else if (resourceType == typeof(Amethyst))
                    this.GemType = GemType.Amethyst;
                else if (resourceType == typeof(Tourmaline))
                    this.GemType = GemType.Tourmaline;
                else if (resourceType == typeof(Amber))
                    this.GemType = GemType.Amber;
                else if (resourceType == typeof(Diamond))
                    this.GemType = GemType.Diamond;
            }

            #region Mondain's Legacy
            this.m_Quality = (ArmorQuality)quality;

            if (makersMark)
                this.m_Crafter = from;
            #endregion

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

			int version = reader.ReadInt();

			switch ( version )
			{
                case 7:
                    {
                        m_SAAbsorptionAttributes = new SAAbsorptionAttributes(this, reader);
                        goto case 6;
                    }
				case 6:
				{
                        if (version == 6)
                            m_SAAbsorptionAttributes = new SAAbsorptionAttributes(this);

					m_MaxHitPoints = reader.ReadEncodedInt();
					m_HitPoints = reader.ReadEncodedInt();

					goto case 5;
				}
				//personal bless deed
				case 5:
				{
					m_BlessedBy = reader.ReadMobile();
					goto case 4;
				}
				#region Mondain's Legacy Sets
				case 4:
				{
					m_LastEquipped = reader.ReadBool();
					m_SetEquipped = reader.ReadBool();
					m_SetHue = reader.ReadEncodedInt();

					m_SetAttributes = new AosAttributes( this, reader );
					m_SetSkillBonuses = new AosSkillBonuses( this, reader );

					goto case 3;
				}
				#endregion
				#region Mondain's Legacy
				case 3:
				{
					m_Crafter = reader.ReadMobile();
					m_Quality = (ArmorQuality) reader.ReadInt();
										
					goto case 2;
				}
				#endregion
				case 2:
				{
					m_Resource = (CraftResource)reader.ReadEncodedInt();
					m_GemType = (GemType)reader.ReadEncodedInt();

					goto case 1;
				}
				case 1:
				{
					m_AosAttributes = new AosAttributes( this, reader );
					m_AosResistances = new AosElementAttributes( this, reader );
					m_AosSkillBonuses = new AosSkillBonuses( this, reader );

					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 ( 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:
				{
					m_AosAttributes = new AosAttributes( this );
					m_AosResistances = new AosElementAttributes( this );
					m_AosSkillBonuses = new AosSkillBonuses( this );

					break;
				}
			}

			#region Mondain's Legacy Sets
			if ( m_SetAttributes == null )
				m_SetAttributes = new AosAttributes( this );

			if ( m_SetSkillBonuses == null )
				m_SetSkillBonuses = new AosSkillBonuses( this );
			#endregion

			if ( version < 2 )
			{
				m_Resource = CraftResource.Iron;
				m_GemType = GemType.None;
			}
		}
Example #7
0
        public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue)
        {
            Type resourceType = typeRes;

            if (resourceType == null)
            {
                resourceType = craftItem.Resources.GetAt(0).ItemType;
            }

            if (!craftItem.ForceNonExceptional)
            {
                this.Resource = CraftResources.GetFromType(resourceType);
            }

            CraftContext context = craftSystem.GetContext(from);

            if (context != null && context.DoNotColor)
            {
                this.Hue = 0;
            }

            if (1 < craftItem.Resources.Count)
            {
                resourceType = craftItem.Resources.GetAt(1).ItemType;

                if (resourceType == typeof(StarSapphire))
                {
                    this.GemType = GemType.StarSapphire;
                }
                else if (resourceType == typeof(Emerald))
                {
                    this.GemType = GemType.Emerald;
                }
                else if (resourceType == typeof(Sapphire))
                {
                    this.GemType = GemType.Sapphire;
                }
                else if (resourceType == typeof(Ruby))
                {
                    this.GemType = GemType.Ruby;
                }
                else if (resourceType == typeof(Citrine))
                {
                    this.GemType = GemType.Citrine;
                }
                else if (resourceType == typeof(Amethyst))
                {
                    this.GemType = GemType.Amethyst;
                }
                else if (resourceType == typeof(Tourmaline))
                {
                    this.GemType = GemType.Tourmaline;
                }
                else if (resourceType == typeof(Amber))
                {
                    this.GemType = GemType.Amber;
                }
                else if (resourceType == typeof(Diamond))
                {
                    this.GemType = GemType.Diamond;
                }
            }

            #region Mondain's Legacy
            this.m_Quality = (ArmorQuality)quality;

            if (makersMark)
            {
                this.m_Crafter = from;
            }
            #endregion

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

            int version = reader.ReadInt();

            switch (version)
            {
            case 0:
            {
                m_BlessedBy = reader.ReadMobile();

                SaveFlag flags = (SaveFlag)reader.ReadEncodedInt();

                if (GetSaveFlag(flags, SaveFlag.Identified))
                {
                    m_Identified = (reader.ReadBool());
                }

                if (GetSaveFlag(flags, SaveFlag.MaxHitPoints))
                {
                    m_MaxHitPoints = reader.ReadEncodedInt();
                }

                if (GetSaveFlag(flags, SaveFlag.HitPoints))
                {
                    m_HitPoints = reader.ReadEncodedInt();
                }

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

                if (GetSaveFlag(flags, SaveFlag.Quality))
                {
                    m_Quality = (ArmorQuality)reader.ReadEncodedInt();
                }
                else
                {
                    m_Quality = ArmorQuality.Regular;
                }

                if (version == 5 && m_Quality == ArmorQuality.Low)
                {
                    m_Quality = ArmorQuality.Regular;
                }

                if (GetSaveFlag(flags, SaveFlag.Durability))
                {
                    m_Durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();

                    if (m_Durability > ArmorDurabilityLevel.Indestructible)
                    {
                        m_Durability = ArmorDurabilityLevel.Durable;
                    }
                }

                if (GetSaveFlag(flags, SaveFlag.Protection))
                {
                    m_Protection = (ArmorProtectionLevel)reader.ReadEncodedInt();

                    if (m_Protection > ArmorProtectionLevel.Invulnerability)
                    {
                        m_Protection = ArmorProtectionLevel.Defense;
                    }
                }

                if (GetSaveFlag(flags, SaveFlag.Resource))
                {
                    m_Resource = (CraftResource)reader.ReadEncodedInt();
                }
                else
                {
                    m_Resource = DefaultResource;
                }

                if (m_Resource == CraftResource.None)
                {
                    m_Resource = DefaultResource;
                }

                if (GetSaveFlag(flags, SaveFlag.BaseArmor))
                {
                    m_ArmorBase = reader.ReadEncodedInt();
                }
                else
                {
                    m_ArmorBase = -1;
                }

                if (GetSaveFlag(flags, SaveFlag.StrBonus))
                {
                    m_StrBonus = reader.ReadEncodedInt();
                }
                else
                {
                    m_StrBonus = -1;
                }

                if (GetSaveFlag(flags, SaveFlag.DexBonus))
                {
                    m_DexBonus = reader.ReadEncodedInt();
                }
                else
                {
                    m_DexBonus = -1;
                }

                if (GetSaveFlag(flags, SaveFlag.IntBonus))
                {
                    m_IntBonus = reader.ReadEncodedInt();
                }
                else
                {
                    m_IntBonus = -1;
                }

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

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

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

                if (GetSaveFlag(flags, SaveFlag.MedAllowance))
                {
                    m_Meditate = (AMA)reader.ReadEncodedInt();
                }
                else
                {
                    m_Meditate = (AMA)(-1);
                }

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

                if (m_ArmorBase == RevertArmorBase)
                {
                    m_ArmorBase = -1;
                }

                if (m_MaxHitPoints == 0 && m_HitPoints == 0)
                {
                    m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits);
                }

                break;
            }
            }

            if (Parent is Mobile)
            {
                ((Mobile)Parent).CheckStatTimers();
            }
        }
Example #9
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 3:
				{
					#region Mondain's Legacy
					m_Crafter = reader.ReadMobile();
					m_Quality = (ArmorQuality) reader.ReadInt();
					#endregion
					
					goto case 2;
				}
				case 2:
				{
					m_Resource = (CraftResource)reader.ReadEncodedInt();
					m_GemType = (GemType)reader.ReadEncodedInt();

					goto case 1;
				}
				case 1:
				{
					m_AosAttributes = new AosAttributes( this, reader );
					m_AosResistances = new AosElementAttributes( this, reader );
					m_AosSkillBonuses = new AosSkillBonuses( this, reader );

					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 ( 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:
				{
					m_AosAttributes = new AosAttributes( this );
					m_AosResistances = new AosElementAttributes( this );
					m_AosSkillBonuses = new AosSkillBonuses( this );

					break;
				}
			}

			if ( version < 2 )
			{
				m_Resource = CraftResource.Iron;
				m_GemType = GemType.None;
			}
		}
Example #10
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            //if (version == 11)
            //version = 12;

            switch (version)
            {
                case 12: m_OldArmor = reader.ReadBool(); goto case 11;
                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.ReadEncodedInt();

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

                        if (GetSaveFlag(flags, SaveFlag.ArmorAttributes))
                            m_AosArmorAttributes = new AosArmorAttributes(this, reader);
                        else
                            m_AosArmorAttributes = new AosArmorAttributes(this);

                        if (GetSaveFlag(flags, SaveFlag.BluntBonus))
                            m_BluntBonus = reader.ReadEncodedInt();

                        if (GetSaveFlag(flags, SaveFlag.SlashingBonus))
                            m_SlashingBonus = reader.ReadEncodedInt();

                        if (GetSaveFlag(flags, SaveFlag.PiercingBonus))
                            m_PiercingBonus = reader.ReadEncodedInt();

                        if (GetSaveFlag(flags, SaveFlag.PhysicalBonus))
                            m_PhysicalBonus = reader.ReadEncodedInt();

                        if (GetSaveFlag(flags, SaveFlag.FireBonus))
                            m_FireBonus = reader.ReadEncodedInt();

                        if (GetSaveFlag(flags, SaveFlag.ColdBonus))
                            m_ColdBonus = reader.ReadEncodedInt();

                        if (GetSaveFlag(flags, SaveFlag.PoisonBonus))
                            m_PoisonBonus = reader.ReadEncodedInt();

                        if (GetSaveFlag(flags, SaveFlag.EnergyBonus))
                            m_EnergyBonus = reader.ReadEncodedInt();

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

                        if (GetSaveFlag(flags, SaveFlag.MaxHitPoints))
                            m_MaxHitPoints = reader.ReadEncodedInt();

                        if (GetSaveFlag(flags, SaveFlag.HitPoints))
                            m_HitPoints = reader.ReadEncodedInt();

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

                        if (GetSaveFlag(flags, SaveFlag.Quality))
                        {
                            m_Quality = (ArmorQuality)reader.ReadEncodedInt();

                        }
                        else
                            m_Quality = ArmorQuality.Regular;

                        if (version == 5 && m_Quality == ArmorQuality.Low)
                            m_Quality = ArmorQuality.Regular;

                        if (GetSaveFlag(flags, SaveFlag.Durability))
                        {
                            m_Durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();

                            if (m_Durability > ArmorDurabilityLevel.Indestructible)
                                m_Durability = ArmorDurabilityLevel.Durable;
                        }

                        if (GetSaveFlag(flags, SaveFlag.Protection))
                        {
                            m_Protection = (ArmorProtectionLevel)reader.ReadEncodedInt();

                            if (m_Protection > ArmorProtectionLevel.Invulnerability)
                                m_Protection = ArmorProtectionLevel.Defense;
                        }

                        if (GetSaveFlag(flags, SaveFlag.Resource))
                            m_Resource = (CraftResource)reader.ReadEncodedInt();
                        else
                            m_Resource = DefaultResource;

                        if (m_Resource == CraftResource.None)
                            m_Resource = DefaultResource;

                        if (GetSaveFlag(flags, SaveFlag.BaseArmor))
                            m_ArmorBase = reader.ReadEncodedInt();
                        else
                            m_ArmorBase = -1;

                        if (GetSaveFlag(flags, SaveFlag.HitsMaxBonus))
                            m_HitsMaxBonus = reader.ReadEncodedInt();
                        else
                            m_HitsMaxBonus = -1;

                        if (GetSaveFlag(flags, SaveFlag.StamMaxBonus))
                            m_StamMaxBonus = reader.ReadEncodedInt();
                        else
                            m_StamMaxBonus = -1;

                        if (GetSaveFlag(flags, SaveFlag.ManaMaxBonus))
                            m_ManaMaxBonus = reader.ReadEncodedInt();
                        else
                            m_ManaMaxBonus = -1;

                        if (GetSaveFlag(flags, SaveFlag.StrBonus))
                            m_StrBonus = reader.ReadEncodedInt();
                        else
                            m_StrBonus = -1;

                        if (GetSaveFlag(flags, SaveFlag.DexBonus))
                            m_DexBonus = reader.ReadEncodedInt();
                        else
                            m_DexBonus = -1;

                        if (GetSaveFlag(flags, SaveFlag.IntBonus))
                            m_IntBonus = reader.ReadEncodedInt();
                        else
                            m_IntBonus = -1;

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

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

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

                        if (GetSaveFlag(flags, SaveFlag.MedAllowance))
                            m_Meditate = (AMA)reader.ReadEncodedInt();
                        else
                            m_Meditate = (AMA)(-1);

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

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

                        break;
                    }
                case 4:
                    {
                        m_AosAttributes = new AosAttributes(this, reader);
                        m_AosArmorAttributes = new AosArmorAttributes(this, reader);
                        goto case 3;
                    }
                case 3:
                    {
                        //m_BluntBonus = reader.ReadInt();
                        // m_SlashingBonus = reader.ReadInt();
                        // m_PiercingBonus = reader.ReadInt();
                        m_PhysicalBonus = reader.ReadInt();
                        m_FireBonus = reader.ReadInt();
                        m_ColdBonus = reader.ReadInt();
                        m_PoisonBonus = reader.ReadInt();
                        m_EnergyBonus = reader.ReadInt();
                        goto case 2;
                    }
                case 2:
                case 1:
                    {
                        m_Identified = reader.ReadBool();
                        goto case 0;
                    }
                case 0:
                    {
                        m_ArmorBase = reader.ReadInt();
                        m_MaxHitPoints = reader.ReadInt();
                        m_HitPoints = reader.ReadInt();
                        m_Crafter = reader.ReadMobile();
                        m_Quality = (ArmorQuality)reader.ReadInt();
                        m_Durability = (ArmorDurabilityLevel)reader.ReadInt();
                        m_Protection = (ArmorProtectionLevel)reader.ReadInt();

                        AMT mat = (AMT)reader.ReadInt();

                        if (m_ArmorBase == RevertArmorBase)
                            m_ArmorBase = -1;

                        /*m_BodyPos = (ArmorBodyType)*/
                        reader.ReadInt();

                        if (version < 4)
                        {
                            m_AosAttributes = new AosAttributes(this);
                            m_AosArmorAttributes = new AosArmorAttributes(this);
                        }

                        if (version < 3 && m_Quality == ArmorQuality.Exceptional)
                            DistributeBonuses(6, 1);

                        if (version >= 2)
                        {
                            m_Resource = (CraftResource)reader.ReadInt();
                        }
                        else
                        {
                            OreInfo info;

                            switch (reader.ReadInt())
                            {
                                default:
                                case 0: info = OreInfo.Iron; break;
                                case 1: info = OreInfo.Copper; break;
                                case 2: info = OreInfo.Bronze; break;
                                case 3: info = OreInfo.Gold; break;
                                case 4: info = OreInfo.Steel; break;
                                case 5: info = OreInfo.Obsidian; break;
                                case 6: info = OreInfo.Tin; break;
                                case 7: info = OreInfo.Starmetal; break;
                            }

                            m_Resource = CraftResources.GetFromOreInfo(info, mat);
                        }

                        m_HitsMaxBonus = reader.ReadInt();
                        m_StamMaxBonus = reader.ReadInt();
                        m_ManaMaxBonus = reader.ReadInt();

                        m_StrBonus = reader.ReadInt();
                        m_DexBonus = reader.ReadInt();
                        m_IntBonus = reader.ReadInt();
                        m_StrReq = reader.ReadInt();
                        m_DexReq = reader.ReadInt();
                        m_IntReq = reader.ReadInt();

                        if (m_HitsMaxBonus == OldHitsMaxBonus)
                            m_HitsMaxBonus = -1;

                        if (m_StamMaxBonus == OldStamMaxBonus)
                            m_StamMaxBonus = -1;

                        if (m_ManaMaxBonus == OldManaMaxBonus)
                            m_ManaMaxBonus = -1;

                        if (m_StrBonus == OldStrBonus)
                            m_StrBonus = -1;

                        if (m_DexBonus == OldDexBonus)
                            m_DexBonus = -1;

                        if (m_IntBonus == OldIntBonus)
                            m_IntBonus = -1;

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

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

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

                        m_Meditate = (AMA)reader.ReadInt();

                        if (m_Meditate == OldMedAllowance)
                            m_Meditate = (AMA)(-1);

                        if (m_Resource == CraftResource.None)
                        {
                            if (mat == ArmorMaterialType.Studded || mat == ArmorMaterialType.Leather)
                                m_Resource = CraftResource.RegularLeather;
                            else if (mat == ArmorMaterialType.Thick)
                                m_Resource = CraftResource.ThickLeather;
                            else if (mat == ArmorMaterialType.Beast)
                                m_Resource = CraftResource.BeastLeather;
                            else if (mat == ArmorMaterialType.Scaled)
                                m_Resource = CraftResource.ScaledLeather;
                            else
                                m_Resource = CraftResource.Iron;
                        }

                        if (m_MaxHitPoints == 0 && m_HitPoints == 0)
                            m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits);

                        break;
                    }
            }

            if (m_AosSkillBonuses == null)
                m_AosSkillBonuses = new AosSkillBonuses(this);

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

            int hitsBonus = ComputeStatBonus(StatType.HitsMax);
            int stamBonus = ComputeStatBonus(StatType.StamMax);
            int manaBonus = ComputeStatBonus(StatType.ManaMax);
            int strBonus = ComputeStatBonus(StatType.Str);
            int dexBonus = ComputeStatBonus(StatType.Dex);
            int intBonus = ComputeStatBonus(StatType.Int);

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

                string modName = Serial.ToString();

                if (hitsBonus != 0)
                    m.AddStatMod(new StatMod(StatType.HitsMax, modName + "Hits", hitsBonus, TimeSpan.Zero));

                if (stamBonus != 0)
                    m.AddStatMod(new StatMod(StatType.StamMax, modName + "Stam", stamBonus, TimeSpan.Zero));

                if (manaBonus != 0)
                    m.AddStatMod(new StatMod(StatType.ManaMax, modName + "Mana", manaBonus, TimeSpan.Zero));

                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 (version < 7)
                m_PlayerConstructed = true; // we don't know, so, assume it's crafted

            if (version < 11 && this.RootParentEntity != null && this.RootParentEntity is Mercenary)
            {
                Mercenary merc = this.RootParentEntity as Mercenary;

                if (this.ArmourType == ArmourWeight.Light)
                    merc.RawDex -= 1;

                else if (this.ArmourType == ArmourWeight.Medium)
                    merc.RawDex -= 2;

                else
                    merc.RawDex -= 3;
            }
        }
Example #11
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

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

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

                if (GetSaveFlag(flags, SaveFlag.MaxHitPoints))
                {
                    m_MaxHitPoints = reader.ReadEncodedInt();
                }

                if (GetSaveFlag(flags, SaveFlag.HitPoints))
                {
                    m_HitPoints = reader.ReadEncodedInt();
                }

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

                if (GetSaveFlag(flags, SaveFlag.Quality))
                {
                    m_Quality = (ArmorQuality)reader.ReadEncodedInt();
                }
                else
                {
                    m_Quality = ArmorQuality.Regular;
                }

                if (version == 5 && m_Quality == ArmorQuality.Low)
                {
                    m_Quality = ArmorQuality.Regular;
                }

                if (GetSaveFlag(flags, SaveFlag.Durability))
                {
                    m_Durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();

                    if (m_Durability > ArmorDurabilityLevel.Indestructible)
                    {
                        m_Durability = ArmorDurabilityLevel.Durable;
                    }
                }

                if (GetSaveFlag(flags, SaveFlag.Protection))
                {
                    m_Protection = (ArmorProtectionLevel)reader.ReadEncodedInt();

                    if (m_Protection > ArmorProtectionLevel.Invulnerability)
                    {
                        m_Protection = ArmorProtectionLevel.Defense;
                    }
                }

                if (GetSaveFlag(flags, SaveFlag.Resource))
                {
                    m_Resource = (CraftResource)reader.ReadEncodedInt();
                }
                else
                {
                    m_Resource = DefaultResource;
                }

                if (m_Resource == CraftResource.None)
                {
                    m_Resource = DefaultResource;
                }

                if (GetSaveFlag(flags, SaveFlag.BaseArmor))
                {
                    m_ArmorBase = reader.ReadEncodedInt();
                }
                else
                {
                    m_ArmorBase = -1;
                }

                if (GetSaveFlag(flags, SaveFlag.StrBonus))
                {
                    m_StrBonus = reader.ReadEncodedInt();
                }
                else
                {
                    m_StrBonus = -1;
                }

                if (GetSaveFlag(flags, SaveFlag.DexBonus))
                {
                    m_DexBonus = reader.ReadEncodedInt();
                }
                else
                {
                    m_DexBonus = -1;
                }

                if (GetSaveFlag(flags, SaveFlag.IntBonus))
                {
                    m_IntBonus = reader.ReadEncodedInt();
                }
                else
                {
                    m_IntBonus = -1;
                }

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

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

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

                if (GetSaveFlag(flags, SaveFlag.MedAllowance))
                {
                    m_Meditate = (AMA)reader.ReadEncodedInt();
                }
                else
                {
                    m_Meditate = (AMA)(-1);
                }

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

                break;
            }

            case 4:
            case 3:
            case 2:
            case 1:
            {
                m_Identified = reader.ReadBool();
                goto case 0;
            }

            case 0:
            {
                m_ArmorBase    = reader.ReadInt();
                m_MaxHitPoints = reader.ReadInt();
                m_HitPoints    = reader.ReadInt();
                m_Crafter      = reader.ReadMobile();
                m_Quality      = (ArmorQuality)reader.ReadInt();
                m_Durability   = (ArmorDurabilityLevel)reader.ReadInt();
                m_Protection   = (ArmorProtectionLevel)reader.ReadInt();

                AMT mat = (AMT)reader.ReadInt();

                if (m_ArmorBase == RevertArmorBase)
                {
                    m_ArmorBase = -1;
                }

                /*m_BodyPos = (ArmorBodyType)*/ reader.ReadInt();

                // if ( version < 3 && m_Quality == ArmorQuality.Exceptional )
                // Add some AR and HP ??

                if (version >= 2)
                {
                    m_Resource = (CraftResource)reader.ReadInt();
                }
                else
                {
                    OreInfo info;

                    switch (reader.ReadInt())
                    {
                    default:
                    case 0: info = OreInfo.Iron; break;

                    case 1: info = OreInfo.DullCopper; break;

                    case 2: info = OreInfo.ShadowIron; break;

                    case 3: info = OreInfo.Copper; break;

                    case 4: info = OreInfo.Bronze; break;

                    case 5: info = OreInfo.Gold; break;

                    case 6: info = OreInfo.Agapite; break;

                    case 7: info = OreInfo.Verite; break;

                    case 8: info = OreInfo.Valorite; break;
                    }

                    m_Resource = CraftResources.GetFromOreInfo(info, mat);
                }

                m_StrBonus = reader.ReadInt();
                m_DexBonus = reader.ReadInt();
                m_IntBonus = reader.ReadInt();
                m_StrReq   = reader.ReadInt();
                m_DexReq   = reader.ReadInt();
                m_IntReq   = reader.ReadInt();

                if (m_StrBonus == OldStrBonus)
                {
                    m_StrBonus = -1;
                }

                if (m_DexBonus == OldDexBonus)
                {
                    m_DexBonus = -1;
                }

                if (m_IntBonus == OldIntBonus)
                {
                    m_IntBonus = -1;
                }

                if (m_StrReq == OldStrReq)
                {
                    m_StrReq = -1;
                }

                if (m_DexReq == OldDexReq)
                {
                    m_DexReq = -1;
                }

                if (m_IntReq == OldIntReq)
                {
                    m_IntReq = -1;
                }

                m_Meditate = (AMA)reader.ReadInt();

                if (m_Meditate == OldMedAllowance)
                {
                    m_Meditate = (AMA)(-1);
                }

                if (m_Resource == CraftResource.None)
                {
                    if (mat == ArmorMaterialType.Studded || mat == ArmorMaterialType.Leather)
                    {
                        m_Resource = CraftResource.RegularLeather;
                    }
                    else if (mat == ArmorMaterialType.Spined)
                    {
                        m_Resource = CraftResource.SpinedLeather;
                    }
                    else if (mat == ArmorMaterialType.Horned)
                    {
                        m_Resource = CraftResource.HornedLeather;
                    }
                    else if (mat == ArmorMaterialType.Barbed)
                    {
                        m_Resource = CraftResource.BarbedLeather;
                    }
                    else
                    {
                        m_Resource = CraftResource.Iron;
                    }
                }

                if (m_MaxHitPoints == 0 && m_HitPoints == 0)
                {
                    m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits);
                }

                break;
            }
            }

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

            if (version < 7)
            {
                m_PlayerConstructed = true;                 // we don't know, so, assume it's crafted
            }
        }
Example #12
0
        public void ChooseArmor(ArmorClass ac, CraftResource res, ArmorQuality qual)
        {
            BaseArmor tete   = null;
            BaseArmor gorget = null;
            BaseArmor bras   = null;
            BaseArmor mains  = null;
            BaseArmor torse  = null;
            BaseArmor jambes = null;

            switch (ac)
            {
            case ArmorClass.Cuir:
                tete   = new LeatherCap();
                gorget = new LeatherGorget();
                bras   = new LeatherArms();
                mains  = new LeatherGloves();
                torse  = new LeatherChest();
                jambes = new LeatherLegs();
                break;

            case ArmorClass.Cloute:
                tete   = new LeatherCap();
                gorget = new StuddedGorget();
                bras   = new StuddedArms();
                mains  = new StuddedGloves();
                torse  = new StuddedChest();
                jambes = new StuddedLegs();
                break;

            case ArmorClass.Os:
                tete   = new BoneHelm();
                gorget = new StuddedGorget();
                bras   = new BoneArms();
                mains  = new BoneGloves();
                torse  = new BoneChest();
                jambes = new BoneLegs();
                break;

            case ArmorClass.Plaque:
                tete   = new PlateHelm();
                gorget = new PlateGorget();
                bras   = new PlateArms();
                mains  = new PlateGloves();
                torse  = new PlateChest();
                jambes = new PlateLegs();
                break;

            case ArmorClass.PlaqueLourde:
                tete   = new ArmureDaedricHelm();
                gorget = new ArmureDaedricGorget();
                bras   = new ArmureDaedricGreaves();
                mains  = new ArmureDaedricGloves();
                torse  = new ArmureDaedricTunic();
                jambes = new ArmureDaedricLeggings();
                break;
            }

            if (tete != null)
            {
                tete.Resource = res;
                tete.Quality  = qual;
                AddItem(tete);
            }
            if (gorget != null)
            {
                gorget.Resource = res;
                gorget.Quality  = qual;
                AddItem(gorget);
            }
            if (bras != null)
            {
                bras.Resource = res;
                bras.Quality  = qual;
                AddItem(bras);
            }
            if (mains != null)
            {
                mains.Resource = res;
                mains.Quality  = qual;
                AddItem(mains);
            }
            if (torse != null)
            {
                torse.Resource = res;
                torse.Quality  = qual;
                AddItem(torse);
            }
            if (jambes != null)
            {
                jambes.Resource = res;
                jambes.Quality  = qual;
                AddItem(jambes);
            }
        }
Example #13
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
			{
				case 9:
				{
					// erl - added to handle packing out of PlayerConstructed property
					goto case 8;
				}
				case 8:
				{
					// removed all AOS attributes
					goto case 7;
				}
				case 7:
				case 6:
				case 5:
				{
					SaveFlag flags = (SaveFlag)reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.IOBAlignment ) )
						m_IOBAlignment = (IOBAlignment)reader.ReadEncodedInt();


					// obsolete AOS attributes from version 8 on
					if (version < 8)
					{
						AosAttributes dmy_AosAttributes;
						AosArmorAttributes dmy_AosArmorAttributes;

						if ( GetSaveFlag( flags, SaveFlag.Attributes ) )
							dmy_AosAttributes = new AosAttributes( this, reader );
						//else
							//dmy_AosAttributes = new AosAttributes( this );

						if ( GetSaveFlag( flags, SaveFlag.ArmorAttributes ) )
							dmy_AosArmorAttributes = new AosArmorAttributes( this, reader );
						//else
							//dmy_AosArmorAttributes = new AosArmorAttributes( this );

						// read and throw away
						int foox;
						if ( GetSaveFlag( flags, SaveFlag.PhysicalBonus ) )
							foox = reader.ReadEncodedInt(); // m_PhysicalBonus

						if ( GetSaveFlag( flags, SaveFlag.FireBonus ) )
							foox = reader.ReadEncodedInt(); // m_FireBonus

						if ( GetSaveFlag( flags, SaveFlag.ColdBonus ) )
							foox = reader.ReadEncodedInt(); // m_ColdBonus

						if ( GetSaveFlag( flags, SaveFlag.PoisonBonus ) )
							foox = reader.ReadEncodedInt(); // m_PoisonBonus

						if ( GetSaveFlag( flags, SaveFlag.EnergyBonus ) )
							foox = reader.ReadEncodedInt(); // m_EnergyBonus
					}

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

					if ( GetSaveFlag( flags, SaveFlag.MaxHitPoints ) )
						m_MaxHitPoints = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.HitPoints ) )
						m_HitPoints = reader.ReadEncodedInt();

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

					if ( GetSaveFlag( flags, SaveFlag.Quality ) )
						m_Quality = (ArmorQuality)reader.ReadEncodedInt();
					else
						m_Quality = ArmorQuality.Regular;

					if ( version == 5 && m_Quality == ArmorQuality.Low )
						m_Quality = ArmorQuality.Regular;

					if ( GetSaveFlag( flags, SaveFlag.Durability ) )
						m_Durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.Protection ) )
						m_Protection = (ArmorProtectionLevel)reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.Resource ) )
						m_Resource = (CraftResource)reader.ReadEncodedInt();
					else
						m_Resource = DefaultResource;

					if ( m_Resource == CraftResource.None )
						m_Resource = DefaultResource;

					if ( GetSaveFlag( flags, SaveFlag.BaseArmor ) )
						m_ArmorBase = reader.ReadEncodedInt();
					else
						m_ArmorBase = -1;

					if ( GetSaveFlag( flags, SaveFlag.StrBonus ) )
						m_StrBonus = reader.ReadEncodedInt();
					else
						m_StrBonus = -1;

					if ( GetSaveFlag( flags, SaveFlag.DexBonus ) )
						m_DexBonus = reader.ReadEncodedInt();
					else
						m_DexBonus = -1;

					if ( GetSaveFlag( flags, SaveFlag.IntBonus ) )
						m_IntBonus = reader.ReadEncodedInt();
					else
						m_IntBonus = -1;

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

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

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

					if ( GetSaveFlag( flags, SaveFlag.MedAllowance ) )
						m_Meditate = (AMA)reader.ReadEncodedInt();
					else
						m_Meditate = (AMA)(-1);

					// obsolete AOS attributes from version 8 on
					if (version < 8)
					{
						AosSkillBonuses dmy_AosSkillBonuses;
						if ( GetSaveFlag( flags, SaveFlag.SkillBonuses ) )
							dmy_AosSkillBonuses = new AosSkillBonuses( this, reader );
					}

					// obsolete PlayerConstructed property from version 9 on
					if (version < 9)
					{
						if ( GetSaveFlag( flags, SaveFlag.PlayerConstructed ) )
							PlayerCrafted = true;
					}

					break;
				}
				case 4:
				{
					// obsolete
					AosAttributes dmy_AosAttributes;
					AosArmorAttributes dmy_AosArmorAttributes;
					dmy_AosAttributes = new AosAttributes( this, reader );
					dmy_AosArmorAttributes = new AosArmorAttributes( this, reader );
					goto case 3;
				}
				case 3:
				{
					int dummy;
					dummy = reader.ReadInt();
					dummy = reader.ReadInt();
					dummy = reader.ReadInt();
					dummy = reader.ReadInt();
					dummy = reader.ReadInt();
					goto case 2;
				}
				case 2:
				case 1:
				{
					m_Identified = reader.ReadBool();
					goto case 0;
				}
				case 0:
				{
					m_ArmorBase = reader.ReadInt();
					m_MaxHitPoints = reader.ReadInt();
					m_HitPoints = reader.ReadInt();
					m_Crafter = reader.ReadMobile();
					m_Quality = (ArmorQuality)reader.ReadInt();
					m_Durability = (ArmorDurabilityLevel)reader.ReadInt();
					m_Protection = (ArmorProtectionLevel)reader.ReadInt();

					AMT mat = (AMT)reader.ReadInt();

					if ( m_ArmorBase == RevertArmorBase )
						m_ArmorBase = -1;

					/*m_BodyPos = (ArmorBodyType)*/reader.ReadInt();

					if ( version < 4 )
					{
						// Adam: (Leave for Adam to remove)
						//m_AosAttributes = new AosAttributes( this );
						//m_AosArmorAttributes = new AosArmorAttributes( this );
					}

					if ( version < 3 && m_Quality == ArmorQuality.Exceptional )
						DistributeBonuses( 6 );

					if ( version >= 2 )
					{
						m_Resource = (CraftResource)reader.ReadInt();
					}
					else
					{
						OreInfo info;

						switch ( reader.ReadInt() )
						{
							default:
							case 0: info = OreInfo.Iron; break;
							case 1: info = OreInfo.DullCopper; break;
							case 2: info = OreInfo.ShadowIron; break;
							case 3: info = OreInfo.Copper; break;
							case 4: info = OreInfo.Bronze; break;
							case 5: info = OreInfo.Gold; break;
							case 6: info = OreInfo.Agapite; break;
							case 7: info = OreInfo.Verite; break;
							case 8: info = OreInfo.Valorite; break;
						}

						m_Resource = CraftResources.GetFromOreInfo( info, mat );
					}

					m_StrBonus = reader.ReadInt();
					m_DexBonus = reader.ReadInt();
					m_IntBonus = reader.ReadInt();
					m_StrReq = reader.ReadInt();
					m_DexReq = reader.ReadInt();
					m_IntReq = reader.ReadInt();

					if ( m_StrBonus == OldStrBonus )
						m_StrBonus = -1;

					if ( m_DexBonus == OldDexBonus )
						m_DexBonus = -1;

					if ( m_IntBonus == OldIntBonus )
						m_IntBonus = -1;

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

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

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

					m_Meditate = (AMA)reader.ReadInt();

					if ( m_Meditate == OldMedAllowance )
						m_Meditate = (AMA)(-1);

					if ( m_Resource == CraftResource.None )
					{
						if ( mat == ArmorMaterialType.Studded || mat == ArmorMaterialType.Leather )
							m_Resource = CraftResource.RegularLeather;
						else if ( mat == ArmorMaterialType.Spined )
							m_Resource = CraftResource.SpinedLeather;
						else if ( mat == ArmorMaterialType.Horned )
							m_Resource = CraftResource.HornedLeather;
						else if ( mat == ArmorMaterialType.Barbed )
							m_Resource = CraftResource.BarbedLeather;
						else
							m_Resource = CraftResource.Iron;
					}

					if ( m_MaxHitPoints == 0 && m_HitPoints == 0 )
						m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits );

					break;
				}
			}

			//if ( m_AosSkillBonuses == null )
				//m_AosSkillBonuses = new AosSkillBonuses( this );
/*
			if ( Core.AOS && Parent is Mobile )
				m_AosSkillBonuses.AddTo( (Mobile)Parent );
*/
			if (Parent is Mobile)
			{
				((Mobile)Parent).StatChange += new StatChangeHandler(ApplyStatBonuses);
				ApplyStatBonuses(Parent as Mobile, StatType.All);
			}

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


// erl: PlayerConstructed is now obsolete, replaced with PlayerCrafted at item level
// ..
//			if ( version < 7 )
//				m_PlayerConstructed = true; // we don't know, so, assume it's crafted
// ..

		}
Example #14
0
		public BaseArmor( int itemID ) :  base( itemID )
		{
			m_Quality = ArmorQuality.Regular;
			m_Durability = ArmorDurabilityLevel.Regular;
			m_Crafter = null;
			m_IOBAlignment = IOBAlignment.None; //Pigpen - Addition for IOB System

			m_Resource = DefaultResource;
			Hue = CraftResources.GetHue( m_Resource );

			m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits );

			this.Layer = (Layer)ItemData.Quality;

			// Adam: obsolete
			//m_AosAttributes = new AosAttributes( this );
			//m_AosArmorAttributes = new AosArmorAttributes( this );
			//m_AosSkillBonuses = new AosSkillBonuses( this );
		}
Example #15
0
	protected Armor(Armor other) :base(other)
	{
		this.Category = other.Category;
		this.ArmorValue = other.ArmorValue;
		this.DefenseValue = other.DefenseValue;
	}
Example #16
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

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

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

					if ( GetSaveFlag( flags, SaveFlag.MaxHitPoints ) )
						m_MaxHitPoints = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.HitPoints ) )
						m_HitPoints = reader.ReadEncodedInt();

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

					if ( GetSaveFlag( flags, SaveFlag.Quality ) )
						m_Quality = (ArmorQuality)reader.ReadEncodedInt();
					else
						m_Quality = ArmorQuality.Regular;

					if ( version == 5 && m_Quality == ArmorQuality.Low )
						m_Quality = ArmorQuality.Regular;

					if ( GetSaveFlag( flags, SaveFlag.Durability ) )
					{
						m_Durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();

						if ( m_Durability > ArmorDurabilityLevel.Indestructible )
							m_Durability = ArmorDurabilityLevel.Durable;
					}

					if ( GetSaveFlag( flags, SaveFlag.Protection ) )
					{
						m_Protection = (ArmorProtectionLevel)reader.ReadEncodedInt();

						if ( m_Protection > ArmorProtectionLevel.Invulnerability )
							m_Protection = ArmorProtectionLevel.Defense;
					}

					if ( GetSaveFlag( flags, SaveFlag.Resource ) )
						m_Resource = (CraftResource)reader.ReadEncodedInt();
					else
						m_Resource = DefaultResource;

					if ( m_Resource == CraftResource.None )
						m_Resource = DefaultResource;

					if ( GetSaveFlag( flags, SaveFlag.BaseArmor ) )
						m_ArmorBase = reader.ReadEncodedInt();
					else
						m_ArmorBase = -1;

					if ( GetSaveFlag( flags, SaveFlag.StrBonus ) )
						m_StrBonus = reader.ReadEncodedInt();
					else
						m_StrBonus = -1;

					if ( GetSaveFlag( flags, SaveFlag.DexBonus ) )
						m_DexBonus = reader.ReadEncodedInt();
					else
						m_DexBonus = -1;

					if ( GetSaveFlag( flags, SaveFlag.IntBonus ) )
						m_IntBonus = reader.ReadEncodedInt();
					else
						m_IntBonus = -1;

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

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

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

					if ( GetSaveFlag( flags, SaveFlag.MedAllowance ) )
						m_Meditate = (AMA)reader.ReadEncodedInt();
					else
						m_Meditate = (AMA)(-1);

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

					break;
				}
				case 4:
				case 3:
				case 2:
				case 1:
				{
					m_Identified = reader.ReadBool();
					goto case 0;
				}
				case 0:
				{
					m_ArmorBase = reader.ReadInt();
					m_MaxHitPoints = reader.ReadInt();
					m_HitPoints = reader.ReadInt();
					m_Crafter = reader.ReadMobile();
					m_Quality = (ArmorQuality)reader.ReadInt();
					m_Durability = (ArmorDurabilityLevel)reader.ReadInt();
					m_Protection = (ArmorProtectionLevel)reader.ReadInt();

					AMT mat = (AMT)reader.ReadInt();

					if ( m_ArmorBase == RevertArmorBase )
						m_ArmorBase = -1;

					/*m_BodyPos = (ArmorBodyType)*/reader.ReadInt();

					// if ( version < 3 && m_Quality == ArmorQuality.Exceptional )
						// Add some AR and HP ??

					if ( version >= 2 )
					{
						m_Resource = (CraftResource)reader.ReadInt();
					}
					else
					{
						OreInfo info;

						switch ( reader.ReadInt() )
						{
							default:
							case 0: info = OreInfo.Iron; break;
							case 1: info = OreInfo.DullCopper; break;
							case 2: info = OreInfo.ShadowIron; break;
							case 3: info = OreInfo.Copper; break;
							case 4: info = OreInfo.Bronze; break;
							case 5: info = OreInfo.Gold; break;
							case 6: info = OreInfo.Agapite; break;
							case 7: info = OreInfo.Verite; break;
							case 8: info = OreInfo.Valorite; break;
						}

						m_Resource = CraftResources.GetFromOreInfo( info, mat );
					}

					m_StrBonus = reader.ReadInt();
					m_DexBonus = reader.ReadInt();
					m_IntBonus = reader.ReadInt();
					m_StrReq = reader.ReadInt();
					m_DexReq = reader.ReadInt();
					m_IntReq = reader.ReadInt();

					if ( m_StrBonus == OldStrBonus )
						m_StrBonus = -1;

					if ( m_DexBonus == OldDexBonus )
						m_DexBonus = -1;

					if ( m_IntBonus == OldIntBonus )
						m_IntBonus = -1;

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

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

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

					m_Meditate = (AMA)reader.ReadInt();

					if ( m_Meditate == OldMedAllowance )
						m_Meditate = (AMA)(-1);

					if ( m_Resource == CraftResource.None )
					{
						if ( mat == ArmorMaterialType.Studded || mat == ArmorMaterialType.Leather )
							m_Resource = CraftResource.RegularLeather;
						else if ( mat == ArmorMaterialType.Spined )
							m_Resource = CraftResource.SpinedLeather;
						else if ( mat == ArmorMaterialType.Horned )
							m_Resource = CraftResource.HornedLeather;
						else if ( mat == ArmorMaterialType.Barbed )
							m_Resource = CraftResource.BarbedLeather;
						else
							m_Resource = CraftResource.Iron;
					}

					if ( m_MaxHitPoints == 0 && m_HitPoints == 0 )
						m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits );

					break;
				}
			}

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

			if ( version < 7 )
				m_PlayerConstructed = true; // we don't know, so, assume it's crafted
		}
Example #17
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

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

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

                if (GetSaveFlag(flags, SaveFlag.MaxHitPoints))
                {
                    m_MaxHitPoints = reader.ReadEncodedInt();
                }

                if (GetSaveFlag(flags, SaveFlag.HitPoints))
                {
                    m_HitPoints = reader.ReadEncodedInt();
                }

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

                if (GetSaveFlag(flags, SaveFlag.Quality))
                {
                    m_Quality = (ArmorQuality)reader.ReadEncodedInt();
                }
                else
                {
                    m_Quality = ArmorQuality.Regular;
                }

                if (version == 5 && m_Quality == ArmorQuality.Low)
                {
                    m_Quality = ArmorQuality.Regular;
                }

                if (GetSaveFlag(flags, SaveFlag.Durability))
                {
                    m_Durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();

                    if (m_Durability > ArmorDurabilityLevel.Indestructible)
                    {
                        m_Durability = ArmorDurabilityLevel.Durable;
                    }
                }

                if (GetSaveFlag(flags, SaveFlag.Protection))
                {
                    m_Protection = (ArmorProtectionLevel)reader.ReadEncodedInt();

                    if (m_Protection > ArmorProtectionLevel.Invulnerability)
                    {
                        m_Protection = ArmorProtectionLevel.Defense;
                    }
                }

                if (GetSaveFlag(flags, SaveFlag.Resource))
                {
                    m_Resource = (CraftResource)reader.ReadEncodedInt();
                }
                else
                {
                    m_Resource = DefaultResource;
                }

                if (m_Resource == CraftResource.None)
                {
                    m_Resource = DefaultResource;
                }

                if (GetSaveFlag(flags, SaveFlag.BaseArmor))
                {
                    m_ArmorBase = reader.ReadEncodedInt();
                }
                else
                {
                    m_ArmorBase = -1;
                }

                if (GetSaveFlag(flags, SaveFlag.StrBonus))
                {
                    m_StrBonus = reader.ReadEncodedInt();
                }
                else
                {
                    m_StrBonus = -1;
                }

                if (GetSaveFlag(flags, SaveFlag.DexBonus))
                {
                    m_DexBonus = reader.ReadEncodedInt();
                }
                else
                {
                    m_DexBonus = -1;
                }

                if (GetSaveFlag(flags, SaveFlag.IntBonus))
                {
                    m_IntBonus = reader.ReadEncodedInt();
                }
                else
                {
                    m_IntBonus = -1;
                }

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

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

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

                if (GetSaveFlag(flags, SaveFlag.MedAllowance))
                {
                    m_Meditate = (AMA)reader.ReadEncodedInt();
                }
                else
                {
                    m_Meditate = (AMA)(-1);
                }

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

                break;
            }

            case 4:
            case 3:
            case 2:
            case 1:
            {
                m_Identified = reader.ReadBool();
                goto case 0;
            }

            case 0:
            {
                m_ArmorBase    = reader.ReadInt();
                m_MaxHitPoints = reader.ReadInt();
                m_HitPoints    = reader.ReadInt();
                m_Crafter      = reader.ReadMobile();
                m_Quality      = (ArmorQuality)reader.ReadInt();
                m_Durability   = (ArmorDurabilityLevel)reader.ReadInt();
                m_Protection   = (ArmorProtectionLevel)reader.ReadInt();

                AMT mat = (AMT)reader.ReadInt();

                if (m_ArmorBase == RevertArmorBase)
                {
                    m_ArmorBase = -1;
                }

                if (version >= 2)
                {
                    m_Resource = (CraftResource)reader.ReadInt();
                }
                else
                {
                    OreInfo info;

                    switch (reader.ReadInt())
                    {
                    default:
                    case 0: info = OreInfo.Iron; break;

                    case 1: info = OreInfo.DullCopper; break;

                    case 2: info = OreInfo.ShadowIron; break;

                    case 3: info = OreInfo.Copper; break;

                    case 4: info = OreInfo.Bronze; break;

                    case 5: info = OreInfo.Gold; break;

                    case 6: info = OreInfo.Agapite; break;

                    case 7: info = OreInfo.Verite; break;

                    case 8: info = OreInfo.Valorite; break;
                    }

                    m_Resource = CraftResources.GetFromOreInfo(info, mat);
                }

                m_StrBonus = reader.ReadInt();
                m_DexBonus = reader.ReadInt();
                m_IntBonus = reader.ReadInt();
                m_StrReq   = reader.ReadInt();
                m_DexReq   = reader.ReadInt();
                m_IntReq   = reader.ReadInt();

                if (m_StrBonus == OldStrBonus)
                {
                    m_StrBonus = -1;
                }

                if (m_DexBonus == OldDexBonus)
                {
                    m_DexBonus = -1;
                }

                if (m_IntBonus == OldIntBonus)
                {
                    m_IntBonus = -1;
                }

                if (m_StrReq == OldStrReq)
                {
                    m_StrReq = -1;
                }

                if (m_DexReq == OldDexReq)
                {
                    m_DexReq = -1;
                }

                if (m_IntReq == OldIntReq)
                {
                    m_IntReq = -1;
                }

                m_Meditate = (AMA)reader.ReadInt();

                if (m_Meditate == OldMedAllowance)
                {
                    m_Meditate = (AMA)(-1);
                }

                if (m_Resource == CraftResource.None)
                {
                    if (mat == ArmorMaterialType.Studded || mat == ArmorMaterialType.Leather)
                    {
                        m_Resource = CraftResource.RegularLeather;
                    }
                    else
                    {
                        m_Resource = CraftResource.Iron;
                    }
                }

                if (m_MaxHitPoints == 0 && m_HitPoints == 0)
                {
                    m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits);
                }

                break;
            }
            }

            int strBonus = ComputeStatBonus(StatType.Str);
            int dexBonus = ComputeStatBonus(StatType.Dex);
            int intBonus = ComputeStatBonus(StatType.Int);

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

            if (version < 7)
            {
                m_PlayerConstructed = true;                 // we don't know, so, assume it's crafted
            }
        }
Example #18
0
        public BaseArmor(int itemID)
            : base(itemID)
        {
            m_Quality = ArmorQuality.Regular;
            m_Durability = ArmorDurabilityLevel.Regular;
            m_Crafter = null;

            m_Resource = DefaultResource;
            Hue = CraftResources.GetHue(m_Resource);

            m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits);

            this.Layer = (Layer)ItemData.Quality;

            m_AosAttributes = new AosAttributes(this);
            m_AosArmorAttributes = new AosArmorAttributes(this);
            m_AosSkillBonuses = new AosSkillBonuses(this);

            if ((this is WoodenShield || this is LeatherShield || this is BoiledLeatherShield) && this.Resource == CraftResource.Iron)
                this.Resource = CraftResource.Oak;

            else if (this.Resource == CraftResource.Iron)
            {
                this.Resource = CraftResource.Copper;
                this.Hue = 0x96D;
            }

            if (this is IBoneArmour)
            {
                this.Hue = 0;
            }
        }
Example #19
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 7:
            {
                m_SAAbsorptionAttributes = new SAAbsorptionAttributes(this, reader);
                goto case 6;
            }

            case 6:
            {
                if (version == 6)
                {
                    m_SAAbsorptionAttributes = new SAAbsorptionAttributes(this);
                }

                m_MaxHitPoints = reader.ReadEncodedInt();
                m_HitPoints    = reader.ReadEncodedInt();

                goto case 5;
            }

            //personal bless deed
            case 5:
            {
                m_BlessedBy = reader.ReadMobile();
                goto case 4;
            }

                #region Mondain's Legacy Sets
            case 4:
            {
                m_LastEquipped = reader.ReadBool();
                m_SetEquipped  = reader.ReadBool();
                m_SetHue       = reader.ReadEncodedInt();

                m_SetAttributes   = new AosAttributes(this, reader);
                m_SetSkillBonuses = new AosSkillBonuses(this, reader);

                goto case 3;
            }

                #endregion
                #region Mondain's Legacy
            case 3:
            {
                m_Crafter = reader.ReadMobile();
                m_Quality = (ArmorQuality)reader.ReadInt();

                goto case 2;
            }

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

                goto case 1;
            }

            case 1:
            {
                m_AosAttributes   = new AosAttributes(this, reader);
                m_AosResistances  = new AosElementAttributes(this, reader);
                m_AosSkillBonuses = new AosSkillBonuses(this, reader);

                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 (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:
            {
                m_AosAttributes   = new AosAttributes(this);
                m_AosResistances  = new AosElementAttributes(this);
                m_AosSkillBonuses = new AosSkillBonuses(this);

                break;
            }
            }

            #region Mondain's Legacy Sets
            if (m_SetAttributes == null)
            {
                m_SetAttributes = new AosAttributes(this);
            }

            if (m_SetSkillBonuses == null)
            {
                m_SetSkillBonuses = new AosSkillBonuses(this);
            }
            #endregion

            if (version < 2)
            {
                m_Resource = CraftResource.Iron;
                m_GemType  = GemType.None;
            }
        }
Example #20
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            SaveFlag flags = (SaveFlag)reader.ReadEncodedInt();

            if (GetSaveFlag(flags, SaveFlag.PhysicalBonus))
            {
                m_PhysicalBonus = reader.ReadEncodedInt();
            }

            if (GetSaveFlag(flags, SaveFlag.MagieBonus))
            {
                m_MagieBonus = reader.ReadEncodedInt();
            }

            if (GetSaveFlag(flags, SaveFlag.MaxDurability))
            {
                m_MaxDurability = reader.ReadEncodedInt();
            }

            if (GetSaveFlag(flags, SaveFlag.Durability))
            {
                m_Durability = reader.ReadEncodedInt();
            }

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

            if (GetSaveFlag(flags, SaveFlag.Quality))
            {
                m_Quality = (ArmorQuality)reader.ReadEncodedInt();
            }
            else
            {
                m_Quality = ArmorQuality.Regular;
            }

            if (GetSaveFlag(flags, SaveFlag.Resource))
            {
                m_Resource = (CraftResource)reader.ReadEncodedInt();
            }
            else
            {
                m_Resource = DefaultResource;
            }

            if (m_Resource == CraftResource.None)
            {
                m_Resource = DefaultResource;
            }

            if (GetSaveFlag(flags, SaveFlag.StrBonus))
            {
                m_StrBonus = reader.ReadEncodedInt();
            }
            else
            {
                m_StrBonus = -1;
            }

            if (GetSaveFlag(flags, SaveFlag.DexBonus))
            {
                m_DexBonus = reader.ReadEncodedInt();
            }
            else
            {
                m_DexBonus = -1;
            }

            if (GetSaveFlag(flags, SaveFlag.IntBonus))
            {
                m_IntBonus = reader.ReadEncodedInt();
            }
            else
            {
                m_IntBonus = -1;
            }

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

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

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

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

            int strBonus = ComputeStatBonus(StatType.Str);
            int dexBonus = ComputeStatBonus(StatType.Dex);
            int intBonus = ComputeStatBonus(StatType.Int);

            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();
            }
        }
Example #21
0
		public BaseArmor( int itemID ) :  base( itemID )
		{
			m_Quality = ArmorQuality.Regular;
			m_Durability = ArmorDurabilityLevel.Regular;
			m_Crafter = null;

			m_Resource = DefaultResource;
			Hue = CraftResources.GetHue( m_Resource );

			m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits );

			this.Layer = (Layer)ItemData.Quality;

			m_AosAttributes = new AosAttributes( this );
			m_AosArmorAttributes = new AosArmorAttributes( this );
			m_AosSkillBonuses = new AosSkillBonuses( this );
			
			m_SAAbsorptionAttributes = new SAAbsorptionAttributes( this );

			#region Mondain's Legacy Sets
			m_SetAttributes = new AosAttributes( this );
			m_SetSkillBonuses = new AosSkillBonuses( this );
			#endregion

			ItemValue = GearScore.GetItemValue( this );
		}
Example #22
0
		public BaseArmor( int itemID ) :  base( itemID )
		{
			m_Quality = ArmorQuality.Regular;
			m_Durability = ArmorDurabilityLevel.Regular;
			m_Crafter = null;

			m_Resource = DefaultResource;
			Hue = CraftResources.GetHue( m_Resource );

			m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits );

			this.Layer = (Layer)ItemData.Quality;

			m_AosAttributes = new AosAttributes( this );
			m_AosArmorAttributes = new AosArmorAttributes( this );
			m_AosSkillBonuses = new AosSkillBonuses( this );
			
			#region GeNova: Mondain's Legacy
			m_SetAttributes = new AosAttributes( this );
			m_SetArmorAttributes = new AosArmorAttributes( this );
			m_SetSkillBonuses = new AosSkillBonuses( this );
			
			m_LastEquipped = false;
			#endregion
		}
Example #23
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 6:
            {
                m_NegativeAttributes = new NegativeAttributes(this, reader);
                goto case 5;
            }

            case 5:
            {
                #region Runic Reforging
                m_ReforgedPrefix = (ReforgedPrefix)reader.ReadInt();
                m_ReforgedSuffix = (ReforgedSuffix)reader.ReadInt();
                m_ItemPower      = (ItemPower)reader.ReadInt();
                m_BlockRepair    = reader.ReadBool();
                #endregion

                #region Stygian Abyss
                m_GorgonLenseCharges = reader.ReadInt();
                m_GorgonLenseType    = (LenseType)reader.ReadInt();
                goto case 4;
            }

            case 4:
            {
                this.m_TimesImbued            = reader.ReadEncodedInt();
                this.m_SAAbsorptionAttributes = new SAAbsorptionAttributes(this, reader);
                #endregion

                this.m_BlessedBy    = reader.ReadMobile();
                this.m_LastEquipped = reader.ReadBool();
                this.m_SetEquipped  = reader.ReadBool();
                this.m_SetHue       = reader.ReadEncodedInt();

                this.m_SetAttributes   = new AosAttributes(this, reader);
                this.m_SetSkillBonuses = new AosSkillBonuses(this, reader);

                this.m_Crafter = reader.ReadMobile();
                this.m_Quality = (ArmorQuality)reader.ReadInt();
                goto case 3;
            }

            case 3:
            {
                this.m_MaxHitPoints = reader.ReadEncodedInt();
                this.m_HitPoints    = reader.ReadEncodedInt();

                goto case 2;
            }

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

                goto case 1;
            }

            case 1:
            {
                this.m_AosAttributes   = new AosAttributes(this, reader);
                this.m_AosResistances  = new AosElementAttributes(this, reader);
                this.m_AosSkillBonuses = new AosSkillBonuses(this, reader);

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

                int strBonus = this.m_AosAttributes.BonusStr;
                int dexBonus = this.m_AosAttributes.BonusDex;
                int intBonus = this.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 (this.Parent is Mobile)
                {
                    ((Mobile)this.Parent).CheckStatTimers();
                }

                break;
            }

            case 0:
            {
                this.m_AosAttributes   = new AosAttributes(this);
                this.m_AosResistances  = new AosElementAttributes(this);
                this.m_AosSkillBonuses = new AosSkillBonuses(this);

                break;
            }
            }

            if (m_NegativeAttributes == null)
            {
                m_NegativeAttributes = new NegativeAttributes(this);
            }

            #region Mondain's Legacy Sets
            if (this.m_SetAttributes == null)
            {
                this.m_SetAttributes = new AosAttributes(this);
            }

            if (this.m_SetSkillBonuses == null)
            {
                this.m_SetSkillBonuses = new AosSkillBonuses(this);
            }
            #endregion

            if (version < 2)
            {
                this.m_Resource = CraftResource.Iron;
                this.m_GemType  = GemType.None;
            }
        }
        public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue)
        {
            Type resourceType = typeRes;

            if (resourceType == null)
            {
                resourceType = craftItem.Resources.GetAt(0).ItemType;
            }

            if (!craftItem.ForceNonExceptional)
            {
                this.Resource = CraftResources.GetFromType(resourceType);
            }

            CraftContext context = craftSystem.GetContext(from);

            if (context != null && context.DoNotColor)
            {
                this.Hue = 0;
            }

            //daat99 OWLTR start - runic jewels
            if (Core.AOS && tool is BaseRunicTool && OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.RECIPE_CRAFT))
            {
                ((BaseRunicTool)tool).ApplyAttributesTo(this);
            }
            //daat99 OWLTR end - reunic jewels

            if (1 < craftItem.Resources.Count)
            {
                resourceType = craftItem.Resources.GetAt(1).ItemType;

                if (resourceType == typeof(StarSapphire))
                {
                    this.GemType = GemType.StarSapphire;
                }
                else if (resourceType == typeof(Emerald))
                {
                    this.GemType = GemType.Emerald;
                }
                else if (resourceType == typeof(Sapphire))
                {
                    this.GemType = GemType.Sapphire;
                }
                else if (resourceType == typeof(Ruby))
                {
                    this.GemType = GemType.Ruby;
                }
                else if (resourceType == typeof(Citrine))
                {
                    this.GemType = GemType.Citrine;
                }
                else if (resourceType == typeof(Amethyst))
                {
                    this.GemType = GemType.Amethyst;
                }
                else if (resourceType == typeof(Tourmaline))
                {
                    this.GemType = GemType.Tourmaline;
                }
                else if (resourceType == typeof(Amber))
                {
                    this.GemType = GemType.Amber;
                }
                else if (resourceType == typeof(Diamond))
                {
                    this.GemType = GemType.Diamond;
                }
            }

            #region Mondain's Legacy
            this.m_Quality = (ArmorQuality)quality;

            if (makersMark)
            {
                this.m_Crafter = from;
            }
            #endregion

            return(1);
        }
Example #25
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.ReadEncodedInt();

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

					if ( GetSaveFlag( flags, SaveFlag.ArmorAttributes ) )
						m_AosArmorAttributes = new AosArmorAttributes( this, reader );
					else
						m_AosArmorAttributes = new AosArmorAttributes( this );

					if ( GetSaveFlag( flags, SaveFlag.PhysicalBonus ) )
						m_PhysicalBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.FireBonus ) )
						m_FireBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.ColdBonus ) )
						m_ColdBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.PoisonBonus ) )
						m_PoisonBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.EnergyBonus ) )
						m_EnergyBonus = reader.ReadEncodedInt();

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

					if ( GetSaveFlag( flags, SaveFlag.MaxHitPoints ) )
						m_MaxHitPoints = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.HitPoints ) )
						m_HitPoints = reader.ReadEncodedInt();

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

					if ( GetSaveFlag( flags, SaveFlag.Quality ) )
						m_Quality = (ArmorQuality)reader.ReadEncodedInt();
					else
						m_Quality = ArmorQuality.Regular;

					if ( version == 5 && m_Quality == ArmorQuality.Low )
						m_Quality = ArmorQuality.Regular;

					if ( GetSaveFlag( flags, SaveFlag.Durability ) )
					{
						m_Durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();

						if ( m_Durability > ArmorDurabilityLevel.Indestructible )
							m_Durability = ArmorDurabilityLevel.Durable;
					}

					if ( GetSaveFlag( flags, SaveFlag.Protection ) )
					{
						m_Protection = (ArmorProtectionLevel)reader.ReadEncodedInt();

						if ( m_Protection > ArmorProtectionLevel.Invulnerability )
							m_Protection = ArmorProtectionLevel.Defense;
					}

					if ( GetSaveFlag( flags, SaveFlag.Resource ) )
						m_Resource = (CraftResource)reader.ReadEncodedInt();
					else
						m_Resource = DefaultResource;

					if ( m_Resource == CraftResource.None )
						m_Resource = DefaultResource;

					if ( GetSaveFlag( flags, SaveFlag.BaseArmor ) )
						m_ArmorBase = reader.ReadEncodedInt();
					else
						m_ArmorBase = -1;

					if ( GetSaveFlag( flags, SaveFlag.StrBonus ) )
						m_StrBonus = reader.ReadEncodedInt();
					else
						m_StrBonus = -1;

					if ( GetSaveFlag( flags, SaveFlag.DexBonus ) )
						m_DexBonus = reader.ReadEncodedInt();
					else
						m_DexBonus = -1;

					if ( GetSaveFlag( flags, SaveFlag.IntBonus ) )
						m_IntBonus = reader.ReadEncodedInt();
					else
						m_IntBonus = -1;

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

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

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

					if ( GetSaveFlag( flags, SaveFlag.MedAllowance ) )
						m_Meditate = (AMA)reader.ReadEncodedInt();
					else
						m_Meditate = (AMA)(-1);

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

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

					break;
				}
				case 4:
				{
					m_AosAttributes = new AosAttributes( this, reader );
					m_AosArmorAttributes = new AosArmorAttributes( this, reader );
					goto case 3;
				}
				case 3:
				{
					m_PhysicalBonus = reader.ReadInt();
					m_FireBonus = reader.ReadInt();
					m_ColdBonus = reader.ReadInt();
					m_PoisonBonus = reader.ReadInt();
					m_EnergyBonus = reader.ReadInt();
					goto case 2;
				}
				case 2:
				case 1:
				{
					m_Identified = reader.ReadBool();
					goto case 0;
				}
				case 0:
				{
					m_ArmorBase = reader.ReadInt();
					m_MaxHitPoints = reader.ReadInt();
					m_HitPoints = reader.ReadInt();
					m_Crafter = reader.ReadMobile();
					m_Quality = (ArmorQuality)reader.ReadInt();
					m_Durability = (ArmorDurabilityLevel)reader.ReadInt();
					m_Protection = (ArmorProtectionLevel)reader.ReadInt();

					AMT mat = (AMT)reader.ReadInt();

					if ( m_ArmorBase == RevertArmorBase )
						m_ArmorBase = -1;

					/*m_BodyPos = (ArmorBodyType)*/reader.ReadInt();

                  
					if ( version < 4 )
					{
						m_AosAttributes = new AosAttributes( this );
						m_AosArmorAttributes = new AosArmorAttributes( this );
					}

					if ( version < 3 && m_Quality == ArmorQuality.Exceptional )
						DistributeBonuses( 4 );

					if ( version >= 2 )
					{
						m_Resource = (CraftResource)reader.ReadInt();
					}
					else
					{
						OreInfo info;

						switch ( reader.ReadInt() )
						{
							default:
							case 0: info = OreInfo.MIron; break;
							case 1: info = OreInfo.MBronze; break;
							case 2: info = OreInfo.MGold; break;
							case 3: info = OreInfo.MCopper; break;
							case 4: info = OreInfo.MOldcopper; break;
							case 5: info = OreInfo.MDullcopper; break;
							case 6: info = OreInfo.MSilver; break;
							case 7: info = OreInfo.MShadow; break;
							case 8: info = OreInfo.MBloodrock; break;
                            case 9: info = OreInfo.MBlackrock; break;
                            case 10: info = OreInfo.MMytheril; break;
                            case 11: info = OreInfo.MRose; break;
                            case 12: info = OreInfo.MVerite; break;
                            case 13: info = OreInfo.MAgapite; break;
                            case 14: info = OreInfo.MRusty; break;
                            case 15: info = OreInfo.MValorite; break;
                            case 16: info = OreInfo.MDragon; break;
                            case 17: info = OreInfo.MTitan; break;
                            case 18: info = OreInfo.MCrystaline; break;
                            case 19: info = OreInfo.MKrynite; break;
                            case 20: info = OreInfo.MVulcan; break;
                            case 21: info = OreInfo.MBloodcrest; break;
                            case 22: info = OreInfo.MElvin; break;
                            case 23: info = OreInfo.MAcid; break;
                            case 24: info = OreInfo.MAqua; break;
                            case 25: info = OreInfo.MEldar; break;
                            case 26: info = OreInfo.MGlowing; break;
                            case 27: info = OreInfo.MGorgan; break;
                            case 28: info = OreInfo.MSandrock; break;
                            case 29: info = OreInfo.MSteel; break;
						}

						m_Resource = CraftResources.GetFromOreInfo( info, mat );
					}

					m_StrBonus = reader.ReadInt();
					m_DexBonus = reader.ReadInt();
					m_IntBonus = reader.ReadInt();
					m_StrReq = reader.ReadInt();
					m_DexReq = reader.ReadInt();
					m_IntReq = reader.ReadInt();

					if ( m_StrBonus == OldStrBonus )
						m_StrBonus = -1;

					if ( m_DexBonus == OldDexBonus )
						m_DexBonus = -1;

					if ( m_IntBonus == OldIntBonus )
						m_IntBonus = -1;

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

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

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

					m_Meditate = (AMA)reader.ReadInt();

					if ( m_Meditate == OldMedAllowance )
						m_Meditate = (AMA)(-1);

					if ( m_Resource == CraftResource.None )
					{
						if ( mat == ArmorMaterialType.Studded || mat == ArmorMaterialType.Leather )
							m_Resource = CraftResource.RegularLeather;
						else if ( mat == ArmorMaterialType.Spined )
							m_Resource = CraftResource.SpinedLeather;
						else if ( mat == ArmorMaterialType.Horned )
							m_Resource = CraftResource.HornedLeather;
						else if ( mat == ArmorMaterialType.Barbed )
							m_Resource = CraftResource.BarbedLeather;
                        else if (mat == ArmorMaterialType.Daemon)
                            m_Resource = CraftResource.DaemonLeather;
						else
							m_Resource = CraftResource.MIron;
					}

					if ( m_MaxHitPoints == 0 && m_HitPoints == 0 )
						m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits );

					break;
				}
			}

			if ( m_AosSkillBonuses == null )
				m_AosSkillBonuses = new AosSkillBonuses( this );

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

			int strBonus = ComputeStatBonus( StatType.Str );
			int dexBonus = ComputeStatBonus( StatType.Dex );
			int intBonus = ComputeStatBonus( StatType.Int );

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

			if ( version < 7 )
				m_PlayerConstructed = true; // we don't know, so, assume it's crafted
            if (version < 8)
                m_Identified = true; // we don't know, so, assume it's identified
		}
Example #26
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 3:
            {
                #region Mondain's Legacy
                m_Crafter = reader.ReadMobile();
                m_Quality = (ArmorQuality)reader.ReadInt();
                #endregion

                goto case 2;
            }

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

                goto case 1;
            }

            case 1:
            {
                m_AosAttributes   = new AosAttributes(this, reader);
                m_AosResistances  = new AosElementAttributes(this, reader);
                m_AosSkillBonuses = new AosSkillBonuses(this, reader);

                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 (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:
            {
                m_AosAttributes   = new AosAttributes(this);
                m_AosResistances  = new AosElementAttributes(this);
                m_AosSkillBonuses = new AosSkillBonuses(this);

                break;
            }
            }

            if (version < 2)
            {
                m_Resource = CraftResource.Iron;
                m_GemType  = GemType.None;
            }
        }
Example #27
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
                case 7:
                    {
                        this.m_IsImbued = reader.ReadBool();
                        goto case 6;
                    }
                case 6:
                    {
                        m_NegativeAttributes = new NegativeAttributes(this, reader);
                        goto case 5;
                    }
                case 5:
                    {
                        #region Runic Reforging
                        m_ReforgedPrefix = (ReforgedPrefix)reader.ReadInt();
                        m_ReforgedSuffix = (ReforgedSuffix)reader.ReadInt();
                        m_ItemPower = (ItemPower)reader.ReadInt();
                        m_BlockRepair = reader.ReadBool();
                        #endregion

                        #region Stygian Abyss
                        m_GorgonLenseCharges = reader.ReadInt();
                        m_GorgonLenseType = (LenseType)reader.ReadInt();
                        goto case 4;
                    }
                case 4:
                    {
                        this.m_TimesImbued = reader.ReadEncodedInt();
                       
                        this.m_SAAbsorptionAttributes = new SAAbsorptionAttributes(this, reader);
                        #endregion

                        this.m_BlessedBy = reader.ReadMobile();
                        this.m_LastEquipped = reader.ReadBool();
                        this.m_SetEquipped = reader.ReadBool();
                        this.m_SetHue = reader.ReadEncodedInt();

                        this.m_SetAttributes = new AosAttributes(this, reader);
                        this.m_SetSkillBonuses = new AosSkillBonuses(this, reader);

                        this.m_Crafter = reader.ReadMobile();
                        this.m_Quality = (ArmorQuality)reader.ReadInt();
                        goto case 3;
                    }
                case 3:
                    {
                        this.m_MaxHitPoints = reader.ReadEncodedInt();
                        this.m_HitPoints = reader.ReadEncodedInt();

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

                        goto case 1;
                    }
                case 1:
                    {
                        this.m_AosAttributes = new AosAttributes(this, reader);
                        this.m_AosResistances = new AosElementAttributes(this, reader);
                        this.m_AosSkillBonuses = new AosSkillBonuses(this, reader);

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

                        int strBonus = this.m_AosAttributes.BonusStr;
                        int dexBonus = this.m_AosAttributes.BonusDex;
                        int intBonus = this.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 (this.Parent is Mobile)
                            ((Mobile)this.Parent).CheckStatTimers();

                        break;
                    }
                case 0:
                    {
                        this.m_AosAttributes = new AosAttributes(this);
                        this.m_AosResistances = new AosElementAttributes(this);
                        this.m_AosSkillBonuses = new AosSkillBonuses(this);

                        break;
                    }
            }

            if (m_NegativeAttributes == null)
                m_NegativeAttributes = new NegativeAttributes(this);

            #region Mondain's Legacy Sets
            if (this.m_SetAttributes == null)
                this.m_SetAttributes = new AosAttributes(this);

            if (this.m_SetSkillBonuses == null)
                this.m_SetSkillBonuses = new AosSkillBonuses(this);
            #endregion

            if (version < 2)
            {
                this.m_Resource = CraftResource.Iron;
                this.m_GemType = GemType.None;
            }
        }
Example #28
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

            switch (version)
            {
            case 7:
            {
                goto case 6;
            }

            case 6:
            {
                goto case 5;
            }

            case 5:
            {
                m_BlessedBy = reader.ReadMobile();

                m_Crafter = reader.ReadMobile();
                m_Quality = (ArmorQuality)reader.ReadInt();
                goto case 3;
            }

            case 3:
            {
                m_MaxHitPoints = reader.ReadEncodedInt();
                m_HitPoints    = reader.ReadEncodedInt();

                goto case 2;
            }

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

                goto case 1;
            }

            case 1:
            {
                if (Parent is Mobile)
                {
                    ((Mobile)Parent).CheckStatTimers();
                }

                break;
            }

            case 0:
            {
                break;
            }
            }

            if (version < 2)
            {
                m_Resource = CraftResource.Iron;
                m_GemType  = GemType.None;
            }
        }
Example #29
0
		public override void Deserialize( GenericReader reader )
		{
			base.Deserialize( reader );

			int version = reader.ReadInt();

			switch ( version )
            {
                #region Personal Bless Deed
                case 9:
                    {
                        m_BlessedBy = reader.ReadMobile();
                        goto case 8;
                    }
                #endregion
                #region Mondain's Legacy Sets
                case 8:
					SetFlag sflags = (SetFlag) reader.ReadEncodedInt();
					
					if ( GetSaveFlag( sflags, SetFlag.Attributes ) )
						m_SetAttributes = new AosAttributes( this, reader );
					else
						m_SetAttributes = new AosAttributes( this );
					
					if ( GetSaveFlag( sflags, SetFlag.ArmorAttributes ) )
						m_SetSelfRepair = (new AosArmorAttributes( this, reader )).SelfRepair;
						
					if ( GetSaveFlag( sflags, SetFlag.SkillBonuses ) )
						m_SetSkillBonuses = new AosSkillBonuses( this, reader );
					else
						m_SetSkillBonuses =  new AosSkillBonuses( this );

					if ( GetSaveFlag( sflags, SetFlag.PhysicalBonus ) )
						m_SetPhysicalBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( sflags, SetFlag.FireBonus ) )
						m_SetFireBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( sflags, SetFlag.ColdBonus ) )
						m_SetColdBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( sflags, SetFlag.PoisonBonus ) )
						m_SetPoisonBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( sflags, SetFlag.EnergyBonus ) )
						m_SetEnergyBonus = reader.ReadEncodedInt();
						
					if ( GetSaveFlag( sflags, SetFlag.Hue ) )
						m_SetHue = reader.ReadEncodedInt();
						
					if ( GetSaveFlag( sflags, SetFlag.LastEquipped ) )
						m_LastEquipped = reader.ReadBool();
						
					if ( GetSaveFlag( sflags, SetFlag.SetEquipped ) )
						m_SetEquipped = reader.ReadBool();
						
					if ( GetSaveFlag( sflags, SetFlag.SetSelfRepair ) )
						m_SetSelfRepair = reader.ReadEncodedInt();
					
					goto case 7;
				#endregion
				case 7:
				case 6:
				case 5:
				{
					SaveFlag flags = (SaveFlag)reader.ReadEncodedInt();

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

					if ( GetSaveFlag( flags, SaveFlag.ArmorAttributes ) )
						m_AosArmorAttributes = new AosArmorAttributes( this, reader );
					else
						m_AosArmorAttributes = new AosArmorAttributes( this );

					if ( GetSaveFlag( flags, SaveFlag.PhysicalBonus ) )
						m_PhysicalBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.FireBonus ) )
						m_FireBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.ColdBonus ) )
						m_ColdBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.PoisonBonus ) )
						m_PoisonBonus = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.EnergyBonus ) )
						m_EnergyBonus = reader.ReadEncodedInt();

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

					if ( GetSaveFlag( flags, SaveFlag.MaxHitPoints ) )
						m_MaxHitPoints = reader.ReadEncodedInt();

					if ( GetSaveFlag( flags, SaveFlag.HitPoints ) )
						m_HitPoints = reader.ReadEncodedInt();

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

					if ( GetSaveFlag( flags, SaveFlag.Quality ) )
						m_Quality = (ArmorQuality)reader.ReadEncodedInt();
					else
						m_Quality = ArmorQuality.Regular;

					if ( version == 5 && m_Quality == ArmorQuality.Low )
						m_Quality = ArmorQuality.Regular;

					if ( GetSaveFlag( flags, SaveFlag.Durability ) )
					{
						m_Durability = (ArmorDurabilityLevel)reader.ReadEncodedInt();

						if ( m_Durability > ArmorDurabilityLevel.Indestructible )
							m_Durability = ArmorDurabilityLevel.Durable;
					}

					if ( GetSaveFlag( flags, SaveFlag.Protection ) )
					{
						m_Protection = (ArmorProtectionLevel)reader.ReadEncodedInt();

						if ( m_Protection > ArmorProtectionLevel.Invulnerability )
							m_Protection = ArmorProtectionLevel.Defense;
					}

					if ( GetSaveFlag( flags, SaveFlag.Resource ) )
						m_Resource = (CraftResource)reader.ReadEncodedInt();
					else
						m_Resource = DefaultResource;

					if ( m_Resource == CraftResource.None )
						m_Resource = DefaultResource;

					if ( GetSaveFlag( flags, SaveFlag.BaseArmor ) )
						m_ArmorBase = reader.ReadEncodedInt();
					else
						m_ArmorBase = -1;

					if ( GetSaveFlag( flags, SaveFlag.StrBonus ) )
						m_StrBonus = reader.ReadEncodedInt();
					else
						m_StrBonus = -1;

					if ( GetSaveFlag( flags, SaveFlag.DexBonus ) )
						m_DexBonus = reader.ReadEncodedInt();
					else
						m_DexBonus = -1;

					if ( GetSaveFlag( flags, SaveFlag.IntBonus ) )
						m_IntBonus = reader.ReadEncodedInt();
					else
						m_IntBonus = -1;

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

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

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

					if ( GetSaveFlag( flags, SaveFlag.MedAllowance ) )
						m_Meditate = (AMA)reader.ReadEncodedInt();
					else
						m_Meditate = (AMA)(-1);

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

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

					#region SA
					if ( version > 7 && GetSaveFlag( flags, SaveFlag.xAbsorptionAttributes ) )
							m_SAAbsorptionAttributes = new SAAbsorptionAttributes( this, reader );
						else
							m_SAAbsorptionAttributes = new SAAbsorptionAttributes( this );
					#endregion

					break;
				}
				case 4:
				{
					m_AosAttributes = new AosAttributes( this, reader );
					m_AosArmorAttributes = new AosArmorAttributes( this, reader );
					goto case 3;
				}
				case 3:
				{
					m_PhysicalBonus = reader.ReadInt();
					m_FireBonus = reader.ReadInt();
					m_ColdBonus = reader.ReadInt();
					m_PoisonBonus = reader.ReadInt();
					m_EnergyBonus = reader.ReadInt();
					goto case 2;
				}
				case 2:
				case 1:
				{
					m_Identified = reader.ReadBool();
					goto case 0;
				}
				case 0:
				{
					m_ArmorBase = reader.ReadInt();
					m_MaxHitPoints = reader.ReadInt();
					m_HitPoints = reader.ReadInt();
					m_Crafter = reader.ReadMobile();
					m_Quality = (ArmorQuality)reader.ReadInt();
					m_Durability = (ArmorDurabilityLevel)reader.ReadInt();
					m_Protection = (ArmorProtectionLevel)reader.ReadInt();

					AMT mat = (AMT)reader.ReadInt();

					if ( m_ArmorBase == RevertArmorBase )
						m_ArmorBase = -1;

					/*m_BodyPos = (ArmorBodyType)*/reader.ReadInt();

					if ( version < 4 )
					{
						m_AosAttributes = new AosAttributes( this );
						m_AosArmorAttributes = new AosArmorAttributes( this );
					}

					if ( version < 3 && m_Quality == ArmorQuality.Exceptional )
						DistributeBonuses( 6 );

					if ( version >= 2 )
					{
						m_Resource = (CraftResource)reader.ReadInt();
					}
					else
					{
						OreInfo info;

						switch ( reader.ReadInt() )
						{
							default:
							case 0: info = OreInfo.Iron; break;
							case 1: info = OreInfo.DullCopper; break;
							case 2: info = OreInfo.ShadowIron; break;
							case 3: info = OreInfo.Copper; break;
							case 4: info = OreInfo.Bronze; break;
							case 5: info = OreInfo.Gold; break;
							case 6: info = OreInfo.Agapite; break;
							case 7: info = OreInfo.Verite; break;
							case 8: info = OreInfo.Valorite; break;
						}

						m_Resource = CraftResources.GetFromOreInfo( info, mat );
					}

					m_StrBonus = reader.ReadInt();
					m_DexBonus = reader.ReadInt();
					m_IntBonus = reader.ReadInt();
					m_StrReq = reader.ReadInt();
					m_DexReq = reader.ReadInt();
					m_IntReq = reader.ReadInt();

					if ( m_StrBonus == OldStrBonus )
						m_StrBonus = -1;

					if ( m_DexBonus == OldDexBonus )
						m_DexBonus = -1;

					if ( m_IntBonus == OldIntBonus )
						m_IntBonus = -1;

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

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

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

					m_Meditate = (AMA)reader.ReadInt();

					if ( m_Meditate == OldMedAllowance )
						m_Meditate = (AMA)(-1);

					if ( m_Resource == CraftResource.None )
					{
						if ( mat == ArmorMaterialType.Studded || mat == ArmorMaterialType.Leather )
							m_Resource = CraftResource.RegularLeather;
						else if ( mat == ArmorMaterialType.Spined )
							m_Resource = CraftResource.SpinedLeather;
						else if ( mat == ArmorMaterialType.Horned )
							m_Resource = CraftResource.HornedLeather;
						else if ( mat == ArmorMaterialType.Barbed )
							m_Resource = CraftResource.BarbedLeather;
						else
							m_Resource = CraftResource.Iron;
					}

					if ( m_MaxHitPoints == 0 && m_HitPoints == 0 )
						m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax( InitMinHits, InitMaxHits );

					break;
				}
			}

			#region Mondain's Legacy Sets
			if ( m_SetAttributes == null )
				m_SetAttributes = new AosAttributes( this );
				
			if ( m_SetSkillBonuses == null )
				m_SetSkillBonuses = new AosSkillBonuses( this );
			#endregion
			
			if ( m_AosSkillBonuses == null )
				m_AosSkillBonuses = new AosSkillBonuses( this );

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

			int strBonus = ComputeStatBonus( StatType.Str );
			int dexBonus = ComputeStatBonus( StatType.Dex );
			int intBonus = ComputeStatBonus( StatType.Int );

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

			if ( version < 7 )
				m_PlayerConstructed = true; // we don't know, so, assume it's crafted
		}
Example #30
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);

            int version = reader.ReadInt();

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

                    if (GetSaveFlag(flags, SaveFlag.Aesthetic)) // Alan Mod
                    {
                        m_Aesthetic = true;
                    }
                    // alan mod
                    if (GetSaveFlag(flags, SaveFlag.NotScissorable)) // Alan Mod
                    {
                        m_NotScissorable = true;
                    }

                    // alan mod
                    if (GetSaveFlag(flags, SaveFlag.Slayer))
                    {
                        m_Slayer = (SlayerName) reader.ReadEncodedInt();
                    }

                    if (GetSaveFlag(flags, SaveFlag.Slayer2))
                    {
                        m_Slayer2 = (SlayerName) reader.ReadEncodedInt();
                    }
                    // end alan mod

                    // BEGIN OBSOLETE (removed AOS stuff)... after first save, this will never happen
                    if (GetSaveFlag(flags, SaveFlag.Attributes))
                    {
                        new AosAttributes(this, reader);
                    }
                    //else
                    //	m_AosAttributes = new AosAttributes( this );

                    if (GetSaveFlag(flags, SaveFlag.ArmorAttributes))
                    {
                        new AosArmorAttributes(this, reader);
                    }
                    //else
                    //	m_AosArmorAttributes = new AosArmorAttributes( this );

                    if (GetSaveFlag(flags, SaveFlag.PhysicalBonus))
                    {
                        reader.ReadEncodedInt(); //m_PhysicalBonus = reader.ReadEncodedInt();
                    }

                    if (GetSaveFlag(flags, SaveFlag.FireBonus))
                    {
                        reader.ReadEncodedInt(); //m_FireBonus = reader.ReadEncodedInt();
                    }

                    if (GetSaveFlag(flags, SaveFlag.ColdBonus))
                    {
                        reader.ReadEncodedInt(); //m_ColdBonus = reader.ReadEncodedInt();
                    }

                    if (GetSaveFlag(flags, SaveFlag.PoisonBonus))
                    {
                        reader.ReadEncodedInt(); //m_PoisonBonus = reader.ReadEncodedInt();
                    }

                    if (GetSaveFlag(flags, SaveFlag.EnergyBonus))
                    {
                        reader.ReadEncodedInt(); //m_EnergyBonus = reader.ReadEncodedInt();
                    }
                    // END OBSOLETE
                    if (GetSaveFlag(flags, SaveFlag.Identified))
                    {
                        m_Identified = (version >= 7 || reader.ReadBool());
                    }

                    if (GetSaveFlag(flags, SaveFlag.MaxHitPoints))
                    {
                        m_MaxHitPoints = reader.ReadEncodedInt();
                    }

                    if (GetSaveFlag(flags, SaveFlag.HitPoints))
                    {
                        m_HitPoints = reader.ReadEncodedInt();
                    }

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

                    if (GetSaveFlag(flags, SaveFlag.Quality))
                    {
                        m_Quality = (ArmorQuality) reader.ReadEncodedInt();
                    }
                    else
                    {
                        m_Quality = ArmorQuality.Regular;
                    }

                    if (version == 5 && m_Quality == ArmorQuality.Low)
                    {
                        m_Quality = ArmorQuality.Regular;
                    }

                    if (GetSaveFlag(flags, SaveFlag.Durability))
                    {
                        m_Durability = (ArmorDurabilityLevel) reader.ReadEncodedInt();

                        if (m_Durability > ArmorDurabilityLevel.Indestructible)
                        {
                            m_Durability = ArmorDurabilityLevel.Durable;
                        }
                    }

                    if (GetSaveFlag(flags, SaveFlag.Protection))
                    {
                        m_Protection = (ArmorProtectionLevel) reader.ReadEncodedInt();

                        if (m_Protection > ArmorProtectionLevel.Invulnerability)
                        {
                            m_Protection = ArmorProtectionLevel.Defense;
                        }
                    }

                    if (GetSaveFlag(flags, SaveFlag.Resource))
                    {
                        m_Resource = (CraftResource) reader.ReadEncodedInt();
                    }
                    else
                    {
                        m_Resource = DefaultResource;
                    }

                    if (m_Resource == CraftResource.None)
                    {
                        m_Resource = DefaultResource;
                    }

                    if (GetSaveFlag(flags, SaveFlag.BaseArmor))
                    {
                        m_ArmorBase = reader.ReadEncodedInt();
                    }
                    else
                    {
                        m_ArmorBase = -1;
                    }

                    if (GetSaveFlag(flags, SaveFlag.StrBonus))
                    {
                        m_StrBonus = reader.ReadEncodedInt();
                    }
                    else
                    {
                        m_StrBonus = -1;
                    }

                    if (GetSaveFlag(flags, SaveFlag.DexBonus))
                    {
                        m_DexBonus = reader.ReadEncodedInt();
                    }
                    else
                    {
                        m_DexBonus = -1;
                    }

                    if (GetSaveFlag(flags, SaveFlag.IntBonus))
                    {
                        m_IntBonus = reader.ReadEncodedInt();
                    }
                    else
                    {
                        m_IntBonus = -1;
                    }

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

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

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

                    if (GetSaveFlag(flags, SaveFlag.MedAllowance))
                    {
                        m_Meditate = (AMA) reader.ReadEncodedInt();
                    }
                    else
                    {
                        m_Meditate = (AMA) (-1);
                    }

                    if (GetSaveFlag(flags, SaveFlag.SkillBonuses))
                    {
                        new AosSkillBonuses(this, reader); // eventually will be unnecessary
                    }

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

                    break;
                }
                case 4:
                {
                    new AosAttributes(this, reader); // evenutally won't be necessary
                    new AosArmorAttributes(this, reader); // evenutally won't be necessary
                    goto case 3;
                }
                case 3:
                {
                    reader.ReadInt(); //m_PhysicalBonus = 
                    reader.ReadInt(); // m_FireBonus = 
                    reader.ReadInt(); // m_ColdBonus = 
                    reader.ReadInt(); // m_PoisonBonus = 
                    reader.ReadInt(); // m_EnergyBonus = 
                    goto case 2;
                }
                case 2:
                case 1:
                {
                    m_Identified = reader.ReadBool();
                    goto case 0;
                }
                case 0:
                {
                    m_ArmorBase = reader.ReadInt();
                    m_MaxHitPoints = reader.ReadInt();
                    m_HitPoints = reader.ReadInt();
                    m_Crafter = reader.ReadMobile();
                    m_Quality = (ArmorQuality) reader.ReadInt();
                    m_Durability = (ArmorDurabilityLevel) reader.ReadInt();
                    m_Protection = (ArmorProtectionLevel) reader.ReadInt();

                    var mat = (AMT) reader.ReadInt();

                    //					if ( m_ArmorBase == RevertArmorBase )
                    //						m_ArmorBase = -1;

                    /*m_BodyPos = (ArmorBodyType)*/
                    reader.ReadInt();

                    //if ( version < 3 && m_Quality == ArmorQuality.Exceptional )
                    //	DistributeBonuses( 6 );

                    if (version >= 2)
                    {
                        m_Resource = (CraftResource) reader.ReadInt();
                    }
                    else
                    {
                        OreInfo info;

                        switch (reader.ReadInt())
                        {
                            default:
                            case 0:
                                info = OreInfo.Iron;
                                break;
                            case 1:
                                info = OreInfo.DullCopper;
                                break;
                            case 2:
                                info = OreInfo.ShadowIron;
                                break;
                            case 3:
                                info = OreInfo.Copper;
                                break;
                            case 4:
                                info = OreInfo.Bronze;
                                break;
                            case 5:
                                info = OreInfo.Gold;
                                break;
                            case 6:
                                info = OreInfo.Agapite;
                                break;
                            case 7:
                                info = OreInfo.Verite;
                                break;
                            case 8:
                                info = OreInfo.Valorite;
                                break;
                        }

                        m_Resource = CraftResources.GetFromOreInfo(info, mat);
                    }

                    m_StrBonus = reader.ReadInt();
                    m_DexBonus = reader.ReadInt();
                    m_IntBonus = reader.ReadInt();
                    m_StrReq = reader.ReadInt();
                    m_DexReq = reader.ReadInt();
                    m_IntReq = reader.ReadInt();

                    if (m_StrBonus == OldStrBonus)
                    {
                        m_StrBonus = -1;
                    }

                    if (m_DexBonus == OldDexBonus)
                    {
                        m_DexBonus = -1;
                    }

                    if (m_IntBonus == OldIntBonus)
                    {
                        m_IntBonus = -1;
                    }

                    if (m_StrReq == OldStrReq)
                    {
                        m_StrReq = -1;
                    }

                    if (m_DexReq == OldDexReq)
                    {
                        m_DexReq = -1;
                    }

                    if (m_IntReq == OldIntReq)
                    {
                        m_IntReq = -1;
                    }

                    m_Meditate = (AMA) reader.ReadInt();

                    if (m_Meditate == OldMedAllowance)
                    {
                        m_Meditate = (AMA) (-1);
                    }

                    if (m_Resource == CraftResource.None)
                    {
                        if (mat == ArmorMaterialType.Studded || mat == ArmorMaterialType.Leather)
                        {
                            m_Resource = CraftResource.RegularLeather;
                        }
                        else if (mat == ArmorMaterialType.Spined)
                        {
                            m_Resource = CraftResource.SpinedLeather;
                        }
                        else if (mat == ArmorMaterialType.Horned)
                        {
                            m_Resource = CraftResource.HornedLeather;
                        }
                        else if (mat == ArmorMaterialType.Barbed)
                        {
                            m_Resource = CraftResource.BarbedLeather;
                        }
                        else
                        {
                            m_Resource = CraftResource.Iron;
                        }
                    }

                    if (m_MaxHitPoints == 0 && m_HitPoints == 0)
                    {
                        m_HitPoints = m_MaxHitPoints = Utility.RandomMinMax(InitMinHits, InitMaxHits);
                    }

                    break;
                }
            }

            if (Parent is Mobile && (StrBonus != 0 || DexBonus != 0 || IntBonus != 0))
            {
                var 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();
            }

            if (version < 7)
            {
                m_PlayerConstructed = true; // we don't know, so, assume it's crafted
            }
        }