Example #1
0
 public Program(ILoadOrder <IModListing <ISkyrimModGetter> > loadOrder, ILinkCache <ISkyrimMod, ISkyrimModGetter> linkCache, ISkyrimMod patchMod, Lazy <Settings> settings)
 {
     LoadOrder     = loadOrder;
     LinkCache     = linkCache;
     PatchMod      = patchMod;
     this.settings = settings;
 }
Example #2
0
 public Global(ISkyrimMod mod, string editorID)
     : this(
         mod.GetNextFormKey(editorID),
         mod.SkyrimRelease)
 {
     this.EditorID = editorID;
 }
Example #3
0
        /*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();
        }
Example #4
0
        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);
        }
Example #5
0
        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");
        }
Example #7
0
        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);
        }
Example #8
0
 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);
        }
Example #10
0
 public LensFlare(ISkyrimMod mod)
     : this(
         mod.GetNextFormKey(),
         mod.SkyrimRelease)
 {
 }
 public GameSetting(ISkyrimMod mod)
     : this(
         mod.GetNextFormKey(),
         mod.SkyrimRelease)
 {
 }
Example #12
0
 public APlaced(ISkyrimMod mod)
     : this(
         mod.GetNextFormKey(),
         mod.SkyrimRelease)
 {
 }
Example #13
0
        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);
        }
Example #14
0
 public TArmorSet(IArmorGetter body, ISkyrimMod patch)
     : this(new TArmor(body), true)
 {
     Patch = patch;
 }
Example #15
0
 public TArmorSet(TArmor body, ISkyrimMod patch)
     : this(body, true)
 {
     Patch = patch;
 }