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: