mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-02 13:02:38 +00:00
* Re-implements Physical and Mental statuses in crewmember Medical Records * wew --------- Co-authored-by: Antonio Tosti <5588048+atosti@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
297 lines
8.5 KiB
Plaintext
297 lines
8.5 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,
|
|
// SKYRAT EDIT START - RP Records
|
|
background_information = "",
|
|
exploitable_information = "",
|
|
past_general_records = "",
|
|
past_medical_records = "",
|
|
past_security_records = "",
|
|
// SKYRAT EDIT END
|
|
)
|
|
. = ..()
|
|
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
|
|
// SKYRAT EDIT START - RP Records
|
|
src.background_information = background_information
|
|
src.exploitable_information = exploitable_information
|
|
src.past_general_records = past_general_records
|
|
src.past_medical_records = past_medical_records
|
|
src.past_security_records = past_security_records
|
|
// SKYRAT EDIT END
|
|
|
|
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
|
|
|
|
/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
|
|
|
|
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 = text("<center><b>SR-[print_count]: [header]</b></center><br>")
|
|
|
|
final_paper_text += text("Name: []<br>Gender: []<br>Age: []<br>", name, gender, age)
|
|
if(alias != name)
|
|
final_paper_text += text("Alias: []<br>", alias)
|
|
|
|
final_paper_text += text("Species: []<br>Fingerprint: []<br>Wanted Status: []<br><br>", species, fingerprint, wanted_status)
|
|
|
|
//SKYRAT EDIT ADD - RP RECORDS
|
|
if(past_general_records != "")
|
|
final_paper_text += "\nGeneral Records:\n[past_general_records]\n"
|
|
//SKYRAT EDIT ADD END
|
|
|
|
final_paper_text += text("<center><B>Security Data</B></center><br><br>")
|
|
|
|
//SKYRAT EDIT ADDITION START - RP RECORDS
|
|
if(past_security_records != "")
|
|
final_paper_text += "<br>Security Records:<br>[past_security_records]<br>"
|
|
//SKYRAT EDIT END
|
|
|
|
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 += text("<center>Important Notes:</center><br>")
|
|
if(security_note)
|
|
final_paper_text += text("- [security_note]<br>")
|
|
if(description)
|
|
final_paper_text += text("- [description]<br>")
|
|
|
|
printed_paper.name = text("SR-[] '[]'", print_count, name)
|
|
printed_paper.add_raw_text(final_paper_text)
|
|
printed_paper.update_appearance()
|
|
|
|
return printed_paper
|