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; }
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 ); }
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; }
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); }
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; }
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; } }
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); }
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(); } }
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; } }
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; } }
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 } }
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); } }
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 // .. }
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 ); }
protected Armor(Armor other) :base(other) { this.Category = other.Category; this.ArmorValue = other.ArmorValue; this.DefenseValue = other.DefenseValue; }
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 }
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 } }
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; } }
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; } }
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(); } }
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 ); }
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 }
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); }
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 }
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; } }
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; } }
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; } }
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 }
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 } }