From 3af99c74b05ebc411d36472dbd69af42403c7ee8 Mon Sep 17 00:00:00 2001 From: Nicolas Vaezi Date: Sat, 17 Feb 2024 20:04:33 +0100 Subject: [PATCH] =?UTF-8?q?Reassign=20Pals=E2=80=99=20owner=20and=20remove?= =?UTF-8?q?=20placeholder=20guild.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fix-host-save.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/fix-host-save.py b/fix-host-save.py index 2054e9f..9675756 100644 --- a/fix-host-save.py +++ b/fix-host-save.py @@ -85,11 +85,25 @@ def main(): instance_id = level_json['properties']['worldSaveData']['value']['CharacterSaveParameterMap']['value'][i]['key']['InstanceId']['value'] if instance_id == old_instance_id: level_json['properties']['worldSaveData']['value']['CharacterSaveParameterMap']['value'][i]['key']['PlayerUId']['value'] = new_guid_formatted - break + + # Pal owner replacement + save_parameter_value = level_json['properties']['worldSaveData']['value']['CharacterSaveParameterMap']['value'][i]['value']['RawData']['value']['object']['SaveParameter']['value'] + if 'OwnerPlayerUId' in save_parameter_value: + owner_id = save_parameter_value['OwnerPlayerUId']['value'] + if owner_id == old_guid: + level_json['properties']['worldSaveData']['value']['CharacterSaveParameterMap']['value'][i]['value']['RawData']['value']['object']['SaveParameter']['value']['OwnerPlayerUId']['value'] = new_guid_formatted + + # Pal old owner replacement + if 'OldOwnerPlayerUIds' in save_parameter_value: + old_owners = save_parameter_value['OldOwnerPlayerUIds']['value']['values'] + for j in range(len(old_owners)): + if old_owners[j] == old_guid: + level_json['properties']['worldSaveData']['value']['CharacterSaveParameterMap']['value'][i]['value']['RawData']['value']['object']['SaveParameter']['value']['OldOwnerPlayerUIds']['value']['values'][j] = new_guid_formatted # Guild data replacement. if guild_fix: group_ids_len = len(level_json['properties']['worldSaveData']['value']['GroupSaveDataMap']['value']) + previous_guild_id = "" for i in range(group_ids_len): group_id = level_json['properties']['worldSaveData']['value']['GroupSaveDataMap']['value'][i] if group_id['value']['GroupType']['value']['value'] == 'EPalGroupType::Guild': @@ -105,6 +119,18 @@ def main(): for j in range(len(group_data['players'])): if old_guid_formatted == group_data['players'][j]['player_uid']: group_data['players'][j]['player_uid'] = new_guid_formatted + previous_guild_id = group_id['key'] + + # Fix double guild - When the user was already in a guild, user will have he's previous one and the default empty one + if previous_guild_id != "": + for i in range(group_ids_len): + group_id = level_json['properties']['worldSaveData']['value']['GroupSaveDataMap']['value'][i] + if group_id['value']['GroupType']['value']['value'] == 'EPalGroupType::Guild' and group_id['key'] != previous_guild_id: + if not group_id['value']['RawData']['value']['base_ids']: + level_json['properties']['worldSaveData']['value']['GroupSaveDataMap']['value'].pop(i) + key = group_id['key'] + break + print('Done!', flush=True) # Convert JSON back to save files.