public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, ITool tool, CraftItem craftItem, int resHue) { int charges = 5 + quality + (int)(from.Skills[SkillName.Inscribe].Value / 30); if (charges > 10) { charges = 10; } MaxCharges = charges * 2; if (makersMark) { Crafter = from; } m_Quality = (BookQuality)(quality - 1); return(quality); }
public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { int charges = 5 + quality + (int)(from.Skills[SkillName.Inscribe].Value / 30); if (charges > 10) { charges = 10; } this.MaxCharges = (Core.SE ? charges * 2 : charges); if (makersMark) { this.Crafter = from; } this.m_Quality = (BookQuality)(quality - 1); return(quality); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 3: { m_Quality = (BookQuality)reader.ReadByte(); goto case 2; } case 2: { m_Crafter = reader.ReadMobile(); goto case 1; } case 1: case 0: { int count = reader.ReadInt(); m_Entries = new List <RunebookEntry>(count); for (int i = 0; i < count; ++i) { m_Entries.Add(new RunebookEntry(reader)); } m_Description = reader.ReadString(); m_CurCharges = reader.ReadInt(); m_MaxCharges = reader.ReadInt(); m_DefaultIndex = reader.ReadInt(); break; } } }
public virtual int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, IBaseTool tool, CraftItem craftItem, int resHue) { int magery = from.Skills.Magery.BaseFixedPoint; if (makersMark) { Crafter = from; } m_Quality = (BookQuality)(quality - 1); if (craftItem.Recipe != null && craftItem.Recipe.ID == 1001) //Full spellbook { Content = ulong.MaxValue; bool allRequiredSkills = true; double chance = craftItem.GetSuccessChance(from, typeRes, craftSystem, false, ref allRequiredSkills); double excepChance = craftItem.GetExceptionalChance(craftSystem, chance, from); double blessChance = excepChance / 3.0; if (blessChance < 0.025 && from.Skills[SkillName.Inscribe].Value >= 100.0) { blessChance = 0.025; } if (Crafter != null && m_Quality == BookQuality.Exceptional && blessChance > Utility.RandomDouble()) { LootType = LootType.Blessed; } } return(quality); }
public virtual int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue ) { int magery = from.Skills.Magery.BaseFixedPoint; if ( magery >= 800 ) { int[] propertyCounts; int minIntensity; int maxIntensity; if ( magery >= 1000 ) { if( magery >= 1200 ) propertyCounts = m_LegendPropertyCounts; else if( magery >= 1100 ) propertyCounts = m_ElderPropertyCounts; else propertyCounts = m_GrandPropertyCounts; minIntensity = 55; maxIntensity = 75; } else if ( magery >= 900 ) { propertyCounts = m_MasterPropertyCounts; minIntensity = 25; maxIntensity = 45; } else { propertyCounts = m_AdeptPropertyCounts; minIntensity = 0; maxIntensity = 15; } int propertyCount = propertyCounts[Utility.Random( propertyCounts.Length )]; BaseRunicTool.ApplyAttributesTo( this, true, 0, propertyCount, minIntensity, maxIntensity ); } if ( makersMark ) Crafter = from; #region Mondain's Legacy m_Quality = (BookQuality) ( quality - 1 ); #endregion return quality; }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 5: { #region Mondain's Legacy m_Quality = (BookQuality) reader.ReadByte(); #endregion goto case 4; } case 4: { #region Mondain's Legacy m_EngravedText = reader.ReadString(); #endregion goto case 3; } case 3: { m_Crafter = reader.ReadMobile(); goto case 2; } case 2: { m_Slayer = (SlayerName)reader.ReadInt(); m_Slayer2 = (SlayerName)reader.ReadInt(); goto case 1; } case 1: { m_AosAttributes = new AosAttributes( this, reader ); m_AosSkillBonuses = new AosSkillBonuses( this, reader ); goto case 0; } case 0: { m_Content = reader.ReadULong(); m_Count = reader.ReadInt(); break; } } if ( m_AosAttributes == null ) m_AosAttributes = new AosAttributes( this ); if ( m_AosSkillBonuses == null ) m_AosSkillBonuses = new AosSkillBonuses( this ); 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(); }
public virtual int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { int magery = from.Skills.Magery.BaseFixedPoint; if (magery >= 800) { int[] propertyCounts; int minIntensity; int maxIntensity; if (magery >= 1000) { if (magery >= 1200) { propertyCounts = m_LegendPropertyCounts; } else if (magery >= 1100) { propertyCounts = m_ElderPropertyCounts; } else { propertyCounts = m_GrandPropertyCounts; } minIntensity = 55; maxIntensity = 75; } else if (magery >= 900) { propertyCounts = m_MasterPropertyCounts; minIntensity = 25; maxIntensity = 45; } else { propertyCounts = m_AdeptPropertyCounts; minIntensity = 0; maxIntensity = 15; } int propertyCount = propertyCounts[Utility.Random(propertyCounts.Length)]; BaseRunicTool.ApplyAttributesTo(this, true, 0, propertyCount, minIntensity, maxIntensity); } if (makersMark) { Crafter = from; } m_Quality = (BookQuality)(quality - 1); return(quality); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 5: { m_Quality = (BookQuality)reader.ReadByte(); goto case 4; } case 4: { m_EngravedText = reader.ReadString(); goto case 3; } case 3: { m_Crafter = reader.ReadMobile(); goto case 2; } case 2: { m_Slayer = (SlayerName)reader.ReadInt(); m_Slayer2 = (SlayerName)reader.ReadInt(); goto case 1; } case 1: { m_AosAttributes = new AosAttributes(this, reader); m_AosSkillBonuses = new AosSkillBonuses(this, reader); goto case 0; } case 0: { m_Content = reader.ReadULong(); m_Count = reader.ReadInt(); break; } } if (m_AosAttributes == null) { m_AosAttributes = new AosAttributes(this); } if (m_AosSkillBonuses == null) { m_AosSkillBonuses = new AosSkillBonuses(this); } 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(); } }
public virtual int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, ITool tool, CraftItem craftItem, int resHue) { int magery = from.Skills.Magery.BaseFixedPoint; if (magery >= 800) { int[] propertyCounts; int minIntensity; int maxIntensity; if (magery >= 1000) { if (magery >= 1200) { propertyCounts = m_LegendPropertyCounts; } else if (magery >= 1100) { propertyCounts = m_ElderPropertyCounts; } else { propertyCounts = m_GrandPropertyCounts; } minIntensity = 55; maxIntensity = 75; } else if (magery >= 900) { propertyCounts = m_MasterPropertyCounts; minIntensity = 25; maxIntensity = 45; } else { propertyCounts = m_AdeptPropertyCounts; minIntensity = 0; maxIntensity = 15; } int propertyCount = propertyCounts[Utility.Random(propertyCounts.Length)]; GuaranteedSpellbookImprovementTalisman talisman = from.FindItemOnLayer(Layer.Talisman) as GuaranteedSpellbookImprovementTalisman; if (talisman != null && talisman.Charges > 0) { propertyCount++; talisman.Charges--; from.SendLocalizedMessage(1157210); // Your talisman magically improves your spellbook. if (talisman.Charges <= 0) { from.SendLocalizedMessage(1157211); // Your talisman has been destroyed. talisman.Delete(); } } BaseRunicTool.ApplyAttributesTo(this, true, 0, propertyCount, minIntensity, maxIntensity); } if (makersMark) { Crafter = from; } m_Quality = (BookQuality)(quality - 1); return(quality); }
public override void Deserialize( GenericReader reader ) { base.Deserialize( reader ); int version = reader.ReadInt(); switch ( version ) { case 5: { m_Quality = (BookQuality) reader.ReadByte(); goto case 4; } case 4: { m_EngravedText = reader.ReadString(); goto case 3; } case 3: { m_Crafter = reader.ReadMobile(); goto case 2; } case 2: { m_Slayer = (SlayerName)reader.ReadInt(); m_Slayer2 = (SlayerName)reader.ReadInt(); goto case 1; } case 1: { goto case 0; } case 0: { m_Content = reader.ReadULong(); m_Count = reader.ReadInt(); 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: { m_Quality = (BookQuality) reader.ReadByte(); goto case 2; } case 2: { m_Crafter = reader.ReadMobile(); goto case 1; } case 1: case 0: { int count = reader.ReadInt(); m_Entries = new List<RunebookEntry>( count ); for ( int i = 0; i < count; ++i ) m_Entries.Add( new RunebookEntry( reader ) ); m_Description = reader.ReadString(); m_CurCharges = reader.ReadInt(); m_MaxCharges = reader.ReadInt(); m_DefaultIndex = reader.ReadInt(); break; } } }
public virtual int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { int magery = from.Skills.Magery.BaseFixedPoint; if (magery >= 800) { /* * int[] propertyCounts; * * int minIntensity; * int maxIntensity; * * if (magery >= 1000) * { * if (magery >= 1200) * { * propertyCounts = m_LegendPropertyCounts; * } * else if (magery >= 1100) * { * propertyCounts = m_ElderPropertyCounts; * } * else * { * propertyCounts = m_GrandPropertyCounts; * } * * minIntensity = 55; * maxIntensity = 75; * } * else if (magery >= 900) * { * propertyCounts = m_MasterPropertyCounts; * minIntensity = 25; * maxIntensity = 45; * } * else * { * propertyCounts = m_AdeptPropertyCounts; * minIntensity = 0; * maxIntensity = 15; * } * * int propertyCount = propertyCounts[Utility.Random(propertyCounts.Length)]; */ } if (makersMark) { Crafter = from; } m_Quality = (BookQuality)(quality - 1); return(quality); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); LootType = LootType.Blessed; if (EraSE && Weight == 3.0) { Weight = 1.0; } int version = reader.ReadInt(); switch (version) { case 3: m_Quality = (BookQuality)reader.ReadByte(); goto case 2; case 2: m_Crafter = reader.ReadMobile(); goto case 1; case 1: Level = (SecureLevel)reader.ReadInt(); goto case 0; case 0: { int count = reader.ReadInt(); Entries = new List<RunebookEntry>(count); for (int i = 0; i < count; ++i) { Entries.Add(new RunebookEntry(reader)); } m_Description = reader.ReadString(); CurCharges = reader.ReadInt(); MaxCharges = reader.ReadInt(); m_DefaultIndex = reader.ReadInt(); } break; } }
public int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, IBaseTool tool, CraftItem craftItem, int resHue) { int charges = 5 + quality + (int)(from.Skills[SkillName.Inscribe].Value / 30); if (charges > 10) { charges = 10; } MaxCharges = charges; if (makersMark) { Crafter = from; } m_Quality = (BookQuality)(quality - 1); return quality; }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); this.LootType = LootType.Blessed; if (Core.SE && this.Weight == 3.0) this.Weight = 1.0; int version = reader.ReadInt(); switch ( version ) { case 3: { this.m_Quality = (BookQuality)reader.ReadByte(); goto case 2; } case 2: { this.m_Crafter = reader.ReadMobile(); goto case 1; } case 1: { this.m_Level = (SecureLevel)reader.ReadInt(); goto case 0; } case 0: { int count = reader.ReadInt(); this.m_Entries = new List<RunebookEntry>(count); for (int i = 0; i < count; ++i) this.m_Entries.Add(new RunebookEntry(reader)); this.m_Description = reader.ReadString(); this.m_CurCharges = reader.ReadInt(); this.m_MaxCharges = reader.ReadInt(); this.m_DefaultIndex = reader.ReadInt(); break; } } }
public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { int charges = 5 + quality + (int)(from.Skills[SkillName.Inscribe].Value / 30); if (charges > 10) charges = 10; this.MaxCharges = (Core.SE ? charges * 2 : charges); if (makersMark) this.Crafter = from; this.m_Quality = (BookQuality)(quality - 1); return quality; }
public virtual int OnCraft( int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, IBaseTool tool, CraftItem craftItem, int resHue) { int magery = from.Skills.Magery.BaseFixedPoint; if (makersMark) { Crafter = from; } m_Quality = (BookQuality)(quality - 1); if (craftItem.Recipe != null && craftItem.Recipe.ID == 1001) //Full spellbook { Content = ulong.MaxValue; bool allRequiredSkills = true; double chance = craftItem.GetSuccessChance(from, typeRes, craftSystem, false, ref allRequiredSkills); double excepChance = craftItem.GetExceptionalChance(craftSystem, chance, from); double blessChance = excepChance / 3.0; if (blessChance < 0.025 && from.Skills[SkillName.Inscribe].Value >= 100.0) { blessChance = 0.025; } if (Crafter != null && m_Quality == BookQuality.Exceptional && blessChance > Utility.RandomDouble()) { LootType = LootType.Blessed; } } return quality; }