I've created a small python script that reads two JSON files to form a complete unlock file
python3.8 is required to run (probably can run in older version tho)
import json, os PROFILE_JSON_PATH='./' PROFILE_JSONFILE='profile.json' OUTPUT_PROFILE_JSONFILE='test_profile.json' ENCOUNTERS_JSON_PATH='./' ENCOUNTERS_JSONFILE='encounters.json' unlocked = {} all_cgs = {'animatedCgSeen': [], 'cgSeen': []} to_unlock = {'animatedCgSeen': [], 'cgSeen': []} with open(os.path.join(PROFILE_JSON_PATH, PROFILE_JSONFILE), 'r') as f: jprofile = json.loads(f.read()) for k, v in jprofile.items(): if k in ['cgSeen', 'animatedCgSeen']: unlocked[k] = v with open(os.path.join(ENCOUNTERS_JSON_PATH, ENCOUNTERS_JSONFILE), 'r') as f: jencounters = json.loads(f.read()) for k, v in jencounters.items(): for i in v: if 'animatedForeground' in i.keys() and i['animatedForeground'] not in all_cgs['animatedCgSeen']: all_cgs['animatedCgSeen'].append(i['animatedForeground']) if 'foreground' in i.keys() and i['foreground'] not in all_cgs['cgSeen']: all_cgs['cgSeen'].append(i['foreground']) for i in all_cgs['cgSeen']: if i not in unlocked['cgSeen']: to_unlock['cgSeen'].append(i) for i in all_cgs['animatedCgSeen']: if i not in unlocked['animatedCgSeen']: to_unlock['animatedCgSeen'].append(i) for k, v in to_unlock.items(): for i in v: jprofile[k][i] = 1 with open(os.path.join(PROFILE_JSON_PATH, OUTPUT_PROFILE_JSONFILE), 'w') as f: f.write(json.dumps(jprofile, indent=4))
I was running on the local dir for the save files so I didn't need to fiddle with path too much, generating a file called test_profile.json
The real issue is that the encounters.json file is only found in the .jar file in `script/encounters.json` and it's filled with multiple INVALID JSON so there's a lot to patch up to make this work. I honestly hope they do fix-up the JSON files so this can run smoother.
The idea is to only unlock what you haven't already, hence some checks if the scenes were seen or not.