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.