From a1c64cba489cc24055a4616e50f026b729dd3e3b Mon Sep 17 00:00:00 2001 From: DragonTrance Date: Sun, 7 Mar 2021 16:58:59 -0700 Subject: [PATCH] quickly change antag prefs across characters --- code/__DEFINES/preferences.dm | 1 + code/modules/client/preferences.dm | 32 +++++++++++++++++++++ code/modules/client/preferences_savefile.dm | 6 ++-- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index a2f57313..1f0e0152 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -15,6 +15,7 @@ #define DISABLE_DEATHRATTLE (1<<12) #define DISABLE_ARRIVALRATTLE (1<<13) #define COMBOHUD_LIGHTING (1<<14) +#define ANTAG_SYNC_WITH_CHARS (1<<15) #define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 36b6058b..0f48a9dd 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1102,6 +1102,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" if(4) //Antag Preferences + dat += "
" dat += "

Special Role Settings

" if(jobban_isbanned(user, ROLE_SYNDICATE)) dat += "

You are banned from antagonist roles.

" @@ -1122,6 +1123,13 @@ GLOBAL_LIST_EMPTY(preferences_datums) else dat += "Be [capitalize(i)]: [(i in be_special) ? "Enabled" : "Disabled"]
" dat += "Midround Antagonist: [(toggles & MIDROUND_ANTAG) ? "Enabled" : "Disabled"]
" + dat += "
" + dat += "

Sync Settings

" + dat += "Sync antag prefs. with all characters: [(toggles & ANTAG_SYNC_WITH_CHARS) ? "Yes" : "No"]
" + dat += "Copy and save antag prefs. to all characters: Copy
" + dat += "Reset antag prefs. for this character: Reset
" + dat += "
" + dat += "
" @@ -2523,6 +2531,30 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("allow_midround_antag") toggles ^= MIDROUND_ANTAG + + if("sync_antag_with_chars") + toggles ^= ANTAG_SYNC_WITH_CHARS + if(!(toggles & ANTAG_SYNC_WITH_CHARS) && path) + var/savefile/S = new /savefile(path) + if(S) + S["special_roles"] >> be_special + + if("copy_antag_to_chars") + if(path) + var/savefile/S = new /savefile(path) + if(S) + var/initial_cd = S.cd + for(var/i=1, i<=max_save_slots, i++) + S.cd = "/character[i]" + if(S["real_name"]) + WRITE_FILE(S["special_roles"], be_special) + S.cd = initial_cd + to_chat(parent, "Successfully copied antagonist preferences to all characters.") + else + to_chat(parent, "Could not write to file.") + + if("reset_antag") + be_special = list() if("parallaxup") parallax = WRAP(parallax + 1, PARALLAX_INSANE, PARALLAX_DISABLE + 1) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 53cc37dc..823d21b9 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -366,7 +366,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["job_engsec_low"] >> job_engsec_low //Antags - S["special_roles"] >> be_special + if(!(toggles & ANTAG_SYNC_WITH_CHARS)) + S["special_roles"] >> be_special //Quirks S["all_quirks"] >> all_quirks @@ -606,7 +607,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["medical_records"] , medical_records) //Misc. - WRITE_FILE(S["special_roles"] , be_special) //Preferences don't load every character change + if(!(toggles & ANTAG_SYNC_WITH_CHARS)) + WRITE_FILE(S["special_roles"] , be_special) //Preferences don't load every character change WRITE_FILE(S["hide_ckey"] , hide_ckey) WRITE_FILE(S["all_quirks"] , all_quirks)