
Mods / Trait Acquirer
Author: Arkhael
Side: Both
Created: Aug 9th 2024 at 7:53 PM
Last modified: Dec 14th 2024 at 9:39 PM
Downloads: 26318
Follow Unfollow 337
Latest release (for outdated Vintage Story v1.20.0-pre - v1.20.3):
traitacquirer_0.9.6.zip
1-click install
Adds trait manuals that can be found in various game structures or purchased from the Treasure Trader to acquire the exclusive crafting recipes from each class.
Also adds two server commands to add or remove any extra traits, though this has no effect on class traits.
Config allows setting permission level for the commands as well as disabling the manuals altogether.
To make your own items that add and remove Extra Traits the item needs the class "traitacquirer.ItemTraitManual" and the attribute "traitdata" containing the arrays "add" and "remove" with all lowercase trait names in the relevant array for what you want. See the source for the trait-manual.json that does this for the mod.
New 0.9.4: Trait Exclusivity & ListTraits Command
Traits can be made exclusive with one another by adding to the trait the "ExclusiveWith" array containing the trait codes for exclusive traits. This can be added to new traits or patched onto the default ones as needed.
Example:
{
"file": "game:config/traits",
"op": "addmerge",
"path": "/-",
"value": {
"code": "testExclusive",
"type": "mixed",
"attributes": {},
"exclusivewith": ["clothier", "technical"]
}
}
Be warned that the prevention mechanism is unable to be bypassed so items that add mutually exclusive traits will be unusable, it does take into account removals however so removing an exclusive trait at the same time as you add the other is possible.
All currently loaded traits can be listed alphabetically with the "/listtraits" command, this is a lot of text even with just the default 26. Will be replaced in future with a handbook page that lists trait properties as well as exclusivities to make it easier to keep track from in-game. Replaced with the custom handbook pages in 0.9.6
New 0.9.5: Trader & Loot Configurability
Quite simple really (Though implementing it isn't), trader price and stock for manuals is configurable and as are the odds and rates of their appearing in the gear randomizer. Currently all manuals are treated the same to not bloat the config file or require too much work as the manuals aren't anywhere close to their final form.
New 0.9.6: Handbook Update
A new Handbook tab has been added which contains automatically generated pages for each trait giving details as to what effects it has, which traits it is exclusive with and the code needed for use with the commands. It also generates a page for each type of trait: Positive, Mixed and Negative. This page links to all of the traits in that type for easier navigation.
Also in this update are:
Fixes for the application of trait effects, as well as a simplification of the code that does this to hopefully improve stability in multiplayer
Improvement of the commands, including a new flag to allow forced bypassing of the exclusivity rules (Note that if you have a non-compatible trait until it is removed you will not be able to gain new traits without forcing it)
Updating trader patches for 1.20, this unfortunately breaks the trader patches on older versions of the game so if you're running 1.19 and desperately want the patches to work use the old ones from 0.9.5 instead, the error messages from the patch won't break anything else just the trader stuff
ToDo:
Class Manual Models and Textures
Particle & Sound effects when using a manual
More manuals to acquire the non-crafting traits through gameplay, likely with custom traits to balance addition and removal of powerful traits.
Configurable prices and drop rates for manuals
In-game class changing items
Handbook page listing traits and their details
Proper Documentation on making new content intended for this mod
Randomizer item to make acquiring traits more interesting <== Currently Working On
Issue Tracker
Compatability Confirmed with:
Division of Labour https://mods.vintagestory.at/divisionoflabor
More Class Traits https://mods.vintagestory.at/show/mod/15539
Combat Overhaul https://mods.vintagestory.at/combatoverhaul
Incompatible (Cannot load traits, not is unusable) with:
Gardenerz https://mods.vintagestory.at/show/mod/11187
Shoutout to the TraitLearner mod for having and achieving the idea in an earlier version. I considered taking over maintenance of it but the mod system has changed so much since then it was easier to just start from scratch.
https://mods.vintagestory.at/show/mod/1119
Version | For Game version | Downloads | Release date | Changelog | Download | 1-click mod install* |
---|---|---|---|---|---|---|
v0.9.6 | 23430 | Dec 14th 2024 at 9:39 PM | Show | traitacquirer_0.9.6.zip | 1-click install | |
v0.9.5 | 1295 | Oct 9th 2024 at 3:36 PM | Show | traitacquirer_0.9.5.zip | 1-click install | |
v0.9.4 | 157 | Oct 7th 2024 at 4:15 PM | Show | traitacquirer_0.9.4.zip | 1-click install | |
v0.9.3 | 645 | Sep 18th 2024 at 12:03 PM | Show | traitacquirer_0.9.3.zip | 1-click install | |
v0.9.2 | 791 | Aug 13th 2024 at 1:04 PM | Show | traitacquirer_0.9.2.zip | 1-click install |
wanted to check if you are aware of this issue with rustbounds magic trait eldritchinsight thats been disabled causing crasting with your mod?
I removed this trait fully this past update. This is why I have the Trait Acquirer section in the mod db page here and why I was against this mod messing with my mod's traits. This is the reason why. That traits mod needs to do a trait check as it loops through them to see if that trait exists before trying to use/assign it.
For now you can manually uncomment out the trait in "rustboundmagic/patches/disabled-trait-patch-eldritchinsight.json" until trait acquirer or what ever is using that trait fixes that. That or just log in, and try to remove the trait in your world from that mod? Then you would be fine from there with future updates.
Can't use the book. And after right clicking and opening the Trait tab the game crashes.
Am using Minerz for the miner class. Maybe that's the issue. As it's already incompatible with Gardenerz.
Shame. Really. Wonder why it's even like that.
Arkhael
So I have the config settings to zero to disallow books in traders and in loot.
I wish to use them as quest based rewards only. Yet, they are still appearing in loot and trader shops - even though the config numbers are all set to zero.
What am I missing?
Maybe a stuiped question but how do I use the books I find in ruins?
As an example
--------
"Worn Survival Manual"
Contains the knowloedge required to male simple weapons
--------
It feels like the handbook doesnt have all traits. I only see 4 types of books.
Hello. Someone in the discord server mentioned that for some funny reason the books we find that has a 0 written on it, means we didnt really find the book. Something to do with the random value that sometimes is less than 1, meaning the chest tried to spawn a book but it was not sucessfull.
System.Collections.Generic.KeyNotFoundException: The given key 'ability-catcher' was not present in the dictionary.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at traitacquirer.traitacquirerModSystem.<>c__DisplayClass22_0.b__4(String code) in VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerModSystem.cs:line 274
at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count)
at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
at System.Linq.OrderedEnumerable`1.GetEnumerator()+MoveNext()
at traitacquirer.traitacquirerModSystem.getClassTraitText() in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerModSystem.cs:line 277
at traitacquirer.traitacquirerModSystem.composeTraitsTab(GuiComposer compo) in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerModSystem.cs:line 205
at Vintagestory.Client.NoObf.GuiDialogCharacter.ComposeGuis() in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogCharacter.cs:line 128
at Vintagestory.Client.NoObf.GuiDialogCharacter.onTabClicked(Int32 tabindex) in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogCharacter.cs:line 151
at Vintagestory.API.Client.GuiElementHorizontalTabs.SetValue(Int32 selectedIndex, Boolean callhandler) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementHorizontalTabs.cs:line 288
at Vintagestory.API.Client.GuiElementHorizontalTabs.OnMouseDownOnElement(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementHorizontalTabs.cs:line 271
at Vintagestory.API.Client.GuiComposer.OnMouseDown(MouseEvent mouseArgs) in VintagestoryApi\Client\UI\GuiComposer.cs:line 480
at Vintagestory.API.Client.GuiDialog.OnMouseDown(MouseEvent args) in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 559
at Vintagestory.Client.NoObf.GuiDialogCharacter.OnMouseDown(MouseEvent args) in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogCharacter.cs:line 158
at Vintagestory.Client.NoObf.GuiManager.OnMouseDown(MouseEvent args) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 390
at Vintagestory.Client.NoObf.ClientMain.UpdateMouseButtonState(EnumMouseButton button, Boolean down) in VintagestoryLib\Client\ClientMain.cs:line 1958
at Vintagestory.Client.HotkeyManager.TriggerHotKey(KeyEvent keyEventargs, IWorldAccessor world, IPlayer player, Boolean allowCharacterControls, Boolean isGlobal, Boolean fallBack, Boolean keyup) in VintagestoryLib\Client\HotkeyManager.cs:line 431
at Vintagestory.Client.NoObf.ClientPlatformWindows.Mouse_ButtonDown(MouseButtonEventArgs e) in VintagestoryLib\Client\ClientPlatform\Input.cs:line 198
at OpenTK.Windowing.Desktop.NativeWindow.MouseButtonCallback(Window* window, MouseButton button, InputAction action, KeyModifiers mods)
--- End of stack trace from previous location ---
at OpenTK.Windowing.Desktop.NativeWindow.RethrowCallbackExceptionsIfNeeded()
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 334
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 130
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93
And also most books that I find in chests have 0 and I can't them pickup
How can I find the commands?
Hello. Im getting an issue where I find a traint book in a chest from better ruins, but it its written 0 in its icon, and I cant get it.
Is it possible to aquire multiple traits?
i had bowyer trait learned as a commoner then consumed a book for clothier trait and bowyer went away, is this intentional?
I have an issue where the screen where tells me what traits I have dows not roll all the way down cutting off the rest of my traits
any way to fix that ?
https://imgur.com/xUh9evJ
Hello, I was curious to see if there is a cap of how many traits you can learn through this mod. For example can I aquire all of the class traits and any additional traits, or is it limited to 6 traits maximum? Thanks.
There is a trait called "Professor" and it describes itself as a trait that allows you to craft trait books, is it part of this mod? If so, I can't seem to see any recipes that craft trait books in the guides
Because people keep asking for the Server Command which you can add / remove traits with (its in /help scroll around)
For yourself
/aquiretrait someTrait
and you can remove one with:
/aquiretrait someTrait rm
For Someone else
/aquiretrait someTrait Steve
You get the idea
It seems someone has already reported this issue but on our server Bowyer trait is lost on reconnecting to the server. Doesnt seem to happen to any other trait.
I have the same issue as Shinji170981
https://postimg.cc/KRnMKKtn
you cant grab the books with "0" stacks in it there are stuck where they are
Man, I want this compatible with Rustbound Magic 😍
maybe All Classes too..
We keep finding books like this on our server with the current version.
https://drive.google.com/file/d/1BFunAPoCccBMJst7t5I5iNgdN2KEzdnU/view?usp=drive_link
We keep finding books like this on our server with the current version.
0 stack books
Aloy Thanks! I literally just figured it out myself too! It's actually a good thing they don't trigger immediately since they are consumed
Hey Arkhael!
If I understand how your mod works correctly, it comes with a collection of prepackaged traits. Have you considered removing the prepackaged trait books and transferring them to an add-on mod if that's the case? I'd like to use your mod as a dependency, but I don't want servers/players using it to have to include a default set of trait books just to have my trait book. Great thing you did here, looking forward to seeing more.
Vinter
I'm in a new server, with mod v0.9.6 and I'm still finding 0 quantity books in loot. Wasn't this supposed to hav ebene fixed in the last update?
Someone know how to get the Trait overview of the Charater window bigger? I have curretnly 9 extra traits aquired wit the books but the last trait cant be displayed in full length. Scrolling further down is not possible.
Crashes with Xskills "Catcher" ability
traitacquirer@0.9.6
System.Collections.Generic.KeyNotFoundException: The given key 'ability-catcher' was not present in the dictionary.
Endurance i found holding down right click for a few seconds works, like 3-5 or so
Would be nice if there was a way to make it auto-generate trait books for recognized traits. Maybe with like an individual toggle off/on in the mod settings.
Aloy I wondered the same thing and experimented for a bit. I only had one book to try but I'm pretty sure it's left mouse button plus right mouse button at the same time.
How do I even use this? Right clicking does nothing
Been experiencing this issue where every time I acquire a trait through a book, I lose the additional traint when disconnecting and reconnecting to the server (No server reset)
For now was only able to test with Bowyer. Friend who acquired the Blackguard Code trait did not lose trait upon disconnecting however so it might be a specific issue with Bowyer?
Game ver 1.20.4, latest mod ver. too
The books with 0 on them seems to be because the spawn chance is literally saying '.75 and 1' of the book should spawn OR that the books contain 0 pages, with a max of 1 page.
Under 'assets\traitacquirer\patches\stackrandomizerPatch.json' I changed the code to be this per book
{
"code": "traitacquirer:trait-manual-book-blackguard",
"type": "item",
"quantity": { avg: 2, var: 1 },
"chance": 30
},
Under 'assets\traitacquirer\itemtypes\utility\trait-manual.json'
I think I removed the page count line, "maxPageCount": 1, for them too.
Since I did both of these I'm not sure if both were required or just one/other.
Dankbud Kirona FrazierFr
0 book
I had the same issue as Dankbud. I was able to get the book into my hotbar by putting another item on its slot in a loot container, but when I tried to use the book it simply disappeared. But I couldn't pick it up directly and it had a big zero on it as described.
Trait books just return "Trait is Null" after trying to read them.
every time i find a trait book in a chest it has a zero stack count and is unlootable. cant click it or do anything with it other than hover over it to read its name and description.
Is there a command to remove a trait?
Are you also using Working Classes or Combat Overhaul?, I have done some testing myself and with working classes I was able to duplicate this last night whilst using combat overhaul, working classes and this mod. However today after lots of testing with just this mod and then adding others on slowly, I can't replicate again.
It might be an incompatibility with WC (my theory) but I can't be sure. propaneko
Is it possible to add extra trait books into this? I am using workingclass and have been trying to add the millwright and blacksmith bonus recipe traits as a book, I've added the class names to the trait-manual.json, stackradomiserPatch.json and treasureTraderPatch.json and the language en.json
Is there somewhere else to edit as they are showing up as items in creative but not in the traders inventory. Any help would be appreciated Arkhael
EDIT Solved
The way the mod is currently set up, you have to add the following code to the traderpatch as many times as you added books:
Arkhael Heya we have an issue with the bowyer trait, it always removes itself after the player reconnects to the server with others its fine..
@Arkhael Would it be possible to add functionality for the Exclusivity of traits to check the character class traits as well as the extra traits?
Arkhael getting this error whenever i open class tab on my character sheet:
Running on 64 bit Windows 10.0.19045.0 with 49065 MB RAM
Game Version: v1.20.4 (Stable)
2025-02-14 4:12:17 PM: Critical error occurred in the following mod: traitacquirer@0.9.6
Loaded Mods: aculinaryartillery@1.2.3, ancientarmory@1.0.6, autosifter@1.1.0, backpackpackpluscontinued@1.0.0, bettercrates@1.8.0, betterloot@1.1.1, bettertraders@0.0.9, chiseltools@1.14.11, combatoverhaul@0.1.26, DeepStorage@0.0.6, DiamondTools@2.0.4, dodgemaster@1.1.0, edeninstinct@0.1.0, expandedmolds@1.1.1, FlexibleTools@3.3.1, geoaddons@1.4.0, icensaltchest@0.0.1, immersiveorecrush@2.1.3, increasedstoragecapacity@0.0.2, instantpickup@1.0.2, litbrig@0.7.3, ludicrousbackpackcapacity@0.0.1, manualquenching@1.0.4, manualscraping@1.2.1, manualtoolcrafting@1.3.1, millwright@1.1.8, morebanners@1.2.1, MoreTorchHolders@1.0.0, natseasystonebricks@1.0.1, nocharcoallost@1.0.0, OresAPlenty@3.3.0, TA_plainsandvalleys@1.0.9, primitivesurvival@3.7.5, qolcraft@2.1.2, Sergsmetaltongs@2.0.0, sortablestorage@2.2.9, stoneharvesting@1.0.5, TemporalTechnology@1.0.8, temporal_gears_stack@1.0.0, toolsextended@1.1.0, translocatorengineeringredux@1.5.4, game@1.20.4, vsimgui@1.1.7, weaponpackalphaunoff@1.6.0, alchemy@1.6.42, animalcages@3.0.3, metalrecoveryrevived@0.1.20, armory@0.1.6, egocaribautomapmarkers@4.0.1, betterbloomeriesreborn@1.0.5, betterfirepit@1.1.5, betterjonasdevicesfixed@2.0.1, betterruins@0.4.6, blastfurnace@1.0.0, blocksoverlay@4.0.4, BreakOreWithRocks@1.0.0, butchering@1.7.8, carryon@1.8.0-pre.1, commonlib@2.6.1, composter@1.1.1, configlib@1.4.4, configureeverything@2.1.3, danatweaks@3.3.12, electricity@0.0.12, expandedfoods@1.7.3, extrainfo@1.9.6, foodshelves@1.5.1, fromgoldencombs@1.8.11-rc.2, glowingarrows@1.2.2, hydrateordiedrate@1.7.4, knapster@2.13.2, maltiezcrossbows@0.6.5, maltiezfirearms@0.10.7, manualdough@1.1.2, medievalexpansionwaterwheelstonksminuscows@1.0.1, petai@3.0.1, rustboundmagic@2.2.1, simplefootstepsredux@1.0.1, smithingplus@1.1.8, spawnersapi@1.1.2, statushudcont@3.2.5, stonebakeoven@1.1.5, storageoptions@1.0.2, tarmor@2.0.2, th3dungeon@0.4.0, tradermult@1.0.0, traitacquirer@0.9.6, tstools@2.3.0, vanvar@6.0.8, vanity@2.3.1, creative@1.20.4, survival@1.20.4, waypointtogethercontiued@2.2.0, wildfarmingrevival@1.3.4, woodenfortifications@2.0.4, xlib@0.8.11, xrayblock@1.0.0, advancedchests@0.2.4, autoconfiglib@2.0.4, battletowers@1.0.6, campaigncartographer@4.2.4, tradercamps@1.1.5, electricityaddon@0.0.17, electricityextensions@0.0.8, em@3.0.0, itemrarity@1.1.2, oregolems@0.1.7, playercorpse@1.11.0, shearlib@1.1.2, stonequarry@3.4.3, th3dungeontopentrance@0.4.0, thriftysmithing@1.2.0, xskills@0.8.14, tailorsdelight@1.9.1, theworkingclasses@1.0.2, wool@1.5.2
System.Collections.Generic.KeyNotFoundException: The given key 'ability-catcher' was not present in the dictionary.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at traitacquirer.traitacquirerModSystem.<>c__DisplayClass22_0.<getClassTraitText>b__4(String code) in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerModSystem.cs:line 274
at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count)
at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
at System.Linq.OrderedEnumerable`1.GetEnumerator()+MoveNext()
at traitacquirer.traitacquirerModSystem.getClassTraitText() in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerModSystem.cs:line 277
at traitacquirer.traitacquirerModSystem.composeTraitsTab(GuiComposer compo) in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerModSystem.cs:line 205
at Vintagestory.Client.NoObf.GuiDialogCharacter.ComposeGuis() in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogCharacter.cs:line 128
at Vintagestory.Client.NoObf.GuiDialogCharacter.onTabClicked(Int32 tabindex) in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogCharacter.cs:line 151
at Vintagestory.API.Client.GuiElementHorizontalTabs.SetValue(Int32 selectedIndex, Boolean callhandler) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementHorizontalTabs.cs:line 288
at Vintagestory.API.Client.GuiElementHorizontalTabs.OnMouseDownOnElement(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementHorizontalTabs.cs:line 271
at Vintagestory.API.Client.GuiComposer.OnMouseDown(MouseEvent mouseArgs) in VintagestoryApi\Client\UI\GuiComposer.cs:line 469
at Vintagestory.API.Client.GuiDialog.OnMouseDown(MouseEvent args) in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 559
at Vintagestory.Client.NoObf.GuiDialogCharacter.OnMouseDown(MouseEvent args) in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogCharacter.cs:line 158
at Vintagestory.Client.NoObf.GuiManager.OnMouseDown(MouseEvent args) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 393
at Vintagestory.Client.NoObf.ClientMain.UpdateMouseButtonState(EnumMouseButton button, Boolean down) in VintagestoryLib\Client\ClientMain.cs:line 1908
at Vintagestory.Client.SystemHotkeys.OnPrimaryMouseButton(KeyCombination mb) in VintagestoryLib\Client\Systems\Player\Hotkeys.cs:line 50
at Vintagestory.Client.HotkeyManager.TriggerHotKey(KeyEvent keyEventargs, IWorldAccessor world, IPlayer player, Boolean allowCharacterControls, Boolean isGlobal, Boolean fallBack, Boolean keyup) in VintagestoryLib\Client\HotkeyManager.cs:line 431
at Vintagestory.Client.HotkeyManager.TriggerHotKey(KeyEvent keyEventargs, IWorldAccessor world, IPlayer player, Boolean allowCharacterControls, Boolean keyUp) in VintagestoryLib\Client\HotkeyManager.cs:line 395
at Vintagestory.Client.HotkeyManager.OnMouseButton(ClientMain game, EnumMouseButton button, Int32 modifiers, Boolean buttonDown) in VintagestoryLib\Client\HotkeyManager.cs:line 574
at Vintagestory.Client.NoObf.ClientMain.OnMouseDownRaw(MouseEvent args) in VintagestoryLib\Client\ClientMain.cs:line 1878
at Vintagestory.Client.GuiScreenRunningGame.OnMouseDown(MouseEvent args) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 337
at Vintagestory.Client.ScreenManager.OnMouseDown(MouseEvent e) in VintagestoryLib\Client\ScreenManager.cs:line 906
at Vintagestory.Client.NoObf.ClientPlatformWindows.Mouse_ButtonDown(MouseButtonEventArgs e) in VintagestoryLib\Client\ClientPlatform\Input.cs:line 201
at OpenTK.Windowing.Desktop.NativeWindow.OnMouseDown(MouseButtonEventArgs e)
at OpenTK.Windowing.Desktop.NativeWindow.MouseButtonCallback(Window* window, MouseButton button, InputAction action, KeyModifiers mods)
--- End of stack trace from previous location ---
at OpenTK.Windowing.Desktop.NativeWindow.RethrowCallbackExceptionsIfNeeded()
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 334
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 130
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93
additionally can you remove a trait?
is there a way to run a command that gives a trait? like how the soldier trait for blackguard gives an armor speed buff is there a way to manually run that command on a server/is there a book for that Arkhael
Arkhael Hey, I found an issue with trait acquirer crashing due to a trait from the Magic Mod, im not sure how this is happening
Game Version: v1.20.1 (Stable)
1/24/2025 8:21:45 PM: Critical error occurred
Loaded Mods: aculinaryartillery@1.2.3, backpackpackpluscontinued@1.0.0, bettersticks@1.2.0, bettertraders@0.0.9, buzzwords@1.7.0, combatoverhaul@0.1.12, hqzlights@1.1.1, explosive@0.0.8, geoaddons@1.4.0, long-term_food@0.1.3, MoreTorchHolders@1.0.0, primitivesurvival@3.7.5, rustandrot@1.0.6, sortablestorage@2.2.8, tprunes@1.1.1, TemporalTechnology@1.0.3, temporal_gears_stack@1.0.0, terraprety@6.0.1, translocatorengineeringredux@1.5.4, usefuldrifterloot@1.2.1, game@1.20.1, vsimgui@1.1.7, weedgardens@1.0.0, alchemy@1.6.42, animalcages@3.0.3, apelanterns@1.1.1, armory@0.1.0, betterfirepit@1.1.5, BetterProspecting@1.3.0, betterruins@0.4.5, butchering@1.7.8, canjewelry@0.4.9, carryon@1.8.0-pre.1, commonlib@2.6.1, configlib@1.4.3, coreofarts@0.1.0, danacancook@0.2.4, danatweaks@3.3.9, expandedfoods@1.7.3, extrainfo@1.9.5, foodshelves@1.4.4, fromgoldencombs@1.8.4-rc.1, herbarium@1.4.0, krpgenchantment@0.6.0, maltiezfirearms@0.10.5, mobsradar@2.1.2, noticeboard@1.1.0, onebedsleeping@2.5.1, rivers@4.1.0, smithingplus@1.1.8, statushudcont@3.2.2, storagecontroller@1.1.4, traitacquirer@0.9.6, Verticality@0.0.8, creative@1.20.1, survival@1.20.1, wildfarmingrevival@1.3.4, xlib@0.8.8, artofgrowing@0.1.1, em@3.0.0, extraoverlays@1.5.0, glassmaking@1.4.1, xskills@0.8.9, tailorsdelight@1.8.0, theworkingclasses@1.0.0, dressmakers@1.5.0
System.NullReferenceException: Object reference not set to an instance of an object.
at Vintagestory.Server.ServerMain.Stop(String reason, String finalLogMessage, EnumLogType finalLogType) in VintagestoryLib\Server\ServerMain.cs:line 1066
at Vintagestory.Client.ClientProgram.ServerThreadStart() in VintagestoryLib\Client\ClientProgram.cs:line 448
Game Version: v1.20.3 (Stable)
2/10/2025 12:11:06 AM: Critical error occurred in the following mod: traitacquirer@0.9.6
Loaded Mods: aculinaryartillery@1.2.3, backpackpackpluscontinued@1.0.0, bettersticks@1.2.0, bettertraders@0.0.9, buzzwords@1.7.0, combatoverhaul@0.1.12, hqzlights@1.1.1, explosive@0.0.8, FlexibleTools@3.3.0, bovinae@0.1.1, capreolinae@1.2.2, dinornithidae@1.0.10, elephantidae@1.0.4, pantherinae@1.1.19, sirenia@1.0.14, geoaddons@1.4.0, long-term_food@0.1.3, MoreTorchHolders@1.0.0, primitivesurvival@3.7.5, rustandrot@1.0.6, sortablestorage@2.2.8, tprunes@1.1.1, TemporalTechnology@1.0.3, temporal_gears_stack@1.0.0, terraprety@6.0.1, translocatorengineeringredux@1.5.4, usefuldrifterloot@1.2.1, game@1.20.3, vsimgui@1.1.7, weedgardens@1.0.0, alchemy@1.6.42, animalcages@3.0.3, apelanterns@1.1.1, armory@0.1.0, betterfirepit@1.1.5, BetterProspecting@1.3.0, betterruins@0.4.5, butchering@1.7.8, canjewelry@0.4.9, carryon@1.8.0-pre.1, commonlib@2.6.1, configlib@1.4.3, coreofarts@0.1.0, danacancook@0.2.4, danatweaks@3.3.9, expandedfoods@1.7.3, extrainfo@1.9.5, foodshelves@1.5.0, fromgoldencombs@1.8.4-rc.1, herbarium@1.4.0, krpgenchantment@0.6.0, maltiezfirearms@0.10.5, mobsradar@2.1.2, noticeboard@1.1.0, onebedsleeping@2.5.2, rivers@4.1.0, rustboundmagic@2.1.23, smithingplus@1.1.8, statushudcont@3.2.2, storagecontroller@1.1.4, traitacquirer@0.9.6, Verticality@0.0.8, creative@1.20.3, survival@1.20.3, wildfarmingrevival@1.3.4, xlib@0.8.8, artofgrowing@0.1.1, em@3.0.0, extraoverlays@1.5.0, glassmaking@1.4.1, xinvtweaks@1.6.9, xskills@0.8.9, artsxskills@1.0.0, tailorsdelight@1.8.0, theworkingclasses@1.0.0, dressmakers@1.5.0
System.Collections.Generic.KeyNotFoundException: The given key 'craftingrecipesmagictier1' was not present in the dictionary.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at traitacquirer.traitacquirerModSystem.<>c__DisplayClass22_0.<getClassTraitText>b__4(String code) in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerModSystem.cs:line 274
at System.Linq.EnumerableSorter`2.ComputeKeys(TElement[] elements, Int32 count)
at System.Linq.EnumerableSorter`1.Sort(TElement[] elements, Int32 count)
at System.Linq.OrderedEnumerable`1.GetEnumerator()+MoveNext()
at traitacquirer.traitacquirerModSystem.getClassTraitText() in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerModSystem.cs:line 277
at traitacquirer.traitacquirerModSystem.composeTraitsTab(GuiComposer compo) in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerModSystem.cs:line 205
at Vintagestory.Client.NoObf.GuiDialogCharacter.ComposeGuis() in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogCharacter.cs:line 128
at Vintagestory.Client.NoObf.GuiDialogCharacter.onTabClicked(Int32 tabindex) in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogCharacter.cs:line 151
at Vintagestory.API.Client.GuiElementHorizontalTabs.SetValue(Int32 selectedIndex, Boolean callhandler) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementHorizontalTabs.cs:line 288
at Vintagestory.API.Client.GuiElementHorizontalTabs.OnMouseDownOnElement(ICoreClientAPI api, MouseEvent args) in VintagestoryApi\Client\UI\Elements\Impl\Interactive\Controls\GuiElementHorizontalTabs.cs:line 271
at Vintagestory.API.Client.GuiComposer.OnMouseDown(MouseEvent mouseArgs) in VintagestoryApi\Client\UI\GuiComposer.cs:line 477
at Vintagestory.API.Client.GuiDialog.OnMouseDown(MouseEvent args) in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 559
at Vintagestory.Client.NoObf.GuiDialogCharacter.OnMouseDown(MouseEvent args) in VintagestoryLib\Client\Systems\Gui\Dialogs\GuiDialogCharacter.cs:line 158
at Vintagestory.Client.NoObf.GuiManager.OnMouseDown(MouseEvent args) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 390
at Vintagestory.Client.NoObf.ClientMain.UpdateMouseButtonState(EnumMouseButton button, Boolean down) in VintagestoryLib\Client\ClientMain.cs:line 1930
at Vintagestory.Client.HotkeyManager.TriggerHotKey(KeyEvent keyEventargs, IWorldAccessor world, IPlayer player, Boolean allowCharacterControls, Boolean isGlobal, Boolean fallBack, Boolean keyup) in VintagestoryLib\Client\HotkeyManager.cs:line 431
at Vintagestory.Client.NoObf.ClientMain.OnMouseDownRaw(MouseEvent args) in VintagestoryLib\Client\ClientMain.cs:line 1862
at Vintagestory.Client.NoObf.ClientPlatformWindows.Mouse_ButtonDown(MouseButtonEventArgs e) in VintagestoryLib\Client\ClientPlatform\Input.cs:line 198
at OpenTK.Windowing.Desktop.NativeWindow.MouseButtonCallback(Window* window, MouseButton button, InputAction action, KeyModifiers mods)
--- End of stack trace from previous location ---
at OpenTK.Windowing.Desktop.NativeWindow.RethrowCallbackExceptionsIfNeeded()
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 334
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 130
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93
I have NEVER been able to find a skill book that I could pick up. I always find stacks of 0.
I understand the update that was supposed to fix this was pushed back in December, but the issue remains. This has been on new multiplayer servers, and brand new singleplayer worlds, with the mod as downloaded last week. :(
Maybe a conflict with Working Classes?
Can you make compatibility with Combat Overhaul, Millwright and The Working Classes (some bugs now) ?
We have been using this on our server, and funtionality wise, it is working great. We have been having an issue with server restarts though. Going through the server logs, there is a lot of errors during the start up. The main one being:
4.2.2025 09:09:13 [Error] [traitacquirer] An exception was thrown when trying to start the mod:
4.2.2025 09:09:13 [Error] [traitacquirer] Exception: Type of config value is not handled
at traitacquirer.traitacquirerConfig.setConfig(ICoreAPI api, traitacquirerConfig traitacquirerConfig) in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerConfig.cs:line 92
at traitacquirer.traitacquirerConfig.loadConfig(ICoreAPI api) in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerConfig.cs:line 68
at traitacquirer.traitacquirerModSystem.Start(ICoreAPI api) in C:\Users\Roan\Documents\My Games\Games\VS\VSMods\Development\VStraitacquirer\traitacquirer\traitacquirerModSystem.cs:line 40
at Vintagestory.Common.ModLoader.TryRunModPhase(Mod mod, ModSystem system, ICoreAPI api, ModRunPhase phase) in VintagestoryLib\Common\API\ModLoader.cs:line 629
4.2.2025 09:09:13 [Error] Failed to run mod phase Start for mod traitacquirer.traitacquirerModSystem
That is then followed by:
4.2.2025 09:09:19 [Error] Patch 1 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/quantity/avg is invalid: The json path /temp/0/quantity/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 2 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/quantity/var is invalid: The json path /temp/0/quantity/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 3 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/chance is invalid: The json path /temp/0/chance was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 5 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/quantity/avg is invalid: The json path /temp/0/quantity/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 6 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/quantity/var is invalid: The json path /temp/0/quantity/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 7 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/chance is invalid: The json path /temp/0/chance was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 9 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/quantity/avg is invalid: The json path /temp/0/quantity/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 10 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/quantity/var is invalid: The json path /temp/0/quantity/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 11 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/chance is invalid: The json path /temp/0/chance was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 13 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/quantity/avg is invalid: The json path /temp/0/quantity/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 14 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/quantity/var is invalid: The json path /temp/0/quantity/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 15 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/chance is invalid: The json path /temp/0/chance was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 17 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/quantity/avg is invalid: The json path /temp/0/quantity/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 18 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/quantity/var is invalid: The json path /temp/0/quantity/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 19 (target: game:itemtypes/meta/stackrandomizer.json) in traitacquirer:patches/stackrandomizerPatch.json failed because supplied path /temp/0/chance is invalid: The json path /temp/0/chance was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 1 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/stock/avg is invalid: The json path /temp/0/stock/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 2 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/stock/var is invalid: The json path /temp/0/stock/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 3 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/price/avg is invalid: The json path /temp/0/price/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 4 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/price/var is invalid: The json path /temp/0/price/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 6 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/stock/avg is invalid: The json path /temp/0/stock/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 7 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/stock/var is invalid: The json path /temp/0/stock/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 8 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/price/avg is invalid: The json path /temp/0/price/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 9 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/price/var is invalid: The json path /temp/0/price/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 11 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/stock/avg is invalid: The json path /temp/0/stock/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 12 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/stock/var is invalid: The json path /temp/0/stock/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 13 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/price/avg is invalid: The json path /temp/0/price/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 14 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/price/var is invalid: The json path /temp/0/price/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 16 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/stock/avg is invalid: The json path /temp/0/stock/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 17 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/stock/var is invalid: The json path /temp/0/stock/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 18 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/price/avg is invalid: The json path /temp/0/price/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 19 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/price/var is invalid: The json path /temp/0/price/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 21 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/stock/avg is invalid: The json path /temp/0/stock/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 22 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/stock/var is invalid: The json path /temp/0/stock/var was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 23 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/price/avg is invalid: The json path /temp/0/price/avg was not found. No such element 'temp' at the root path
4.2.2025 09:09:19 [Error] Patch 24 (target: game:config/tradelists/trader-treasurehunter.json) in traitacquirer:patches/treasureTraderPatch.json failed because supplied path /temp/0/price/var is invalid: The json path /temp/0/price/var was not found. No such element 'temp' at the root path
Would it be possible to look at this, as I think this is what is causing the server to not restart some times.
Same issues as Camper1 with 0 book stacks.
Destyroying the chest nets nothing, but maybe that should be expected?
Please add a patch for Rustbound Magic.
Issues on 1.20.1
Bowyer trait dissapears when leaving and rejoining
Skillbooks sometimes generate in stacks of 0 in structures, can't be picked up or dropped.
https://github.com/HydraCat/VStraitacquirer/issues/7 was filed about the incompatibility with Trait Acquirer. A workaround is described at the end of the bug report.
Would you mind having a look at the mod "Rustbound Magic" (https://mods.vintagestory.at/rustboundmagic#showchangelog) and seeing if you could add a compatibility patch for it? I like your mod but I also liked Rustbound Magic way back when it was still recieving updates. Now it's been updated for 1.20 I'd like to play it again but I don't want to get rid of Trait Aquirer.
Thanks, great mod
Running on 64 bit Windows 10.0.22631.0 with 64891 MB RAM Game Version: v1.20.3 (Stable) 1/31/2025 2:44:18 PM: Critical error occurred Loaded Mods: aculinaryartillery@1.2.3, barkbeetle@1.0.2, betterandimprovedweather@0.1.0, brickmold@1.2.0, chiseltools@1.14.11, combatoverhaul@0.1.6, drtagxeary@0.0.4, expandedmolds@1.0.0, firestarters@1.3.3, geoaddons@1.4.0, hideplayerpins@1.0.0, primitivesurvival@3.7.5, slowwalkmod@1.2.2, sortablestorage@2.2.8, spyglass@0.5.2, translocatorengineeringredux@1.5.4, game@1.20.3, vsimgui@1.1.7, goblinears@2.0.0, AgeOfConfession@2.1.3, animalcages@3.0.3, armory@0.1.1, autoatlas@1.1.1, flags@1.1.5, bedspawnv2@1.3.0, betterdeathmessages@0.2.0, betterruins@0.4.6, bulwarkContinued@0.0.8, butchering@1.7.8, carryon@1.8.0-pre.1, coinage@1.12.1, commonlib@2.6.1, configlib@1.4.4, coreofarts@0.2.0, danatweaks@3.3.9, entangledinnature@1.0.4, expandedfoods@1.7.3, foodshelves@1.4.4, herbarium@1.4.0, kscartographytable@1.0.1, liquidcontainers@1.3.1, maltiezcrossbows@0.6.1, maltiezfirearms@0.10.3, nooceantranslocators@1.0.1, passthruchutes@1.0.2, petai@3.0.1, respawntools@1.4.1, rifteye@0.4.1, rivers@4.1.0, rpvoicechat@2.3.12, simpletailoring@1.1.6, SoundOfConfession@1.0.4, specialexpandedbags@1.0.4, tabletopgames@2.4.3, tentbag@2.2.0, th3dungeon@0.4.0, thievery@1.0.0, traitacquirer@0.9.6, unconscious@1.8.3, vinconomy@0.4.0-rc.4, creative@1.20.3, vsinstrumentsbase@2.0.0, survival@1.20.3, wildfarmingrevival@1.3.4, woodenfortifications@1.0.0, youvegotmail@1.0.8, cats@3.0.0, coinbelt@0.0.1, exoskeletons@0.2.1, em@3.0.0, playercorpse@1.11.0, shearlib@1.1.1, stonequarry@3.4.3, thebasics@5.0.1, vsinstruments_quackpack@1.0.0, wildcraftfruit@1.3.0, wildcraftherb@0.0.1, wolftaming@3.0.3, tailorsdelight@1.9.0, theworkingclasses@1.0.1, wool@1.5.1 System.ArgumentException: Not a valid character class code! at Vintagestory.GameContent.CharacterSystem.setCharacterClass(EntityPlayer eplayer, String classCode, Boolean initializeGear) in VSSurvivalMod\Systems\Character\Character.cs:line 232 at Vintagestory.GameContent.GuiDialogCreateCharacter.OnGuiOpened() in VSSurvivalMod\Gui\GuiDialogCreateCharacter.cs:line 313 at Vintagestory.API.Client.GuiDialog.TryOpen(Boolean withFocus) in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 298 at Vintagestory.API.Client.GuiDialog.TryOpen() in VintagestoryApi\Client\UI\Dialog\GuiDialog.cs:line 278 at Vintagestory.GameContent.GuiDialogCreateCharacter.PrepAndOpen() in VSSurvivalMod\Gui\GuiDialogCreateCharacter.cs:line 437 at Vintagestory.GameContent.CharacterSystem.onCharSelCmd(TextCommandCallingArgs textCommandCallingArgs) in VSSurvivalMod\Systems\Character\Character.cs:line 343 at Vintagestory.Common.ChatCommandImpl.CallHandler(TextCommandCallingArgs callargs, Action`1 onCommandComplete, Dictionary`2 asyncParseResults) in VintagestoryLib\Common\API\Command\ChatCommandImpl.cs:line 311 at Vintagestory.Common.ChatCommandImpl.Execute(TextCommandCallingArgs callargs, Action`1 onCommandComplete) in VintagestoryLib\Common\API\Command\ChatCommandImpl.cs:line 236 at Vintagestory.Common.ChatCommandApi.Execute(String commandName, TextCommandCallingArgs args, Action`1 onCommandComplete) in VintagestoryLib\Common\API\Command\ChatCommandApi.cs:line 99 at Vintagestory.Common.ChatCommandApi.Execute(String commandName, IClientPlayer player, Int32 groupId, String args, Action`1 onCommandComplete) in VintagestoryLib\Common\API\Command\ChatCommandApi.cs:line 185 at Vintagestory.Client.NoObf.HudDialogChat.HandleClientCommand(String message, Int32 groupid) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 853 at Vintagestory.Client.NoObf.HudDialogChat.HandleClientMessage(Int32 groupid, String message) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 866 at Vintagestory.Client.NoObf.HudDialogChat.OnNewClientToServerChatLine(Int32 groupId, String message, EnumChatType chattype, String data) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 806 at Vintagestory.Client.NoObf.ClientEventManager.TriggerNewClientChatLine(Int32 groupid, String message, EnumChatType chattype, String data) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 338 at Vintagestory.Client.NoObf.HudDialogChat.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\Systems\Gui\Huds\HudDialogChat.cs:line 578 at Vintagestory.Client.NoObf.GuiManager.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\Systems\Gui\GuiManager.cs:line 360 at Vintagestory.Client.NoObf.ClientMain.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\ClientMain.cs:line 1768 at Vintagestory.Client.GuiScreenRunningGame.OnKeyDown(KeyEvent args) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 318 at Vintagestory.Client.ScreenManager.OnKeyDown(KeyEvent e) in VintagestoryLib\Client\ScreenManager.cs:line 873 at Vintagestory.Client.NoObf.ClientPlatformWindows.game_KeyDown(KeyboardKeyEventArgs e) in VintagestoryLib\Client\ClientPlatform\Input.cs:line 247 at OpenTK.Windowing.Desktop.NativeWindow.OnKeyDown(KeyboardKeyEventArgs e) at OpenTK.Windowing.Desktop.NativeWindow.KeyCallback(Window* window, Keys key, Int32 scancode, InputAction action, KeyModifiers mods) --- End of stack trace from previous location --- at OpenTK.Windowing.Desktop.NativeWindow.RethrowCallbackExceptionsIfNeeded() at OpenTK.Windowing.Desktop.NativeWindow.ProcessWindowEvents(Boolean waitForEvents) at OpenTK.Windowing.Desktop.GameWindow.Run() at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 334 at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 130 at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93 Event Log entries for Vintagestory.exe, the latest 1
How do i use them? I found Machinery Textbook and i cant read it.
Could you add a config option to not have the trait manuals disappear into the ether after being read (i.e. multiple players can learn from the same manual)? I want to build a library of them.
will there be an update for version 1.20 stable?
I'm also having problems with mod version 0.9.5 in VS 1.19.8
I've looted a book, but can't seem to do anything with it. No way to interact with it.
Using 0.9.5 for 1.19.8, I can use the commands to give myself traits, but they aren't giving me any effects, positive or negative, regardless if I die, restart the game or anything I tried. It was working for me like a week ago so maybe something is conflicting but I am unsure what happened.
Just to confirm something about the config file - if th setting "classManuals" is set to false, then the manuals should no longer appear in loot/traders but should appear in creative so server admins could give them out, or would I ned ot leave classManuals set to true for this, and instead drop manualsAvgStock to 0, manualsVarStock to 0, manualsAvgLoot to 0 and manualsVarLoot to 0?
I want server admins to access and give out the books where appropriate, but not to have the books for sale or as loot.
hey im a bit unfamiliar with the mod so i was hoping to confirm something
crafting recepie traitbooks spawn in traders by default right? beause ive been looking around in here and the mod seems very modular but i havent found any in the treasure trader in the past few trade cycles so i wanted to check if i had to enable some config or it was just rare
thank you in advance
SalazarWindriver
This issue would have been introduced in 0.9.5.
I know the mod is still unstable and feature incomplete hence why I have yet to call any release 1.0.0 yet, just today I accidentally discovered a bug while testing a new feature. Still, we're getting quite close to what I would consider feature complete and that should be achieved in the next 2 or 3 releases, I'll also make time for a pass over the code to look for potential problems so I'm not relying on people stumbling into bugs and ruining their experience.
Did this also affect 0.95 somehow? I tried to use an auto update script but it updated everything to the most current version (0.9.6) but I'm still playing 1.19.8 so I rolled it back after first seeing this issue. I figured it was due to compatibility with 1.19 code. But I'm in an area that shouldn't have been generated (through a translocator that was just activated.) and I'm having the same issue in the forlorn hope tower. I have applied the mod fix but still need to reload. I didn't have this error last month so I think the config might have stuck from the 0.9.6 version.
I just have the worst luck with this mod.
TheDanleyParable
That's an interesting sounding bug. I'll try and see if I can reproduce it, can you submit a screenshot of the manuals you can't pick up to the issue tracker at the top of the page so I know what I'm looking for.
Edit: I've figured out what causes this, when a stack randomizer resolves with a quantity of 0 I had assumed the game simply wouldn't spawn the item, instead it does this thing where it spawns the item but with a quantity of 0 so it disappears when you interact with it. I've fixed the default configuration so this won't happen in future updates but for now to prevent this happening in your game you need to set the "manualsVarLoot" element in the mod config file to 0. This won't fix any already generated loot but will prevent newly generated chunks from having this issue
Hey, I can't seem to pick up the trait books... I keep finding them in structures, but they always have a 0 amount and cannot be picked up? how am i supposed to add them to my character?
Arkhael
Oh ok. I'll definitely try that as soon as I get the chance. Thanks for the advice.
Bobosaw
Trait codes are case sensitive and are usually the name of the trait in lower or camel case. To find out what the code is for any trait, and which traits have been loaded correctly from other mods, use the handbook page for the trait you want. In the next update I'll improve the error messages from the commands to make it more clear what went wrong and what you might need to do instead.
I have tested for you that Combat Overhaul and More Class Traits both work, as well as Division of Labour, I'll perhaps expand that list in future but there's very little reason it wouldn't be compatible and the only mod I know isn't is Gardenerz
Arkhael
Hey dude. It is a class trait I'm trying to remove. Thanks for the info. Looking forward to more updates! Btw, can you add traits from other mods such as the Combat Overhaul mod and the More Class Trait mod? Is there a specific command for that because my attempts to add them are not bearing any fruit.
pudgydumpling
Division of Labour is setup correctly to work with the mod, to use a trait manual hold down right click for longer than 2 seconds. If that doesn't work use the issue tracker and submit your full modlist along with the report.
I found a loot spawned tailoring trait book but it doesn't seem to work when I try to read it - it just does nothing. I'm on 1.20 rc.4 with Division of Labor as a lumberjack, so I suspect that being a modded class is the issue. Is there any known fix for this?
Ijkdenem
Commoners can get traits from the mod and the current items the mod adds provide a way to acquire all of the unique crafting recipes. If playing as a class with traits you can't remove any of the class traits at present but the additional traits will stack with the class ones allowing you to get even more effects. Any other mod that adds traits to the game will also work (For example: https://mods.vintagestory.at/show/mod/15539) but only if it patches the traits.json config file.
can commoners get traits?
Bobosaw
I can certainly try. Is the trait in question a class trait? If so the mod currently cannot remove those, it can only remove traits that have been added by the mod. If not can you use the issue tracker, linked at the top of this page to submit a screenshot of the traits tab so I have some info to debug off of.
For some reason I cannot remove traitsa despite the message saying "Trait Removed" appearing. Any help with this?
Thank you for your patience friends, the handbook update is now complete along with the fixes. In future perhaps I should avoid being too specific with dates if it's going to take me several times longer than I say to do anything.
ComradeTum
I've made some attempts to re-create this issue with server testing and I did manage something similar once. I have some ideas as to what the issue could be and hopefully my improvements to how the attributes are applied has done the job but if not I need some more information from you.
Firstly, if you can get me the log from an actual crash that'd be a great help, I'll set up an issue tracker for this sort of thing as soon as I can.
Secondly, I wanted to ask how consistent this is when players use the items and if it has ever happened as a result of the command.
Love this mod, a definite must have. Seems to work fine in my SP games but when Ive added it to a 1.19.8 server players readyling the trait books get a CTD and the stack trace seems to be release to a collection being modified while read.
I understand that you've got a lot going on so I'm happy to wait for you to have free time and the inclination to work on this more, just thought I'd let you know what I saw in the logs.
I closed PR just because of me being stupid and I was still working on the mod on the same branch I wanted to push fixes for yours. So now it would change too much with your mod. But glad to hear you're back, and that you gonna push some fixes soon ^^
propaneko Rhayvhenn SalazarWindriver
Apologies for the disappearing act, a combination of a death in the family and the Factorio expansion releasing isn't condusive to me spending much time in social spaces.
To answer all the comments in chronological order:
Propaneko: I'll send you my discord via Github, thank you for the contribution. Stacking traits was implemented in 0.9.4, your mod fork seems to revert some of what made that work, either way I'll double check again when I go hunting all these bugs. Not quite sure what exactly you mean by "all the traits seems not to make any effect, only after applying class it works" all the methods the mod give to add traits should (assuming I didn't miss anything) only add traits when they can be applied and then apply them immediately after, if something is going wrong with the application still I'll hunt it down
Rhayvhenn: Thanks for trying the mod, I'll see what I can do to get that one. If possible can you confirm if Propaneko's fork fixed that for you or not?
SalazarWindriver: Vintage Story's logs are good but not all powerful so there's probably nothing you can do to get me anything useful as it's probably an issue with the variable states. My guess is that the difference in the way I've been applying the traits between versions has messed something up in your game state as far as the mod works. No need to worry it won't break the game in any way, I'll add something in the next update to ensure the variable is properly rebuilt on startup. Alternatively what's been happening with you could be some odd mod conflict as I've tried a few times and never been able to replicate this problem so if you could drop your modlist here I'd appreciate it and will take a look-see for potential issues.
ETA on fixes: A few days
ETA on Handbook update: Possibly at the same time as fixes, maybe a day or two more.
I may also set up a proper issue tracker so I can keep on top of all of this.
Thanks for your patience.
https://mods.vintagestory.at/edenvalrptraitacquirer Rhayvhenn
so I was able to get the tailor-specific recipe to work. but I just tried to repair a translocator with the technical but it cost me 3 gears which I believe I had working at one point after getting all of them. It's very weird how it keeps changing and I'm not sure there is any way to get a log of what it is doing since it is not crashing.
propaneko Im having the same issue. Found this mod, seeing it could solve my single player fashion issues, and then hits me with the "An Exception was throwing in while executing this command".
You said you have a workaround, would you be down to share?
Hi there, is there any chance I could contact you on discord? We're trying to figure out your mod and we have some small issues with it. Also will post a small PR for your mod on github as it fixes errors that occures when using commands. If not... any ETA for the stacking trait mechanism being pushed here or on the github? Also all the traits seems not to make any effect, only after applying class it works.
Arkhael Sweet!
SalazarWindriver What Arkhael said. You can have the 4 books provided by this mod, my issue was my expansion to the system where I ran into issues.
SalazarWindriver
Class crafting traits will all work together, as will the Technical trait, it's just stat traits that don't stack for the moment. It's actually already fixed on my end I'm just still working on the trait exclusivity, the game is set up to handle it just fine but the game stores the effect to a stat under the name "trait" which overrides every time a trait affects that stat, just had to give them all a unique name.
I did a quick test to confirm that the mod works with the Tailor's Delight crafting recipes and it did on my end, check to be sure you've used the book and have the trait in the Character Traits tab.
So, if I'm reading the last 2 comments correctly, only one class trait at a time? I have 4 traits and, starting with the clothier trait, I can't seem to make the flax twine with the wooden spindle. is there a way to make it so you can have all the traits active? if not is there a way to keep the books and only show what trait is active?
Blackmare
No there isn't, but I can add it as a feature. I'll also make the stat applications cumulative as that's gonna be a requirement if all traits are by default non-exclusive.
Arkhael is there any way to prevent the use of a book if they already have a different trait? Realized that the trait system isnt cumulative but rather it takes the latest effect.
Blackmare
Glad it worked out, I check in on the page every now and again so feel free to share any more issues you may have here.
The item randomiser is a great idea, tbh adding them to the gear randomizer was very much a stopgap measure so they're acquirable through exploration somehow. The eventual plan is their own set of custom ruins for the class ones, rarely from the trader and an option to craft them bound to each class for servers. Still, the idea behind the mod is flexibility for others to do fun stuff like you are as my time and ideas are ultimately limited.
@Arkhael you are not wrong in the trouble shooting being a pain haha
Somehow it got fixed. I want to say it was the lowercasing of all my stuff that fixed it. However I'm not super certain as I tried like 5 different ideas all at once. But now it works and is doing everything I needed on 1.20! Got them in traders and created a new scrapweaponkit type item so that my 400 or so traits dont create a huge burden on the gear randomizer haha.
Blackmare
Hey Blackmare, glad to see you're having fun making your own items, it can be a bit of a pain to troubleshoot by yourself so I'll try my best to help you out.
From the sets you've shared below the only difference I can see is that the former has an "i" at the end of "animalharvestingspeed" that the latter doesn't. Which is correct will depend on how you've set the "variantgroups" element up.
As for the black square thing, I have no idea what's up from just that much information, only thing I can tell is that it isn't an unloaded item as they come out as white cubes with a red question mark.
Is the issue with the restart consistent? If not, next time it happens go to the logs folder "AppData\Roaming\VintagestoryData\Logs" and copy the text files in there to somewhere else to preserve them as they're refreshed every time you load a world
Are your items patched into the trader's buy or sell lists? If not then them not recognising them is expected behaviour
If you want to catch me to chat and try and sort this out I'm usually active in the Solstin discord so if you show up there and holler I'll likely notice
New issue I'm running into where my items just become a black square after a restart and are not recognized by traders.
If you happen to have some time to chat let me know as everything seems to be done correctly both as a patch and as a wholely new item using the class but both are giving me the same result.
Interesting addition after trying a couple of things i thought might be the issue, i found that these two sets are somehow fundamentally different
"*-animalharvestingspeedi": {
"traitdata": {
"add": [ "animalHarvestingSpeedI" ],
"remove": []
}
},
"*-animalharvestingspeed": {
"traitdata": {
"add": [ "animalHarvestingSpeedI" ],
"remove": []
}
},
The first one being my own written out addition and the second being a copy and paste of your hunter and replacing it with the animal harvesting speed information.
which gives me a path for a fix on my end, albeit a slow one but just thought I'd let you know something wonky is occuring.
Figured it out! I had to patch out the default to make my choices show up instead
"*": {
"all": {"base": "game:item/lore/{type}"}
}
{
"op": "add",
"path": "/texturesByType/*-walkspeed*",
"value": {
"cover": {
"base": "game:item/lore/normal-teal"
}
},
"file": "traitacquirer:itemtypes/utility/trait-manual.json"
},
I'm running into an issue patching traitacquierer. My patch currently is allowing my books to show up and will give traits but they arent chaning to the book type I have marked. Do you happen to know why that might be?
It works fine if I edit the traitacquirer files directly so unsure why the patch isnt working
Sylvi
There are no separate commands to remove traits, both of the commands to add traits can be used to remove traits you just have to add the optional argument "rm"
Examples:
/acquiretrait frail rm
/givetrait frail Arkhael rm
Sweet, thank you much for the advice. I noticed the commands to add a trait doesn't have a reverse option that I can find, is the only way to remove the added trait with an item?
Sylvi
Should do, there won't be any items to add them unless you make them though. Because of how classes work they're currently unmodifiable so you'll always have those traits no matter what you do with this mod so if you want custom classes the best way to do it is start with a Commoner and add all the traits you want via the mod
ah man this is awsome I've really wanted a trait buy system for custome class setups for awhile now. Its cool to have an option that doesn't just involve disabling class recipes.
Does this work with modded traits?
Works great. Thanks for the help.
neobit
Thanks for the heads up about that incompatability issue, the issue was on my end as the mod hijacks the game's Traits tab the original tab isn't rendered however depending on the order the game loads things additional tabs added by other mods could in turn be taken over by the default traits tab. I have now added a step to remove the original tab at the end of the loading process so it should be compatible with any mods that add more character tabs.
As for the issue of finding the trait items, I intend to properly balance the methods to find or even create the books when I put together a 1.0 version, for now the simplest method is to buy one from a Treasure Trader.
Hello, I really like the idea of this mod. We started using it on our server, but still noone has found the book.
General guestion: is this compatible with Level up (mods.vintagestory.at/show/mod/11856)? I think we stopped seeing level up window after adding your mod.
EDIT: checked it out only with these two mods and yes, definately dont work together.
Arkhael That sounds really promising. Please keep this coming. It looks like this mod would fit both a modded and vanilla playstyle quite well. Imagine how much more of a progression it would give the game if you could not only find trait books like tinkerer and such, but also the likes of forager, soldier, hardy, etc. As I said, this looks pretty promising, and I hope you can bring these goals to life. To give a little example, we play on a server with Xskills and usually most people tend to use the commoner since you can already learn new skills with Xskills. But with an addition like that it would give even more progression till the endgame.
@dashr I'm glad you like it, that was part of my motivation but I mainly want to add to the game's exploration loop and give me a reason to start a world without ticking the box to unlock all recipes. I haven't ever played with Xskills but it does seem a good combination to test with and may give me more ideas. I'm itching a bit to add to this but getting my debug environment to work with the config loading and making the scrollbar for the traits menu took as long as the whole rest of the mod and tired me the hell out so I'm working on somethig else that should help with my understanding of the visual code stuff, so look forward to that being next giving this some polish.
Idk why I never thought of this but it's perfect for a server in combination with Xskills to allow additional progression. Thank you so much for making this :)