private SmeltResult Resmelt(Mobile from, Item item, CraftResource resource) { try { if (Ethic.IsImbued(item)) { return(SmeltResult.Invalid); } if (CraftResources.GetType(resource) != CraftResourceType.Metal) { return(SmeltResult.Invalid); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(SmeltResult.Invalid); } CraftItem craftItem = m_CraftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(SmeltResult.Invalid); } CraftRes craftResource = craftItem.Resources.GetAt(0); if (craftResource.Amount < 2) { return(SmeltResult.Invalid); // Not enough metal to resmelt } var difficulty = resource switch { CraftResource.DullCopper => 65.0, CraftResource.ShadowIron => 70.0, CraftResource.Copper => 75.0, CraftResource.Bronze => 80.0, CraftResource.Gold => 85.0, CraftResource.Agapite => 90.0, CraftResource.Verite => 95.0, CraftResource.Valorite => 99.0, _ => 0.0 }; if (difficulty > from.Skills.Mining.Value) { return(SmeltResult.NoSkill); } Type resourceType = info.ResourceTypes[0]; Item ingot = (Item)ActivatorUtil.CreateInstance(resourceType); if (item is DragonBardingDeed || item is BaseArmor armor && armor.PlayerConstructed || item is BaseWeapon weapon && weapon.PlayerConstructed || item is BaseClothing clothing && clothing.PlayerConstructed) { ingot.Amount = craftResource.Amount / 2; } else { ingot.Amount = 1; } item.Delete(); from.AddToBackpack(ingot); from.PlaySound(0x2A); from.PlaySound(0x240); return(SmeltResult.Success); }
public override void InitCraftList() { int index = -1; #region Armure d'Os index = AddCraft(typeof(BoneHelm), "Armure d'Os", "Casque d'Os", 40.0, 70.0, typeof(Bone), "Os", 4, 1044463); AddRes(index, typeof(Leather), "Cuir", 2, 1044463); index = AddCraft(typeof(BoneGloves), "Armure d'Os", "Gants d'Os", 40.0, 70.0, typeof(Bone), "Os", 6, 1044463); AddRes(index, typeof(Leather), "Cuir", 3, 1044463); index = AddCraft(typeof(BoneArms), "Armure d'Os", "Brassards d'Os", 40.0, 70.0, typeof(Bone), "Os", 8, 1044463); AddRes(index, typeof(Leather), "Cuir", 4, 1044463); index = AddCraft(typeof(BoneLegs), "Armure d'Os", "Jambieres d'Os", 40.0, 70.0, typeof(Bone), "Os", 10, 1044463); AddRes(index, typeof(Leather), "Cuir", 5, 1044463); index = AddCraft(typeof(BoneChest), "Armure d'Os", "Plastron d'Os", 40.0, 70.0, typeof(Bone), "Os", 12, 1044463); AddRes(index, typeof(Leather), "Cuir", 6, 1044463); #endregion #region Armure de Cuir index = AddCraft(typeof(LeatherGorget), "Armure de Cuir", "Gorget de Cuir", 30.0, 50.0, typeof(Leather), "Cuir", 4, 1044463, true); index = AddCraft(typeof(LeatherCap), "Armure de Cuir", "Casque de Cuir", 30.0, 50.0, typeof(Leather), "Cuir", 2, 1044463, true); index = AddCraft(typeof(LeatherGloves), "Armure de Cuir", "Gants de Cuir", 30.0, 50.0, typeof(Leather), "Cuir", 3, 1044463, true); index = AddCraft(typeof(LeatherArms), "Armure de Cuir", "Brassards de Cuir", 30.0, 50.0, typeof(Leather), "Cuir", 4, 1044463, true); index = AddCraft(typeof(LeatherLegs), "Armure de Cuir", "Jambières de Cuir", 30.0, 50.0, typeof(Leather), "Cuir", 10, 1044463, true); index = AddCraft(typeof(LeatherChest), "Armure de Cuir", "Plastron de Cuir", 30.0, 50.0, typeof(Leather), "Cuir", 12, 1044463, true); index = AddCraft(typeof(LeatherShorts), "Armure de Cuir", "Jupe de Cuir", 30.0, 50.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(LeatherSkirt), "Armure de Cuir", "Jupette de Cuir", 30.0, 50.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(LeatherBustierArms), "Armure de Cuir", "Brassards Féminins", 30.0, 50.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(FemaleLeatherChest), "Armure de Cuir", "Cuirasse Féminine", 30.0, 50.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(LeatherBarbareLeggings), "Armure de Cuir", "Jambière de Cuir Barbare", 35.0, 55.0, typeof(Leather), "Cuir", 10, 1044463, true); index = AddCraft(typeof(LeatherBarbareTunic), "Armure de Cuir", "Plastron de Cuir Barbare", 35.0, 55.0, typeof(Leather), "Cuir", 12, 1044463, true); index = AddCraft(typeof(RoublardLeggings), "Armure de Cuir", "Jambières Roublardes", 35.0, 55.0, typeof(Leather), "Cuir", 10, 1044463, true); index = AddCraft(typeof(RoublardTunic), "Armure de Cuir", "Plastron Roublard", 35.0, 55.0, typeof(Leather), "Cuir", 12, 1044463, true); index = AddCraft(typeof(ElfiqueCuirTunic), "Armure de Cuir", "Plastron de Cuir Elfique", 40.0, 60.0, typeof(Leather), "Cuir", 12, 1044463, true); index = AddCraft(typeof(ElfiqueCuirRobe), "Armure de Cuir", "Vetement de Cuir Elfique", 40.0, 60.0, typeof(Leather), "Cuir", 14, 1044463, true); #endregion #region Armure de Cuir Clouté index = AddCraft(typeof(StuddedGorget), "Armure de Cuir Clouté", "Gorget de Cuir Clouté", 35.0, 55.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(StuddedGloves), "Armure de Cuir Clouté", "Gants de Cuir Clouté", 35.0, 55.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(StuddedArms), "Armure de Cuir Clouté", "Brassards de Cuir Clouté", 35.0, 55.0, typeof(Leather), "Cuir", 10, 1044463, true); index = AddCraft(typeof(StuddedLegs), "Armure de Cuir Clouté", "Jambières de Cuir Clouté", 35.0, 55.0, typeof(Leather), "Cuir", 12, 1044463, true); index = AddCraft(typeof(StuddedChest), "Armure de Cuir Clouté", "Plastron de Cuir Clouté", 35.0, 55.0, typeof(Leather), "Cuir", 14, 1044463, true); index = AddCraft(typeof(StuddedBustierArms), "Armure de Cuir Clouté", "Brassards Féminins", 35.0, 55.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(FemaleStuddedChest), "Armure de Cuir Clouté", "Cuirasse Féminine", 35.0, 55.0, typeof(Leather), "Cuir", 10, 1044463, true); index = AddCraft(typeof(ElfeHelm), "Armure de Cuir Clouté", "Casque de Feuilles", 40.0, 60.0, typeof(Leather), "Cuir", 3, 1044463, true); AddRes(index, typeof(Log), "Bûche", 2, 1044351); index = AddCraft(typeof(ElfeGorget), "Armure de Cuir Clouté", "Gorget de Feuilles", 40.0, 60.0, typeof(Leather), "Cuir", 3, 1044463, true); AddRes(index, typeof(Log), "Bûche", 2, 1044351); index = AddCraft(typeof(ElfeArms), "Armure de Cuir Clouté", "Brassards de Feuilles", 40.0, 60.0, typeof(Leather), "Cuir", 3, 1044463, true); AddRes(index, typeof(Log), "Bûche", 2, 1044351); index = AddCraft(typeof(ElfeLeggings), "Armure de Cuir Clouté", "Jambières de Feuilles", 40.0, 60.0, typeof(Leather), "Cuir", 3, 1044463, true); AddRes(index, typeof(Log), "Bûche", 2, 1044351); index = AddCraft(typeof(ElfeTunic), "Armure de Cuir Clouté", "Tunique de Feuilles", 40.0, 60.0, typeof(Leather), "Cuir", 3, 1044463, true); AddRes(index, typeof(Log), "Bûche", 2, 1044351); index = AddCraft(typeof(StuddedBarbareGreaves), "Armure de Cuir Clouté", "Brassards Clouté Barbare", 45.0, 65.0, typeof(Leather), "Cuir", 10, 1044463, true); index = AddCraft(typeof(StuddedBarbareGorget), "Armure de Cuir Clouté", "Gorget Clouté Barbare", 45.0, 65.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(StuddedBarbareLeggings), "Armure de Cuir Clouté", "Jambières Clouté Barbare", 45.0, 65.0, typeof(Leather), "Cuir", 12, 1044463, true); index = AddCraft(typeof(StuddedBarbareTunic), "Armure de Cuir Clouté", "Tunique Clouté Barbare", 45.0, 65.0, typeof(Leather), "Cuir", 14, 1044463, true); #endregion #region Chaussures index = AddCraft(typeof(Sandals), "Chaussures & Bottes", "Sandales", 10.0, 20.0, typeof(Leather), "Cuir", 4, 1044463, true); index = AddCraft(typeof(Geta), "Chaussures & Bottes", "Geta", 20.0, 30.0, typeof(Leather), "Cuir", 5, 1044463, true); index = AddCraft(typeof(Shoes), "Chaussures & Bottes", "Souliers", 30.0, 50.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(SouliersFourrure), "Chaussures & Bottes", "Souliers Fourrure", 40.0, 60.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(SouliersBoucles), "Chaussures & Bottes", "Souliers Bouclés", 50.0, 70.0, typeof(Leather), "Cuir", 7, 1044463, true); index = AddCraft(typeof(BottesPetites), "Chaussures & Bottes", "Petites Bottes", 30.0, 50.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(Boots), "Chaussures & Bottes", "Bottes", 40.0, 60.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(ThighBoots), "Chaussures & Bottes", "Bottes Longues", 50.0, 70.0, typeof(Leather), "Cuir", 14, 1044463, true); index = AddCraft(typeof(BottesBoucles), "Chaussures & Bottes", "Bottes Bouclés", 60.0, 80.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(Bottes), "Chaussures & Bottes", "Bottes Simples", 60.0, 80.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(BottesVoyage), "Chaussures & Bottes", "Bottes de Voyage", 60.0, 80.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(BottesLourdes), "Chaussures & Bottes", "Bottes Lourdes", 70.0, 90.0, typeof(Leather), "Cuir", 12, 1044463, true); index = AddCraft(typeof(BottesNoble), "Chaussures & Bottes", "Bottes Nobles", 70.0, 90.0, typeof(Leather), "Cuir", 12, 1044463, true); index = AddCraft(typeof(BottesFourrure), "Chaussures & Bottes", "Bottes Fourrure", 80.0, 100.0, typeof(Leather), "Cuir", 10, 1044463, true); index = AddCraft(typeof(BottesSombres), "Chaussures & Bottes", "Bottes Sombres", 90.0, 120.0, typeof(Leather), "Cuir", 16, 1044463, true); #endregion index = AddCraft(typeof(CeinturePauvre), "Accessoires", "Ceinture Pauvre", 0.0, 20.0, typeof(Leather), "Cuir", 4, 1044463, true); index = AddCraft(typeof(Bourse), "Accessoires", "Bourse", 10.0, 30.0, typeof(Leather), "Cuir", 2, 1044463, true); index = AddCraft(typeof(Ceinture), "Accessoires", "Ceinture Simple", 20.0, 40.0, typeof(Leather), "Cuir", 3, 1044463, true); index = AddCraft(typeof(CeintureBourse), "Accessoires", "Ceinture Bourse", 20.0, 40.0, typeof(Leather), "Cuir", 4, 1044463, true); index = AddCraft(typeof(CeintureBoucle), "Accessoires", "Ceinture Bouclé", 30.0, 50.0, typeof(Leather), "Cuir", 4, 1044463, true); index = AddCraft(typeof(CeintureCuir), "Accessoires", "Ceinture de Cuir", 40.0, 70.0, typeof(Leather), "Cuir", 5, 1044463, true); index = AddCraft(typeof(CeinturePendante), "Accessoires", "Ceinture Pendante", 50.0, 80.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(CeintureNordique), "Accessoires", "Ceinture Nordique", 60.0, 90.0, typeof(Leather), "Cuir", 4, 1044463, true); index = AddCraft(typeof(CeintureLongue), "Accessoires", "Ceinture Longue", 70.0, 100.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(Carquois), "Accessoires", "Carquois", 30.0, 60.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(Fourreau), "Accessoires", "Fourreau", 30.0, 60.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(FourreauDos), "Accessoires", "Fourreau de Dos", 30.0, 60.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(FourreauDague), "Accessoires", "Fourreau à Dague", 40.0, 70.0, typeof(Leather), "Cuir", 5, 1044463, true); index = AddCraft(typeof(FourreauDecouvert), "Accessoires", "Fourreau à Découvert", 50.0, 80.0, typeof(Leather), "Cuir", 5, 1044463, true); index = AddCraft(typeof(FourreauRapiere), "Accessoires", "Fourreau d'Estoc", 60.0, 90.0, typeof(Leather), "Cuir", 5, 1044463, true); index = AddCraft(typeof(FourreauEpee), "Accessoires", "Fourreau à Épées", 60.0, 90.0, typeof(Leather), "Cuir", 5, 1044463, true); index = AddCraft(typeof(FourreauSabre), "Accessoires", "Fourreau à Sabres", 70.0, 100.0, typeof(Leather), "Cuir", 5, 1044463, true); index = AddCraft(typeof(SacocheCeinture), "Accessoires", "Ceinture Double", 30.0, 50.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(SacocheHerboriste), "Accessoires", "Sacoche d'Herboriste", 40.0, 60.0, typeof(Leather), "Cuir", 5, 1044463, true); index = AddCraft(typeof(SacocheRoublard), "Accessoires", "Sacoche de Roublard", 50.0, 70.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(SacocheAventure), "Accessoires", "Sacoche d'Aventurier", 60.0, 80.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(Pardessus), "Accessoires", "Pardessus", 20.0, 40.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(PardessusBarbare), "Accessoires", "Pardessus Barbare", 40.0, 60.0, typeof(Leather), "Cuir", 6, 1044463, true); index = AddCraft(typeof(EpauliereBarbare), "Accessoires", "Épaulière Barbare", 60.0, 80.0, typeof(Leather), "Cuir", 8, 1044463, true); index = AddCraft(typeof(FouetCuir), "Accessoires", "Fouet en cuir", 80, 100, typeof(Leather), "Cuir", 6, 1044463, true); // Set the overridable material SetSubRes(typeof(Bone), "Os"); // Add every material you want the player to be able to choose from // This will override the overridable material AddSubRes(typeof(Bone), "Os", CraftResources.GetSkill(CraftResource.RegularBones), 1049311); AddSubRes(typeof(GobelinBone), "Os Gobelin", CraftResources.GetSkill(CraftResource.GobelinBones), 1049311); AddSubRes(typeof(ReptilienBone), "Os Reptilien", CraftResources.GetSkill(CraftResource.ReptilienBones), 1049311); AddSubRes(typeof(NordiqueBone), "Os Nordique", CraftResources.GetSkill(CraftResource.NordiqueBones), 1049311); AddSubRes(typeof(DesertiqueBone), "Os Désertique", CraftResources.GetSkill(CraftResource.DesertiqueBones), 1049311); AddSubRes(typeof(MaritimeBone), "Os Maritime", CraftResources.GetSkill(CraftResource.MaritimeBones), 1049311); AddSubRes(typeof(VolcaniqueBone), "Os Volcanique", CraftResources.GetSkill(CraftResource.VolcaniqueBones), 1049311); AddSubRes(typeof(GeantBone), "Os Géant", CraftResources.GetSkill(CraftResource.GeantBones), 1049311); AddSubRes(typeof(MinotaureBone), "Os Minotaure", CraftResources.GetSkill(CraftResource.MinotaureBones), 1049311); AddSubRes(typeof(OphidienBone), "Os Ophidien", CraftResources.GetSkill(CraftResource.OphidienBones), 1049311); AddSubRes(typeof(ArachnideBone), "Os Arachnide", CraftResources.GetSkill(CraftResource.ArachnideBones), 1049311); AddSubRes(typeof(MagiqueBone), "Os Magique", CraftResources.GetSkill(CraftResource.MagiqueBones), 1049311); AddSubRes(typeof(AncienBone), "Os Ancien", CraftResources.GetSkill(CraftResource.AncienBones), 1049311); AddSubRes(typeof(DemonBone), "Os Demoniaque", CraftResources.GetSkill(CraftResource.DemonBones), 1049311); AddSubRes(typeof(DragonBone), "Os Dragonique", CraftResources.GetSkill(CraftResource.DragonBones), 1049311); // Set the overridable material 2 SetSubRes2(typeof(Leather), "Cuir"); // Add every material you want the player to be able to choose from // This will override the overridable material AddSubRes2(typeof(Leather), "Cuir", CraftResources.GetSkill(CraftResource.RegularLeather), 1049311); AddSubRes2(typeof(ReptilienLeather), "Cuir Reptilien", CraftResources.GetSkill(CraftResource.ReptilienLeather), 1049311); AddSubRes2(typeof(NordiqueLeather), "Cuir Nordique", CraftResources.GetSkill(CraftResource.NordiqueLeather), 1049311); AddSubRes2(typeof(DesertiqueLeather), "Cuir Désertique", CraftResources.GetSkill(CraftResource.DesertiqueLeather), 1049311); AddSubRes2(typeof(MaritimeLeather), "Cuir Maritime", CraftResources.GetSkill(CraftResource.MaritimeLeather), 1049311); AddSubRes2(typeof(VolcaniqueLeather), "Cuir Volcanique", CraftResources.GetSkill(CraftResource.VolcaniqueLeather), 1049311); AddSubRes2(typeof(GeantLeather), "Cuir Géant", CraftResources.GetSkill(CraftResource.GeantLeather), 1049311); AddSubRes2(typeof(MinotaureLeather), "Cuir Minotaure", CraftResources.GetSkill(CraftResource.MinotaurLeather), 1049311); AddSubRes2(typeof(OphidienLeather), "Cuir Ophidien", CraftResources.GetSkill(CraftResource.OphidienLeather), 1049311); AddSubRes2(typeof(ArachnideLeather), "Cuir Arachnide", CraftResources.GetSkill(CraftResource.ArachnideLeather), 1049311); AddSubRes2(typeof(MagiqueLeather), "Cuir Magique", CraftResources.GetSkill(CraftResource.MagiqueLeather), 1049311); AddSubRes2(typeof(AncienLeather), "Cuir Ancien", CraftResources.GetSkill(CraftResource.AncienLeather), 1049311); AddSubRes2(typeof(DemoniaqueLeather), "Cuir Demoniaque", CraftResources.GetSkill(CraftResource.DemoniaqueLeather), 1049311); AddSubRes2(typeof(DragoniqueLeather), "Cuir Dragonique", CraftResources.GetSkill(CraftResource.DragoniqueLeather), 1049311); AddSubRes2(typeof(LupusLeather), "Cuir Lupus", CraftResources.GetSkill(CraftResource.LupusLeather), 1049311); MarkOption = true; Repair = Core.AOS; CanEnhance = Core.AOS; }
private SmeltResult Resmelt(Mobile from, Item item, CraftResource resource) { try { if (CraftResources.GetType(resource) != CraftResourceType.Metal) { return(SmeltResult.Invalid); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(SmeltResult.Invalid); } CraftItem craftItem = m_CraftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(SmeltResult.Invalid); } CraftRes craftResource = craftItem.Resources.GetAt(0); if (craftResource.Amount < 2) { return(SmeltResult.Invalid); // Not enough metal to resmelt } double difficulty = 0.0; switch (resource) { default: difficulty = 0.0; break; case CraftResource.Cuivre: difficulty = 40.0; break; case CraftResource.Bronze: difficulty = 40.0; break; case CraftResource.Acier: difficulty = 60.0; break; case CraftResource.Argent: difficulty = 60.0; break; case CraftResource.Or: difficulty = 60.0; break; case CraftResource.Mytheril: difficulty = 80.0; break; case CraftResource.Luminium: difficulty = 80.0; break; case CraftResource.Obscurium: difficulty = 80.0; break; case CraftResource.Mystirium: difficulty = 90.0; break; case CraftResource.Dominium: difficulty = 90.0; break; case CraftResource.Eclarium: difficulty = 100.0; break; case CraftResource.Venarium: difficulty = 90.0; break; case CraftResource.Athenium: difficulty = 100.0; break; case CraftResource.Umbrarium: difficulty = 100.0; break; } if (difficulty > from.Skills[SkillName.Excavation].Value) { return(SmeltResult.NoSkill); } 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)) { ingot.Amount = craftResource.Amount / 2; } else { ingot.Amount = 1; } item.Delete(); from.AddToBackpack(ingot); from.PlaySound(0x2A); from.PlaySound(0x240); return(SmeltResult.Success); } catch { } return(SmeltResult.Invalid); }
public void DisplayRewardPage() { AddPage(Page); double points = PointsSystem.VoidPool.GetPoints(User); int offset = 110; int next = 0; int max = GetMax(VoidPoolRewards.Rewards); while (offset + next < 300 && Index < VoidPoolRewards.Rewards.Count) { CollectionItem item = VoidPoolRewards.Rewards[Index]; int height = Math.Max(item.Height, 20); if (points >= item.Points) { this.AddButton(35, offset + (int)(height / 2) - 5, 0x837, 0x838, 200 + Index, GumpButtonType.Reply, 0); this.AddTooltip(item.Tooltip); } int y = offset - item.Y; if (item.Height < 20) { y += (20 - item.Height) / 2; } Item i = Owner.Backpack.FindItemByType(item.Type); int hue; if (i != null) { hue = points >= item.Points ? i.Hue : 0x3E9; } else { hue = points >= item.Points ? CraftResources.GetHue((CraftResource)item.Hue) : 0x3E9; } AddItem(55 - item.X + max / 2 - item.Width / 2, y, item.ItemID, hue); if (i != null) { AddItemProperty(i.Serial); } else { AddTooltip(item.Tooltip); } AddLabel(65 + max, offset + (int)(height / 2) - 10, points >= item.Points ? 0x64 : 0x21, item.Points.ToString()); offset += 5 + height; Index++; if (Index < VoidPoolRewards.Rewards.Count) { next = Math.Max(VoidPoolRewards.Rewards[Index].Height, 20); } else { next = 0; } } if (Page > 1) { AddButton(150, 335, 0x15E3, 0x15E7, 0, GumpButtonType.Page, Page - 1); AddHtmlLocalized(170, 335, 60, 20, 1074880, 0x1, false, false); // Previous } Page++; if (Index < VoidPoolRewards.Rewards.Count) { AddButton(300, 335, 0x15E1, 0x15E5, 0, GumpButtonType.Page, Page); AddHtmlLocalized(240, 335, 60, 20, 1072854, 0x1, false, false); // <div align=right>Next</div> } }
public static EnhanceResult Invoke(Mobile from, CraftSystem craftSystem, BaseTool tool, Item item, CraftResource resource, Type resType, ref object resMessage) { if (item == null) { return(EnhanceResult.BadItem); } if (!item.IsChildOf(from.Backpack)) { return(EnhanceResult.NotInBackpack); } if (!(item is BaseArmor) && !(item is BaseWeapon)) { return(EnhanceResult.BadItem); } if (CraftResources.IsStandard(resource)) { return(EnhanceResult.BadResource); } CraftItem craftItem = craftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Ressources.Count == 0) { return(EnhanceResult.BadItem); } int quality = 0; bool allRequiredSkills = false; if (!craftItem.CheckSkills(from, resType, craftSystem, ref quality, ref allRequiredSkills, false)) { return(EnhanceResult.NoSkill); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(EnhanceResult.BadResource); } CraftAttributeInfo attributes = info.AttributeInfo; if (attributes == null) { return(EnhanceResult.BadResource); } int resHue = 0, maxAmount = 0; if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.None, ref resMessage)) { return(EnhanceResult.NoResources); } AncientSmithyHammer hammer = from.FindItemOnLayer(Layer.OneHanded) as AncientSmithyHammer; if (hammer != null) { hammer.UsesRemaining--; if (hammer.UsesRemaining < 1) { hammer.Delete(); } } int phys = 0, fire = 0, cold = 0, pois = 0, nrgy = 0; int dura = 0, luck = 0, lreq = 0, dinc = 0; int baseChance = 0; bool physBonus = false; bool fireBonus = false; bool coldBonus = false; bool nrgyBonus = false; bool poisBonus = false; bool duraBonus = false; bool luckBonus = false; bool lreqBonus = false; bool dincBonus = false; if (item is BaseWeapon) { BaseWeapon weapon = (BaseWeapon)item; if (!CraftResources.IsStandard(weapon.Resource)) { return(EnhanceResult.AlreadyEnhanced); } baseChance = 20; dura = weapon.MaxHits; luck = weapon.Attributes.Luck; lreq = weapon.WeaponAttributes.LowerStatReq; dinc = weapon.Attributes.WeaponDamage; fireBonus = (attributes.WeaponFireDamage > 0); coldBonus = (attributes.WeaponColdDamage > 0); nrgyBonus = (attributes.WeaponEnergyDamage > 0); poisBonus = (attributes.WeaponPoisonDamage > 0); duraBonus = (attributes.WeaponDurability > 0); luckBonus = (attributes.WeaponLuck > 0); lreqBonus = (attributes.WeaponLowerRequirements > 0); dincBonus = (dinc > 0); } else { BaseArmor armor = (BaseArmor)item; if (!CraftResources.IsStandard(armor.Resource)) { return(EnhanceResult.AlreadyEnhanced); } baseChance = 20; phys = armor.PhysicalResistance; fire = armor.FireResistance; cold = armor.ColdResistance; pois = armor.PoisonResistance; nrgy = armor.EnergyResistance; dura = armor.MaxHitPoints; luck = armor.Attributes.Luck; lreq = armor.ArmorAttributes.LowerStatReq; physBonus = (attributes.ArmorPhysicalResist > 0); fireBonus = (attributes.ArmorFireResist > 0); coldBonus = (attributes.ArmorColdResist > 0); nrgyBonus = (attributes.ArmorEnergyResist > 0); poisBonus = (attributes.ArmorPoisonResist > 0); duraBonus = (attributes.ArmorDurability > 0); luckBonus = (attributes.ArmorLuck > 0); lreqBonus = (attributes.ArmorLowerRequirements > 0); dincBonus = false; } int skill = from.Skills[craftSystem.MainSkill].Fixed / 10; if (skill >= 100) { baseChance -= (skill - 90) / 10; } EnhanceResult res = EnhanceResult.Success; if (physBonus) { CheckResult(ref res, baseChance + phys); } if (fireBonus) { CheckResult(ref res, baseChance + fire); } if (coldBonus) { CheckResult(ref res, baseChance + cold); } if (nrgyBonus) { CheckResult(ref res, baseChance + nrgy); } if (poisBonus) { CheckResult(ref res, baseChance + pois); } if (duraBonus) { CheckResult(ref res, baseChance + (dura / 40)); } if (luckBonus) { CheckResult(ref res, baseChance + 10 + (luck / 2)); } if (lreqBonus) { CheckResult(ref res, baseChance + (lreq / 4)); } if (dincBonus) { CheckResult(ref res, baseChance + (dinc / 4)); } switch (res) { case EnhanceResult.Broken: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } item.Delete(); break; } case EnhanceResult.Success: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.All, ref resMessage)) { return(EnhanceResult.NoResources); } if (item is BaseWeapon) { ((BaseWeapon)item).Resource = resource; } else { ((BaseArmor)item).Resource = resource; } break; } case EnhanceResult.Failure: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } break; } } return(res); }
public override Item Construct(Type type, Mobile from) { if (type == typeof(TreasureMap)) { int level; //if ( from is PlayerMobile && ((PlayerMobile)from).Young && from.Map == Map.Trammel && TreasureMap.IsInHavenIsland( from ) ) // level = 0; //else level = 1; return(new TreasureMap(level, /*from.Map == Map.Felucca ?*/ Map.Felucca /* : Map.Trammel*/)); } else if (type == typeof(MessageInABottle)) { return(new MessageInABottle(/*from.Map == Map.Felucca ?*/ Map.Felucca /* : Map.Trammel*/)); } Container pack = from.Backpack; if (pack != null) { List <SOS> messages = pack.FindItemsByType <SOS>(); for (int i = 0; i < messages.Count; ++i) { SOS sos = messages[i]; if (from.Map == sos.TargetMap && from.InRange(sos.TargetLocation, 60)) { Item preLoot = null; switch (Utility.Random(8)) { case 0: // Body parts { int[] list = new int[] { 0x1CDD, 0x1CE5, // arm 0x1CE0, 0x1CE8, // torso 0x1CE1, 0x1CE9, // head 0x1CE2, 0x1CEC // leg }; preLoot = new ShipwreckedItem(Utility.RandomList(list)); break; } case 1: // Bone parts { int[] list = new int[] { 0x1AE0, 0x1AE1, 0x1AE2, 0x1AE3, 0x1AE4, // skulls 0x1B09, 0x1B0A, 0x1B0B, 0x1B0C, 0x1B0D, 0x1B0E, 0x1B0F, 0x1B10, // bone piles 0x1B15, 0x1B16 // pelvis bones }; preLoot = new ShipwreckedItem(Utility.RandomList(list)); break; } case 2: // Paintings and portraits { preLoot = new ShipwreckedItem(Utility.Random(0xE9F, 10)); break; } case 3: // Pillows { preLoot = new ShipwreckedItem(Utility.Random(0x13A4, 11)); break; } case 4: // Shells { preLoot = new ShipwreckedItem(Utility.Random(0xFC4, 9)); break; } case 5: //Hats { if (Utility.RandomBool()) { preLoot = new SkullCap(); } else { preLoot = new TricorneHat(); } break; } case 6: // Misc { int[] list = new int[] { 0x1EB5, // unfinished barrel 0xA2A, // stool 0xC1F, // broken clock 0x1047, 0x1048, // globe 0x1EB1, 0x1EB2, 0x1EB3, 0x1EB4 // barrel staves }; if (Utility.Random(list.Length + 1) == 0) { preLoot = new Candelabra(); } else { preLoot = new ShipwreckedItem(Utility.RandomList(list)); } break; } } if (preLoot != null) { if (preLoot is IShipwreckedItem) { ((IShipwreckedItem)preLoot).IsShipwreckedItem = true; } return(preLoot); } LockableContainer chest = null; switch (Utility.Random(3)) { case 0: chest = new MetalGoldenChest(); break; case 1: chest = new MetalChest(); break; default: case 2: chest = new WoodenChest(); break; } if (sos.IsAncient) { int hue = 1150; if (0.20 > Utility.RandomDouble()) { switch (Utility.Random((chest is WoodenChest) ? 6 : 14)) { case 0: hue = 1193; break; case 1: hue = 1281; break; case 2: hue = 1190; break; case 3: hue = 1165; break; case 4: hue = 1160; break; case 5: hue = 1126; break; case 6: hue = CraftResources.GetInfo(CraftResource.Valorite).Hue; break; case 7: hue = CraftResources.GetInfo(CraftResource.Verite).Hue; break; case 8: hue = CraftResources.GetInfo(CraftResource.Agapite).Hue; break; case 9: hue = CraftResources.GetInfo(CraftResource.Gold).Hue; break; case 10: hue = CraftResources.GetInfo(CraftResource.Bronze).Hue; break; case 11: hue = CraftResources.GetInfo(CraftResource.Copper).Hue; break; case 12: hue = CraftResources.GetInfo(CraftResource.ShadowIron).Hue; break; case 13: hue = CraftResources.GetInfo(CraftResource.DullCopper).Hue; break; } } chest.Hue = hue; } else if ((chest is MetalChest || chest is MetalGoldenChest) && (0.5 * sos.Level) >= Utility.RandomDouble()) { int randhue = Utility.Random(120); CraftResource resource = CraftResource.None; if (randhue >= 118) { resource = CraftResource.Valorite; } else if (randhue >= 115) { resource = CraftResource.Verite; } else if (randhue >= 110) { resource = CraftResource.Agapite; } else if (randhue >= 100) { resource = CraftResource.Gold; } else if (randhue >= 90) { resource = CraftResource.Bronze; } else if (randhue >= 70) { resource = CraftResource.Copper; } else if (randhue >= 40) { resource = CraftResource.ShadowIron; } else { resource = CraftResource.DullCopper; } chest.Hue = CraftResources.GetInfo(resource).Hue; } int soslevel = Math.Max(1, Math.Max(4, sos.Level)); TreasureMapChest.Fill(chest, soslevel); if (sos.IsAncient) { chest.DropItem(new FabledFishingNet()); } else { chest.DropItem(new SpecialFishingNet()); } chest.Movable = true; chest.Locked = false; chest.Name = "treasure chest"; chest.IsShipwreckedItem = true; if (sos.Level > 0) { chest.TrapType = TrapType.ExplosionTrap; chest.TrapPower = soslevel * Utility.RandomMinMax(5, 15); chest.TrapLevel = 0; } else { chest.TrapType = TrapType.None; chest.TrapPower = 0; chest.TrapLevel = 0; } sos.Delete(); return(chest); } } } return(base.Construct(type, from)); }
public override void OnResponse(NetState state, RelayInfo info) { Mobile from = state.Mobile; if (!BaseTool.CheckAccessible(m_Tool, from, true)) { return; } switch (info.ButtonID) { case 0: break; case 1: // prefix from.SendGump(new ItemNameGump(m_ToReforge, m_Tool, m_Options, m_Prefix, m_Suffix, true)); break; case 2: // suffix from.SendGump(new ItemNameGump(m_ToReforge, m_Tool, m_Options, m_Prefix, m_Suffix, false)); break; case 3: // Reforge Item { if (!RunicReforging.CanReforge(from, m_ToReforge, m_Tool.CraftSystem)) { return; } int totalCharges = GetTotalCharges(); if (m_Tool.UsesRemaining >= totalCharges) { CraftResourceInfo resInfo = CraftResources.GetInfo(m_Tool.Resource); if (resInfo == null) { return; } CraftAttributeInfo attrs = resInfo.AttributeInfo; int min = 10; int max = 80; if (min < 10) { min = 10; } if (max > 100) { max = 100; } int budget = GetBudget(); ReforgedPrefix prefix = ReforgedPrefix.None; ReforgedSuffix suffix = ReforgedSuffix.None; if ((m_Options & ReforgingOption.GrandArtifice) != 0) { // choosing name 1 if ((m_Options & ReforgingOption.InspiredArtifice) != 0) { prefix = m_Prefix; if (prefix == ReforgedPrefix.None) { from.SendLocalizedMessage(1152287); // Re-forging failed. You did not choose a name! Please try again. return; } } else { // Not choosing name 1 or 2 if ((m_Options & ReforgingOption.SublimeArtifice) == 0) { // random prefix AND suffix if ((m_Options & ReforgingOption.ExaltedArtifice) != 0) { prefix = RunicReforging.ChooseRandomPrefix(m_ToReforge, budget); suffix = RunicReforging.ChooseRandomSuffix(m_ToReforge, budget, m_Prefix); } else // random prefix OR suffix { if (0.5 > Utility.RandomDouble()) { prefix = RunicReforging.ChooseRandomPrefix(m_ToReforge, budget); } else { suffix = RunicReforging.ChooseRandomSuffix(m_ToReforge, budget, m_Prefix); } } } } } if ((m_Options & ReforgingOption.ExaltedArtifice) != 0) { if ((m_Options & ReforgingOption.SublimeArtifice) != 0) { suffix = m_Suffix; if (suffix == ReforgedSuffix.None) { from.SendLocalizedMessage(1152287); // Re-forging failed. You did not choose a name! Please try again. return; } } else { suffix = RunicReforging.ChooseRandomSuffix(m_ToReforge, budget, m_Prefix); budget = Math.Min(800, budget + 50); } } // 50% chance to switch prefix/suffix around if ((prefix != ReforgedPrefix.None || suffix != ReforgedSuffix.None) && 0.5 > Utility.RandomDouble()) { int pre = (int)prefix; int suf = (int)suffix; prefix = (ReforgedPrefix)suf; suffix = (ReforgedSuffix)pre; } RunicReforging.ApplyReforgedProperties(m_ToReforge, prefix, suffix, budget, min, max, RunicReforging.GetPropertyCount(m_Tool), 0, m_Tool, m_Options); OnAfterReforged(m_ToReforge); from.SendLocalizedMessage(1152286); // You re-forge the item! from.PlaySound(0x665); m_Tool.UsesRemaining -= totalCharges; if (m_Tool.UsesRemaining <= 0) { m_Tool.Delete(); from.SendLocalizedMessage(1044038); // You have worn out your tool! } } break; } case 4: from.SendGump(new ReforgingHelpGump()); break; default: // Option { ReforgingOption option = Options[info.ButtonID - 100]; if (HasMetPrerequisite(option)) { if ((m_Options & option) == 0) { m_Options |= option; if (m_Prefix != ReforgedPrefix.None && !RunicReforging.HasSelection((int)m_Prefix, m_ToReforge, m_Tool, m_Options, -1, -1)) { m_Prefix = ReforgedPrefix.None; m_Context.Prefix = ReforgedPrefix.None; } if (m_Suffix != ReforgedSuffix.None && !RunicReforging.HasSelection((int)m_Suffix, m_ToReforge, m_Tool, m_Options, -1, -1)) { m_Suffix = ReforgedSuffix.None; m_Context.Suffix = ReforgedSuffix.None; } } else { m_Options ^= option; InvalidatePrerequisite(option); } m_Context.Contexts[m_Tool] = m_Options; } from.SendGump(new RunicReforgingGump(from, m_ToReforge, m_Tool)); break; } } }
public static string ComputeName(BaseClothing bc) { if (bc.IsRenamed && !string.IsNullOrEmpty(bc.Name)) { return(bc.Name); } string name; if (bc.Name == null) { name = CliLoc.LocToString(bc.LabelNumber); } else { name = bc.Name; } if (bc.Amount > 1) { name = name + "s"; } var resource = string.Empty; if (bc.Resource != CraftResource.None && bc.Resource != CraftResource.Iron) { resource = CraftResources.GetName(bc.Resource); } if (bc.Crafter != null) { if (bc.Quality == ClothingQuality.Exceptional) { if (bc.Resource != CraftResource.None) { name = string.Format("{0} {1} {2} crafted by {3}", "Exceptional", resource.ToLower(), name.ToLower(), bc.Crafter.Name); } else { name = string.Format("{0} {1} crafted by {2}", "Exceptional", name.ToLower(), bc.Crafter.Name); } } else if (bc.Resource != CraftResource.None) { if (!string.IsNullOrEmpty(resource)) { name = string.Format("{0} {1} crafted by {2}", resource, name.ToLower(), bc.Crafter.Name); } else { name = string.Format("{0} crafted by {1}", name, bc.Crafter.Name); } } else { name = string.Format("{0} crafted by {1}", name.ToLower(), bc.Crafter.Name); } } else if (bc.Resource != CraftResource.None) { if (bc.Quality == ClothingQuality.Exceptional) { if (!string.IsNullOrEmpty(resource)) { name = string.Format("{0} {1} {2}", "Exceptional", resource.ToLower(), name.ToLower()); } else { name = string.Format(" {0} {1}", "Exceptional", name.ToLower()); } } else if (!string.IsNullOrEmpty(resource)) { name = string.Format("{0} {1}", resource, name.ToLower()); } else { name = string.Format(name); } } else if (bc.Resource == CraftResource.None) { if (bc.Quality == ClothingQuality.Exceptional) { name = string.Format("{0} {1}", "Exceptional", name.ToLower()); } } if (bc.Amount > 1) { name = bc.Amount + " " + name; } return(name); }
public override int GetCraftSkillRequired(int itemSkillRequired, Type craftResourceType) { var resource = CraftResources.GetFromType(craftResourceType); return(itemSkillRequired + (int)(CraftResources.GetCraftSkillRequired(resource) / 3)); }
public static string ComputeName(BaseArmor ba) { if (ba.IsRenamed && !string.IsNullOrEmpty(ba.Name)) { return(ba.Name); } string name; if (ba.Name == null) { name = CliLoc.LocToString(ba.LabelNumber); } else { name = ba.Name; } if (ba.Amount > 1) { name = name + "s"; } var resource = string.Empty; if (ba.Resource != CraftResource.None && ba.Resource != CraftResource.Iron) { resource = CraftResources.GetName(ba.Resource); } if ((ba.ProtectionLevel != ArmorProtectionLevel.Regular))// && ba.Resource == CraftResource.Iron ) //If the armor is magical { if (ba.Quality == ArmorQuality.Exceptional) { name = string.Format("{0} {1} of {2}", "Exceptional", name.ToLower(), CliLoc.LocToString((1038005 + (int)ba.ProtectionLevel)).ToLower()); } else { name = string.Format("{0} of {1}", name, CliLoc.LocToString((1038005 + (int)ba.ProtectionLevel)).ToLower()); } } else if (ba.Resource == CraftResource.None && ba.ProtectionLevel == ArmorProtectionLevel.Regular) //If the armor is not magical and not crafted { if (ba.Quality == ArmorQuality.Exceptional) { name = string.Format("{0} {1}", "Exceptional", name); } } else if (ba.Resource != CraftResource.None) { //If it's crafted by a player if (ba.Crafter != null) { if (ba.Quality == ArmorQuality.Exceptional) { if (ba.Resource != CraftResource.Iron) { name = string.Format("{0} {1} {2} crafted by {3}", "Exceptional", resource.ToLower(), name.ToLower(), ba.Crafter.Name); } else { name = string.Format("{0} {1} crafted by {2}", "Exceptional", name.ToLower(), ba.Crafter.Name); } } else if (ba.Resource != CraftResource.Iron) { name = string.Format("{0} {1}", resource, name.ToLower()); } else { name = string.Format("{0}", name); } } else if (ba.Quality == ArmorQuality.Exceptional) { if (!string.IsNullOrEmpty(resource)) { name = string.Format("{0} {1} {2}", "Exceptional", resource.ToLower(), name.ToLower()); } else { name = string.Format("{0} {1}", "Exceptional", name.ToLower()); } } else if (!string.IsNullOrEmpty(resource)) { name = string.Format("{0} {1}", resource, name.ToLower()); } else { name = string.Format(name); } } if (ba.Amount > 1) { name = ba.Amount + " " + name; } return(name); }
public static string ComputeName(BaseWeapon bw) { if (bw.IsRenamed && !string.IsNullOrEmpty(bw.Name)) { return(bw.Name); } string name; if (bw.Name == null) { name = CliLoc.LocToString(bw.LabelNumber); } else { name = bw.Name; } if (bw.Amount > 1) { name = name + "s"; } var resource = string.Empty; if (bw.Slayer != SlayerName.None) { SlayerEntry entry = SlayerGroup.GetEntryByName(bw.Slayer); if (entry != null) { string slayername = CliLoc.LocToString(entry.Title); name = slayername + " " + name.ToLower(); } } if (bw.Resource != CraftResource.None && bw.Resource != CraftResource.Iron) { resource = CraftResources.GetName(bw.Resource); } if ((bw.DamageLevel != WeaponDamageLevel.Regular || bw.AccuracyLevel != WeaponAccuracyLevel.Regular) && bw.Resource == CraftResource.Iron) { //If the weapon is accurate or magical if (bw.DamageLevel != WeaponDamageLevel.Regular && bw.AccuracyLevel != WeaponAccuracyLevel.Regular) { name = string.Format("{0} {1} of {2}", ComputeAccuracyLevel(bw), name.ToLower(), CliLoc.LocToString((1038015 + (int)bw.DamageLevel)).ToLower()); } else if (bw.AccuracyLevel != WeaponAccuracyLevel.Regular) { name = string.Format("{0} {1}", ComputeAccuracyLevel(bw), name.ToLower()); } else { name = string.Format("{0} of {1}", name, CliLoc.LocToString((1038015 + (int)bw.DamageLevel)).ToLower()); } if (bw.Quality == WeaponQuality.Exceptional) { name = "Exceptional " + name.ToLower(); } } else if (bw.Resource != CraftResource.None) { //If it's crafted by a player if (bw.Crafter != null) { if (bw.Quality == WeaponQuality.Exceptional) { if (bw.Resource != CraftResource.Iron) { name = string.Format("{0} {1} {2} crafted by {3}", "Exceptional", resource.ToLower(), name.ToLower(), bw.Crafter.Name); } else { name = string.Format("{0} {1} crafted by {2}", "Exceptional", name.ToLower(), bw.Crafter.Name); } } else if (bw.Resource != CraftResource.Iron) { if (!string.IsNullOrEmpty(resource)) { name = string.Format("{0} {1} crafted by {2}", resource, name.ToLower(), bw.Crafter.Name); } else { name = string.Format("{0} crafted by {1}", name, bw.Crafter.Name); } } else { name = string.Format("{0} crafted by {1}", name, bw.Crafter.Name); } } else if (bw.Resource != CraftResource.Iron) { if (bw.Quality == WeaponQuality.Exceptional) { if (!string.IsNullOrEmpty(resource)) { name = string.Format("{0} {1} {2}", "Exceptional", resource.ToLower(), name.ToLower()); } else { name = string.Format("{0}, {1}", "Exceptional", name.ToLower()); } } else if (!string.IsNullOrEmpty(resource)) { name = string.Format("{0} {1}", resource, name.ToLower()); } else { name = string.Format(name); } } else if (bw.Resource == CraftResource.Iron) { if (bw.Quality == WeaponQuality.Exceptional) { name = string.Format("{0} {1}", "Exceptional", name.ToLower()); } } } if (bw.Amount > 1) { name = bw.Amount + " " + name; } return(name); }
public static EnhanceResult Invoke(Mobile from, CraftSystem craftSystem, IBaseTool tool, Item item, CraftResource resource, Type resType, ref object resMessage) { if (item == null) { return(EnhanceResult.BadItem); } if (!item.IsChildOf(from.Backpack)) { return(EnhanceResult.NotInBackpack); } if (!(item is BaseArmor) && !(item is BaseWeapon)) { return(EnhanceResult.BadItem); } if (item is IArcaneEquip) { IArcaneEquip eq = (IArcaneEquip)item; if (eq.IsArcane) { return(EnhanceResult.BadItem); } } if (CraftResources.IsStandard(resource)) { return(EnhanceResult.BadResource); } int num = craftSystem.CanCraft(from, tool, item.GetType()); if (num > 0) { resMessage = num; return(EnhanceResult.None); } CraftItem craftItem = craftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(EnhanceResult.BadItem); } bool allRequiredSkills = false; if (craftItem.GetSuccessChance(from, resType, craftSystem, false, ref allRequiredSkills) <= 0.0) { return(EnhanceResult.NoSkill); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(EnhanceResult.BadResource); } CraftAttributeInfo attributes = info.AttributeInfo; if (attributes == null) { return(EnhanceResult.BadResource); } int resHue = 0, maxAmount = 0; if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.None, ref resMessage)) { return(EnhanceResult.NoResources); } if (craftSystem is DefBlacksmithy) { AncientSmithHammerWeapon hammer = from.FindItemOnLayer(Layer.OneHanded) as AncientSmithHammerWeapon; if (hammer != null) { hammer.UsesRemaining--; if (hammer.UsesRemaining < 1) { hammer.Delete(); } } } /* * int phys = 0, fire = 0, cold = 0, pois = 0, nrgy = 0; * int dura = 0, luck = 0, lreq = 0, dinc = 0; * int baseChance = 0; * * bool physBonus = false; * bool fireBonus = false; * bool coldBonus = false; * bool nrgyBonus = false; * bool poisBonus = false; * bool duraBonus = false; * bool luckBonus = false; * bool lreqBonus = false; * bool dincBonus = false; * * if ( item is BaseWeapon ) * { * BaseWeapon weapon = (BaseWeapon)item; * * if ( !CraftResources.IsStandard( weapon.Resource ) ) * return EnhanceResult.AlreadyEnhanced; * * baseChance = 20; * * dura = weapon.MaxHitPoints; * luck = weapon.Attributes.Luck; * lreq = weapon.WeaponAttributes.LowerStatReq; * dinc = weapon.Attributes.WeaponDamage; * * fireBonus = ( attributes.WeaponFireDamage > 0 ); * coldBonus = ( attributes.WeaponColdDamage > 0 ); * nrgyBonus = ( attributes.WeaponEnergyDamage > 0 ); * poisBonus = ( attributes.WeaponPoisonDamage > 0 ); * * duraBonus = ( attributes.WeaponDurability > 0 ); * luckBonus = ( attributes.WeaponLuck > 0 ); * lreqBonus = ( attributes.WeaponLowerRequirements > 0 ); * dincBonus = ( dinc > 0 ); * } * else * { * BaseArmor armor = (BaseArmor)item; * * if ( !CraftResources.IsStandard( armor.Resource ) ) * return EnhanceResult.AlreadyEnhanced; * * baseChance = 20; * * phys = armor.PhysicalResistance; * fire = armor.FireResistance; * cold = armor.ColdResistance; * pois = armor.PoisonResistance; * nrgy = armor.EnergyResistance; * * dura = armor.MaxHitPoints; * luck = armor.Attributes.Luck; * lreq = armor.ArmorAttributes.LowerStatReq; * * physBonus = ( attributes.ArmorPhysicalResist > 0 ); * fireBonus = ( attributes.ArmorFireResist > 0 ); * coldBonus = ( attributes.ArmorColdResist > 0 ); * nrgyBonus = ( attributes.ArmorEnergyResist > 0 ); * poisBonus = ( attributes.ArmorPoisonResist > 0 ); * * duraBonus = ( attributes.ArmorDurability > 0 ); * luckBonus = ( attributes.ArmorLuck > 0 ); * lreqBonus = ( attributes.ArmorLowerRequirements > 0 ); * dincBonus = false; * } */ int skill = from.Skills[craftSystem.MainSkill].Fixed / 10; //if ( skill >= 100 ) // baseChance -= (skill - 90) / 10; EnhanceResult res = EnhanceResult.Success; /* * if ( physBonus ) * CheckResult( ref res, baseChance + phys ); * * if ( fireBonus ) * CheckResult( ref res, baseChance + fire ); * * if ( coldBonus ) * CheckResult( ref res, baseChance + cold ); * * if ( nrgyBonus ) * CheckResult( ref res, baseChance + nrgy ); * * if ( poisBonus ) * CheckResult( ref res, baseChance + pois ); * * if ( duraBonus ) * CheckResult( ref res, baseChance + (dura / 40) ); * * if ( luckBonus ) * CheckResult( ref res, baseChance + 10 + (luck / 2) ); * * if ( lreqBonus ) * CheckResult( ref res, baseChance + (lreq / 4) ); * * if ( dincBonus ) * CheckResult( ref res, baseChance + (dinc / 4) ); */ switch (res) { case EnhanceResult.Broken: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } item.Delete(); break; } case EnhanceResult.Success: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.All, ref resMessage)) { return(EnhanceResult.NoResources); } if (item is BaseWeapon) { BaseWeapon w = (BaseWeapon)item; w.Resource = resource; //change hue somehow? } else if (item is BaseArmor) //Sanity { ((BaseArmor)item).Resource = resource; } break; } case EnhanceResult.Failure: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } break; } } return(res); }
protected override void OnTarget(Mobile from, object targeted) { if (targeted is BaseWeapon || targeted is BaseArmor || targeted is BaseJewel) { if (from.CheckTargetSkill(SkillName.ArmsLore, targeted, 0, 100)) { string texttype = "Inconnu", textquality = "Inconnue", textresource = "Inconnue", textdurability = "Inconnue"; if (targeted is BaseWeapon) { BaseWeapon arm = (BaseWeapon)targeted; double durability = 0; if (arm.MaxHitPoints != 0) { durability = arm.HitPoints / (double)arm.MaxHitPoints; } switch (arm.Type) { case WeaponType.Axe: texttype = "Hache"; break; case WeaponType.Bashing: texttype = "Arme contondante"; break; case WeaponType.Fists: texttype = "Arme de pugilat"; break; case WeaponType.Piercing: texttype = "Arme d'estoc"; break; case WeaponType.Polearm: texttype = "Arme à longue portée"; break; case WeaponType.Ranged: texttype = "Arme de jet"; break; case WeaponType.Slashing: texttype = "Arme à tranchant"; break; case WeaponType.Staff: texttype = "Baton"; break; default: texttype = "Arme"; break; } if (from.Skills[SkillName.ArmsLore].Value > 20) { if (arm.Quality == WeaponQuality.Low) { textquality = "Mauvaise"; } else if (arm.Quality == WeaponQuality.Exceptional) { textquality = "Excellente"; } else { textquality = "Commune"; } } if (from.Skills[SkillName.Mining].Value > 30 && arm.Resource != CraftResource.None) { textresource = string.Format("{0}", CraftResources.GetName(arm.Resource)); } if (from.Skills[SkillName.ArmsLore].Value >= 50 && from.Skills[SkillName.ArmsLore].Value <= 75) { if (durability < 0.1 || arm.MaxHitPoints < 10) { textdurability = "Fissurée et menace de se briser!"; } else if (durability < 0.3) { textdurability = "Signes importants de faiblesse"; } else if (durability < 0.6) { textdurability = "Endommagée"; } else if (durability < 0.85) { textdurability = "Quelques dégats"; } else if (durability < 1) { textdurability = "Presque neuve"; } else { textdurability = "Aucun défaut"; } } else if (from.Skills[SkillName.ArmsLore].Value > 75 && from.Skills[SkillName.ArmsLore].Value <= 95) { textdurability = string.Format("Endommagée à {0}%", (100 - Math.Round(durability * 100.0))); } else if (from.Skills[SkillName.ArmsLore].Value > 95) { textdurability = string.Format("{0} sur {1}", arm.HitPoints, arm.MaxHitPoints); } else if (durability < 0.15) { textdurability = string.Format("Cette arme tombe en ruine"); } from.SendMessage("Type : {0}", texttype); from.SendMessage("Resource : {0}", textresource); from.SendMessage("Qualité : {0}", textquality); from.SendMessage("Durabilité : {0}", textdurability);/*, textquality, textresource, textdurability*/ } else if (targeted is BaseArmor) { BaseArmor arm = (BaseArmor)targeted; double durability = 0; if (arm.MaxHitPoints != 0) { durability = arm.HitPoints / (double)arm.MaxHitPoints; } switch (arm.MaterialType) { case ArmorMaterialType.Barbed: case ArmorMaterialType.Horned: case ArmorMaterialType.Spined: case ArmorMaterialType.Studded: case ArmorMaterialType.Daemon: texttype = "Armure de cuir de demon"; break; case ArmorMaterialType.Leather: texttype = "Armure de cuir"; break; case ArmorMaterialType.Bone: texttype = "Armure d'os"; break; case ArmorMaterialType.Chainmail: texttype = "Armure de chaine"; break; case ArmorMaterialType.Cloth: texttype = "Armure de tissus"; break; case ArmorMaterialType.Dragon: texttype = "Armure d'écaille"; break; case ArmorMaterialType.Ringmail: texttype = "Armure d'anneau"; break; case ArmorMaterialType.Plate: texttype = "Armure de plaque"; break; default: texttype = "Armure"; break; } if (from.Skills[SkillName.ArmsLore].Value > 20) { if (arm.Quality == ArmorQuality.Low) { textquality = "Mauvaise"; } else if (arm.Quality == ArmorQuality.Exceptional) { textquality = "Excellente"; } else { textquality = "Commune"; } } if (arm.MaterialType != ArmorMaterialType.Bone && from.Skills[SkillName.Mining].Value > 30 && arm.Resource != CraftResource.None) { textresource = string.Format(" en {0}.", CraftResources.GetName(arm.Resource)); } if (from.Skills[SkillName.ArmsLore].Value >= 50 && from.Skills[SkillName.ArmsLore].Value <= 75) { if (durability < 0.1 || arm.MaxHitPoints < 10) { textdurability = "Fissurée et menace de se briser!"; } else if (durability < 0.3) { textdurability = "Signes importants de faiblesse"; } else if (durability < 0.6) { textdurability = "Endommagée"; } else if (durability < 0.85) { textdurability = "Quelques dégats"; } else if (durability < 1) { textdurability = "Presque neuve"; } else { textdurability = "Aucun défaut"; } } else if (from.Skills[SkillName.ArmsLore].Value > 75 && from.Skills[SkillName.ArmsLore].Value <= 95) { textdurability = string.Format("Endommagée à {0}%", (100 - Math.Round(durability * 100.0))); } else if (from.Skills[SkillName.ArmsLore].Value > 95) { textdurability = string.Format("{0} sur {1}", arm.HitPoints, arm.MaxHitPoints); } else if (durability < 0.15) { textdurability = string.Format("Cette arme tombe en ruine"); } from.SendMessage("Type : {0}", texttype); from.SendMessage("Resource : {0}", textresource); from.SendMessage("Qualité : {0}", textquality); from.SendMessage("Durabilité : {0}", textdurability); } else if (targeted is BaseJewel) { BaseJewel arm = (BaseJewel)targeted; switch (arm.Layer) { case Layer.Earrings: texttype = "Boucles d'oreilles"; break; case Layer.Neck: texttype = "Pendentif"; break; case Layer.Bracelet: texttype = "Bracelet"; break; default: texttype = "Bijou"; break; } if (from.Skills[SkillName.Mining].Value > 30 && arm.Resource != CraftResource.None) { textresource = string.Format("{0}.", CraftResources.GetName(arm.Resource)); } from.SendMessage("Type : {0}", texttype); from.SendMessage("Resource : {0}", textresource); } else { from.SendMessage("Ceci n'est ni une arme, ni une armure, ni un bijou"); // This is neither weapon nor armor. } } else { from.SendMessage("Vous êtes incertain..."); // You are not certain... } } else { from.SendMessage("Ceci n'est ni une arme, ni une armure, ni un bijou"); // This is neither weapon nor armor. } }
public static EnhanceResult Invoke(Mobile from, CraftSystem craftSystem, BaseTool tool, Item item, CraftResource resource, Type resType, ref object resMessage) { if (item == null) { return(EnhanceResult.BadItem); } if (!item.IsChildOf(from.Backpack)) { return(EnhanceResult.NotInBackpack); } if (!(item is BaseArmor) && !(item is BaseWeapon)) { return(EnhanceResult.BadItem); } if (CraftResources.IsStandard(resource)) { return(EnhanceResult.BadResource); } CraftItem craftItem; if (m_CheckForSubclass.Contains(item.GetType())) { craftItem = craftSystem.CraftItems.SearchForSubclass(item.GetType()); } else { craftItem = craftSystem.CraftItems.SearchFor(item.GetType()); } if (craftItem == null || craftItem.Ressources.Count == 0 || craftItem.ForceCannotEnhance) { return(EnhanceResult.BadItem); } if (CraftableArtifacts.IsCraftableArtifact(item)) { return(EnhanceResult.BadItem); } bool exceptional = false; bool allRequiredSkills = false; if (!craftItem.CheckSkills(from, resType, craftSystem, ref exceptional, ref allRequiredSkills, false)) { return(EnhanceResult.NoSkill); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(EnhanceResult.BadResource); } CraftAttributeInfo attributes = info.AttributeInfo; if (attributes == null) { return(EnhanceResult.BadResource); } int resHue = 0, maxAmount = 0; if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.None, ref resMessage)) { return(EnhanceResult.NoResources); } AncientSmithyHammer hammer = from.FindItemOnLayer(Layer.OneHanded) as AncientSmithyHammer; if (hammer != null) { if (!(tool != null && (tool is SewingKit || tool is RunicSewingKit))) { hammer.UsesRemaining--; if (hammer.UsesRemaining < 1) { hammer.Delete(); } } } int phys = 0, fire = 0, cold = 0, pois = 0, nrgy = 0; int dura = 0, luck = 0, lreq = 0, dinc = 0; int baseChance = 0; bool physBonus = false; bool fireBonus = false; bool coldBonus = false; bool nrgyBonus = false; bool poisBonus = false; bool duraBonus = false; bool luckBonus = false; bool lreqBonus = false; bool dincBonus = false; if (item is BaseWeapon) { BaseWeapon weapon = (BaseWeapon)item; if (!CraftResources.IsStandard(weapon.Resource)) { return(EnhanceResult.AlreadyEnhanced); } baseChance = 20; dura = weapon.MaxHitPoints; luck = weapon.Attributes.Luck; lreq = weapon.WeaponAttributes.LowerStatReq; dinc = weapon.Attributes.WeaponDamage; fireBonus = (attributes.WeaponFireDamage > 0); coldBonus = (attributes.WeaponColdDamage > 0); nrgyBonus = (attributes.WeaponEnergyDamage > 0); poisBonus = (attributes.WeaponPoisonDamage > 0); duraBonus = (attributes.WeaponDurability > 0); luckBonus = (attributes.WeaponLuck > 0); lreqBonus = (attributes.WeaponLowerRequirements > 0); dincBonus = (dinc > 0); } else { BaseArmor armor = (BaseArmor)item; if (!CraftResources.IsStandard(armor.Resource)) { return(EnhanceResult.AlreadyEnhanced); } baseChance = 20; phys = armor.PhysicalResistance; fire = armor.FireResistance; cold = armor.ColdResistance; pois = armor.PoisonResistance; nrgy = armor.EnergyResistance; dura = armor.MaxHitPoints; luck = armor.Attributes.Luck; lreq = armor.ArmorAttributes.LowerStatReq; physBonus = (attributes.ArmorPhysicalResist > 0); fireBonus = (attributes.ArmorFireResist > 0); coldBonus = (attributes.ArmorColdResist > 0); nrgyBonus = (attributes.ArmorEnergyResist > 0); poisBonus = (attributes.ArmorPoisonResist > 0); duraBonus = (attributes.ArmorDurability > 0); luckBonus = (attributes.ArmorLuck > 0); lreqBonus = (attributes.ArmorLowerRequirements > 0); dincBonus = false; } int skill = from.Skills[craftSystem.MainSkill].Fixed / 10; if (skill >= 100) { baseChance -= (skill - 90) / 10; } EnhanceResult res = EnhanceResult.Success; PlayerMobile user = from as PlayerMobile; if (physBonus) { CheckResult(ref res, baseChance + phys); } if (fireBonus) { CheckResult(ref res, baseChance + fire); } if (coldBonus) { CheckResult(ref res, baseChance + cold); } if (nrgyBonus) { CheckResult(ref res, baseChance + nrgy); } if (poisBonus) { CheckResult(ref res, baseChance + pois); } if (duraBonus) { CheckResult(ref res, baseChance + (dura / 40)); } if (luckBonus) { CheckResult(ref res, baseChance + 10 + (luck / 2)); } if (lreqBonus) { CheckResult(ref res, baseChance + (lreq / 4)); } if (dincBonus) { CheckResult(ref res, baseChance + (dinc / 4)); } if (user.NextEnhanceSuccess) { user.NextEnhanceSuccess = false; user.SendLocalizedMessage(1149969); // The magical aura that surrounded you disipates and you feel that your item enhancement chances have returned to normal. res = EnhanceResult.Success; } switch (res) { case EnhanceResult.Broken: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } item.Delete(); break; } case EnhanceResult.Success: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.All, ref resMessage)) { return(EnhanceResult.NoResources); } if (item is BaseWeapon) { BaseWeapon w = (BaseWeapon)item; w.Resource = resource; int hue = w.GetElementalDamageHue(); if (hue > 0) { w.Hue = hue; } } else if (item is BaseArmor) { ((BaseArmor)item).Resource = resource; } break; } case EnhanceResult.Failure: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } break; } } return(res); }
public static EnhanceResult Invoke( Mobile from, CraftSystem craftSystem, BaseTool tool, Item item, CraftResource resource, Type resType, ref TextDefinition resMessage ) { if (item == null) { return(EnhanceResult.BadItem); } if (!item.IsChildOf(from.Backpack)) { return(EnhanceResult.NotInBackpack); } if (item is not BaseArmor && item is not BaseWeapon) { return(EnhanceResult.BadItem); } if (item is IArcaneEquip eq && eq.IsArcane) { return(EnhanceResult.BadItem); } if (CraftResources.IsStandard(resource)) { return(EnhanceResult.BadResource); } var num = craftSystem.CanCraft(from, tool, item.GetType()); if (num > 0) { resMessage = num; return(EnhanceResult.None); } var craftItem = craftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(EnhanceResult.BadItem); } if (craftItem.GetSuccessChance(from, resType, craftSystem, false, out _) <= 0.0) { return(EnhanceResult.NoSkill); } var info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(EnhanceResult.BadResource); } var attributes = info.AttributeInfo; if (attributes == null) { return(EnhanceResult.BadResource); } int resHue = 0, maxAmount = 0; if (!craftItem.ConsumeRes( from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.None, ref resMessage )) { return(EnhanceResult.NoResources); } if (craftSystem is DefBlacksmithy) { if (from.FindItemOnLayer(Layer.OneHanded) is AncientSmithyHammer hammer) { hammer.UsesRemaining--; if (hammer.UsesRemaining < 1) { hammer.Delete(); } } } int phys = 0, fire = 0, cold = 0, pois = 0, nrgy = 0; int dura, luck, lreq, dinc = 0; int baseChance; var physBonus = false; bool fireBonus; bool coldBonus; bool nrgyBonus; bool poisBonus; bool duraBonus; bool luckBonus; bool lreqBonus; bool dincBonus; if (item is BaseWeapon weapon) { if (!CraftResources.IsStandard(weapon.Resource)) { return(EnhanceResult.AlreadyEnhanced); } baseChance = 20; dura = weapon.MaxHitPoints; luck = weapon.Attributes.Luck; lreq = weapon.WeaponAttributes.LowerStatReq; dinc = weapon.Attributes.WeaponDamage; fireBonus = attributes.WeaponFireDamage > 0; coldBonus = attributes.WeaponColdDamage > 0; nrgyBonus = attributes.WeaponEnergyDamage > 0; poisBonus = attributes.WeaponPoisonDamage > 0; duraBonus = attributes.WeaponDurability > 0; luckBonus = attributes.WeaponLuck > 0; lreqBonus = attributes.WeaponLowerRequirements > 0; dincBonus = dinc > 0; } else { var armor = (BaseArmor)item; if (!CraftResources.IsStandard(armor.Resource)) { return(EnhanceResult.AlreadyEnhanced); } baseChance = 20; phys = armor.PhysicalResistance; fire = armor.FireResistance; cold = armor.ColdResistance; pois = armor.PoisonResistance; nrgy = armor.EnergyResistance; dura = armor.MaxHitPoints; luck = armor.Attributes.Luck; lreq = armor.ArmorAttributes.LowerStatReq; physBonus = attributes.ArmorPhysicalResist > 0; fireBonus = attributes.ArmorFireResist > 0; coldBonus = attributes.ArmorColdResist > 0; nrgyBonus = attributes.ArmorEnergyResist > 0; poisBonus = attributes.ArmorPoisonResist > 0; duraBonus = attributes.ArmorDurability > 0; luckBonus = attributes.ArmorLuck > 0; lreqBonus = attributes.ArmorLowerRequirements > 0; dincBonus = false; } var skill = from.Skills[craftSystem.MainSkill].Fixed / 10; if (skill >= 100) { baseChance -= (skill - 90) / 10; } var res = EnhanceResult.Success; if (physBonus) { CheckResult(ref res, baseChance + phys); } if (fireBonus) { CheckResult(ref res, baseChance + fire); } if (coldBonus) { CheckResult(ref res, baseChance + cold); } if (nrgyBonus) { CheckResult(ref res, baseChance + nrgy); } if (poisBonus) { CheckResult(ref res, baseChance + pois); } if (duraBonus) { CheckResult(ref res, baseChance + dura / 40); } if (luckBonus) { CheckResult(ref res, baseChance + 10 + luck / 2); } if (lreqBonus) { CheckResult(ref res, baseChance + lreq / 4); } if (dincBonus) { CheckResult(ref res, baseChance + dinc / 4); } switch (res) { case EnhanceResult.Broken: { if (!craftItem.ConsumeRes( from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage )) { return(EnhanceResult.NoResources); } item.Delete(); break; } case EnhanceResult.Success: { if (!craftItem.ConsumeRes( from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.All, ref resMessage )) { return(EnhanceResult.NoResources); } if (item is BaseWeapon w) { w.Resource = resource; var hue = w.GetElementalDamageHue(); if (hue > 0) { w.Hue = hue; } } else { ((BaseArmor)item).Resource = resource; } break; } case EnhanceResult.Failure: { if (!craftItem.ConsumeRes( from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage )) { return(EnhanceResult.NoResources); } break; } } return(res); }
public BaseGlovesOfMining(int bonus, int itemID) : base(itemID) { m_Bonus = bonus; this.Hue = CraftResources.GetHue((CraftResource)Utility.RandomMinMax((int)CraftResource.DullCopper, (int)CraftResource.Valorite)); }
/* * public override void AlterSpellDamageFrom( Mobile from, ref int damage ) * { * damage = 0; * } */ /* * public override void AlterAbilityDamageFrom( Mobile from, ref int damage ) * { * AlterMeleeDamageFrom( from, ref damage ); * } */ public override void OnGotMeleeAttack(Mobile attacker) { this.FixedParticles(0x376A, 20, 10, 0x2530, EffectLayer.Waist); PlaySound(0x2F4); int discordanceEffect = 0; if (attacker is PlayerMobile && SkillHandlers.Discordance.GetEffect(this, ref discordanceEffect)) { attacker.SendAsciiMessage("The creature's magnetic field is weak."); } else if (attacker != null) { attacker.SendAsciiMessage("The creature's magnetic field repels your attack."); if (attacker.AccessLevel == AccessLevel.Player && attacker.InRange(this.Location, 2) && 0.15 > Utility.RandomDouble()) { List <Item> items = new List <Item>(); for (int i = 0; i < attacker.Items.Count; i++) { Item item = attacker.Items[i]; if (item.Movable && item.LootType != LootType.Blessed && item.LootType != LootType.Newbied && item.BlessedFor == null) { CraftResource resource = CraftResource.None; if (item is BaseWeapon) { resource = ((BaseWeapon)item).Resource; } else if (item is BaseArmor) { resource = ((BaseArmor)item).Resource; } else if (item is BaseJewel) { resource = CraftResource.Iron; } else if (item is BaseClothing) { resource = ((BaseClothing)item).Resource; } else { continue; } if (CraftResources.GetType(resource) == CraftResourceType.Metal) { items.Add(item); } } } if (items.Count > 0) { Item todrop = items[Utility.Random(items.Count)]; if (todrop is IDurability) { IDurability dura = (IDurability)todrop; if (dura.MaxHitPoints > 0) //It is not invulnerable { int maxpts = dura.MaxHitPoints / 10; int points = Math.Min(maxpts, dura.HitPoints); dura.HitPoints -= points; if (dura.HitPoints == 0) { dura.MaxHitPoints -= maxpts - points; } if (dura.MaxHitPoints <= 0) { attacker.SendMessage("The creature's magnetic field destroyed your {0}.", todrop.GetDisplayName(attacker.NetState, false)); todrop.Delete(); } else { attacker.SendMessage("The creature's magnetic field attracted your {0}, and damaged it in the process.", todrop.GetDisplayName(attacker.NetState, false)); todrop.MoveToWorld(Location, Map); } } } else { attacker.SendMessage("The creature's magnetic field attracted your {0}.", todrop.GetDisplayName(attacker.NetState, false)); todrop.MoveToWorld(Location, Map); } this.FixedParticles(0, 10, 0, 0x2530, EffectLayer.Waist); } } } base.OnGotMeleeAttack(attacker); }
public override void OnResponse(NetState state, RelayInfo info) { Mobile from = state.Mobile; switch (info.ButtonID) { case 0: break; case 1: // prefix from.SendGump(new ItemNameGump(m_ToReforge, m_Tool, m_Options, m_Prefix, m_Suffix, true)); break; case 2: // suffix from.SendGump(new ItemNameGump(m_ToReforge, m_Tool, m_Options, m_Prefix, m_Suffix, false)); break; case 3: // Reforge Item { if (!RunicReforging.CanReforge(from, m_ToReforge, m_Tool.CraftSystem)) { return; } int totalCharges = GetTotalCharges(); if (m_Tool.UsesRemaining >= totalCharges) { CraftResourceInfo resInfo = CraftResources.GetInfo(m_Tool.Resource); if (resInfo == null) { return; } CraftAttributeInfo attrs = resInfo.AttributeInfo; int budget = GetBudget(); int min = 10; int max = 40; if (attrs != null) { min = attrs.RunicMinIntensity; max = attrs.RunicMaxIntensity; } if (min < 10) { min = 10; } if (max > 100) { max = 100; } if (m_Prefix == ReforgedPrefix.None && (m_Options & ReforgingOption.GrandArtifice) != 0) { m_Prefix = RunicReforging.ChooseRandomPrefix(m_ToReforge); budget = Math.Min(800, budget + 50); } if (m_Suffix == ReforgedSuffix.None && (m_Options & ReforgingOption.ExaltedArtifice) != 0) { m_Suffix = RunicReforging.ChooseRandomSuffix(m_ToReforge, m_Prefix); budget = Math.Min(800, budget + 50); } int maxprops; if (attrs != null) { maxprops = Utility.RandomMinMax(attrs.RunicMinAttributes, attrs.RunicMaxAttributes); } else { maxprops = Math.Min(5, (budget / 110) + 1); } if (maxprops == 5 && 0.25 > Utility.RandomDouble()) { maxprops = 6; } if (maxprops == 6 && budget >= 650 && 0.10 > Utility.RandomDouble()) { maxprops = 7; } RunicReforging.ApplyReforgedProperties(m_ToReforge, m_Prefix, m_Suffix, true, budget, min, max, maxprops, 0, m_Tool, m_Options); OnAfterReforged(m_ToReforge); from.SendLocalizedMessage(1152286); // You re-forge the item! m_Tool.UsesRemaining -= totalCharges; if (m_Tool != null && m_Tool.CraftSystem != null) { m_Tool.CraftSystem.PlayCraftEffect(from); } if (m_Tool.UsesRemaining <= 0) { m_Tool.Delete(); from.SendLocalizedMessage(1044038); // You have worn out your tool! } } break; } case 4: from.SendGump(new ReforgingHelpGump()); break; default: // Option { ReforgingOption option = Options[info.ButtonID - 100]; if (HasMetPrerequisite(option)) { if ((m_Options & option) == 0) { m_Options |= option; } else { m_Options ^= option; InvalidatePrerequisite(option); } } from.SendGump(new RunicReforgingGump(from, m_ToReforge, m_Tool, m_Options, m_Prefix, m_Suffix)); break; } } }
public PileofInspectedVeriteIngots() : base(0x1BEA) { Hue = CraftResources.GetHue(CraftResource.Verite); }
protected override void OnTarget(Mobile mob, object targeted) { if (targeted is BaseWeapon) { BaseWeapon weapon = (BaseWeapon)targeted; Type t = CraftResources.GetTypeFromCraftResource(weapon.Resource); if (t != null) { Item i = mob.Backpack.FindItemByType(t); if (i != null) { int RequiredResAmount = 1 + (weapon.MaxDurability - weapon.Durability) / 25; if (i.Amount > RequiredResAmount) { if (0.5 > Utility.RandomDouble()) { weapon.MaxDurability = (int)(weapon.MaxDurability * 0.95); } weapon.Durability = weapon.MaxDurability; i.Consume(RequiredResAmount); } else { mob.SendMessage("Vous ne possédez pas assez de ressources pour réparer l'arme."); } } } } else if (targeted is BaseArmor) { BaseArmor armor = (BaseArmor)targeted; Type t = CraftResources.GetTypeFromCraftResource(armor.Resource); if (t != null) { Item i = mob.Backpack.FindItemByType(t); if (i != null) { int RequiredResAmount = 1 + (armor.MaxDurability - armor.Durability) / 25; if (i.Amount > RequiredResAmount) { if (0.5 > Utility.RandomDouble()) { armor.MaxDurability = (int)(armor.MaxDurability * 0.85); } armor.Durability = armor.MaxDurability; i.Consume(RequiredResAmount); } else { mob.SendMessage("Vous ne possédez pas assez de ressources pour réparer l'armure."); } } } } }
public static EnhanceResult Invoke(Mobile from, CraftSystem craftSystem, BaseTool tool, Item item, CraftResource resource, Type resType, ref object resMessage) { if (item == null) { return(EnhanceResult.BadItem); } if (!item.IsChildOf(from.Backpack)) { return(EnhanceResult.NotInBackpack); } if (!(item is BaseArmor) && !(item is BaseWeapon)) { return(EnhanceResult.BadItem); } if (item is IArcaneEquip) { IArcaneEquip eq = (IArcaneEquip)item; if (eq.IsArcane) { return(EnhanceResult.BadItem); } } if (CraftResources.IsStandard(resource)) { return(EnhanceResult.BadResource); } int num = craftSystem.CanCraft(from, tool, item.GetType()); if (num > 0) { resMessage = num; return(EnhanceResult.None); } CraftItem craftItem = craftSystem.CraftItems.SearchFor(item.GetType()); if (IsSpecial(item, craftSystem)) { craftItem = craftSystem.CraftItems.SearchForSubclass(item.GetType()); } if (craftItem == null || craftItem.Resources.Count == 0) { return(EnhanceResult.BadItem); } #region Mondain's Legacy if (craftItem.ForceNonExceptional) { return(EnhanceResult.BadItem); } #endregion bool allRequiredSkills = false; if (craftItem.GetSuccessChance(from, resType, craftSystem, false, ref allRequiredSkills) <= 0.0) { return(EnhanceResult.NoSkill); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(EnhanceResult.BadResource); } CraftAttributeInfo attributes = info.AttributeInfo; if (attributes == null) { return(EnhanceResult.BadResource); } int resHue = 0, maxAmount = 0; if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.None, ref resMessage)) { return(EnhanceResult.NoResources); } if (craftSystem is DefBlacksmithy) { AncientSmithyHammer hammer = from.FindItemOnLayer(Layer.OneHanded) as AncientSmithyHammer; if (hammer != null) { hammer.UsesRemaining--; if (hammer.UsesRemaining < 1) { hammer.Delete(); } } } int phys = 0, fire = 0, cold = 0, pois = 0, nrgy = 0; int dura = 0, luck = 0, lreq = 0, dinc = 0; int baseChance = 0; bool physBonus = false; bool fireBonus = false; bool coldBonus = false; bool nrgyBonus = false; bool poisBonus = false; bool duraBonus = false; bool luckBonus = false; bool lreqBonus = false; bool dincBonus = false; if (item is BaseWeapon) { BaseWeapon weapon = (BaseWeapon)item; if (!CraftResources.IsStandard(weapon.Resource)) { return(EnhanceResult.AlreadyEnhanced); } if (weapon.ExtendedWeaponAttributes.AssassinHoned > 0) { return(EnhanceResult.BadItem); } baseChance = 20; dura = weapon.MaxHitPoints; luck = weapon.Attributes.Luck; lreq = weapon.WeaponAttributes.LowerStatReq; dinc = weapon.Attributes.WeaponDamage; fireBonus = (attributes.WeaponFireDamage > 0); coldBonus = (attributes.WeaponColdDamage > 0); nrgyBonus = (attributes.WeaponEnergyDamage > 0); poisBonus = (attributes.WeaponPoisonDamage > 0); duraBonus = (attributes.WeaponDurability > 0); luckBonus = (attributes.WeaponLuck > 0); lreqBonus = (attributes.WeaponLowerRequirements > 0); dincBonus = (dinc > 0); } else { BaseArmor armor = (BaseArmor)item; if (!CraftResources.IsStandard(armor.Resource)) { return(EnhanceResult.AlreadyEnhanced); } baseChance = 20; phys = armor.PhysicalResistance; fire = armor.FireResistance; cold = armor.ColdResistance; pois = armor.PoisonResistance; nrgy = armor.EnergyResistance; dura = armor.MaxHitPoints; luck = armor.Attributes.Luck; lreq = armor.ArmorAttributes.LowerStatReq; physBonus = (attributes.ArmorPhysicalResist > 0); fireBonus = (attributes.ArmorFireResist > 0); coldBonus = (attributes.ArmorColdResist > 0); nrgyBonus = (attributes.ArmorEnergyResist > 0); poisBonus = (attributes.ArmorPoisonResist > 0); duraBonus = (attributes.ArmorDurability > 0); luckBonus = (attributes.ArmorLuck > 0); lreqBonus = (attributes.ArmorLowerRequirements > 0); dincBonus = false; } int skill = from.Skills[craftSystem.MainSkill].Fixed / 10; if (skill >= 100) { baseChance -= (skill - 90) / 10; } EnhanceResult res = EnhanceResult.Success; PlayerMobile user = from as PlayerMobile; if (physBonus) { CheckResult(ref res, baseChance + phys); } if (fireBonus) { CheckResult(ref res, baseChance + fire); } if (coldBonus) { CheckResult(ref res, baseChance + cold); } if (nrgyBonus) { CheckResult(ref res, baseChance + nrgy); } if (poisBonus) { CheckResult(ref res, baseChance + pois); } if (duraBonus) { CheckResult(ref res, baseChance + (dura / 40)); } if (luckBonus) { CheckResult(ref res, baseChance + 10 + (luck / 2)); } if (lreqBonus) { CheckResult(ref res, baseChance + (lreq / 4)); } if (dincBonus) { CheckResult(ref res, baseChance + (dinc / 4)); } if (user.NextEnhanceSuccess) { user.NextEnhanceSuccess = false; user.SendLocalizedMessage(1149969); // The magical aura that surrounded you disipates and you feel that your item enhancement chances have returned to normal. res = EnhanceResult.Success; } switch (res) { case EnhanceResult.Broken: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } item.Delete(); break; } case EnhanceResult.Success: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.All, ref resMessage)) { return(EnhanceResult.NoResources); } if (item is BaseWeapon) { BaseWeapon w = (BaseWeapon)item; w.Resource = resource; #region Mondain's Legacy if (resource != CraftResource.Heartwood) { w.Attributes.WeaponDamage += attributes.WeaponDamage; w.Attributes.WeaponSpeed += attributes.WeaponSwingSpeed; w.Attributes.AttackChance += attributes.WeaponHitChance; w.Attributes.RegenHits += attributes.WeaponRegenHits; w.WeaponAttributes.HitLeechHits += attributes.WeaponHitLifeLeech; } else { switch (Utility.Random(6)) { case 0: w.Attributes.WeaponDamage += attributes.WeaponDamage; break; case 1: w.Attributes.WeaponSpeed += attributes.WeaponSwingSpeed; break; case 2: w.Attributes.AttackChance += attributes.WeaponHitChance; break; case 3: w.Attributes.Luck += attributes.WeaponLuck; break; case 4: w.WeaponAttributes.LowerStatReq += attributes.WeaponLowerRequirements; break; case 5: w.WeaponAttributes.HitLeechHits += attributes.WeaponHitLifeLeech; break; } } #endregion int hue = w.GetElementalDamageHue(); if (hue > 0) { w.Hue = hue; } } #region Mondain's Legacy else if (item is BaseShield) { BaseShield shield = (BaseShield)item; shield.Resource = resource; switch (resource) { case CraftResource.AshWood: shield.ArmorAttributes.LowerStatReq += 20; break; case CraftResource.YewWood: shield.Attributes.RegenHits += 1; break; case CraftResource.Heartwood: switch (Utility.Random(7)) { case 0: shield.Attributes.BonusDex += 2; break; case 1: shield.Attributes.BonusStr += 2; break; case 2: shield.Attributes.ReflectPhysical += 5; break; case 3: shield.Attributes.SpellChanneling = 1; shield.Attributes.CastSpeed = -1; break; case 4: shield.ArmorAttributes.SelfRepair += 2; break; case 5: shield.PhysicalBonus += 5; break; case 6: shield.ColdBonus += 3; break; } break; case CraftResource.Bloodwood: shield.Attributes.RegenHits += 2; shield.Attributes.Luck += 40; break; case CraftResource.Frostwood: shield.Attributes.SpellChanneling = 1; shield.Attributes.CastSpeed = -1; break; } } #endregion else if (item is BaseArmor) //Sanity { ((BaseArmor)item).Resource = resource; #region Mondain's Legacy BaseArmor armor = (BaseArmor)item; if (resource != CraftResource.Heartwood) { armor.Attributes.WeaponDamage += attributes.ArmorDamage; armor.Attributes.AttackChance += attributes.ArmorHitChance; armor.Attributes.RegenHits += attributes.ArmorRegenHits; //armor.ArmorAttributes.MageArmor += attributes.ArmorMage; } else { switch (Utility.Random(5)) { case 0: armor.Attributes.WeaponDamage += attributes.ArmorDamage; break; case 1: armor.Attributes.AttackChance += attributes.ArmorHitChance; break; case 2: armor.ArmorAttributes.MageArmor += attributes.ArmorMage; break; case 3: armor.Attributes.Luck += attributes.ArmorLuck; break; case 4: armor.ArmorAttributes.LowerStatReq += attributes.ArmorLowerRequirements; break; } } #endregion } break; } case EnhanceResult.Failure: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } break; } } return(res); }
public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 2: // Reset from Resource System m_Resource = DefaultResource; reader.ReadString(); break; case 1: { m_Resource = (CraftResource)reader.ReadInt(); break; } case 0: { OreInfo info; switch (reader.ReadInt()) { 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; default: info = null; break; } m_Resource = CraftResources.GetFromOreInfo(info); break; } } }
public static EnhanceResult Invoke(Mobile from, CraftSystem craftSystem, ITool tool, Item item, CraftResource resource, Type resType, ref object resMessage) { if (item == null) { return(EnhanceResult.BadItem); } if (item is GargishNecklace || item is GargishEarrings) { return(EnhanceResult.BadItem); } if (!item.IsChildOf(from.Backpack)) { return(EnhanceResult.NotInBackpack); } IResource ires = item as IResource; if (!CanEnhance(item) || ires == null) { return(EnhanceResult.BadItem); } if (item is IArcaneEquip) { IArcaneEquip eq = (IArcaneEquip)item; if (eq.IsArcane) { return(EnhanceResult.BadItem); } } if (item is BaseWeapon && Spells.Mysticism.EnchantSpell.IsUnderSpellEffects(from, (BaseWeapon)item)) { return(EnhanceResult.Enchanted); } if (CraftResources.IsStandard(resource)) { return(EnhanceResult.BadResource); } int num = craftSystem.CanCraft(from, tool, item.GetType()); if (num > 0) { resMessage = num; return(EnhanceResult.None); } CraftItem craftItem = craftSystem.CraftItems.SearchFor(item.GetType()); if (IsSpecial(item, craftSystem)) { craftItem = craftSystem.CraftItems.SearchForSubclass(item.GetType()); } if (craftItem == null || craftItem.Resources.Count == 0) { return(EnhanceResult.BadItem); } #region Mondain's Legacy if (craftItem.ForceNonExceptional) { return(EnhanceResult.BadItem); } #endregion bool allRequiredSkills = false; if (craftItem.GetSuccessChance(from, resType, craftSystem, false, ref allRequiredSkills) <= 0.0) { return(EnhanceResult.NoSkill); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(EnhanceResult.BadResource); } CraftAttributeInfo attributes = info.AttributeInfo; if (attributes == null) { return(EnhanceResult.BadResource); } int resHue = 0, maxAmount = 0; if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.None, ref resMessage)) { return(EnhanceResult.NoResources); } if (!CraftResources.IsStandard(ires.Resource)) { return(EnhanceResult.AlreadyEnhanced); } if (craftSystem is DefBlacksmithy) { AncientSmithyHammer hammer = from.FindItemOnLayer(Layer.OneHanded) as AncientSmithyHammer; if (hammer != null) { hammer.UsesRemaining--; if (hammer.UsesRemaining < 1) { hammer.Delete(); } } } int phys = 0, fire = 0, cold = 0, pois = 0, nrgy = 0; int dura = 0, luck = 0, lreq = 0, dinc = 0; int baseChance = 0; bool physBonus = false; bool fireBonus = false; bool coldBonus = false; bool nrgyBonus = false; bool poisBonus = false; bool duraBonus = false; bool luckBonus = false; bool lreqBonus = false; bool dincBonus = false; if (item is BaseWeapon) { BaseWeapon weapon = (BaseWeapon)item; if (weapon.ExtendedWeaponAttributes.AssassinHoned > 0) { return(EnhanceResult.BadItem); } baseChance = 20; dura = weapon.MaxHitPoints; luck = weapon.Attributes.Luck; lreq = weapon.WeaponAttributes.LowerStatReq; dinc = weapon.Attributes.WeaponDamage; fireBonus = (attributes.WeaponFireDamage > 0); coldBonus = (attributes.WeaponColdDamage > 0); nrgyBonus = (attributes.WeaponEnergyDamage > 0); poisBonus = (attributes.WeaponPoisonDamage > 0); duraBonus = (attributes.WeaponDurability > 0); luckBonus = (attributes.WeaponLuck > 0); lreqBonus = (attributes.WeaponLowerRequirements > 0); dincBonus = (dinc > 0); } else if (item is BaseArmor) { BaseArmor armor = (BaseArmor)item; baseChance = 20; phys = armor.PhysicalResistance; fire = armor.FireResistance; cold = armor.ColdResistance; pois = armor.PoisonResistance; nrgy = armor.EnergyResistance; dura = armor.MaxHitPoints; luck = armor.Attributes.Luck; lreq = armor.ArmorAttributes.LowerStatReq; physBonus = (attributes.ArmorPhysicalResist > 0); fireBonus = (attributes.ArmorFireResist > 0); coldBonus = (attributes.ArmorColdResist > 0); nrgyBonus = (attributes.ArmorEnergyResist > 0); poisBonus = (attributes.ArmorPoisonResist > 0); duraBonus = (attributes.ArmorDurability > 0); luckBonus = (attributes.ArmorLuck > 0); lreqBonus = (attributes.ArmorLowerRequirements > 0); dincBonus = false; } else if (item is FishingPole) { FishingPole pole = (FishingPole)item; baseChance = 20; luck = pole.Attributes.Luck; luckBonus = (attributes.ArmorLuck > 0); lreqBonus = (attributes.ArmorLowerRequirements > 0); dincBonus = false; } int skill = from.Skills[craftSystem.MainSkill].Fixed / 10; if (skill >= 100) { baseChance -= (skill - 90) / 10; } EnhanceResult res = EnhanceResult.Success; PlayerMobile user = from as PlayerMobile; if (physBonus) { CheckResult(ref res, baseChance + phys); } if (fireBonus) { CheckResult(ref res, baseChance + fire); } if (coldBonus) { CheckResult(ref res, baseChance + cold); } if (nrgyBonus) { CheckResult(ref res, baseChance + nrgy); } if (poisBonus) { CheckResult(ref res, baseChance + pois); } if (duraBonus) { CheckResult(ref res, baseChance + (dura / 40)); } if (luckBonus) { CheckResult(ref res, baseChance + 10 + (luck / 2)); } if (lreqBonus) { CheckResult(ref res, baseChance + (lreq / 4)); } if (dincBonus) { CheckResult(ref res, baseChance + (dinc / 4)); } if (user.NextEnhanceSuccess) { user.NextEnhanceSuccess = false; user.SendLocalizedMessage(1149969); // The magical aura that surrounded you disipates and you feel that your item enhancement chances have returned to normal. res = EnhanceResult.Success; } switch (res) { case EnhanceResult.Broken: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } item.Delete(); break; } case EnhanceResult.Success: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.All, ref resMessage)) { return(EnhanceResult.NoResources); } if (craftItem.CaddelliteCraft) { Caddellite.TryInfuse(from, item, craftSystem); } if (item is IResource) { ((IResource)item).Resource = resource; } if (item is BaseWeapon) { BaseWeapon w = (BaseWeapon)item; w.DistributeMaterialBonus(attributes); int hue = w.GetElementalDamageHue(); if (hue > 0) { w.Hue = hue; } } else if (item is BaseArmor) { ((BaseArmor)item).DistributeMaterialBonus(attributes); } else if (item is FishingPole) { ((FishingPole)item).DistributeMaterialBonus(attributes); } break; } case EnhanceResult.Failure: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } break; } } return(res); }
public PileofInspectedGoldIngots() : base(0x1BEA) { Hue = CraftResources.GetHue(CraftResource.Gold); }
public void CreateResList(bool opt, Mobile from) { CraftSubResCol res = (opt ? this.m_CraftSystem.CraftSubRes2 : this.m_CraftSystem.CraftSubRes); //daat99 OWLTR start - recipe craft bool b_RecipeCraft = OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.RECIPE_CRAFT), b_Blacksmithy = OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.BLACKSMITH_RECIPES), b_BowFletching = OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.BOWFLETCH_RECIPES), b_Carpentry = OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.CARPENTRY_RECIPES), b_Masonry = OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.MASONRY_RECIPES), b_Tailoring = OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.TAILORING_RECIPES), b_Tinkering = OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.TINKERING_RECIPES); if (b_RecipeCraft) { NewDaat99Holder dh = (NewDaat99Holder)daat99.Daat99OWLTR.TempHolders[m_From]; int i_Lenght = 0; for (int i = 0; i < res.Count; ++i) { int index = i_Lenght % 10; CraftSubRes subResource = res.GetAt(i); if (!dh.Resources.Contains(CraftResources.GetFromType(subResource.ItemType)) || (!b_Blacksmithy && m_CraftSystem is DefBlacksmithy) || (!b_BowFletching && m_CraftSystem is DefBowFletching) || (!b_Carpentry && m_CraftSystem is DefCarpentry) || (!b_Masonry && m_CraftSystem is DefMasonry) || (!b_Tailoring && m_CraftSystem is DefTailoring) || (!b_Tinkering && m_CraftSystem is DefTinkering)) { if (index == 0) { if (i > 0) { AddButton(485, 260, 4005, 4007, 0, GumpButtonType.Page, (i / 10) + 1); } AddPage((i / 10) + 1); if (i > 0) { AddButton(455, 260, 4014, 4015, 0, GumpButtonType.Page, i / 10); } CraftContext context = m_CraftSystem.GetContext(m_From); AddButton(220, 260, 4005, 4007, GetButtonID(6, 4), GumpButtonType.Reply, 0); AddHtmlLocalized(255, 263, 200, 18, (context == null || !context.DoNotColor) ? 1061591 : 1061590, LabelColor, false, false); } AddButton(220, 60 + (index * 20), 4005, 4007, GetButtonID(5, i), GumpButtonType.Reply, 0); if (subResource.NameNumber > 0) { AddHtmlLocalized(255, 63 + (index * 20), 250, 18, subResource.NameNumber, LabelColor, false, false); } else { AddLabel(255, 60 + (index * 20), LabelHue, subResource.NameString); } i_Lenght++; } } } else { //daat99 OWLTR end - recipe craft for (int i = 0; i < res.Count; ++i) { int index = i % 10; CraftSubRes subResource = res.GetAt(i); if (index == 0) { if (i > 0) { this.AddButton(485, 290, 4005, 4007, 0, GumpButtonType.Page, (i / 10) + 1); } this.AddPage((i / 10) + 1); if (i > 0) { this.AddButton(455, 290, 4014, 4015, 0, GumpButtonType.Page, i / 10); } CraftContext context = this.m_CraftSystem.GetContext(this.m_From); this.AddButton(220, 290, 4005, 4007, GetButtonID(6, 4), GumpButtonType.Reply, 0); this.AddHtmlLocalized(255, 293, 200, 18, (context == null || !context.DoNotColor) ? 1061591 : 1061590, LabelColor, false, false); } int resourceCount = 0; if (from.Backpack != null) { Item[] items = from.Backpack.FindItemsByType(subResource.ItemType, true); for (int j = 0; j < items.Length; ++j) { resourceCount += items[j].Amount; } //daat99 OWLTR start - craft from storage ulong storageCount = MasterStorageUtils.GetPlayersStorageItemCount(from as Mobiles.PlayerMobile, subResource.ItemType); if (storageCount > 0) { if (storageCount < int.MaxValue && storageCount + (ulong)resourceCount < int.MaxValue) { resourceCount += (int)storageCount; } else { resourceCount = int.MaxValue; } } //daat99 OWLTR end - craft from storage } this.AddButton(220, 70 + (index * 20), 4005, 4007, GetButtonID(5, i), GumpButtonType.Reply, 0); if (subResource.NameNumber > 0) { this.AddHtmlLocalized(255, 73 + (index * 20), 250, 18, subResource.NameNumber, resourceCount.ToString(), LabelColor, false, false); } else { this.AddLabel(255, 70 + (index * 20), LabelHue, String.Format("{0} ({1})", subResource.NameString, resourceCount)); } } } }
public override void OnHarvestFinished(Mobile from, Item tool, HarvestDefinition def, HarvestVein vein, HarvestBank bank, HarvestResource resource, object harvested, Type type) { if (tool is GargoylesAxe && 0.1 < Utility.RandomDouble()) { HarvestResource res = vein.PrimaryResource; Map map = from.Map; if (map == null) { return; } BaseCreature spawned = null; int i_Level = 0; if (OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.DAAT99_LUMBERJACKING)) { i_Level = CraftResources.GetIndex(CraftResources.GetFromType(type)) + 301; } else if (res == resource) { try { i_Level = Array.IndexOf(def.Veins, vein) + 301; } catch { } } // if (i_Level > 300 && OWLTROptionsManager.IsEnabled(OWLTROptionsManager.OPTIONS_ENUM.HARVEST_GIVE_TOKENS)) // TokenSystem.GiveTokensToPlayer(from as PlayerMobile, (i_Level - 300)*10); if (i_Level > 301) { spawned = new Elementals(i_Level); } else { spawned = null; } try { if (spawned != null) { int offset = Utility.Random(8) * 2; for (int i = 0; i < m_Offsets.Length; i += 2) { int x = from.X + m_Offsets[(offset + i) % m_Offsets.Length]; int y = from.Y + m_Offsets[(offset + i + 1) % m_Offsets.Length]; if (map.CanSpawnMobile(x, y, from.Z)) { spawned.MoveToWorld(new Point3D(x, y, from.Z), map); spawned.Combatant = from; return; } else { int z = map.GetAverageZ(x, y); if (map.CanSpawnMobile(x, y, z)) { spawned.MoveToWorld(new Point3D(x, y, z), map); spawned.Combatant = from; return; } } } spawned.MoveToWorld(from.Location, from.Map); spawned.Combatant = from; } } catch { } } }
private SmeltResult Resmelt(Mobile from, Item item, CraftResource resource) { try { if (Ethics.Ethic.IsImbued(item)) { return(SmeltResult.Invalid); } if (CraftResources.GetType(resource) != CraftResourceType.Metal) { return(SmeltResult.Invalid); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(SmeltResult.Invalid); } CraftItem craftItem = this.m_CraftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(SmeltResult.Invalid); } CraftRes craftResource = craftItem.Resources.GetAt(0); if (craftResource.Amount < 2) { return(SmeltResult.Invalid); // 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; } if (difficulty > from.Skills[SkillName.Mining].Value) { return(SmeltResult.NoSkill); } 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)) { ingot.Amount = craftResource.Amount / 2; } else { ingot.Amount = 1; } item.Delete(); from.AddToBackpack(ingot); from.PlaySound(0x2A); from.PlaySound(0x240); return(SmeltResult.Success); } catch { } return(SmeltResult.Invalid); }
public static EnhanceResult Invoke(Mobile from, CraftSystem craftSystem, BaseTool tool, Item item, CraftResource resource, Type resType, ref object resMessage) { if (item == null) { return(EnhanceResult.BadItem); } if (!item.IsChildOf(from.Backpack)) { return(EnhanceResult.NotInBackpack); } if (!(item is BaseArmor) && !(item is BaseWeapon) && !(item is BaseOtherEquipable)) { return(EnhanceResult.BadItem); } if (item is IArcaneEquip) { IArcaneEquip eq = (IArcaneEquip)item; if (eq.IsArcane) { return(EnhanceResult.BadItem); } } if (CraftResources.IsStandard(resource)) { return(EnhanceResult.BadResource); } int num = craftSystem.CanCraft(from, tool, item.GetType()); if (num > 0) { resMessage = num; return(EnhanceResult.None); } CraftItem craftItem = craftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(EnhanceResult.BadItem); } bool allRequiredSkills = false; if (craftItem.GetSuccessChance(from, resType, craftSystem, false, ref allRequiredSkills) <= 0.0) { return(EnhanceResult.NoSkill); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(EnhanceResult.BadResource); } CraftAttributeInfo attributes = info.AttributeInfo; if (attributes == null) { return(EnhanceResult.BadResource); } int resHue = 0, maxAmount = 0; if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.None, ref resMessage)) { return(EnhanceResult.NoResources); } if (craftSystem is DefBlacksmithy) { AncientSmithyHammer hammer = from.FindItemOnLayer(Layer.OneHanded) as AncientSmithyHammer; if (hammer != null) { hammer.UsesRemaining--; if (hammer.UsesRemaining < 1) { hammer.Delete(); } } } int baseChance = 0; BonusAttribute[] bonusAttrs = null; BonusAttribute[] randomAttrs = null; if (item is BaseWeapon) { BaseWeapon weapon = (BaseWeapon)item; if (!CraftResources.IsStandard(weapon.Resource)) { return(EnhanceResult.AlreadyEnhanced); } baseChance = 20; CheckSkill(ref baseChance, from, craftSystem); int numOfRand = attributes.RandomAttributeCount; bonusAttrs = attributes.WeaponAttributes; randomAttrs = BonusAttributesHelper.GetRandomAttributes(attributes.WeaponRandomAttributes, numOfRand); } else if (item is BaseArmor) { BaseArmor armor = (BaseArmor)item; if (!CraftResources.IsStandard(armor.Resource)) { return(EnhanceResult.AlreadyEnhanced); } baseChance = 20; CheckSkill(ref baseChance, from, craftSystem); int numOfRand = attributes.RandomAttributeCount; if (armor.UsesShieldAttrs) { bonusAttrs = attributes.ShieldAttributes; randomAttrs = BonusAttributesHelper.GetRandomAttributes(attributes.ShieldRandomAttributes, numOfRand); } else { bonusAttrs = info.AttributeInfo.ArmorAttributes; randomAttrs = BonusAttributesHelper.GetRandomAttributes(attributes.ArmorRandomAttributes, numOfRand); } } else if (item is BaseOtherEquipable) { BaseOtherEquipable otherEquip = (BaseOtherEquipable)item; if (!CraftResources.IsStandard(otherEquip.Resource)) { return(EnhanceResult.AlreadyEnhanced); } baseChance = 20; CheckSkill(ref baseChance, from, craftSystem); int numOfRand = attributes.RandomAttributeCount; bonusAttrs = attributes.OtherAttributes; randomAttrs = BonusAttributesHelper.GetRandomAttributes(attributes.OtherRandomAttributes, numOfRand); } List <BonusAttribute> attrs = new List <BonusAttribute>(); if (bonusAttrs != null && bonusAttrs.Length > 0) { attrs.AddRange(bonusAttrs); } if (randomAttrs != null && randomAttrs.Length > 0) { attrs.AddRange(randomAttrs); } EnhanceResult res = EnhanceResult.Success; TryEnhance(attrs, item, baseChance, ref res); switch (res) { case EnhanceResult.Broken: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } item.Delete(); break; } case EnhanceResult.Success: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.All, ref resMessage)) { return(EnhanceResult.NoResources); } if (item is BaseWeapon) { BaseWeapon w = (BaseWeapon)item; w.RandomAttributes = randomAttrs; w.Resource = resource; w.Hue = w.GetElementalDamageHue(w.Hue); } else if (item is BaseArmor) { BaseArmor ar = (BaseArmor)item; ar.RandomAttributes = randomAttrs; ((BaseArmor)item).Resource = resource; } else if (item is BaseOtherEquipable) //Sanity { BaseOtherEquipable otherEquip = (BaseOtherEquipable)item; otherEquip.RandomAttributes = randomAttrs; ((BaseOtherEquipable)item).Resource = resource; } break; } case EnhanceResult.Failure: { if (!craftItem.ConsumeRes(from, resType, craftSystem, ref resHue, ref maxAmount, ConsumeType.Half, ref resMessage)) { return(EnhanceResult.NoResources); } break; } } return(res); }
public override void OnSingleClick(Mobile from) { LabelTo(from, string.Format("{0} {1} granite{2}", Amount > 1 ? Amount.ToString() : "", CraftResources.GetName(m_Resource).ToLower(), Amount > 1 ? "s" : "")); }
private static void GenerateTable(CraftSystem system) { var stw = new StreamWriter("web/" + system.MainSkill.ToString() + ".json"); using (JsonWriter writer = new JsonTextWriter(stw)) { writer.Formatting = Formatting.Indented; //writer.WritePropertyName("items"); writer.WriteStartArray(); foreach (CraftItem item in system.CraftItems) { writer.WriteStartObject(); writer.WritePropertyName("Name"); if (item.NameNumber == 0) { writer.WriteValue(item.NameString); } else { writer.WriteValue(CliLoc.LocToString(item.NameNumber)); } writer.WritePropertyName("hue"); writer.WriteValue(item.ItemHue); writer.WritePropertyName("type"); writer.WriteValue(CraftItem.ItemIDOf(item.ItemType)); writer.WritePropertyName("skills"); writer.WriteStartArray(); foreach (CraftSkill skill in item.Skills) { writer.WriteStartObject(); writer.WritePropertyName("skill"); writer.WriteValue(skill.SkillToMake.ToString()); writer.WritePropertyName("minskill"); writer.WriteValue(skill.MinSkill); writer.WritePropertyName("maxskill"); writer.WriteValue(skill.MaxSkill); writer.WriteEndObject(); } writer.WriteEndArray(); writer.WritePropertyName("resources"); writer.WriteStartArray(); foreach (CraftRes res in item.Resources) { writer.WriteStartObject(); writer.WritePropertyName("res"); if (res.NameNumber != 0) { writer.WriteValue(CliLoc.LocToString(res.NameNumber)); } else if (res.NameString?.Length > 2) { writer.WriteValue(res.NameString); } else { if (CraftResources.GetFromType(res.ItemType) != CraftResource.None) { var resource = CraftResources.GetName(CraftResources.GetFromType(res.ItemType)); writer.WriteValue(resource); } } writer.WritePropertyName("qty"); writer.WriteValue(res.Amount); writer.WriteEndObject(); } writer.WriteEndArray(); writer.WriteEndObject(); } writer.WriteEndArray(); } }