public static void ProcessAndDistributeJewelary(IPatcherState <ISkyrimMod, ISkyrimModGetter> state)
        {
            Logger.InfoFormat("Creating Leveled list for Jewelary.....");
            ISkyrimMod patchedMod = FileUtils.GetOrAddPatch("ZZZ Jewelry");
            Dictionary <string, HashSet <IArmorGetter> > jewelleries = new Dictionary <string, HashSet <IArmorGetter> >();

            // Adding all the patches to load order
            foreach (IModListing <ISkyrimModGetter> modlist in state.LoadOrder.PriorityOrder
                     .Where(x => Configuration.User.JewelryMods.Contains(x.ModKey.FileName) &&
                            x.Mod.Armors.Count > 0))
            {
                // Getting Jewelary Armors
                ISkyrimModGetter           mod    = modlist.Mod;
                IEnumerable <IArmorGetter> armors = mod.Armors
                                                    .Where(x => ArmorUtils.IsValidArmor(x) &&
                                                           x.Name != null);

                for (int i = 0; i < armors.Count(); i++)
                {
                    IArmorGetter      armor = armors.ElementAtOrDefault(i);
                    IArmorAddonGetter addon = armor.Armature.FirstOrDefault().Resolve(Configuration.Cache);

                    string gender = (addon.WorldModel.Male != null && addon.WorldModel.Female != null
                                    ? "_C_" : addon.WorldModel.Male == null ? "_F_" : "_M_");

                    var bodyFlags = armor.BodyTemplate.FirstPersonFlags;
                    var key       = bodyFlags.ToString() + gender;
                    if (!jewelleries.ContainsKey(key))
                    {
                        jewelleries.Add(key, new HashSet <IArmorGetter>());
                    }
                    jewelleries.GetValueOrDefault(key).Add(armor);
                }
            }

            // Creating leveled list for the jewelleries
            string prefix = Configuration.Patcher.LeveledListPrefix + "_LL_Jewels_";

            jewelleries.Where(x => !Regex.Match(x.Key.ToString(), "Decapitate", RegexOptions.IgnoreCase).Success)
            .ForEach(j =>
            {
                string lvli_eid = prefix + j.Key.ToString().Replace(" ", "_");
                OutfitUtils.CreateLeveledList(patchedMod, j.Value, lvli_eid, 1, LeveledItem.Flag.CalculateForEachItemInCount);
            });
            Logger.InfoFormat("Leveled List created for Jewelary....");

            // Writing patched mod to disk
            DistributeJewelaryUsingSPID(state, patchedMod);
            Logger.InfoFormat("Distribution of Jewelaries is completed...\n\n");
        }
示例#2
0
        public override IDisposable ConvertMod(SkyrimMod mod, out ISkyrimModGetter getter)
        {
            var tempFile = new TempFile(extraDirectoryPaths: TestPathing.TempFolderPath);
            var path     = new ModPath(mod.ModKey, tempFile.File.Path);

            mod.WriteToBinaryParallel(
                path,
                new BinaryWriteParameters()
            {
                ModKey = ModKeyOption.NoCheck,
            });
            var overlay = SkyrimMod.CreateFromBinaryOverlay(path, SkyrimRelease.SkyrimLE);

            getter = overlay;
            return(Disposable.Create(() =>
            {
                overlay.Dispose();
                tempFile.Dispose();
            }));
        }
示例#3
0
 protected override (LinkCacheStyle Style, ILinkCache <ISkyrimMod, ISkyrimModGetter> Cache) GetLinkCache(
     ISkyrimModGetter modGetter, LinkCachePreferences prefs)
 {
     return(LinkCacheStyle.HasCaching,
            new ImmutableModLinkCache <ISkyrimMod, ISkyrimModGetter>(modGetter, prefs));
 }
示例#4
0
 public override IDisposable ConvertMod(SkyrimMod mod, out ISkyrimModGetter getter)
 {
     getter = mod;
     return(Disposable.Empty);
 }
示例#5
0
 protected override (LinkCacheStyle Style, ILinkCache <ISkyrimMod, ISkyrimModGetter> Cache) GetLinkCache(ISkyrimModGetter modGetter, LinkCachePreferences prefs)
 {
     return(LinkCacheStyle.OnlyDirect, new MutableModLinkCache <ISkyrimMod, ISkyrimModGetter>(modGetter));
 }
示例#6
0
 protected abstract (LinkCacheStyle Style, ILinkCache <ISkyrimMod, ISkyrimModGetter> Cache) GetLinkCache(ISkyrimModGetter modGetter, LinkCachePreferences prefs);
示例#7
0
 public abstract IDisposable ConvertMod(SkyrimMod mod, out ISkyrimModGetter getter);
示例#8
0
        private static IReadOnlyDictionary <IFormLinkGetter <IMaterialObjectGetter>, IMaterialObjectGetter> MaterialMapping(ISkyrimModGetter bds)
        {
            Dictionary <IFormLinkGetter <IMaterialObjectGetter>, IMaterialObjectGetter> mappings = new();

            // SnowMaterialObjectNoise1P
            if (bds.MaterialObjects.TryGetValue(BDSModKey.MakeFormKey(0x39f5), out var material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialObjectNoise1P, material);
            }
            // SnowMaterialObject1P
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x1305), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialObject1P, material);
            }
            // SnowMaterialMountain1P
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x1868), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialMountain1P, material);
            }
            // SnowMaterialObjectCustom03_1P
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x39f4), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialObjectCustom03_1P, material);
            }
            // SnowMaterialMountainTrimLight1P
            // xEdit Script does not check the Form ID and so would not map this
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x2372), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialMountainTrimLight1P, material);
            }
            // SnowMaterialWinterhold
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x2373), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialWinterhold, material);
            }
            // SnowMaterialMarkarthCliffs
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x1304), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialMarkarthCliffs, material);
            }
            // SnowMaterialObjectLight1P
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x44b8), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialObjectLight1P, material);
            }
            // SnowMaterialFarm
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x12ef), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialFarm, material);
            }
            // SnowMaterialStockade1P
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x12f0), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialStockade1P, material);
            }
            // SnowMaterialMountainTrim1P
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x12f1), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialMountainTrim1P, material);
            }
            // SnowMaterialRoadLight1P
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x2374), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialRoadLight1P, material);
            }
            // SnowMaterialObjectCustom01_1P
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x39f2), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialObjectCustom01_1P, material);
            }
            // SnowMaterialMountainLight1P
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x2361), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialMountainLight1P, material);
            }
            // SnowMaterialObjectCustom02_1P
            if (bds.MaterialObjects.TryGetValue <IMaterialObjectGetter>(BDSModKey.MakeFormKey(0x39f3), out material))
            {
                mappings.Add(SSEForms.Skyrim.MaterialObject.SnowMaterialObjectCustom02_1P, material);
            }

            return(mappings);
        }
示例#9
0
 /// <summary>
 /// Creates a Link Cache using a single mod as its link target.  Mod is allowed to be modified afterwards, but
 /// this comes at a performance cost of not allowing much caching to be done.  If the mod is not expected to
 /// be modified afterwards, use ImmutableModLinkCache instead.<br/>
 /// </summary>
 /// <param name="mod">Mod to construct the package relative to</param>
 /// <returns>LinkPackage attached to given mod</returns>
 public static MutableModLinkCache <ISkyrimMod, ISkyrimModGetter> ToMutableLinkCache(this ISkyrimModGetter mod)
 {
     return(mod.ToMutableLinkCache <ISkyrimMod, ISkyrimModGetter>());
 }
 public override IDisposable ConvertMod(SkyrimMod mod, out ISkyrimModGetter getter)
 {
     return(ConvertModToOverlay(mod, out getter));
 }