From bebee8ded9ef65409ff458a773f8a3b6c236cdfd Mon Sep 17 00:00:00 2001 From: Lo6a4evskiy Date: Wed, 14 Jan 2015 16:08:53 +0400 Subject: [PATCH 1/9] First iteration --- code/datums/datacore.dm | 162 +++++++++++++++++++++++ code/game/machinery/computer/security.dm | 4 +- 2 files changed, 165 insertions(+), 1 deletion(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 368a3e69c93..9dc95c688c0 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -202,6 +202,8 @@ var/record_id_num = 1001 G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" G.fields["sex"] = H.gender + G.fields["photo_front"] = icon(get_id_photo(H), dir = SOUTH) + G.fields["photo_side"] = icon(get_id_photo(H), dir = WEST) general += G //Medical Record @@ -246,3 +248,163 @@ var/record_id_num = 1001 locked += L return +/obj/effect/datacore/proc/get_id_photo(var/mob/living/carbon/human/H) + var/icon/photo = null + var/g = (H.gender == FEMALE) ? "f" : "m" + if(!config.mutant_races || H.dna.species.use_skintones) + photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.skin_tone]_[g]_s") + else + photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.dna.species.id]_[g]_s") + photo.Blend("#[H.dna.mutant_color]", ICON_MULTIPLY) + + var/icon/eyes_s + if(EYECOLOR in H.dna.species.specflags) + eyes_s = icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[H.dna.species.eyes]_s") + eyes_s.Blend("#[H.eye_color]", ICON_MULTIPLY) + + var/datum/sprite_accessory/S + S = hair_styles_list[H.hair_style] + if(S && (HAIR in H.dna.species.specflags)) + var/icon/hair_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s") + hair_s.Blend("#[H.hair_color]", ICON_MULTIPLY) + eyes_s.Blend(hair_s, ICON_OVERLAY) + + S = facial_hair_styles_list[H.facial_hair_style] + if(S && (FACEHAIR in H.dna.species.specflags)) + var/icon/facial_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s") + facial_s.Blend("#[H.facial_hair_color]", ICON_MULTIPLY) + eyes_s.Blend(facial_s, ICON_OVERLAY) + + if(eyes_s) + photo.Blend(eyes_s, ICON_OVERLAY) + + var/icon/clothes_s = null + switch(H.mind.assigned_role) + if("Head of Personnel") + clothes_s = icon('icons/mob/uniform.dmi', "hop_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if("Bartender") + clothes_s = icon('icons/mob/uniform.dmi', "ba_suit_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "armoralt"), ICON_OVERLAY) + if("Botanist") + clothes_s = icon('icons/mob/uniform.dmi', "hydroponics_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "ggloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "apron"), ICON_OVERLAY) + if("Cook") + clothes_s = icon('icons/mob/uniform.dmi', "chef_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "chef"), ICON_OVERLAY) + if("Janitor") + clothes_s = icon('icons/mob/uniform.dmi', "janitor_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Librarian") + clothes_s = icon('icons/mob/uniform.dmi', "red_suit_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Quartermaster") + clothes_s = icon('icons/mob/uniform.dmi', "qm_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if("Cargo Technician") + clothes_s = icon('icons/mob/uniform.dmi', "cargo_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Shaft Miner") + clothes_s = icon('icons/mob/uniform.dmi', "miner_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Lawyer") + clothes_s = icon('icons/mob/uniform.dmi', "bluesuit_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "suitjacket_blue"), ICON_OVERLAY) + if("Chaplain") + clothes_s = icon('icons/mob/uniform.dmi', "chapblack_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Clown") + clothes_s = icon('icons/mob/uniform.dmi', "clown_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "clown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/mask.dmi', "clown"), ICON_OVERLAY) + if("Mime") + clothes_s = icon('icons/mob/uniform.dmi', "mime_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "lgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/mask.dmi', "mime"), ICON_OVERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "suspenders"), ICON_OVERLAY) + if("Research Director") + clothes_s = icon('icons/mob/uniform.dmi', "director_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) + clothes_s.Blend(icon('icons/mob/items_lefthand.dmi', "clipboard"), ICON_OVERLAY) + if("Scientist") + clothes_s = icon('icons/mob/uniform.dmi', "toxinswhite_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_tox"), ICON_OVERLAY) + if("Chemist") + clothes_s = icon('icons/mob/uniform.dmi', "chemistrywhite_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_chem"), ICON_OVERLAY) + if("Chief Medical Officer") + clothes_s = icon('icons/mob/uniform.dmi', "cmo_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_cmo"), ICON_OVERLAY) + if("Doctor") + clothes_s = icon('icons/mob/uniform.dmi', "medical_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) + if("Geneticist") + clothes_s = icon('icons/mob/uniform.dmi', "geneticswhite_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_gen"), ICON_OVERLAY) + if("Virologist") + clothes_s = icon('icons/mob/uniform.dmi', "virologywhite_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_vir"), ICON_OVERLAY) + if("Roboticist") + clothes_s = icon('icons/mob/uniform.dmi', "robotics_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) + if("Captain") + clothes_s = icon('icons/mob/uniform.dmi', "captain_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "capcarapace"), ICON_OVERLAY) + if("Head of Security") + clothes_s = icon('icons/mob/uniform.dmi', "hos_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "hostrench"), ICON_OVERLAY) + if("Warden") + clothes_s = icon('icons/mob/uniform.dmi', "warden_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "warden_jacket"), ICON_OVERLAY) + if("Detective") + clothes_s = icon('icons/mob/uniform.dmi', "detective_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY) + clothes_s.Blend(icon('icons/mob/head.dmi', "detective"), ICON_OVERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY) + if("Security Officer") + clothes_s = icon('icons/mob/uniform.dmi', "security_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY) + if("Chief Engineer") + clothes_s = icon('icons/mob/uniform.dmi', "chief_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Station Engineer") + clothes_s = icon('icons/mob/uniform.dmi', "engine_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Atmospheric Technician") + clothes_s = icon('icons/mob/uniform.dmi', "atmos_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Assistant") + clothes_s = icon('icons/mob/uniform.dmi', "grey_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + + if(clothes_s) + photo.Blend(clothes_s, ICON_OVERLAY) + + return photo \ No newline at end of file diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 5fe0b91cc05..d44f044f352 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -160,6 +160,8 @@ if(3.0) dat += "Security Record
" if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) + user << browse_rsc(active1.fields["photo_front"], "photo_front") + user << browse_rsc(active1.fields["photo_side"], "photo_side") dat += {" @@ -169,7 +171,7 @@ -
Name: [active1.fields["name"]] 
ID: [active1.fields["id"]] 
Fingerprint: [active1.fields["fingerprint"]] 
Physical Status: [active1.fields["p_stat"]] 
Mental Status: [active1.fields["m_stat"]] 
"} +
"} else dat += "General Record Lost!
" if ((istype(active2, /datum/data/record) && data_core.security.Find(active2))) From a22d1ecfe2584a536b84dac49bc62cb32c939af1 Mon Sep 17 00:00:00 2001 From: Lo6a4evskiy Date: Wed, 21 Jan 2015 21:21:47 +0400 Subject: [PATCH 2/9] Adds photos and species to security and medical records, plus some other tweaking --- code/datums/datacore.dm | 11 +- code/game/machinery/computer/medical.dm | 11 +- code/game/machinery/computer/security.dm | 60 +++- .../mob/living/carbon/human/examine.dm | 42 ++- code/modules/mob/living/carbon/human/human.dm | 272 +++++++++++------- code/modules/mob/living/silicon/ai/ai.dm | 1 - .../modules/mob/living/silicon/robot/robot.dm | 1 - code/modules/mob/living/silicon/silicon.dm | 5 + code/modules/paperwork/photography.dm | 12 +- 9 files changed, 280 insertions(+), 135 deletions(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 9dc95c688c0..7610595aef6 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -190,6 +190,7 @@ var/record_id_num = 1001 assignment = "Unassigned" var/id = num2hex(record_id_num++,6) + var/image = get_id_photo(H) //These records should ~really~ be merged or something //General Record @@ -198,12 +199,14 @@ var/record_id_num = 1001 G.fields["name"] = H.real_name G.fields["rank"] = assignment G.fields["age"] = H.age + if(config.mutant_races) + G.fields["species"] = H.dna.species.name G.fields["fingerprint"] = md5(H.dna.uni_identity) G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" G.fields["sex"] = H.gender - G.fields["photo_front"] = icon(get_id_photo(H), dir = SOUTH) - G.fields["photo_side"] = icon(get_id_photo(H), dir = WEST) + G.fields["photo_front"] = icon(image, dir = SOUTH) + G.fields["photo_side"] = icon(image, dir = WEST) general += G //Medical Record @@ -244,7 +247,7 @@ var/record_id_num = 1001 L.fields["b_dna"] = H.dna.unique_enzymes L.fields["enzymes"] = H.dna.struc_enzymes L.fields["identity"] = H.dna.uni_identity - L.fields["image"] = getFlatIcon(H) //This is god-awful + L.fields["image"] = image locked += L return @@ -345,7 +348,7 @@ var/record_id_num = 1001 clothes_s = icon('icons/mob/uniform.dmi', "cmo_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_cmo"), ICON_OVERLAY) - if("Doctor") + if("Medical Doctor") clothes_s = icon('icons/mob/uniform.dmi', "medical_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index a35235d51a1..bbdc0b8117b 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -105,10 +105,13 @@ dat += "" if(active1 in data_core.general) - dat += "" + user << browse_rsc(active1.fields["photo_front"], "photo_front") + user << browse_rsc(active1.fields["photo_side"], "photo_side") + dat += "" dat += "" dat += "" dat += "" + dat += "" dat += "" dat += "" dat += "" @@ -294,6 +297,12 @@ if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return src.active1.fields["age"] = t1 + if("species") + if(active1) + var/t1 = input("Select a species", "Species Selection") as null|anything in roundstart_species + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + return + active1.fields["species"] = t1 if("mi_dis") if(active2) var/t1 = copytext(sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text),1,MAX_MESSAGE_LEN) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index d44f044f352..ad7c6bf2d1f 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -162,20 +162,25 @@ if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) user << browse_rsc(active1.fields["photo_front"], "photo_front") user << browse_rsc(active1.fields["photo_side"], "photo_side") - dat += {"
Medical Record
Name:[active1.fields["name"]]
Name:[active1.fields["name"]]
ID:[active1.fields["id"]]
Sex: [active1.fields["sex"]] 
Age: [active1.fields["age"]] 
Species: [active1.fields["species"]] 
Fingerprint: [active1.fields["fingerprint"]] 
Physical Status: [active1.fields["p_stat"]] 
Mental Status: [active1.fields["m_stat"]] 
+ dat += {"
- - + "} + if (config.mutant_races) + dat += "" + dat += {" -
Name: [active1.fields["name"]] 
ID: [active1.fields["id"]] 
Sex: [active1.fields["sex"]] 
Age: [active1.fields["age"]] 
Rank: [active1.fields["rank"]] 
Age: [active1.fields["age"]] 
Species: [active1.fields["species"]] 
Rank: [active1.fields["rank"]] 
Fingerprint: [active1.fields["fingerprint"]] 
Physical Status: [active1.fields["p_stat"]] 
Mental Status: [active1.fields["m_stat"]] 
"} +
+ +

Update front photo

Update side photo
+ "} else - dat += "General Record Lost!
" + dat += "
General Record Lost!
" if ((istype(active2, /datum/data/record) && data_core.security.Find(active2))) - dat += "
Security Data" + dat += "Security Data" dat += "
Criminal Status: [active2.fields["criminal"]]" dat += "

Minor Crimes: Add New" @@ -357,7 +362,10 @@ What a mess.*/ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc ) P.info = "
Security Record - (SR-[data_core.securityPrintCount])

" if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) - P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"], active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) + P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"]) + if (config.mutant_races) + P.info += "\nSpecies: [active1.fields["species"]]
" + P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) else P.info += "General Record Lost!
" if ((istype(active2, /datum/data/record) && data_core.security.Find(active2))) @@ -471,6 +479,10 @@ What a mess.*/ G.fields["rank"] = "Unassigned" G.fields["sex"] = "Male" G.fields["age"] = "Unknown" + if(config.mutant_races) + G.fields["species"] = "Human" + G.fields["photo_front"] = new /icon() + G.fields["photo_side"] = new /icon() G.fields["fingerprint"] = "?????" G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" @@ -550,6 +562,20 @@ What a mess.*/ if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) return active1.fields["age"] = t1 + if("species") + if (istype(active1, /datum/data/record)) + var/t1 = input("Select a species", "Species Selection") as null|anything in roundstart_species + if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + return + active1.fields["species"] = t1 + if("photo front") + var/icon/photo = get_photo(usr) + if(photo) + active1.fields["photo_front"] = photo + if("photo side") + var/icon/photo = get_photo(usr) + if(photo) + active1.fields["photo_side"] = photo if("mi_crim_add") if (istype(active1, /datum/data/record)) var/t1 = copytext(sanitize(input("Please input minor crime names:", "Secure. records", "", null) as text),1,MAX_MESSAGE_LEN) @@ -659,6 +685,16 @@ What a mess.*/ updateUsrDialog() return +/obj/machinery/computer/secure_data/proc/get_photo(var/mob/user) + if (istype(user.get_active_hand(), /obj/item/weapon/photo)) + var/obj/item/weapon/photo/photo = user.get_active_hand() + return photo.img + if (istype(user, /mob/living/silicon)) + var/mob/living/silicon/tempAI = user + var/datum/picture/selection = tempAI.GetPhoto() + if (selection) + return selection.fields["img"] + /obj/machinery/computer/secure_data/emp_act(severity) if(stat & (BROKEN|NOPOWER)) ..(severity) @@ -666,11 +702,11 @@ What a mess.*/ for(var/datum/data/record/R in data_core.security) if(prob(10/severity)) - switch(rand(1,6)) + switch(rand(1,8)) if(1) R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]" if(2) - R.fields["sex"] = pick("Male", "Female") + R.fields["sex"] = pick("Male", "Female") if(3) R.fields["age"] = rand(5, 85) if(4) @@ -679,6 +715,12 @@ What a mess.*/ R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit") if(6) R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") + if(7) + R.fields["species"] = pick(roundstart_species) + if(8) + var/datum/data/record/G = pick(data_core.general) + R.fields["photo_front"] = G.fields["photo_front"] + R.fields["photo_side"] = G.fields["photo_side"] continue else if(prob(1)) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 8d0aeed8e5c..46598161546 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -252,21 +252,37 @@ if(istype(user, /mob/living/carbon/human)) var/mob/living/carbon/human/H = user - if(istype(H.glasses, /obj/item/clothing/glasses/hud/security) || istype(H.glasses, /obj/item/clothing/glasses/hud/security/sunglasses)) - if(!user.stat && user != src) //|| !user.canmove || user.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at. - var/criminal = "None" - - var/perpname = get_face_name(get_id_name("")) - if(perpname) - var/datum/data/record/R = find_record("name", perpname, data_core.security) + if(istype(H.glasses, /obj/item/clothing/glasses/hud)) + var/perpname = get_face_name(get_id_name("")) + if(perpname) + var/datum/data/record/R = find_record("name", perpname, data_core.general) + if(R) + msg += "Rank: [R.fields["rank"]]
" + msg += "\[Front photo\] " + msg += "\[Side photo\]
" + if(istype(H.glasses, /obj/item/clothing/glasses/hud/health)) if(R) - criminal = R.fields["criminal"] + var/health = R.fields["p_stat"] + msg += "\[[health]\]" + health = R.fields["m_stat"] + msg += "\[[health]\]
" + R = find_record("name", perpname, data_core.medical) + if(R) + msg += "\[Medical evaluation\]
" - msg += "Criminal status: \[[criminal]\]\n" - msg += "Security record: \[View\] " - msg += "\[Add crime\] " - msg += "\[View comment log\] " - msg += "\[Add comment\]\n" + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(!user.stat && user != src) //|| !user.canmove || user.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at. + var/criminal = "None" + + R = find_record("name", perpname, data_core.security) + if(R) + criminal = R.fields["criminal"] + + msg += "Criminal status: \[[criminal]\]\n" + msg += "Security record: \[View\] " + msg += "\[Add crime\] " + msg += "\[View comment log\] " + msg += "\[Add comment\]\n" msg += "*---------*" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 7862cf26e8f..26b97b5b869 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -306,114 +306,186 @@ ..() - - if(href_list["criminal"]) +///////HUDs/////// + if(href_list["hud"]) if(istype(usr, /mob/living/carbon/human)) var/mob/living/carbon/human/H = usr - if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - if(usr.stat || usr == src) //|| !usr.canmove || usr.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at. - return //Non-fluff: This allows sec to set people to arrest as they get disarmed or beaten - // Checks the user has security clearence before allowing them to change arrest status via hud, comment out to enable all access - var/allowed_access = null - var/obj/item/clothing/glasses/G = H.glasses - if (!G.emagged) - if(H.wear_id) - var/list/access = H.wear_id.GetAccess() - if(access_sec_doors in access) - allowed_access = H.get_authentification_name() - else - allowed_access = "@%&ERROR_%$*" + var/perpname = get_face_name(get_id_name("")) + if(istype(H.glasses, /obj/item/clothing/glasses/hud)) + var/datum/data/record/R = find_record("name", perpname, data_core.general) + if(R) + if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud)) + return + var/icon/img = null + if(href_list["photo_front"]) + img = R.fields["photo_front"] + if(href_list["photo_side"]) + img = R.fields["photo_side"] + if(img) + usr << browse_rsc(img, "photo") + usr << browse("", "window=photo;size=120x120") - - if(!allowed_access) - H << "ERROR: Invalid Access" - return - - var/perpname = get_face_name(get_id_name("")) - if(perpname) - var/datum/data/record/R = find_record("name", perpname, data_core.security) - if(R) - if(href_list["status"]) - var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Discharged", "Cancel") - if(R) - if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - if(setcriminal != "Cancel") - investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", "records") - R.fields["criminal"] = setcriminal - sec_hud_set_security_status() + if(href_list["hud"] == "m") + if(istype(H.glasses, /obj/item/clothing/glasses/hud/health)) + if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/health)) + return + if(href_list["p_stat"]) + var/health = input(usr, "Specify a new physical status for this person.", "Medical HUD", R.fields["p_stat"]) in list("Active", "Physically Unfit", "*Unconscious*", "*Deceased*", "Cancel") + if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/health)) return - - if(href_list["view"]) - if(R) - if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return - usr << "Name: [R.fields["name"]] Criminal Status: [R.fields["criminal"]]" - usr << "Minor Crimes:" - for(var/datum/data/crime/c in R.fields["mi_crim"]) - usr << "Crime: [c.crimeName]" - usr << "Details: [c.crimeDetails]" - usr << "Added by [c.author] at [c.time]" - usr << "----------" - usr << "Major Crimes:" - for(var/datum/data/crime/c in R.fields["ma_crim"]) - usr << "Crime: [c.crimeName]" - usr << "Details: [c.crimeDetails]" - usr << "Added by [c.author] at [c.time]" - usr << "----------" - usr << "Notes: [R.fields["notes"]]" + if(health != "Cancel") + R.fields["p_stat"] = health + if(href_list["m_stat"]) + var/health = input(usr, "Specify a new mental status for this person.", "Medical HUD", R.fields["m_stat"]) in list("Stable", "*Watch*", "*Unstable*", "*Insane*", "Cancel") + if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/health)) return + if(health != "Cancel") + R.fields["m_stat"] = health + if(href_list["evaluation"]) + if(!getBruteLoss() && !getFireLoss() && !getOxyLoss() && getToxLoss() < 20) + usr << "No external injuries detected.
" + return + var/span = "notice" + var/status = "" + if(getBruteLoss()) + usr << "Physical trauma analysis:" + for(var/obj/item/organ/limb/org in organs) + var/brutedamage = org.brute_dam + if(brutedamage > 0) + status = "received minor physical injuries." + span = "notice" + if(brutedamage > 20) + status = "been seriously damaged." + span = "danger" + if(brutedamage > 40) + status = "sustained major trauma!" + span = "userdanger" + if(brutedamage) + usr << "The [org.getDisplayName()] appears to have [status]" + if(getFireLoss()) + usr << "Analysis of skin burns:" + for(var/obj/item/organ/limb/org in organs) + var/burndamage = org.burn_dam + if(burndamage > 0) + status = "signs of minor burns." + span = "notice" + if(burndamage > 20) + status = "serious burns." + span = "danger" + if(burndamage > 40) + status = "major burns!" + span = "userdanger" + if(burndamage) + usr << "The [org.getDisplayName()] appears to have [status]" + if(getOxyLoss()) + usr << "Patient has signs of suffocation, emergency treatment may be required!" + if(getToxLoss() > 20) + usr << "Gathered data is inconsistent with the analysis, possible cause: intoxication." - if(href_list["add_crime"]) - switch(alert("What crime would you like to add?","Security HUD","Minor Crime","Major Crime","Cancel")) - if("Minor Crime") + if(href_list["hud"] == "s") + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(usr.stat || usr == src) //|| !usr.canmove || usr.restrained()) Fluff: Sechuds have eye-tracking technology and sets 'arrest' to people that the wearer looks and blinks at. + return //Non-fluff: This allows sec to set people to arrest as they get disarmed or beaten + // Checks the user has security clearence before allowing them to change arrest status via hud, comment out to enable all access + var/allowed_access = null + var/obj/item/clothing/glasses/G = H.glasses + if (!G.emagged) + if(H.wear_id) + var/list/access = H.wear_id.GetAccess() + if(access_sec_doors in access) + allowed_access = H.get_authentification_name() + else + allowed_access = "@%&ERROR_%$*" + + + if(!allowed_access) + H << "ERROR: Invalid Access" + return + + if(perpname) + R = find_record("name", perpname, data_core.security) + if(R) + if(href_list["status"]) + var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Discharged", "Cancel") if(R) - var/t1 = copytext(sanitize(input("Please input minor crime names:", "Security HUD", "", null) as text),1,MAX_MESSAGE_LEN) - var/t2 = copytext(sanitize(input("Please input minor crime details:", "Security HUD", "", null) as message),1,MAX_MESSAGE_LEN) - if(R) - if (!t1 || !t2 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return - var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) - data_core.addMinorCrime(R.fields["id"], crime) - usr << "Successfully added a minor crime." - return - if("Major Crime") - if(R) - var/t1 = copytext(sanitize(input("Please input major crime names:", "Security HUD", "", null) as text),1,MAX_MESSAGE_LEN) - var/t2 = copytext(sanitize(input("Please input major crime details:", "Security HUD", "", null) as message),1,MAX_MESSAGE_LEN) - if(R) - if (!t1 || !t2 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return - var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) - data_core.addMajorCrime(R.fields["id"], crime) - usr << "Successfully added a major crime." - return - else return - - if(href_list["view_comment"]) - if(R) - if(H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return - usr << "Comments/Log:" - var/counter = 1 - while(R.fields[text("com_[]", counter)]) - usr << R.fields[text("com_[]", counter)] - usr << "----------" - counter++ - return - - if(href_list["add_comment"]) - if(R) - var/t1 = copytext(sanitize(input("Add Comment:", "Secure. records", null, null) as message),1,MAX_MESSAGE_LEN) - if(R) - if (!t1 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(setcriminal != "Cancel") + investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", "records") + R.fields["criminal"] = setcriminal + sec_hud_set_security_status() return - var/counter = 1 - while(R.fields[text("com_[]", counter)]) - counter++ - R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []
[]", allowed_access, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,) - usr << "Successfully added comment." - return - usr << "Unable to locate a data core entry for this person." + + if(href_list["view"]) + if(R) + if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + return + usr << "Name: [R.fields["name"]] Criminal Status: [R.fields["criminal"]]" + usr << "Minor Crimes:" + for(var/datum/data/crime/c in R.fields["mi_crim"]) + usr << "Crime: [c.crimeName]" + usr << "Details: [c.crimeDetails]" + usr << "Added by [c.author] at [c.time]" + usr << "----------" + usr << "Major Crimes:" + for(var/datum/data/crime/c in R.fields["ma_crim"]) + usr << "Crime: [c.crimeName]" + usr << "Details: [c.crimeDetails]" + usr << "Added by [c.author] at [c.time]" + usr << "----------" + usr << "Notes: [R.fields["notes"]]" + return + + if(href_list["add_crime"]) + switch(alert("What crime would you like to add?","Security HUD","Minor Crime","Major Crime","Cancel")) + if("Minor Crime") + if(R) + var/t1 = copytext(sanitize(input("Please input minor crime names:", "Security HUD", "", null) as text),1,MAX_MESSAGE_LEN) + var/t2 = copytext(sanitize(input("Please input minor crime details:", "Security HUD", "", null) as message),1,MAX_MESSAGE_LEN) + if(R) + if (!t1 || !t2 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + return + var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) + data_core.addMinorCrime(R.fields["id"], crime) + usr << "Successfully added a minor crime." + return + if("Major Crime") + if(R) + var/t1 = copytext(sanitize(input("Please input major crime names:", "Security HUD", "", null) as text),1,MAX_MESSAGE_LEN) + var/t2 = copytext(sanitize(input("Please input major crime details:", "Security HUD", "", null) as message),1,MAX_MESSAGE_LEN) + if(R) + if (!t1 || !t2 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + return + var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) + data_core.addMajorCrime(R.fields["id"], crime) + usr << "Successfully added a major crime." + return + else return + + if(href_list["view_comment"]) + if(R) + if(H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + return + usr << "Comments/Log:" + var/counter = 1 + while(R.fields[text("com_[]", counter)]) + usr << R.fields[text("com_[]", counter)] + usr << "----------" + counter++ + return + + if(href_list["add_comment"]) + if(R) + var/t1 = copytext(sanitize(input("Add Comment:", "Secure. records", null, null) as message),1,MAX_MESSAGE_LEN) + if(R) + if (!t1 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + return + var/counter = 1 + while(R.fields[text("com_[]", counter)]) + counter++ + R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []
[]", allowed_access, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,) + usr << "Successfully added comment." + return + usr << "Unable to locate a data core entry for this person." /mob/living/carbon/human/proc/play_xylophone() if(!src.xylophone) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index af702c86567..d169424ad49 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -34,7 +34,6 @@ var/list/ai_list = list() radiomod = ";" //AIs will, by default, state their laws on the internal radio. var/obj/item/device/pda/ai/aiPDA = null var/obj/item/device/multitool/aiMulti = null - var/obj/item/device/camera/siliconcam/aicamera = null var/obj/machinery/bot/Bot //MALFUNCTION diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index a77344a194c..d475500f52a 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -56,7 +56,6 @@ var/obj/item/weapon/tank/internal = null //Hatred. Used if a borg has a jetpack. var/obj/item/robot_parts/robot_suit/robot_suit = null //Used for deconstruction to remember what the borg was constructed out of.. - var/obj/item/device/camera/siliconcam/aicamera = null //photography var/toner = 0 var/tonermax = 40 diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 5136cea9f14..4470da769e4 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -9,6 +9,7 @@ var/list/alarms_to_clear = list() var/designation = "" var/radiomod = "" //Radio character used before state laws/arrivals announce to allow department transmissions, default, or none at all. + var/obj/item/device/camera/siliconcam/aicamera = null //photography var/obj/item/device/radio/borg/radio = null //AIs dont use this but this is at the silicon level to advoid copypasta in say() @@ -408,3 +409,7 @@ visible_message("[M] punches [src], but doesn't leave a dent.", \ "[M] punches [src], but doesn't leave a dent.!") return 0 + +/mob/living/silicon/proc/GetPhoto() + if (aicamera) + return aicamera.selectpicture(aicamera) \ No newline at end of file diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index a3db1f6b3b7..247b0356c00 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -332,22 +332,22 @@ else injectaialbum(icon, img, desc, pixel_x, pixel_y, blueprintsinject) - -obj/item/device/camera/siliconcam/proc/viewpichelper(var/obj/item/device/camera/siliconcam/targetloc) +obj/item/device/camera/siliconcam/proc/selectpicture(var/obj/item/device/camera/siliconcam/targetloc) var/list/nametemp = list() var/find - var/datum/picture/selection if(targetloc.aipictures.len == 0) usr << "No images saved" return for(var/datum/picture/t in targetloc.aipictures) nametemp += t.fields["name"] find = input("Select image (numbered in order taken)") in nametemp - var/obj/item/weapon/photo/P = new/obj/item/weapon/photo() for(var/datum/picture/q in targetloc.aipictures) if(q.fields["name"] == find) - selection = q - break // just in case some AI decides to take 10 thousand pictures in a round + return q + +obj/item/device/camera/siliconcam/proc/viewpichelper(var/obj/item/device/camera/siliconcam/targetloc) + var/obj/item/weapon/photo/P = new/obj/item/weapon/photo() + var/datum/picture/selection = selectpicture(targetloc) P.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"]) P.pixel_x = selection.fields["pixel_x"] P.pixel_y = selection.fields["pixel_y"] From 146414e0c1f351d2cebb78bd3c30dd4d88995fd2 Mon Sep 17 00:00:00 2001 From: Lo6a4evskiy Date: Wed, 21 Jan 2015 21:42:43 +0400 Subject: [PATCH 3/9] Reinclude some stuff in .dme --- tgstation.dme | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tgstation.dme b/tgstation.dme index 3718c01de8f..2ad25b212c9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -132,6 +132,7 @@ #include "code\controllers\subsystem\mobs.dm" #include "code\controllers\subsystem\nanoUI.dm" #include "code\controllers\subsystem\objects.dm" +#include "code\controllers\subsystem\pai.dm" #include "code\controllers\subsystem\pipenets.dm" #include "code\controllers\subsystem\power.dm" #include "code\controllers\subsystem\radio.dm" @@ -148,6 +149,8 @@ #include "code\datums\datacore.dm" #include "code\datums\datumvars.dm" #include "code\datums\gas_mixture.dm" +#include "code\datums\goon_mutations_disabilities.dm" +#include "code\datums\goon_mutations_powers.dm" #include "code\datums\hud.dm" #include "code\datums\mind.dm" #include "code\datums\mixed.dm" @@ -226,6 +229,7 @@ #include "code\datums\spells\mind_transfer.dm" #include "code\datums\spells\projectile.dm" #include "code\datums\spells\santa.dm" +#include "code\datums\spells\summonitem.dm" #include "code\datums\spells\trigger.dm" #include "code\datums\spells\turf_teleport.dm" #include "code\datums\spells\wizard.dm" @@ -284,6 +288,7 @@ #include "code\game\gamemodes\blob\blobs\node.dm" #include "code\game\gamemodes\blob\blobs\resource.dm" #include "code\game\gamemodes\blob\blobs\shield.dm" +#include "code\game\gamemodes\blob\blobs\storage.dm" #include "code\game\gamemodes\changeling\changeling.dm" #include "code\game\gamemodes\changeling\changeling_power.dm" #include "code\game\gamemodes\changeling\evolution_menu.dm" @@ -346,6 +351,7 @@ #include "code\game\jobs\job\science.dm" #include "code\game\jobs\job\security.dm" #include "code\game\jobs\job\silicon.dm" +#include "code\game\jobs\job\supply.dm" #include "code\game\machinery\ai_slipper.dm" #include "code\game\machinery\airlock_control.dm" #include "code\game\machinery\alarm.dm" @@ -482,6 +488,7 @@ #include "code\game\mecha\medical\odysseus.dm" #include "code\game\mecha\working\ripley.dm" #include "code\game\mecha\working\working.dm" +#include "code\game\objects\buckling.dm" #include "code\game\objects\empulse.dm" #include "code\game\objects\explosion.dm" #include "code\game\objects\items.dm" @@ -576,6 +583,7 @@ #include "code\game\objects\items\weapons\AI_modules.dm" #include "code\game\objects\items\weapons\airlock_painter.dm" #include "code\game\objects\items\weapons\cards_ids.dm" +#include "code\game\objects\items\weapons\chrono_eraser.dm" #include "code\game\objects\items\weapons\cigs_lighters.dm" #include "code\game\objects\items\weapons\clown_items.dm" #include "code\game\objects\items\weapons\cosmetics.dm" @@ -840,6 +848,7 @@ #include "code\modules\clothing\shoes\colour.dm" #include "code\modules\clothing\shoes\magboots.dm" #include "code\modules\clothing\shoes\miscellaneous.dm" +#include "code\modules\clothing\spacesuits\chronosuit.dm" #include "code\modules\clothing\spacesuits\hardsuit.dm" #include "code\modules\clothing\spacesuits\miscellaneous.dm" #include "code\modules\clothing\spacesuits\ninja.dm" @@ -1151,6 +1160,7 @@ #include "code\modules\mob\living\simple_animal\friendly\crab.dm" #include "code\modules\mob\living\simple_animal\friendly\drone.dm" #include "code\modules\mob\living\simple_animal\friendly\farm_animals.dm" +#include "code\modules\mob\living\simple_animal\friendly\fox.dm" #include "code\modules\mob\living\simple_animal\friendly\lizard.dm" #include "code\modules\mob\living\simple_animal\friendly\mouse.dm" #include "code\modules\mob\living\simple_animal\friendly\pug.dm" @@ -1236,6 +1246,7 @@ #include "code\modules\projectiles\ammunition.dm" #include "code\modules\projectiles\firing.dm" #include "code\modules\projectiles\gun.dm" +#include "code\modules\projectiles\pins.dm" #include "code\modules\projectiles\projectile.dm" #include "code\modules\projectiles\ammunition\ammo_casings.dm" #include "code\modules\projectiles\ammunition\boxes.dm" @@ -1264,6 +1275,12 @@ #include "code\modules\projectiles\projectile\magic.dm" #include "code\modules\projectiles\projectile\special.dm" #include "code\modules\reagents\Chemistry-Colours.dm" +#include "code\modules\reagents\Chemistry-Goon-420BlazeIt.dm" +#include "code\modules\reagents\Chemistry-Goon-Medicine.dm" +#include "code\modules\reagents\Chemistry-Goon-Other.dm" +#include "code\modules\reagents\Chemistry-Goon-Pyrotechnics.dm" +#include "code\modules\reagents\Chemistry-Goon-Readme.dm" +#include "code\modules\reagents\Chemistry-Goon-Toxins.dm" #include "code\modules\reagents\Chemistry-Holder.dm" #include "code\modules\reagents\Chemistry-Machinery.dm" #include "code\modules\reagents\Chemistry-Readme.dm" @@ -1272,6 +1289,7 @@ #include "code\modules\reagents\reagent_containers.dm" #include "code\modules\reagents\reagent_dispenser.dm" #include "code\modules\reagents\syringe_gun.dm" +#include "code\modules\reagents\Chemistry-Reagents\Blob-Reagents.dm" #include "code\modules\reagents\Chemistry-Reagents\Chemistry-Reagents.dm" #include "code\modules\reagents\Chemistry-Reagents\Medicine-Reagents.dm" #include "code\modules\reagents\Chemistry-Reagents\Toxin-Reagents.dm" @@ -1282,6 +1300,7 @@ #include "code\modules\reagents\reagent_containers\dropper.dm" #include "code\modules\reagents\reagent_containers\glass.dm" #include "code\modules\reagents\reagent_containers\hypospray.dm" +#include "code\modules\reagents\reagent_containers\patch.dm" #include "code\modules\reagents\reagent_containers\pill.dm" #include "code\modules\reagents\reagent_containers\spray.dm" #include "code\modules\reagents\reagent_containers\syringes.dm" @@ -1293,6 +1312,7 @@ #include "code\modules\research\circuitprinter.dm" #include "code\modules\research\designs.dm" #include "code\modules\research\destructive_analyzer.dm" +#include "code\modules\research\experimentor.dm" #include "code\modules\research\message_server.dm" #include "code\modules\research\protolathe.dm" #include "code\modules\research\rd-readme.dm" From c6a13419a916dab8ad96f4fcf0c3a7882b5dda33 Mon Sep 17 00:00:00 2001 From: Lo6a4evskiy Date: Wed, 21 Jan 2015 22:09:52 +0400 Subject: [PATCH 4/9] Compile, you damn dirty code --- code/datums/datacore.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index 3acf536fe58..fd5f91a97c3 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -344,7 +344,6 @@ var/record_id_num = 1001 clothes_s = icon('icons/mob/uniform.dmi', "director_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) - clothes_s.Blend(icon('icons/mob/items_lefthand.dmi', "clipboard"), ICON_OVERLAY) if("Scientist") clothes_s = icon('icons/mob/uniform.dmi', "toxinswhite_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) @@ -419,4 +418,4 @@ var/record_id_num = 1001 if(clothes_s) photo.Blend(clothes_s, ICON_OVERLAY) - return photo + return photo From bfd74684b4254d683a2b47b643cbe871550caa10 Mon Sep 17 00:00:00 2001 From: Lo6a4evskiy Date: Sat, 24 Jan 2015 16:14:44 +0400 Subject: [PATCH 5/9] Tweaks as noted, added myself to admins.txt --- code/datums/datacore.dm | 140 +++++++++++------------ code/game/machinery/computer/security.dm | 6 +- config/admins.txt | 1 + 3 files changed, 74 insertions(+), 73 deletions(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index fd5f91a97c3..d256d328460 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -292,18 +292,45 @@ var/record_id_num = 1001 var/icon/clothes_s = null switch(H.mind.assigned_role) - if("Head of Personnel") - clothes_s = icon('icons/mob/uniform.dmi', "hop_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - if("Bartender") - clothes_s = icon('icons/mob/uniform.dmi', "ba_suit_s") + if("Assistant") + clothes_s = icon('icons/mob/uniform.dmi', "grey_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/suit.dmi', "armoralt"), ICON_OVERLAY) + if("Scientist") + clothes_s = icon('icons/mob/uniform.dmi', "toxinswhite_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_tox"), ICON_OVERLAY) + if("Station Engineer") + clothes_s = icon('icons/mob/uniform.dmi', "engine_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) + if("Security Officer") + clothes_s = icon('icons/mob/uniform.dmi', "security_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY) + if("Medical Doctor") + clothes_s = icon('icons/mob/uniform.dmi', "medical_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) + if("Cargo Technician") + clothes_s = icon('icons/mob/uniform.dmi', "cargo_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Shaft Miner") + clothes_s = icon('icons/mob/uniform.dmi', "miner_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Atmospheric Technician") + clothes_s = icon('icons/mob/uniform.dmi', "atmos_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) if("Botanist") clothes_s = icon('icons/mob/uniform.dmi', "hydroponics_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) clothes_s.Blend(icon('icons/mob/hands.dmi', "ggloves"), ICON_UNDERLAY) clothes_s.Blend(icon('icons/mob/suit.dmi', "apron"), ICON_OVERLAY) + if("Chemist") + clothes_s = icon('icons/mob/uniform.dmi', "chemistrywhite_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_chem"), ICON_OVERLAY) if("Cook") clothes_s = icon('icons/mob/uniform.dmi', "chef_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) @@ -311,55 +338,6 @@ var/record_id_num = 1001 if("Janitor") clothes_s = icon('icons/mob/uniform.dmi', "janitor_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Librarian") - clothes_s = icon('icons/mob/uniform.dmi', "red_suit_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Quartermaster") - clothes_s = icon('icons/mob/uniform.dmi', "qm_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - if("Cargo Technician") - clothes_s = icon('icons/mob/uniform.dmi', "cargo_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Shaft Miner") - clothes_s = icon('icons/mob/uniform.dmi', "miner_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Lawyer") - clothes_s = icon('icons/mob/uniform.dmi', "bluesuit_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/suit.dmi', "suitjacket_blue"), ICON_OVERLAY) - if("Chaplain") - clothes_s = icon('icons/mob/uniform.dmi', "chapblack_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - if("Clown") - clothes_s = icon('icons/mob/uniform.dmi', "clown_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "clown"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/mask.dmi', "clown"), ICON_OVERLAY) - if("Mime") - clothes_s = icon('icons/mob/uniform.dmi', "mime_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/hands.dmi', "lgloves"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/mask.dmi', "mime"), ICON_OVERLAY) - clothes_s.Blend(icon('icons/mob/suit.dmi', "suspenders"), ICON_OVERLAY) - if("Research Director") - clothes_s = icon('icons/mob/uniform.dmi', "director_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) - if("Scientist") - clothes_s = icon('icons/mob/uniform.dmi', "toxinswhite_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_tox"), ICON_OVERLAY) - if("Chemist") - clothes_s = icon('icons/mob/uniform.dmi', "chemistrywhite_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_chem"), ICON_OVERLAY) - if("Chief Medical Officer") - clothes_s = icon('icons/mob/uniform.dmi', "cmo_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_cmo"), ICON_OVERLAY) - if("Medical Doctor") - clothes_s = icon('icons/mob/uniform.dmi', "medical_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) if("Geneticist") clothes_s = icon('icons/mob/uniform.dmi', "geneticswhite_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY) @@ -372,6 +350,38 @@ var/record_id_num = 1001 clothes_s = icon('icons/mob/uniform.dmi', "robotics_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) + if("Lawyer") + clothes_s = icon('icons/mob/uniform.dmi', "bluesuit_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "laceups"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "suitjacket_blue"), ICON_OVERLAY) + if("Clown") + clothes_s = icon('icons/mob/uniform.dmi', "clown_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "clown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/mask.dmi', "clown"), ICON_OVERLAY) + if("Mime") + clothes_s = icon('icons/mob/uniform.dmi', "mime_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/hands.dmi', "lgloves"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/mask.dmi', "mime"), ICON_OVERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "suspenders"), ICON_OVERLAY) + if("Bartender") + clothes_s = icon('icons/mob/uniform.dmi', "ba_suit_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "armoralt"), ICON_OVERLAY) + if("Quartermaster") + clothes_s = icon('icons/mob/uniform.dmi', "qm_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if("Chaplain") + clothes_s = icon('icons/mob/uniform.dmi', "chapblack_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) + if("Research Director") + clothes_s = icon('icons/mob/uniform.dmi', "director_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY) + if("Chief Medical Officer") + clothes_s = icon('icons/mob/uniform.dmi', "cmo_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_cmo"), ICON_OVERLAY) if("Captain") clothes_s = icon('icons/mob/uniform.dmi', "captain_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) @@ -393,26 +403,16 @@ var/record_id_num = 1001 clothes_s.Blend(icon('icons/mob/mask.dmi', "cigaron"), ICON_OVERLAY) clothes_s.Blend(icon('icons/mob/head.dmi', "detective"), ICON_OVERLAY) clothes_s.Blend(icon('icons/mob/suit.dmi', "detective"), ICON_OVERLAY) - if("Security Officer") - clothes_s = icon('icons/mob/uniform.dmi', "security_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "jackboots"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/suit.dmi', "armor"), ICON_OVERLAY) if("Chief Engineer") clothes_s = icon('icons/mob/uniform.dmi', "chief_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) clothes_s.Blend(icon('icons/mob/hands.dmi', "bgloves"), ICON_UNDERLAY) clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) - if("Station Engineer") - clothes_s = icon('icons/mob/uniform.dmi', "engine_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "orange"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) - if("Atmospheric Technician") - clothes_s = icon('icons/mob/uniform.dmi', "atmos_s") - clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) - clothes_s.Blend(icon('icons/mob/belt.dmi', "utility"), ICON_OVERLAY) - if("Assistant") - clothes_s = icon('icons/mob/uniform.dmi', "grey_s") + if("Head of Personnel") + clothes_s = icon('icons/mob/uniform.dmi', "hop_s") + clothes_s.Blend(icon('icons/mob/feet.dmi', "brown"), ICON_UNDERLAY) + if("Librarian") + clothes_s = icon('icons/mob/uniform.dmi', "red_suit_s") clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY) if(clothes_s) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index c5a4c85ee29..b3bde675ab4 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -686,14 +686,14 @@ What a mess.*/ return /obj/machinery/computer/secure_data/proc/get_photo(var/mob/user) - if (istype(user.get_active_hand(), /obj/item/weapon/photo)) - var/obj/item/weapon/photo/photo = user.get_active_hand() - return photo.img if (istype(user, /mob/living/silicon)) var/mob/living/silicon/tempAI = user var/datum/picture/selection = tempAI.GetPhoto() if (selection) return selection.fields["img"] + else if (istype(user.get_active_hand(), /obj/item/weapon/photo)) + var/obj/item/weapon/photo/photo = user.get_active_hand() + return photo.img /obj/machinery/computer/secure_data/emp_act(severity) if(stat & (BROKEN|NOPOWER)) diff --git a/config/admins.txt b/config/admins.txt index 3081f865151..dc149720d8b 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -77,3 +77,4 @@ thurgatar = Game Master xerux = Game Master dannno = Game Master allura = Game Master +lo6a4evskiy = Game Master From c33992fed01d137fc8ac542a5e1e744ad787470a Mon Sep 17 00:00:00 2001 From: Lo6a4evskiy Date: Sun, 25 Jan 2015 00:04:50 +0400 Subject: [PATCH 6/9] Code cleanup --- code/game/machinery/computer/medical.dm | 68 +++++++++------- code/game/machinery/computer/security.dm | 56 ++++++++----- code/modules/mob/living/carbon/human/human.dm | 81 +++++++++++-------- 3 files changed, 119 insertions(+), 86 deletions(-) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 70455e2a9fd..37b0d766a7f 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -188,8 +188,9 @@ return /obj/machinery/computer/med_data/Topic(href, href_list) - if(..()) - return + . = ..() + if(.) + return . if(!(active1 in data_core.general)) src.active1 = null if(!(active2 in data_core.medical)) @@ -281,8 +282,8 @@ switch(href_list["field"]) if("fingerprint") if(active1) - var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + var/t1 = stripped_input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) + if (!canUseMedicalRecordsConsole(usr, t1, a1)) return src.active1.fields["fingerprint"] = t1 if("sex") @@ -294,67 +295,67 @@ if("age") if(active1) var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as num - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + if (!canUseMedicalRecordsConsole(usr, t1, a1)) return src.active1.fields["age"] = t1 if("species") if(active1) var/t1 = input("Select a species", "Species Selection") as null|anything in roundstart_species - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + if (!canUseMedicalRecordsConsole(usr, t1, a1)) return active1.fields["species"] = t1 if("mi_dis") if(active2) - var/t1 = copytext(sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["mi_dis"] = t1 if("mi_dis_d") if(active2) - var/t1 = copytext(sanitize(input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["mi_dis_d"] = t1 if("ma_dis") if(active2) - var/t1 = copytext(sanitize(input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["ma_dis"] = t1 if("ma_dis_d") if(active2) - var/t1 = copytext(sanitize(input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["ma_dis_d"] = t1 if("alg") if(active2) - var/t1 = copytext(sanitize(input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["alg"] = t1 if("alg_d") if(active2) - var/t1 = copytext(sanitize(input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["alg_d"] = t1 if("cdi") if(active2) - var/t1 = copytext(sanitize(input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["cdi"] = t1 if("cdi_d") if(active2) - var/t1 = copytext(sanitize(input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["cdi_d"] = t1 if("notes") if(active2) - var/t1 = copytext(sanitize(input("Please summarize notes:", "Med. records", src.active2.fields["notes"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Please summarize notes:", "Med. records", src.active2.fields["notes"], null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["notes"] = t1 if("p_stat") @@ -368,8 +369,8 @@ src.temp = text("Blood Type:
\n\tA- A+
\n\tB- B+
\n\tAB- AB+
\n\tO- O+
", src, src, src, src, src, src, src, src) if("b_dna") if(active2) - var/t1 = copytext(sanitize(input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["b_dna"] = t1 else @@ -463,8 +464,8 @@ if(!(active2 in data_core.medical)) return var/a2 = src.active2 - var/t1 = copytext(sanitize(input("Add Comment:", "Med. records", null, null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active2 != a2)) + var/t1 = stripped_multiline_input("Add Comment:", "Med. records", null, null) + if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) return var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) @@ -477,7 +478,7 @@ else if (href_list["search"]) var/t1 = stripped_input(usr, "Search String: (Name, DNA, or ID)", "Med. records") - if ((!( t1 ) || usr.stat || !( src.authenticated ) || usr.restrained() || ((!in_range(src, usr)) && (!istype(usr, /mob/living/silicon))))) + if (!canUseMedicalRecordsConsole(usr, t1)) return src.active1 = null src.active2 = null @@ -554,6 +555,15 @@ ..(severity) +/obj/machinery/computer/med_data/proc/canUseMedicalRecordsConsole(mob/user, message = 1, record1, record2) + if (user) + if (message) + if (authenticated) + if (user.canUseTopic(src)) + if (!record1 || record1 == active1) + if (!record2 || record2 == active2) + return 1 + return 0 /obj/machinery/computer/med_data/laptop name = "medical laptop" diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index b3bde675ab4..e05d4f11466 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -251,8 +251,9 @@ I can't be bothered to look more of the actual code outside of switch but that probably needs revising too. What a mess.*/ /obj/machinery/computer/secure_data/Topic(href, href_list) - if(..()) - return + . = ..() + if(.) + return . if (!( data_core.general.Find(active1) )) active1 = null if (!( data_core.security.Find(active2) )) @@ -433,8 +434,8 @@ What a mess.*/ if (!( istype(active2, /datum/data/record) )) return var/a2 = active2 - var/t1 = copytext(sanitize(input("Add Comment:", "Secure. records", null, null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + var/t1 = stripped_multiline_input("Add Comment:", "Secure. records", null, null) + if (!canUseSecurityRecordsConsole(t1, usr, null, a2)) return var/counter = 1 while(active2.fields[text("com_[]", counter)]) @@ -529,7 +530,7 @@ What a mess.*/ if("name") if (istype(active1, /datum/data/record) || istype(active2, /datum/data/record)) var/t1 = stripped_input(usr, "Please input name:", "Secure. records", active1.fields["name"], null) - if ((!( t1 ) || !length(trim(t1)) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon)))) || active1 != a1) + if (!canUseSecurityRecordsConsole(usr, t1, null, a1)) return if(istype(active1, /datum/data/record)) active1.fields["name"] = t1 @@ -537,8 +538,8 @@ What a mess.*/ active2.fields["name"] = t1 if("id") if(istype(active2,/datum/data/record) || istype(active1,/datum/data/record)) - var/t1 = copytext(sanitize(input("Please input id:", "Secure. records", active1.fields["id"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + var/t1 = stripped_input(usr, "Please input id:", "Secure. records", active1.fields["id"], null) + if (!canUseSecurityRecordsConsole(usr, t1, null, a1)) return if(istype(active1,/datum/data/record)) active1.fields["id"] = t1 @@ -546,8 +547,8 @@ What a mess.*/ active2.fields["id"] = t1 if("fingerprint") if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) as text),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + var/t1 = stripped_input(usr, "Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) + if (!canUseSecurityRecordsConsole(usr, t1, null, a1)) return active1.fields["fingerprint"] = t1 if("sex") @@ -558,14 +559,14 @@ What a mess.*/ active1.fields["sex"] = "Male" if("age") if (istype(active1, /datum/data/record)) - var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num + if (!canUseSecurityRecordsConsole(usr, null, null, a1) || !t1) return active1.fields["age"] = t1 if("species") if (istype(active1, /datum/data/record)) var/t1 = input("Select a species", "Species Selection") as null|anything in roundstart_species - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1)) + if (!canUseSecurityRecordsConsole(usr, t1, null, a1)) return active1.fields["species"] = t1 if("photo front") @@ -578,36 +579,36 @@ What a mess.*/ active1.fields["photo_side"] = photo if("mi_crim_add") if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input minor crime names:", "Secure. records", "", null) as text),1,MAX_MESSAGE_LEN) - var/t2 = copytext(sanitize(input("Please input minor crime details:", "Secure. records", "", null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( t2 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + var/t1 = stripped_input(usr, "Please input minor crime names:", "Secure. records", "", null) + var/t2 = stripped_multiline_input(usr, "Please input minor crime details:", "Secure. records", "", null) + if (!canUseSecurityRecordsConsole(usr, t1, t2, null, a2)) return var/crime = data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text()) data_core.addMinorCrime(active1.fields["id"], crime) if("mi_crim_delete") if (istype(active1, /datum/data/record)) if (href_list["cdataid"]) - if ((!( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + if (!canUseSecurityRecordsConsole(usr, null, null, a2)) return data_core.removeMinorCrime(active1.fields["id"], href_list["cdataid"]) if("ma_crim_add") if (istype(active1, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please input major crime names:", "Secure. records", "", null) as text),1,MAX_MESSAGE_LEN) - var/t2 = copytext(sanitize(input("Please input major crime details:", "Secure. records", "", null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( t2 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + var/t1 = stripped_input(usr, "Please input major crime names:", "Secure. records", "", null) + var/t2 = stripped_multiline_input(usr, "Please input major crime details:", "Secure. records", "", null) + if (!canUseSecurityRecordsConsole(usr, t1, t2, a2)) return var/crime = data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text()) data_core.addMajorCrime(active1.fields["id"], crime) if("ma_crim_delete") if (istype(active1, /datum/data/record)) if (href_list["cdataid"]) - if ((!( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + if (!canUseSecurityRecordsConsole(usr, null, null, a2)) return data_core.removeMajorCrime(active1.fields["id"], href_list["cdataid"]) if("notes") if (istype(active2, /datum/data/record)) - var/t1 = copytext(sanitize(input("Please summarize notes:", "Secure. records", active2.fields["notes"], null) as message),1,MAX_MESSAGE_LEN) - if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active2 != a2)) + var/t1 = stripped_input(usr, "Please summarize notes:", "Secure. records", active2.fields["notes"], null) + if (!canUseSecurityRecordsConsole(usr, t1, null, a2)) return active2.fields["notes"] = t1 if("criminal") @@ -729,6 +730,17 @@ What a mess.*/ ..(severity) +/obj/machinery/computer/secure_data/proc/canUseSecurityRecordsConsole(mob/user, message1 = 1, message2 = 1, record1, record2) + if (user) + if (trim(message1)) + if (trim(message2)) + if (authenticated) + if (user.canUseTopic(src)) + if (!record1 || record1 == active1) + if (!record2 || record2 == active2) + return 1 + return 0 + /obj/machinery/computer/secure_data/detective_computer icon = 'icons/obj/computer.dmi' icon_state = "messyfiles" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a80c25296b6..a6cadd85469 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -298,32 +298,35 @@ var/mob/living/carbon/human/H = usr var/perpname = get_face_name(get_id_name("")) if(istype(H.glasses, /obj/item/clothing/glasses/hud)) - var/datum/data/record/R = find_record("name", perpname, data_core.general) - if(R) - if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud)) - return - var/icon/img = null - if(href_list["photo_front"]) - img = R.fields["photo_front"] - if(href_list["photo_side"]) - img = R.fields["photo_side"] - if(img) - usr << browse_rsc(img, "photo") - usr << browse("", "window=photo;size=120x120") + var/datum/data/record/R + if(href_list["photo_front"] || href_list["photo_side"]) + R = find_record("name", perpname, data_core.general) + if(R) + if(!usr.canUseTopic(src)) + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud)) + return + var/icon/img = null + if(href_list["photo_front"]) + img = R.fields["photo_front"] + else if(href_list["photo_side"]) + img = R.fields["photo_side"] + if(img) + usr << browse_rsc(img, "photo") + usr << browse("", "window=photo;size=120x120") if(href_list["hud"] == "m") if(istype(H.glasses, /obj/item/clothing/glasses/hud/health)) - if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/health)) - return if(href_list["p_stat"]) var/health = input(usr, "Specify a new physical status for this person.", "Medical HUD", R.fields["p_stat"]) in list("Active", "Physically Unfit", "*Unconscious*", "*Deceased*", "Cancel") - if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/health)) + if(!usr.canUseTopic(src)) + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/health)) return if(health != "Cancel") R.fields["p_stat"] = health if(href_list["m_stat"]) var/health = input(usr, "Specify a new mental status for this person.", "Medical HUD", R.fields["m_stat"]) in list("Stable", "*Watch*", "*Unstable*", "*Insane*", "Cancel") - if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/health)) + if(!usr.canUseTopic(src)) + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/health)) return if(health != "Cancel") R.fields["m_stat"] = health @@ -394,16 +397,18 @@ if(href_list["status"]) var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Discharged", "Cancel") if(R) - if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - if(setcriminal != "Cancel") - investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", "records") - R.fields["criminal"] = setcriminal - sec_hud_set_security_status() - return + if(usr.canUseTopic(src)) + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(setcriminal != "Cancel") + investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", "records") + R.fields["criminal"] = setcriminal + sec_hud_set_security_status() + return if(href_list["view"]) if(R) - if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(!usr.canUseTopic(src)) + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return usr << "Name: [R.fields["name"]] Criminal Status: [R.fields["criminal"]]" usr << "Minor Crimes:" @@ -419,16 +424,18 @@ usr << "Added by [c.author] at [c.time]" usr << "----------" usr << "Notes: [R.fields["notes"]]" - return + return if(href_list["add_crime"]) switch(alert("What crime would you like to add?","Security HUD","Minor Crime","Major Crime","Cancel")) if("Minor Crime") if(R) - var/t1 = copytext(sanitize(input("Please input minor crime names:", "Security HUD", "", null) as text),1,MAX_MESSAGE_LEN) - var/t2 = copytext(sanitize(input("Please input minor crime details:", "Security HUD", "", null) as message),1,MAX_MESSAGE_LEN) + var/t1 = stripped_input("Please input minor crime names:", "Security HUD", "", null) + var/t2 = stripped_multiline_input("Please input minor crime details:", "Security HUD", "", null) if(R) - if (!t1 || !t2 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if (!t1 || !t2 || !allowed_access) + else if(!usr.canUseTopic(src)) + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) data_core.addMinorCrime(R.fields["id"], crime) @@ -436,20 +443,22 @@ return if("Major Crime") if(R) - var/t1 = copytext(sanitize(input("Please input major crime names:", "Security HUD", "", null) as text),1,MAX_MESSAGE_LEN) - var/t2 = copytext(sanitize(input("Please input major crime details:", "Security HUD", "", null) as message),1,MAX_MESSAGE_LEN) + var/t1 = stripped_input("Please input major crime names:", "Security HUD", "", null) + var/t2 = stripped_multiline_input("Please input major crime details:", "Security HUD", "", null) if(R) - if (!t1 || !t2 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if (!t1 || !t2 || !allowed_access) + else if (!usr.canUseTopic(src)) + else if (!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) data_core.addMajorCrime(R.fields["id"], crime) usr << "Successfully added a major crime." - return - else return + return if(href_list["view_comment"]) if(R) - if(H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if(!usr.canUseTopic(src)) + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return usr << "Comments/Log:" var/counter = 1 @@ -461,9 +470,11 @@ if(href_list["add_comment"]) if(R) - var/t1 = copytext(sanitize(input("Add Comment:", "Secure. records", null, null) as message),1,MAX_MESSAGE_LEN) + var/t1 = stripped_multiline_input("Add Comment:", "Secure. records", null, null) if(R) - if (!t1 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security)) + if (!t1 || !allowed_access) + else if(!usr.canUseTopic(src)) + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return var/counter = 1 while(R.fields[text("com_[]", counter)]) From 50cc057504cc9cfae08a52f7e9c2756d66eb785d Mon Sep 17 00:00:00 2001 From: Lo6a4evskiy Date: Wed, 4 Feb 2015 17:35:42 +0400 Subject: [PATCH 7/9] Lots of fixes and improvements --- code/_globalvars/station.dm | 2 +- code/datums/datacore.dm | 49 ++-- code/game/machinery/computer/medical.dm | 148 ++++++------ code/game/machinery/computer/security.dm | 214 ++++++++++-------- code/modules/mob/living/carbon/human/human.dm | 87 ++++--- code/world.dm | 2 +- 6 files changed, 272 insertions(+), 230 deletions(-) diff --git a/code/_globalvars/station.dm b/code/_globalvars/station.dm index fe655216354..e8512549c1c 100644 --- a/code/_globalvars/station.dm +++ b/code/_globalvars/station.dm @@ -1,4 +1,4 @@ -var/global/obj/effect/datacore/data_core = null +var/global/datum/datacore/data_core = null //var/global/defer_powernet_rebuild = 0 // true if net rebuild will be called manually after an event //Noble idea, but doing this made GC fail. The gains from waiting on deffering are lost by using del() diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index d256d328460..4014d4eb0eb 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -1,6 +1,5 @@ -/obj/effect/datacore - name = "datacore" +/datum/datacore var/medical[] = list() var/medicalPrintCount = 0 var/general[] = list() @@ -25,7 +24,7 @@ var/time = "" var/dataId = 0 -/obj/effect/datacore/proc/createCrimeEntry(cname = "", cdetails = "", author = "", time = "") +/datum/datacore/proc/createCrimeEntry(cname = "", cdetails = "", author = "", time = "") var/datum/data/crime/c = new /datum/data/crime c.crimeName = cname c.crimeDetails = cdetails @@ -34,14 +33,14 @@ c.dataId = ++securityCrimeCounter return c -/obj/effect/datacore/proc/addMinorCrime(id = "", var/datum/data/crime/crime) +/datum/datacore/proc/addMinorCrime(id = "", var/datum/data/crime/crime) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["mi_crim"] crimes |= crime return -/obj/effect/datacore/proc/removeMinorCrime(id, cDataId) +/datum/datacore/proc/removeMinorCrime(id, cDataId) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["mi_crim"] @@ -50,7 +49,7 @@ crimes -= crime return -/obj/effect/datacore/proc/removeMajorCrime(id, cDataId) +/datum/datacore/proc/removeMajorCrime(id, cDataId) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["ma_crim"] @@ -59,14 +58,14 @@ crimes -= crime return -/obj/effect/datacore/proc/addMajorCrime(id = "", var/datum/data/crime/crime) +/datum/datacore/proc/addMajorCrime(id = "", var/datum/data/crime/crime) for(var/datum/data/record/R in security) if(R.fields["id"] == id) var/list/crimes = R.fields["ma_crim"] crimes |= crime return -/obj/effect/datacore/proc/manifest(var/nosleep = 0) +/datum/datacore/proc/manifest(var/nosleep = 0) spawn() if(!nosleep) sleep(40) @@ -74,12 +73,12 @@ manifest_inject(H) return -/obj/effect/datacore/proc/manifest_modify(var/name, var/assignment) +/datum/datacore/proc/manifest_modify(var/name, var/assignment) var/datum/data/record/foundrecord = find_record("name", name, data_core.general) if(foundrecord) foundrecord.fields["rank"] = assignment -/obj/effect/datacore/proc/get_manifest(monochrome, OOC) +/datum/datacore/proc/get_manifest(monochrome, OOC) var/list/heads = list() var/list/sec = list() var/list/eng = list() @@ -135,49 +134,49 @@ misc[name] = rank if(heads.len > 0) dat += "Heads" - for(name in heads) + for(var/name in heads) dat += "[name][heads[name]]" even = !even if(sec.len > 0) dat += "Security" - for(name in sec) + for(var/name in sec) dat += "[name][sec[name]]" even = !even if(eng.len > 0) dat += "Engineering" - for(name in eng) + for(var/name in eng) dat += "[name][eng[name]]" even = !even if(med.len > 0) dat += "Medical" - for(name in med) + for(var/name in med) dat += "[name][med[name]]" even = !even if(sci.len > 0) dat += "Science" - for(name in sci) + for(var/name in sci) dat += "[name][sci[name]]" even = !even if(sup.len > 0) dat += "Supply" - for(name in sup) + for(var/name in sup) dat += "[name][sup[name]]" even = !even if(civ.len > 0) dat += "Civilian" - for(name in civ) + for(var/name in civ) dat += "[name][civ[name]]" even = !even // in case somebody is insane and added them to the manifest, why not if(bot.len > 0) dat += "Silicon" - for(name in bot) + for(var/name in bot) dat += "[name][bot[name]]" even = !even // misc guys if(misc.len > 0) dat += "Miscellaneous" - for(name in misc) + for(var/name in misc) dat += "[name][misc[name]]" even = !even @@ -188,7 +187,7 @@ var/record_id_num = 1001 -/obj/effect/datacore/proc/manifest_inject(var/mob/living/carbon/human/H) +/datum/datacore/proc/manifest_inject(var/mob/living/carbon/human/H) if(H.mind && (H.mind.assigned_role != "MODE")) var/assignment if(H.mind.assigned_role) @@ -200,6 +199,10 @@ var/record_id_num = 1001 var/id = num2hex(record_id_num++,6) var/image = get_id_photo(H) + var/obj/item/weapon/photo/photo_front = new() + var/obj/item/weapon/photo/photo_side = new() + photo_front.photocreate(null, icon(image, dir = SOUTH)) + photo_side.photocreate(null, icon(image, dir = WEST)) //These records should ~really~ be merged or something //General Record @@ -214,8 +217,8 @@ var/record_id_num = 1001 G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" G.fields["sex"] = H.gender - G.fields["photo_front"] = icon(image, dir = SOUTH) - G.fields["photo_side"] = icon(image, dir = WEST) + G.fields["photo_front"] = photo_front + G.fields["photo_side"] = photo_side general += G //Medical Record @@ -260,7 +263,7 @@ var/record_id_num = 1001 locked += L return -/obj/effect/datacore/proc/get_id_photo(var/mob/living/carbon/human/H) +/datum/datacore/proc/get_id_photo(var/mob/living/carbon/human/H) var/icon/photo = null var/g = (H.gender == FEMALE) ? "f" : "m" if(!config.mutant_races || H.dna.species.use_skintones) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 37b0d766a7f..45e0278b5df 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -32,11 +32,11 @@ if(..()) return var/dat - if (src.temp) + if(src.temp) dat = text("[src.temp]

Clear Screen") else dat = text("Confirm Identity: []
", src, (src.scan ? text("[]", src.scan.name) : "----------")) - if (src.authenticated) + if(src.authenticated) switch(src.screen) if(1.0) dat += {" @@ -73,7 +73,7 @@ var/blood_type = "" var/b_dna = "" for(var/datum/data/record/E in data_core.medical) - if ((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"])) + if((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"])) blood_type = E.fields["blood_type"] b_dna = E.fields["b_dna"] var/background @@ -105,13 +105,20 @@ dat += "" if(active1 in data_core.general) - user << browse_rsc(active1.fields["photo_front"], "photo_front") - user << browse_rsc(active1.fields["photo_side"], "photo_side") - dat += "" + if(istype(active1.fields["photo_front"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P1 = active1.fields["photo_front"] + user << browse_rsc(P1.img, "photo_front") + if(istype(active1.fields["photo_side"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P2 = active1.fields["photo_side"] + user << browse_rsc(P2.img, "photo_side") + dat += "" + dat += "" + dat += "" dat += "" dat += "" dat += "" - dat += "" + if(config.mutant_races) + dat += "" dat += "" dat += "" dat += "" @@ -196,26 +203,26 @@ if(!(active2 in data_core.medical)) src.active2 = null - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) + if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon))) usr.set_machine(src) - if (href_list["temp"]) + if(href_list["temp"]) src.temp = null - if (href_list["scan"]) - if (src.scan) + if(href_list["scan"]) + if(src.scan) src.scan.loc = src.loc src.scan = null else var/obj/item/I = usr.get_active_hand() - if (istype(I, /obj/item/weapon/card/id)) + if(istype(I, /obj/item/weapon/card/id)) usr.drop_item() I.loc = src src.scan = I - else if (href_list["logout"]) + else if(href_list["logout"]) src.authenticated = null src.screen = null src.active1 = null src.active2 = null - else if (href_list["choice"]) + else if(href_list["choice"]) // SORTING! if(href_list["choice"] == "Sorting") // Reverse the order if clicked twice @@ -228,21 +235,21 @@ // New sorting order! sortBy = href_list["sort"] order = initial(order) - else if (href_list["login"]) - if (istype(usr, /mob/living/silicon)) + else if(href_list["login"]) + if(istype(usr, /mob/living/silicon)) src.active1 = null src.active2 = null src.authenticated = 1 src.rank = "AI" src.screen = 1 - else if (istype(src.scan, /obj/item/weapon/card/id)) + else if(istype(src.scan, /obj/item/weapon/card/id)) src.active1 = null src.active2 = null - if (src.check_access(src.scan)) + if(src.check_access(src.scan)) src.authenticated = src.scan.registered_name src.rank = src.scan.assignment src.screen = 1 - if (src.authenticated) + if(src.authenticated) if(href_list["screen"]) src.screen = text2num(href_list["screen"]) @@ -268,94 +275,94 @@

Severity: [Dis.severity]"} - else if (href_list["del_all"]) + else if(href_list["del_all"]) src.temp = text("Are you sure you wish to delete all records?
\n\tYes
\n\tNo
", src, src) - else if (href_list["del_all2"]) + else if(href_list["del_all2"]) investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", "records") data_core.medical.Cut() src.temp = "All records deleted." - else if (href_list["field"]) + else if(href_list["field"]) var/a1 = src.active1 var/a2 = src.active2 switch(href_list["field"]) if("fingerprint") if(active1) var/t1 = stripped_input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) - if (!canUseMedicalRecordsConsole(usr, t1, a1)) + if(!canUseMedicalRecordsConsole(usr, t1, a1)) return src.active1.fields["fingerprint"] = t1 if("sex") if(active1) - if (src.active1.fields["sex"] == "Male") + if(src.active1.fields["sex"] == "Male") src.active1.fields["sex"] = "Female" else src.active1.fields["sex"] = "Male" if("age") if(active1) var/t1 = input("Please input age:", "Med. records", src.active1.fields["age"], null) as num - if (!canUseMedicalRecordsConsole(usr, t1, a1)) + if(!canUseMedicalRecordsConsole(usr, t1, a1)) return src.active1.fields["age"] = t1 if("species") if(active1) - var/t1 = input("Select a species", "Species Selection") as null|anything in roundstart_species - if (!canUseMedicalRecordsConsole(usr, t1, a1)) + var/t1 = stripped_input("Please input species name", "Med. records", src.active1.fields["species"], null) + if(!canUseMedicalRecordsConsole(usr, t1, a1)) return active1.fields["species"] = t1 if("mi_dis") if(active2) var/t1 = stripped_input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["mi_dis"] = t1 if("mi_dis_d") if(active2) var/t1 = stripped_multiline_input("Please summarize minor dis.:", "Med. records", src.active2.fields["mi_dis_d"], null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["mi_dis_d"] = t1 if("ma_dis") if(active2) var/t1 = stripped_input("Please input major diabilities list:", "Med. records", src.active2.fields["ma_dis"], null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["ma_dis"] = t1 if("ma_dis_d") if(active2) var/t1 = stripped_multiline_input("Please summarize major dis.:", "Med. records", src.active2.fields["ma_dis_d"], null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["ma_dis_d"] = t1 if("alg") if(active2) var/t1 = stripped_input("Please state allergies:", "Med. records", src.active2.fields["alg"], null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["alg"] = t1 if("alg_d") if(active2) var/t1 = stripped_multiline_input("Please summarize allergies:", "Med. records", src.active2.fields["alg_d"], null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["alg_d"] = t1 if("cdi") if(active2) var/t1 = stripped_input("Please state diseases:", "Med. records", src.active2.fields["cdi"], null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["cdi"] = t1 if("cdi_d") if(active2) var/t1 = stripped_multiline_input("Please summarize diseases:", "Med. records", src.active2.fields["cdi_d"], null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["cdi_d"] = t1 if("notes") if(active2) var/t1 = stripped_multiline_input("Please summarize notes:", "Med. records", src.active2.fields["notes"], null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["notes"] = t1 if("p_stat") @@ -370,12 +377,24 @@ if("b_dna") if(active2) var/t1 = stripped_input("Please input DNA hash:", "Med. records", src.active2.fields["b_dna"], null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return src.active2.fields["b_dna"] = t1 + if("show_photo_front") + if(active1) + if(active1.fields["photo_front"]) + if(istype(active1.fields["photo_front"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = active1.fields["photo_front"] + P.show(usr) + if("show_photo_side") + if(active1) + if(active1.fields["photo_side"]) + if(istype(active1.fields["photo_side"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = active1.fields["photo_side"] + P.show(usr) else - else if (href_list["p_stat"]) + else if(href_list["p_stat"]) if(active1) switch(href_list["p_stat"]) if("deceased") @@ -387,7 +406,7 @@ if("unfit") src.active1.fields["p_stat"] = "Physically Unfit" - else if (href_list["m_stat"]) + else if(href_list["m_stat"]) if(active1) switch(href_list["m_stat"]) if("insane") @@ -400,7 +419,7 @@ src.active1.fields["m_stat"] = "Stable" - else if (href_list["blood_type"]) + else if(href_list["blood_type"]) if(active2) switch(href_list["blood_type"]) if("an") @@ -421,17 +440,17 @@ src.active2.fields["blood_type"] = "O+" - else if (href_list["del_r"]) + else if(href_list["del_r"]) if(active2) src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?
\n\tYes
\n\tNo
", src, src) - else if (href_list["del_r2"]) + else if(href_list["del_r2"]) investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", "records") if(active2) data_core.medical -= active2 active2 = null - else if (href_list["d_rec"]) + else if(href_list["d_rec"]) active1 = find_record("id", href_list["d_rec"], data_core.general) if(active1) active2 = find_record("id", href_list["d_rec"], data_core.medical) @@ -439,8 +458,8 @@ active1 = null screen = 4 - else if (href_list["new"]) - if ((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) ))) + else if(href_list["new"]) + if((istype(src.active1, /datum/data/record) && !( istype(src.active2, /datum/data/record) ))) var/datum/data/record/R = new /datum/data/record( ) R.fields["name"] = src.active1.fields["name"] R.fields["id"] = src.active1.fields["id"] @@ -460,46 +479,46 @@ src.active2 = R src.screen = 4 - else if (href_list["add_c"]) + else if(href_list["add_c"]) if(!(active2 in data_core.medical)) return var/a2 = src.active2 var/t1 = stripped_multiline_input("Add Comment:", "Med. records", null, null) - if (!canUseMedicalRecordsConsole(usr, t1, null, a2)) + if(!canUseMedicalRecordsConsole(usr, t1, null, a2)) return var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) counter++ src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", src.authenticated, src.rank, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,) - else if (href_list["del_c"]) - if ((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) + else if(href_list["del_c"]) + if((istype(src.active2, /datum/data/record) && src.active2.fields[text("com_[]", href_list["del_c"])])) src.active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" - else if (href_list["search"]) + else if(href_list["search"]) var/t1 = stripped_input(usr, "Search String: (Name, DNA, or ID)", "Med. records") - if (!canUseMedicalRecordsConsole(usr, t1)) + if(!canUseMedicalRecordsConsole(usr, t1)) return src.active1 = null src.active2 = null t1 = lowertext(t1) for(var/datum/data/record/R in data_core.medical) - if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"]))) + if((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]) || t1 == lowertext(R.fields["b_dna"]))) src.active2 = R else //Foreach continue //goto(3229) - if (!( src.active2 )) + if(!( src.active2 )) src.temp = text("Could not locate record [].", t1) else for(var/datum/data/record/E in data_core.general) - if ((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"])) + if((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"])) src.active1 = E else //Foreach continue //goto(3334) src.screen = 4 - else if (href_list["print_p"]) - if (!( src.printing )) + else if(href_list["print_p"]) + if(!( src.printing )) src.printing = 1 data_core.medicalPrintCount++ playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) @@ -507,7 +526,10 @@ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc ) P.info = "
Medical Record - (MR-[data_core.medicalPrintCount])

" if(active1 in data_core.general) - P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["sex"], src.active1.fields["age"], src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"]) + P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
", src.active1.fields["name"], src.active1.fields["id"], src.active1.fields["sex"], src.active1.fields["age"]) + if(config.mutant_races) + P.info += "\nSpecies: [active1.fields["species"]]
" + P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"]) else P.info += "General Record Lost!
" if(active2 in data_core.medical) @@ -556,12 +578,12 @@ ..(severity) /obj/machinery/computer/med_data/proc/canUseMedicalRecordsConsole(mob/user, message = 1, record1, record2) - if (user) - if (message) - if (authenticated) - if (user.canUseTopic(src)) - if (!record1 || record1 == active1) - if (!record2 || record2 == active2) + if(user) + if(message) + if(authenticated) + if(user.canUseTopic(src)) + if(!record1 || record1 == active1) + if(!record2 || record2 == active2) return 1 return 0 diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index e05d4f11466..480c87c5965 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -36,16 +36,16 @@ /obj/machinery/computer/secure_data/attack_hand(mob/user as mob) if(..()) return - if (src.z > 6) + if(src.z > 6) user << "Unable to establish a connection: \black You're too far away from the station!" return var/dat - if (temp) + if(temp) dat = text("[]

Clear Screen", temp, src) else dat = text("Confirm Identity: []
", src, (scan ? text("[]", scan.name) : "----------")) - if (authenticated) + if(authenticated) switch(screen) if(1.0) @@ -122,7 +122,7 @@ for(var/datum/data/record/R in sortRecord(data_core.general, sortBy, order)) var/crimstat = "" for(var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == R.fields["name"]) && (E.fields["id"] == R.fields["id"])) + if((E.fields["name"] == R.fields["name"]) && (E.fields["id"] == R.fields["id"])) crimstat = E.fields["criminal"] var/background switch(crimstat) @@ -159,27 +159,33 @@ dat += "
Delete All Records

Back" if(3.0) dat += "Security Record
" - if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) - user << browse_rsc(active1.fields["photo_front"], "photo_front") - user << browse_rsc(active1.fields["photo_side"], "photo_side") + if(istype(active1, /datum/data/record) && data_core.general.Find(active1)) + if(istype(active1.fields["photo_front"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P1 = active1.fields["photo_front"] + user << browse_rsc(P1.img, "photo_front") + if(istype(active1.fields["photo_side"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P2 = active1.fields["photo_side"] + user << browse_rsc(P2.img, "photo_side") dat += {"
Medical Record
Name:[active1.fields["name"]]
Name:[active1.fields["name"]]
ID:[active1.fields["id"]]
Sex: [active1.fields["sex"]] 
Age: [active1.fields["age"]] 
Species: [active1.fields["species"]] 
Species: [active1.fields["species"]] 
Fingerprint: [active1.fields["fingerprint"]] 
Physical Status: [active1.fields["p_stat"]] 
Mental Status: [active1.fields["m_stat"]] 
-
"} - if (config.mutant_races) + if(config.mutant_races) dat += "" dat += {"
Name: [active1.fields["name"]] 
ID: [active1.fields["id"]] 
Sex: [active1.fields["sex"]] 
Age: [active1.fields["age"]] 
Species: [active1.fields["species"]] 
Rank: [active1.fields["rank"]] 
Fingerprint: [active1.fields["fingerprint"]] 
Physical Status: [active1.fields["p_stat"]] 
Mental Status: [active1.fields["m_stat"]] 
-

Update front photo

Update side photo
+
+

+ Update front photo

+ Update side photo
"} else dat += "
General Record Lost!
" - if ((istype(active2, /datum/data/record) && data_core.security.Find(active2))) + if((istype(active2, /datum/data/record) && data_core.security.Find(active2))) dat += "Security Data" dat += "
Criminal Status: [active2.fields["criminal"]]" dat += "

Minor Crimes: Add New" @@ -254,11 +260,11 @@ What a mess.*/ . = ..() if(.) return . - if (!( data_core.general.Find(active1) )) + if(!( data_core.general.Find(active1) )) active1 = null - if (!( data_core.security.Find(active2) )) + if(!( data_core.security.Find(active2) )) active2 = null - if ((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) + if((usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf))) || (istype(usr, /mob/living/silicon))) usr.set_machine(src) switch(href_list["choice"]) // SORTING! @@ -277,13 +283,13 @@ What a mess.*/ if("Clear Screen") temp = null - if ("Return") + if("Return") screen = 1 active1 = null active2 = null if("Confirm Identity") - if (scan) + if(scan) if(istype(usr,/mob/living/carbon/human) && !usr.get_active_hand()) usr.put_in_hands(scan) else @@ -291,7 +297,7 @@ What a mess.*/ scan = null else var/obj/item/I = usr.get_active_hand() - if (istype(I, /obj/item/weapon/card/id)) + if(istype(I, /obj/item/weapon/card/id)) usr.drop_item() I.loc = src scan = I @@ -303,14 +309,14 @@ What a mess.*/ active2 = null if("Log In") - if (istype(usr, /mob/living/silicon)) + if(istype(usr, /mob/living/silicon)) var/mob/living/silicon/borg = usr active1 = null active2 = null authenticated = borg.name rank = "AI" screen = 1 - else if (istype(scan, /obj/item/weapon/card/id)) + else if(istype(scan, /obj/item/weapon/card/id)) active1 = null active2 = null if(check_access(scan)) @@ -323,53 +329,53 @@ What a mess.*/ active1 = null active2 = null - if ("Browse Record") + if("Browse Record") var/datum/data/record/R = locate(href_list["d_rec"]) var/S = locate(href_list["d_rec"]) - if (!( data_core.general.Find(R) )) + if(!( data_core.general.Find(R) )) temp = "Record Not Found!" else for(var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) + if((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) S = E active1 = R active2 = S screen = 3 -/* if ("Search Fingerprints") +/* if("Search Fingerprints") var/t1 = input("Search String: (Fingerprint)", "Secure. records", null, null) as text - if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || (!in_range(src, usr)) && (!istype(usr, /mob/living/silicon)))) + if((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || (!in_range(src, usr)) && (!istype(usr, /mob/living/silicon)))) return active1 = null active2 = null t1 = lowertext(t1) for(var/datum/data/record/R in data_core.general) - if (lowertext(R.fields["fingerprint"]) == t1) + if(lowertext(R.fields["fingerprint"]) == t1) active1 = R - if (!( active1 )) + if(!( active1 )) temp = text("Could not locate record [].", t1) else for(var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == active1.fields["name"] || E.fields["id"] == active1.fields["id"])) + if((E.fields["name"] == active1.fields["name"] || E.fields["id"] == active1.fields["id"])) active2 = E screen = 3 */ - if ("Print Record") - if (!( printing )) + if("Print Record") + if(!( printing )) printing = 1 data_core.securityPrintCount++ playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) sleep(30) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc ) P.info = "
Security Record - (SR-[data_core.securityPrintCount])

" - if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) + if((istype(active1, /datum/data/record) && data_core.general.Find(active1))) P.info += text("Name: [] ID: []
\nSex: []
\nAge: []
", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"]) - if (config.mutant_races) + if(config.mutant_races) P.info += "\nSpecies: [active1.fields["species"]]
" P.info += text("\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) else P.info += "General Record Lost!
" - if ((istype(active2, /datum/data/record) && data_core.security.Find(active2))) + if((istype(active2, /datum/data/record) && data_core.security.Find(active2))) P.info += text("
\n
Security Data

\nCriminal Status: []", active2.fields["criminal"]) P.info += "
\n
\nMinor Crimes:
\n" @@ -417,49 +423,49 @@ What a mess.*/ P.info += "" printing = null //RECORD DELETE - if ("Delete All Records") + if("Delete All Records") temp = "" temp += "Are you sure you wish to delete all Security records?
" temp += "Yes
" temp += "No" - if ("Purge All Records") + if("Purge All Records") investigate_log("[usr.name] ([usr.key]) has purged all the security records.", "records") for(var/datum/data/record/R in data_core.security) del(R) data_core.security.Cut() temp = "All Security records deleted." - if ("Add Entry") - if (!( istype(active2, /datum/data/record) )) + if("Add Entry") + if(!( istype(active2, /datum/data/record) )) return var/a2 = active2 var/t1 = stripped_multiline_input("Add Comment:", "Secure. records", null, null) - if (!canUseSecurityRecordsConsole(t1, usr, null, a2)) + if(!canUseSecurityRecordsConsole(t1, usr, null, a2)) return var/counter = 1 while(active2.fields[text("com_[]", counter)]) counter++ active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []
[]", src.authenticated, src.rank, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,) - if ("Delete Record (ALL)") - if (active1) + if("Delete Record (ALL)") + if(active1) temp = "
Are you sure you wish to delete the record (ALL)?
" temp += "Yes
" temp += "No" - if ("Delete Record (Security)") - if (active2) + if("Delete Record (Security)") + if(active2) temp = "
Are you sure you wish to delete the record (Security Portion Only)?
" temp += "Yes
" temp += "No" - if ("Delete Entry") - if ((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) + if("Delete Entry") + if((istype(active2, /datum/data/record) && active2.fields[text("com_[]", href_list["del_c"])])) active2.fields[text("com_[]", href_list["del_c"])] = "Deleted" //RECORD CREATE - if ("New Record (Security)") - if ((istype(active1, /datum/data/record) && !( istype(active2, /datum/data/record) ))) + if("New Record (Security)") + if((istype(active1, /datum/data/record) && !( istype(active2, /datum/data/record) ))) var/datum/data/record/R = new /datum/data/record() R.fields["name"] = active1.fields["name"] R.fields["id"] = active1.fields["id"] @@ -472,7 +478,7 @@ What a mess.*/ active2 = R screen = 3 - if ("New Record (General)") + if("New Record (General)") //General Record var/datum/data/record/G = new /datum/data/record() G.fields["name"] = "New Record" @@ -522,15 +528,15 @@ What a mess.*/ //FIELD FUNCTIONS - if ("Edit Field") + if("Edit Field") var/a1 = active1 var/a2 = active2 switch(href_list["field"]) if("name") - if (istype(active1, /datum/data/record) || istype(active2, /datum/data/record)) + if(istype(active1, /datum/data/record) || istype(active2, /datum/data/record)) var/t1 = stripped_input(usr, "Please input name:", "Secure. records", active1.fields["name"], null) - if (!canUseSecurityRecordsConsole(usr, t1, null, a1)) + if(!canUseSecurityRecordsConsole(usr, t1, null, a1)) return if(istype(active1, /datum/data/record)) active1.fields["name"] = t1 @@ -539,80 +545,92 @@ What a mess.*/ if("id") if(istype(active2,/datum/data/record) || istype(active1,/datum/data/record)) var/t1 = stripped_input(usr, "Please input id:", "Secure. records", active1.fields["id"], null) - if (!canUseSecurityRecordsConsole(usr, t1, null, a1)) + if(!canUseSecurityRecordsConsole(usr, t1, null, a1)) return if(istype(active1,/datum/data/record)) active1.fields["id"] = t1 if(istype(active2,/datum/data/record)) active2.fields["id"] = t1 if("fingerprint") - if (istype(active1, /datum/data/record)) + if(istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input fingerprint hash:", "Secure. records", active1.fields["fingerprint"], null) - if (!canUseSecurityRecordsConsole(usr, t1, null, a1)) + if(!canUseSecurityRecordsConsole(usr, t1, null, a1)) return active1.fields["fingerprint"] = t1 if("sex") - if (istype(active1, /datum/data/record)) - if (active1.fields["sex"] == "Male") + if(istype(active1, /datum/data/record)) + if(active1.fields["sex"] == "Male") active1.fields["sex"] = "Female" else active1.fields["sex"] = "Male" if("age") - if (istype(active1, /datum/data/record)) + if(istype(active1, /datum/data/record)) var/t1 = input("Please input age:", "Secure. records", active1.fields["age"], null) as num - if (!canUseSecurityRecordsConsole(usr, null, null, a1) || !t1) + if(!canUseSecurityRecordsConsole(usr, null, null, a1) || !t1) return active1.fields["age"] = t1 if("species") - if (istype(active1, /datum/data/record)) + if(istype(active1, /datum/data/record)) var/t1 = input("Select a species", "Species Selection") as null|anything in roundstart_species - if (!canUseSecurityRecordsConsole(usr, t1, null, a1)) + if(!canUseSecurityRecordsConsole(usr, t1, null, a1)) return active1.fields["species"] = t1 - if("photo front") + if("show_photo_front") + if(active1.fields["photo_front"]) + if(istype(active1.fields["photo_front"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = active1.fields["photo_front"] + P.show(usr) + if("upd_photo_front") var/icon/photo = get_photo(usr) if(photo) + qdel(active1.fields["photo_front"]) active1.fields["photo_front"] = photo - if("photo side") + if("show_photo_side") + if(active1.fields["photo_side"]) + if(istype(active1.fields["photo_side"], /obj/item/weapon/photo)) + var/obj/item/weapon/photo/P = active1.fields["photo_side"] + P.show(usr) + if("upd_photo_side") var/icon/photo = get_photo(usr) if(photo) + qdel(active1.fields["photo_side"]) active1.fields["photo_side"] = photo if("mi_crim_add") - if (istype(active1, /datum/data/record)) + if(istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input minor crime names:", "Secure. records", "", null) var/t2 = stripped_multiline_input(usr, "Please input minor crime details:", "Secure. records", "", null) - if (!canUseSecurityRecordsConsole(usr, t1, t2, null, a2)) + if(!canUseSecurityRecordsConsole(usr, t1, t2, null, a2)) return var/crime = data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text()) data_core.addMinorCrime(active1.fields["id"], crime) if("mi_crim_delete") - if (istype(active1, /datum/data/record)) - if (href_list["cdataid"]) - if (!canUseSecurityRecordsConsole(usr, null, null, a2)) + if(istype(active1, /datum/data/record)) + if(href_list["cdataid"]) + if(!canUseSecurityRecordsConsole(usr, null, null, a2)) return data_core.removeMinorCrime(active1.fields["id"], href_list["cdataid"]) if("ma_crim_add") - if (istype(active1, /datum/data/record)) + if(istype(active1, /datum/data/record)) var/t1 = stripped_input(usr, "Please input major crime names:", "Secure. records", "", null) var/t2 = stripped_multiline_input(usr, "Please input major crime details:", "Secure. records", "", null) - if (!canUseSecurityRecordsConsole(usr, t1, t2, a2)) + if(!canUseSecurityRecordsConsole(usr, t1, t2, a2)) return var/crime = data_core.createCrimeEntry(t1, t2, authenticated, worldtime2text()) data_core.addMajorCrime(active1.fields["id"], crime) if("ma_crim_delete") - if (istype(active1, /datum/data/record)) - if (href_list["cdataid"]) - if (!canUseSecurityRecordsConsole(usr, null, null, a2)) + if(istype(active1, /datum/data/record)) + if(href_list["cdataid"]) + if(!canUseSecurityRecordsConsole(usr, null, null, a2)) return data_core.removeMajorCrime(active1.fields["id"], href_list["cdataid"]) if("notes") - if (istype(active2, /datum/data/record)) + if(istype(active2, /datum/data/record)) var/t1 = stripped_input(usr, "Please summarize notes:", "Secure. records", active2.fields["notes"], null) - if (!canUseSecurityRecordsConsole(usr, t1, null, a2)) + if(!canUseSecurityRecordsConsole(usr, t1, null, a2)) return active2.fields["notes"] = t1 if("criminal") - if (istype(active2, /datum/data/record)) + if(istype(active2, /datum/data/record)) temp = "
Criminal Status:
" temp += "
    " temp += "
  • None
  • " @@ -624,7 +642,7 @@ What a mess.*/ if("rank") var/list/L = list( "Head of Personnel", "Captain", "AI" ) //This was so silly before the change. Now it actually works without beating your head against the keyboard. /N - if ((istype(active1, /datum/data/record) && L.Find(rank))) + if((istype(active1, /datum/data/record) && L.Find(rank))) temp = "
    Rank:
    " temp += "
      " for(var/rank in get_all_jobs()) @@ -636,14 +654,14 @@ What a mess.*/ else//To properly clear as per clear screen. temp=null switch(href_list["choice"]) - if ("Change Rank") - if (active1) + if("Change Rank") + if(active1) active1.fields["rank"] = href_list["rank"] if(href_list["rank"] in get_all_jobs()) active1.fields["real_rank"] = href_list["real_rank"] - if ("Change Criminal Status") - if (active2) + if("Change Criminal Status") + if(active2) var/old_field = active2.fields["criminal"] switch(href_list["criminal2"]) if("none") @@ -659,24 +677,24 @@ What a mess.*/ investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [usr.name] ([usr.key]).", "records") for(var/mob/living/carbon/human/H in mob_list) //thanks for forcing me to do this, whoever wrote this shitty records system H.sec_hud_set_security_status() - if ("Delete Record (Security) Execute") + if("Delete Record (Security) Execute") investigate_log("[usr.name] ([usr.key]) has deleted the security records for [active1.fields["name"]].", "records") - if (active2) + if(active2) data_core.security -= active2 del(active2) - if ("Delete Record (ALL) Execute") - if (active1) + if("Delete Record (ALL) Execute") + if(active1) investigate_log("[usr.name] ([usr.key]) has deleted all records for [active1.fields["name"]].", "records") for(var/datum/data/record/R in data_core.medical) - if ((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) + if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) data_core.medical -= R del(R) break data_core.general -= active1 del(active1) - if (active2) + if(active2) data_core.security -= active2 del(active2) else @@ -687,14 +705,16 @@ What a mess.*/ return /obj/machinery/computer/secure_data/proc/get_photo(var/mob/user) - if (istype(user, /mob/living/silicon)) + var/obj/item/weapon/photo/P = null + if(istype(user, /mob/living/silicon)) var/mob/living/silicon/tempAI = user var/datum/picture/selection = tempAI.GetPhoto() - if (selection) - return selection.fields["img"] - else if (istype(user.get_active_hand(), /obj/item/weapon/photo)) - var/obj/item/weapon/photo/photo = user.get_active_hand() - return photo.img + if(selection) + P = new() + P.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"]) + else if(istype(user.get_active_hand(), /obj/item/weapon/photo)) + P = user.get_active_hand() + return P /obj/machinery/computer/secure_data/emp_act(severity) if(stat & (BROKEN|NOPOWER)) @@ -731,13 +751,13 @@ What a mess.*/ ..(severity) /obj/machinery/computer/secure_data/proc/canUseSecurityRecordsConsole(mob/user, message1 = 1, message2 = 1, record1, record2) - if (user) - if (trim(message1)) - if (trim(message2)) - if (authenticated) - if (user.canUseTopic(src)) - if (!record1 || record1 == active1) - if (!record2 || record2 == active2) + if(user) + if(trim(message1)) + if(trim(message2)) + if(authenticated) + if(user.canUseTopic(src)) + if(!record1 || record1 == active1) + if(!record2 || record2 == active2) return 1 return 0 diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index a6cadd85469..70a1b51b52b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -247,7 +247,6 @@ siemens_coeff = G.siemens_coefficient return ..(shock_damage,source,siemens_coeff) - /mob/living/carbon/human/Topic(href, href_list) if(usr.canUseTopic(src, BE_CLOSE, NO_DEXTERY)) if(href_list["item"]) @@ -292,44 +291,44 @@ ..() + ///////HUDs/////// if(href_list["hud"]) if(istype(usr, /mob/living/carbon/human)) var/mob/living/carbon/human/H = usr var/perpname = get_face_name(get_id_name("")) if(istype(H.glasses, /obj/item/clothing/glasses/hud)) - var/datum/data/record/R + var/datum/data/record/R = find_record("name", perpname, data_core.general) if(href_list["photo_front"] || href_list["photo_side"]) - R = find_record("name", perpname, data_core.general) if(R) - if(!usr.canUseTopic(src)) - else if(!istype(H.glasses, /obj/item/clothing/glasses/hud)) - return - var/icon/img = null + if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud)) return + var/obj/item/weapon/photo/P = null if(href_list["photo_front"]) - img = R.fields["photo_front"] + P = R.fields["photo_front"] else if(href_list["photo_side"]) - img = R.fields["photo_side"] - if(img) - usr << browse_rsc(img, "photo") - usr << browse("", "window=photo;size=120x120") + P = R.fields["photo_side"] + if(P) + P.show(H) if(href_list["hud"] == "m") if(istype(H.glasses, /obj/item/clothing/glasses/hud/health)) if(href_list["p_stat"]) var/health = input(usr, "Specify a new physical status for this person.", "Medical HUD", R.fields["p_stat"]) in list("Active", "Physically Unfit", "*Unconscious*", "*Deceased*", "Cancel") - if(!usr.canUseTopic(src)) - else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/health)) - return - if(health != "Cancel") - R.fields["p_stat"] = health + if(R) + if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/health)) return + if(health && health != "Cancel") + R.fields["p_stat"] = health + return if(href_list["m_stat"]) var/health = input(usr, "Specify a new mental status for this person.", "Medical HUD", R.fields["m_stat"]) in list("Stable", "*Watch*", "*Unstable*", "*Insane*", "Cancel") - if(!usr.canUseTopic(src)) - else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/health)) - return - if(health != "Cancel") - R.fields["m_stat"] = health + if(R) + if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/health)) return + if(health && health != "Cancel") + R.fields["m_stat"] = health + return if(href_list["evaluation"]) if(!getBruteLoss() && !getFireLoss() && !getOxyLoss() && getToxLoss() < 20) usr << "No external injuries detected.
      " @@ -369,7 +368,7 @@ if(getOxyLoss()) usr << "Patient has signs of suffocation, emergency treatment may be required!" if(getToxLoss() > 20) - usr << "Gathered data is inconsistent with the analysis, possible cause: intoxication." + usr << "Gathered data is inconsistent with the analysis, possible cause: poisoning." if(href_list["hud"] == "s") if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) @@ -396,10 +395,10 @@ if(R) if(href_list["status"]) var/setcriminal = input(usr, "Specify a new criminal status for this person.", "Security HUD", R.fields["criminal"]) in list("None", "*Arrest*", "Incarcerated", "Parolled", "Discharged", "Cancel") - if(R) - if(usr.canUseTopic(src)) - if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - if(setcriminal != "Cancel") + if(setcriminal != "Cancel") + if(R) + if(H.canUseHUD()) + if(istype(H.glasses, /obj/item/clothing/glasses/hud/security)) investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", "records") R.fields["criminal"] = setcriminal sec_hud_set_security_status() @@ -407,9 +406,8 @@ if(href_list["view"]) if(R) - if(!usr.canUseTopic(src)) - else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return + if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return usr << "Name: [R.fields["name"]] Criminal Status: [R.fields["criminal"]]" usr << "Minor Crimes:" for(var/datum/data/crime/c in R.fields["mi_crim"]) @@ -433,10 +431,9 @@ var/t1 = stripped_input("Please input minor crime names:", "Security HUD", "", null) var/t2 = stripped_multiline_input("Please input minor crime details:", "Security HUD", "", null) if(R) - if (!t1 || !t2 || !allowed_access) - else if(!usr.canUseTopic(src)) - else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return + if (!t1 || !t2 || !allowed_access) return + else if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) data_core.addMinorCrime(R.fields["id"], crime) usr << "Successfully added a minor crime." @@ -446,10 +443,9 @@ var/t1 = stripped_input("Please input major crime names:", "Security HUD", "", null) var/t2 = stripped_multiline_input("Please input major crime details:", "Security HUD", "", null) if(R) - if (!t1 || !t2 || !allowed_access) - else if (!usr.canUseTopic(src)) - else if (!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return + if (!t1 || !t2 || !allowed_access) return + else if (!H.canUseHUD()) return + else if (!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return var/crime = data_core.createCrimeEntry(t1, t2, allowed_access, worldtime2text()) data_core.addMajorCrime(R.fields["id"], crime) usr << "Successfully added a major crime." @@ -457,9 +453,8 @@ if(href_list["view_comment"]) if(R) - if(!usr.canUseTopic(src)) - else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return + if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return usr << "Comments/Log:" var/counter = 1 while(R.fields[text("com_[]", counter)]) @@ -472,10 +467,9 @@ if(R) var/t1 = stripped_multiline_input("Add Comment:", "Secure. records", null, null) if(R) - if (!t1 || !allowed_access) - else if(!usr.canUseTopic(src)) - else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) - return + if (!t1 || !allowed_access) return + else if(!H.canUseHUD()) return + else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return var/counter = 1 while(R.fields[text("com_[]", counter)]) counter++ @@ -484,6 +478,9 @@ return usr << "Unable to locate a data core entry for this person." +/mob/living/carbon/human/proc/canUseHUD() + return !(src.stat || src.weakened || src.stunned || src.restrained()) + /mob/living/carbon/human/proc/play_xylophone() if(!src.xylophone) visible_message("[src] begins playing \his ribcage like a xylophone. It's quite spooky.","You begin to play a spooky refrain on your ribcage.","You hear a spooky xylophone melody.") diff --git a/code/world.dm b/code/world.dm index 55f7260d0d9..6b2e9d9f6df 100644 --- a/code/world.dm +++ b/code/world.dm @@ -58,7 +58,7 @@ world.log << "Database connection established." - data_core = new /obj/effect/datacore() + data_core = new /datum/datacore() spawn(-1) From 416fe43c44ef3c1bce69cf1030a5b6a31f7ce730 Mon Sep 17 00:00:00 2001 From: Lo6a4evskiy Date: Thu, 5 Feb 2015 20:18:55 +0400 Subject: [PATCH 8/9] Added changelog --- html/changelogs/Lo6a4evskiy-PR-7257.yml | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 html/changelogs/Lo6a4evskiy-PR-7257.yml diff --git a/html/changelogs/Lo6a4evskiy-PR-7257.yml b/html/changelogs/Lo6a4evskiy-PR-7257.yml new file mode 100644 index 00000000000..5d7eb4e2e6c --- /dev/null +++ b/html/changelogs/Lo6a4evskiy-PR-7257.yml @@ -0,0 +1,39 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscdel (general adding of nice things) +# rscadd (general deleting of nice things) +# imageadd +# imagedel +# spellcheck (typo fixes) +# experiment +# tgs (TG-ported fixes?) +################################# + +# Your name. +author: Lo6a4evskiy + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +#delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in single (') or double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "General record now contains a species field and a photo of the crewmember. Security record consoles allow you to update it with a photo taken in-game (with detective's camera, for example, or AI's)." + - rscadd: "Expanded functionality of security HUDs to display rank and photos." + - rscadd: "Medical HUDs allow user to change others' mental and physical status. Currently has no gameplay effect other than changing records." + - rscadd: "Medical HUDs can perform an examination at the distance, similrarly to how attacking yourself with help intent works. Has limited ability to detect suffocation and toxin damage." \ No newline at end of file From 62938cc309221f044afc8b012fe7784b818d676d Mon Sep 17 00:00:00 2001 From: Lo6a4evskiy Date: Thu, 5 Feb 2015 20:22:55 +0400 Subject: [PATCH 9/9] delete-after in changelog --- html/changelogs/Lo6a4evskiy-PR-7257.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/html/changelogs/Lo6a4evskiy-PR-7257.yml b/html/changelogs/Lo6a4evskiy-PR-7257.yml index 5d7eb4e2e6c..507f2478826 100644 --- a/html/changelogs/Lo6a4evskiy-PR-7257.yml +++ b/html/changelogs/Lo6a4evskiy-PR-7257.yml @@ -25,7 +25,7 @@ author: Lo6a4evskiy # Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. -#delete-after: True +delete-after: True # Any changes you've made. See valid prefix list above. # INDENT WITH TWO SPACES. NOT TABS. SPACES.