private void AccessData(JSONObject jsonObj) { switch (jsonObj.type) { case JSONObject.Type.OBJECT: for(int idx = 0; idx < jsonObj.Count; ++idx) { CraftItem craftItem = new CraftItem(); craftItem.craftItemName = jsonObj.keys[idx]; JSONObject rawMaterials = jsonObj[idx]; int materialNum = rawMaterials.Count; for(int i = 0; i < materialNum; ++i) { CraftRawMaterial craftRawMaterial; craftRawMaterial.rawMaterialName = rawMaterials.keys[i]; craftRawMaterial.consumeAmount = int.Parse(rawMaterials.list[i].str); craftItem.rawMaterials.Add(craftRawMaterial); } _craftItemList.Add(craftItem); _craftItemDictionary.Add(craftItem.craftItemName, craftItem.rawMaterials); } break; case JSONObject.Type.ARRAY: // to do break; default: Debug.Log("Json Level Data Sheet Access ERROR"); break; } }
public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { if (from.CheckSkill(SkillName.Tinkering, -5.0, 15.0)) { from.SendLocalizedMessage(500636); // Your tinker skill was sufficient to make the item lockable. Key key = new Key(KeyType.Copper, Key.RandomValue()); KeyValue = key.KeyValue; DropItem(key); double tinkering = from.Skills[SkillName.Tinkering].Value; int level = (int)(tinkering * 0.8); RequiredSkill = level - 4; LockLevel = level - 14; MaxLockLevel = level + 35; if (LockLevel == 0) { LockLevel = -1; } else if (LockLevel > 95) { LockLevel = 95; } if (RequiredSkill > 95) { RequiredSkill = 95; } if (MaxLockLevel > 95) { MaxLockLevel = 95; } } else { from.SendLocalizedMessage(500637); // Your tinker skill was insufficient to make the item lockable. } return(1); }
public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { Quality = (ClothingQuality)quality; if (makersMark) { Crafter = from; } return(quality); }
public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, ITool tool, CraftItem craftItem, int resHue) { Type resourceType = typeRes; if (resourceType == null) { resourceType = craftItem.Resources.GetAt(0).ItemType; } Hue = CraftResources.GetHue(CraftResources.GetFromType(resourceType)); return(1); }
public bool OnCraft(bool exceptional, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { Exceptional = exceptional; if (makersMark) { Crafter = from; } PlayerConstructed = true; Type resourceType = typeRes; if (resourceType == null) { resourceType = craftItem.Ressources.GetAt(0).ItemType; } Resource = CraftResources.GetFromType(resourceType); CraftContext context = craftSystem.GetContext(from); if (context != null && context.DoNotColor) { Hue = 0; } if (1 < craftItem.Ressources.Count) { resourceType = craftItem.Ressources.GetAt(1).ItemType; if (resourceType == typeof(StarSapphire)) { GemType = GemType.StarSapphire; } else if (resourceType == typeof(Emerald)) { GemType = GemType.Emerald; } else if (resourceType == typeof(Sapphire)) { GemType = GemType.Sapphire; } else if (resourceType == typeof(Ruby)) { GemType = GemType.Ruby; } else if (resourceType == typeof(Citrine)) { GemType = GemType.Citrine; } else if (resourceType == typeof(Amethyst)) { GemType = GemType.Amethyst; } else if (resourceType == typeof(Tourmaline)) { GemType = GemType.Tourmaline; } else if (resourceType == typeof(Amber)) { GemType = GemType.Amber; } else if (resourceType == typeof(Diamond)) { GemType = GemType.Diamond; } } return(exceptional); }
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; } MaxCharges = charges; 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) { this.Exceptional = (quality >= 2); if (makersMark) { this.Crafter = from; } Type resourceType = typeRes; if (resourceType == null) { resourceType = craftItem.Resources.GetAt(0).ItemType; } this.Resource = CraftResources.GetFromType(resourceType); CraftContext context = craftSystem.GetContext(from); if (context != null && context.DoNotColor) { this.Hue = 0; } return(quality); }
public override int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { Quality = (ItemQuality)quality; if (makersMark) { Crafter = from; } Type resourceType = typeRes; if (resourceType == null) { resourceType = craftItem.Resources.GetAt(0).ItemType; } Resource = CraftResources.GetFromType(resourceType); PlayerConstructed = true; CraftContext context = craftSystem.GetContext(from); Hue = CraftResources.GetHue(Resource); return(quality); }
public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, ITool tool, CraftItem craftItem, int resHue) { Quality = (ItemQuality)quality; PlayerConstructed = true; if (makersMark) // Add to CraftItem.cs mark table { Crafter = from; } Type resourceType = typeRes; if (resourceType == null) { resourceType = craftItem.Resources.GetAt(0).ItemType; } Resource = CraftResources.GetFromType(resourceType); DistributeMaterialBonus(); return(quality); }
public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { CraftInit(from); return(1); }
public override int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, ITool tool, CraftItem craftItem, int resHue) { double magery = from.Skills.Magery.Value - 100; if (magery < 0) { magery = 0; } int count = (int)Math.Round(magery * Utility.RandomDouble() / 5); if (count > 2) { count = 2; } if (Utility.RandomDouble() < 0.5) { count = 0; } else { BaseRunicTool.ApplyAttributesTo(this, true, 0, count, 70, 80); } Attributes.SpellDamage = 25; Attributes.LowerManaCost = 10; Attributes.CastSpeed = 1; Attributes.CastRecovery = 1; if (makersMark) { Crafter = from; } return(quality); }
public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { Quality = (ClothingQuality)quality; if (makersMark) { Crafter = from; } if (DefaultResource != CraftResource.None) { Type resourceType = typeRes; if (resourceType == null) { resourceType = craftItem.Resources.GetAt(0).ItemType; } Resource = CraftResources.GetFromType(resourceType); } else { Hue = resHue; } PlayerConstructed = true; CraftContext context = craftSystem.GetContext(from); if (context != null && context.DoNotColor) { Hue = 0; } return(quality); }
public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { PlayerConstructed = true; Type resourceType = typeRes; if (resourceType == null) { resourceType = craftItem.Resources.GetAt(0).ItemType; } if (!craftItem.ForceNonExceptional) { Resource = CraftResources.GetFromType(resourceType); } CraftContext context = craftSystem.GetContext(from); if (context != null && context.DoNotColor) { 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)) { GemType = GemType.StarSapphire; } else if (resourceType == typeof(Emerald)) { GemType = GemType.Emerald; } else if (resourceType == typeof(Sapphire)) { GemType = GemType.Sapphire; } else if (resourceType == typeof(Ruby)) { GemType = GemType.Ruby; } else if (resourceType == typeof(Citrine)) { GemType = GemType.Citrine; } else if (resourceType == typeof(Amethyst)) { GemType = GemType.Amethyst; } else if (resourceType == typeof(Tourmaline)) { GemType = GemType.Tourmaline; } else if (resourceType == typeof(Amber)) { GemType = GemType.Amber; } else if (resourceType == typeof(Diamond)) { GemType = GemType.Diamond; } } #region Mondain's Legacy m_Quality = (ItemQuality)quality; if (makersMark) { m_Crafter = from; } #endregion return(1); }
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 int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { if (resHue > 0) { Hue = resHue; } Type resourceType = typeRes; if (resourceType == null) { resourceType = craftItem.Ressources.GetAt(0).ItemType; } Resource = CraftResources.GetFromType(resourceType); switch (Resource) { case CraftResource.Bloodwood: Attributes.RegenHits = 2; break; case CraftResource.Heartwood: Attributes.Luck = 40; break; case CraftResource.YewWood: Attributes.RegenHits = 1; break; } return(0); }
public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { if (quality >= 2) { m_Exceptional = true; if (makersMark) { m_Crafter = from; } } if (typeRes == null) { typeRes = craftItem.Resources.GetAt(0).ItemType; } CraftResource resource = CraftResources.GetFromType(typeRes); Hue = CraftResources.GetHue(resource); return(quality); }
public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, ITool tool, CraftItem craftItem, int resHue) { Type resourceType = typeRes; if (resourceType == null) { resourceType = craftItem.Resources.GetAt(0).ItemType; } Resource = CraftResources.GetFromType(resourceType); CraftContext context = craftSystem.GetContext(from); if (context != null && context.DoNotColor) { Hue = 0; } 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; } MaxCharges = (Core.SE ? charges * 2 : charges); return(quality); }
public static SmallTailorBOD CreateRandomFor(Mobile m) { SmallBulkEntry[] entries; bool useMaterials = Utility.RandomBool(); double theirSkill = m.Skills[SkillName.Tailoring].Base; if (useMaterials = Utility.RandomBool() && theirSkill >= 6.2) // Ugly, but the easiest leather BOD is Leather Cap which requires at least 6.2 skill. { entries = SmallBulkEntry.TailorLeather; } else { entries = SmallBulkEntry.TailorCloth; } if (entries.Length > 0) { int amountMax; if (theirSkill >= 70.1) { amountMax = Utility.RandomList(10, 15, 20, 20); } else if (theirSkill >= 50.1) { amountMax = Utility.RandomList(10, 15, 15, 20); } else { amountMax = Utility.RandomList(10, 10, 15, 20); } BulkMaterialType material = BulkMaterialType.None; if (useMaterials && theirSkill >= 70.1) { for (int i = 0; i < 20; ++i) { BulkMaterialType check = GetRandomMaterial(BulkMaterialType.Spined, m_TailoringMaterialChances); double skillReq = 0.0; switch (check) { //daat99 OWLTR start - custom resources case BulkMaterialType.DullCopper: skillReq = 52.0; break; case BulkMaterialType.ShadowIron: skillReq = 56.0; break; case BulkMaterialType.Copper: skillReq = 60.0; break; case BulkMaterialType.Bronze: skillReq = 64.0; break; case BulkMaterialType.Gold: skillReq = 68.0; break; case BulkMaterialType.Agapite: skillReq = 72.0; break; case BulkMaterialType.Verite: skillReq = 76.0; break; case BulkMaterialType.Valorite: skillReq = 80.0; break; case BulkMaterialType.Blaze: skillReq = 84.0; break; case BulkMaterialType.Ice: skillReq = 88.0; break; case BulkMaterialType.Toxic: skillReq = 92.0; break; case BulkMaterialType.Electrum: skillReq = 96.0; break; case BulkMaterialType.Platinum: skillReq = 100.0; break; case BulkMaterialType.Spined: skillReq = 64.0; break; case BulkMaterialType.Horned: skillReq = 68.0; break; case BulkMaterialType.Barbed: skillReq = 72.0; break; case BulkMaterialType.Polar: skillReq = 76.0; break; case BulkMaterialType.Synthetic: skillReq = 80.0; break; case BulkMaterialType.BlazeL: skillReq = 84.0; break; case BulkMaterialType.Daemonic: skillReq = 88.0; break; case BulkMaterialType.Shadow: skillReq = 92.0; break; case BulkMaterialType.Frost: skillReq = 96.0; break; case BulkMaterialType.Ethereal: skillReq = 100.0; break; case BulkMaterialType.Heartwood: skillReq = 60.0; break; case BulkMaterialType.Bloodwood: skillReq = 64.0; break; case BulkMaterialType.Frostwood: skillReq = 68.0; break; case BulkMaterialType.OakWood: skillReq = 72.0; break; case BulkMaterialType.AshWood: skillReq = 76.0; break; case BulkMaterialType.YewWood: skillReq = 80.0; break; case BulkMaterialType.Ebony: skillReq = 84.0; break; case BulkMaterialType.Bamboo: skillReq = 88.0; break; case BulkMaterialType.PurpleHeart: skillReq = 92.0; break; case BulkMaterialType.Redwood: skillReq = 96.0; break; case BulkMaterialType.Petrified: skillReq = 100.0; break; //daat99 OWLTR end - custom resources } if (theirSkill >= skillReq) { material = check; break; } } } double excChance = 0.0; if (theirSkill >= 70.1) { excChance = (theirSkill + 80.0) / 200.0; } bool reqExceptional = (excChance > Utility.RandomDouble()); CraftSystem system = DefTailoring.CraftSystem; List <SmallBulkEntry> validEntries = new List <SmallBulkEntry>(); for (int i = 0; i < entries.Length; ++i) { CraftItem item = system.CraftItems.SearchFor(entries[i].Type); if (item != null) { bool allRequiredSkills = true; double chance = item.GetSuccessChance(m, null, system, false, ref allRequiredSkills); if (allRequiredSkills && chance >= 0.0) { if (reqExceptional) { chance = item.GetExceptionalChance(system, chance, m); } if (chance > 0.0) { validEntries.Add(entries[i]); } } } } if (validEntries.Count > 0) { SmallBulkEntry entry = validEntries[Utility.Random(validEntries.Count)]; return(new SmallTailorBOD(entry, material, amountMax, reqExceptional)); } } return(null); }
public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { ItemID = 0x14F0; Faction = Faction.Find(from); return(1); }
public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, ITool tool, CraftItem craftItem, int resHue) { this.Quality = (ItemQuality)quality; if (makersMark) { this.Crafter = from; } if (!craftItem.ForceNonExceptional) { if (typeRes == null) { typeRes = craftItem.Resources.GetAt(0).ItemType; } Resource = CraftResources.GetFromType(typeRes); } return(quality); }
public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, ITool tool, CraftItem craftItem, int resHue) { Quality = (ItemQuality)quality; return(quality); }
public static SmallTailorBOD CreateRandomFor(Mobile m) { SmallBulkEntry[] entries; bool useMaterials; if (useMaterials = Utility.RandomBool()) { entries = SmallBulkEntry.TailorLeather; } else { entries = SmallBulkEntry.TailorCloth; } if (entries.Length > 0) { double theirSkill = m.Skills[SkillName.Tailoring].Base; int amountMax; if (theirSkill >= 70.1) { amountMax = Utility.RandomList(10, 15, 20, 20); } else if (theirSkill >= 50.1) { amountMax = Utility.RandomList(10, 15, 15, 20); } else { amountMax = Utility.RandomList(10, 10, 15, 20); } BulkMaterialType material = BulkMaterialType.None; if (useMaterials && theirSkill >= 70.1) { for (int i = 0; i < 20; ++i) { BulkMaterialType check = GetRandomMaterial(BulkMaterialType.Spined, m_TailoringMaterialChances); double skillReq = 0.0; switch (check) { case BulkMaterialType.DullCopper: skillReq = 65.0; break; case BulkMaterialType.Bronze: skillReq = 80.0; break; case BulkMaterialType.Gold: skillReq = 85.0; break; case BulkMaterialType.Agapite: skillReq = 90.0; break; case BulkMaterialType.Verite: skillReq = 95.0; break; case BulkMaterialType.Valorite: skillReq = 100.0; break; case BulkMaterialType.Spined: skillReq = 65.0; break; case BulkMaterialType.Horned: skillReq = 80.0; break; case BulkMaterialType.Barbed: skillReq = 99.0; break; } if (theirSkill >= skillReq) { material = check; break; } } } double excChance = 0.0; if (theirSkill >= 70.1) { excChance = (theirSkill + 80.0) / 200.0; } bool reqExceptional = (excChance > Utility.RandomDouble()); SmallBulkEntry entry = null; // CraftSystem system = DefTailoring.CraftSystem; CraftSystem system = new DefTailoring(); system.CustomSystem(m); for (int i = 0; i < 150; ++i) { SmallBulkEntry check = entries[Utility.Random(entries.Length)]; CraftItem item = system.CraftItems.SearchFor(check.Type); if (item != null) { bool allRequiredSkills = true; double chance = item.GetSuccessChance(m, null, system, false, ref allRequiredSkills); if (allRequiredSkills && chance >= 0.0) { if (reqExceptional) { chance = item.GetExceptionalChance(system, chance, m); } if (chance > 0.0) { entry = check; break; } } } } if (entry != null) { return(new SmallTailorBOD(entry, material, amountMax, reqExceptional)); } } return(null); }
public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, ITool tool, CraftItem craftItem, int resHue) { PlayerConstructed = true; Quality = (ItemQuality)quality; if (makersMark) { Crafter = from; } return(quality); }
public int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { if (craftSystem is DefAlchemy) { Container pack = from.Backpack; if (pack != null) { #region Mondain's Legacy if ((int)PotionEffect >= (int)PotionEffect.Invisibility) { return(1); } #endregion List <PotionKeg> kegs = pack.FindItemsByType <PotionKeg>(); for (int i = 0; i < kegs.Count; ++i) { PotionKeg keg = kegs[i]; if (keg == null) { continue; } if (keg.Held <= 0 || keg.Held >= 100) { continue; } if (keg.Type != PotionEffect) { continue; } ++keg.Held; Consume(); from.AddToBackpack(new Bottle()); return(-1); // signal placed in keg } } } return(1); }
public static SmallSmithBOD CreateRandomFor(Mobile m) { SmallBulkEntry[] entries; bool useMaterials; if (useMaterials = Utility.RandomBool()) { entries = SmallBulkEntry.BlacksmithArmor; } else { entries = SmallBulkEntry.BlacksmithWeapons; } if (entries.Length > 0) { double theirSkill = m.Skills[SkillName.Forge].Base; int amountMax; if (theirSkill >= 70.1) { amountMax = Utility.RandomList(10, 15, 20, 20); } else if (theirSkill >= 50.1) { amountMax = Utility.RandomList(10, 15, 15, 20); } else { amountMax = Utility.RandomList(10, 10, 15, 20); } BulkMaterialType material = BulkMaterialType.None; if (useMaterials && theirSkill >= 70.1) { for (int i = 0; i < 20; ++i) { BulkMaterialType check = GetRandomMaterial(BulkMaterialType.Cuivre, m_BlacksmithMaterialChances); double skillReq = 0.0; switch (check) { case BulkMaterialType.Cuivre: skillReq = 65.0; break; case BulkMaterialType.Bronze: skillReq = 70.0; break; case BulkMaterialType.Acier: skillReq = 75.0; break; case BulkMaterialType.Argent: skillReq = 80.0; break; case BulkMaterialType.Or: skillReq = 85.0; break; case BulkMaterialType.Mytheril: skillReq = 90.0; break; case BulkMaterialType.Spined: skillReq = 65.0; break; case BulkMaterialType.Horned: skillReq = 80.0; break; case BulkMaterialType.Barbed: skillReq = 99.0; break; default: skillReq = 99.0; break; } if (theirSkill >= skillReq) { material = check; break; } } } double excChance = 0.0; if (theirSkill >= 70.1) { excChance = (theirSkill + 80.0) / 200.0; } bool reqExceptional = (excChance > Utility.RandomDouble()); CraftSystem system = DefBlacksmithy.CraftSystem; List <SmallBulkEntry> validEntries = new List <SmallBulkEntry>(); for (int i = 0; i < entries.Length; ++i) { CraftItem item = system.CraftItems.SearchFor(entries[i].Type); if (item != null) { bool allRequiredSkills = true; double chance = item.GetSuccessChance(m, null, system, false, ref allRequiredSkills); if (allRequiredSkills && chance >= 0.0) { if (reqExceptional) { chance = item.GetExceptionalChance(chance, m, false); } if (chance > 0.0) { validEntries.Add(entries[i]); } } } } if (validEntries.Count > 0) { SmallBulkEntry entry = validEntries[Utility.Random(validEntries.Count)]; return(new SmallSmithBOD(entry, material, amountMax, reqExceptional)); } } return(null); }
public override int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { Quality = (ClothingQuality)quality; if (Quality == ClothingQuality.Exceptional) { DistributeBonuses((tool is BaseRunicTool ? 6 : (Core.SE ? 15 : 14))); //BLAME OSI. (We can't confirm it's an OSI bug yet.) } return(base.OnCraft(quality, makersMark, from, craftSystem, typeRes, tool, craftItem, resHue)); }
public override double GetChanceAtMin(CraftItem item) => 0.0;
public static SmallCarpentryBOD CreateRandomFor(Mobile m) { SmallBulkEntry[] entries; bool useMaterials = Utility.RandomBool(); double theirSkill = BulkOrderSystem.GetBODSkill(m, SkillName.Carpentry); entries = SmallBulkEntry.CarpentrySmalls; if (entries.Length > 0) { int amountMax; if (theirSkill >= 70.1) { amountMax = Utility.RandomList(10, 15, 20, 20); } else if (theirSkill >= 50.1) { amountMax = Utility.RandomList(10, 15, 15, 20); } else { amountMax = Utility.RandomList(10, 10, 15, 20); } BulkMaterialType material = BulkMaterialType.None; if (useMaterials && theirSkill >= 70.1) { for (int i = 0; i < 20; ++i) { BulkMaterialType check = GetRandomMaterial(BulkMaterialType.OakWood, m_CarpentryMaterialChances); double skillReq = GetRequiredSkill(check); if (theirSkill >= skillReq) { material = check; break; } } } double excChance = 0.0; if (theirSkill >= 70.1) { excChance = (theirSkill + 80.0) / 200.0; } bool reqExceptional = (excChance > Utility.RandomDouble()); CraftSystem system = DefCarpentry.CraftSystem; List <SmallBulkEntry> validEntries = new List <SmallBulkEntry>(); for (int i = 0; i < entries.Length; ++i) { CraftItem item = system.CraftItems.SearchFor(entries[i].Type); if (item != null) { bool allRequiredSkills = true; double chance = item.GetSuccessChance(m, null, system, false, ref allRequiredSkills); if (allRequiredSkills && chance >= 0.0) { if (reqExceptional) { chance = item.GetExceptionalChance(system, chance, m); } if (chance > 0.0) { validEntries.Add(entries[i]); } } } } if (validEntries.Count > 0) { SmallBulkEntry entry = validEntries[Utility.Random(validEntries.Count)]; return(new SmallCarpentryBOD(entry, material, amountMax, reqExceptional)); } } return(null); }
public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue) { Quality = (FouetQuality)quality; Crafter = from; Type resourceType = typeRes; if (resourceType == null) { resourceType = craftItem.Resources.GetAt(0).ItemType; } Resource = CraftResources.GetFromType(resourceType); PlayerConstructed = true; CraftContext context = craftSystem.GetContext(from); RareteInit.InitItem(this, quality, Crafter); if (context != null && context.DoNotColor) { Hue = 0; } return(quality); }
private bool Resmelt(Mobile from, Item item, CraftResource resource) { try { if (CraftResources.GetType(resource) != CraftResourceType.Metal) { return(false); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(false); } CraftItem craftItem = DefBlacksmithy.CraftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(false); } CraftRes craftResource = craftItem.Resources.GetAt(0); if (craftResource.Amount < 2) { return(false); // Not enough metal to resmelt } double difficulty = 0.0; switch (resource) { case CraftResource.DullCopper: difficulty = 65.0; break; case CraftResource.ShadowIron: difficulty = 70.0; break; case CraftResource.Copper: difficulty = 75.0; break; case CraftResource.Bronze: difficulty = 80.0; break; case CraftResource.Gold: difficulty = 85.0; break; case CraftResource.Agapite: difficulty = 90.0; break; case CraftResource.Verite: difficulty = 95.0; break; case CraftResource.Valorite: difficulty = 99.0; break; } Type resourceType = info.ResourceTypes[0]; Item ingot = (Item)Activator.CreateInstance(resourceType); if (item is DragonBardingDeed || (item is BaseArmor && ((BaseArmor)item).PlayerConstructed) || (item is BaseWeapon && ((BaseWeapon)item).PlayerConstructed) || (item is BaseClothing && ((BaseClothing)item).PlayerConstructed)) { double mining = from.Skills[SkillName.Mining].Value; if (mining > 100.0) { mining = 100.0; } double amount = (((4 + mining) * craftResource.Amount - 4) * 0.0068); if (amount < 2) { ingot.Amount = 2; } else { ingot.Amount = (int)amount; } } else { ingot.Amount = 2; } if (difficulty > from.Skills[SkillName.Mining].Value) { m_Failure = true; ingot.Delete(); } else { item.Delete(); } from.AddToBackpack(ingot); from.PlaySound(0x2A); from.PlaySound(0x240); return(true); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } return(false); }
public void AddCraftItem( CraftItem craftItem ) { m_arCraftItem.Add( craftItem ); }
private void ItemTabOnClicked(CraftItem item) { SelectedItem = item; BuildItemTab.InfoTitle.Text = item.Name; BuildItemTab.InfoImage.Image = item.Image; BuildItemTab.InfoDescription.Text = item.Description; BuildItemTab.BuildButton.IsVisible = true; string additional = ""; BuildItemTab.InfoDescription.Text += additional; string requirementsText = "Requires:\n"; foreach (ResourceAmount resourceAmount in item.RequiredResources) { requirementsText += resourceAmount.ResourceType.ResourceName + ": " + resourceAmount.NumResources + "\n"; } if (item.RequiredResources.Count == 0) { requirementsText += "Nothing"; } BuildItemTab.InfoRequirements.Text = requirementsText; }