public Program(ILoadOrder <IModListing <ISkyrimModGetter> > loadOrder, ILinkCache <ISkyrimMod, ISkyrimModGetter> linkCache, ISkyrimMod patchMod, Lazy <Settings> settings) { LoadOrder = loadOrder; LinkCache = linkCache; PatchMod = patchMod; this.settings = settings; }
public Global(ISkyrimMod mod, string editorID) : this( mod.GetNextFormKey(editorID), mod.SkyrimRelease) { this.EditorID = editorID; }
/*private static void PatchSpells() * { * static bool Predicate(IEffectGetter x) * { * if (x.Data == null) return false; * var effect = x.BaseEffect.Resolve(_linkCache); * return effect.Archetype.ActorValue == ActorValue.MagickaRate; * } * * List<ISpellGetter> spellsToPatch = _loadOrder.PriorityOrder.Spell().WinningOverrides() * .AsParallel() * .Where(spell => spell.Effects.Any(Predicate)) * .ToList(); * foreach (var spellCopy in spellsToPatch.Select(spell => _patchMod.Spells.GetOrAddAsOverride(spell))) * { * spellCopy.Effects.Where(Predicate).ForEach(x => * { * x.Data!.Magnitude *= _settings.Value.MagickaRegen.Scale; * }); * } * }*/ public static void RunPatch(IPatcherState <ISkyrimMod, ISkyrimModGetter> state) { _linkCache = state.LinkCache; _loadOrder = state.LoadOrder; _patchMod = state.PatchMod; CreateAbility(); PatchClasses(); PatchNPCs(); PatchGameSettings(); PatchRaces(); }
public FormKey GetLeveledListUsingArmorSets(ISkyrimMod PatchMod, bool createLL = false) { LeveledItem ll = null; if (LLKey == FormKey.Null || createLL) { var list = Armors.Select(a => a.CreateLeveledList().AsLink <IItemGetter>()); ll = OutfitUtils.CreateLeveledList(PatchMod, list, Configuration.Patcher.LeveledListPrefix + Name, 1, Configuration.LeveledListFlag); LLKey = ll.FormKey; } return(LLKey); }
public FormKey CreateLeveledList(ISkyrimMod patchMod, bool forceCreate = false) { LeveledItem ll = null; if (forceCreate || LLFormKey == FormKey.Null) { var items = Armors.Select(a => a.FormKey.AsLink <IItemGetter>()) .Union(Weapons.Select(a => a.AsLink <IItemGetter>()).EmptyIfNull()); ll = OutfitUtils.CreateLeveledList(patchMod, items, Prefix, 1, LeveledItem.Flag.UseAll); LLFormKey = ll.FormKey; } return(LLFormKey); }
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 Program(IPatcherState <ISkyrimMod, ISkyrimModGetter> state, IFileSystem?fileSystem = null) { State = state; LinkCache = state.LinkCache; PatchMod = state.PatchMod; LoadOrder = state.LoadOrder; _fileSystem = fileSystem ?? new FileSystem(); Path = _fileSystem.Path; TexturePaths = new TexturePaths(_fileSystem); MeshPaths = new MeshPaths(_fileSystem); TextureSets = new TextureSets(PatchMod, LinkCache, texturePaths: TexturePaths, fileSystem: _fileSystem); HeadParts = new HeadParts(PatchMod, LinkCache, TextureSets, MeshPaths, _fileSystem); }
public Global(ISkyrimMod mod) : this( mod.GetNextFormKey(), mod.SkyrimRelease) { }
private static void DistributeJewelaryUsingSPID(IPatcherState <ISkyrimMod, ISkyrimModGetter> state, ISkyrimMod mod) { Logger.InfoFormat("Distributing Jewelary using Spell Perk Item Distributor.... "); string iniName = mod.ModKey.Name + "_DISTR.ini"; List <string> lines = new(); Random random = new(); // Distributing jewelry string jPrefix = Configuration.Patcher.LeveledListPrefix + "_LL_Jewels_"; foreach (ILeveledItemGetter ll in state.LoadOrder.PriorityOrder .WinningOverrides <ILeveledItemGetter>() .Where(x => x.EditorID.Contains(jPrefix))) { string eid = ll.EditorID; string gender = Configuration.User.JewelryForMales && Regex.Match(eid, "Amulet|Ring|Circlet", RegexOptions.IgnoreCase).Success && !eid.Contains("_F_") ? "NONE" : "F"; string line = "Item = 0x00" + ll.FormKey.ToString().Replace(":", " - ") + " | ActorTypeNPC " + " | Citizen " + " | NONE " + " | " + gender + " | 1 " + " | " + random.Next(50, 99); lines.Add(line); } File.WriteAllLines(Path.Combine(state.DataFolderPath, iniName), lines); }
public LensFlare(ISkyrimMod mod) : this( mod.GetNextFormKey(), mod.SkyrimRelease) { }
public GameSetting(ISkyrimMod mod) : this( mod.GetNextFormKey(), mod.SkyrimRelease) { }
public APlaced(ISkyrimMod mod) : this( mod.GetNextFormKey(), mod.SkyrimRelease) { }
public static void SaveMod(IPatcherState <ISkyrimMod, ISkyrimModGetter> state, ISkyrimMod patch) { var patchFile = patch.ModKey.FileName; var records = patch.EnumerateMajorRecords().Where(r => r.FormKey.ModKey.Equals(patch.ModKey)); if (records.Count() < 2048) { patch.ModHeader.Flags = SkyrimModHeader.HeaderFlag.LightMaster; } string location = Path.Combine(state.DataFolderPath, patchFile); patch.WriteToBinary(location, FileUtils.SafeBinaryWriteParameters); Logger.InfoFormat("Saved Patch: {0} ", patchFile); }
public TArmorSet(IArmorGetter body, ISkyrimMod patch) : this(new TArmor(body), true) { Patch = patch; }
public TArmorSet(TArmor body, ISkyrimMod patch) : this(body, true) { Patch = patch; }