public override void AddNameProperty(ObjectPropertyList list) { var res = CraftResources.GetName(Resource); if (CraftResources.IsStandard(Resource)) { res = String.Empty; } else { if (Insensitive.Contains(res, "Normal") || Insensitive.Contains(res, "Plain")) { var typ = CraftResources.GetType(Resource).ToString(); res = res.Replace("Normal", typ); res = res.Replace("Plain", typ); } res = res.Replace("Scales", "Scale"); res = res.Replace("Crystals", "Crystal"); } if (Amount <= 1) { list.Add(1050039, "{0}\t{1}", res, this.ResolveName()); } else { list.Add(1050039, "{0}\t{1} {2}", Amount, res, this.ResolveName()); } }
private static void RewriteEquipmentInfo(ReadOnlySpan <byte> input, CircularBuffer <byte> output, out int length) { var reader = new SpanReader(input); reader.Seek(3, SeekOrigin.Current); var sub = reader.ReadInt16(); var serial = reader.ReadUInt32(); var label = reader.ReadInt32(); var item = World.FindItem(serial); if (!ZhConfig.Messaging.Cliloc.TryGetValue(label, out var text)) { length = NetworkCompression.Compress(input, output); return; } var res = item switch { BaseClothing clothing => clothing.Resource, BaseWeapon weapon => weapon.Resource, BaseArmor armor => armor.Resource, BaseJewel jewel => jewel.Resource, _ => CraftResource.None }; if (res != CraftResource.None) { text = $"{CraftResources.GetName(res)} {text}"; } var buffer = stackalloc byte[GetMaxMessageLength(text)].InitializePacket(); var pLength = CreateMessage( buffer, serial, item.ItemID, MessageType.Label, 0, 3, true, null, "", text ); buffer = buffer.SliceToLength(pLength); length = NetworkCompression.Compress(buffer, output); }
public override void AddNameProperty(ObjectPropertyList list) { TextDefinition def = new TextDefinition( CraftResources.GetLocalizationNumber(_Resource), CraftResources.GetName(_Resource)); if (Amount > 1) { // ~1_NUMBER~ ~2_ITEMNAME~ list.Add(1050039, "{0}\t{1}", Amount, String.Format("{0} {1}", def.GetString(), this.ResolveName())); } else { list.Add(1053099, "{0}\t{1}", def.GetString(), this.ResolveName()); } }
public void ApplyGuardType() { foreach (Layer i in Enum.GetValues(typeof(Layer))) { Item item = FindItemOnLayer(i); if (item != null) { if (item is BaseClothing) { ((BaseClothing)item).Resource = m_GuardTheme; } else if (item is BaseArmor) { ((BaseArmor)item).Resource = m_GuardTheme; } else if (item is BaseWeapon) { ((BaseWeapon)item).Resource = m_GuardTheme; } } } Title = string.Empty; //Regional guards are somewhat obsolete, cant think of anything to use them for //now besides for the fact that the have a different name in "color less" regions if (m_GuardType == GuardType.Colored && m_GuardTheme != CraftResource.None) { Name = string.Format("{0} Guard", CraftResources.GetName(m_GuardTheme)); } else { Region r = Region.Find(Location, Map); if (m_GuardTheme == CraftResource.None || m_GuardType == GuardType.Standard || r == null || string.IsNullOrEmpty(r.Name)) { Name = Female ? NameList.RandomName("female") : Name = NameList.RandomName("male"); Title = "the guard"; } else { Name = string.Format("{0} Guard", r.Name); } } }
public override void GetProperties(ObjectPropertyList list) { base.GetProperties(list); if (!CraftResources.IsStandard(m_Resource)) { int num = CraftResources.GetLocalizationNumber(m_Resource); if (num > 0) { list.Add(num); } else { list.Add(CraftResources.GetName(m_Resource)); } } }
public static string ComputeName(BaseOre ba) { if (!string.IsNullOrEmpty(ba.Name)) { return(ba.Name); } string name = "ore"; if (ba.Amount > 1) { name = name + "s"; } var resource = string.Empty; if (ba.Resource != CraftResource.None) { resource = CraftResources.GetName(ba.Resource); name = string.Format("{0} {1} {2}", ba.Amount, resource, name.ToLower()); } return(name); }
private static bool CheckKeyword(string searchstring, Item item) { if (item is CommodityDeed && ((CommodityDeed)item).Commodity != null) { item = ((CommodityDeed)item).Commodity; } if (item is IResource) { var resName = CraftResources.GetName(((IResource)item).Resource); if (resName.ToLower().IndexOf(searchstring.ToLower()) >= 0) { return(true); } } if (item is ICommodity) { var commodity = (ICommodity)item; string name = commodity.Description.String; if (string.IsNullOrEmpty(name) && commodity.Description.Number > 0) { name = StringList.GetString(commodity.Description.Number); } if (!string.IsNullOrEmpty(name) && name.ToLower().IndexOf(searchstring.ToLower()) >= 0) { return(true); } } return(Keywords.ContainsKey(searchstring.ToLower()) && Keywords[searchstring.ToLower()] == item.GetType()); }
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" : "")); }
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 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 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); }
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. } }
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(); } }
public ItemListEntry[] CreateItemList() { CraftGroupCol craftGroupCol = CurrentCraftSystem.CraftGroups; CraftGroup craftGroup = craftGroupCol.GetAt(SelectedGroupIndex); CraftItemCol craftItemCol = craftGroup.CraftItems; ItemListEntry[] toReturn = new ItemListEntry[craftItemCol.Count + 1]; toReturn[0] = new ItemListEntry("Previous menu", 4766);//Previous page int hue = 0; if (CurrentCraftSystem.CraftSubRes.Init && CurrentCraftSystem.CraftSubRes.Count >= 1 && SelectedResType != CurrentCraftSystem.CraftSubRes.GetAt(0).ItemType) { hue = ResourceInfoList[CurrentCraftSystem.CraftSubRes.GetAt(SelectedResourceIndex)].Hue; } if (hue > 1) { --hue; } string resourceList = string.Empty; for (int i = 0; i < craftItemCol.Count; ++i) { CraftItem craftItem = craftItemCol.GetAt(i); //Get the item id and resources required for the items int itemID; if (craftItemCol.Count >= 1) { itemID = CraftItem.ItemIDOf(craftItemCol.GetAt(i).ItemType); int amount = CurrentCraftSystem.CraftGroups.GetAt(SelectedGroupIndex).CraftItems.GetAt(i).Resources.GetAt(0).Amount; if (SelectedResType == null) { if (!string.IsNullOrEmpty(CurrentCraftSystem.CraftGroups.GetAt(SelectedGroupIndex).CraftItems.GetAt(i).Resources.GetAt(0).NameString)) { resourceList = string.Format(" [{0} {1}]", resourceList, amount); } else if (CurrentCraftSystem.CraftGroups.GetAt(SelectedGroupIndex).CraftItems.GetAt(i).Resources.GetAt(0).NameNumber > 0) { resourceList = string.Format(" [{0} {1}]", amount, CliLoc.LocToString(CurrentCraftSystem.CraftGroups.GetAt(SelectedGroupIndex).CraftItems.GetAt(i).Resources.GetAt(0).NameNumber)); } } else { resourceList = string.Format(" [{0} {1}]", amount, CraftResources.GetName(CraftResources.GetFromType(SelectedResType))); } } else { itemID = 5360; //Deed ID } //Becomes 0 if we use a string instead if (craftItem.NameNumber > 0) { toReturn[i + 1] = new ItemListEntry(CliLoc.LocToString(craftItem.NameNumber) + resourceList, itemID, hue); } else { toReturn[i + 1] = new ItemListEntry(craftItem.NameString + resourceList, itemID, hue); } } return(toReturn); }