Save Game Corruption PC (Version 1.3) Please Help!

+
SigilFey;n9693521 said:
It hath been passed on! I think y'all are pretty awesome! :cool:

Dear SigilFey,

Have you passed on this information to the CDProjectRED guys who made the Witcher3?? So that they can combine the research and hard work of Karlblau and SSDany
and use it to finally fix this problem in the game??

It would mean so much for us Witcher fans and CDProjectRED supporters if they would still take the time and energy and still fix this problem even after stopping working on The Witcher 3 for a while now.
 
Abstract: I have found a workaround for the problem caused by protected body parts, added much code to ssdany's initial version of modDebugItemID during the last weekend, and repaired the last savegame of my first playthrough.

ssdany;n9691271 said:
This is how I met the Mighty Body Parts. All 16 of them. Initially, there are 10 at max and later you will receive new parts and copies of already existing ones. That’s the problem. Their identifiers can be spread across a very wide range (1-64802 in my case). And yes, you can’t remove them.

As some kind of balancing justice, what a sweet revenge, the runestones bomb can be used to prevent multiple use of a unique item ID. That is, what we need - some useless copies of body parts will do no harm, if it is possible, to assign a different ID to items, which got an ID already occupied by a body part, and to advance the counter this way over it.

I used a modified liverhack to reset the SItemUniqueID counter to zero. I picked up 6 stacks of runestones, which were not visible in the inventory, because the assigned IDs collided with the IDs of already present body parts. Then I reloaded the game, and the runestones appeared in the inventory with new IDs, no collision anymore. Now I knew: it can be done, there is a workaround.

The simple manual way is, to drop and pick up again a runestone, when the counter is below the ID of a body part, and to reload the game. I tested this already for a "high ID protected body part". An automatic way could be, to create On Event code, which adds a single runestore of a type not already present, or some other unique item, maybe some which does not occur in a regular game, and to remove it by name again - then the player needs no reload and does not even notice it.

ssdany;n9691271 said:
Well, I did not even manage to find a definition of SItemUniqueID struct (which is, by the way, a TW2 legacy).
This confirms my worst nightmares: If we can't get some attention for this problem on the developers side, chances are, it may reappear in Cyberpunk 2077 as a TW3 legacy.

DrDeathhand;n9692061 said:
But after that when I am ingame I do not know how to run the different options of the MOD.
So can tell me / us how to run it?
You need to enter the commands (like liverHack, upper/lowercase matters) on the developer console. To activate the developer console permanently, you have to add an entry to the file general.ini, which is located in The Witcher 3 Wild Hunt\bin\config\base, like this:
[General]
ConfigVersion=2
DBGConsoleOn=true
To bring up / open the Debug Console when the game is running, use the key ‘~’ or on German keyboards ö (Umlaut oe).

ssdany;n9691271 said:
Recipes and schematics: I think it’s a bad idea to add yet another hundred of items. Please notify me if disappearance of these "papers" will cause any bugs - I’ll change the code. Regardless, all recipes and schematics should still be available in related menus.
This is, what I think too. Therefore I omitted these in the changed version of your mod, but I created an additional exec function (= developer console command) addknownRecipes, which can add the recipes and schematics already known as items later on request.

ssdany;n9691271 said:
Gwent cards will be transferred into a lootbag. My first implementation caused them to be duplicated (thanks karlblau for testing). Hope it’s OK now.
Gwent cards as items in the inventory are required and count for the quest "Collect Them All". A Gwent card, when received as item, is added to the Gwent card section of the game, but the basic starter deck was never added by card items, but was present a priori or added directly after the first Gwent quest. Therefore, I removed all Gwent cards present as item, but only these, and these will be added again, when the player takes / picks up the dropped cards in the bag. However, the player needs to rebuild his Gwent decks afterwards.

Here it is, the changed, user-friendly version of ssdany's modDebugItemID. I have added some screenshots, to show how to go through the process, and to show, what the mod can do during regular gameplay. The screenshots should be looked at in the sequence given here.

First, there is a "help" command. None is present in the basic game, therefore I added one linking to general help in the internet, and giving an overview of the mods commands and additional capabilities.

Next, "maxID" will count all present items, list 11 items with ID and internal name which were added last, show the item with the highest ID, compute the offset for liverhack to land after the initial bodyparts with low IDs and recommend, whether liverhack should be done.


Then, "liverhack(offset)" will overflow and reset the unique item ID, and give detailed instructions to the user, how to proceed. It is not needed to unequip/unmount anything before except mutagenes (because these will use new IDs if no stack is present), and especially the horse equipment should not be unmounted, because it is in a different inventory, and will most probably use new IDs if transferred to the player inventory.

Another call of "maxID" will list the remaining items, and the user should note/write down the body parts with high item IDs to take care of later, currently manually as described above.

Three additional screenshots show the function of "mountID", which will list all mounted/equipped items, and marked red you can see (barely visible), how the "ID is displayed as a part of in-game notice about receiving a new item (in square brackets)", which is seen better on the next screenshot, when Geralt picked up a skull in full sunlight. The last screenshot shows, how "hovering an item in the inventory will also display item ID (as well as internal name) - in a form of in-game notification in a bottom left corner.". This makes it possible, to use the command "removeitemID(ID,qty)" to get rid of all these left-over quest items, for example - this command is a console wrap of the low-level final function RemoveItem(...), but as ssdany already explained, it cannot be used to get rid of some body parts.
I added some other commands, like "allNoShowID", which will display all invisible items in the inventory.

Please note, that this version is based on ssdany's initial version of his mod, which he sent me, and therefore does not yet include his later changes, like changed command names.

Nevertheless, if there are not too many protected body parts, even the manual workaround will allow to continue with the game, if played with the mod (and the ingame-notice of ID) active. As you can see on the screenshots, I was lucky and have to deal with 2 such bodyparts only.

 

Attachments

  • modDebugItemID.zip
    193.5 KB · Views: 809
Last edited:
I'll try to add the screenshots here ... but the jpg images are always too small. Sorry.

Now I tried to upload using a different browser and a different system, a virtual machine. Same result.
 

Attachments

  • maxID_before.jpg
    maxID_before.jpg
    2.4 KB · Views: 624
  • liverhack.jpg
    liverhack.jpg
    1.8 KB · Views: 501
  • maxID_after.jpg
    maxID_after.jpg
    1.6 KB · Views: 500
  • mountID.jpg
    mountID.jpg
    931 bytes · Views: 416
  • Help.jpg
    Help.jpg
    2.6 KB · Views: 473
Last edited:
The bug is under control

Here are the results of some additional tests:

1. I could not find any way, to remove a new item, which got an item ID assigned, that collided / was identical with the item ID of a protected body part (after overflow or reset of the unique item ID counter) by a function, script or console command; it is not possible to remove such an item by name or using category or tags. Therefore, using a runestone and reloading the game, is the only way currently known to do this.

2. It is possible, to add an automatic check to a game script, which will inform the player, before such a collision happens, and ask him / her, to drop and pick up again a runestone and to reload the game. In this way, a new item ID is assigned to the runestone, and the item ID counter advances over that dangerous position. This way, nearly the full amount of 65535 IDs (minus items carried) can be used after a (modified) "liverHack", and the procedure could even be done several times.

To achieve this, I added an additional check of the item ID to "event OnItemGiven" in the script "r4player.ws" to display a message like this on the screen:
Duplicate item id alert (19411)
Drop and pick up again a runestone (a whole stack)
five times and reload your game!
Five times, because sometimes I use the 'take all' option, and I wanted to have some margin of security, if there should be many unique items in the loot, or if the game adds a head. I tested this on different occasions, it worked, when
- taking loot from a moster, bandit, loot bag or container,
- plant picking,
- purchasing items in a store,
- moving items from stash to inventory,
- unmounting horse equipment.
It did not work, when unmounting equipped mutagens of a type not already present in the player inventory.

In the last savegame of my first playthrough I had catched two duplicates of these "Mighty Body Parts", before the item counter overflowed after 329 hours ingame time, and I decided, that 2 such messages in another 300 hours would not seriously impair my immersion, and that this is an acceptable solution - even, if there were 20 such parts.

Of course, this is an ugly hack, because I added the known IDs (displayed with maxID) of these body parts, valid for a certain savegame / playthrough, to a game script, and therefore to the compiled code, but - it was easy, quick and works.

A better solution would be, to scan all item IDs upwards after liverHack and to store the IDs found in an array in the fact database as a new fact, because these IDs are a property of that playthrough, as it is whether Triss or Yen are Geralts girlfriends. But coding this would consume much time or is probably beyond my capabilities.

Elex was released today, and I want to find the best way "through time and space", not to fumble every evening on a workaround for a bug, which the developers refused to fix, which the support forgot, although a complete analysis was handed to them on a silver platter. I did not even receive any answer to my bug report.
 
How to crush the bug

This is a long text, but again worthwhile to read, I hope, because now there is a full solution to repair saved games without any compromise.

The problem after overflow of the SItemUniqueId by doing the liverHack are copies of Geralts body parts, which occupy high unique item IDs and cannot be removed by normal means, because of a special protection by the game engine. It is desired, to be able to reset to a SItemUniqueId counter as low as possible, which is about 10, before taking any items.

Therefore, let's remove these additional body parts now, to proceed in the game with a clean savegame and for a long time without any additional hassle.

To do this, you guess it, the special protection is tricked and bypassed - by directly editing a Witcher 3 savegame file compressed into LZ4 chunks with a Hex Editor - and yes, this can be done easily, don't be afraid.

I used the very good HxD by Maël Hörz, this tool can edit files and memory (RAM) of running programs, and is available in many languages as an installable or portable version, look at https://mh-nexus.de/en/hxd/ and check the Download page.

I have added a file, which shows how Geralts basic body part names (a bunch of strings each preceeded by a byte with the length) look in a decompressed savegame: GERALTBody.txt (it's not all readable text, you can use Notepad, but you should use a Hex editor) and an example what to expect in a compressed savegame: GERALTBody.lz4 (you may see something different). But in any case, you should find the preceeding strings "'06'PLAYER'06'GERALT" or in hex 06 50 4C 41 59 45 52 06 47 45 52 41 4C 54. Now change one letter in the readable part of each name of these (and only these) body parts, which you want to remove, because there are duplicates with high item IDs.

The game will automatically remove any item with an invalid name from the inventory while loading a savegame file, whether it was a protected "Mighty Body Part" (® by ssdany) or not. Therefore after loading the skillfully damaged savegame file (Geralt may be partially invisible), save again, and then undo all the changes with your favourite Hex Editor in this new savegame file, because Geralt needs a body and you want him to be visible without armor. Reload this savegame, and restore Geralts basic body parts (you would not even need to equip the body parts, but it looks definitely better); possible commands are:

additem('Body torso medalion')
equipitem('Body torso medalion')
additem('Body palms 01')
equipitem('Body palms 01')

Other initial, protected body parts are: Body underwear 01, Body feet 01, head_2, Preview Hair. Please note: Not all body parts are protected, most can and will be removed by RemoveAllItems() during liverHack!

After this action go and take all the items in the bag on the ground, which was created while doing liverHack(). Equip and unequip your armor, just to check whether the body parts are correctly equipped without armor donned and whether Geralt in underwear looks complete and fine (not only in inventory screen, but in the game world).

Now you can play the game without any mod - forever, if you like, because liverHack and the procedure for duplicate body parts removal can be repeated.

More details about safety and the procedure proposed

If you are afraid, that this editing of a compressed savegame file will do damage (even with some utility not written yet it would be an unknown and untested thing, to compress again and use a Witcher 3 savegame file), please read http://fastcompression.blogspot.de/2011/05/lz4-explained.html and make you realize, that CD projekt RED did not even add a checksum to Witcher 3 savegame files. To increase safety (but it's probably paranoid), you can check, whether the string (the changed body part name fragment) present after editing does not occur elsewhere nearby in the savegame file, so it can not be used as a new match when building literals during compression of a block.

Q: I can't find the initial string when searching a save file. There was no PLAYER GERALT
A: Use the hex values given and search again. Check, whether you used the correct data-type to search for (text for text, hex for hex). I tested many save files, and always found this string exactly once. Always, without any exceptions. Perhaps the developers used it as an eyecatcher for dumps.

Q: After hex editing a savegame file, I was not able to reload the game, and was told, the save file is damaged.
A: It is possible, that the changed text was in use as replacement for compressed text elsewhere in the block. In this case, decompression will produce garbage. For eample, if you change the first occurrence of "Body", you'll probably provoke this. Try body parts one by one. Try another character in a body parts name fragment. If all fails, try another save game file.

Q: If you could load a file, or find the decompressed body part names in memory, did you see errors?
A: This never happened during all my tests. If it worked, there was always the expected change.

I did additional tests and checks, used HxD to look at edited savegame files after decompression in the memory of W3SavegameEditor.exe (uploaded earlier here), replaced "Body torso medalion" (protected) by "Body torso 01" (not protected and removable) and created a mod to alter Geralt's body parts, which are defined in one XML file: It is in the game's installation directory .../The Witcher 3 Wild Hunt GOTY/content/content0/bundles/xml.bundle, and the unpacked / uncooked file is in /gameplay/items_plus/_technical_items_defs.xml.
The tools needed to make a mod to change Geralts vital body parts are
- the ModKitchen v1.0.1 made by Vervurax: https://www.nexusmods.com/witcher3/mods/389
- the official updated Witcher 3 Modkit by CD Projekt RED: https://www.nexusmods.com/witcher3/news/12625
But please note, you don't need to mess around with body parts, this was just done for additional checks.

The only tools required for a full repair and refresh of a saved game, before the bug occurs, are
- the enhanced modDebugItemId by ssdany and me, which I uploaded earlier
- a Hex Editor like HxD

You'll need the enhanced mod, because you want to list the names and item IDs of duplicate body parts with maxID and allNoShowID after a first liverhack just for looking, so you know which body parts to edit. After editing, use maxID and do liverhack(offset), then save, undo edited changes, reload and restore Geralt's body as described. And please note, the liverhack(offset) in the enhanced mod requires to enter the offset proposed by maxID.

Later ssdany reworked his mod and improved the handling, this liverHack(offset) (upper/lowercase matters) just puts you at offset after the overflow, this is better, but not yet in the enhanced mod (and there is still a minor bug in that reworked mod, but ssdany fixed the code already, it's not uploaded yet).

While hacking witcher3.exe, I found some SItemUniqueIdGenerator and ...ClassBuilder(s), therefore I think, all new item IDs are created properly in a single place and the bug could be fixed just by reusing item IDs quite easily and safely. But we can't do this and the developers won't do it. But if they are aware, they might do it for their next game.

Therefore, don't dream, use what we got. I really did not believe, it would be possible, to achieve this.
 

Attachments

  • GERALTBody.zip
    519 bytes · Views: 351
Last edited:
karlblau;n9716871 said:
How to crush the bug

This is a long text, but again worthwhile to read, I hope, because now there is a full solution to repair saved games without any compromise.

The problem after overflow of the SItemUniqueId by doing the liverHack are copies of Geralts body parts, which occupy high unique item IDs and cannot be removed by normal means, because of a special protection by the game engine. It is desired, to be able to reset to a SItemUniqueId counter as low as possible, which is about 10, before taking any items.

Therefore, let's remove these additional body parts now, to proceed in the game with a clean savegame and for a long time without any additional hassle.

To do this, you guess it, the special protection is tricked and bypassed - by directly editing a Witcher 3 savegame file compressed into LZ4 chunks with a Hex Editor - and yes, this can be done easily, don't be afraid.

I used the very good HxD by Maël Hörz, this tool can edit files and memory (RAM) of running programs, and is available in many languages as an installable or portable version, look at https://mh-nexus.de/en/hxd/ and check the Download page.

I have added a file, which shows how Geralts basic body part names (a bunch of strings each preceeded by a byte with the length) look in a decompressed savegame: GERALTBody.txt (it's not all readable text, you can use Notepad, but you should use a Hex editor) and an example what to expect in a compressed savegame: GERALTBody.lz4 (you may see something different). But in any case, you should find the preceeding strings "'06'PLAYER'06'GERALT" or in hex 06 50 4C 41 59 45 52 06 47 45 52 41 4C 54. Now change one letter in the readable part of each name of these (and only these) body parts, which you want to remove, because there are duplicates with high item IDs.

The game will automatically remove any item with an invalid name from the inventory while loading a savegame file, whether it was a protected "Mighty Body Part" (® by ssdany) or not. Therefore after loading the skillfully damaged savegame file (Geralt may be partially invisible), save again, and then undo all the changes with your favourite Hex Editor in this new savegame file, because Geralt needs a body and you want him to be visible without armor. Reload this savegame, and restore Geralts basic body parts (you would not even need to equip the body parts, but it looks definitely better); possible commands are:

additem('Body torso medalion')
equipitem('Body torso medalion')
additem('Body palms 01')
equipitem('Body palms 01')

Other initial, protected body parts are: Body underwear 01, Body feet 01, head_2, Preview Hair. Please note: Not all body parts are protected, most can and will be removed by RemoveAllItems() during liverHack!

After this action go and take all the items in the bag on the ground, which was created while doing liverHack(). Equip and unequip your armor, just to check whether the body parts are correctly equipped without armor donned and whether Geralt in underwear looks complete and fine (not only in inventory screen, but in the game world).

Now you can play the game without any mod - forever, if you like, because liverHack and the procedure for duplicate body parts removal can be repeated.



If you are afraid, that this editing of a compressed savegame file will do damage (even with some utility not written yet it would be an unknown and untested thing, to compress again and use a Witcher 3 savegame file), please read http://fastcompression.blogspot.de/2011/05/lz4-explained.html and make you realize, that CD projekt RED did not even add a checksum to Witcher 3 savegame files. To increase safety (but it's probably paranoid), you can check, whether the string (the changed body part name fragment) present after editing does not occur elsewhere nearby in the savegame file, so it can not be used as a new match when building literals during compression of a block.

Q: I can't find the initial string when searching a save file. There was no PLAYER GERALT
A: Use the hex values given and search again. Check, whether you used the correct data-type to search for (text for text, hex for hex). I tested many save files, and always found this string exactly once. Always, without any exceptions. Perhaps the developers used it as an eyecatcher for dumps.

Q: After hex editing a savegame file, I was not able to reload the game, and was told, the save file is damaged.
A: It is possible, that the changed text was in use as replacement for compressed text elsewhere in the block. In this case, decompression will produce garbage. For eample, if you change the first occurrence of "Body", you'll probably provoke this. Try body parts one by one. Try another character in a body parts name fragment. If all fails, try another save game file.

Q: If you could load a file, or find the decompressed body part names in memory, did you see errors?
A: This never happened during all my tests. If it worked, there was always the expected change.

I did additional tests and checks, used HxD to look at edited savegame files after decompression in the memory of W3SavegameEditor.exe (uploaded earlier here), replaced "Body torso medalion" (protected) by "Body torso 01" (not protected and removable) and created a mod to alter Geralt's body parts, which are defined in one XML file: It is in the game's installation directory .../The Witcher 3 Wild Hunt GOTY/content/content0/bundles/xml.bundle, and the unpacked / uncooked file is in /gameplay/items_plus/_technical_items_defs.xml.
The tools needed to make a mod to change Geralts vital body parts are
- the ModKitchen v1.0.1 made by Vervurax: https://www.nexusmods.com/witcher3/mods/389
- the official updated Witcher 3 Modkit by CD Projekt RED: https://www.nexusmods.com/witcher3/news/12625
But please note, you don't need to mess around with body parts, this was just done for additional checks.

The only tools required for a full repair and refresh of a saved game, before the bug occurs, are
- the enhanced modDebugItemId by ssdany and me, which I uploaded earlier
- a Hex Editor like HxD

You'll need the enhanced mod, because you want to list the names and item IDs of duplicate body parts with maxID and allNoShowID after a first liverhack just for looking, so you know which body parts to edit. After editing, use maxID and do liverhack(offset), then save, undo edited changes, reload and restore Geralt's body as described. And please note, the liverhack(offset) in the enhanced mod requires to enter the offset proposed by maxID.

Later ssdany reworked his mod and improved the handling, this liverHack(offset) (upper/lowercase matters) just puts you at offset after the overflow, this is better, but not yet in the enhanced mod (and there is still a minor bug in that reworked mod, but ssdany fixed the code already, it's not uploaded yet).

While hacking witcher3.exe, I found some SItemUniqueIdGenerator and ...ClassBuilder(s), therefore I think, all new item IDs are created properly in a single place and the bug could be fixed just by reusing item IDs quite easily and safely. But we can't do this and the developers won't do it. But if they are aware, they might do it for their next game.

Therefore, don't dream, use what we got. I really did not believe, it would be possible, to achieve this.


Dear Karlblau,

HOLY MOLY!!!! I am absolutely AMAZED in what you and SSDany have been able to achieve here!! MY GOODNESS!!! This has to be celebrated with a nice COLD ONE!!!!
I just want to give you a High Five, shake your hands, play a game of Gwent with you, buy you all diner!! and so on.... Holy SMOKES!!!!

Now there is one thing Karlblau that I want / need to ask you because I have been going at it all night trying to get this whole thing to work. I got the DEV console to work
(I apparently had used it before but totally forgot about it because I almost NEVER used mods) and I have been trying to get yours / SSDany's modDebugItemID to work but
when extracting the latest version to my MODS folder and seeing the script being loaded by The Witcher 3, I try to enter the commandslines that should do something like
highestID or highestNoShowID or liverHack nothing happens.

I really do have experience with all this, even with hex editing savegames ( already have hex edited my last savegame but I think it wont do much because I first need to do the liverHack) and stuff like that but I am man enough to admit that I do need you guys help to get this to work.

So Karlblau, can you do me and every other Witcher 3 lover out there a HUGE ASS AWESOME FAVOR??
Can you please make a manual in which you explain point for point what I / someone need to finally solve / fix the problem we all have been experiencing and have been busy talking about / trying to solve??
Example:

1. Make a backup of your savegames somewhere
2. Edit the general.ini file @ c:\program files\The Witcher 3 (path may vary depending on where you installed your copy of The Witcher3) and add the following line to it:
[General]
ConfigVersion=2
DBGConsoleOn=true
3. Download the latest version of our file here (linky...)
4. After successfully downloading modDebugItemID.zip file extract the folder to your MODS folder @ c:\program files\The Witcher3\Mods (path may vary depending on where you installed your copy of The Witcher 3
5. After doing points 1 / 4 start the Witcher 3. You should see the Witcher 3 loading a script.
6. Loud the savegame you want to fix
7. When your savegame has been loaded open the Dev Console by pressing ~
8. When the Dev Console is opened one can type the following lines
ETC
ETC
ETC
25. Hex edit your savegame...
Etc
ETC

I think you get my drift....
I am asking you this because for me it IS clear you and SSDany have been working so damn hard trying to find a fix for this BUG and that you have found it!!!!. It is clear to me that I can finally fix my savegame and continue where I left off in The Witcher 3 .... .OMG... I love you for this!!!!... but whats unclear for me is what I need to do EXACTLY and in which order I need to do this.

So Karlblau, can you please do this for me? for all of us here?
I know its A LOT of work... I know you already spend SOOOO much time with SSDany trying to find this problem and HOT DAMN you even DID IT and FIXED it!!
But when you create a manual for us well.... thats just the cherry on top!!!!

If there is anything I can do to help... please PLEASE let me know.
you can always contact me via a PM.

I really do hope you will help us with this so that we can all play a carefree game of the Witcher 3... my goodness I still cant believe you fixed it....
CONGRATULATIONS!!!

Greetings

DrDeathhand
PS: when I found out my savegame was corrupted I found out because the BUG killed my WaterHag Trophy... it was just GONE!
Do you know of a way (after fixing my savegame) in which I can add the WaterHag Trophy to my inventory again??





 
Last edited:
DrDeathhand;n9720051 said:
PS: when I found out my savegame was corrupted I found out because the BUG killed my WaterHag Trophy... it was just GONE!
Do you know of a way (after fixing my savegame) in which I can add the WaterHag Trophy to my inventory again??
The developer console command additem('mh203_water_hag_trophy') would add it to your inventory, however, it is not possible to fix a game after the bug has destroyed the inventory already. The fix must be done, before the bug does any visible damage, before the uncontrolled SItemUniqueId overflow happens. I hope for you, that you have an earlier savegame with an uncorrupted inventory.

I'll try to complete your checklist:

1. Make a backup of your savegames somewhere.
2. Edit the general.ini file @ c:\program files\The Witcher 3 (path may vary depending on where you installed your copy of The Witcher3) and add the following line to it:
[General]
ConfigVersion=2
DBGConsoleOn=true
3. Download the enhanced version of modDebugItemID.zip in post #63, uploaded by karlblau, link https://forums.cdprojektred.com/filedata/fetch?id=9699911
4. After successfully downloading modDebugItemID.zip file extract the folder to your Mods folder @ c:\program files\The Witcher3\Mods (path may vary depending on where you installed your copy of The Witcher 3
5. After doing points 1 / 4 start the Witcher 3. You should see the Witcher 3 recompiling scripts.
6. Load the savegame you want to fix.
7. When your savegame has been loaded open the Dev Console by pressing ~ (depends on keyboard language)
8. When the Dev Console is opened, test whether it works, enter testMessage
9. Close the Dev Console (press ~ again), and hit E or Enter to confirm this crazy message built in by the developers.
10. Check whether modDebugItemID is loaded and works: Open the console again and enter help
11. Read this, them close the console and confirm / close the help text.
12. Unequip all mutagens your Geralt currently uses, but nothing else.
12. Now you need to learn, which unremovable body parts have duplicates with high item IDs, enter maxID and write down the proposed offset for liverhack.
13. Enter liverhack(<offset>), <offset> is the recommended offset.
14. Ignore the next steps recommended by liverhack, this liverhack was just for the check.
15. Enter maxID again and write down the names of the body parts with duplicates.
For example, if there are two rows in the display:
ID: 19441, Name: Body torso medalion
ID: 2, Name: Body torso medalion, mounted
then 19441 is a duplicate with a high item ID and you need to remove these body parts with hex editing. I changed the fragment meda into mfda and back to do this.
16. Now we do the real thing, reload the savegame you intend to fix.
17. Unequip all mutagens, enter maxID and liverhack(<offset>) again.
18. Geralt is nude now, but his body is complete. Save this game in a new save game slot.
19. Hex edit this savegame as described, change the names of body parts with duplicates.
20. Reload the edited savegame, Geralt is nude and probably incomplete, some parts missing.
21. Save this game in another new save game slot.
22. Hex edit this latest saved game, and undo the changes, restore the names of Geralts body parts.
23. Reload the edited savegame, add and equip the missing body parts, Geralt looks complete again.
24. Take all items in the bag on the floor, which appeared after liverhack.
25. Equip all stuff and rebuild your Gwent decks. You are done.

Please note: There are currently two different versions of modDebugItemID uploaded. The version uploaded first by ssdany supports these commands: highestID, highestNoShowID, highestNoDropID, showAll and liverHack(<offset>).
The version uploaded later by karlblau, based on an earlier version by ssdany, supports these commands: help, maxID, maxNoShowID, allNoShowID, maxNoDropID, removeitemID(<ID>,<quantity>), dropitemID(<ID>,<bool keep>), mountID, addknownRecipes, dropGwint, liverhack(<offset>) and this version provides much more output, like item names, what we need here. This liverhack (spelled differently) needs the offset as number to add to SItemUniqueId, while the first liverHack uses an absolute offset above zero, which is easier, but ok, all this is work in progress. We'll try to make a consolidated, better, final version later.

PS: I'll be not on the Internet for the next days, and can't help. Be patient ...

PPS: There might be more body parts and duplicates, than maxID lists on one screen. To be safe, use allNoShowID too, this can scroll down and list hundreds of lines, when you write down the names of body parts to remove by Hex editing. Maybe, you created more duplicates during your very long sessions than expected. All copies are removed together, if the name is changed.
BTW: The first duplicate of a body part, Body palms 01, is added when Geralt is shaved and prepared for his audience with emperor Emhyr in Wyzima.
 
Last edited:
karlblau;n9722261 said:
The developer console command additem('mh203_water_hag_trophy') would add it to your inventory, however, it is not possible to fix a game after the bug has destroyed the inventory already. The fix must be done, before the bug does any visible damage, before the uncontrolled SItemUniqueId overflow happens. I hope for you, that you have an earlier savegame with an uncorrupted inventory.

I'll try to complete your checklist:

1. Make a backup of your savegames somewhere.
2. Edit the general.ini file @ c:\program files\The Witcher 3 (path may vary depending on where you installed your copy of The Witcher3) and add the following line to it:
[General]
ConfigVersion=2
DBGConsoleOn=true
3. Download the enhanced version of modDebugItemID.zip in post #63, uploaded by karlblau, link https://forums.cdprojektred.com/filedata/fetch?id=9699911
4. After successfully downloading modDebugItemID.zip file extract the folder to your Mods folder @ c:\program files\The Witcher3\Mods (path may vary depending on where you installed your copy of The Witcher 3
5. After doing points 1 / 4 start the Witcher 3. You should see the Witcher 3 recompiling scripts.
6. Load the savegame you want to fix.
7. When your savegame has been loaded open the Dev Console by pressing ~ (depends on keyboard language)
8. When the Dev Console is opened, test whether it works, enter testMessage
9. Close the Dev Console (press ~ again), and hit E or Enter to confirm this crazy message built in by the developers.
10. Check whether modDebugItemID is loaded and works: Open the console again and enter help
11. Read this, them close the console and confirm / close the help text.
12. Unequip all mutagens your Geralt currently uses, but nothing else.
12. Now you need to learn, which unremovable body parts have duplicates with high item IDs, enter maxID and write down the proposed offset for liverhack.
13. Enter liverhack(<offset>), <offset> is the recommended offset.
14. Ignore the next steps recommended by liverhack, this liverhack was just for the check.
15. Enter maxID again and write down the names of the body parts with duplicates.

16. Now we do the real thing, reload the savegame you intend to fix.
17. Unequip all mutagens, enter maxID and liverhack(<offset>) again.
18. Geralt is nude now, but his body is complete. Save this game in a new save game slot.
19. Hex edit this savegame as described, change the names of body parts with duplicates.
20. Reload the edited savegame, Geralt is nude and probably incomplete, some parts missing.
21. Save this game in another new save game slot.
22. Hex edit this latest saved game, and undo the changes, restore the names of Geralts body parts.
23. Reload the edited savegame, add and equip the missing body parts, Geralt looks complete again.
24. Take all items in the bag on the floor, which appeared after liverhack.
25. Equip all stuff and rebuild your Gwent decks. You are done.

Please note: There are currently two different versions of modDebugItemID uploaded. The version uploaded first by ssdany supports these commands: highestID, highestNoShowID, highestNoDropID, showAll and liverHack(<offset>).
The version uploaded later by karlblau, based on an earlier version by ssdany, supports these commands: help, maxID, maxNoShowID, allNoShowID, maxNoDropID, removeitemID(<ID>,<quantity>), dropitemID(<ID>,<bool keep>), mountID, addknownRecipes, dropGwint, liverhack(<offset>) and this version provides much more output, like item names, what we need here. This liverhack (spelled differently) needs the offset as number to add to SItemUniqueId, while the first liverHack uses an absolute offset above zero, which is easier, but ok, all this is work in progress. We'll try to make a consolidated, better, final version later.

PS: I'll be not on the Internet for the next days, and can't help. Be patient ...

PPS: There might be more body parts and duplicates, than maxID lists on one screen. To be safe, use allNoShowID too, this can scroll down and list hundreds of lines, when you write down the names of body parts to remove by Hex editing. Maybe, you created more duplicates during your very long sessions than expected. All copies are removed together, if the name is changed.
BTW: The first duplicate of a body part, Body palms 01, is added when Geralt is shaved and prepared for his audience with emperor Emhyr in Wyzima.


Dear Karlblau,

Thank you very VERY much for making this post with the point for point explanation of the steps which are needed to take to make this fix work!!
Man Man!! OHHH MAN I have to say... I am very impressed what you and Ssdany have made... really awesome! I also had a laugh or two when using the whole Fix mod thing! :) especially using the liverhack with an offset of -11 or something hahahaha :)

Alright, well, I have been busy with your tool.
First thing I found out is something which is cool.
Earlier I told you that I had this savegame in which I could load and reload without the inventory getting corrupted. This was the savegame I send to you for experimenting / checking it out.

Well I ran maxID on it and voila, I was right all along, in this savegame I had exactly an offset of 47 left and one savegame further the offset would be -7 or something.
So I was correct in the fact that when I would talk to one of the bank persons in the quest which I was playing the inventory would get corrupted because probabley
something quest related would be added to my inventory and voila... the offset would be -3 or - 10 or something. So this sort of saves me a lot of time because I already
did the research. Only sad thing is... I lost about a day of gameplay but heck I already have not played The Witcher 3 in such a while now because of this stupid bug that I dont mind redoing a day :)

Ok well... after this is where it got tricky for me.
I followed all your steps till point 19 / 22 and something in there went wrong because after reloading the savegame the game would lockup.
So I have a couple of questions for you:

When doing maxID I get a list with the Items with very high ID's uses with the MAX being 65496 which is leaves me with a minimum offset for liverhack:47
In point 15 you explain about writing down the names of the body parts with duplicates after doing maxID. If I check out my maxID list (screenshot 1/4)
had only one body duplicate and that is ID65496,Name: head_4_tattoo,mounted and ID65496,Name:head_4_tattoo, there are other items in the list but nothing double.
But after experimenting some more I think I needed to do maxID after dropping my entire inventory on the ground by using liverhack(47)

1. You asked / said to unequip the equiped mutagens. But when checking my inventory I also noticed that I still had my GraveHag Trophy and things like the Horse blinds, sadle, sadle bags etc equiped.. Should I also unequip / drop these items as well with everything else?? Just like the Mutagens??

In point 19 you say "hex edit the savegame and change the the names of bodyparts with duplicates.
2. What do you mean with "change the names of bodyparts with duplicates?) Do you mean like you described earlier like: PLAYER.GERALT.Body V.@rwea³.....atorso ê.Aion...@palmr..? like change the t of the Torso in something else an the f for feet in something else like beet etc?
or do you mean I need to change all the duplicate body parts which I find in my list? In my example that leaves me with head_4_tattoo???

Maybe you can explain to me what I need to edit in my savegame when seeing my maxID list from this last savegame before the minimum offset goes to minus. (see screenshot 5 / 6 / 7down below)

3. Should the maxID list be completely empty after hexediting the bodyparts and then reloading that savegame and doing maxID? Because when I reload that savegame I have about 3 body parts left, see screenshot8 12-16

4. In point 23 you say add and equip the missing body parts. Do you mean by using this?
additem('Body torso medalion')
equipitem('Body torso medalion')
additem('Body palms 01')
equipitem('Body palms 01')
And if your answer is yes, can you please tell me all the commands for adding the bodyparts or show me a place / site where these commands are listed??

5. Game locks up after I Hexedit the savegame again to return the changed values of the body parts to what they were.
I tried to find out which body part it locks up to and it locks up when trying to change back Body Palms 01.
Must I change this body part to?
The before Body Palms value is atorso ê.Aion...@palmr..
The after HexEditing Bodypalms is this atorso ê.Bion...0almr
When I change 0almr back to palmr it locks up.. when I change it to @palmr it locks up to.
See screenshot 9 to 11 for more information.

6. I have savegames AFTER the savegame with the minimum 47 offset without which still have (visually) an intact inventory. I checked out those savegames
and I did not find anything corrupted in my inventory and I even still have the GraveHag Trophy. But when I do maxID I see a minimum offset for liver hack of -11 or something like that.
So when I run liverhack(-10) I get an error.
What I want to ask you is... even if the inventory still seems correct / uncorrupted... does it mean when you have a maxID over FFFF (65535) like 65554 that your already is corrupted?
Is it still fixable over when the maxID nr is over 65535 like 65554 or has it crossed a line and is corrupted?

Ok well Karlblau, I am going to continue on experimenting. I hope you are having a great time and that you will be back with us soon.

Again thank you and SSDany for making this all happen for us!!

GReetings

DrDeathhand

Screenshot1
Savegame with inventory in which you can not see a corrupted inventory but does have an MAXID of 65554

Screenshot2
Savegame with inventory in which you can not see a corrupted inventory but does have an MAXID of 65554

Screenshot3
Savegame with inventory with absolutely no corrupted inventory with an Minimum offset of 47

Screenshot4
Savegame with inventory with absolutely no corrupted inventory with an Minimum offset of 47

Screenshot5
maxID savegame with non corrupted inventory with unequiped Mutagens and Liverhack(47)

Screenshot6
maxID savegame with non corrupted inventory with unequiped Mutagens and Liverhack(47)

Screenshot7
maxID savegame with non corrupted inventory with unequiped Mutagens and Liverhack(47) and Hexedited Savegame, 4 items/bodyparts left.

Screenshot8
maxID savegame with non corrupted inventory with unequiped Mutagens and Liverhack(47) and Hexedited Savegame, 3 items/bodyparts left.

Screenshot9
Screenshot Witcher 3 savegame after doing liverhack offset 47 before hexediting it

Screenshot10
Screenshot Witcher 3 savegame after doing liverhack offset 47 after hexediting it

Screenshot11
Screenshot Witcher 3 savegame after doing liverhack offset 47 after hexediting it and trying to change it back look at palmr

Screenshot12
allNoShowID

Screenshot13
mountID

Screenshot 14
MaxNoShowID

Screenshot 15
MaxNoDropID


 
Last edited:
I don't have much time left, therefore I'll try to be short and exact.
... and voila... the offset would be -3 or - 10 or something
Any savegame with a negative offset proposed by maxID cannot be repaired, because an uncontrolled overflow of SItemUniqueID will happen after reload, there will be duplicate item IDs in any case. The savegame with a proposed offset of 47 should be useable however.
1. You asked / said to unequip the equiped mutagens. But when checking my inventory I also noticed that I still had my GraveHag Trophy and things like the Horse blinds, sadle, sadle bags etc equiped.. Should I also unequip / drop these items as well with everything else?? Just like the Mutagens??
Trophies on your horse and equipped horse equipement like a saddle are not in the player's inventory, but in a different inventory, the horse inventory, which contains only these 4 items. They must not be unequipped, to avoid consuming of additional item IDs in the player's inventory. This horse stuff will go through the process of liverhack and the RemoveAllItems function called by it internally untouched. The mutagens are another thing: this stuff will be moved to the player's inventory during liverhack, often consume additional item IDs, distort the predictions of maxID, and even be duplicated. You do not need to unequip anything except the mutagens before doing liverhack, not even armor or swords.
2. What do you mean with "change the names of bodyparts with duplicates?)
Look at your screenshot 6 - there you can see "Body torso medalion" six times, and if you had used allNoShowID, you would see at least one more with an ID below 6. Geralt needs only one "Body torso medalion", the other items are duplicates.
3. Should the maxID list be completely empty after hexediting the bodyparts and then reloading that savegame and doing maxID? Because when I reload that savegame I have about 3 body parts left, see screenshot8 12-16
No, you should not remove all body parts, only those with high item ID duplicates. You should try to remove only what is absolutely necessary. Screenshot 7 is fully sufficient and an indicator for a successful operation, because you got rid of all duplicates, and the game added two new body parts with IDs 8 and 9, your current head with tattoo and your current hairstyle.
4. In point 23 you say add and equip the missing body parts. Do you mean by using this?
additem('Body torso medalion')
equipitem('Body torso medalion')
additem('Body palms 01')
equipitem('Body palms 01')
And if your answer is yes, can you please tell me all the commands for adding the bodyparts or show me a place / site where these commands are listed??
Yes, exactly this way. For the other body parts, which you removed by hex editing, just use the names displayed by maxID or allNoShowID.
5. Game locks up after I Hexedit the savegame again to return the changed values of the body parts to what they were.
I tried to find out which body part it locks up to and it locks up when trying to change back Body Palms 01.
Must I change this body part to?
The before Body Palms value is atorso ê.Aion...@palmr..
The after HexEditing Bodypalms is this atorso ê.Bion...0almr
You may not change anything, neither during first hex editing, nor during hex editing back, which is not a readable, unchanged fragment of the body part name in clear text, or you will break the compressed data. In your case, "torso" and "ion" are fragments of "Body torso medalion" and "palm" (without r) is a fragment of "Body palms 01". If you can not change, considering this rule, the same character back, use another character of the readable fragment initially, or change less body part names at once and do two save/edit/restore/save/edit back steps. This IS a bit tricky and requires trial and error until successful. You, unfortunately, had many duplicates of nearly every body part (except Body underwear 01), and therefore more trial and error work awaits you. Sorry, I can't read the hex editor screenshots.
6. ... Is it still fixable over when the maxID nr is over 65535 like 65554 or has it crossed a line and is corrupted?
Forget it, it is corrupted, even if you don't see this immediately.
 
karlblau;n9760871 said:
I don't have much time left, therefore I'll try to be short and exact.

Any savegame with a negative offset proposed by maxID cannot be repaired, because an uncontrolled overflow of SItemUniqueID will happen after reload, there will be duplicate item IDs in any case. The savegame with a proposed offset of 47 should be useable however.

Trophies on your horse and equipped horse equipement like a saddle are not in the player's inventory, but in a different inventory, the horse inventory, which contains only these 4 items. They must not be unequipped, to avoid consuming of additional item IDs in the player's inventory. This horse stuff will go through the process of liverhack and the RemoveAllItems function called by it internally untouched. The mutagens are another thing: this stuff will be moved to the player's inventory during liverhack, often consume additional item IDs, distort the predictions of maxID, and even be duplicated. You do not need to unequip anything except the mutagens before doing liverhack, not even armor or swords.

Look at your screenshot 6 - there you can see "Body torso medalion" six times, and if you had used allNoShowID, you would see at least one more with an ID below 6. Geralt needs only one "Body torso medalion", the other items are duplicates.

No, you should not remove all body parts, only those with high item ID duplicates. You should try to remove only what is absolutely necessary. Screenshot 7 is fully sufficient and an indicator for a successful operation, because you got rid of all duplicates, and the game added two new body parts with IDs 8 and 9, your current head with tattoo and your current hairstyle.

Yes, exactly this way. For the other body parts, which you removed by hex editing, just use the names displayed by maxID or allNoShowID.

You may not change anything, neither during first hex editing, nor during hex editing back, which is not a readable, unchanged fragment of the body part name in clear text, or you will break the compressed data. In your case, "torso" and "ion" are fragments of "Body torso medalion" and "palm" (without r) is a fragment of "Body palms 01". If you can not change, considering this rule, the same character back, use another character of the readable fragment initially, or change less body part names at once and do two save/edit/restore/save/edit back steps. This IS a bit tricky and requires trial and error until successful. You, unfortunately, had many duplicates of nearly every body part (except Body underwear 01), and therefore more trial and error work awaits you. Sorry, I can't read the hex editor screenshots.
Forget it, it is corrupted, even if you don't see this immediately.


Dear KarlBlau,

Thanks again! for taking the time to answer my questions.
Regarding question (See below) I will send you the hexediting screenshots via PM.
Can you please take a look at them and then please answer / look @ the question again?

5. Game locks up after I Hexedit the savegame again to return the changed values of the body parts to what they were.
I tried to find out which body part it locks up to and it locks up when trying to change back Body Palms 01.
Must I change this body part to?
The before Body Palms value is atorso ê.Aion...@palmr..
The after HexEditing Bodypalms is this atorso ê.Bion...0almr
When I change 0almr back to palmr it locks up.. when I change it to @palmr it locks up to.
See screenshot 9 to 11 for more information.
 
Karlblau, you are a genius! I thought I would have to give up on this great game because of this bug, but your solution worked perfectly! One question though; how does the storage box play into this? Once I had finished with the liverhack/hex editing process and successfully "reset" the item IDs, I put all my runestones/glyphs in the storage so that I wouldn't burn up inventory IDs so quickly. However, the storage has its own inventory like you stated and the runes quickly use those IDs through loading or traveling to a new zone. Will this cause a problem in the future? Does the storage inventory need to be "reset" like the main inventory?
 
karlblau;n9760871 said:
I don't have much time left, therefore I'll try to be short and exact.

Any savegame with a negative offset proposed by maxID cannot be repaired, because an uncontrolled overflow of SItemUniqueID will happen after reload, there will be duplicate item IDs in any case. The savegame with a proposed offset of 47 should be useable however.

Trophies on your horse and equipped horse equipement like a saddle are not in the player's inventory, but in a different inventory, the horse inventory, which contains only these 4 items. They must not be unequipped, to avoid consuming of additional item IDs in the player's inventory. This horse stuff will go through the process of liverhack and the RemoveAllItems function called by it internally untouched. The mutagens are another thing: this stuff will be moved to the player's inventory during liverhack, often consume additional item IDs, distort the predictions of maxID, and even be duplicated. You do not need to unequip anything except the mutagens before doing liverhack, not even armor or swords.

Look at your screenshot 6 - there you can see "Body torso medalion" six times, and if you had used allNoShowID, you would see at least one more with an ID below 6. Geralt needs only one "Body torso medalion", the other items are duplicates.

No, you should not remove all body parts, only those with high item ID duplicates. You should try to remove only what is absolutely necessary. Screenshot 7 is fully sufficient and an indicator for a successful operation, because you got rid of all duplicates, and the game added two new body parts with IDs 8 and 9, your current head with tattoo and your current hairstyle.

Yes, exactly this way. For the other body parts, which you removed by hex editing, just use the names displayed by maxID or allNoShowID.

You may not change anything, neither during first hex editing, nor during hex editing back, which is not a readable, unchanged fragment of the body part name in clear text, or you will break the compressed data. In your case, "torso" and "ion" are fragments of "Body torso medalion" and "palm" (without r) is a fragment of "Body palms 01". If you can not change, considering this rule, the same character back, use another character of the readable fragment initially, or change less body part names at once and do two save/edit/restore/save/edit back steps. This IS a bit tricky and requires trial and error until successful. You, unfortunately, had many duplicates of nearly every body part (except Body underwear 01), and therefore more trial and error work awaits you. Sorry, I can't read the hex editor screenshots.
Forget it, it is corrupted, even if you don't see this immediately.


Dear Karlblau,

I think I managed to do the whole procedure correctly and that everything is as it should be now! how AWESOME!!!

But I did notice a couple of things.

1. When doing maxID @ Geralt before doing the liverhack (offset) command I see that Geralt has 3884 items.
2. When doing liverhack (4) saving the game, reloading the game editing savegame, adding equiping body parts etc, and at the final step adding the items that where dropped on the ground again I get a total amount of 3356 items... and then equiping the items I get to an item ID of 3362
3. Also I noticed the following: I had Dried Fish equipped in one of my quick item slots. I had 78 of them. When I picked everything up again after doing the liverhack FIX I had 77 Dried Fish left instead of 78.

So I have the following questions for you.

1. The inventory in the last non corrupted savegame that I have still has Glyphs and Runestons in it. Would it be better to first put all these Glyphs and Runestones in storage before doing the whole
fix inventory process thing? or doesnt that really matter?? (I mean you can always keep on monitoring the savegame using maxID while playing and then when the inventory comes lose to the corruption point do the whole process again right??)
2. Does the risk increase of getting a corrupted storage inventory when I put all my Glyphs and Runestones in there? and if so does this storage inventory need to be reset because of that??
This is sort of related with the question SpenceW asked (see quote below)

SpenceW;n9766681 said:
Karlblau, you are a genius! I thought I would have to give up on this great game because of this bug, but your solution worked perfectly! One question though; how does the storage box play into this? Once I had finished with the liverhack/hex editing process and successfully "reset" the item IDs, I put all my runestones/glyphs in the storage so that I wouldn't burn up inventory IDs so quickly. However, the storage has its own inventory like you stated and the runes quickly use those IDs through loading or traveling to a new zone. Will this cause a problem in the future? Does the storage inventory need to be "reset" like the main inventory?

3. Can you explain why the 78 Dried Fish item changes to 77 Dried Fish when I pick up my inventory after doing the FIX?
4. As stated earlier, before I start using the liverhack FIX I have a total maxID items of 3884, after doing the liverhack FIX and picking up my dropped inventory Items I have 3356 items.
The difference is 528 items. What I would like to know is which items have been removed that make up for the difference of 528 items? Or are all these 528 items the double items / double body parts in the inventory?
5. Can I be sure that I get all the items I dropped on the ground with liverhack when I pick them up again? (I am asking this because of the Dried Fish that changed in amount plus the total maxID inventory size which changes from 3884 to 3356 items)

Alright Karlblau :) I hope to hear from you again.

Again thank you and thank SSDany for this!!

Greetings

DrDeathhand
 
Hello there fellas. First off I have to say I read this entire blog. All 5 pages. Every line, every word, every letter. My head is spinning:) There is a lot of technical information posted and most, if not all, is due to ssdany and karlblau. Thank you to you both for your dedicated and determined time and effort to find a"fix" for this dreaded bug, which I unfortunately like many others here and in the Witcher 3 universe am experiencing. I have invested nearly 1100hrs of my time with this game, and have done so for almost this entire year. I work between 40-50hrs a week and have some time on weekends to play. After all this time and emotional investment in this amazing game, I completely feel let down by CDPR that they won't even as much as login here and at least post something on this issue. This is a massive open world RPG and these are issues that they should expect to arise. They can not nor should they expect ALL players to play in a certain way and "bomb" through the campaign within 50-100hrs. I realize there are players out there that "run" through a game as fast as possible. This IMO is not one of those games. There is so much to do, and it is called a "roll playing" game for this exact reason. We roll play a character, and "full immersion" can only be obtained by a "full experience". If I am forced to run through this game without being able to collect all ingredients, swords, crafting components, due all quests, so on so forth,etc...it is drastically taking away from a full experience. CDPR is a fantastic and extremely talented game developing co, with amazing writers, and have been very supportive of their fans and customers in the past. I really do hope they intend to keep up their PR image, if only because it is so important to the future of their well being as a game distribution co. Cyberpunk is just around the corner(at least I think so) and it would be a horrible let down if it was plagued by similar or identical bug/s. At the same time the Witcher franchise is still out there on all clients like Steam and GoG and is still selling furiously, and just because they have moved on to a different project, does not mean, by any means that they should abandon this one and the huge community it has gathered. A COMMUNITY THAT IS OBVIOUSLY STILL IN NEED OF THEIR SUPPORT!!

Ok now that my rant is done with:), I would like to try this mod or fix but every time I attempt to download it, the link just opens a blank page. Nothing ever appears on it, nor does it ever start downloading anything.

This link:
karlblau;n9722261 said:
Download the enhanced version of modDebugItemID.zip in post #63, uploaded by karlblau, link https://forums.cdprojektred.com/file...tch?id=9699911
.....opens the blank page.

If anyone can provide a good link or just help me get this mod, I would really appreciate it!!!

I have one last question. What happens if we keep playing on a corrupted game. What's the worst that can happen? The missing face bug is obviously horrible and very immersion breaking, but I'm just wondering if that's the worst of it or if it can get worse, like CTD. I am close to the end of the main game but still have Hos and BaW to do, so either way I have to figure something out, cause giving up over 1000hrs of my time is not an option.
Thanks for reading guys, and I really hope this fix can morph into an easier and easier option for people, and that CDPR decide to do the right thing and help us out!


EDIT: Never mind. I got the mod. Had to be logged in first. Duh,God do I feel smart:)
I may still need some help with how it works. For now I will try to follow karlblau's instructions
 
Last edited:
These are some pics so people can see some of the symptoms associated with this bug

Don't know why but I couldn't upload first 2pics in full size. They show that where there should only be different types of crossbow bolts there are random ingredients(like crafting/alchemy) and even documents like "devil by the well contract". Weird indeed!

Last pic shows the two invisible item slots in the "other" inventory section

20171105200248_1.jpg
20171105200254_1.jpg
20171105200150_1.jpg



 
Last edited:
OK...it's 2:26am and I think I finally fixed my save game. I'm very hopeful at least. I've been at this all day and it took a lot of trial and error, but I think I narrowed it down a bit. I'm gonna try to explain it in "layman's terms" so that others that aren't so technically gifted(such as myself) can understand it. The list that karlblau put up is fairly straight forward and easy to follow.

Step 13:
karlblau;n9722261 said:
13. Enter liverhack(), is the recommended offset.
(<offset>) gave me a bit of trouble. I kept entering i.e.: "liverhack(<263>)" and kept getting the "You failed Miserably" error message. To dilute confusion further, 263 was my personal offset number. Everyones' will be different. You obtain it in the 12th step after using the maxID command. But going back to why it wasn't working is because of the little < >symbols. Do not type them in:) as I found out the hard way after the 5th time I attempted this fix. So basically it should look like this: liverhack(263).

Step 19 is also a bit on the complicated side:
To simplify it here is what I understood from this file
karlblau;n9716871 said:
Attached Files GERALTBody.zip (519 Bytes, 1 view)

The .txt file is basically a "translation" file so we can pin point what "body parts" to search for in the save file using the hex editor program
The .lz4 file is how the "body part" actually appears in the save file after you open it in hex editor.
So if my save file is corrupt because I have accumulated too many "Body torso medalion" body parts, I use ctrl+F in hex editor and search for "torso meda". All you have to do is change the first letter. So from "torso meda" to "dorso meda" or "morso meda" or any letter your heart desires. Save the file in hex editor and continue on with the rest of karlblau's list.

Body underwear = Prwear
Body torso medalion = torso meda
Body palms = palmI
gloves = gloves
Body feet = feet
head_2 = head_2
Preview Hair = Preview Hair
Geralt fists = fists

I've attached a couple of pics to help clarify things. I really hope I got his right. If anyone feels I got it wrong please feel free to correct it. I am just trying to pay it forward and do my part to help others

This is the corrupt save after I ran the maxID command(Step 12) to obtain the proposed offset(263 in my case) for the liverhack(offset) command(Step 13)
MaxID(coprrupt save file).jpg

This is the "clean & fixed" save file after finishing karlblau's list
MaxID(fixed&not coprrupt save file).jpg
 
Last post...I promise:)
After using this fix, can we continue playing in the same style as before. Hording, collecting plants, weapons, items to sell? after all that's about the only way top make money in this game, unless you cheat and that's is where I draw the line. I have a finite feeling that it would corrupt the save files again...eventually. If that is the case, can we use this mod to "fix" the save files as many times as needed?
 
Amazing! This worked like a charm. Let me tell you my success story real quickly.

I first really noticed that I am affected by this bug when I did "The Great Escape" in NGP after approx. 450 hours. Geralt's face kept disappearing if I loaded a save done after completing the quest. I didn't stumble upon this thread yet and couldn't find any help elsewhere. I just got lucky by redoing the quest several times, eventually I could keep my face and carry on. Later before finishing the main story I noticed those broken invisible items in the inventory (which, as we know now, are duplicates of Geralt's body parts) and strange inventory behavior in general, as described here - random items being used as crossbow ammunition or ending up in quick slots even though they're not supposed to work there. I just fixed this and went on my way to Hearts of Stone. After getting thrown out of the Borsodi's auction house in "Open Sesame!", my silver sword was just gone. So I did as i did before, replayed the part and was done with it.

Then yesterday in Blood and Wine, when I finally reached level 100 and was about to go craft the remaining witcher gear from the DLCs, I noticed that I was missing 3 schematics. I checked the locations where you got them and verified that I completed the quests successfully - I had all the other diagrams after all. So, enabled debug console, looked for the respective item codes and tried to add them. Didn't work - I always ended up with Viziman Champion or Kaedwenian Stout, and as I was confident I used the correct codes (I extracted them from the game files myself, after all), the point was reached where I had to dig deeper. I could have just given myself the already crafted items, but that was a last resort. Just before giving up I stumbled upon this thread and read the whole thing. Really great development, enjoyed doing so even though it took me some hours!

As my savegame had been corrupted for quite a while (50 hours of gameplay time at the least), I had low confidence that I could fix it at this point, especially after the last posts claiming that it wouldn't work. Expected to get a negative offset. Fortunately, that didn't happen. Got an offset of 158 and passed it to liverHack, changed the name of all 6 protected items in the save file (which took a few tries as head_2 got recompressed differently each time), reequipped my body parts and given myself all papers as items again (just because that's how the game does it apparently, when you pick them up). Not only were all the broken items gone, but the items I previously missed - at least three diagrams and one trophy - magically appeared in my inventory now. Thus, this fix can definitely work on a broken savegame, as long as your inventory is in a state to get a positive offset.

So, I think I can kind of confirm Nitnat's suspicion here: You're probably able to fix your savegame multiple times with this neat hack. I'm still more carefully managing my inventory now after reading all this (not using up a whole stack to save item IDs for example), but I know that should I hit the limit again/trigger a collision with a protected body part, I can try again. Probably won't happen as I'm almost done with this save, but nice to know in any case.

To end this text which turned out to be not so real-quick, I want to thank everyone involved for putting this tremendous amount of time in creating a workaround for this game-breaking bug, especially ssdany and karlblau! Really well done, and being a developer myself, this was a interesting read. The mystery unravelled ever more. With each post, it was possible to understand the problem more and more, explaining why it manifested itself as the symptoms experienced.
 
Last edited:
Kevin04;n10013481 said:
Amazing! This worked like a charm. Let me tell you my success story real quickly.

As my savegame had been corrupted for quite a while (50 hours of gameplay time at the least), I had low confidence that I could fix it at this point, especially after the last posts claiming that it wouldn't work. Expected to get a negative offset. Fortunately, that didn't happen. Got an offset of 158 and passed it to liverHack, changed the name of all 6 protected items in the save file (which took a few tries as head_2 got recompressed differently each time), reequipped my body parts and given myself all papers as items again (just because that's how the game does it apparently, when you pick them up). Not only were all the broken items gone, but the items I previously missed - at least three diagrams and one trophy - magically appeared in my inventory now. Thus, this fix can definitely work on a broken savegame, as long as your inventory is in a state to get a positive offset.

So, I think I can kind of confirm Nitnat's suspicion here: You're probably able to fix your savegame multiple times with this neat hack. I'm still more carefully managing my inventory now after reading all this (not using up a whole stack to save item IDs for example), but I know that should I hit the limit again/trigger a collision with a protected body part, I can try again. Probably won't happen as I'm almost done with this save, but nice to know in any case.

Dear Kevin04,

How awesome to hear that this mod is also working for you!!

I just read your post and you wrote down something interesting and well I would like to ask you about that.
You said that after hexediting the savegames and reequipping your bodyparts etc you got all items back that where missing or broken.

You wrote down (see Quote) that you got an offset of 158, but what was your Max ID used? Because the mod it self says that if your Max ID is over 65535 that the mod wont work
properly and it even scolds you with "Do you even know what your doing?" and stuff like that.
So I really wonder what your Max ID was.

I just reloaded the savegame in which I was the furthest gameplay wise when I found out I had this bug. I did maxID and got 65512 with an offset of 31.
So I did liverhack (31) and got the silly "do you know what your doing" message. Still all the items where dropped and the list in maxID that I got afterwards
is exactly the same in ID's and stuff as I got with the lastsavegame I have where I know a 100% uncorrupted inventory where as my inventory in this savegame is corrupted.

Maybe you can write down exactly what you did point for point? maybe even with some screenshots?

Awaiting your response,

DrDeathhand

 
Top Bottom