コード例 #1
0
        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());
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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());
            }
        }
コード例 #4
0
        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);
                }
            }
        }
コード例 #5
0
ファイル: Hides.cs プロジェクト: sircapted/UOT2A.COM
        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));
                }
            }
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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());
        }
コード例 #8
0
 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" : ""));
 }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
ファイル: ArmsLore.cs プロジェクト: zerodowned/vivre-uo
            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.
                }
            }
コード例 #13
0
        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();
            }
        }
コード例 #14
0
        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);
        }