示例#1
0
        public static IDictionary <TemporaryStatType, short> GetTemporaryStats(this StatChangeItemTemplate template)
        {
            var stats = new Dictionary <TemporaryStatType, short>();

            if (template.PAD != 0)
            {
                stats.Add(TemporaryStatType.PAD, template.PAD);
            }
            if (template.PDD != 0)
            {
                stats.Add(TemporaryStatType.PDD, template.PDD);
            }
            if (template.MAD != 0)
            {
                stats.Add(TemporaryStatType.MAD, template.MAD);
            }
            if (template.MDD != 0)
            {
                stats.Add(TemporaryStatType.MDD, template.MDD);
            }
            if (template.ACC != 0)
            {
                stats.Add(TemporaryStatType.ACC, template.ACC);
            }
            if (template.EVA != 0)
            {
                stats.Add(TemporaryStatType.EVA, template.EVA);
            }
            if (template.Craft != 0)
            {
                stats.Add(TemporaryStatType.Craft, template.Craft);
            }
            if (template.Speed != 0)
            {
                stats.Add(TemporaryStatType.Speed, template.Speed);
            }
            if (template.Jump != 0)
            {
                stats.Add(TemporaryStatType.Jump, template.Jump);
            }

            if (template.Morph > 0)
            {
                stats.Add(TemporaryStatType.Morph, template.Morph);
            }

            return(stats);
        }
示例#2
0
        public static ItemTemplate Parse(int templateId, PackageCollection collection)
        {
            WZProperty   prop    = null;
            ItemTemplate item    = null;
            var          type    = templateId / 1000000;
            var          subType = templateId % 1000000 / 10000;
            var          header  = templateId / 10000;

            switch (type)
            {
            case 1:
                item = new ItemEquipTemplate();
                prop = collection.Resolve("Character").Children
                       .SelectMany(c => c.Children)
                       .FirstOrDefault(c => c.Name == $"{templateId:D8}.img");
                break;

            case 2:
                prop = collection.Resolve($"Item/Consume/{header:D4}.img/{templateId:D8}");
                switch (subType)
                {
                case 0:
                case 1:
                case 2:
                case 5:
                case 21:
                case 36:
                case 38:
                case 45:
                    item = new StatChangeItemTemplate();
                    break;

                case 3:
                    item = new PortalScrollItemTemplate();
                    break;

                case 4:
                    item = new UpgradeItemTemplate();
                    break;

                case 10:
                    item = new MobSummonItemTemplate();
                    break;

                case 12:
                    item = new PetFoodItemTemplate();
                    break;

                case 26:
                    item = new TamingMobFoodItemTemplate();
                    break;

                case 27:
                    item = new BridleItemTemplate();
                    break;

                case 28:
                case 29:
                    item = new SkillLearnItemTemplate();
                    break;
                }

                break;

            case 3:
                prop = collection.Resolve($"Item/Install/{header:D4}.img/{templateId:D8}");
                if (subType == 1)
                {
                    item = new PortableChairItemTemplate();
                }
                break;

            case 4:
                prop = collection.Resolve($"Item/Etc/{header:D4}.img/{templateId:D8}");
                break;

            case 5:     // TODO
                switch (subType)
                {
                case 0:
                    item = new PetItemTemplate();
                    prop = collection.Resolve($"Item/Pet/{templateId:D7}.img");
                    break;
                }

                prop = prop ?? collection.Resolve($"Item/Cash/{header:D4}.img/{templateId:D8}");
                break;
            }

            if (item == null)
            {
                item = new ItemBundleTemplate();
            }

            item.Parse(templateId, prop);
            return(item);
        }