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) { 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; } double skill = Math.Max(from.Skills[SkillName.Mining].Value, from.Skills[SkillName.Blacksmith].Value); if (difficulty > skill) { return(SmeltResult.NoSkill); } Type resourceType = info.ResourceTypes[0]; Item ingot = (Item)Activator.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 = (int)(craftResource.Amount * .66); } else { ingot.Amount = 1; } item.Delete(); from.AddToBackpack(ingot); from.PlaySound(0x2A); from.PlaySound(0x240); return(SmeltResult.Success); }
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); } var info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(SmeltResult.Invalid); } var craftItem = m_CraftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(SmeltResult.Invalid); } var craftResource = craftItem.Resources[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); } var resourceType = info.ResourceTypes[0]; var 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); }
protected override void OnTarget(Mobile from, object targeted) { if (targeted is Item) { Item item = targeted as Item; if (tool.Type == RuneApplicationTool.ApplyType.Metal) { if (item is BaseJewel) { BaseJewel jewel = item as BaseJewel; if (!jewel.Attributes.IsEmpty) { from.SendMessage("This object already has already been inscribed with runes."); return; } if (CraftResources.GetType(jewel.Resource) == CraftResourceType.Metal || CraftResources.GetType(jewel.Resource) == CraftResourceType.Wood) { from.SendGump(new BasicAttributeGump(item, from, tool)); return; } else { from.SendMessage("This is for use on metal and wooden objects only."); } } if (item is BaseWeapon) { BaseWeapon weapon = item as BaseWeapon; if (!weapon.Attributes.IsEmpty || !weapon.WeaponAttributes.IsEmpty) { from.SendMessage("This object already has already been inscribed with runes."); return; } if (CraftResources.GetType(weapon.Resource) == CraftResourceType.Metal || CraftResources.GetType(weapon.Resource) == CraftResourceType.Wood) { from.SendGump(new BasicAttributeGump(item, from, tool)); return; } else { from.SendMessage("This is for use on metal and wooden objects only."); } } if (item is BaseWeapon) { BaseWeapon weapon = item as BaseWeapon; if (!weapon.Attributes.IsEmpty || !weapon.WeaponAttributes.IsEmpty) { from.SendMessage("This object already has already been inscribed with runes."); return; } if (CraftResources.GetType(weapon.Resource) == CraftResourceType.Metal || CraftResources.GetType(weapon.Resource) == CraftResourceType.Wood) { from.SendGump(new BasicAttributeGump(item, from, tool)); return; } else { from.SendMessage("This is for use on metal and wooden objects only."); } } if (item is BaseArmor) { BaseArmor armor = item as BaseArmor; if (!armor.Attributes.IsEmpty || !armor.ArmorAttributes.IsEmpty) { from.SendMessage("This object already has already been inscribed with runes."); return; } if (CraftResources.GetType(armor.Resource) == CraftResourceType.Metal || CraftResources.GetType(armor.Resource) == CraftResourceType.Wood) { from.SendGump(new BasicAttributeGump(item, from, tool)); return; } else { from.SendMessage("This is for use on metal and wooden objects only."); } } } if (tool.Type == RuneApplicationTool.ApplyType.Leather) { if (item is BaseClothing) { BaseClothing cloth = item as BaseClothing; if (!cloth.Attributes.IsEmpty) { from.SendMessage("This object already has already been inscribed with runes."); return; } if (CraftResources.GetType(cloth.Resource) == CraftResourceType.Leather) { from.SendGump(new BasicAttributeGump(item, from, tool)); return; } else { from.SendMessage("This is for use on leather objects only."); } return; } if (item is BaseArmor) { BaseArmor armor = item as BaseArmor; if (!armor.Attributes.IsEmpty || !armor.ArmorAttributes.IsEmpty) { from.SendMessage("This object already has already been inscribed with runes."); return; } if (CraftResources.GetType(armor.Resource) == CraftResourceType.Leather) { from.SendGump(new BasicAttributeGump(item, from, tool)); return; } else { from.SendMessage("This is for use on leather objects only."); } } if (item is Spellbook) { if (!((Spellbook)item).Attributes.IsEmpty) { from.SendMessage("This object already has already been inscribed with runes."); return; } else { from.SendGump(new BasicAttributeGump(item, from, tool)); return; } } //if (tool.Type == RuneApplicationTool.ApplyType.Wood) //{ // if (item is BaseWeapon) // { // BaseWeapon weapon = item as BaseWeapon; // if (!weapon.Attributes.IsEmpty || !weapon.WeaponAttributes.IsEmpty) // { // from.SendMessage("This object already has already been inscribed with runes."); return; // } // if (CraftResources.GetType(weapon.Resource) == CraftResourceType.Wood) // { // from.SendGump(new BasicAttributeGump(item, from)); // } // else from.SendMessage("This is for use on wooden objects only."); // } // if (item is BaseArmor) // { // BaseArmor armor = item as BaseArmor; // if (!armor.Attributes.IsEmpty || !armor.ArmorAttributes.IsEmpty) // { // from.SendMessage("This object already has already been inscribed with runes."); return; // } // if (CraftResources.GetType(armor.Resource) == CraftResourceType.Wood) // { // from.SendGump(new BasicAttributeGump(item, from)); // } // else from.SendMessage("This is for use on wooden objects only."); // } //} if (tool.Type == RuneApplicationTool.ApplyType.Cloth) { if (item is BaseClothing) { BaseClothing cloth = item as BaseClothing; if (!cloth.Attributes.IsEmpty) { from.SendMessage("This object already has already been inscribed with runes."); return; } if (CraftResources.GetType(cloth.Resource) == CraftResourceType.None) { from.SendGump(new BasicAttributeGump(item, from, tool)); } else { from.SendMessage("This is for use on cloth objects only."); } } } } } }
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) { 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(); if (from is Player) { Craftsman cm = Perk.GetByType <Craftsman>(from as Player); if (cm != null && cm.Savvy()) { ingot.Amount += Utility.RandomMinMax(1, 2); } } from.AddToBackpack(ingot); from.PlaySound(0x2A); from.PlaySound(0x240); return(SmeltResult.Success); } catch { } return(SmeltResult.Invalid); }
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[0]; if (craftResource.Amount < 2) { return(SmeltResult.Invalid); // Not enough metal to resmelt } var oreEntry = ZhConfig.Resources.Ores.Entries[(int)resource - 1]; var difficulty = oreEntry.SmeltSkillRequired; if (difficulty > from.Skills[SkillName.Mining].Value) { return(SmeltResult.NoSkill); } Type resourceType = info.ResourceTypes[0]; Item ingot = (Item)Activator.CreateInstance(resourceType); if (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(0x2B); return(SmeltResult.Success); } catch { } return(SmeltResult.Invalid); }
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 = resource switch { CraftResource.Iron => 60, CraftResource.Gold => 60, CraftResource.Spike => 60, CraftResource.Fruity => 60, CraftResource.Bronze => 60, CraftResource.IceRock => 60, CraftResource.BlackDwarf => 60, CraftResource.DullCopper => 60, CraftResource.Platinum => 60, CraftResource.SilverRock => 60, CraftResource.DarkPagan => 60, CraftResource.Copper => 60, CraftResource.Mystic => 60, CraftResource.Spectral => 60, CraftResource.OldBritain => 60, CraftResource.Onyx => 60, CraftResource.RedElven => 60, CraftResource.Undead => 60, CraftResource.Pyrite => 60, CraftResource.Virginity => 60, CraftResource.Malachite => 60, CraftResource.Lavarock => 60, CraftResource.Azurite => 60, CraftResource.Dripstone => 60, CraftResource.Executor => 60, CraftResource.Peachblue => 60, CraftResource.Destruction => 60, CraftResource.Anra => 60, CraftResource.Crystal => 60, CraftResource.Doom => 60, CraftResource.Goddess => 60, CraftResource.NewZulu => 60, CraftResource.DarkSableRuby => 60, CraftResource.EbonTwilightSapphire => 60, CraftResource.RadiantNimbusDiamond => 60, _ => 0.0 }; if (difficulty > from.Skills[SkillName.Mining].Value) { return(SmeltResult.NoSkill); } Type resourceType = info.ResourceTypes[0]; Item ingot = (Item)Activator.CreateInstance(resourceType); if (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); }
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 } //daat99 OWLTR start - smelting difficulty double difficulty = daat99.ResourceHelper.GetMinSkill(resource); //daat99 OWLTR end - smelting difficulty 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); }
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 = Craft.CraftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Ressources.Count == 0) { return(SmeltResult.Invalid); } CraftRes craftResource = craftItem.Ressources.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 && !item.StoreBought) || (item is BaseWeapon && !item.StoreBought) || (item is BaseClothing && !item.StoreBought)) { ingot.Amount = craftResource.Amount / 2; } else { ingot.Amount = 1; } /* Publish - September 22, 1999 * Items you wish to smelt must be in your back-pack. * Smelting will be tied to the mining skill. The higher your skill in mining, the more ingots you will get back. * The more wear and tear on an item, the less ingots it will return. * Items purchased from an NPC will yield only one ingot when smelted. * http://www.uoguide.com/Publish_-_September_22,_1999 */ if (Core.UOSP) { double amount = (double)ingot.Amount; // Smelting will be tied to the mining skill. The higher your skill in mining, the more ingots you will get back. amount = amount / 2 + ((amount / 2) * (from.Skills[SkillName.Mining].Value / 100)); // The more wear and tear on an item, the less ingots it will return. double MaxHitPoints = 0; double HitPoints = 0; if (item is BaseWeapon) { MaxHitPoints = (double)(item as BaseWeapon).MaxHitPoints; HitPoints = (double)(item as BaseWeapon).HitPoints; } else if (item is BaseArmor) { MaxHitPoints = (double)(item as BaseArmor).MaxHitPoints; HitPoints = (double)(item as BaseArmor).HitPoints; } // reduce the ingots by the amount of wear on the item. An item that is 50% worn out will reduce the ingots by 50% double difference = ((MaxHitPoints - HitPoints) / MaxHitPoints) * 100.0; if (difference > 0.0) { amount *= (100.0 - difference) / 100.0; } // okay, adjust ingot output ingot.Amount = (int)Math.Round(amount); if (ingot.Amount < 1) { ingot.Amount = 1; } } item.Delete(); from.AddToBackpack(ingot); from.PlaySound(0x2A); from.PlaySound(0x240); return(SmeltResult.Success); } catch (Exception ex) { EventSink.InvokeLogException(new LogExceptionEventArgs(ex)); } return(SmeltResult.Success); }
private static bool DoResmelt(CraftSystem system, Mobile from, Item item, CraftResource resource, bool playSound) { try { if (CraftResources.GetType(resource) != CraftResourceType.Metal) { return(false); } CraftResourceInfo info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(false); } if (!CheckResourceSkill(info.Resource, from.Skills[SkillName.Mining].Value)) { return(false); } CraftItem craftItem = system.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Ressources.Count == 0) { return(false); } CraftRes craftResource = craftItem.Ressources.GetAt(0); if (craftResource.Amount < 2) { return(false); // Not enough metal to resmelt } 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); if (playSound) { from.PlaySound(0x2A); from.PlaySound(0x240); } return(true); } catch { } return(false); }
/* * 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) { FixedParticles(0x376A, 20, 10, 0x2530, EffectLayer.Waist); PlaySound(0x2F4); int discordanceEffect = 0; if (attacker is PlayerMobile && 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(Location, 2) && 0.15 > Utility.RandomDouble()) { var 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) { var 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) { var 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); } FixedParticles(0, 10, 0, 0x2530, EffectLayer.Waist); } } } base.OnGotMeleeAttack(attacker); }
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 = 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.MRusty: difficulty = 50.0; break; case CraftResource.MOldcopper: difficulty = 60.0; break; case CraftResource.MDullcopper: difficulty = 65.0; break; case CraftResource.MShadow: difficulty = 70.0; break; case CraftResource.MCopper: difficulty = 75.0; break; case CraftResource.MBronze: difficulty = 80.0; break; case CraftResource.MGold: difficulty = 85.0; break; case CraftResource.MRose: difficulty = 87.0; break; case CraftResource.MAgapite: difficulty = 90.0; break; case CraftResource.MValorite: difficulty = 90.0; break; case CraftResource.MBloodrock: difficulty = 93.0; break; case CraftResource.MVerite: difficulty = 95.0; break; case CraftResource.MSilver: difficulty = 95.0; break; case CraftResource.MDragon: difficulty = 95.0; break; case CraftResource.MTitan: difficulty = 95.0; break; case CraftResource.MCrystaline: difficulty = 95.0; break; case CraftResource.MKrynite: difficulty = 95.0; break; case CraftResource.MVulcan: difficulty = 95.0; break; case CraftResource.MBloodcrest: difficulty = 95.0; break; case CraftResource.MElvin: difficulty = 95.0; break; case CraftResource.MAcid: difficulty = 95.0; break; case CraftResource.MAqua: difficulty = 95.0; break; case CraftResource.MEldar: difficulty = 95.0; break; case CraftResource.MGlowing: difficulty = 95.0; break; case CraftResource.MGorgan: difficulty = 95.0; break; case CraftResource.MSteel: difficulty = 95.5; break; case CraftResource.MSandrock: difficulty = 95.0; break; case CraftResource.MMytheril: difficulty = 97.5; break; case CraftResource.MBlackrock: difficulty = 98.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); }
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) { 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; } if (item.Amount > 1) { item.Amount--; } else { item.Delete(); } #region Add to pack or ground if overweight //Taran: Check to see if player is overweight. If they are and the item drops to the //ground then a check is made to see if it can be stacked. If it can't and more than //20 items of the same type exist in the same tile then the last item gets removed. This //check is made so thousands of items can't exist in 1 tile and crash people in the same area. if (from.AddToBackpack(ingot)) { from.SendAsciiMessage("You put the {0} in your pack.", ingot.Name ?? CliLoc.LocToString(ingot.LabelNumber)); } else if (!ingot.Deleted) { IPooledEnumerable eable = from.Map.GetItemsInRange(from.Location, 0); int amount = 0; Item toRemove = null; foreach (Item i in eable) { if (i != ingot && i.ItemID == ingot.ItemID) { if (i.StackWith(from, ingot, false)) { toRemove = ingot; break; } amount++; } } from.SendAsciiMessage("You are overweight and put the {0} on the ground.", ingot.Name ?? CliLoc.LocToString(ingot.LabelNumber)); if (toRemove != null) { toRemove.Delete(); } else if (amount >= 5 && amount < 20) { from.LocalOverheadMessage(MessageType.Regular, 906, true, string.Format("{0} identical items on the ground detected, no more than 20 is allowed!", amount)); } else if (amount >= 20) { from.LocalOverheadMessage(MessageType.Regular, 906, true, "Too many identical items on the ground, removing!"); ingot.Delete(); } eable.Free(); } #endregion from.PlaySound(0x2A); from.PlaySound(0x240); return(SmeltResult.Success); } catch { } return(SmeltResult.Invalid); }
private bool Resmelt(Mobile from, Item item, CraftResource resource) { try { if (CraftResources.GetType(resource) != CraftResourceType.Metal) { return(false); } var info = CraftResources.GetInfo(resource); if (info == null || info.ResourceTypes.Length == 0) { return(false); } var craftItem = DefBlacksmithy.CraftSystem.CraftItems.SearchFor(item.GetType()); if (craftItem == null || craftItem.Resources.Count == 0) { return(false); } var craftResource = craftItem.Resources[0]; if (craftResource.Amount < 2) { return(false); // 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 }; var ingot = info.ResourceTypes[0].CreateInstance <Item>(); if (item is DragonBardingDeed || item is BaseArmor armor && armor.PlayerConstructed || item is BaseWeapon weapon && weapon.PlayerConstructed || item is BaseClothing clothing && clothing.PlayerConstructed) { var mining = from.Skills.Mining.Value; if (mining > 100.0) { mining = 100.0; } var amount = ((4 + mining) * craftResource.Amount - 4) * 0.0068; if (amount < 2) { ingot.Amount = 2; } else { ingot.Amount = (int)amount; } } else { ingot.Amount = 2; } if (difficulty > from.Skills.Mining.Value) { m_Failure = true; ingot.Delete(); } else { item.Delete(); } from.AddToBackpack(ingot); from.PlaySound(0x2A); from.PlaySound(0x240); return(true); }