diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 3e42d8c6de7..08991f1edc7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -217,7 +217,8 @@ datum/preferences dat += "Load slot - " dat += "Save slot - " dat += "Reload slot - " - dat += "Reset slot" + dat += "Reset slot - " + dat += "Copy slot" else dat += "Please create an account to save your preferences." @@ -273,6 +274,14 @@ datum/preferences return 0 load_character(SAVE_RESET) sanitize_preferences() + else if(href_list["copy"]) + if(!IsGuestKey(usr.key)) + open_copy_dialog(usr) + return 1 + else if(href_list["overwrite"]) + overwrite_character(text2num(href_list["overwrite"])) + sanitize_preferences() + close_load_dialog(usr) else return 0 @@ -332,3 +341,29 @@ datum/preferences /datum/preferences/proc/close_load_dialog(mob/user) //user << browse(null, "window=saves") panel.close() +<<<<<<< HEAD +======= + +/datum/preferences/proc/open_copy_dialog(mob/user) + var/dat = "" + dat += "
" + + var/savefile/S = new /savefile(path) + if(S) + dat += "Select a character slot to overwrite
" + dat += "You will then need to save to confirm
" + var/name + for(var/i=1, i<= config.character_slots, i++) + S.cd = "/character[i]" + S["real_name"] >> name + if(!name) name = "Character[i]" + if(i==default_slot) + name = "[name]" + dat += "[name]
" + + dat += "
" + dat += "
" + panel = new(user, "Character Slots", "Character Slots", 300, 390, src) + panel.set_content(dat) + panel.open() +>>>>>>> 6927ca1... Merge pull request #5988 from PrismaticGynoid/charactercopy diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 22eab43de58..652f2ac082f 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -94,6 +94,22 @@ player_setup.save_character(S) return 1 +/datum/preferences/proc/overwrite_character(slot) + if(!path) return 0 + if(!fexists(path)) return 0 + var/savefile/S = new /savefile(path) + if(!S) return 0 + if(!slot) slot = default_slot + if(slot != SAVE_RESET) + slot = sanitize_integer(slot, 1, config.character_slots, initial(default_slot)) + if(slot != default_slot) + default_slot = slot + S["default_slot"] << slot + else + S["default_slot"] << default_slot + + return 1 + /datum/preferences/proc/sanitize_preferences() player_setup.sanitize_setup() return 1 diff --git a/html/changelogs/PrismaticGynoid - charactercopy.yml b/html/changelogs/PrismaticGynoid - charactercopy.yml new file mode 100644 index 00000000000..2c732b2b93d --- /dev/null +++ b/html/changelogs/PrismaticGynoid - charactercopy.yml @@ -0,0 +1,6 @@ +author: PrismaticGynoid + +delete-after: True + +changes: + - rscadd: "Adds the ability to copy a character slot onto another one, allowing for easier rearranging of characters, or wiping characters by copying empty slots."