From 2ad47ce363d9d1887dd9863d1831e94b4235c6ca Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 6 Apr 2024 21:09:29 +0200 Subject: [PATCH 01/22] add Syllabore Package --- HalgarisRPGLoot/HalgarisRPGLoot.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/HalgarisRPGLoot/HalgarisRPGLoot.csproj b/HalgarisRPGLoot/HalgarisRPGLoot.csproj index ccc852a..e35abd9 100644 --- a/HalgarisRPGLoot/HalgarisRPGLoot.csproj +++ b/HalgarisRPGLoot/HalgarisRPGLoot.csproj @@ -11,6 +11,7 @@ + From 9eeab372db1c141859da1cae666ef428130c95e5 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 12 Oct 2024 00:45:59 +0200 Subject: [PATCH 02/22] dependency update --- HalgarisRPGLoot/HalgarisRPGLoot.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HalgarisRPGLoot/HalgarisRPGLoot.csproj b/HalgarisRPGLoot/HalgarisRPGLoot.csproj index e35abd9..c1915cc 100644 --- a/HalgarisRPGLoot/HalgarisRPGLoot.csproj +++ b/HalgarisRPGLoot/HalgarisRPGLoot.csproj @@ -11,7 +11,7 @@ - + From efe40488974e3fee04aff93f665c0b955627e2c1 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 12 Oct 2024 00:46:31 +0200 Subject: [PATCH 03/22] settings refactor --- HalgarisRPGLoot/Analyzers/GearAnalyzer.cs | 9 +- .../Analyzers/ObjectEffectsAnalyzer.cs | 1 + HalgarisRPGLoot/Program.cs | 4 +- .../Settings/EnchantmentSettings.cs | 46 ++++++++++ HalgarisRPGLoot/Settings/GeneralSettings.cs | 35 ++++++++ ...RarityAndVariationDistributionSettings.cs} | 90 +------------------ HalgarisRPGLoot/Settings/Settings.cs | 20 +++++ README.md | 8 +- 8 files changed, 117 insertions(+), 96 deletions(-) create mode 100644 HalgarisRPGLoot/Settings/EnchantmentSettings.cs create mode 100644 HalgarisRPGLoot/Settings/GeneralSettings.cs rename HalgarisRPGLoot/{Settings.cs => Settings/RarityAndVariationDistributionSettings.cs} (51%) create mode 100644 HalgarisRPGLoot/Settings/Settings.cs diff --git a/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs b/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs index 26ae846..ea78c33 100644 --- a/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs +++ b/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs @@ -2,12 +2,12 @@ using System.Collections.Generic; using System.Linq; using HalgarisRPGLoot.DataModels; +using HalgarisRPGLoot.Settings; using Mutagen.Bethesda; using Mutagen.Bethesda.Plugins; using Mutagen.Bethesda.Plugins.Records; using Mutagen.Bethesda.Skyrim; using Mutagen.Bethesda.Synthesis; -using Noggog; // ReSharper disable UnusedAutoPropertyAccessor.Local @@ -50,15 +50,16 @@ public abstract class GearAnalyzer protected (short Key, HashSet)[] ByLevel { get; set; } - protected readonly Random Random = new(Program.Settings.RarityAndVariationDistributionSettings.RandomSeed); + protected readonly Random Random = new(Program.Settings.GeneralSettings.RandomGenerationSeed); private readonly LeveledListFlagSettings _leveledListFlagSettings = Program.Settings.GeneralSettings.LeveledListFlagSettings; - private readonly string _enchantmentSeparatorString = Program.Settings.GeneralSettings.EnchantmentSeparator; + private readonly string _enchantmentSeparatorString = + Program.Settings.NamingGeneratorSettings.EnchantmentSeparator; private readonly string _lastEnchantmentSeparatorString = - Program.Settings.GeneralSettings.LastEnchantmentSeparator; + Program.Settings.NamingGeneratorSettings.LastEnchantmentSeparator; protected string EditorIdPrefix; diff --git a/HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs b/HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs index b601836..05d81fc 100644 --- a/HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs +++ b/HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Linq; using HalgarisRPGLoot.DataModels; +using HalgarisRPGLoot.Settings; using Mutagen.Bethesda; using Mutagen.Bethesda.Plugins; using Mutagen.Bethesda.Skyrim; diff --git a/HalgarisRPGLoot/Program.cs b/HalgarisRPGLoot/Program.cs index 180a925..cb177e4 100644 --- a/HalgarisRPGLoot/Program.cs +++ b/HalgarisRPGLoot/Program.cs @@ -11,8 +11,8 @@ namespace HalgarisRPGLoot { class Program { - private static Lazy _lazySettings = null!; - public static Settings Settings => _lazySettings.Value; + private static Lazy _lazySettings = null!; + public static Settings.Settings Settings => _lazySettings.Value; private static async Task Main(string[] args) { diff --git a/HalgarisRPGLoot/Settings/EnchantmentSettings.cs b/HalgarisRPGLoot/Settings/EnchantmentSettings.cs new file mode 100644 index 0000000..1259098 --- /dev/null +++ b/HalgarisRPGLoot/Settings/EnchantmentSettings.cs @@ -0,0 +1,46 @@ +using System.Collections.Generic; +using HalgarisRPGLoot.DataModels; +using Mutagen.Bethesda.Skyrim; +using Mutagen.Bethesda.FormKeys.SkyrimSE; +using Mutagen.Bethesda.Plugins; +using Mutagen.Bethesda.Synthesis.Settings; +using Mutagen.Bethesda.WPF.Reflection.Attributes; +// ReSharper disable ConvertToConstant.Global +// ReSharper disable FieldCanBeMadeReadOnly.Global +// ReSharper disable CollectionNeverUpdated.Global + + +namespace HalgarisRPGLoot.Settings; + +public class EnchantmentSettings +{ + [MaintainOrder] + [SynthesisSettingName("Enchantment List Mode")] + [SynthesisDescription( + "Blacklist: Selected Enchantments wont be distributed.\nWhitelist: Only the selected Enchantments get Distributed.")] + [SynthesisTooltip( + "Blacklist: Selected Enchantments wont be distributed.\nWhitelist: Only the selected Enchantments get Distributed.")] + public ListMode EnchantmentListMode = ListMode.Blacklist; + + [MaintainOrder] [SynthesisSettingName("Enchantment List")] [SynthesisDescription("List of Enchantments")] + public HashSet> EnchantmentList = new() + { + Skyrim.ObjectEffect.BoundBattleaxeEnchantment, + Skyrim.ObjectEffect.BoundBowEnchantment, + Skyrim.ObjectEffect.BoundSwordEnchantment, + Dragonborn.ObjectEffect.BoundDaggerEnchantment + }; + + [MaintainOrder] + [SynthesisSettingName("Plugin List Mode")] + [SynthesisDescription( + "Blacklist: Enchantments of selected Plugins wont be distributed." + + "\nWhitelist: Only the Enchantments of selected Plugins get Distributed.")] + [SynthesisTooltip( + "Blacklist: Enchantments of selected Plugins wont be distributed." + + "\nWhitelist: Only the Enchantments of selected Plugins get Distributed.")] + public ListMode PluginListMode = ListMode.Blacklist; + + [MaintainOrder] [SynthesisSettingName("Plugin List")] [SynthesisDescription("List of Plugins")] + public HashSet PluginList = new(); +} diff --git a/HalgarisRPGLoot/Settings/GeneralSettings.cs b/HalgarisRPGLoot/Settings/GeneralSettings.cs new file mode 100644 index 0000000..545e7e1 --- /dev/null +++ b/HalgarisRPGLoot/Settings/GeneralSettings.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using Mutagen.Bethesda.FormKeys.SkyrimSE; +using Mutagen.Bethesda.Plugins; +using Mutagen.Bethesda.Skyrim; +using Mutagen.Bethesda.Synthesis.Settings; +using Mutagen.Bethesda.WPF.Reflection.Attributes; +// ReSharper disable ConvertToConstant.Global +// ReSharper disable FieldCanBeMadeReadOnly.Global +// ReSharper disable CollectionNeverUpdated.Global + + +namespace HalgarisRPGLoot.Settings; + +public class GeneralSettings +{ + [MaintainOrder] public int RandomGenerationSeed = 42; + + [MaintainOrder] + [SynthesisSettingName("LeveledList Flags")] + [SynthesisDescription("Flags that will be set on generated LeveledLists")] + [SynthesisTooltip("Flags that will be set on generated LeveledLists")] + public LeveledListFlagSettings LeveledListFlagSettings = new(); + + [MaintainOrder] + [SynthesisSettingName("Untouchable Equipment Keywords")] + [SynthesisDescription("Keywords that define Items you don't want processed.")] + [SynthesisTooltip("Keywords that define Items you don't want processed.")] + public HashSet> UntouchableEquipmentKeywords = + new() + { + Skyrim.Keyword.MagicDisallowEnchanting, + Skyrim.Keyword.DaedricArtifact, + Skyrim.Keyword.WeapTypeStaff + }; +} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings.cs b/HalgarisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs similarity index 51% rename from HalgarisRPGLoot/Settings.cs rename to HalgarisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs index 5374096..f1409a9 100644 --- a/HalgarisRPGLoot/Settings.cs +++ b/HalgarisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs @@ -2,96 +2,16 @@ using System.Collections.Generic; using Mutagen.Bethesda.Synthesis.Settings; using HalgarisRPGLoot.DataModels; -using Mutagen.Bethesda.Plugins; -using Mutagen.Bethesda.Skyrim; -using Mutagen.Bethesda.FormKeys.SkyrimSE; + using Mutagen.Bethesda.WPF.Reflection.Attributes; // ReSharper disable ConvertToConstant.Global // ReSharper disable FieldCanBeMadeReadOnly.Global // ReSharper disable CollectionNeverUpdated.Global -namespace HalgarisRPGLoot -{ - public class Settings - { - [MaintainOrder] public GeneralSettings GeneralSettings = new(); - - [MaintainOrder] public EnchantmentSettings EnchantmentSettings = new(); - - [MaintainOrder] public RarityAndVariationDistributionSettings RarityAndVariationDistributionSettings = new(); - } - - public class GeneralSettings - { - [MaintainOrder] - [SynthesisSettingName("Enchantment Separator")] - [SynthesisDescription("This is the string(text) that will be written between the enchantments listed in enchantments and item names.")] - [SynthesisTooltip("This is the string(text) that will be written between the enchantments listed in enchantments and item names.")] - public string EnchantmentSeparator = ", "; - - [MaintainOrder] - [SynthesisSettingName("Last Enchantment Separator")] - [SynthesisDescription("This is the string(text) that will be written between the two last enchantments listed in enchantments and item names.")] - [SynthesisTooltip("This is the string(text) that will be written between the two last enchantments listed in enchantments and item names.")] - public string LastEnchantmentSeparator = " and "; - - - [MaintainOrder] - [SynthesisSettingName("LeveledList Flags")] - [SynthesisDescription("Flags that will be set on generated LeveledLists")] - [SynthesisTooltip("Flags that will be set on generated LeveledLists")] - public LeveledListFlagSettings LeveledListFlagSettings = new(); - - [MaintainOrder] - [SynthesisSettingName("Untouchable Equipment Keywords")] - [SynthesisDescription("Keywords that define Items you don't want processed.")] - [SynthesisTooltip("Keywords that define Items you don't want processed.")] - public HashSet> UntouchableEquipmentKeywords = - new() - { - Skyrim.Keyword.MagicDisallowEnchanting, - Skyrim.Keyword.DaedricArtifact, - Skyrim.Keyword.WeapTypeStaff - }; - } - - public class EnchantmentSettings - { - [MaintainOrder] - [SynthesisSettingName("Enchantment List Mode")] - [SynthesisDescription( - "Blacklist: Selected Enchantments wont be distributed.\nWhitelist: Only the selected Enchantments get Distributed.")] - [SynthesisTooltip( - "Blacklist: Selected Enchantments wont be distributed.\nWhitelist: Only the selected Enchantments get Distributed.")] - public ListMode EnchantmentListMode = ListMode.Blacklist; - - [MaintainOrder] [SynthesisSettingName("Enchantment List")] [SynthesisDescription("List of Enchantments")] - public HashSet> EnchantmentList = new() - { - Skyrim.ObjectEffect.BoundBattleaxeEnchantment, - Skyrim.ObjectEffect.BoundBowEnchantment, - Skyrim.ObjectEffect.BoundSwordEnchantment, - Dragonborn.ObjectEffect.BoundDaggerEnchantment - }; +namespace HalgarisRPGLoot.Settings; - [MaintainOrder] - [SynthesisSettingName("Plugin List Mode")] - [SynthesisDescription( - "Blacklist: Enchantments of selected Plugins wont be distributed." + - "\nWhitelist: Only the Enchantments of selected Plugins get Distributed.")] - [SynthesisTooltip( - "Blacklist: Enchantments of selected Plugins wont be distributed." + - "\nWhitelist: Only the Enchantments of selected Plugins get Distributed.")] - public ListMode PluginListMode = ListMode.Blacklist; - - [MaintainOrder] [SynthesisSettingName("Plugin List")] [SynthesisDescription("List of Plugins")] - public HashSet PluginList = new(); - } - - public class RarityAndVariationDistributionSettings +public class RarityAndVariationDistributionSettings { - [MaintainOrder] public int RandomSeed = 42; - /* Currently Impossible to implement in the game unless someone creates a SKSE plugin that allows COBJs to accept a LL as a crafting target. [MaintainOrder] @@ -174,6 +94,4 @@ public int CompareTo(RarityClass other) { return RarityWeight.CompareTo(other.RarityWeight) * -1; } - } - -} \ No newline at end of file + } \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/Settings.cs b/HalgarisRPGLoot/Settings/Settings.cs new file mode 100644 index 0000000..b2f42c8 --- /dev/null +++ b/HalgarisRPGLoot/Settings/Settings.cs @@ -0,0 +1,20 @@ +using Mutagen.Bethesda.WPF.Reflection.Attributes; + +// ReSharper disable ConvertToConstant.Global +// ReSharper disable FieldCanBeMadeReadOnly.Global +// ReSharper disable CollectionNeverUpdated.Global + +namespace HalgarisRPGLoot.Settings +{ + public class Settings + { + [MaintainOrder] public GeneralSettings GeneralSettings = new(); + + [MaintainOrder] public EnchantmentSettings EnchantmentSettings = new(); + + [MaintainOrder] public NamingGeneratorSettings NamingGeneratorSettings = new(); + + [MaintainOrder] public RarityAndVariationDistributionSettings RarityAndVariationDistributionSettings = new(); + } + +} \ No newline at end of file diff --git a/README.md b/README.md index 112b654..864deb7 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,10 @@ Any mention of weight is equivalent to the `count` property of leveled lists. ### Settings: - **General Settings:** + - **RandomSeed:** + - **Default:** `42` + - Basically a Key to make the randomness repeatable, as long as your leveled lists, + enchantments and weapons in the list don't change. - **Only process constructible equipment:** - **Default:** `On` - Only items that are referenced in crafting and tampering recipes get processed and enchanted. @@ -77,10 +81,6 @@ Any mention of weight is equivalent to the `count` property of leveled lists. - **Default:** `Empty` Because you Ideally manage to get universal filters done in the Keyword and Enchantment List Settings. - **Rarity And Variation Distribution Settings:** - - **RandomSeed:** - - **Default:** `42` - - Basically a Key to make the randomness repeatable, as long as your leveled lists, - enchantments and weapons in the list don't change. - **Leveled List Base** - Changes where the RPGLoot leveled lists are inserted. - `AllValidEnchantedItem` The chance of encountering enchanted gear is similar to vanilla, From 7746dd40bc6a2e1281ec34168164552585174c7d Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 12 Oct 2024 00:46:54 +0200 Subject: [PATCH 04/22] initial drafts for syllabore features --- HalgarisRPGLoot/DataModels/NamingScheme.cs | 8 ++++++ HalgarisRPGLoot/DataModels/SyllaboreInput.cs | 6 ++++ .../Factories/SyllaboreFactories.cs | 6 ++++ .../Settings/NamingGeneratorSettings.cs | 28 +++++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 HalgarisRPGLoot/DataModels/NamingScheme.cs create mode 100644 HalgarisRPGLoot/DataModels/SyllaboreInput.cs create mode 100644 HalgarisRPGLoot/Factories/SyllaboreFactories.cs create mode 100644 HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs diff --git a/HalgarisRPGLoot/DataModels/NamingScheme.cs b/HalgarisRPGLoot/DataModels/NamingScheme.cs new file mode 100644 index 0000000..62ea923 --- /dev/null +++ b/HalgarisRPGLoot/DataModels/NamingScheme.cs @@ -0,0 +1,8 @@ +namespace HalgarisRPGLoot.DataModels; + +public enum NamingScheme +{ + PrefixedPreviousOwnerName, + AppendPreviousOwnerName, + ItemName +} \ No newline at end of file diff --git a/HalgarisRPGLoot/DataModels/SyllaboreInput.cs b/HalgarisRPGLoot/DataModels/SyllaboreInput.cs new file mode 100644 index 0000000..015e41f --- /dev/null +++ b/HalgarisRPGLoot/DataModels/SyllaboreInput.cs @@ -0,0 +1,6 @@ +namespace HalgarisRPGLoot.DataModels; + +public class SyllaboreInput +{ + +} \ No newline at end of file diff --git a/HalgarisRPGLoot/Factories/SyllaboreFactories.cs b/HalgarisRPGLoot/Factories/SyllaboreFactories.cs new file mode 100644 index 0000000..d67c8f9 --- /dev/null +++ b/HalgarisRPGLoot/Factories/SyllaboreFactories.cs @@ -0,0 +1,6 @@ +namespace HalgarisRPGLoot.Factories; + +public class SyllaboreFactories +{ + +} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs b/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs new file mode 100644 index 0000000..a00e3c1 --- /dev/null +++ b/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs @@ -0,0 +1,28 @@ +using Mutagen.Bethesda.Synthesis.Settings; +using Mutagen.Bethesda.WPF.Reflection.Attributes; +using Syllabore; + +// ReSharper disable ConvertToConstant.Global +// ReSharper disable FieldCanBeMadeReadOnly.Global +// ReSharper disable CollectionNeverUpdated.Global + + +namespace HalgarisRPGLoot.Settings; + +public class NamingGeneratorSettings +{ + [MaintainOrder] + [SynthesisSettingName("Enchantment Separator")] + [SynthesisDescription("This is the string(text) that will be written between the enchantments listed in enchantments and item names.")] + [SynthesisTooltip("This is the string(text) that will be written between the enchantments listed in enchantments and item names.")] + public string EnchantmentSeparator = ", "; + + [MaintainOrder] + [SynthesisSettingName("Last Enchantment Separator")] + [SynthesisDescription("This is the string(text) that will be written between the two last enchantments listed in enchantments and item names.")] + [SynthesisTooltip("This is the string(text) that will be written between the two last enchantments listed in enchantments and item names.")] + public string LastEnchantmentSeparator = " and "; + + [MaintainOrder] + public NameGenerator NameGenerator = new NameGenerator(); +} \ No newline at end of file From d0960f69d781abaf48bc2a71d651a7c677e84957 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 12 Oct 2024 18:15:22 +0200 Subject: [PATCH 05/22] refactoring --- HalgarisRPGLoot/Analyzers/GearAnalyzer.cs | 1 + HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs | 2 +- HalgarisRPGLoot/Settings/EnchantmentSettings.cs | 2 +- .../{DataModels => Settings/Enums}/GenerationMode.cs | 2 +- .../{DataModels => Settings/Enums}/LeveledListBase.cs | 2 +- HalgarisRPGLoot/{DataModels => Settings/Enums}/ListMode.cs | 2 +- .../Settings/RarityAndVariationDistributionSettings.cs | 3 +-- 7 files changed, 7 insertions(+), 7 deletions(-) rename HalgarisRPGLoot/{DataModels => Settings/Enums}/GenerationMode.cs (70%) rename HalgarisRPGLoot/{DataModels => Settings/Enums}/LeveledListBase.cs (66%) rename HalgarisRPGLoot/{DataModels => Settings/Enums}/ListMode.cs (63%) diff --git a/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs b/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs index ea78c33..68bc0f2 100644 --- a/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs +++ b/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs @@ -3,6 +3,7 @@ using System.Linq; using HalgarisRPGLoot.DataModels; using HalgarisRPGLoot.Settings; +using HalgarisRPGLoot.Settings.Enums; using Mutagen.Bethesda; using Mutagen.Bethesda.Plugins; using Mutagen.Bethesda.Plugins.Records; diff --git a/HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs b/HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs index 05d81fc..e3bdb03 100644 --- a/HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs +++ b/HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; using System.Linq; -using HalgarisRPGLoot.DataModels; using HalgarisRPGLoot.Settings; +using HalgarisRPGLoot.Settings.Enums; using Mutagen.Bethesda; using Mutagen.Bethesda.Plugins; using Mutagen.Bethesda.Skyrim; diff --git a/HalgarisRPGLoot/Settings/EnchantmentSettings.cs b/HalgarisRPGLoot/Settings/EnchantmentSettings.cs index 1259098..7bea2ec 100644 --- a/HalgarisRPGLoot/Settings/EnchantmentSettings.cs +++ b/HalgarisRPGLoot/Settings/EnchantmentSettings.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HalgarisRPGLoot.DataModels; +using HalgarisRPGLoot.Settings.Enums; using Mutagen.Bethesda.Skyrim; using Mutagen.Bethesda.FormKeys.SkyrimSE; using Mutagen.Bethesda.Plugins; diff --git a/HalgarisRPGLoot/DataModels/GenerationMode.cs b/HalgarisRPGLoot/Settings/Enums/GenerationMode.cs similarity index 70% rename from HalgarisRPGLoot/DataModels/GenerationMode.cs rename to HalgarisRPGLoot/Settings/Enums/GenerationMode.cs index 5561464..a8bb25b 100644 --- a/HalgarisRPGLoot/DataModels/GenerationMode.cs +++ b/HalgarisRPGLoot/Settings/Enums/GenerationMode.cs @@ -1,4 +1,4 @@ -namespace HalgarisRPGLoot.DataModels +namespace HalgarisRPGLoot.Settings.Enums { public enum GenerationMode { diff --git a/HalgarisRPGLoot/DataModels/LeveledListBase.cs b/HalgarisRPGLoot/Settings/Enums/LeveledListBase.cs similarity index 66% rename from HalgarisRPGLoot/DataModels/LeveledListBase.cs rename to HalgarisRPGLoot/Settings/Enums/LeveledListBase.cs index 0b505c9..883ffe6 100644 --- a/HalgarisRPGLoot/DataModels/LeveledListBase.cs +++ b/HalgarisRPGLoot/Settings/Enums/LeveledListBase.cs @@ -1,4 +1,4 @@ -namespace HalgarisRPGLoot.DataModels; +namespace HalgarisRPGLoot.Settings.Enums; public enum LeveledListBase { diff --git a/HalgarisRPGLoot/DataModels/ListMode.cs b/HalgarisRPGLoot/Settings/Enums/ListMode.cs similarity index 63% rename from HalgarisRPGLoot/DataModels/ListMode.cs rename to HalgarisRPGLoot/Settings/Enums/ListMode.cs index ef1e2c1..5c25a36 100644 --- a/HalgarisRPGLoot/DataModels/ListMode.cs +++ b/HalgarisRPGLoot/Settings/Enums/ListMode.cs @@ -1,4 +1,4 @@ -namespace HalgarisRPGLoot.DataModels +namespace HalgarisRPGLoot.Settings.Enums { public enum ListMode { diff --git a/HalgarisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs b/HalgarisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs index f1409a9..01bacfa 100644 --- a/HalgarisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs +++ b/HalgarisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs @@ -1,8 +1,7 @@ using System; using System.Collections.Generic; using Mutagen.Bethesda.Synthesis.Settings; -using HalgarisRPGLoot.DataModels; - +using HalgarisRPGLoot.Settings.Enums; using Mutagen.Bethesda.WPF.Reflection.Attributes; // ReSharper disable ConvertToConstant.Global // ReSharper disable FieldCanBeMadeReadOnly.Global From 86a4f3c1404c84e00ae69d104af85d523ac9cdd1 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 12 Oct 2024 18:15:38 +0200 Subject: [PATCH 06/22] naming settings test --- HalgarisRPGLoot/DataModels/SyllaboreInput.cs | 6 -- .../Settings/CustomTypes/WeightedObject.cs | 7 ++ .../Settings/Enums/ConsonantRulesMode.cs | 7 ++ .../Enums}/NamingScheme.cs | 2 +- .../Settings/NamingGeneratorSettings.cs | 6 +- HalgarisRPGLoot/Settings/SyllaboreSettings.cs | 83 +++++++++++++++++++ 6 files changed, 102 insertions(+), 9 deletions(-) delete mode 100644 HalgarisRPGLoot/DataModels/SyllaboreInput.cs create mode 100644 HalgarisRPGLoot/Settings/CustomTypes/WeightedObject.cs create mode 100644 HalgarisRPGLoot/Settings/Enums/ConsonantRulesMode.cs rename HalgarisRPGLoot/{DataModels => Settings/Enums}/NamingScheme.cs (69%) create mode 100644 HalgarisRPGLoot/Settings/SyllaboreSettings.cs diff --git a/HalgarisRPGLoot/DataModels/SyllaboreInput.cs b/HalgarisRPGLoot/DataModels/SyllaboreInput.cs deleted file mode 100644 index 015e41f..0000000 --- a/HalgarisRPGLoot/DataModels/SyllaboreInput.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace HalgarisRPGLoot.DataModels; - -public class SyllaboreInput -{ - -} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/CustomTypes/WeightedObject.cs b/HalgarisRPGLoot/Settings/CustomTypes/WeightedObject.cs new file mode 100644 index 0000000..b8d09d3 --- /dev/null +++ b/HalgarisRPGLoot/Settings/CustomTypes/WeightedObject.cs @@ -0,0 +1,7 @@ +namespace HalgarisRPGLoot.Settings.CustomTypes; + +public class WeightedObject where TType : class +{ + public TType Object { get; set; } = default!; + public int Weight { get; set; } = 1; +} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/Enums/ConsonantRulesMode.cs b/HalgarisRPGLoot/Settings/Enums/ConsonantRulesMode.cs new file mode 100644 index 0000000..36f8065 --- /dev/null +++ b/HalgarisRPGLoot/Settings/Enums/ConsonantRulesMode.cs @@ -0,0 +1,7 @@ +namespace HalgarisRPGLoot.Settings.Enums; + +public enum ConsonantRulesMode +{ + BasicMode, + AdvancedMode +} \ No newline at end of file diff --git a/HalgarisRPGLoot/DataModels/NamingScheme.cs b/HalgarisRPGLoot/Settings/Enums/NamingScheme.cs similarity index 69% rename from HalgarisRPGLoot/DataModels/NamingScheme.cs rename to HalgarisRPGLoot/Settings/Enums/NamingScheme.cs index 62ea923..b4c934e 100644 --- a/HalgarisRPGLoot/DataModels/NamingScheme.cs +++ b/HalgarisRPGLoot/Settings/Enums/NamingScheme.cs @@ -1,4 +1,4 @@ -namespace HalgarisRPGLoot.DataModels; +namespace HalgarisRPGLoot.Settings.Enums; public enum NamingScheme { diff --git a/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs b/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs index a00e3c1..e2969c2 100644 --- a/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs +++ b/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs @@ -1,6 +1,5 @@ using Mutagen.Bethesda.Synthesis.Settings; using Mutagen.Bethesda.WPF.Reflection.Attributes; -using Syllabore; // ReSharper disable ConvertToConstant.Global // ReSharper disable FieldCanBeMadeReadOnly.Global @@ -24,5 +23,8 @@ public class NamingGeneratorSettings public string LastEnchantmentSeparator = " and "; [MaintainOrder] - public NameGenerator NameGenerator = new NameGenerator(); + [SynthesisSettingName("Syllabore Settings")] + [SynthesisDescription("The Settings used for Random Name Generation.")] + [SynthesisTooltip("The Settings used for Random Name Generation.")] + public SyllaboreSettings SyllaboreSettings = new SyllaboreSettings(); } \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings.cs b/HalgarisRPGLoot/Settings/SyllaboreSettings.cs new file mode 100644 index 0000000..a89495d --- /dev/null +++ b/HalgarisRPGLoot/Settings/SyllaboreSettings.cs @@ -0,0 +1,83 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Mutagen.Bethesda.Synthesis.Settings; +using HalgarisRPGLoot.DataModels; +using HalgarisRPGLoot.Settings.CustomTypes; +using HalgarisRPGLoot.Settings.Enums; +using Mutagen.Bethesda.WPF.Reflection.Attributes; +using Syllabore; + +// ReSharper disable ConvertToConstant.Global +// ReSharper disable FieldCanBeMadeReadOnly.Global +// ReSharper disable CollectionNeverUpdated.Global + + +namespace HalgarisRPGLoot.Settings; + +public class SyllaboreSettings +{ + + //TODO: Rewrite to account for https://github.com/kesac/Syllabore/wiki/Guide-1.1.4%EA%9E%89-Frequencies + + [MaintainOrder] + [SynthesisSettingName("Usable Vowels")] + [SynthesisDescription("Vowels used for the Syllable generation.")] + [SynthesisTooltip("Vowels used for the Syllable generation.")] + public List> WithVowels = new() + { + new(){Object = "a", Weight = 1}, + new(){Object = "e", Weight = 1}, + new(){Object = "i", Weight = 1}, + new(){Object = "o", Weight = 1}, + new(){Object = "u", Weight = 1}, + }; + + [MaintainOrder] + public List<(string, int)> WithVowels2 = [("a",1), ("e",1), ("i",1), ("o",1), ("u",1)]; + + [MaintainOrder] + [SynthesisSettingName("Consonants Mode")] + [SynthesisDescription( + "Modifies if just one consonants list gets used or if you define the onsets and codas in AdvancedMode.")] + [SynthesisTooltip( + "Modifies if just one consonants list gets used or if you define the onsets and codas in AdvancedMode.")] + public ConsonantRulesMode ConsonantRulesMode = ConsonantRulesMode.AdvancedMode; + + [MaintainOrder] + [SynthesisSettingName("Usable Consonants (Basic)")] + [SynthesisDescription("Consonants used for the Syllable generation. Ignored in advanced mode.")] + [SynthesisTooltip(" Consonants used for the Syllable generation. Ignored in advanced mode.")] + public string WithConsonants; + + [MaintainOrder] + [SynthesisSettingName("Onsets (Advanced)")] + [SynthesisDescription("Onsets (leading consonants) used for the Syllable generation.")] + [SynthesisTooltip("Onsets (leading consonants) used for the Syllable generation.)")] + public string WithLeadingConsonants; // Onsets (Grammatically Speaking) + + [MaintainOrder] + [SynthesisSettingName("Codas (Advanced)")] + [SynthesisDescription("Codas (trailing consonants) used for the Syllable generation.")] + [SynthesisTooltip("Codas (trailing consonants) used for the Syllable generation.)")] + public string WithTrailingConsonants; // Codas (Grammatically Speaking) + + [MaintainOrder] + [SynthesisSettingName("Vowel Sequences")] + [SynthesisDescription("Vowel sequences that should be used together for the Syllable generation.")] + [SynthesisTooltip("Vowel sequences that should be used together for the Syllable generation.)")] + public string[] VowelSequences; //Vowels Commonly used Together + + [MaintainOrder] + [SynthesisSettingName("Onset Sequences")] + [SynthesisDescription("Onset sequences that should be used for the Syllable generation.")] + [SynthesisTooltip("Onset sequences that should be used for the Syllable generation.)")] + public string[] LeadingConsonantSequences; //Onset clusters + + [MaintainOrder] + [SynthesisSettingName("Coda Sequences")] + [SynthesisDescription("Coda sequences that should be used for the Syllable generation.")] + [SynthesisTooltip("Coda sequences that should be used for the Syllable generation.)")] + public string[] TrailingConsonantSequences; //Coda clusters + +} \ No newline at end of file From 9151066f20b7894c2a96d61dbab327051eeb9b4a Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 12 Oct 2024 18:49:58 +0200 Subject: [PATCH 07/22] refactor Setting name. --- .../Settings/CustomTypes/WeightedElements.cs | 8 ++++++++ .../Settings/CustomTypes/WeightedObject.cs | 7 ------- HalgarisRPGLoot/Settings/SyllaboreSettings.cs | 12 ++++++------ 3 files changed, 14 insertions(+), 13 deletions(-) create mode 100644 HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs delete mode 100644 HalgarisRPGLoot/Settings/CustomTypes/WeightedObject.cs diff --git a/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs b/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs new file mode 100644 index 0000000..3d1a8a1 --- /dev/null +++ b/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs @@ -0,0 +1,8 @@ +namespace HalgarisRPGLoot.Settings.CustomTypes; + +public class WeightedElements where TType : class +{ + + public TType Element { get; set; } = default!; + public int Weight { get; set; } = 1; +} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/CustomTypes/WeightedObject.cs b/HalgarisRPGLoot/Settings/CustomTypes/WeightedObject.cs deleted file mode 100644 index b8d09d3..0000000 --- a/HalgarisRPGLoot/Settings/CustomTypes/WeightedObject.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace HalgarisRPGLoot.Settings.CustomTypes; - -public class WeightedObject where TType : class -{ - public TType Object { get; set; } = default!; - public int Weight { get; set; } = 1; -} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings.cs b/HalgarisRPGLoot/Settings/SyllaboreSettings.cs index a89495d..d4406c9 100644 --- a/HalgarisRPGLoot/Settings/SyllaboreSettings.cs +++ b/HalgarisRPGLoot/Settings/SyllaboreSettings.cs @@ -24,13 +24,13 @@ public class SyllaboreSettings [SynthesisSettingName("Usable Vowels")] [SynthesisDescription("Vowels used for the Syllable generation.")] [SynthesisTooltip("Vowels used for the Syllable generation.")] - public List> WithVowels = new() + public List> WithVowels = new() { - new(){Object = "a", Weight = 1}, - new(){Object = "e", Weight = 1}, - new(){Object = "i", Weight = 1}, - new(){Object = "o", Weight = 1}, - new(){Object = "u", Weight = 1}, + new(){Element = "a", Weight = 1}, + new(){Element = "e", Weight = 1}, + new(){Element = "i", Weight = 1}, + new(){Element = "o", Weight = 1}, + new(){Element = "u", Weight = 1}, }; [MaintainOrder] From e873ec7cfb708350c371719f9fddf82a8328c39b Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 12 Oct 2024 18:50:17 +0200 Subject: [PATCH 08/22] Update .NET SDK and dependencies --- HalgarisRPGLoot/HalgarisRPGLoot.csproj | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/HalgarisRPGLoot/HalgarisRPGLoot.csproj b/HalgarisRPGLoot/HalgarisRPGLoot.csproj index c1915cc..b281c19 100644 --- a/HalgarisRPGLoot/HalgarisRPGLoot.csproj +++ b/HalgarisRPGLoot/HalgarisRPGLoot.csproj @@ -1,16 +1,16 @@ Exe - net6.0 + net8.0 default Windows - - - - + + + + From 71cd1f4f7086b469a74953d3b0be7d115682d45b Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 12 Oct 2024 22:20:25 +0200 Subject: [PATCH 09/22] more changes to the settings block for name generation --- .../Settings/CustomTypes/WeightedElements.cs | 19 ++- .../Settings/Enums/NamingScheme.cs | 2 +- .../Settings/NamingGeneratorSettings.cs | 4 +- HalgarisRPGLoot/Settings/SyllaboreSettings.cs | 83 ------------- .../Settings/SyllaboreSettings/Filters.cs | 25 ++++ .../SyllaboreSettings/Probabilities.cs | 27 +++++ .../SyllaboreSettings/SyllableSettings.cs | 109 ++++++++++++++++++ .../SyllaboreSettings/SyllaboreSettings.cs | 26 +++++ 8 files changed, 207 insertions(+), 88 deletions(-) delete mode 100644 HalgarisRPGLoot/Settings/SyllaboreSettings.cs create mode 100644 HalgarisRPGLoot/Settings/SyllaboreSettings/Filters.cs create mode 100644 HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs create mode 100644 HalgarisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs create mode 100644 HalgarisRPGLoot/Settings/SyllaboreSettings/SyllaboreSettings.cs diff --git a/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs b/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs index 3d1a8a1..2d46041 100644 --- a/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs +++ b/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs @@ -1,8 +1,23 @@ -namespace HalgarisRPGLoot.Settings.CustomTypes; +using System.Collections; +using Mutagen.Bethesda.Synthesis.Settings; + + +// ReSharper disable ConvertToConstant.Global +// ReSharper disable FieldCanBeMadeReadOnly.Global +// ReSharper disable CollectionNeverUpdated.Global + + +namespace HalgarisRPGLoot.Settings.CustomTypes; public class WeightedElements where TType : class { - + [SynthesisSettingName("Weighted List Element")] + [SynthesisDescription("The content of the weighted list element.")] + [SynthesisTooltip("The content of the weighted list element.")] public TType Element { get; set; } = default!; + + [SynthesisSettingName("Element Weight")] + [SynthesisDescription("The weight of the weighted list element.")] + [SynthesisTooltip("The weight of the weighted list element.")] public int Weight { get; set; } = 1; } \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/Enums/NamingScheme.cs b/HalgarisRPGLoot/Settings/Enums/NamingScheme.cs index b4c934e..9fff901 100644 --- a/HalgarisRPGLoot/Settings/Enums/NamingScheme.cs +++ b/HalgarisRPGLoot/Settings/Enums/NamingScheme.cs @@ -2,7 +2,7 @@ public enum NamingScheme { - PrefixedPreviousOwnerName, + PrefixPreviousOwnerName, AppendPreviousOwnerName, ItemName } \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs b/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs index e2969c2..39fe343 100644 --- a/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs +++ b/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs @@ -23,8 +23,8 @@ public class NamingGeneratorSettings public string LastEnchantmentSeparator = " and "; [MaintainOrder] - [SynthesisSettingName("Syllabore Settings")] + [SynthesisSettingName("Random Name Generation (powered by Syllabore) Settings")] [SynthesisDescription("The Settings used for Random Name Generation.")] [SynthesisTooltip("The Settings used for Random Name Generation.")] - public SyllaboreSettings SyllaboreSettings = new SyllaboreSettings(); + public SyllaboreSettings.SyllaboreSettings SyllaboreSettings = new SyllaboreSettings.SyllaboreSettings(); } \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings.cs b/HalgarisRPGLoot/Settings/SyllaboreSettings.cs deleted file mode 100644 index d4406c9..0000000 --- a/HalgarisRPGLoot/Settings/SyllaboreSettings.cs +++ /dev/null @@ -1,83 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Mutagen.Bethesda.Synthesis.Settings; -using HalgarisRPGLoot.DataModels; -using HalgarisRPGLoot.Settings.CustomTypes; -using HalgarisRPGLoot.Settings.Enums; -using Mutagen.Bethesda.WPF.Reflection.Attributes; -using Syllabore; - -// ReSharper disable ConvertToConstant.Global -// ReSharper disable FieldCanBeMadeReadOnly.Global -// ReSharper disable CollectionNeverUpdated.Global - - -namespace HalgarisRPGLoot.Settings; - -public class SyllaboreSettings -{ - - //TODO: Rewrite to account for https://github.com/kesac/Syllabore/wiki/Guide-1.1.4%EA%9E%89-Frequencies - - [MaintainOrder] - [SynthesisSettingName("Usable Vowels")] - [SynthesisDescription("Vowels used for the Syllable generation.")] - [SynthesisTooltip("Vowels used for the Syllable generation.")] - public List> WithVowels = new() - { - new(){Element = "a", Weight = 1}, - new(){Element = "e", Weight = 1}, - new(){Element = "i", Weight = 1}, - new(){Element = "o", Weight = 1}, - new(){Element = "u", Weight = 1}, - }; - - [MaintainOrder] - public List<(string, int)> WithVowels2 = [("a",1), ("e",1), ("i",1), ("o",1), ("u",1)]; - - [MaintainOrder] - [SynthesisSettingName("Consonants Mode")] - [SynthesisDescription( - "Modifies if just one consonants list gets used or if you define the onsets and codas in AdvancedMode.")] - [SynthesisTooltip( - "Modifies if just one consonants list gets used or if you define the onsets and codas in AdvancedMode.")] - public ConsonantRulesMode ConsonantRulesMode = ConsonantRulesMode.AdvancedMode; - - [MaintainOrder] - [SynthesisSettingName("Usable Consonants (Basic)")] - [SynthesisDescription("Consonants used for the Syllable generation. Ignored in advanced mode.")] - [SynthesisTooltip(" Consonants used for the Syllable generation. Ignored in advanced mode.")] - public string WithConsonants; - - [MaintainOrder] - [SynthesisSettingName("Onsets (Advanced)")] - [SynthesisDescription("Onsets (leading consonants) used for the Syllable generation.")] - [SynthesisTooltip("Onsets (leading consonants) used for the Syllable generation.)")] - public string WithLeadingConsonants; // Onsets (Grammatically Speaking) - - [MaintainOrder] - [SynthesisSettingName("Codas (Advanced)")] - [SynthesisDescription("Codas (trailing consonants) used for the Syllable generation.")] - [SynthesisTooltip("Codas (trailing consonants) used for the Syllable generation.)")] - public string WithTrailingConsonants; // Codas (Grammatically Speaking) - - [MaintainOrder] - [SynthesisSettingName("Vowel Sequences")] - [SynthesisDescription("Vowel sequences that should be used together for the Syllable generation.")] - [SynthesisTooltip("Vowel sequences that should be used together for the Syllable generation.)")] - public string[] VowelSequences; //Vowels Commonly used Together - - [MaintainOrder] - [SynthesisSettingName("Onset Sequences")] - [SynthesisDescription("Onset sequences that should be used for the Syllable generation.")] - [SynthesisTooltip("Onset sequences that should be used for the Syllable generation.)")] - public string[] LeadingConsonantSequences; //Onset clusters - - [MaintainOrder] - [SynthesisSettingName("Coda Sequences")] - [SynthesisDescription("Coda sequences that should be used for the Syllable generation.")] - [SynthesisTooltip("Coda sequences that should be used for the Syllable generation.)")] - public string[] TrailingConsonantSequences; //Coda clusters - -} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings/Filters.cs b/HalgarisRPGLoot/Settings/SyllaboreSettings/Filters.cs new file mode 100644 index 0000000..41a2e2f --- /dev/null +++ b/HalgarisRPGLoot/Settings/SyllaboreSettings/Filters.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using Mutagen.Bethesda.Synthesis.Settings; +using Mutagen.Bethesda.WPF.Reflection.Attributes; + +namespace HalgarisRPGLoot.Settings.SyllaboreSettings; + +public class Filters +{ + [MaintainOrder] + [SynthesisDescription("This allows the use of regular expression matching filters.")] + [SynthesisTooltip("This allows the use of regular expression matching filters.")] + public List DoNotAllow = [ + "([^aieou]{3})", + "(q[^u])", + "(y[^aeiou])", + "([^tsao]w)", + "(p[^aeioustrlh])" + ]; + [MaintainOrder] + public List DoNotAllowStart = []; + [MaintainOrder] + public List DoNotAllowSubstring = ["pn", "zz", "yy", "xx"]; + [MaintainOrder] + public List DoNotAllowEnd = []; +} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs b/HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs new file mode 100644 index 0000000..5ddb2b7 --- /dev/null +++ b/HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs @@ -0,0 +1,27 @@ +using Mutagen.Bethesda.WPF.Reflection.Attributes; + +namespace HalgarisRPGLoot.Settings.SyllaboreSettings; + +public class Probabilities +{ + //For Each Syllable + [MaintainOrder] + public double OfLeadingConsonants { get; set; } = 0.95; + [MaintainOrder] + public double OfLeadingConsonantIsSequence { get; set; } = 0.25; + [MaintainOrder] + public double OfVowelsExits { get; set; } = 1.00; + [MaintainOrder] + public double OfVowelsExitIsSequence { get; set; } = 0.25; + [MaintainOrder] + public double OfTrailingConsonants { get; set; } = 0.10; + [MaintainOrder] + public double OfTrailingConsonantIsSequence { get; set; } = 0.25; + + //For Each Starting Syllable + [MaintainOrder] + public double OfLeadingVowelIsInStartingSyllable { get; set; } = 0.0; + [MaintainOrder] + public double OfLeadingVowelIsSequenceInStartingSyllable { get; set; } = 0.0; + +} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs b/HalgarisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs new file mode 100644 index 0000000..79a7bb4 --- /dev/null +++ b/HalgarisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs @@ -0,0 +1,109 @@ +using System.Collections.Generic; +using Mutagen.Bethesda.Synthesis.Settings; +using HalgarisRPGLoot.Settings.CustomTypes; +using HalgarisRPGLoot.Settings.Enums; +using Mutagen.Bethesda.WPF.Reflection.Attributes; + + +// ReSharper disable ConvertToConstant.Global +// ReSharper disable FieldCanBeMadeReadOnly.Global +// ReSharper disable CollectionNeverUpdated.Global + +namespace HalgarisRPGLoot.Settings.SyllaboreSettings; + +public class SyllableSettings +{ + [MaintainOrder] + [SynthesisSettingName("Usable Vowels")] + [SynthesisDescription("Vowels used for the Syllable generation.")] + [SynthesisTooltip("Vowels used for the Syllable generation.")] + public List> WithVowels = new() + { + new(){Element = "a"}, + new(){Element = "e"}, + new(){Element = "i"}, + new(){Element = "o"}, + new(){Element = "u"}, + }; + + [MaintainOrder] + [SynthesisSettingName("Consonants Mode")] + [SynthesisDescription( + "Modifies if just one consonants list gets used or if you define the onsets and codas in AdvancedMode.")] + [SynthesisTooltip( + "Modifies if just one consonants list gets used or if you define the onsets and codas in AdvancedMode.")] + public ConsonantRulesMode ConsonantRulesMode = ConsonantRulesMode.AdvancedMode; + + [MaintainOrder] + [SynthesisSettingName("Usable Consonants (Basic)")] + [SynthesisDescription("Consonants used for the Syllable generation. Ignored in advanced mode.")] + [SynthesisTooltip(" Consonants used for the Syllable generation. Ignored in advanced mode.")] + public List> WithConsonants = new () + { + new(){Element = "b"}, new(){Element = "c"}, new(){Element = "d"}, new(){Element = "f"}, + new(){Element = "g"}, new(){Element = "h"}, new(){Element = "j"}, new(){Element = "k"}, + new(){Element = "l"}, new(){Element = "m"}, new(){Element = "n"}, new(){Element = "p"}, + new(){Element = "q"}, new(){Element = "r"}, new(){Element = "s"}, new(){Element = "t"}, + new(){Element = "v"}, new(){Element = "w"}, new(){Element = "x"}, new(){Element = "y"}, + new(){Element = "z"} + }; + + [MaintainOrder] + [SynthesisSettingName("Onsets (Advanced)")] + [SynthesisDescription("Onsets (leading consonants) used for the Syllable generation.")] + [SynthesisTooltip("Onsets (leading consonants) used for the Syllable generation.)")] + public List> WithLeadingConsonants = new () + { + new(){Element = "b"}, new(){Element = "c"}, new(){Element = "d"}, new(){Element = "f"}, + new(){Element = "g"}, new(){Element = "h"}, new(){Element = "j"}, new(){Element = "k"}, + new(){Element = "l"}, new(){Element = "m"}, new(){Element = "n"}, new(){Element = "p"}, + new(){Element = "q"}, new(){Element = "r"}, new(){Element = "s"}, new(){Element = "t"}, + new(){Element = "v"}, new(){Element = "w"}, new(){Element = "x"}, new(){Element = "y"}, + new(){Element = "z"} + };// Onsets (Grammatically Speaking) + + [MaintainOrder] + [SynthesisSettingName("Codas (Advanced)")] + [SynthesisDescription("Codas (trailing consonants) used for the Syllable generation.")] + [SynthesisTooltip("Codas (trailing consonants) used for the Syllable generation.)")] + public List> WithTrailingConsonants = new() + { + new(){Element = "b"}, new(){Element = "c"}, new(){Element = "d"}, new(){Element = "f"}, + new(){Element = "g"}, new(){Element = "h"}, new(){Element = "j"}, new(){Element = "k"}, + new(){Element = "l"}, new(){Element = "m"}, new(){Element = "n"}, new(){Element = "p"}, + new(){Element = "q"}, new(){Element = "r"}, new(){Element = "s"}, new(){Element = "t"}, + new(){Element = "v"}, new(){Element = "w"}, new(){Element = "x"}, new(){Element = "y"}, + new(){Element = "z"} + }; // Codas (Grammatically Speaking) + + [MaintainOrder] + [SynthesisSettingName("Vowel Sequences")] + [SynthesisDescription("Vowel sequences that should be used together for the Syllable generation.")] + [SynthesisTooltip("Vowel sequences that should be used together for the Syllable generation.)")] + public List>> VowelSequences = new() + { + new(){Element = ["ai","oi"]}, + new(){Element = ["ou","ui"]}, + new(){Element = ["ae","ue"]}, + }; //Vowels Commonly used Together + + [MaintainOrder] + [SynthesisSettingName("Onset Sequences")] + [SynthesisDescription("Onset sequences that should be used for the Syllable generation.")] + [SynthesisTooltip("Onset sequences that should be used for the Syllable generation.)")] + public List>> LeadingConsonantSequences = new() + { + new(){Element = ["wh", "fr"]}, + new(){Element = ["st", "br","ph"]}, + }; //Onset clusters + + [MaintainOrder] + [SynthesisSettingName("Coda Sequences")] + [SynthesisDescription("Coda sequences that should be used for the Syllable generation.")] + [SynthesisTooltip("Coda sequences that should be used for the Syllable generation.)")] + public List>> TrailingConsonantSequences = new() + { + new(){Element = ["ld","rd"]}, + new(){Element = ["st", "rn", "ln"]}, + }; //Coda clusters +} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings/SyllaboreSettings.cs b/HalgarisRPGLoot/Settings/SyllaboreSettings/SyllaboreSettings.cs new file mode 100644 index 0000000..db7332b --- /dev/null +++ b/HalgarisRPGLoot/Settings/SyllaboreSettings/SyllaboreSettings.cs @@ -0,0 +1,26 @@ + + +// ReSharper disable ConvertToConstant.Global +// ReSharper disable FieldCanBeMadeReadOnly.Global +// ReSharper disable CollectionNeverUpdated.Global + + +using Mutagen.Bethesda.Synthesis.Settings; +using Mutagen.Bethesda.WPF.Reflection.Attributes; + +namespace HalgarisRPGLoot.Settings.SyllaboreSettings; + +public class SyllaboreSettings +{ + [MaintainOrder] + [SynthesisSettingName("Syllable Character Settings")] + public SyllableSettings SyllableSettings = new(); + + [MaintainOrder] + [SynthesisSettingName("Probabilities")] + public Probabilities Probabilities = new(); + + [MaintainOrder] + [SynthesisSettingName("Filters")] + public Filters Filters = new(); +} \ No newline at end of file From d934ad9f705a3e092de9aa64ce2706db73b47705 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sun, 13 Oct 2024 19:39:03 +0200 Subject: [PATCH 10/22] add ConfiguredNameGenerator class --- .../Factories/SyllaboreFactories.cs | 6 -- .../Generators/ConfiguredNameGenerator.cs | 86 +++++++++++++++++++ .../SyllaboreSettings/Probabilities.cs | 11 +-- 3 files changed, 89 insertions(+), 14 deletions(-) delete mode 100644 HalgarisRPGLoot/Factories/SyllaboreFactories.cs create mode 100644 HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs diff --git a/HalgarisRPGLoot/Factories/SyllaboreFactories.cs b/HalgarisRPGLoot/Factories/SyllaboreFactories.cs deleted file mode 100644 index d67c8f9..0000000 --- a/HalgarisRPGLoot/Factories/SyllaboreFactories.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace HalgarisRPGLoot.Factories; - -public class SyllaboreFactories -{ - -} \ No newline at end of file diff --git a/HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs b/HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs new file mode 100644 index 0000000..1ccb4a0 --- /dev/null +++ b/HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs @@ -0,0 +1,86 @@ +using System; +using HalgarisRPGLoot.Settings.Enums; +using HalgarisRPGLoot.Settings.SyllaboreSettings; +using Syllabore; + +namespace HalgarisRPGLoot.Generators; + +public class ConfiguredNameGenerator : NameGenerator +{ + //TODO: Implement the Name Generator in the Code + + public ConfiguredNameGenerator(int seedSalt) + { + Random random = new(Program.Settings.GeneralSettings.RandomGenerationSeed+seedSalt); + var syllaboreSettings = Program.Settings.NamingGeneratorSettings.SyllaboreSettings; + + //Build Syllable Generator + var syllableGenerator = new SyllableGenerator(); + syllableGenerator.WithRandom(random); + + foreach (var weightedVowels in syllaboreSettings.SyllableSettings.WithVowels) + { + syllableGenerator.WithVowels(weightedVowels.Element).Weight(weightedVowels.Weight); + } + + switch (syllaboreSettings.SyllableSettings.ConsonantRulesMode) + { + case ConsonantRulesMode.BasicMode: + { + foreach (var weightedConsonants in syllaboreSettings.SyllableSettings.WithConsonants) + { + syllableGenerator.WithConsonants(weightedConsonants.Element).Weight(weightedConsonants.Weight); + } + break; + } + case ConsonantRulesMode.AdvancedMode: + { + foreach (var weightedLeadingConsonant in syllaboreSettings.SyllableSettings.WithLeadingConsonants) + { + syllableGenerator.WithLeadingConsonants(weightedLeadingConsonant.Element) + .Weight(weightedLeadingConsonant.Weight); + } + + foreach (var weightedTrailingConsonant in syllaboreSettings.SyllableSettings.WithTrailingConsonants) + { + syllableGenerator.WithTrailingConsonants(weightedTrailingConsonant.Element) + .Weight(weightedTrailingConsonant.Weight); + } + + break; + } + } + + foreach (var weightedVowelSequence in syllaboreSettings.SyllableSettings.VowelSequences) + { + syllableGenerator.WithVowelSequences(weightedVowelSequence.Element.ToArray()) + .Weight(weightedVowelSequence.Weight); + } + + foreach (var weightedLeadingConsonantSequence in syllaboreSettings.SyllableSettings.LeadingConsonantSequences) + { + syllableGenerator.WithLeadingConsonantSequences(weightedLeadingConsonantSequence.Element.ToArray()) + .Weight(weightedLeadingConsonantSequence.Weight); + } + + foreach (var weightedTrailingConsonantSequence in syllaboreSettings.SyllableSettings.TrailingConsonantSequences) + { + syllableGenerator.WithTrailingConsonants(weightedTrailingConsonantSequence.Element.ToArray()) + .Weight(weightedTrailingConsonantSequence.Weight); + } + + UsingSyllables(syllableGenerator); + + UsingProbability(p => p + .OfLeadingConsonants(syllaboreSettings.Probabilities.OfLeadingConsonants) + .OfTrailingConsonants(syllaboreSettings.Probabilities.OfTrailingConsonants) + .OfFinalConsonants(syllaboreSettings.Probabilities.OfFinalConsonants) + .OfVowels(syllaboreSettings.Probabilities.OfVowelsExits) + .OfLeadingVowelsInStartingSyllable(syllaboreSettings.Probabilities.OfLeadingVowelsInStartingSyllable) + ); + + UsingRandom(random); + + } + +} \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs b/HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs index 5ddb2b7..0ac5822 100644 --- a/HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs +++ b/HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs @@ -1,4 +1,5 @@ using Mutagen.Bethesda.WPF.Reflection.Attributes; +// ReSharper disable AutoPropertyCanBeMadeGetOnly.Global namespace HalgarisRPGLoot.Settings.SyllaboreSettings; @@ -8,20 +9,14 @@ public class Probabilities [MaintainOrder] public double OfLeadingConsonants { get; set; } = 0.95; [MaintainOrder] - public double OfLeadingConsonantIsSequence { get; set; } = 0.25; - [MaintainOrder] public double OfVowelsExits { get; set; } = 1.00; [MaintainOrder] - public double OfVowelsExitIsSequence { get; set; } = 0.25; - [MaintainOrder] public double OfTrailingConsonants { get; set; } = 0.10; [MaintainOrder] - public double OfTrailingConsonantIsSequence { get; set; } = 0.25; + public double OfFinalConsonants { get; set; } = 0.50; //For Each Starting Syllable [MaintainOrder] - public double OfLeadingVowelIsInStartingSyllable { get; set; } = 0.0; - [MaintainOrder] - public double OfLeadingVowelIsSequenceInStartingSyllable { get; set; } = 0.0; + public double OfLeadingVowelsInStartingSyllable { get; set; } = 0.0; } \ No newline at end of file From 6186287517ea7f4ebb156d1aa820475ded04bebe Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sun, 13 Oct 2024 22:19:02 +0200 Subject: [PATCH 11/22] finish the Name Generator --- .../Generators/ConfiguredNameGenerator.cs | 35 ++++++++++++++++--- .../Settings/CustomTypes/WeightedElements.cs | 3 +- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs b/HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs index 1ccb4a0..2eb41e6 100644 --- a/HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs +++ b/HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs @@ -1,6 +1,5 @@ using System; using HalgarisRPGLoot.Settings.Enums; -using HalgarisRPGLoot.Settings.SyllaboreSettings; using Syllabore; namespace HalgarisRPGLoot.Generators; @@ -8,14 +7,14 @@ namespace HalgarisRPGLoot.Generators; public class ConfiguredNameGenerator : NameGenerator { //TODO: Implement the Name Generator in the Code - + public ConfiguredNameGenerator(int seedSalt) { Random random = new(Program.Settings.GeneralSettings.RandomGenerationSeed+seedSalt); var syllaboreSettings = Program.Settings.NamingGeneratorSettings.SyllaboreSettings; - //Build Syllable Generator - var syllableGenerator = new SyllableGenerator(); + //Add Syllable Settings + var syllableGenerator = new DefaultSyllableGenerator(); syllableGenerator.WithRandom(random); foreach (var weightedVowels in syllaboreSettings.SyllableSettings.WithVowels) @@ -71,6 +70,7 @@ public ConfiguredNameGenerator(int seedSalt) UsingSyllables(syllableGenerator); + //Add Probability Settings UsingProbability(p => p .OfLeadingConsonants(syllaboreSettings.Probabilities.OfLeadingConsonants) .OfTrailingConsonants(syllaboreSettings.Probabilities.OfTrailingConsonants) @@ -78,9 +78,34 @@ public ConfiguredNameGenerator(int seedSalt) .OfVowels(syllaboreSettings.Probabilities.OfVowelsExits) .OfLeadingVowelsInStartingSyllable(syllaboreSettings.Probabilities.OfLeadingVowelsInStartingSyllable) ); - + //Add the Seeded Random UsingRandom(random); + //Add Filter Settings + var filter = new NameFilter(); + + foreach (var notAllowed in syllaboreSettings.Filters.DoNotAllow) + { + filter.DoNotAllow(notAllowed); + } + + foreach (var notAllowed in syllaboreSettings.Filters.DoNotAllowSubstring) + { + filter.DoNotAllowSubstring(notAllowed); + } + + foreach (var notAllowed in syllaboreSettings.Filters.DoNotAllowEnd) + { + filter.DoNotAllowEnding(notAllowed); + } + + foreach (var notAllowed in syllaboreSettings.Filters.DoNotAllowStart) + { + filter.DoNotAllowStart(notAllowed); + } + + UsingFilter(filter); + } } \ No newline at end of file diff --git a/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs b/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs index 2d46041..24fb5b0 100644 --- a/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs +++ b/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs @@ -1,5 +1,4 @@ -using System.Collections; -using Mutagen.Bethesda.Synthesis.Settings; +using Mutagen.Bethesda.Synthesis.Settings; // ReSharper disable ConvertToConstant.Global From 0f09ac0c1482922544ea9ff0ec846ee44a5e860c Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sun, 13 Oct 2024 22:21:36 +0200 Subject: [PATCH 12/22] Added NameGenerator to the Armor and Weapon Analyzers --- HalgarisRPGLoot/Analyzers/ArmorAnalyzer.cs | 1 + HalgarisRPGLoot/Analyzers/GearAnalyzer.cs | 2 ++ HalgarisRPGLoot/Analyzers/WeaponAnalyzer.cs | 1 + 3 files changed, 4 insertions(+) diff --git a/HalgarisRPGLoot/Analyzers/ArmorAnalyzer.cs b/HalgarisRPGLoot/Analyzers/ArmorAnalyzer.cs index 47a396d..9f08049 100644 --- a/HalgarisRPGLoot/Analyzers/ArmorAnalyzer.cs +++ b/HalgarisRPGLoot/Analyzers/ArmorAnalyzer.cs @@ -23,6 +23,7 @@ public ArmorAnalyzer(IPatcherState state, { RarityAndVariationDistributionSettings = Program.Settings.RarityAndVariationDistributionSettings; GearSettings = RarityAndVariationDistributionSettings.ArmorSettings; + ConfiguredNameGenerator = new (2); EditorIdPrefix = "HAL_ARMOR_"; ItemTypeDescriptor = " armor"; diff --git a/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs b/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs index 68bc0f2..874e15d 100644 --- a/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs +++ b/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using HalgarisRPGLoot.DataModels; +using HalgarisRPGLoot.Generators; using HalgarisRPGLoot.Settings; using HalgarisRPGLoot.Settings.Enums; using Mutagen.Bethesda; @@ -19,6 +20,7 @@ public abstract class GearAnalyzer { protected GearSettings GearSettings; + protected ConfiguredNameGenerator ConfiguredNameGenerator; protected RarityAndVariationDistributionSettings RarityAndVariationDistributionSettings; diff --git a/HalgarisRPGLoot/Analyzers/WeaponAnalyzer.cs b/HalgarisRPGLoot/Analyzers/WeaponAnalyzer.cs index ae1ca53..404170f 100644 --- a/HalgarisRPGLoot/Analyzers/WeaponAnalyzer.cs +++ b/HalgarisRPGLoot/Analyzers/WeaponAnalyzer.cs @@ -23,6 +23,7 @@ public WeaponAnalyzer(IPatcherState state, { RarityAndVariationDistributionSettings = Program.Settings.RarityAndVariationDistributionSettings; GearSettings = RarityAndVariationDistributionSettings.ArmorSettings; + ConfiguredNameGenerator = new(3); EditorIdPrefix = "HAL_WEAPON_"; ItemTypeDescriptor = " weapon"; From c2bf9949691390d8864dd45dcdca5a1d103275a4 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sun, 13 Oct 2024 22:49:33 +0200 Subject: [PATCH 13/22] rename project to SynthesisRPGLoot --- HalgarisRPGLoot.sln => SynthesisRPGLoot.sln | 2 +- .../Analyzers/ArmorAnalyzer.cs | 8 ++++++-- .../Analyzers/GearAnalyzer.cs | 10 +++++----- .../Analyzers/ObjectEffectsAnalyzer.cs | 6 +++--- .../Analyzers/WeaponAnalyzer.cs | 7 +++++-- .../DataModels/ResolvedEnchantment.cs | 2 +- .../DataModels/ResolvedListItem.cs | 2 +- {HalgarisRPGLoot => SynthesisRPGLoot}/Extensions.cs | 2 +- .../Generators/ConfiguredNameGenerator.cs | 4 ++-- {HalgarisRPGLoot => SynthesisRPGLoot}/Program.cs | 4 ++-- .../Settings/CustomTypes/WeightedElements.cs | 2 +- .../Settings/EnchantmentSettings.cs | 4 ++-- .../Settings/Enums/ConsonantRulesMode.cs | 2 +- .../Settings/Enums/GenerationMode.cs | 2 +- .../Settings/Enums/LeveledListBase.cs | 2 +- .../Settings/Enums/ListMode.cs | 2 +- .../Settings/GeneralSettings.cs | 2 +- .../Settings/NamingGeneratorSettings.cs | 2 +- .../Settings/RarityAndVariationDistributionSettings.cs | 4 ++-- .../Settings/Settings.cs | 2 +- .../Settings/SyllaboreSettings/Filters.cs | 2 +- .../Settings/SyllaboreSettings/Probabilities.cs | 2 +- .../Settings/SyllaboreSettings/SyllableSettings.cs | 6 +++--- .../Settings/SyllaboreSettings/SyllaboreSettings.cs | 2 +- .../SynthesisMeta.json | 0 .../SynthesisRPGLoot.csproj | 0 26 files changed, 45 insertions(+), 38 deletions(-) rename HalgarisRPGLoot.sln => SynthesisRPGLoot.sln (80%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Analyzers/ArmorAnalyzer.cs (98%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Analyzers/GearAnalyzer.cs (98%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Analyzers/ObjectEffectsAnalyzer.cs (96%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Analyzers/WeaponAnalyzer.cs (98%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/DataModels/ResolvedEnchantment.cs (85%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/DataModels/ResolvedListItem.cs (91%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Extensions.cs (96%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Generators/ConfiguredNameGenerator.cs (98%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Program.cs (97%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/CustomTypes/WeightedElements.cs (93%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/EnchantmentSettings.cs (96%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/Enums/ConsonantRulesMode.cs (59%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/Enums/GenerationMode.cs (70%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/Enums/LeveledListBase.cs (65%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/Enums/ListMode.cs (63%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/GeneralSettings.cs (97%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/NamingGeneratorSettings.cs (97%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/RarityAndVariationDistributionSettings.cs (98%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/Settings.cs (94%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/SyllaboreSettings/Filters.cs (93%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/SyllaboreSettings/Probabilities.cs (91%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/SyllaboreSettings/SyllableSettings.cs (97%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/Settings/SyllaboreSettings/SyllaboreSettings.cs (91%) rename {HalgarisRPGLoot => SynthesisRPGLoot}/SynthesisMeta.json (100%) rename HalgarisRPGLoot/HalgarisRPGLoot.csproj => SynthesisRPGLoot/SynthesisRPGLoot.csproj (100%) diff --git a/HalgarisRPGLoot.sln b/SynthesisRPGLoot.sln similarity index 80% rename from HalgarisRPGLoot.sln rename to SynthesisRPGLoot.sln index e9e6749..7c5534b 100644 --- a/HalgarisRPGLoot.sln +++ b/SynthesisRPGLoot.sln @@ -1,6 +1,6 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HalgarisRPGLoot", "HalgarisRPGLoot\HalgarisRPGLoot.csproj", "{E3C85A2B-4E6D-4B5D-9E8D-810116F644AB}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SynthesisRPGLoot", "SynthesisRPGLoot\SynthesisRPGLoot.csproj", "{E3C85A2B-4E6D-4B5D-9E8D-810116F644AB}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/HalgarisRPGLoot/Analyzers/ArmorAnalyzer.cs b/SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs similarity index 98% rename from HalgarisRPGLoot/Analyzers/ArmorAnalyzer.cs rename to SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs index 9f08049..4f64902 100644 --- a/HalgarisRPGLoot/Analyzers/ArmorAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; -using HalgarisRPGLoot.DataModels; +using SynthesisRPGLoot.DataModels; using Mutagen.Bethesda; using Mutagen.Bethesda.FormKeys.SkyrimSE; using Mutagen.Bethesda.Plugins; @@ -11,7 +11,7 @@ using Mutagen.Bethesda.Strings; using Mutagen.Bethesda.Synthesis; -namespace HalgarisRPGLoot.Analyzers +namespace SynthesisRPGLoot.Analyzers { public class ArmorAnalyzer : GearAnalyzer { @@ -190,8 +190,12 @@ protected override FormKey EnchantItem(ResolvedListItem item, int newArmor.EditorID = newArmorEditorId; newArmor.ObjectEffect.SetTo(generatedEnchantmentFormKey); newArmor.EnchantmentAmount = (ushort) effects.Where(e => e.Amount.HasValue).Sum(e => e.Amount.Value); + + // NameGenerator code goes here: newArmor.Name = RarityClasses[rarity].Label + " " + itemName + " of " + GetEnchantmentsStringForName(effects); + + newArmor.TemplateArmor = (IFormLinkNullable) item.Resolved.ToNullableLinkGetter(); if (!RarityClasses[rarity].AllowDisenchanting) diff --git a/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs b/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs similarity index 98% rename from HalgarisRPGLoot/Analyzers/GearAnalyzer.cs rename to SynthesisRPGLoot/Analyzers/GearAnalyzer.cs index 874e15d..963452a 100644 --- a/HalgarisRPGLoot/Analyzers/GearAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs @@ -1,19 +1,19 @@ using System; using System.Collections.Generic; using System.Linq; -using HalgarisRPGLoot.DataModels; -using HalgarisRPGLoot.Generators; -using HalgarisRPGLoot.Settings; -using HalgarisRPGLoot.Settings.Enums; +using SynthesisRPGLoot.DataModels; +using SynthesisRPGLoot.Settings.Enums; using Mutagen.Bethesda; using Mutagen.Bethesda.Plugins; using Mutagen.Bethesda.Plugins.Records; using Mutagen.Bethesda.Skyrim; using Mutagen.Bethesda.Synthesis; +using SynthesisRPGLoot.Generators; +using SynthesisRPGLoot.Settings; // ReSharper disable UnusedAutoPropertyAccessor.Local -namespace HalgarisRPGLoot.Analyzers +namespace SynthesisRPGLoot.Analyzers { public abstract class GearAnalyzer where TType : class, IMajorRecordGetter diff --git a/HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs b/SynthesisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs similarity index 96% rename from HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs rename to SynthesisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs index e3bdb03..e045c7f 100644 --- a/HalgarisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/ObjectEffectsAnalyzer.cs @@ -1,14 +1,14 @@ using System.Collections.Generic; using System.Linq; -using HalgarisRPGLoot.Settings; -using HalgarisRPGLoot.Settings.Enums; using Mutagen.Bethesda; using Mutagen.Bethesda.Plugins; using Mutagen.Bethesda.Skyrim; using Mutagen.Bethesda.Synthesis; using Noggog; +using SynthesisRPGLoot.Settings; +using SynthesisRPGLoot.Settings.Enums; -namespace HalgarisRPGLoot.Analyzers +namespace SynthesisRPGLoot.Analyzers { public class ObjectEffectsAnalyzer { diff --git a/HalgarisRPGLoot/Analyzers/WeaponAnalyzer.cs b/SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs similarity index 98% rename from HalgarisRPGLoot/Analyzers/WeaponAnalyzer.cs rename to SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs index 404170f..146cfff 100644 --- a/HalgarisRPGLoot/Analyzers/WeaponAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; -using HalgarisRPGLoot.DataModels; +using SynthesisRPGLoot.DataModels; using Mutagen.Bethesda; using Mutagen.Bethesda.FormKeys.SkyrimSE; using Mutagen.Bethesda.Plugins; @@ -11,7 +11,7 @@ using Mutagen.Bethesda.Strings; using Mutagen.Bethesda.Synthesis; -namespace HalgarisRPGLoot.Analyzers +namespace SynthesisRPGLoot.Analyzers { public class WeaponAnalyzer : GearAnalyzer { @@ -190,8 +190,11 @@ protected override FormKey EnchantItem(ResolvedListItem item, int newWeapon.EditorID = newWeaponEditorId; newWeapon.ObjectEffect.SetTo(generatedEnchantmentFormKey); newWeapon.EnchantmentAmount = (ushort) effects.Where(e => e.Amount.HasValue).Sum(e => e.Amount.Value); + + //NameGenerator code goes here: newWeapon.Name = RarityClasses[rarity].Label + " " + itemName + " of " + GetEnchantmentsStringForName(effects); + newWeapon.Template = (IFormLinkNullable) item.Resolved.ToNullableLinkGetter(); if (!RarityClasses[rarity].AllowDisenchanting) diff --git a/HalgarisRPGLoot/DataModels/ResolvedEnchantment.cs b/SynthesisRPGLoot/DataModels/ResolvedEnchantment.cs similarity index 85% rename from HalgarisRPGLoot/DataModels/ResolvedEnchantment.cs rename to SynthesisRPGLoot/DataModels/ResolvedEnchantment.cs index bdc6cc2..aa341de 100644 --- a/HalgarisRPGLoot/DataModels/ResolvedEnchantment.cs +++ b/SynthesisRPGLoot/DataModels/ResolvedEnchantment.cs @@ -1,6 +1,6 @@ using Mutagen.Bethesda.Skyrim; -namespace HalgarisRPGLoot.DataModels +namespace SynthesisRPGLoot.DataModels { public class ResolvedEnchantment { diff --git a/HalgarisRPGLoot/DataModels/ResolvedListItem.cs b/SynthesisRPGLoot/DataModels/ResolvedListItem.cs similarity index 91% rename from HalgarisRPGLoot/DataModels/ResolvedListItem.cs rename to SynthesisRPGLoot/DataModels/ResolvedListItem.cs index c204dbb..94cbff8 100644 --- a/HalgarisRPGLoot/DataModels/ResolvedListItem.cs +++ b/SynthesisRPGLoot/DataModels/ResolvedListItem.cs @@ -1,7 +1,7 @@ using Mutagen.Bethesda.Plugins.Records; using Mutagen.Bethesda.Skyrim; -namespace HalgarisRPGLoot.DataModels +namespace SynthesisRPGLoot.DataModels { public class ResolvedListItem where TEnchantedItemTypeGetter : class, IMajorRecordGetter diff --git a/HalgarisRPGLoot/Extensions.cs b/SynthesisRPGLoot/Extensions.cs similarity index 96% rename from HalgarisRPGLoot/Extensions.cs rename to SynthesisRPGLoot/Extensions.cs index 6d8a1d4..84728a3 100644 --- a/HalgarisRPGLoot/Extensions.cs +++ b/SynthesisRPGLoot/Extensions.cs @@ -5,7 +5,7 @@ using Mutagen.Bethesda.Plugins; -namespace HalgarisRPGLoot +namespace SynthesisRPGLoot { public static class Extensions { diff --git a/HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs b/SynthesisRPGLoot/Generators/ConfiguredNameGenerator.cs similarity index 98% rename from HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs rename to SynthesisRPGLoot/Generators/ConfiguredNameGenerator.cs index 2eb41e6..25a12fb 100644 --- a/HalgarisRPGLoot/Generators/ConfiguredNameGenerator.cs +++ b/SynthesisRPGLoot/Generators/ConfiguredNameGenerator.cs @@ -1,8 +1,8 @@ using System; -using HalgarisRPGLoot.Settings.Enums; +using SynthesisRPGLoot.Settings.Enums; using Syllabore; -namespace HalgarisRPGLoot.Generators; +namespace SynthesisRPGLoot.Generators; public class ConfiguredNameGenerator : NameGenerator { diff --git a/HalgarisRPGLoot/Program.cs b/SynthesisRPGLoot/Program.cs similarity index 97% rename from HalgarisRPGLoot/Program.cs rename to SynthesisRPGLoot/Program.cs index cb177e4..b8e0d3d 100644 --- a/HalgarisRPGLoot/Program.cs +++ b/SynthesisRPGLoot/Program.cs @@ -1,13 +1,13 @@ using System; using System.Threading; using System.Threading.Tasks; -using HalgarisRPGLoot.Analyzers; using Mutagen.Bethesda; using Mutagen.Bethesda.Skyrim; using Mutagen.Bethesda.Synthesis; +using SynthesisRPGLoot.Analyzers; -namespace HalgarisRPGLoot +namespace SynthesisRPGLoot { class Program { diff --git a/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs b/SynthesisRPGLoot/Settings/CustomTypes/WeightedElements.cs similarity index 93% rename from HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs rename to SynthesisRPGLoot/Settings/CustomTypes/WeightedElements.cs index 24fb5b0..7aeca6d 100644 --- a/HalgarisRPGLoot/Settings/CustomTypes/WeightedElements.cs +++ b/SynthesisRPGLoot/Settings/CustomTypes/WeightedElements.cs @@ -6,7 +6,7 @@ // ReSharper disable CollectionNeverUpdated.Global -namespace HalgarisRPGLoot.Settings.CustomTypes; +namespace SynthesisRPGLoot.Settings.CustomTypes; public class WeightedElements where TType : class { diff --git a/HalgarisRPGLoot/Settings/EnchantmentSettings.cs b/SynthesisRPGLoot/Settings/EnchantmentSettings.cs similarity index 96% rename from HalgarisRPGLoot/Settings/EnchantmentSettings.cs rename to SynthesisRPGLoot/Settings/EnchantmentSettings.cs index 7bea2ec..b64b50d 100644 --- a/HalgarisRPGLoot/Settings/EnchantmentSettings.cs +++ b/SynthesisRPGLoot/Settings/EnchantmentSettings.cs @@ -1,5 +1,5 @@ using System.Collections.Generic; -using HalgarisRPGLoot.Settings.Enums; +using SynthesisRPGLoot.Settings.Enums; using Mutagen.Bethesda.Skyrim; using Mutagen.Bethesda.FormKeys.SkyrimSE; using Mutagen.Bethesda.Plugins; @@ -10,7 +10,7 @@ // ReSharper disable CollectionNeverUpdated.Global -namespace HalgarisRPGLoot.Settings; +namespace SynthesisRPGLoot.Settings; public class EnchantmentSettings { diff --git a/HalgarisRPGLoot/Settings/Enums/ConsonantRulesMode.cs b/SynthesisRPGLoot/Settings/Enums/ConsonantRulesMode.cs similarity index 59% rename from HalgarisRPGLoot/Settings/Enums/ConsonantRulesMode.cs rename to SynthesisRPGLoot/Settings/Enums/ConsonantRulesMode.cs index 36f8065..fccf34c 100644 --- a/HalgarisRPGLoot/Settings/Enums/ConsonantRulesMode.cs +++ b/SynthesisRPGLoot/Settings/Enums/ConsonantRulesMode.cs @@ -1,4 +1,4 @@ -namespace HalgarisRPGLoot.Settings.Enums; +namespace SynthesisRPGLoot.Settings.Enums; public enum ConsonantRulesMode { diff --git a/HalgarisRPGLoot/Settings/Enums/GenerationMode.cs b/SynthesisRPGLoot/Settings/Enums/GenerationMode.cs similarity index 70% rename from HalgarisRPGLoot/Settings/Enums/GenerationMode.cs rename to SynthesisRPGLoot/Settings/Enums/GenerationMode.cs index a8bb25b..603b4d5 100644 --- a/HalgarisRPGLoot/Settings/Enums/GenerationMode.cs +++ b/SynthesisRPGLoot/Settings/Enums/GenerationMode.cs @@ -1,4 +1,4 @@ -namespace HalgarisRPGLoot.Settings.Enums +namespace SynthesisRPGLoot.Settings.Enums { public enum GenerationMode { diff --git a/HalgarisRPGLoot/Settings/Enums/LeveledListBase.cs b/SynthesisRPGLoot/Settings/Enums/LeveledListBase.cs similarity index 65% rename from HalgarisRPGLoot/Settings/Enums/LeveledListBase.cs rename to SynthesisRPGLoot/Settings/Enums/LeveledListBase.cs index 883ffe6..037ddb0 100644 --- a/HalgarisRPGLoot/Settings/Enums/LeveledListBase.cs +++ b/SynthesisRPGLoot/Settings/Enums/LeveledListBase.cs @@ -1,4 +1,4 @@ -namespace HalgarisRPGLoot.Settings.Enums; +namespace SynthesisRPGLoot.Settings.Enums; public enum LeveledListBase { diff --git a/HalgarisRPGLoot/Settings/Enums/ListMode.cs b/SynthesisRPGLoot/Settings/Enums/ListMode.cs similarity index 63% rename from HalgarisRPGLoot/Settings/Enums/ListMode.cs rename to SynthesisRPGLoot/Settings/Enums/ListMode.cs index 5c25a36..b3c6364 100644 --- a/HalgarisRPGLoot/Settings/Enums/ListMode.cs +++ b/SynthesisRPGLoot/Settings/Enums/ListMode.cs @@ -1,4 +1,4 @@ -namespace HalgarisRPGLoot.Settings.Enums +namespace SynthesisRPGLoot.Settings.Enums { public enum ListMode { diff --git a/HalgarisRPGLoot/Settings/GeneralSettings.cs b/SynthesisRPGLoot/Settings/GeneralSettings.cs similarity index 97% rename from HalgarisRPGLoot/Settings/GeneralSettings.cs rename to SynthesisRPGLoot/Settings/GeneralSettings.cs index 545e7e1..fef297e 100644 --- a/HalgarisRPGLoot/Settings/GeneralSettings.cs +++ b/SynthesisRPGLoot/Settings/GeneralSettings.cs @@ -9,7 +9,7 @@ // ReSharper disable CollectionNeverUpdated.Global -namespace HalgarisRPGLoot.Settings; +namespace SynthesisRPGLoot.Settings; public class GeneralSettings { diff --git a/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs b/SynthesisRPGLoot/Settings/NamingGeneratorSettings.cs similarity index 97% rename from HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs rename to SynthesisRPGLoot/Settings/NamingGeneratorSettings.cs index 39fe343..9673de9 100644 --- a/HalgarisRPGLoot/Settings/NamingGeneratorSettings.cs +++ b/SynthesisRPGLoot/Settings/NamingGeneratorSettings.cs @@ -6,7 +6,7 @@ // ReSharper disable CollectionNeverUpdated.Global -namespace HalgarisRPGLoot.Settings; +namespace SynthesisRPGLoot.Settings; public class NamingGeneratorSettings { diff --git a/HalgarisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs b/SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs similarity index 98% rename from HalgarisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs rename to SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs index 01bacfa..0422622 100644 --- a/HalgarisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs +++ b/SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs @@ -1,13 +1,13 @@ using System; using System.Collections.Generic; using Mutagen.Bethesda.Synthesis.Settings; -using HalgarisRPGLoot.Settings.Enums; +using SynthesisRPGLoot.Settings.Enums; using Mutagen.Bethesda.WPF.Reflection.Attributes; // ReSharper disable ConvertToConstant.Global // ReSharper disable FieldCanBeMadeReadOnly.Global // ReSharper disable CollectionNeverUpdated.Global -namespace HalgarisRPGLoot.Settings; +namespace SynthesisRPGLoot.Settings; public class RarityAndVariationDistributionSettings { diff --git a/HalgarisRPGLoot/Settings/Settings.cs b/SynthesisRPGLoot/Settings/Settings.cs similarity index 94% rename from HalgarisRPGLoot/Settings/Settings.cs rename to SynthesisRPGLoot/Settings/Settings.cs index b2f42c8..9f3418f 100644 --- a/HalgarisRPGLoot/Settings/Settings.cs +++ b/SynthesisRPGLoot/Settings/Settings.cs @@ -4,7 +4,7 @@ // ReSharper disable FieldCanBeMadeReadOnly.Global // ReSharper disable CollectionNeverUpdated.Global -namespace HalgarisRPGLoot.Settings +namespace SynthesisRPGLoot.Settings { public class Settings { diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings/Filters.cs b/SynthesisRPGLoot/Settings/SyllaboreSettings/Filters.cs similarity index 93% rename from HalgarisRPGLoot/Settings/SyllaboreSettings/Filters.cs rename to SynthesisRPGLoot/Settings/SyllaboreSettings/Filters.cs index 41a2e2f..4da676c 100644 --- a/HalgarisRPGLoot/Settings/SyllaboreSettings/Filters.cs +++ b/SynthesisRPGLoot/Settings/SyllaboreSettings/Filters.cs @@ -2,7 +2,7 @@ using Mutagen.Bethesda.Synthesis.Settings; using Mutagen.Bethesda.WPF.Reflection.Attributes; -namespace HalgarisRPGLoot.Settings.SyllaboreSettings; +namespace SynthesisRPGLoot.Settings.SyllaboreSettings; public class Filters { diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs b/SynthesisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs similarity index 91% rename from HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs rename to SynthesisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs index 0ac5822..0b25433 100644 --- a/HalgarisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs +++ b/SynthesisRPGLoot/Settings/SyllaboreSettings/Probabilities.cs @@ -1,7 +1,7 @@ using Mutagen.Bethesda.WPF.Reflection.Attributes; // ReSharper disable AutoPropertyCanBeMadeGetOnly.Global -namespace HalgarisRPGLoot.Settings.SyllaboreSettings; +namespace SynthesisRPGLoot.Settings.SyllaboreSettings; public class Probabilities { diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs b/SynthesisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs similarity index 97% rename from HalgarisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs rename to SynthesisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs index 79a7bb4..aac4fac 100644 --- a/HalgarisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs +++ b/SynthesisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs @@ -1,15 +1,15 @@ using System.Collections.Generic; using Mutagen.Bethesda.Synthesis.Settings; -using HalgarisRPGLoot.Settings.CustomTypes; -using HalgarisRPGLoot.Settings.Enums; using Mutagen.Bethesda.WPF.Reflection.Attributes; +using SynthesisRPGLoot.Settings.CustomTypes; +using SynthesisRPGLoot.Settings.Enums; // ReSharper disable ConvertToConstant.Global // ReSharper disable FieldCanBeMadeReadOnly.Global // ReSharper disable CollectionNeverUpdated.Global -namespace HalgarisRPGLoot.Settings.SyllaboreSettings; +namespace SynthesisRPGLoot.Settings.SyllaboreSettings; public class SyllableSettings { diff --git a/HalgarisRPGLoot/Settings/SyllaboreSettings/SyllaboreSettings.cs b/SynthesisRPGLoot/Settings/SyllaboreSettings/SyllaboreSettings.cs similarity index 91% rename from HalgarisRPGLoot/Settings/SyllaboreSettings/SyllaboreSettings.cs rename to SynthesisRPGLoot/Settings/SyllaboreSettings/SyllaboreSettings.cs index db7332b..deed9b6 100644 --- a/HalgarisRPGLoot/Settings/SyllaboreSettings/SyllaboreSettings.cs +++ b/SynthesisRPGLoot/Settings/SyllaboreSettings/SyllaboreSettings.cs @@ -8,7 +8,7 @@ using Mutagen.Bethesda.Synthesis.Settings; using Mutagen.Bethesda.WPF.Reflection.Attributes; -namespace HalgarisRPGLoot.Settings.SyllaboreSettings; +namespace SynthesisRPGLoot.Settings.SyllaboreSettings; public class SyllaboreSettings { diff --git a/HalgarisRPGLoot/SynthesisMeta.json b/SynthesisRPGLoot/SynthesisMeta.json similarity index 100% rename from HalgarisRPGLoot/SynthesisMeta.json rename to SynthesisRPGLoot/SynthesisMeta.json diff --git a/HalgarisRPGLoot/HalgarisRPGLoot.csproj b/SynthesisRPGLoot/SynthesisRPGLoot.csproj similarity index 100% rename from HalgarisRPGLoot/HalgarisRPGLoot.csproj rename to SynthesisRPGLoot/SynthesisRPGLoot.csproj From 3df841e195f47ce4f22511000b2bb59426178585 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sun, 13 Oct 2024 22:49:58 +0200 Subject: [PATCH 14/22] adjust naming scheme enum --- HalgarisRPGLoot/Settings/Enums/NamingScheme.cs | 8 -------- .../Settings/Enums/CustomNamingScheme.cs | 12 ++++++++++++ 2 files changed, 12 insertions(+), 8 deletions(-) delete mode 100644 HalgarisRPGLoot/Settings/Enums/NamingScheme.cs create mode 100644 SynthesisRPGLoot/Settings/Enums/CustomNamingScheme.cs diff --git a/HalgarisRPGLoot/Settings/Enums/NamingScheme.cs b/HalgarisRPGLoot/Settings/Enums/NamingScheme.cs deleted file mode 100644 index 9fff901..0000000 --- a/HalgarisRPGLoot/Settings/Enums/NamingScheme.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace HalgarisRPGLoot.Settings.Enums; - -public enum NamingScheme -{ - PrefixPreviousOwnerName, - AppendPreviousOwnerName, - ItemName -} \ No newline at end of file diff --git a/SynthesisRPGLoot/Settings/Enums/CustomNamingScheme.cs b/SynthesisRPGLoot/Settings/Enums/CustomNamingScheme.cs new file mode 100644 index 0000000..b5465ea --- /dev/null +++ b/SynthesisRPGLoot/Settings/Enums/CustomNamingScheme.cs @@ -0,0 +1,12 @@ +namespace SynthesisRPGLoot.Settings.Enums; + +public enum CustomNamingScheme +{ + DontUse, + AsPrefixedPreviousOwnerName, + AsPrefixedPreviousOwnerNameReplacingEnchantments, + AsAppendedPreviousOwnerName, + AsAppendedPreviousOwnerNameReplacingEnchantments, + AsItemName, + AsItemNameReplacingEnchantments +} \ No newline at end of file From 02441c9c0aa3f0b0f52d33f072b378bba7b462de Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sun, 13 Oct 2024 23:19:31 +0200 Subject: [PATCH 15/22] deleted unused enum --- SynthesisRPGLoot/Settings/Enums/GenerationMode.cs | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 SynthesisRPGLoot/Settings/Enums/GenerationMode.cs diff --git a/SynthesisRPGLoot/Settings/Enums/GenerationMode.cs b/SynthesisRPGLoot/Settings/Enums/GenerationMode.cs deleted file mode 100644 index 603b4d5..0000000 --- a/SynthesisRPGLoot/Settings/Enums/GenerationMode.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace SynthesisRPGLoot.Settings.Enums -{ - public enum GenerationMode - { - GenerateRarities, - JustDistributeEnchantments - } -} \ No newline at end of file From 2e0417064a8502c38ea300680d2f004350270039 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Mon, 14 Oct 2024 00:03:35 +0200 Subject: [PATCH 16/22] Add NameGeneration To the ItemGeneration --- SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs | 5 +- SynthesisRPGLoot/Analyzers/GearAnalyzer.cs | 64 +++++++++++++++++++ SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs | 4 +- ...NamingScheme.cs => GeneratedNameScheme.cs} | 2 +- .../RarityAndVariationDistributionSettings.cs | 24 +++++-- 5 files changed, 87 insertions(+), 12 deletions(-) rename SynthesisRPGLoot/Settings/Enums/{CustomNamingScheme.cs => GeneratedNameScheme.cs} (90%) diff --git a/SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs b/SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs index 4f64902..1a09cb7 100644 --- a/SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs @@ -191,10 +191,7 @@ protected override FormKey EnchantItem(ResolvedListItem item, int newArmor.ObjectEffect.SetTo(generatedEnchantmentFormKey); newArmor.EnchantmentAmount = (ushort) effects.Where(e => e.Amount.HasValue).Sum(e => e.Amount.Value); - // NameGenerator code goes here: - newArmor.Name = RarityClasses[rarity].Label + " " + itemName + " of " + - GetEnchantmentsStringForName(effects); - + newArmor.Name = LabelMaker(rarity,itemName,effects); newArmor.TemplateArmor = (IFormLinkNullable) item.Resolved.ToNullableLinkGetter(); diff --git a/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs b/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs index 963452a..e2617b4 100644 --- a/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs @@ -240,6 +240,70 @@ private LeveledItem.Flag GetLeveledItemFlags() return flag; } + protected string LabelMaker(int rarity, string itemName, + ResolvedEnchantment[] effects) + { + var rarityClass = RarityClasses[rarity]; + + switch (rarityClass.GeneratedNameScheme) + { + case GeneratedNameScheme.DontUse: + { + return rarityClass.HideRarityLabelInName + ? $"{itemName} of {GetEnchantmentsStringForName(effects)}" + : $"{rarityClass.Label} {itemName} of {GetEnchantmentsStringForName(effects)}"; + } + case GeneratedNameScheme.AsItemName: + { + return rarityClass.HideRarityLabelInName + ? $"{ConfiguredNameGenerator.Next()} of {GetEnchantmentsStringForName(effects)}" + : $"{rarityClass.Label} of {GetEnchantmentsStringForName(effects)}"; + } + case GeneratedNameScheme.AsItemNameReplacingEnchantments: + { + return rarityClass.HideRarityLabelInName + ? $"{ConfiguredNameGenerator.Next()}" + : $"{rarityClass.Label} {ConfiguredNameGenerator.Next()}"; + } + case GeneratedNameScheme.AsAppendedPreviousOwnerName: + { + return rarityClass.HideRarityLabelInName + ? $"{itemName} of {GetEnchantmentsStringForName(effects)} of {ConfiguredNameGenerator.Next()}" + : $"{rarityClass.Label} {itemName} of {GetEnchantmentsStringForName(effects)} " + + $"of {ConfiguredNameGenerator.Next()}"; + } + case GeneratedNameScheme.AsAppendedPreviousOwnerNameReplacingEnchantments: + { + return rarityClass.HideRarityLabelInName + ? $"{itemName} of {ConfiguredNameGenerator.Next()}" + : $"{rarityClass.Label} {itemName} of {ConfiguredNameGenerator.Next()}"; + } + case GeneratedNameScheme.AsPrefixedPreviousOwnerName: + { + return rarityClass.HideRarityLabelInName + ? $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())}" + + $" {itemName} of {GetEnchantmentsStringForName(effects)}" + : $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())}" + + $"{rarityClass.Label} of {GetEnchantmentsStringForName(effects)}"; + } + case GeneratedNameScheme.AsPrefixedPreviousOwnerNameReplacingEnchantments: + { + return rarityClass.HideRarityLabelInName + ? $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())}" + + $"{itemName}" + : $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())}" + + $"{rarityClass.Label} {itemName}"; + } + default: + goto case GeneratedNameScheme.DontUse; + } + } + + protected string GetNameWithPossessiveS(string name) + { + return name.EndsWith('s') ? $"{name}'" : $"{name}'s"; + } + // Forgot what I wanted to use this for but will keep it just in case I ever remember // It might have been planned for a random distribution of rarities mode private int RandomRarity() diff --git a/SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs b/SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs index 146cfff..34f57bc 100644 --- a/SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs @@ -191,9 +191,7 @@ protected override FormKey EnchantItem(ResolvedListItem item, int newWeapon.ObjectEffect.SetTo(generatedEnchantmentFormKey); newWeapon.EnchantmentAmount = (ushort) effects.Where(e => e.Amount.HasValue).Sum(e => e.Amount.Value); - //NameGenerator code goes here: - newWeapon.Name = RarityClasses[rarity].Label + " " + itemName + " of " + - GetEnchantmentsStringForName(effects); + newWeapon.Name = LabelMaker(rarity,itemName,effects); newWeapon.Template = (IFormLinkNullable) item.Resolved.ToNullableLinkGetter(); diff --git a/SynthesisRPGLoot/Settings/Enums/CustomNamingScheme.cs b/SynthesisRPGLoot/Settings/Enums/GeneratedNameScheme.cs similarity index 90% rename from SynthesisRPGLoot/Settings/Enums/CustomNamingScheme.cs rename to SynthesisRPGLoot/Settings/Enums/GeneratedNameScheme.cs index b5465ea..b95793f 100644 --- a/SynthesisRPGLoot/Settings/Enums/CustomNamingScheme.cs +++ b/SynthesisRPGLoot/Settings/Enums/GeneratedNameScheme.cs @@ -1,6 +1,6 @@ namespace SynthesisRPGLoot.Settings.Enums; -public enum CustomNamingScheme +public enum GeneratedNameScheme { DontUse, AsPrefixedPreviousOwnerName, diff --git a/SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs b/SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs index 0422622..d19a965 100644 --- a/SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs +++ b/SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs @@ -26,18 +26,24 @@ a LL as a crafting target. [MaintainOrder] public GearSettings ArmorSettings = new(16,20, new() { - new() {Label = "", NumEnchantments = 1, RarityWeight = 17, AllowDisenchanting = true }, + new() {Label = "Base", HideRarityLabelInName = true, + NumEnchantments = 1, RarityWeight = 17, AllowDisenchanting = true}, new() {Label = "Rare", NumEnchantments = 2, RarityWeight = 8,AllowDisenchanting = false }, new() {Label = "Epic", NumEnchantments = 3, RarityWeight = 3, AllowDisenchanting = false }, - new() {Label = "Legendary", NumEnchantments = 4, RarityWeight = 1,AllowDisenchanting = false } + new() {Label = "Legendary", + GeneratedNameScheme = GeneratedNameScheme.AsPrefixedPreviousOwnerNameReplacingEnchantments, + NumEnchantments = 4, RarityWeight = 1,AllowDisenchanting = false } }); [MaintainOrder] public GearSettings WeaponSettings = new(16,20, new() { - new() {Label = "", NumEnchantments = 1, RarityWeight = 17, AllowDisenchanting = true }, + new() {Label = "Base", HideRarityLabelInName = true, + NumEnchantments = 1, RarityWeight = 17, AllowDisenchanting = true }, new() {Label = "Rare", NumEnchantments = 2, RarityWeight = 8,AllowDisenchanting = false }, new() {Label = "Epic", NumEnchantments = 3, RarityWeight = 3, AllowDisenchanting = false }, - new() {Label = "Legendary", NumEnchantments = 4, RarityWeight = 1,AllowDisenchanting = false } + new() {Label = "Legendary", + GeneratedNameScheme = GeneratedNameScheme.AsPrefixedPreviousOwnerNameReplacingEnchantments, + NumEnchantments = 4, RarityWeight = 1,AllowDisenchanting = false } }); } @@ -75,16 +81,26 @@ public class LeveledListFlagSettings public class RarityClass : IComparable { + [MaintainOrder] [SynthesisSettingName("Rarity Label")] public string Label; + + [MaintainOrder] + public GeneratedNameScheme GeneratedNameScheme = GeneratedNameScheme.DontUse; + + [MaintainOrder] + public bool HideRarityLabelInName = false; + [MaintainOrder] [SynthesisSettingName("Number of Enchantments")] public int NumEnchantments; + [MaintainOrder] [SynthesisSettingName("Rarity Weight")] [SynthesisTooltip("The higher the number the more likely it is" + "\nthat an item gets generated with that rarity.")] public short RarityWeight; + [MaintainOrder] [SynthesisSettingName("Allow Disenchanting")] [SynthesisTooltip("Determines if loot of this rarity can be disenchanted.")] public bool AllowDisenchanting = true; From dd2df73b351f159de82219eae15f44619980dd15 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Mon, 14 Oct 2024 00:42:54 +0200 Subject: [PATCH 17/22] fix missing space in the name. --- SynthesisRPGLoot/Analyzers/GearAnalyzer.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs b/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs index e2617b4..d10c78f 100644 --- a/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs @@ -281,17 +281,17 @@ protected string LabelMaker(int rarity, string itemName, case GeneratedNameScheme.AsPrefixedPreviousOwnerName: { return rarityClass.HideRarityLabelInName - ? $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())}" + - $" {itemName} of {GetEnchantmentsStringForName(effects)}" - : $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())}" + + ? $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())} " + + $"{itemName} of {GetEnchantmentsStringForName(effects)}" + : $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())} " + $"{rarityClass.Label} of {GetEnchantmentsStringForName(effects)}"; } case GeneratedNameScheme.AsPrefixedPreviousOwnerNameReplacingEnchantments: { return rarityClass.HideRarityLabelInName - ? $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())}" + + ? $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())} " + $"{itemName}" - : $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())}" + + : $"{GetNameWithPossessiveS(ConfiguredNameGenerator.Next())} " + $"{rarityClass.Label} {itemName}"; } default: From 93adeee17306a4da535892d37d9bfad22296d745 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 23 Nov 2024 19:16:07 +0100 Subject: [PATCH 18/22] update dependencies --- SynthesisRPGLoot/SynthesisRPGLoot.csproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SynthesisRPGLoot/SynthesisRPGLoot.csproj b/SynthesisRPGLoot/SynthesisRPGLoot.csproj index b281c19..24fc443 100644 --- a/SynthesisRPGLoot/SynthesisRPGLoot.csproj +++ b/SynthesisRPGLoot/SynthesisRPGLoot.csproj @@ -7,11 +7,11 @@ - - - + + + - + From 52dc0d65867bde8a73c338aaaa22f15527404acc Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 23 Nov 2024 19:17:02 +0100 Subject: [PATCH 19/22] Add Settings documentation to README.md And Update Setting Names --- README.md | 67 ++++++++++++++----- SynthesisRPGLoot/Analyzers/GearAnalyzer.cs | 4 +- .../Generators/ConfiguredNameGenerator.cs | 2 +- ...orSettings.cs => NameGeneratorSettings.cs} | 2 +- .../RarityAndVariationDistributionSettings.cs | 4 +- SynthesisRPGLoot/Settings/Settings.cs | 5 +- .../SyllaboreSettings/SyllableSettings.cs | 8 +-- 7 files changed, 65 insertions(+), 27 deletions(-) rename SynthesisRPGLoot/Settings/{NamingGeneratorSettings.cs => NameGeneratorSettings.cs} (97%) diff --git a/README.md b/README.md index a5048e5..36b0b0a 100644 --- a/README.md +++ b/README.md @@ -32,12 +32,6 @@ Any mention of weight is equivalent to the `count` property of leveled lists. - **Default:** `42` - Basically a Key to make the randomness repeatable, as long as your leveled lists, enchantments and weapons in the list don't change. - - **Enchantment Separator:** - - **Default:** `, ` - - Separator used for listing all enchantments on labels - - **Last Enchantment Separator:** - - **Default:** ` and ` - - Separator used for the last two enchantments listed on labels - **LeveledList Flags List:** - Information about those flags can be found on [en.uesp.net](https://en.uesp.net/wiki/Skyrim:Leveled_Lists) (they are named slightly different) and [ck.uesp.net](https://ck.uesp.net/wiki/LeveledItem) @@ -46,7 +40,7 @@ Any mention of weight is equivalent to the `count` property of leveled lists. - Default because it is present in Vanilla enchanted Leveled Lists - `SpecialLoot` - **Default:** `Off` - - Effects are unknown but I wanted to give people the option to try it. + - Effects are unknown, but I wanted to give people the option to try it. - **Untouchable Equipment Keywords:** - Keywords that are on unique and/or incompatible items - Defaults: @@ -70,6 +64,7 @@ Any mention of weight is equivalent to the `count` property of leveled lists. - `Skyrim.ObjectEffect.BoundBattleaxeEnchantment` - `Skyrim.ObjectEffect.BoundBowEnchantment` - `Skyrim.ObjectEffect.BoundSwordEnchantment` + - `Dragonborn.ObjectEffect.BoundDaggerEnchantment` - The defaults here filter the visual effect enchantments as they have no gameplay impact. - **Plugin List Mode:** - Decides if the following list gets used as a blacklist or whitelist @@ -79,6 +74,7 @@ Any mention of weight is equivalent to the `count` property of leveled lists. - **Plugin List:** - **Default:** `Empty` Because you Ideally manage to get universal filters done in the Keyword and Enchantment List Settings. + - This list only impacts enchantments and not weapons or armor. - **Rarity And Variation Distribution Settings:** - **Leveled List Base** - Changes where the RPGLoot leveled lists are inserted. @@ -112,23 +108,64 @@ Any mention of weight is equivalent to the `count` property of leveled lists. - When using `AllValidUnenchantedItems` it will be the unenchanted base item. - **Rarities:** - Label: Added prefix to each generated item's name. + - Generate Name Scheme: + - The way generated names are used for the item. + - Options: + - `DontUse` + - `AsPrefixedPreviousOwnerName` + - `AsPrefixedPreviousOwnerNameReplacingEnchantments` + - `AsAppendedPreviousOwnerName` + - `AsAppendedPreviousOwnerNameReplacingEnchantments` + - `AsItemName` + - `AsItemNameReplacingEnchantments` + - Hide Rarity Label in Name: Hide the label in-game. - Num Enchantments: The number of enchantments used to define the rarity. - RarityWeight: Amount of times the rarity is put into leveled lists. - AllowDisenchanting: If not enabled new Items get the Keyword: `Skyrim.Keyword.MagicDisallowEnchanting` - **Default Rarities:** *The Base Item Rarity is included for visualizing the percentages.* - | Rarity Label | Number of Enchantments | Rarity Weight | Allow Disenchanting | *Percentage* | - |--------------|-----------------------------------|---------------|---------------------|--------------| - | *Base* | *`AllValidUnenchantedItems` => 0* | 20 | *Item Default* | ~40,8% | - | - | 1 | 17 | true | ~34,7% | - | Rare | 2 | 8 | false | ~16,3% | - | Epic | 3 | 3 | false | ~6,1% | - | Legendary | 4 | 1 | false | ~2,1% | + | Rarity Label | Generated Name Scheme | Hide Rarity Label in Name | Number of Enchantments | Rarity Weight | Allow Disenchanting | *Percentage* | + |--------------|----------------------------------------------------|---------------------------|-----------------------------------|---------------|---------------------|--------------| + | *Base* | --- | --- | *`AllValidUnenchantedItems` => 0* | 20 | *Item Default* | ~40,8% | + | Basic | `DontUse` | `ON` | 1 | 17 | true | ~34,7% | + | Rare | `DontUse` | `OFF` | 2 | 8 | false | ~16,3% | + | Epic | `DontUse` | `OFF` | 3 | 3 | false | ~6,1% | + | Legendary | `AsPrefixedPreviousOwnerNameReplacingEnchantments` | `OFF` | 4 | 1 | false | ~2,1% | - The formula for translating this into percentages is: `Weight_of_Rarity/Sum_of_Base_And_Rarity_Weights` (The base item weight is considered a rarity in this context) - *Disclaimer: The percentages won't be 100% reflected like this in gameplay since they only account for the chances introduced by this patcher and need to be considered on top of the vanilla/base chances of your setup to get either normal or enchanted gear depending on the `Leveled List Base` that was chosen in the previous - settings. Additionally the various filters for what are valid items will effect those percentages as well.* + settings. However, the various filters for what are valid items will affect those percentages as well.* +- **Name Generator Settings** + - **Enchantment Separator:** + - **Default:** `, ` + - Separator used for listing all enchantments on labels + - **Last Enchantment Separator:** + - **Default:** ` and ` + - Separator used for the last two enchantments listed on labels + - **Random Name Generator (powered by [Syllabore](https://github.com/kesac/Syllabore)) Settings:** + - Syllable Character Settings: + - Configurations for the types of characters that should be used for generating the syllables that will be used to form names. + - Probabilities: + - Percentage chances for how the characters get used with `1` being 100% and `0` being 0%. (so `0.95` = 95%) + - Filters: + - Rules used to filter unwanted character combinations. + - **If a filter is created that filters too broadly or maybe every possible name the generator can make with the previous settings then you can end up in an endless loop of the patcher being stuck trying to generate a new name that passes the filters!** + - **Do Not Allow:** + - List of rules that aren't allowed to be part of an outputted name. + - Can be normal text but is best used for RegEx rules of patterns that are unwanted in your names. + - **Do Not Allow Start:** + - List of character combinations that aren't allowed to be at the start of an outputted name. + - Can only be text. + - **Do Not Allow Substring:** + - List of character combinations that aren't allowed to be in an outputted name. + - Can only be text. + - **Do Not Allow End:** + - List of character combinations that aren't allowed to at the end of an outputted name. + - Can only be text. + +If you want to get a more technical understanding of how those settings work please use the documentation for [Syllabore](https://github.com/kesac/Syllabore). +I tried my best to keep the setting names as close as possible to what Syllabore uses internally so they should still make sense even if you don't understand the code examples fully. diff --git a/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs b/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs index d10c78f..2827262 100644 --- a/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs @@ -59,10 +59,10 @@ public abstract class GearAnalyzer Program.Settings.GeneralSettings.LeveledListFlagSettings; private readonly string _enchantmentSeparatorString = - Program.Settings.NamingGeneratorSettings.EnchantmentSeparator; + Program.Settings.NameGeneratorSettings.EnchantmentSeparator; private readonly string _lastEnchantmentSeparatorString = - Program.Settings.NamingGeneratorSettings.LastEnchantmentSeparator; + Program.Settings.NameGeneratorSettings.LastEnchantmentSeparator; protected string EditorIdPrefix; diff --git a/SynthesisRPGLoot/Generators/ConfiguredNameGenerator.cs b/SynthesisRPGLoot/Generators/ConfiguredNameGenerator.cs index 25a12fb..f53fa65 100644 --- a/SynthesisRPGLoot/Generators/ConfiguredNameGenerator.cs +++ b/SynthesisRPGLoot/Generators/ConfiguredNameGenerator.cs @@ -11,7 +11,7 @@ public class ConfiguredNameGenerator : NameGenerator public ConfiguredNameGenerator(int seedSalt) { Random random = new(Program.Settings.GeneralSettings.RandomGenerationSeed+seedSalt); - var syllaboreSettings = Program.Settings.NamingGeneratorSettings.SyllaboreSettings; + var syllaboreSettings = Program.Settings.NameGeneratorSettings.SyllaboreSettings; //Add Syllable Settings var syllableGenerator = new DefaultSyllableGenerator(); diff --git a/SynthesisRPGLoot/Settings/NamingGeneratorSettings.cs b/SynthesisRPGLoot/Settings/NameGeneratorSettings.cs similarity index 97% rename from SynthesisRPGLoot/Settings/NamingGeneratorSettings.cs rename to SynthesisRPGLoot/Settings/NameGeneratorSettings.cs index 9673de9..8a579ce 100644 --- a/SynthesisRPGLoot/Settings/NamingGeneratorSettings.cs +++ b/SynthesisRPGLoot/Settings/NameGeneratorSettings.cs @@ -8,7 +8,7 @@ namespace SynthesisRPGLoot.Settings; -public class NamingGeneratorSettings +public class NameGeneratorSettings { [MaintainOrder] [SynthesisSettingName("Enchantment Separator")] diff --git a/SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs b/SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs index d19a965..2d34458 100644 --- a/SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs +++ b/SynthesisRPGLoot/Settings/RarityAndVariationDistributionSettings.cs @@ -26,7 +26,7 @@ a LL as a crafting target. [MaintainOrder] public GearSettings ArmorSettings = new(16,20, new() { - new() {Label = "Base", HideRarityLabelInName = true, + new() {Label = "Basic", HideRarityLabelInName = true, NumEnchantments = 1, RarityWeight = 17, AllowDisenchanting = true}, new() {Label = "Rare", NumEnchantments = 2, RarityWeight = 8,AllowDisenchanting = false }, new() {Label = "Epic", NumEnchantments = 3, RarityWeight = 3, AllowDisenchanting = false }, @@ -37,7 +37,7 @@ a LL as a crafting target. [MaintainOrder] public GearSettings WeaponSettings = new(16,20, new() { - new() {Label = "Base", HideRarityLabelInName = true, + new() {Label = "Basic", HideRarityLabelInName = true, NumEnchantments = 1, RarityWeight = 17, AllowDisenchanting = true }, new() {Label = "Rare", NumEnchantments = 2, RarityWeight = 8,AllowDisenchanting = false }, new() {Label = "Epic", NumEnchantments = 3, RarityWeight = 3, AllowDisenchanting = false }, diff --git a/SynthesisRPGLoot/Settings/Settings.cs b/SynthesisRPGLoot/Settings/Settings.cs index 9f3418f..1580f98 100644 --- a/SynthesisRPGLoot/Settings/Settings.cs +++ b/SynthesisRPGLoot/Settings/Settings.cs @@ -12,9 +12,10 @@ public class Settings [MaintainOrder] public EnchantmentSettings EnchantmentSettings = new(); - [MaintainOrder] public NamingGeneratorSettings NamingGeneratorSettings = new(); - [MaintainOrder] public RarityAndVariationDistributionSettings RarityAndVariationDistributionSettings = new(); + + [MaintainOrder] public NameGeneratorSettings NameGeneratorSettings = new(); + } } \ No newline at end of file diff --git a/SynthesisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs b/SynthesisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs index aac4fac..6458ad2 100644 --- a/SynthesisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs +++ b/SynthesisRPGLoot/Settings/SyllaboreSettings/SyllableSettings.cs @@ -32,10 +32,10 @@ public class SyllableSettings "Modifies if just one consonants list gets used or if you define the onsets and codas in AdvancedMode.")] [SynthesisTooltip( "Modifies if just one consonants list gets used or if you define the onsets and codas in AdvancedMode.")] - public ConsonantRulesMode ConsonantRulesMode = ConsonantRulesMode.AdvancedMode; + public ConsonantRulesMode ConsonantRulesMode = ConsonantRulesMode.BasicMode; [MaintainOrder] - [SynthesisSettingName("Usable Consonants (Basic)")] + [SynthesisSettingName("Usable Consonants [Basic]")] [SynthesisDescription("Consonants used for the Syllable generation. Ignored in advanced mode.")] [SynthesisTooltip(" Consonants used for the Syllable generation. Ignored in advanced mode.")] public List> WithConsonants = new () @@ -49,7 +49,7 @@ public class SyllableSettings }; [MaintainOrder] - [SynthesisSettingName("Onsets (Advanced)")] + [SynthesisSettingName("Onsets (Leading Consonants) [Advanced]")] [SynthesisDescription("Onsets (leading consonants) used for the Syllable generation.")] [SynthesisTooltip("Onsets (leading consonants) used for the Syllable generation.)")] public List> WithLeadingConsonants = new () @@ -63,7 +63,7 @@ public class SyllableSettings };// Onsets (Grammatically Speaking) [MaintainOrder] - [SynthesisSettingName("Codas (Advanced)")] + [SynthesisSettingName("Codas (Trailing Consonants) [Advanced]")] [SynthesisDescription("Codas (trailing consonants) used for the Syllable generation.")] [SynthesisTooltip("Codas (trailing consonants) used for the Syllable generation.)")] public List> WithTrailingConsonants = new() From 9c80bebb81e4f40fb43a8754d3c4df352a7c5321 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 23 Nov 2024 20:28:30 +0100 Subject: [PATCH 20/22] update ESP name --- SynthesisRPGLoot/Program.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SynthesisRPGLoot/Program.cs b/SynthesisRPGLoot/Program.cs index b8e0d3d..4cc0880 100644 --- a/SynthesisRPGLoot/Program.cs +++ b/SynthesisRPGLoot/Program.cs @@ -22,7 +22,7 @@ private static async Task Main(string[] args) nickname: "Settings", path: "Settings.json", out _lazySettings) - .SetTypicalOpen(GameRelease.SkyrimSE, "HalgariRpgLoot.esp") + .SetTypicalOpen(GameRelease.SkyrimSE, "SynthesisRpgLoot.esp") .Run(args); } From 8e9db1105368daacd61e222265d009bff92c1e23 Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 23 Nov 2024 20:28:39 +0100 Subject: [PATCH 21/22] update CHANGELOG.md --- CHANGELOG.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 850e29c..6fc9c43 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## Version 4.0.0 - 23.11.2024 +* Added [Syllabore](https://github.com/kesac/Syllabore) support for Name Generation +* Made the Names more variable and not fully stuck to what their EditorID would be. +* With the default settings and all the Anniversary Edition DLC Content Installed the patcher finished in ~2 minutes. +* Renamed more parts of the Patcher to Synthesis RPG Loot from Halgaris RPG Loot. + ## Version 3.2.0 - 06.04.2024 * Fixed unplayable armor and weapon records being used in the patcher @@ -7,7 +13,7 @@ * Updated Synthesis dependency ## Version 3.1.0 - 03.04.2024 -* Removed only process constructable items cause it isn't creating the limit that's intended for. +* Removed only process constructable items because it isn't creating the limit that it is intended for. * Fixes for SkyrimVR and the Plugin Header Version 1.71 ## Version 3.0.0 - 01.04.2024 From 92bfd9cf8c6504e8a6d9f7b91aa564db3bda72bd Mon Sep 17 00:00:00 2001 From: EzioTheDeadPoet <52624146+EzioTheDeadPoet@users.noreply.github.com> Date: Sat, 23 Nov 2024 21:42:58 +0100 Subject: [PATCH 22/22] cleaned logging and added setting to log even less --- CHANGELOG.md | 5 ++++- SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs | 17 ++++++++--------- SynthesisRPGLoot/Analyzers/GearAnalyzer.cs | 3 --- SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs | 15 +++++++-------- SynthesisRPGLoot/Settings/GeneralSettings.cs | 4 ++++ 5 files changed, 23 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fc9c43..364e2d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,11 @@ ## Version 4.0.0 - 23.11.2024 * Added [Syllabore](https://github.com/kesac/Syllabore) support for Name Generation * Made the Names more variable and not fully stuck to what their EditorID would be. -* With the default settings and all the Anniversary Edition DLC Content Installed the patcher finished in ~2 minutes. * Renamed more parts of the Patcher to Synthesis RPG Loot from Halgaris RPG Loot. +* Reduced the amount of logging and added a toggle to disable logging for individual items for better performance. + * Using the default settings and all the Anniversary Edition DLC Content Installed (On an AMD Ryzen 5 7600X CPU) + * Runtime with logging for individual items disabled 1.8 min. + * Runtime with logging for individual items enabled 2 min. ## Version 3.2.0 - 06.04.2024 * Fixed unplayable armor and weapon records being used in the patcher diff --git a/SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs b/SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs index 1a09cb7..2927cee 100644 --- a/SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/ArmorAnalyzer.cs @@ -155,8 +155,7 @@ protected override void AnalyzeGear() var newEnchantmentsForName = GetEnchantmentsStringForName(resolvedEnchantments); var enchants = AllRpgEnchants[i]; - Console.WriteLine("Generated raw " + RarityClasses[i].Label + ItemTypeDescriptor + - " enchantment of " + newEnchantmentsForName); + if (!enchants.ContainsKey(RarityClasses[i].Label + " " + newEnchantmentsForName)) { enchants.Add(RarityClasses[i].Label + " " + newEnchantmentsForName, resolvedEnchantments); @@ -184,7 +183,6 @@ protected override FormKey EnchantItem(ResolvedListItem item, int return armorGetter.FormKey; } - Console.WriteLine("Generating Enchanted version of " + itemName); var newArmor = State.PatchMod.Armors.AddNewLocking(State.PatchMod.GetNextFormKey()); newArmor.DeepCopyIn(item.Resolved); newArmor.EditorID = newArmorEditorId; @@ -199,13 +197,14 @@ protected override FormKey EnchantItem(ResolvedListItem item, int { newArmor.Keywords?.Add(Skyrim.Keyword.MagicDisallowEnchanting); } - - Console.WriteLine("Generated " + newArmor.Name); + + if (Program.Settings.GeneralSettings.LogGeneratedItems) + Console.WriteLine($"Generated {newArmor.Name}"); + return newArmor.FormKey; } else { - Console.WriteLine("Generating unenchanted version of " + itemName); var newArmorEditorId = EditorIdPrefix + item.Resolved.EditorID; if (State.LinkCache.TryResolve(newArmorEditorId, out var armorGetter)) { @@ -219,9 +218,9 @@ protected override FormKey EnchantItem(ResolvedListItem item, int newArmor.Name = RarityClasses[rarity].Label.Equals("") ? itemName : RarityClasses[rarity].Label + " " + itemName; - - Console.WriteLine("Generated " + newArmor.Name); - + + if (Program.Settings.GeneralSettings.LogGeneratedItems) + Console.WriteLine($"Generated {newArmor.Name}"); return newArmor.FormKey; } diff --git a/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs b/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs index 2827262..55e9b8a 100644 --- a/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/GearAnalyzer.cs @@ -191,8 +191,6 @@ protected FormKey GenerateEnchantment(int rarity) return objectEffectGetter.FormKey; } - Console.WriteLine("Generating " + RarityClasses[rarity].Label + ItemTypeDescriptor + " enchantment of " + - GetEnchantmentsStringForName(effects)); var newObjectEffectGetter = State.PatchMod.ObjectEffects.AddNewLocking(State.PatchMod.GetNextFormKey()); newObjectEffectGetter.DeepCopyIn(effects.First().Enchantment); newObjectEffectGetter.EditorID = objectEffectEditorId; @@ -205,7 +203,6 @@ protected FormKey GenerateEnchantment(int rarity) ChosenRpgEnchants[rarity].Add(RarityClasses[rarity].Label + " " + GetEnchantmentsStringForName(effects), newObjectEffectGetter.FormKey); ChosenRpgEnchantEffects[rarity].Add(newObjectEffectGetter.FormKey, effects); - Console.WriteLine("Enchantment Generated"); return newObjectEffectGetter.FormKey; } diff --git a/SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs b/SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs index 34f57bc..08ba9c1 100644 --- a/SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs +++ b/SynthesisRPGLoot/Analyzers/WeaponAnalyzer.cs @@ -155,8 +155,7 @@ protected override void AnalyzeGear() var newEnchantmentsForName = GetEnchantmentsStringForName(resolvedEnchantments); var enchants = AllRpgEnchants[i]; - Console.WriteLine("Generated raw " + RarityClasses[i].Label + ItemTypeDescriptor + - " enchantment of " + newEnchantmentsForName); + if (!enchants.ContainsKey(RarityClasses[i].Label + " " + newEnchantmentsForName)) { enchants.Add(RarityClasses[i].Label + " " + newEnchantmentsForName, resolvedEnchantments); @@ -184,7 +183,6 @@ protected override FormKey EnchantItem(ResolvedListItem item, int return weaponGetter.FormKey; } - Console.WriteLine("Generating Enchanted version of " + itemName); var newWeapon = State.PatchMod.Weapons.AddNewLocking(State.PatchMod.GetNextFormKey()); newWeapon.DeepCopyIn(item.Resolved); newWeapon.EditorID = newWeaponEditorId; @@ -200,12 +198,13 @@ protected override FormKey EnchantItem(ResolvedListItem item, int newWeapon.Keywords?.Add(Skyrim.Keyword.MagicDisallowEnchanting); } - Console.WriteLine("Generated " + newWeapon.Name); + if (Program.Settings.GeneralSettings.LogGeneratedItems) + Console.WriteLine($"Generated {newWeapon.Name}"); + return newWeapon.FormKey; } else { - Console.WriteLine("Generating unenchanted version of " + itemName); var newWeaponEditorId = EditorIdPrefix + item.Resolved.EditorID; if (State.LinkCache.TryResolve(newWeaponEditorId, out var weaponGetter)) { @@ -218,9 +217,9 @@ protected override FormKey EnchantItem(ResolvedListItem item, int newWeapon.Name = RarityClasses[rarity].Label.Equals("") ? itemName : RarityClasses[rarity].Label + " " + itemName; - - Console.WriteLine("Generated " + newWeapon.Name); - + + if (Program.Settings.GeneralSettings.LogGeneratedItems) + Console.WriteLine($"Generated {newWeapon.Name}"); return newWeapon.FormKey; } diff --git a/SynthesisRPGLoot/Settings/GeneralSettings.cs b/SynthesisRPGLoot/Settings/GeneralSettings.cs index fef297e..f8802e4 100644 --- a/SynthesisRPGLoot/Settings/GeneralSettings.cs +++ b/SynthesisRPGLoot/Settings/GeneralSettings.cs @@ -14,6 +14,10 @@ namespace SynthesisRPGLoot.Settings; public class GeneralSettings { [MaintainOrder] public int RandomGenerationSeed = 42; + + [MaintainOrder] + [SynthesisTooltip("Disabling this can speed up the generation process.")] + public bool LogGeneratedItems = true; [MaintainOrder] [SynthesisSettingName("LeveledList Flags")]