I ran into an error running synthesis. any ideas? I tried adding Hephaestus.esp to the blacklist but no dice. Note: I have a colossal load order. oopsie doopsie uwu too many items in this leveled list System.Collections.Generic.KeyNotFoundException: The given key '005BF6:Hephaestus.esp' was not present in the dictionary.
So how would Hephaestus interact with OWL? Is the way OWL adds things to leveled lists somehow incompatible with this mod? Not quite there in my modding knowledge to answer this.
What does the mod check items for leveled lists? I had to add modded armor/weapons that don’t have a leveled list through ‘Automated Leveled List Additions’ though they never generated a schematic for either. Also thank you for this mod. It may worked for some mods and it helped balanced gear distribution in my play throughs.
Hello, it checks for items that have a COBJ and are present in leveled lists. Sadly programs like that automated LVLI additions one work at runtime, way after this patcher does its patching. I'd have to rewrite the mod to work at runtime too to affect mods like that. I am working on a new revision now that isn't built around LVLIs though, but not sure when I'll have time to finish that and release it. It mostly worked, if you want to give it a try use the other branch from the github project.
I'm waiting patiently for the new version. I tried this and unfortunately I still have a lot of armors from Sentinel and modded armors in the forge. It would be perfect to get a version that includes every armor with a crafting recipe. Thank you for all your work!
Hi, I'm running it but it's erroring and wont finish. After building cache I get this:
Assigning item types and prepping things ... Patching for Potion of Blood ... System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index') at System.Collections.Generic.List`1.get_Item(Int32 index) at Hephaestus.Program.RunPatch(IPatcherState`2 state) in C:\Users\tommu\AppData\Local\Temp\Synthesis\gd0ai23y.13p\Git\54k4gmx5.c0t\Runner\Hephaestus\Program.cs:line 391 at Mutagen.Bethesda.Synthesis.SynthesisPipeline.<>c__DisplayClass16_0`2.<<AddPatch>b__0>d.MoveNext() in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 106 --- End of stack trace from previous location --- at Mutagen.Bethesda.Synthesis.SynthesisPipeline.Run(RunSynthesisMutagenPatcher args, Nullable`1 exportKey, IFileSystem fileSystem) in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 631 at Mutagen.Bethesda.Synthesis.SynthesisPipeline.<>c__DisplayClass45_0.<<Run>b__0>d.MoveNext() in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 496 --- End of stack trace from previous location --- at Mutagen.Bethesda.Synthesis.SynthesisPipeline.HandleOnShutdown(Func`1 a) in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 881 at Mutagen.Bethesda.Synthesis.SynthesisPipeline.Run(RunSynthesisMutagenPatcher args, IFileSystem fileSystem) in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 484 at Mutagen.Bethesda.Synthesis.SynthesisPipeline.<>c__DisplayClass44_0.<<InternalRun>b__1>d.MoveNext() in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 456
Hey, uh, not sure if you figured it out already, but the culprit of this is Sacrosanct/Sacrilege and their bloody blood potions, recommend ditching it for Scion or some other vampire overhaul that doesn't add any pretty much uncraftable potions:v
That would probably require re-writing this patcher for it, it's not an impossible task but I'm currently struggling to find energy to push the next major update out for this as is.
FWIW, it's probably not possible. I was looking into rewriting something in Skypatcher recently, and it's quite simplistic. I don't think it could handle anything like this, unless you had a patcher to generate a custom Skypatcher patch, which would just make things worse.
I'm having an issue where certain armors and weapons are not being detected from Hephaestus, and thus show up as normal in crafting menus. I might have missed some, but here are the ones I've caught.
I don't think this is just an issue with them not appearing in leveled lists, as some definitely do, so they should be detected by Hephaestus. Thoughts? Worst cones to worst, I suppose I can edit some of the existing schematics to cover these missing bases.
it'll depend on the item keywords and the settings of the patcher. I suggest running the patcher again, with debug log on, and searching through the log for those items in particular.
Did that, and they don't even show up in the patcher. The things I changed from default in the settings was add some blacklists (not for these items, but for tools for Spell Research) disable crafting schematics for cookpots (I use Gourmet to cover those), and increase schematic drop rates to 10%.
As an aside, I went digging through Xedit to see if I could spot something on the Synthesis.esp, and ran into some record overwrites that I'm not sure if I should be alarmed about or not. I've included an example below, but there were dozens more like it. Most schematic and breakdown recipes used their own records, so I'm assuming this might not be normal behavior. Overwrite
EDIT: I also frequently get this error when trying to run Synthesis only with this synth file. Sometimes, even though I seem to change nothing, it does go through and this error doesn't happen.
Spoiler:
Show
System.IO.IOException: The process cannot access the file 'C:\Aurora\Game Root\Data\Synthesis.esp' because it is being used by another process. at System.IO.FileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite) at System.IO.FileInfo.CopyTo(String destFileName, Boolean overwrite) at System.IO.Abstractions.FileInfoWrapper.CopyTo(String destFileName, Boolean overwrite) at Noggog.IFileSystemExt.DeepCopy(IDirectory system, DirectoryPath from, DirectoryPath to, Boolean overwrite) in D:\a\CSharpExt\CSharpExt\Noggog.CSharpExt\Extensions\IFileSystemExt.cs:line 165 at Synthesis.Bethesda.Execution.Running.Runner.MoveFinalResults.Move(FilePath finalPatch, DirectoryPath outputPath) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Running\Runner\MoveFinalResults.cs:line 50 at Synthesis.Bethesda.Execution.Running.Runner.RunAGroup.Run(IGroupRun groupRun, CancellationToken cancellation, DirectoryPath outputDir, RunParameters runParameters) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Running\Runner\RunAGroup.cs:line 65 at Synthesis.Bethesda.Execution.Running.Runner.RunAllGroups.Run(IGroupRun[] groups, CancellationToken cancellation, DirectoryPath outputDir, RunParameters runParameters) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Running\Runner\RunAllGroups.cs:line 34 at Synthesis.Bethesda.Execution.Running.Runner.ExecuteRun.Run(IGroupRun[] groups, CancellationToken cancellation, DirectoryPath outputDir, RunParameters runParameters) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Running\Runner\ExecuteRun.cs:line 49 at Synthesis.Bethesda.GUI.Services.Profile.Running.ExecuteGuiRun.Run(IEnumerable`1 groupRuns, PersistenceMode persistenceMode, Boolean localize, Boolean utf8InEmbeddedStrings, Nullable`1 headerVersionOverride, FormIDRangeMode formIDRangeMode, Language targetLanguage, CancellationToken cancel) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.GUI\Services\Profile\Running\ExecuteGuiRun.cs:line 51 at Synthesis.Bethesda.GUI.ViewModels.Profiles.Running.RunVm.<Run>b__39_1(Unit _) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.GUI\ViewModels\Profiles\Running\RunVm.cs:line 209
"The only issue I have is that the tempering feature doesn't work, even though I choose that I need the schematic for tempering. I can still temper armor and weapons."
You can go through and manually exclude certain plugins and make two separate plugins for the two sets. The only mod I've seen that the too many leveled list error in, is "Immersive Jewelry", and nothing I did with it made it compatible with this synthesis patcher. By that I mean it starts to generate the leveled list for all of IT'S 1000+ pieces of jewelry and errors out, even with excluding a VERY large number of items manually using the config for Hephaestus. I just dropped Immersive Jewelry, as this seems much more appealing.
I always try starting a new game when I add in hephaestus... half the npcs are naked still. I found a fix to just resetinventory in the configs a few times for each of the declothed npcs
EDIT: I found out the problem. When it puts a schematic in somebody's inventory, it replaces whatever was in their inventory that the scematic makes. So if they come at me swinging their fists, then chances are they have a weapon schematic instead of the actual weapon
EDIT 2: I guess it only does that sometimes? Just fought a naked bandit who had no armor schematics
Hmm usually the game gives you everything from a particular list of items though, not just one item, that's what confuses me. The most obvious cause for these issues would be the Outfit LVLIs only distributing the schematic parts and not the armour parts, but they're usually set up as sets and distributed to guards and the like as sets... It certainly requires more investigation
68 comments
I tried adding Hephaestus.esp to the blacklist but no dice.
Note: I have a colossal load order.
oopsie doopsie uwu too many items in this leveled list
System.Collections.Generic.KeyNotFoundException: The given key '005BF6:Hephaestus.esp' was not present in the dictionary.
Assigning item types and prepping things ...
Patching for Potion of Blood ...
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at System.Collections.Generic.List`1.get_Item(Int32 index)
at Hephaestus.Program.RunPatch(IPatcherState`2 state) in C:\Users\tommu\AppData\Local\Temp\Synthesis\gd0ai23y.13p\Git\54k4gmx5.c0t\Runner\Hephaestus\Program.cs:line 391
at Mutagen.Bethesda.Synthesis.SynthesisPipeline.<>c__DisplayClass16_0`2.<<AddPatch>b__0>d.MoveNext() in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 106
--- End of stack trace from previous location ---
at Mutagen.Bethesda.Synthesis.SynthesisPipeline.Run(RunSynthesisMutagenPatcher args, Nullable`1 exportKey, IFileSystem fileSystem) in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 631
at Mutagen.Bethesda.Synthesis.SynthesisPipeline.<>c__DisplayClass45_0.<<Run>b__0>d.MoveNext() in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 496
--- End of stack trace from previous location ---
at Mutagen.Bethesda.Synthesis.SynthesisPipeline.HandleOnShutdown(Func`1 a) in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 881
at Mutagen.Bethesda.Synthesis.SynthesisPipeline.Run(RunSynthesisMutagenPatcher args, IFileSystem fileSystem) in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 484
at Mutagen.Bethesda.Synthesis.SynthesisPipeline.<>c__DisplayClass44_0.<<InternalRun>b__1>d.MoveNext() in D:\a\Synthesis\Synthesis\Mutagen.Bethesda.Synthesis\Pipeline\SynthesisPipeline.cs:line 456
Since I'm apparently not the only one, I'll send in a pull request.
From Synergy
Improved Bonemold Set
Bonemold Guard Armor
Falmer Boots
Falmer Curiass
Falmer Guantles
Falmer Helmet
Falmer Shield
Falmer Bow
Blades Set
Blades Sword
From Dawnguard
Dragonbone Dagger
Dragonbone Greatsword
Dragonbone Sword
Dragonbone War Axe
Dragonbone Warhammer
I don't think this is just an issue with them not appearing in leveled lists, as some definitely do, so they should be detected by Hephaestus. Thoughts? Worst cones to worst, I suppose I can edit some of the existing schematics to cover these missing bases.
As an aside, I went digging through Xedit to see if I could spot something on the Synthesis.esp, and ran into some record overwrites that I'm not sure if I should be alarmed about or not. I've included an example below, but there were dozens more like it. Most schematic and breakdown recipes used their own records, so I'm assuming this might not be normal behavior.
Overwrite
EDIT:
I also frequently get this error when trying to run Synthesis only with this synth file. Sometimes, even though I seem to change nothing, it does go through and this error doesn't happen.
at System.IO.FileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite)
at System.IO.FileInfo.CopyTo(String destFileName, Boolean overwrite)
at System.IO.Abstractions.FileInfoWrapper.CopyTo(String destFileName, Boolean overwrite)
at Noggog.IFileSystemExt.DeepCopy(IDirectory system, DirectoryPath from, DirectoryPath to, Boolean overwrite) in D:\a\CSharpExt\CSharpExt\Noggog.CSharpExt\Extensions\IFileSystemExt.cs:line 165
at Synthesis.Bethesda.Execution.Running.Runner.MoveFinalResults.Move(FilePath finalPatch, DirectoryPath outputPath) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Running\Runner\MoveFinalResults.cs:line 50
at Synthesis.Bethesda.Execution.Running.Runner.RunAGroup.Run(IGroupRun groupRun, CancellationToken cancellation, DirectoryPath outputDir, RunParameters runParameters) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Running\Runner\RunAGroup.cs:line 65
at Synthesis.Bethesda.Execution.Running.Runner.RunAllGroups.Run(IGroupRun[] groups, CancellationToken cancellation, DirectoryPath outputDir, RunParameters runParameters) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Running\Runner\RunAllGroups.cs:line 34
at Synthesis.Bethesda.Execution.Running.Runner.ExecuteRun.Run(IGroupRun[] groups, CancellationToken cancellation, DirectoryPath outputDir, RunParameters runParameters) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.Execution\Running\Runner\ExecuteRun.cs:line 49
at Synthesis.Bethesda.GUI.Services.Profile.Running.ExecuteGuiRun.Run(IEnumerable`1 groupRuns, PersistenceMode persistenceMode, Boolean localize, Boolean utf8InEmbeddedStrings, Nullable`1 headerVersionOverride, FormIDRangeMode formIDRangeMode, Language targetLanguage, CancellationToken cancel) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.GUI\Services\Profile\Running\ExecuteGuiRun.cs:line 51
at Synthesis.Bethesda.GUI.ViewModels.Profiles.Running.RunVm.<Run>b__39_1(Unit _) in D:\a\Synthesis\Synthesis\Synthesis.Bethesda.GUI\ViewModels\Profiles\Running\RunVm.cs:line 209
For the "file used by another process" i've seen that a few times, restarting synthesis makes it go away usually.
I combine it with Smithing Crafting Manuals, and it works wonderfully.
Edit:
"The only issue I have is that the tempering feature doesn't work, even though I choose that I need the schematic for tempering. I can still temper armor and weapons."
Also I'm getting this error:
System.Collections.Generic.KeyNotFoundException: The given key '0009D0:SynCrafting.esp' was not present in the dictionary.
"SynCrafting" is the name of my synthesis patch
EDIT: I found out the problem. When it puts a schematic in somebody's inventory, it replaces whatever was in their inventory that the scematic makes. So if they come at me swinging their fists, then chances are they have a weapon schematic instead of the actual weapon
EDIT 2: I guess it only does that sometimes? Just fought a naked bandit who had no armor schematics