Skip to content

Commit c17410c

Browse files
committed
Initial
1 parent 5fec41e commit c17410c

File tree

9 files changed

+256
-0
lines changed

9 files changed

+256
-0
lines changed

.editorconfig

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[*]
2+
charset = utf-8
3+
end_of_line = crlf
4+
5+
[*.cs]
6+
7+
# CS4014: Task not awaited
8+
dotnet_diagnostic.CS4014.severity = error
9+
10+
# CS1998: Async function does not contain await
11+
dotnet_diagnostic.CS1998.severity = silent

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,3 +341,9 @@ ASALocalRun/
341341

342342
# Local History for Visual Studio
343343
.localhistory/
344+
345+
# BeatPulse healthcheck temp database
346+
healthchecksdb
347+
348+
# Backup folder for Package Reference Convert tool in Visual Studio 2017
349+
MigrationBackup/

CoinTweaker.sln

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
Microsoft Visual Studio Solution File, Format Version 12.00
2+
# Visual Studio Version 16
3+
VisualStudioVersion = 16.0.30330.147
4+
MinimumVisualStudioVersion = 10.0.40219.1
5+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CoinTweaker", "CoinTweaker\CoinTweaker.csproj", "{8BA2E1B7-DD65-42B6-A780-17E4037A3C1B}"
6+
EndProject
7+
Global
8+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
9+
Debug|Any CPU = Debug|Any CPU
10+
Release|Any CPU = Release|Any CPU
11+
EndGlobalSection
12+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
13+
{8BA2E1B7-DD65-42B6-A780-17E4037A3C1B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
14+
{8BA2E1B7-DD65-42B6-A780-17E4037A3C1B}.Debug|Any CPU.Build.0 = Debug|Any CPU
15+
{8BA2E1B7-DD65-42B6-A780-17E4037A3C1B}.Release|Any CPU.ActiveCfg = Release|Any CPU
16+
{8BA2E1B7-DD65-42B6-A780-17E4037A3C1B}.Release|Any CPU.Build.0 = Release|Any CPU
17+
EndGlobalSection
18+
GlobalSection(SolutionProperties) = preSolution
19+
HideSolutionNode = FALSE
20+
EndGlobalSection
21+
GlobalSection(ExtensibilityGlobals) = postSolution
22+
SolutionGuid = {90118F33-A2CD-4EB2-A591-548A90A59065}
23+
EndGlobalSection
24+
EndGlobal

CoinTweaker/CoinTweaker.csproj

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<OutputType>Exe</OutputType>
4+
<TargetFramework>net5.0</TargetFramework>
5+
<TargetPlatformIdentifier>Windows</TargetPlatformIdentifier>
6+
</PropertyGroup>
7+
8+
<ItemGroup>
9+
<PackageReference Include="Mutagen.Bethesda" Version="0.29.2" />
10+
<PackageReference Include="Mutagen.Bethesda.FormKeys.SkyrimSE" Version="2.0.0" />
11+
<PackageReference Include="Mutagen.Bethesda.Synthesis" Version="0.18.3" />
12+
</ItemGroup>
13+
</Project>

CoinTweaker/Program.cs

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using Mutagen.Bethesda;
5+
using Mutagen.Bethesda.Synthesis;
6+
using Mutagen.Bethesda.Skyrim;
7+
using Mutagen.Bethesda.FormKeys.SkyrimSE;
8+
using System.Threading.Tasks;
9+
using CoinTweaker.Settings;
10+
using CoinTweaker.Utils;
11+
12+
//object.EditorID checks the name
13+
14+
namespace CoinTweaker
15+
{
16+
public class Program
17+
{
18+
static Lazy<GeneralSettings> _Settings = null!;
19+
static GeneralSettings Settings => _Settings.Value;
20+
21+
public static async Task<int> Main(string[] args)
22+
{
23+
return await SynthesisPipeline.Instance
24+
.AddPatch<ISkyrimMod, ISkyrimModGetter>(RunPatch)
25+
.SetAutogeneratedSettings("Settings", "Settings.json", out _Settings)
26+
.SetTypicalOpen(GameRelease.SkyrimSE, "SynMundu.esp")
27+
.Run(args);
28+
}
29+
30+
public class CoinsToModify
31+
{
32+
public static List<TestObject> CoinWeightList = new List<TestObject>(new TestObject[] {
33+
new TestObject("Gold001", Settings.Name.RenameVanillaGoldCoinTo, Settings.Weight.VanillaGoldWeight, 1),
34+
new TestObject("Gold002", Settings.Name.RenameCoinsofTamrielSilverCoinTo, Settings.Weight.CoinsofTamrielSilverCoinWeight, Settings.Value.RevalueCoinsofTamrielSilverCoinTo),
35+
new TestObject("Gold003", Settings.Name.RenameCoinsofTamrielGoldCoinTo, Settings.Weight.CoinsofTamrielGoldCoinWeight, Settings.Value.RevalueCoinsofTamrielGoldCoinTo),
36+
new TestObject("nl_CursedCoin", Settings.Name.RenameNarrativeLootAncientCoinTo, Settings.Weight.NarrativeLootAncientCoinWeight, Settings.Value.RevalueNarrativeLootAncientCoinTo),
37+
new TestObject("BSKAyleidGold001", Settings.Name.RenameBeyondSkyrimAyleidCoinTo, Settings.Weight.BeyondSkyrimAyleidCoinWeight, Settings.Value.RevalueBeyondSkyrimAyleidCoinTo),
38+
new TestObject("AAAA_DwarvenCoin", Settings.Name.RenameUniqueCoinsDwarvernCoinTo, Settings.Weight.UniqueCoinsDwarvernCoinWeight, Settings.Value.RevalueUniqueCoinsDwarvernCoinTo),
39+
new TestObject("AAAA_NordicCoin", Settings.Name.RenameUniqueCoinsNordicCoinTo, Settings.Weight.UniqueCoinsNordicCoinWeight, Settings.Value.RevalueUniqueCoinsNordicCoinTo),
40+
});
41+
}
42+
43+
public static void RunPatch(IPatcherState<ISkyrimMod, ISkyrimModGetter> state)
44+
{
45+
foreach (IMiscItemGetter item in state.LoadOrder.PriorityOrder.WinningOverrides<IMiscItemGetter>())
46+
{
47+
foreach (var CoinObject in CoinsToModify.CoinWeightList)
48+
{
49+
if (!item.EditorID?.Contains(CoinObject.EditorID, StringComparison.OrdinalIgnoreCase) ?? true) continue;
50+
Console.WriteLine($"Modifying found Coin: {item.Name}");
51+
52+
var SelectedItem = state.PatchMod.MiscItems.GetOrAddAsOverride(item);
53+
54+
if (Settings.Weight.ReweightCoins == true)
55+
SelectedItem.Weight = CoinObject.Weight;
56+
if (Settings.Name.RenameCoins == true)
57+
SelectedItem.Name = CoinObject.Name;
58+
if (Settings.Value.RevalueCoins == true)
59+
SelectedItem.Value = CoinObject.Value;
60+
}
61+
}
62+
}
63+
}
64+
}
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using Mutagen.Bethesda.Synthesis.Settings;
7+
8+
namespace CoinTweaker.Settings
9+
{
10+
public class GeneralSettings
11+
{
12+
[SynthesisOrder]
13+
public WeightSettings Weight = new();
14+
15+
[SynthesisOrder]
16+
public NameSettings Name = new();
17+
18+
[SynthesisOrder]
19+
public ValueSettings Value = new();
20+
}
21+
22+
public class WeightSettings
23+
{
24+
[SynthesisOrder]
25+
public bool ReweightCoins = true;
26+
27+
[SynthesisOrder]
28+
public float VanillaGoldWeight = 0.005f;
29+
30+
[SynthesisOrder]
31+
public float CoinsofTamrielSilverCoinWeight = 0.008f;
32+
33+
[SynthesisOrder]
34+
public float CoinsofTamrielGoldCoinWeight = 0.012f;
35+
36+
[SynthesisOrder]
37+
public float NarrativeLootAncientCoinWeight = 0.008f;
38+
39+
[SynthesisOrder]
40+
public float BeyondSkyrimAyleidCoinWeight = 0.008f;
41+
42+
[SynthesisOrder]
43+
public float UniqueCoinsNordicCoinWeight = 0.012f;
44+
45+
[SynthesisOrder]
46+
public float UniqueCoinsDwarvernCoinWeight = 0.012f;
47+
48+
}
49+
50+
public class NameSettings
51+
{
52+
[SynthesisOrder]
53+
public bool RenameCoins = true;
54+
55+
[SynthesisOrder]
56+
public string RenameVanillaGoldCoinTo = "Septim";
57+
58+
[SynthesisOrder]
59+
public string RenameCoinsofTamrielSilverCoinTo = "Silver Septim";
60+
61+
[SynthesisOrder]
62+
public string RenameCoinsofTamrielGoldCoinTo = "Gold Septim";
63+
64+
[SynthesisOrder]
65+
public string RenameNarrativeLootAncientCoinTo = "Ancient Coin";
66+
67+
[SynthesisOrder]
68+
public string RenameBeyondSkyrimAyleidCoinTo = "Ayleid Mala";
69+
70+
[SynthesisOrder]
71+
public string RenameUniqueCoinsNordicCoinTo = "Ancient Nordic Coin";
72+
73+
[SynthesisOrder]
74+
public string RenameUniqueCoinsDwarvernCoinTo = "Dwemer Coin";
75+
}
76+
77+
public class ValueSettings
78+
{
79+
[SynthesisOrder]
80+
public bool RevalueCoins = true;
81+
82+
[SynthesisOrder]
83+
public uint RevalueCoinsofTamrielSilverCoinTo = 25;
84+
85+
[SynthesisOrder]
86+
public uint RevalueCoinsofTamrielGoldCoinTo = 100;
87+
88+
[SynthesisOrder]
89+
public uint RevalueNarrativeLootAncientCoinTo = 62;
90+
91+
[SynthesisOrder]
92+
public uint RevalueBeyondSkyrimAyleidCoinTo = 1;
93+
94+
[SynthesisOrder]
95+
public uint RevalueUniqueCoinsDwarvernCoinTo = 10;
96+
97+
[SynthesisOrder]
98+
public uint RevalueUniqueCoinsNordicCoinTo = 5;
99+
}
100+
}

CoinTweaker/SynthesisMeta.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"Nickname": "CoinTweaker",
3+
"Visibility": "Visible",
4+
"OneLineDescription": "Synthesis Patcher for tweaking the weight, value and names of coins from a selection of mods.",
5+
"LongDescription": "This Patcher allows tweaking of weight, value and names of coins from the following mods (none required): Vanilla, Beyond Skyrim: Bruma, Narrative Loot, Unique Coins & Coins of Tamriel.",
6+
"PreferredAutoVersioning": "Default",
7+
"RequiredMods": []
8+
}

CoinTweaker/Utils.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace CoinTweaker.Utils
8+
{
9+
public struct TestObject
10+
{
11+
public string EditorID;
12+
public string Name;
13+
public float Weight;
14+
public uint Value;
15+
16+
public TestObject(string EditorID, string Name, float Weight, uint Value)
17+
{
18+
this.EditorID = EditorID;
19+
this.Name = Name;
20+
this.Weight = Weight;
21+
this.Value = Value;
22+
}
23+
}
24+
}

Directory.Build.props

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<Project>
2+
<PropertyGroup>
3+
<Nullable>enable</Nullable>
4+
<WarningsAsErrors>nullable</WarningsAsErrors>
5+
</PropertyGroup>
6+
</Project>

0 commit comments

Comments
 (0)