Sadly not working as of now, getting the following error when building
System.NotImplementedException: Writing with compression enabled is not currently supported. https://github.com/Mutagen-Modding/Mutagen/issues/235 at Mutagen.Bethesda.Plugins.Binary.Translations.ModHeaderWriteLogic.<>c.<AddCompressionCheck>b__31_0(IMajorRecordGetter maj) at Mutagen.Bethes
Letters, Recipes (Atronach Forge Recipes and Gourmet Recipes), Fishing Maps, Missives (from Missives mod) weight 1.5 unit, they have the same weight as Black Books.
The overall value of the Septim wasn't changed in TRE (there are actually very few price changes; food is cheaper and clothing is more expensive, that's it) so whatever you consider balanced for vanilla should work fine.
It's working for me... make sure you have the User Settings options to patch value, weight, and the various item types checked, and aren't expecting too much.
This is a randomly-picked food item in xEdit, and you can see the patch is correctly doubling the weight and halving the value. The value ends up back where it started because Gourmet is doubling it first, but that's the intended function.
Actually, I was apparently wrong. Version 1.2 may reduce the number of masters, and allows generating patches for just specific types of items, which should make it possible to split it into multiple patches using Synthesis's "groups" feature. Hopefully that works for you, if not it may be possible to add support for splitting it by number of items or something.
I looked into it, and unfortunately it's not possible to accurately rewrite this in SkyPatcher. TRE contains more complicated changes than SkyPatcher's simple find-replace model supports, plus SkyPatcher has no support for game settings patching.
You can support larger modlists by tweaking your patcher code a bit. Everytime you call var newItem = state.PatchMod.xxx.GetOrAddAsOverride(item); you already create a copy of that record in your patch and reference potentially a new master. Delay that to the last possible moment, when you know you want to change something.
You also don't need those lines:state.PatchMod.xxx.Set(newItem);
It's enough to modify "newItem" in this case.
There may be rare cases for very large modlists with tons of added items, where even this change will not be enough. The next improvement could then be to extent your configuration to allow your patcher to run on individual record types. Synthesis patchers can be included multiple times in different patch groups (they just need to be renamed) each with their own configuration. This way even a split in multiple patch plugins would be possible.
Ok, changes made. Thanks for the tips. This is my first time writing for Synthesis, and I got a lot of it reading other peoples' code, which isn't always the best source.
I've held off on breaking it down by record types at the moment, but I'll definitely keep that in mind if reducing record creation isn't enough. Edit: It wasn't much work, so I went ahead and added that too.
I'd gotten the impression Synthesis was supposed to trim identical-to-override records and unnecessary masters, but I guess that was incorrect, or at least it doesn't always do a great job of it.
I looked into it, and unfortunately it's not possible to accurately rewrite this in SkyPatcher. TRE contains more complicated changes than SkyPatcher's simple find-replace model supports, plus SkyPatcher has no support for game settings patching.
Compiling solution "D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj" Preparing to build "D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj" No extra data to consider Queuing build for "D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj" Starting build for "D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj" ("D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE"): "dotnet" "build \"TRE.csproj\" --runtime win-x64 -c Release" Finished build for "D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj" Failed to compile solution D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj Synthesis.Bethesda.Execution.SynthesisBuildFailure: Unknown Error (1): Microsoft (R) Build Engine version 17.2.0+41abc5629 for .NET Copyright (C) Microsoft Corporation. All rights reserved.
Determining projects to restore... C:\Program Files\dotnet\sdk\6.0.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0. Either target .NET 6.0 or lower, or use a version of the .NET SDK that supports .NET 8.0. [D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj]
Build FAILED.
C:\Program Files\dotnet\sdk\6.0.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0. Either target .NET 6.0 or lower, or use a version of the .NET SDK that supports .NET 8.0. [D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj] 0 Warning(s) 1 Error(s)
Time Elapsed 00:00:00.32 at Synthesis.Bethesda.Execution.Patchers.Running.Solution.SolutionPatcherPrep.<>c__DisplayClass11_0.<<Prep>b__0>d.MoveNext() in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Patchers\Running\Solution\SolutionPatcherPrep.cs:line 42 --- End of stack trace from previous location --- at Synthesis.Bethesda.Execution.Patchers.Running.Solution.SolutionPatcherPrep.Prep(CancellationToken cancel) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Patchers\Running\Solution\SolutionPatcherPrep.cs:line 33 at Synthesis.Bethesda.Execution.Patchers.Running.Solution.SolutionPatcherRun.Prep(CancellationToken cancel) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Patchers\Running\Solution\SolutionPatcherRun.cs:line 45 at Synthesis.Bethesda.Execution.Running.Runner.PrepPatcherForRun.<>c__DisplayClass5_0.<<Prep>b__0>d.MoveNext() in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Running\Runner\PrepPatcherForRun.cs:line 33
You've got the NET6 SDK installed probably. This patcher (and the newest Synthesis systems in general) have moved onto NET8 Just download and install the latest NET SDK https://github.com/Mutagen-Modding/Synthesis/wiki/Installation#install-net-80-sdk
20 comments
System.NotImplementedException: Writing with compression enabled is not currently supported. https://github.com/Mutagen-Modding/Mutagen/issues/235
at Mutagen.Bethesda.Plugins.Binary.Translations.ModHeaderWriteLogic.<>c.<AddCompressionCheck>b__31_0(IMajorRecordGetter maj)
at Mutagen.Bethes
This is a randomly-picked food item in xEdit, and you can see the patch is correctly doubling the weight and halving the value. The value ends up back where it started because Gourmet is doubling it first, but that's the intended function.
Version 1.2 may reduce the number of masters, and allows generating patches for just specific types of items, which should make it possible to split it into multiple patches using Synthesis's "groups" feature.
Hopefully that works for you, if not it may be possible to add support for splitting it by number of items or something.
I'm running 2500++ plugins, my armor and weapons alone around 350+ plugins, which is a core component required for the patch
If not, the patch can only cover Vanilla weapons and armors weight
+1 on the skypatcher
TRE contains more complicated changes than SkyPatcher's simple find-replace model supports, plus SkyPatcher has no support for game settings patching.
You can support larger modlists by tweaking your patcher code a bit. Everytime you call
var newItem = state.PatchMod.xxx.GetOrAddAsOverride(item);
you already create a copy of that record in your patch and reference potentially a new master. Delay that to the last possible moment, when you know you want to change something.You also don't need those lines:
state.PatchMod.xxx.Set(newItem);
It's enough to modify "newItem" in this case.
There may be rare cases for very large modlists with tons of added items, where even this change will not be enough. The next improvement could then be to extent your configuration to allow your patcher to run on individual record types. Synthesis patchers can be included multiple times in different patch groups (they just need to be renamed) each with their own configuration. This way even a split in multiple patch plugins would be possible.
Nice work btw.
I've held off on breaking it down by record types at the moment, but I'll definitely keep that in mind if reducing record creation isn't enough.Edit: It wasn't much work, so I went ahead and added that too.
I'd gotten the impression Synthesis was supposed to trim identical-to-override records and unnecessary masters, but I guess that was incorrect, or at least it doesn't always do a great job of it.
TRE contains more complicated changes than SkyPatcher's simple find-replace model supports, plus SkyPatcher has no support for game settings patching.
Preparing to build "D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj"
No extra data to consider
Queuing build for "D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj"
Starting build for "D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj"
("D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE"): "dotnet" "build \"TRE.csproj\" --runtime win-x64 -c Release"
Finished build for "D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj"
Failed to compile solution D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj
Synthesis.Bethesda.Execution.SynthesisBuildFailure: Unknown Error (1): Microsoft (R) Build Engine version 17.2.0+41abc5629 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.
Determining projects to restore...
C:\Program Files\dotnet\sdk\6.0.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0. Either target .NET 6.0 or lower, or use a version of the .NET SDK that supports .NET 8.0. [D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj]
Build FAILED.
C:\Program Files\dotnet\sdk\6.0.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(144,5): error NETSDK1045: The current .NET SDK does not support targeting .NET 8.0. Either target .NET 6.0 or lower, or use a version of the .NET SDK that supports .NET 8.0. [D:\Program Files for Modding\Synthesis\Data\Skyrim Special Edition\True Renaissance Economy\TRE\TRE.csproj]
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:00.32
at Synthesis.Bethesda.Execution.Patchers.Running.Solution.SolutionPatcherPrep.<>c__DisplayClass11_0.<<Prep>b__0>d.MoveNext() in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Patchers\Running\Solution\SolutionPatcherPrep.cs:line 42
--- End of stack trace from previous location ---
at Synthesis.Bethesda.Execution.Patchers.Running.Solution.SolutionPatcherPrep.Prep(CancellationToken cancel) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Patchers\Running\Solution\SolutionPatcherPrep.cs:line 33
at Synthesis.Bethesda.Execution.Patchers.Running.Solution.SolutionPatcherRun.Prep(CancellationToken cancel) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Patchers\Running\Solution\SolutionPatcherRun.cs:line 45
at Synthesis.Bethesda.Execution.Running.Runner.PrepPatcherForRun.<>c__DisplayClass5_0.<<Prep>b__0>d.MoveNext() in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Running\Runner\PrepPatcherForRun.cs:line 33
Is there anything I need to do to solve this?
Just download and install the latest NET SDK https://github.com/Mutagen-Modding/Synthesis/wiki/Installation#install-net-80-sdk