About black spider fix.. there is three more types of black spiders in the game with DLC's : mon-black_spider_large, mon_black_spider_ep2, mon_black_spider_ep2_large. This mod fix only one type of black spiders in the Heart of Stone. Spders in Tussaint are still immune to the steel sword.
Do you have a mod that allows you to apply oil to steel weapons (this mod does not touch, or enforce any such things)?
If so, are you trying to apply oil using gamepad\keyboard without the optional gamepad fix (required as most of the mods do not ensure that this works)?
If neither of these, I have no suggestions. Mod conflict perhaps? incorrect merging?
No I don't have any mod that allows me to apply oil to steel weapons I believe. I have tried applying oil by dragging the oil onto the sword from the inventory but that does not seem to work. What file or files should I be looking out for compatibility issues?
I see you have indeed installed the requirement: "Steel is all you need" - which does add the functionality to apply "wrong" oil to weapons, so you do have a mod allowing that.
The only reason I can think of that it doesn't work, is incorrect merging. Some mod is overwriting the oil-part of Steel is all you need, so you'll need to hunt down exactly which mod you installed and attempt to merge, and then do a manual merge.
Hey there, me again. I have the mod working, all except the silver durability. No matter the slider my sword only goes down by 2-3% with 4-5 swings. What .ws effects weapon durability? I'm wondering if I have a mod confliction of some sort.
Ah okay. I did a clean install of all my mods and it fixed it. There must have been some left over code from an old normalized items mod that I had to manually merge. After doing a clean install all is working well. Thanks for the info. Was able to find the gremlin.
maybe something like: while each hit reduces a certain amount ofdurability, each % of durability loss, causes x% reduction of sword's max damage. slider: x=0.1, 0.2, 0.3, 0.4 ,...,1, 2 ,3,etc. with an optional minimum cap, so dmg never gets to zero and the sword is always usable. 2 sliders for each sword type.
Well it's pretty far out of scope for this mod, but at the same time, wouldn't be compatible with any mod that actually would do that. Absolutely no promises to it ever being done, but I'll consider it if i revisit the mod.
Well it's pretty far out of scope for this mod, but at the same time, wouldn't be compatible with any mod that actually would do that. Absolutely no promises to it ever being done, but I'll consider it if i revisit the mod.
So I used 1.4.2 for a long time and only just updated to 1.4.4 (simply for the localization strings because I was tired of seeing invisible name in my Mods menu) and now my scripts are all screwed. First it threw flags in inventorycomponent.ws saying it didn't know what "value" was...I check the specified line and it didn't merge properly in Script Merger, it was missing the definition params for "value" so I added them in. Then it says it doesn't know what those params are, so I just removed the script entirely from the mod folder. Script compilation now flags damageprocessor.ws...like wtaf. It didn't have any flags in that script prior, all I did was remove one script from the mod folder so why would it flag an entirely different script.
Because you can't pick and choose what script-files to have from a mod. There's changes in inventorycomponent.ws that damageManagerProcessor.ws depend upon, that you now no longer have.
To fix this(i.e; not use inventorycomponent.ws at all), in damagemanagerprocessor.ws:
Find this function:
private function ProcessActionDamage_ReduceDurability()
and replace entire thing with this function:
https://pastebin.com/raw/zXv3AtLV
Edit(as it dissapeared in my rewrite):
The changes in InventoryComponent are not really necessary(hence why I easily made this new function you can use instead) and was missed in my recent refactoring. I originally edited it because I was going to have some options tied to durability loss based on specters etc, but decided against it, but ended up leaving the code in(and so in the refactor and bug-fix, just changed up the parameter passing).
The linked function moves the specter\"pixie" check to damageManagerProcessor, rather than inventoryComponent.
Makes sense, the reason behind me removing it entirely was because I did similar with E3 Hud back in the day regarding the mapmenu.ws so I figured I could safely remove that single script since the code referenced was only a small bit regarding durability as you said...obviously I was an idiot haha
Apologies though if my initial comment came off aggressive, I should've worded it differently and prefaced it by saying I thoroughly enjoy your mod and "Steel is all you need" together as "it just works". Regardless, I will try your fix shortly and I commend you for being so helpful and thorough in your replies, that's pretty rare to see here
EDIT: It launches now, so thanks for the fix! Just going to post the errors here so you can see what I ran into...
With inventorycomponent.ws
Spoiler:
Show
Error [mod0000_mergedfiles]game\components\inventorycomponent.ws(1280): I dont know any 'value' Warning [content0]engine\environment.ws(30): Global native function 'EnableDebugOverlayFilter' was not exported from C++ code. Warning [content0]engine\environment.ws(32): Global native function 'EnableDebugPostProcess' was not exported from C++ code. Warning [content0]engine\showflags.ws(11): Global native function 'DebugSetEShowFlag' was not exported from C++ code. Warning [modbellstash]local\bellstash.ws(4): Saved property 'stash' of type 'handle:W3Stash' won't be saved because it references CNode. Use EntityHandle instead if that's an entity or remove saved property attribute. Warning [modbellstash]local\bellstash.ws(5): Saved property 'travelsignpost' of type 'handle:W3FastTravelEntity' won't be saved because it references CNode. Use EntityHandle instead if that's an entity or remove saved property attribute.
With added missing params that Script Merger didn't merge
Spoiler:
Show
Error [mod0000_mergedfiles]game\components\inventorycomponent.ws(1277): I dont know any 'chance' Error [mod0000_mergedfiles]game\components\inventorycomponent.ws(1278): I dont know any 'value' Error [mod0000_mergedfiles]game\components\inventorycomponent.ws(1282): I dont know any 'value' Warning [content0]engine\environment.ws(30): Global native function 'EnableDebugOverlayFilter' was not exported from C++ code. Warning [content0]engine\environment.ws(32): Global native function 'EnableDebugPostProcess' was not exported from C++ code. Warning [content0]engine\showflags.ws(11): Global native function 'DebugSetEShowFlag' was not exported from C++ code. Warning [modbellstash]local\bellstash.ws(4): Saved property 'stash' of type 'handle:W3Stash' won't be saved because it references CNode. Use EntityHandle instead if that's an entity or remove saved property attribute. Warning [modbellstash]local\bellstash.ws(5): Saved property 'travelsignpost' of type 'handle:W3FastTravelEntity' won't be saved because it references CNode. Use EntityHandle instead if that's an entity or remove saved property attribute.
However, the menu is still invisible (I can access it, but it's just blank) in the Mods menu. I have this and used to use this, but removed it awhile ago. With the latter, it showed up fine, but due to its unmergeliness I got rid of it entirely. Any suggestions?
I personally use customLocalization fix and don't know of any other solution to make mod-text appear, so that's beyond my knowledge.
As for the errors, 100% incorrect merging. Essentially some scripts are being loaded up, expecting things that doesn't exist in your merged scripts, which is what the errors are. Something causes InventoryComponent.ws to not be able to compile, therefore your merged file isn't being used(instead another is used, which might be default W3 file, I don't know), so the changes whatever mod requires, isn't actually able to call them.
As for " I dont know any 'value'" it's either a variable named 'value', which doesn't exist, or is declared incorrectly. This usually happens when someone choose B\C, over either C\B(or vice-versa), or C&B(which sometimes is the right choice). Could also be an issue with the automatic merging, and what you really needed to do, was C&B + manual edit\removals.
I guess I'll have to deal with it, as I said it functions properly just gets my OCD so nbd. I used the localization fix for years, but my scripts eventually got so messed up I had to nuke the entire game.
With the merging, it was auto merged and kdiff never popped for this to allow me to resolve any conflicts. All in all, it's working with your fix you so kindly provided so I am grateful regardless!
?With the merging, it was auto merged and kdiff never popped for this to allow me to resolve any conflicts.
?Yeah, once your "mod list" grows to a certain amount, you'll need to start to do manual mergings. KDiff wasn't designed to merge vastly-different logic changes between files, kdiff works better when the files remain mostly consistent, and you're checking your previous code, vs refactored code. For modding, this isn't always going to be the case, which is why we often end up in situations where things dissapear, that shouldn't dissapear(kdiff doesn't understand the difference, it assumes ModC's changes, are refactorations of ModB, therefore ModB shouldn't exist anymore).
It's the best option available, basically, but still a poor option. CDPR should've designed a proper modding system for scripts, but just didn't, lol. Instead, like W1 & 2, uses an overwrite system, where everything gets replaced completely.
Anyway, I have about 45 script mods, and had to do quite a few manual edits to the merged files(or create my own compatibility patches tailored to my load order), this is sadly a requirement to heavy modded Witcher 3.
Tagging on here since my problems deals with the above fix. After doing as you state, I'm still getting this error: Error [mod0000_mergedfiles]game\gameplay\damage\damagemanagerprocessor.ws(1799): Function 'isPixie' does not take 4 param(s) Error [mod0000_mergedfiles]game\gameplay\damage\damagemanagerprocessor.ws(1824): Function 'isPixie' does not take 4 param(s)
I'm very new to reading code of any kind, so I'm probably missing something.
?assassin4ever96 Tagging on here since my problems deals with the above fix. After doing as you state, I'm still getting this error: Error [mod0000_mergedfiles]game\gameplay\damage\damagemanagerprocessor.ws(1799): Function 'isPixie' does not take 4 param(s) Error [mod0000_mergedfiles]game\gameplay\damage\damagemanagerprocessor.ws(1824): Function 'isPixie' does not take 4 param(s)
I'm very new to reading code of any kind, so I'm probably missing something.
The error says that isPixie doesn't take 4 parameters ( which it should, and does, so you must've changed this at some point )
If so it must be from some other mod that uses that .ws
That being said what would I search in that file to manually fix that merge?
Edit: Adding a screenshot of the other mods, not including this one, that uses DamageManagerProcessor.ws When looking at the .ws in Notepad++ without your mod, there is no mention of "isPixie" so I'm screwing up somewhere in the manual merge process.
Disregard after looking at all 3 files, vanilla, yours, and my merge, I figured it out!
Didn't realize isPixie 4 params meant that isPixie needed to be stated 4 times in the script, which lead me to realize the a large chunk of your mod wasn't being merged into the .ws
?Didn't realize isPixie 4 params meant that isPixie needed to be stated 4 times in the script
No that's not what that means ( that's what's called a coincidence, lol ). What it means is that isPixie doesn't take x-amount of parameters ( in this case 4 ), where as that's what it's supposed to do. It needs victimMonsterCategory ( The victim\player entity ), attackerMonsterCategory( the attacker entity ), actorVictim ( victim actor instance ) and actorAttacker ( attacker actor instance ). So something weird happened to your instance of isPixie() function, to make it not call for those 4 parameters. Why I don't know as I'm not there and not looking over your mods.
?which lead me to realize the a large chunk of your mod wasn't being merged into the .ws
However this is usually the issue for such errors. The only weird thing is that isPixie is in local\functions.ws, so only way I can imagine it being f***ed up, is if local files get merged as well ( which in retrospect, of course they should ). I assumed they wouldn't be, but when I think of how Witcher 3 scripts work, of course they also need to be merged, so someone else might've created an function.ws file in local, and that's the cause of the issue. Solution in that case is to rename functions.ws to something else ( names are not important in local folder, as you're not overwriting anything with them ).
Hey, the mod works and I can access the menu, but it doesnt have a name, like it's a blank space. I use community patch menu strings and have dozens of mod menus but this is the first one to have this problem.
Any fix I could try that doesnt involve customLocalization fix?
Issue is that Witcher 3 doesn't respect the displayNames, which it should(that's basically what customLocalizationFix fixes). I didn't localize the groupID, which is why customLocalization is required. I'll look into fixing up the localization(don't have the raw files so need to redo from scratch, 'yay').
I tried adding strings to see if it changes anything but it didnt work. But i'm not versed in modding. Great mod btw Made some changes to be compatible with endure and ghost mode and it makes a huge difference in gameplay. Thanks for your work
Checking more into it, my original assessment was incorrect. Localizing the groupID is irrelevant. I have no idea why my localization files are not being read without custom localization fix. Localization for W3 is generally very undocumented area, and I don't really have the time or desire to re-invent the wheel myself. If someone can point me to any documentation giving a detailed breakdown how to do localization 'properly', I'll revisit this issue, otherwise, my suggestion is to use custom localization fix, which renders that all moot.
while I said that, I did actually manage to figure it out. Strings are made with a tag-system initially, therefore you need to specify what type of parameter the string is, which I don't do. CustomLocalizationFix basically doesn't require this. Will upload the fixed localization when it's done(still having some minor issues with some of it not showing up correctly).
the mod menu doesn't show ( I've already installed custom localization ) and monster oil couldn't be applied to steel sword, merge went okay, I don't know what I've done wrong
NVM I fixed the menu problem by copying the bin folder into the main game dir, the oil problem was fixed by using the optional file, test a bunch at crook back bog and the mod works wonder ( except for a minor problem like the menu values was automatically reset to default once )
?game crashes when opening up inventory every 2nd times after loading a game, will try to find what causes the crash
Been opening and closing the inventory so many times while using this mod that I'm confident to say, it's 100% not caused by this, so you're looking at something else without a doubt. Something having gone wrong while merging could be the cause, for example.
except for a minor problem like the menu values was automatically reset to default once
This as well, has never happened. However the config-portion of this mod wasn't well implemented. The entire mod is up for a refactoring at some point, just as my other mod(Skillbased Dismemberment) went through. Which'll make it a bit more mergable, and have the config portion be properly written.
However, do note that config settings are saved to user.settings in your document folder, and it's a bit iffy when they actually do save. I suggest making a (in-game) save after changing config files. I've also had issues with mod settings reverting when I load a game, after having made changes to them in the main-menu. So I also suggest not making changes unless you're in the actual game.
?monster oil couldn't be applied to steel sword,
While I know you fixed it with the optional file, I'm assuming you were trying to apply oil using either gamepad, or keyboard, rather than mouse. Which yes, this requires the optional file(as when you use gamepad\keyboard, inventory script is ignored and it instead uses an XML check, optional file is the XML check).
221 comments
could you provide an updated steel is all you need mod? I really want it and I hate using no levels so.
Verified and will fix asap! Better late than never, lol.
If so, are you trying to apply oil using gamepad\keyboard without the optional gamepad fix (required as most of the mods do not ensure that this works)?
If neither of these, I have no suggestions. Mod conflict perhaps? incorrect merging?
The only reason I can think of that it doesn't work, is incorrect merging. Some mod is overwriting the oil-part of Steel is all you need, so you'll need to hunt down exactly which mod you installed and attempt to merge, and then do a manual merge.
InventoryComponent handles the actual durability losing[ReduceItemDurability function].
DamageManagerProcessor handles if\when the check for durability loss should happen[ProcessActionDamage_ReduceDurability function].
while each hit reduces a certain amount ofdurability, each % of durability loss, causes x% reduction of sword's max damage.
slider: x=0.1, 0.2, 0.3, 0.4 ,...,1, 2 ,3,etc.
with an optional minimum cap, so dmg never gets to zero and the sword is always usable. 2 sliders for each sword type.
thanks alot for the nice mod <3
To fix this(i.e; not use inventorycomponent.ws at all), in damagemanagerprocessor.ws:
Find this function:
private function ProcessActionDamage_ReduceDurability()
and replace entire thing with this function:
https://pastebin.com/raw/zXv3AtLV
Edit(as it dissapeared in my rewrite):
The changes in InventoryComponent are not really necessary(hence why I easily made this new function you can use instead) and was missed in my recent refactoring. I originally edited it because I was going to have some options tied to durability loss based on specters etc, but decided against it, but ended up leaving the code in(and so in the refactor and bug-fix, just changed up the parameter passing).
The linked function moves the specter\"pixie" check to damageManagerProcessor, rather than inventoryComponent.
Apologies though if my initial comment came off aggressive, I should've worded it differently and prefaced it by saying I thoroughly enjoy your mod and "Steel is all you need" together as "it just works". Regardless, I will try your fix shortly and I commend you for being so helpful and thorough in your replies, that's pretty rare to see here
EDIT: It launches now, so thanks for the fix! Just going to post the errors here so you can see what I ran into...
With inventorycomponent.ws
Warning [content0]engine\environment.ws(30): Global native function 'EnableDebugOverlayFilter' was not exported from C++ code.
Warning [content0]engine\environment.ws(32): Global native function 'EnableDebugPostProcess' was not exported from C++ code.
Warning [content0]engine\showflags.ws(11): Global native function 'DebugSetEShowFlag' was not exported from C++ code.
Warning [modbellstash]local\bellstash.ws(4): Saved property 'stash' of type 'handle:W3Stash' won't be saved because it references CNode. Use EntityHandle instead if that's an entity or remove saved property attribute.
Warning [modbellstash]local\bellstash.ws(5): Saved property 'travelsignpost' of type 'handle:W3FastTravelEntity' won't be saved because it references CNode. Use EntityHandle instead if that's an entity or remove saved property attribute.
With added missing params that Script Merger didn't merge
Error [mod0000_mergedfiles]game\components\inventorycomponent.ws(1278): I dont know any 'value'
Error [mod0000_mergedfiles]game\components\inventorycomponent.ws(1282): I dont know any 'value'
Warning [content0]engine\environment.ws(30): Global native function 'EnableDebugOverlayFilter' was not exported from C++ code.
Warning [content0]engine\environment.ws(32): Global native function 'EnableDebugPostProcess' was not exported from C++ code.
Warning [content0]engine\showflags.ws(11): Global native function 'DebugSetEShowFlag' was not exported from C++ code.
Warning [modbellstash]local\bellstash.ws(4): Saved property 'stash' of type 'handle:W3Stash' won't be saved because it references CNode. Use EntityHandle instead if that's an entity or remove saved property attribute.
Warning [modbellstash]local\bellstash.ws(5): Saved property 'travelsignpost' of type 'handle:W3FastTravelEntity' won't be saved because it references CNode. Use EntityHandle instead if that's an entity or remove saved property attribute.
However, the menu is still invisible (I can access it, but it's just blank) in the Mods menu. I have this and used to use this, but removed it awhile ago. With the latter, it showed up fine, but due to its unmergeliness I got rid of it entirely. Any suggestions?
As for the errors, 100% incorrect merging. Essentially some scripts are being loaded up, expecting things that doesn't exist in your merged scripts, which is what the errors are. Something causes InventoryComponent.ws to not be able to compile, therefore your merged file isn't being used(instead another is used, which might be default W3 file, I don't know), so the changes whatever mod requires, isn't actually able to call them.
As for " I dont know any 'value'" it's either a variable named 'value', which doesn't exist, or is declared incorrectly. This usually happens when someone choose B\C, over either C\B(or vice-versa), or C&B(which sometimes is the right choice). Could also be an issue with the automatic merging, and what you really needed to do, was C&B + manual edit\removals.
With the merging, it was auto merged and kdiff never popped for this to allow me to resolve any conflicts. All in all, it's working with your fix you so kindly provided so I am grateful regardless!
It's the best option available, basically, but still a poor option. CDPR should've designed a proper modding system for scripts, but just didn't, lol. Instead, like W1 & 2, uses an overwrite system, where everything gets replaced completely.
Anyway, I have about 45 script mods, and had to do quite a few manual edits to the merged files(or create my own compatibility patches tailored to my load order), this is sadly a requirement to heavy modded Witcher 3.
Error [mod0000_mergedfiles]game\gameplay\damage\damagemanagerprocessor.ws(1799): Function 'isPixie' does not take 4 param(s)
Error [mod0000_mergedfiles]game\gameplay\damage\damagemanagerprocessor.ws(1824): Function 'isPixie' does not take 4 param(s)
I'm very new to reading code of any kind, so I'm probably missing something.
The error says that isPixie doesn't take 4 parameters ( which it should, and does, so you must've changed this at some point )
That being said what would I search in that file to manually fix that merge?
Edit: Adding a screenshot of the other mods, not including this one, that uses DamageManagerProcessor.ws
When looking at the .ws in Notepad++ without your mod, there is no mention of "isPixie" so I'm screwing up somewhere in the manual merge process.
https://gyazo.com/f650eb2f1aafda9b5399a2bfd11438e4
Didn't realize isPixie 4 params meant that isPixie needed to be stated 4 times in the script, which lead me to realize the a large chunk of your mod wasn't being merged into the .ws
However this is usually the issue for such errors. The only weird thing is that isPixie is in local\functions.ws, so only way I can imagine it being f***ed up, is if local files get merged as well ( which in retrospect, of course they should ). I assumed they wouldn't be, but when I think of how Witcher 3 scripts work, of course they also need to be merged, so someone else might've created an function.ws file in local, and that's the cause of the issue. Solution in that case is to rename functions.ws to something else ( names are not important in local folder, as you're not overwriting anything with them ).
Any fix I could try that doesnt involve customLocalization fix?
Cheers
I tried adding strings to see if it changes anything but it didnt work. But i'm not versed in modding. Great mod btw
Made some changes to be compatible with endure and ghost mode and it makes a huge difference in gameplay.
Thanks for your work
Checking more into it, my original assessment was incorrect. Localizing the groupID is irrelevant. I have no idea why my localization files are not being read without custom localization fix. Localization for W3 is generally very undocumented area, and I don't really have the time or desire to re-invent the wheel myself. If someone can point me to any documentation giving a detailed breakdown how to do localization 'properly', I'll revisit this issue, otherwise, my suggestion is to use custom localization fix, which renders that all moot.
while I said that, I did actually manage to figure it out. Strings are made with a tag-system initially, therefore you need to specify what type of parameter the string is, which I don't do. CustomLocalizationFix basically doesn't require this. Will upload the fixed localization when it's done(still having some minor issues with some of it not showing up correctly).However, do note that config settings are saved to user.settings in your document folder, and it's a bit iffy when they actually do save. I suggest making a (in-game) save after changing config files. I've also had issues with mod settings reverting when I load a game, after having made changes to them in the main-menu. So I also suggest not making changes unless you're in the actual game.