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"); }
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(); })); }
protected override (LinkCacheStyle Style, ILinkCache <ISkyrimMod, ISkyrimModGetter> Cache) GetLinkCache( ISkyrimModGetter modGetter, LinkCachePreferences prefs) { return(LinkCacheStyle.HasCaching, new ImmutableModLinkCache <ISkyrimMod, ISkyrimModGetter>(modGetter, prefs)); }
public override IDisposable ConvertMod(SkyrimMod mod, out ISkyrimModGetter getter) { getter = mod; return(Disposable.Empty); }
protected override (LinkCacheStyle Style, ILinkCache <ISkyrimMod, ISkyrimModGetter> Cache) GetLinkCache(ISkyrimModGetter modGetter, LinkCachePreferences prefs) { return(LinkCacheStyle.OnlyDirect, new MutableModLinkCache <ISkyrimMod, ISkyrimModGetter>(modGetter)); }
protected abstract (LinkCacheStyle Style, ILinkCache <ISkyrimMod, ISkyrimModGetter> Cache) GetLinkCache(ISkyrimModGetter modGetter, LinkCachePreferences prefs);
public abstract IDisposable ConvertMod(SkyrimMod mod, out ISkyrimModGetter getter);
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); }
/// <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)); }