From 4ae9d2c9344e7ef0633cf4b5a68f92bc20597d9d Mon Sep 17 00:00:00 2001 From: nikothedude <59709059+nikothedude@users.noreply.github.com> Date: Fri, 15 May 2026 19:10:09 -0400 Subject: [PATCH] Partially reverts #4614, leaving record defaults but separating exploitables and security (#5560) ## About The Pull Request Partially reverts #4614. Exploitables, background, and security are now separate. ## Why It's Good For The Game This was never a good change. Exploitables and sec records hold completely separate purposes. Sec should not see every single exploitable node you have, basically. Additionally, some people have stuff in their exploitables and background they cant access right now. Exposing them again lets people retrieve them. ## Proof Of Testing
Screenshots/Videos image
## Changelog :cl: add: Exploitables, background, and security records are now distinct record fields, instead of being combinced. /:cl: --- code/datums/records/manifest.dm | 3 ++- code/datums/records/record.dm | 4 +++- code/modules/mob/living/carbon/human/human.dm | 2 ++ .../code/datums/records/record.dm | 2 ++ .../modules/client/preferences/flavor_text.dm | 21 +++++++++++++++++++ .../code/record_manifest.dm | 7 +++++++ .../client/verbs/character_directory.dm | 8 +++++++ .../skyrat/species_features.tsx | 20 ++++++++++++++++-- 8 files changed, 63 insertions(+), 4 deletions(-) diff --git a/code/datums/records/manifest.dm b/code/datums/records/manifest.dm index 27221f954cc..00c41459b48 100644 --- a/code/datums/records/manifest.dm +++ b/code/datums/records/manifest.dm @@ -143,7 +143,8 @@ GLOBAL_DATUM_INIT(manifest, /datum/manifest, new) locked_dna = record_dna, mind_ref = person.mind, // BUBBER EDIT ADDITION BEGIN - Records - exploitable_information = person_client?.prefs.read_preference(/datum/preference/text/security) || "", + exploitable_information = person_client?.prefs.read_preference(/datum/preference/text/exploitable) || "", + background_information = person_client?.prefs.read_preference(/datum/preference/text/background) || "", // BUBBER EDIT END ) diff --git a/code/datums/records/record.dm b/code/datums/records/record.dm index c2682bb6ef8..04f3205a755 100644 --- a/code/datums/records/record.dm +++ b/code/datums/records/record.dm @@ -170,6 +170,7 @@ datum/mind/mind_ref, // BUBBER EDIT BEGIN - Records exploitable_information = "", + background_information = "", ) . = ..() src.locked_dna = locked_dna @@ -178,7 +179,8 @@ GLOB.manifest.locked += src - // BUBBER EDIT BEGIN - Records + // BUBBER EDIT BEGIn - Records + src.background_information = background_information src.exploitable_information = exploitable_information // BUBBER EDIT END diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 38b11b256b3..4ef0dd1ffe1 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -407,6 +407,8 @@ to_chat(usr, "Medical Record: [target_record.past_medical_records]") if(href_list["genrecords"]) to_chat(usr, "General Record: [target_record.past_general_records]") + if(target_locked_record && href_list["bgrecords"]) + to_chat(usr, "Background information: [target_locked_record.background_information]") if(isobserver(usr) || usr.mind.can_see_exploitables || usr.mind.has_exploitables_override) if(target_locked_record && href_list["exprecords"]) to_chat(usr, "Exploitable information: [target_locked_record.exploitable_information]") diff --git a/modular_skyrat/master_files/code/datums/records/record.dm b/modular_skyrat/master_files/code/datums/records/record.dm index 95394044d66..a1ce078754f 100644 --- a/modular_skyrat/master_files/code/datums/records/record.dm +++ b/modular_skyrat/master_files/code/datums/records/record.dm @@ -11,5 +11,7 @@ var/past_security_records /datum/record/locked + /// Contains their background information. + var/background_information /// Contains their exploitable information., var/exploitable_information diff --git a/modular_skyrat/master_files/code/modules/client/preferences/flavor_text.dm b/modular_skyrat/master_files/code/modules/client/preferences/flavor_text.dm index 413add1b0cc..2a761150ae1 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/flavor_text.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/flavor_text.dm @@ -115,3 +115,24 @@ /datum/preference/text/security/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) return FALSE + +/datum/preference/text/exploitable + category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "exploitable_info" + maximum_value_length = MAX_FLAVOR_LEN + +/datum/preference/text/exploitable/create_default_value() + return EXPLOITABLE_DEFAULT_TEXT + +/datum/preference/text/exploitable/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + return FALSE + +/datum/preference/text/background + category = PREFERENCE_CATEGORY_NON_CONTEXTUAL + savefile_identifier = PREFERENCE_CHARACTER + savefile_key = "background_info" + maximum_value_length = MAX_FLAVOR_LEN + +/datum/preference/text/background/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) + return FALSE diff --git a/modular_skyrat/modules/records_on_examine/code/record_manifest.dm b/modular_skyrat/modules/records_on_examine/code/record_manifest.dm index 8c076d0eaca..728d6c04ddc 100644 --- a/modular_skyrat/modules/records_on_examine/code/record_manifest.dm +++ b/modular_skyrat/modules/records_on_examine/code/record_manifest.dm @@ -86,6 +86,13 @@ if(!isnull(target_record)) // this can be null to_chat(usr, "Exploitable information: [target_record.exploitable_information]") + else if(action == "show_background") + var/background_id = params["background_id"] + var/datum/record/locked/target_record = find_record(background_id, TRUE) + if(!isnull(target_record)) + to_chat(usr, "Background information: [target_record.background_information]") + + /datum/record_manifest/ui_data(mob/user) var/list/positions = list() diff --git a/modular_zubbers/code/modules/client/verbs/character_directory.dm b/modular_zubbers/code/modules/client/verbs/character_directory.dm index dc457529b6a..57b6da350ec 100644 --- a/modular_zubbers/code/modules/client/verbs/character_directory.dm +++ b/modular_zubbers/code/modules/client/verbs/character_directory.dm @@ -194,6 +194,7 @@ GLOBAL_DATUM(character_directory, /datum/character_directory) var/hypno = "Ask" var/noncon = "Ask" var/character_ad = "" + var/exploitable = "" var/ref = REF(mob) //Just in case something we get is not a mob if(!mob) @@ -235,6 +236,13 @@ GLOBAL_DATUM(character_directory, /datum/character_directory) noncon = READ_PREFS(mob, choiced/erp_status_nc) character_ad = READ_PREFS(mob, text/character_ad) ooc_notes = READ_PREFS(mob, text/ooc_notes) + //If the user is an antagonist or Observer, we want them to be able to see exploitables in the Directory. + if(user.mind?.has_antag_datum(/datum/antagonist) || isobserver(user)) + if(exploitable == EXPLOITABLE_DEFAULT_TEXT) + exploitable = "Unset" + else exploitable = READ_PREFS(mob, text/exploitable) + else exploitable = "Obscured" + //And finally, we want to get the mob's name, taking into account disguised names. name = mob.real_name ? mob.name : mob.real_name directory_mobs.Add(list(list( diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx index 3d14ba49a9d..7790f1c40d0 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/character_preferences/skyrat/species_features.tsx @@ -88,9 +88,9 @@ export const general_record: Feature = { }; export const security_record: Feature = { - name: 'Records - Personnel', + name: 'Records - Security', description: - 'Privileged information accessible by Security, antags with information, Command and the NTC. \ + 'Privileged information accessible by Security, Command and the NTC. \ Used to throw these roles a bone, and give more information to work with. \ For employment and criminal history, loyalties and exploitable tidbits, and more.', component: FeatureTextInput, @@ -104,6 +104,22 @@ export const medical_record: Feature = { component: FeatureTextInput, }; +export const exploitable_info: Feature = { + name: 'Records - Exploitable', + description: + 'Can be IC or OOC. Viewable by certain antagonists/OPFOR users, as well as ghosts. Generally contains \ + things like weaknesses, strengths, important background, trigger words, etc. It ALSO may contain things like \ + antagonist preferences, e.g. if you want to be antagonized, by whom, with what, etc.', + component: FeatureTextInput, +}; + +export const background_info: Feature = { + name: 'Records - Background', + description: + 'Only viewable by yourself and ghosts. You can have whatever you want in here - it may be valuable as a way to orient yourself to what your character is.', + component: FeatureTextInput, +}; + export const pda_ringer: Feature = { name: 'PDA Ringer Message', description: