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
<details>
<summary>Screenshots/Videos</summary>

<img width="787" height="620" alt="image"
src="https://github.com/user-attachments/assets/b8b464a8-ff4a-40f1-a48f-086c99abb6af"
/>

</details>

## Changelog
🆑
add: Exploitables, background, and security records are now distinct
record fields, instead of being combinced.
/🆑
This commit is contained in:
nikothedude
2026-05-16 01:10:09 +02:00
committed by GitHub
parent ed0a40c17f
commit 4ae9d2c934
8 changed files with 63 additions and 4 deletions
+2 -1
View File
@@ -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
)
+3 -1
View File
@@ -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
@@ -407,6 +407,8 @@
to_chat(usr, "<b>Medical Record:</b> [target_record.past_medical_records]")
if(href_list["genrecords"])
to_chat(usr, "<b>General Record:</b> [target_record.past_general_records]")
if(target_locked_record && href_list["bgrecords"])
to_chat(usr, "<b>Background information:</b> [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, "<b>Exploitable information:</b> [target_locked_record.exploitable_information]")
@@ -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
@@ -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
@@ -86,6 +86,13 @@
if(!isnull(target_record)) // this can be null
to_chat(usr, "<b>Exploitable information:</b> [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, "<b>Background information:</b> [target_record.background_information]")
/datum/record_manifest/ui_data(mob/user)
var/list/positions = list()
@@ -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(
@@ -88,9 +88,9 @@ export const general_record: Feature<string> = {
};
export const security_record: Feature<string> = {
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<string> = {
component: FeatureTextInput,
};
export const exploitable_info: Feature<string> = {
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<string> = {
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<string> = {
name: 'PDA Ringer Message',
description: