Files
Bubberstation/code/datums/records/record.dm
LemonInTheDark cb4a836d41 Removes all uses of text() (#75766)
## About The Pull Request

Apperantly it's deprecated. Also people misunderstand how to use it,
which leads to silly looking code and redundant wraps.

It is potentially useful to do a sort of format style string embedding,
but we don't have anything that really warrents it IMO.

## Why It's Good For The Game

Maybe byond will break on version upgrade slightly less now.
Also the code's less cluttered, and boomer posting has been excised.


![image](https://github.com/tgstation/tgstation/assets/58055496/c630e522-962c-4344-80f7-36d5df00a8b5)

![image](https://github.com/tgstation/tgstation/assets/58055496/f4cb3eb5-f07f-4489-8813-f59b19406bda)

![image](https://github.com/tgstation/tgstation/assets/58055496/6df7eb62-dae8-43b5-a511-1130ab4a2870)
2023-06-01 16:13:33 -04:00

276 lines
7.8 KiB
Plaintext

/**
* Record datum. Used for crew records and admin locked records.
*/
/datum/record
/// Age of the character
var/age
/// Their blood type
var/blood_type
/// Character appearance
var/mutable_appearance/character_appearance
/// DNA string
var/dna_string
/// Fingerprint string (md5)
var/fingerprint
/// The character's gender
var/gender
/// The character's initial rank at roundstart
var/initial_rank
/// The character's name
var/name = "Unknown"
/// The character's rank
var/rank
/// The character's species
var/species
/// The character's ID trim
var/trim
/datum/record/New(
age = 18,
blood_type = "?",
character_appearance,
dna_string = "Unknown",
fingerprint = "?????",
gender = "Other",
initial_rank = "Unassigned",
name = "Unknown",
rank = "Unassigned",
species = "Human",
trim = "Unassigned",
)
src.age = age
src.blood_type = blood_type
src.character_appearance = character_appearance
src.dna_string = dna_string
src.fingerprint = fingerprint
src.gender = gender
src.initial_rank = rank
src.name = name
src.rank = rank
src.species = species
src.trim = trim
/**
* Crew record datum
*/
/datum/record/crew
/// List of citations
var/list/citations = list()
/// List of crimes
var/list/crimes = list()
/// Unique ID generated that is used to fetch lock record
var/lock_ref
/// Names of major disabilities
var/major_disabilities
/// Fancy description of major disabilities
var/major_disabilities_desc
/// List of medical notes
var/list/medical_notes = list()
/// Names of minor disabilities
var/minor_disabilities
/// Fancy description of minor disabilities
var/minor_disabilities_desc
/// Physical status of this person in medical records.
var/physical_status
/// Mental status of this person in medical records.
var/mental_status
/// Positive and neutral quirk strings
var/quirk_notes
/// Security note
var/security_note
/// Current arrest status
var/wanted_status = WANTED_NONE
/datum/record/crew/New(
age = 18,
blood_type = "?",
character_appearance,
dna_string = "Unknown",
fingerprint = "?????",
gender = "Other",
initial_rank = "Unassigned",
name = "Unknown",
rank = "Unassigned",
species = "Human",
trim = "Unassigned",
/// Crew specific
lock_ref,
major_disabilities = "None",
major_disabilities_desc = "No disabilities have been diagnosed at the moment.",
minor_disabilities = "None",
minor_disabilities_desc = "No disabilities have been diagnosed at the moment.",
physical_status = PHYSICAL_ACTIVE,
mental_status = MENTAL_STABLE,
quirk_notes,
)
. = ..()
src.lock_ref = lock_ref
src.major_disabilities = major_disabilities
src.major_disabilities_desc = major_disabilities_desc
src.minor_disabilities = minor_disabilities
src.minor_disabilities_desc = minor_disabilities_desc
src.physical_status = physical_status
src.mental_status = mental_status
src.quirk_notes = quirk_notes
GLOB.manifest.general += src
/datum/record/crew/Destroy()
GLOB.manifest.general -= src
return ..()
/**
* Admin locked record
*/
/datum/record/locked
/// Mob's dna
var/datum/dna/dna_ref
/// Mind datum
var/datum/mind/mind_ref
/// Typepath of species used by player, for usage in respawning via records
var/species_type
/datum/record/locked/New(
age = 18,
blood_type = "?",
character_appearance,
dna_string = "Unknown",
fingerprint = "?????",
gender = "Other",
initial_rank = "Unassigned",
name = "Unknown",
rank = "Unassigned",
species = "Human",
trim = "Unassigned",
/// Locked specific
datum/dna/dna_ref,
datum/mind/mind_ref,
)
. = ..()
src.dna_ref = dna_ref
src.mind_ref = mind_ref
species_type = dna_ref.species.type
GLOB.manifest.locked += src
/datum/record/locked/Destroy()
GLOB.manifest.locked -= src
return ..()
/// A helper proc to get the front photo of a character from the record.
/// Handles calling `get_photo()`, read its documentation for more information.
/datum/record/crew/proc/get_front_photo()
return get_photo("photo_front", SOUTH)
/// A helper proc to get the side photo of a character from the record.
/// Handles calling `get_photo()`, read its documentation for more information.
/datum/record/crew/proc/get_side_photo()
return get_photo("photo_side", WEST)
/**
* You shouldn't be calling this directly, use `get_front_photo()` or `get_side_photo()`
* instead.
*
* This is the proc that handles either fetching (if it was already generated before) or
* generating (if it wasn't) the specified photo from the specified record. This is only
* intended to be used by records that used to try to access `fields["photo_front"]` or
* `fields["photo_side"]`, and will return an empty icon if there isn't any of the necessary
* fields.
*
* Arguments:
* * field_name - The name of the key in the `fields` list, of the record itself.
* * orientation - The direction in which you want the character appearance to be rotated
* in the outputed photo.
*
* Returns an empty `/icon` if there was no `character_appearance` entry in the `fields` list,
* returns the generated/cached photo otherwise.
*/
/datum/record/crew/proc/get_photo(field_name, orientation)
if(!field_name)
return
if(!character_appearance)
return new /icon()
var/icon/picture_image
if(!isicon(character_appearance))
var/mutable_appearance/appearance = character_appearance
appearance.setDir(orientation)
picture_image = getFlatIcon(appearance)
else
picture_image = character_appearance
var/datum/picture/picture = new
picture.picture_name = name
picture.picture_desc = "This is [name]."
picture.picture_image = picture_image
var/obj/item/photo/photo = new(null, picture)
field_name = photo
return photo
/// Returns a paper printout of the current record's crime data.
/datum/record/crew/proc/get_rapsheet(alias, header = "Rapsheet", description = "No further details.")
var/print_count = ++GLOB.manifest.print_count
var/obj/item/paper/printed_paper = new
var/final_paper_text = "<center><b>SR-[print_count]: [header]</b></center><br>"
final_paper_text += "Name: [name]<br>Gender: [gender]<br>Age: [age]<br>"
if(alias != name)
final_paper_text += "Alias: [alias]<br>"
final_paper_text += "Species: [species]<br>Fingerprint: [fingerprint]<br>Wanted Status: [wanted_status]<br><br>"
final_paper_text += "<center><B>Security Data</B></center><br><br>"
final_paper_text += "Crimes:<br>"
final_paper_text += {"<table style="text-align:center;" border="1" cellspacing="0" width="100%">
<tr>
<th>Crime</th>
<th>Details</th>
<th>Author</th>
<th>Time Added</th>
</tr>"}
for(var/datum/crime/crime in crimes)
if(crime.valid)
final_paper_text += "<tr><td>[crime.name]</td>"
final_paper_text += "<td>[crime.details]</td>"
final_paper_text += "<td>[crime.author]</td>"
final_paper_text += "<td>[crime.time]</td>"
else
for(var/i in 1 to 4)
final_paper_text += "<td>--REDACTED--</td>"
final_paper_text += "</tr>"
final_paper_text += "</table><br><br>"
final_paper_text += "Citations:<br>"
final_paper_text += {"<table style="text-align:center;" border="1" cellspacing="0" width="100%">
<tr>
<th>Citation</th>
<th>Details</th>
<th>Author</th>
<th>Time Added</th>
<th>Fine</th>
</tr><br>"}
for(var/datum/crime/citation/warrant in citations)
final_paper_text += "<tr><td>[warrant.name]</td>"
final_paper_text += "<td>[warrant.details]</td>"
final_paper_text += "<td>[warrant.author]</td>"
final_paper_text += "<td>[warrant.time]</td>"
final_paper_text += "<td>[warrant.fine]</td>"
final_paper_text += "</tr>"
final_paper_text += "</table><br><br>"
final_paper_text += "<center>Important Notes:</center><br>"
if(security_note)
final_paper_text += "- [security_note]<br>"
if(description)
final_paper_text += "- [description]<br>"
printed_paper.name = "SR-[print_count] '[name]'"
printed_paper.add_raw_text(final_paper_text)
printed_paper.update_appearance()
return printed_paper