First, save files are JSON formatted so it will be a lot easier to work with the files if you have an editor that specifically can work with JSON. It is also important to know the basics of how JSON format works, so you know what to look for and how not to break it. I use https://jsoneditoronline.org/, simply because it does what I need without needing to download another text editor.
- Files can be used by the site through the interface to load a file or by using a text editor to copy the entire contents of the file into a panel in "Code" mode.
- A panel can be switched between "Code" and "Tree" modes at the top left of the panel. "Code" mode is better for copying large amounts of text, and "Tree" mode is better for navigating the data to find specific entries.
- To the right of the mode buttons is the format buttons for "Code" mode. "Format JSON data" will put entries on separate lines and make it easier to read. "Compact JSON data" will condense it to the same style as Strive produces. The game will not care which formatting you put in the file.
- To save the changes, the interface can be used to but it will create a newly downloaded file with a .json extension which will make it different from the original (safe to use), or the text can be copied back into the file and saved with a text editor.
Second, in order to transfer a slave it is important to know which data can cause conflicts, and how to resolve the conflicts.
- Each slave has an "id", which is a number stored as text and is unique to that slave within that file. This number comes from "slavecounter" in "state", and that number increases by 1 after it is assigned to a newly created slave.
- Each slave has interpersonal "relations" with other slaves; this consists of a pair of numbers: the other slave's "id" followed by a score from -1000 to 1000 for how well they like each other(the score should be the same for both slaves). The other slaves' "id" will not be appropriate for the new file and will need to be either changed or have the pair of numbers removed.
- Each slave has "preg" data, though only slaves with vaginas can be pregnant. If a slave is pregnant, then transferring the slave with the baby will be more complex. The "id" for the baby will be found in "preg" and the person data for the baby will be found in "babylist".
- Some slaves have a tag specified under "unique", though for most slaves this will be empty. This tag is used by quests to locate the relevant slave, so if the slave you are copying across has a tag then the related quests may behave oddly. In general, this means that the last slave in the slavelist with a copy of the tag will be considered the true copy.
- In "state" there is "relativesdata", which contains records of family relations stored under the slave's "id" and listing the other slaves by their "id". The other slaves' "id" will not be appropriate for the new file and will need to be either changed or replaced with -1.
Third, the process of transfer can differ depending on the desired results; however, always create a backup copy before attempting changes as mistakes can be hard to fix. There are two basic ways of transferring a slave. Adding the slave as a new person, or overwriting an existing slave. In general, adding a new person should be used as it is simpler, but if you wish to avoid having duplicates of a slave then overwriting can be used.
To add a new slave from another file:
- Inside the "slaves" list in the old file, find the entire slave dictionary, inside the curly brackets { }, and copy it into the "slaves" list for the new file. The order you put the new slave in the list is not very important. Lists must have entries separated by commas like this: [entry1,entry2,entry3], and be sure not to put the slave inside another slave's entry.
- The "id" of the new slave should be changed to the current value of "slavecounter" (as a text value) and "slavecounter" should be increased by 1.
- If the slave is being transferred alone, then delete the contents of "relations" should be deleted to just empty brackets []. If not, then the "id"s for the other slaves transferred will need to be adjusted accordingly and the rest of the entries will be deleted.
- If the slave is pregnant (be sure to check), then either you will need to transfer the baby as well(using all the steps) or abort the baby. The baby can be aborted easily in game or the "preg" data can be altered to erase the baby ("baby": null, "duration": 0, remember to change the relative data as well).
- If the slave has a "unique" tag like "startslave", consider changing it to null to avoid quest confusion.
- If the slave is not being transferred alone or the slave is going to be related to the player character, find "relativesdata" in the old file and search for each transferred slave's old "id". Transfer the dictionary entry, inside curly brackets { }, for the slave to the "relativesdata" in the new file, though you must change all "id"s including the slave's id before the entry to match the "id"s in the new file. Remember the commas, it should look similar to this {id1: {entry1}, id2: {entry2} }. The order of entries does not matter.
To replace a slave with another slave:
- Inside the "slaves" list in the new file, find the slave to be replaced, and copy the entire slave dictionary, inside the curly brackets { }, to a blank file for referencing later.
- Inside the "slaves" list in the old file, find the entire slave dictionary, inside the curly brackets { }, and copy it over the replaced slave in the new file. Lists must have entries separated by commas like this: [entry1,entry2,entry3], and be sure not to put the slave inside another slave's entry.
- The "id" and "relations" of the replaced slave should be copied into the new slave.
- If the slave is not being transferred alone, then the "relations" pairs of numbers corresponding to the other transferred slaves will need to be added to the new slave's relations.
- If the slave is pregnant (be sure to check), then either you will need to transfer the baby as well(using all the steps) or abort the baby. The baby can be aborted easily in game or the "preg" data can be altered to erase the baby ("baby": null, "duration": 0, remember to change the relative data as well).
- If the slave has a "unique" tag like "startslave" and is not replacing a slave with the same tag, consider changing it to null to avoid quest confusion.
- If the slave is transferred along with relatives, find "relativesdata" in the old file and search for the slave's old "id". If a relative's old "id" is found in the data, then add the relative's new "id" to the corresponding field. If the relative is added as a new person, transfer the dictionary entry, inside curly brackets { }, for the slave to the "relativesdata" in the new file, and change all "id"s including the slave's id before the entry to match the "id"s in the new file. Remember the commas, it should look similar to this {id1: {entry1}, id2: {entry2} }. The order of entries does not matter.