コード例 #1
0
 private static ItemSlotPet ToItemSlot(this PetItemTemplate template)
 {
     return(new ItemSlotPet
     {
         TemplateID = template.TemplateID
     });
 }
コード例 #2
0
        private static ItemSlotPet ToItemSlot(this PetItemTemplate template)
        {
            var i = new ItemSlotPet
            {
                TemplateID = template.ID
            };

            if (template.Life > 0)
            {
                i.DateDead = DateTime.Now.AddDays(template.Life);
            }

            return(i);
        }
コード例 #3
0
        private void LoadPets(NameSpaceDirectory nameSpaceDir)
        {
            if (nameSpaceDir is null)
            {
                throw new ArgumentNullException(nameof(nameSpaceDir));
            }
            if (nameSpaceDir.Files.Count <= 0)
            {
                throw new ArgumentException("No files in directory.", nameof(nameSpaceDir));
            }

            foreach (var itemBlob in nameSpaceDir.Files)
            {
                var infoProp = ((WzFileProperty)itemBlob.Object)["info"] as WzProperty;

                var itemTemplate = new PetItemTemplate(Convert.ToInt32(itemBlob.Name.Split('.')[0]))
                {
                    Hungry               = infoProp.GetInt32("hungry"),
                    Life                 = infoProp.GetInt32("life"),
                    NameTag              = infoProp.GetInt32("nameTag"),
                    ChatBalloon          = infoProp.GetInt32("chatBalloon"),
                    EvolReqItemID        = infoProp.GetInt32("evolReqItemID"),
                    EvolNo               = infoProp.GetInt32("evolNo"),
                    EvolReqPetLvl        = infoProp.GetInt32("evolReqPetLvl"),
                    LimitedLife          = infoProp.GetInt32("limitedLife"),
                    Permanent            = infoProp.GetInt32("permanent") > 0,
                    AutoReact            = infoProp.GetInt32("autoReact") > 0,
                    NoRevive             = infoProp.GetInt32("noRevive") > 0,
                    NoMoveToLocker       = infoProp.GetInt32("noMoveToLocker") > 0,
                    InteractByUserAction = infoProp.GetInt32("interactByUserAction") > 0,
                };

                itemTemplate.Evol     = new int[itemTemplate.EvolNo];
                itemTemplate.EvolProb = new int[itemTemplate.EvolNo];

                for (var i = 0; i < itemTemplate.Evol.Length; i++)
                {
                    var num = i + 1;
                    itemTemplate.Evol[i]     = infoProp.GetInt32("evol" + num);
                    itemTemplate.EvolProb[i] = infoProp.GetInt32("evolProb" + num);
                }

                FinishTemplate(itemTemplate, infoProp);
                InsertItem(itemTemplate);
            }
        }
コード例 #4
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);
        }