From b5aa4f649b807619f2f88e2e34e44c3b32f0a992 Mon Sep 17 00:00:00 2001 From: Return <110273561+ReturnToZender@users.noreply.github.com> Date: Sun, 14 Sep 2025 14:54:46 -0500 Subject: [PATCH] [Records rework] Creates defaults for all records (#4614) ## About The Pull Request This PR does four things: - Shortens and simplifies the medical records template, making it more accessible - Expands Security records flavor into a personnel file that includes exploitables and your character's background, so that you can have Security records without having a criminal history - Creates defaults for medical records, general records, and Security records in the character creator, rather than just the wiki. - Removes exploitables and background records as they've now been integrated into Security records. ## Why It's Good For The Game This PR should make records more accessible for individual players by reducing the amount of work involved, as well as expanding Security records to be more useful. ## Proof Of Testing image ## Changelog :cl: ReturnToZender (code) add: All records now have enhanced defaults when making a new character add: Security records have been expanded into personnel records, containing more information on your character del: Exploitables and Background records have been merged into the definition of Security records, which are now Personnel Records. /: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 | 30 ++++++------------- .../code/record_manifest.dm | 7 ----- .../client/verbs/character_directory.dm | 7 ----- .../skyrat/species_features.tsx | 26 ++++------------ 8 files changed, 16 insertions(+), 65 deletions(-) diff --git a/code/datums/records/manifest.dm b/code/datums/records/manifest.dm index 3e6bc6f0549..76a05d9814a 100644 --- a/code/datums/records/manifest.dm +++ b/code/datums/records/manifest.dm @@ -143,8 +143,7 @@ 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/exploitable) || "", - background_information = person_client?.prefs.read_preference(/datum/preference/text/background) || "", + exploitable_information = person_client?.prefs.read_preference(/datum/preference/text/security) || "", // BUBBER EDIT END ) diff --git a/code/datums/records/record.dm b/code/datums/records/record.dm index f855d8849a5..c99b646cb08 100644 --- a/code/datums/records/record.dm +++ b/code/datums/records/record.dm @@ -168,7 +168,6 @@ datum/mind/mind_ref, // BUBBER EDIT BEGIN - Records exploitable_information = "", - background_information = "", ) . = ..() src.locked_dna = locked_dna @@ -177,8 +176,7 @@ GLOB.manifest.locked += src - // BUBBER EDIT BEGIn - Records - src.background_information = background_information + // BUBBER EDIT BEGIN - Records 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 0b50ffa52c9..f9ccf3d7f10 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -407,8 +407,6 @@ 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 a1ce078754f..95394044d66 100644 --- a/modular_skyrat/master_files/code/datums/records/record.dm +++ b/modular_skyrat/master_files/code/datums/records/record.dm @@ -11,7 +11,5 @@ 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 c883550eb95..fbd71e61ecf 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 @@ -86,6 +86,9 @@ savefile_key = "general_record" maximum_value_length = MAX_FLAVOR_LEN +/datum/preference/text/general/create_default_value() + return "PERSONAL INFORMATION \n\ Name: \n\ Species: \n\ Physical Description: Height, weight, visible age \n\ Birthdate: \n\ Homeworld: \n\ Preferred Language: \n\ Spoken Languages: \n\ Contact Info: Home, next of kin, phone number" + /datum/preference/text/general/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) return FALSE @@ -95,6 +98,9 @@ savefile_key = "medical_record" maximum_value_length = MAX_FLAVOR_LEN +/datum/preference/text/medical/create_default_value() + return "PHYSICAL EVALUATIONS \n\ \n\ PSYCHOLOGICAL EVALUATIONS \n\ \n\ MEDICATION HISTORY \n\ \n\ SURGICAL HISTORY \n\ \n\ DOCTOR NOTES:" + /datum/preference/text/medical/apply_to_human(mob/living/carbon/human/target, value, datum/preferences/preferences) return FALSE @@ -104,26 +110,8 @@ savefile_key = "security_record" maximum_value_length = MAX_FLAVOR_LEN +/datum/preference/text/security/create_default_value() + return "EDUCATION \n\ \n\ EMPLOYMENT HISTORY \n\ Employed since: \n\ CRIMINAL HISTORY \n\ \n\ Loyalty Rating: \n\ Pressure Points: points used to control crewmember \n\ \n\ CASEWORKER NOTES:" + /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 55d318582c4..5d161eee2f5 100644 --- a/modular_skyrat/modules/records_on_examine/code/record_manifest.dm +++ b/modular_skyrat/modules/records_on_examine/code/record_manifest.dm @@ -86,13 +86,6 @@ 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 b5e55104673..5f56e1241db 100644 --- a/modular_zubbers/code/modules/client/verbs/character_directory.dm +++ b/modular_zubbers/code/modules/client/verbs/character_directory.dm @@ -236,13 +236,6 @@ 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 acf5c64b45f..dd0147a52cb 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 @@ -82,16 +82,16 @@ export const custom_smell: Feature = { export const general_record: Feature = { name: 'Records - General', description: - 'Viewable with any records access. \ - For general viewing-things like employment, qualifications, etc.', + 'The first part of any record that describes you. \ + For a quick description, your languages and origin, and birthday.', component: FeatureTextInput, }; export const security_record: Feature = { - name: 'Records - Security', + name: 'Records - Personnel', description: - 'Viewable with security access. \ - For criminal records, arrest history, things like that.', + 'Viewable with security access, or by Command. \ + For employment and criminal history, loyalties and exploitables information, and more.', component: FeatureTextInput, }; @@ -103,22 +103,6 @@ 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: