mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 16:18:01 +01:00
Merge pull request #7257 from Lo6a4evskiy/Sec_record_photo
Adds photos and some other stuff to security and medical records
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
+188
-21
@@ -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 += "<tr><th colspan=3>Heads</th></tr>"
|
||||
for(name in heads)
|
||||
for(var/name in heads)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[heads[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sec.len > 0)
|
||||
dat += "<tr><th colspan=3>Security</th></tr>"
|
||||
for(name in sec)
|
||||
for(var/name in sec)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sec[name]]</td></tr>"
|
||||
even = !even
|
||||
if(eng.len > 0)
|
||||
dat += "<tr><th colspan=3>Engineering</th></tr>"
|
||||
for(name in eng)
|
||||
for(var/name in eng)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[eng[name]]</td></tr>"
|
||||
even = !even
|
||||
if(med.len > 0)
|
||||
dat += "<tr><th colspan=3>Medical</th></tr>"
|
||||
for(name in med)
|
||||
for(var/name in med)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[med[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sci.len > 0)
|
||||
dat += "<tr><th colspan=3>Science</th></tr>"
|
||||
for(name in sci)
|
||||
for(var/name in sci)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sci[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sup.len > 0)
|
||||
dat += "<tr><th colspan=3>Supply</th></tr>"
|
||||
for(name in sup)
|
||||
for(var/name in sup)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sup[name]]</td></tr>"
|
||||
even = !even
|
||||
if(civ.len > 0)
|
||||
dat += "<tr><th colspan=3>Civilian</th></tr>"
|
||||
for(name in civ)
|
||||
for(var/name in civ)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[civ[name]]</td></tr>"
|
||||
even = !even
|
||||
// in case somebody is insane and added them to the manifest, why not
|
||||
if(bot.len > 0)
|
||||
dat += "<tr><th colspan=3>Silicon</th></tr>"
|
||||
for(name in bot)
|
||||
for(var/name in bot)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[bot[name]]</td></tr>"
|
||||
even = !even
|
||||
// misc guys
|
||||
if(misc.len > 0)
|
||||
dat += "<tr><th colspan=3>Miscellaneous</th></tr>"
|
||||
for(name in misc)
|
||||
for(var/name in misc)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[misc[name]]</td></tr>"
|
||||
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)
|
||||
@@ -199,6 +198,11 @@ var/record_id_num = 1001
|
||||
assignment = "Unassigned"
|
||||
|
||||
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
|
||||
@@ -207,10 +211,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"] = photo_front
|
||||
G.fields["photo_side"] = photo_side
|
||||
general += G
|
||||
|
||||
//Medical Record
|
||||
@@ -251,7 +259,166 @@ 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
|
||||
|
||||
/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)
|
||||
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("Assistant")
|
||||
clothes_s = icon('icons/mob/uniform.dmi', "grey_s")
|
||||
clothes_s.Blend(icon('icons/mob/feet.dmi', "black"), ICON_UNDERLAY)
|
||||
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)
|
||||
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("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("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)
|
||||
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("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("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)
|
||||
photo.Blend(clothes_s, ICON_OVERLAY)
|
||||
|
||||
return photo
|
||||
|
||||
@@ -32,11 +32,11 @@
|
||||
if(..())
|
||||
return
|
||||
var/dat
|
||||
if (src.temp)
|
||||
if(src.temp)
|
||||
dat = text("<TT>[src.temp]</TT><BR><BR><A href='?src=\ref[src];temp=1'>Clear Screen</A>")
|
||||
else
|
||||
dat = text("Confirm Identity: <A href='?src=\ref[];scan=1'>[]</A><HR>", 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,10 +105,20 @@
|
||||
|
||||
dat += "<table><tr><td><b><font size='4'>Medical Record</font></b></td></tr>"
|
||||
if(active1 in data_core.general)
|
||||
dat += "<tr><td>Name:</td><td>[active1.fields["name"]]</td></tr>"
|
||||
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 += "<tr><td>Name:</td><td>[active1.fields["name"]]</td>"
|
||||
dat += "<td><a href='?src=\ref[src];field=show_photo_front'><img src=photo_front height=80 width=80 border=4></a></td>"
|
||||
dat += "<td><a href='?src=\ref[src];field=show_photo_side'><img src=photo_side height=80 width=80 border=4></a></td></tr>"
|
||||
dat += "<tr><td>ID:</td><td>[active1.fields["id"]]</td></tr>"
|
||||
dat += "<tr><td>Sex:</td><td><A href='?src=\ref[src];field=sex'> [active1.fields["sex"]] </A></td></tr>"
|
||||
dat += "<tr><td>Age:</td><td><A href='?src=\ref[src];field=age'> [active1.fields["age"]] </A></td></tr>"
|
||||
if(config.mutant_races)
|
||||
dat += "<tr><td>Species:</td><td><A href='?src=\ref[src];field=species'> [active1.fields["species"]] </A></td></tr>"
|
||||
dat += "<tr><td>Fingerprint:</td><td><A href='?src=\ref[src];field=fingerprint'> [active1.fields["fingerprint"]] </A></td></tr>"
|
||||
dat += "<tr><td>Physical Status:</td><td><A href='?src=\ref[src];field=p_stat'> [active1.fields["p_stat"]] </A></td></tr>"
|
||||
dat += "<tr><td>Mental Status:</td><td><A href='?src=\ref[src];field=m_stat'> [active1.fields["m_stat"]] </A></td></tr>"
|
||||
@@ -185,33 +195,34 @@
|
||||
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))
|
||||
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
|
||||
@@ -224,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"])
|
||||
@@ -264,88 +275,94 @@
|
||||
<BR>
|
||||
<BR><b>Severity:</b> [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?<br>\n\t<A href='?src=\ref[];temp=1;del_all2=1'>Yes</A><br>\n\t<A href='?src=\ref[];temp=1'>No</A><br>", 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 = 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")
|
||||
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 ((!( 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 = 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 = 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")
|
||||
@@ -359,13 +376,25 @@
|
||||
src.temp = text("<B>Blood Type:</B><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=an'>A-</A> <A href='?src=\ref[];temp=1;blood_type=ap'>A+</A><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=bn'>B-</A> <A href='?src=\ref[];temp=1;blood_type=bp'>B+</A><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=abn'>AB-</A> <A href='?src=\ref[];temp=1;blood_type=abp'>AB+</A><BR>\n\t<A href='?src=\ref[];temp=1;blood_type=on'>O-</A> <A href='?src=\ref[];temp=1;blood_type=op'>O+</A><BR>", 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
|
||||
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")
|
||||
@@ -377,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")
|
||||
@@ -390,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")
|
||||
@@ -411,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)?<br>\n\t<A href='?src=\ref[];temp=1;del_r2=1'>Yes</A><br>\n\t<A href='?src=\ref[];temp=1'>No</A><br>", 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)
|
||||
@@ -429,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"]
|
||||
@@ -450,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 = 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)])
|
||||
counter++
|
||||
src.active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []<BR>[]", 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"])] = "<B>Deleted</B>"
|
||||
|
||||
else if (href_list["search"])
|
||||
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
|
||||
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)
|
||||
@@ -497,7 +526,10 @@
|
||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc )
|
||||
P.info = "<CENTER><B>Medical Record - (MR-[data_core.medicalPrintCount])</B></CENTER><BR>"
|
||||
if(active1 in data_core.general)
|
||||
P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", 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: []<BR>\nSex: []<BR>\nAge: []<BR>", 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"]]<BR>"
|
||||
P.info += text("\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", src.active1.fields["fingerprint"], src.active1.fields["p_stat"], src.active1.fields["m_stat"])
|
||||
else
|
||||
P.info += "<B>General Record Lost!</B><BR>"
|
||||
if(active2 in data_core.medical)
|
||||
@@ -545,6 +577,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"
|
||||
|
||||
@@ -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 << "<span class='userdanger'>Unable to establish a connection</span>: \black You're too far away from the station!"
|
||||
return
|
||||
var/dat
|
||||
|
||||
if (temp)
|
||||
if(temp)
|
||||
dat = text("<TT>[]</TT><BR><BR><A href='?src=\ref[];choice=Clear Screen'>Clear Screen</A>", temp, src)
|
||||
else
|
||||
dat = text("Confirm Identity: <A href='?src=\ref[];choice=Confirm Identity'>[]</A><HR>", 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,21 +159,34 @@
|
||||
dat += "<BR><A href='?src=\ref[src];choice=Delete All Records'>Delete All Records</A><BR><BR><A href='?src=\ref[src];choice=Return'>Back</A>"
|
||||
if(3.0)
|
||||
dat += "<font size='4'><b>Security Record</b></font><br>"
|
||||
if ((istype(active1, /datum/data/record) && data_core.general.Find(active1)))
|
||||
dat += {"<table>
|
||||
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 += {"<table><tr><td><table>
|
||||
<tr><td>Name:</td><td><A href='?src=\ref[src];choice=Edit Field;field=name'> [active1.fields["name"]] </A></td></tr>
|
||||
<tr><td>ID:</td><td><A href='?src=\ref[src];choice=Edit Field;field=id'> [active1.fields["id"]] </A></td></tr>
|
||||
<tr><td>Sex:</td><td><A href='?src=\ref[src];choice=Edit Field;field=sex'> [active1.fields["sex"]] </A></td></tr>
|
||||
<tr><td>Age:</td><td><A href='?src=\ref[src];choice=Edit Field;field=age'> [active1.fields["age"]] </A></td></tr>
|
||||
<tr><td>Rank:</td><td><A href='?src=\ref[src];choice=Edit Field;field=rank'> [active1.fields["rank"]] </A></td></tr>
|
||||
<tr><td>Age:</td><td><A href='?src=\ref[src];choice=Edit Field;field=age'> [active1.fields["age"]] </A></td></tr>"}
|
||||
if(config.mutant_races)
|
||||
dat += "<tr><td>Species:</td><td><A href ='?src=\ref[src];choice=Edit Field;field=species'> [active1.fields["species"]] </A></td></tr>"
|
||||
dat += {"<tr><td>Rank:</td><td><A href='?src=\ref[src];choice=Edit Field;field=rank'> [active1.fields["rank"]] </A></td></tr>
|
||||
<tr><td>Fingerprint:</td><td><A href='?src=\ref[src];choice=Edit Field;field=fingerprint'> [active1.fields["fingerprint"]] </A></td></tr>
|
||||
<tr><td>Physical Status:</td><td> [active1.fields["p_stat"]] </td></tr>
|
||||
<tr><td>Mental Status:</td><td> [active1.fields["m_stat"]] </td></tr>
|
||||
</table>"}
|
||||
</table></td>
|
||||
<td><table><td align = center><a href='?src=\ref[src];choice=Edit Field;field=show_photo_front'><img src=photo_front height=80 width=80 border=4></a><br>
|
||||
<a href='?src=\ref[src];choice=Edit Field;field=upd_photo_front'>Update front photo</a></td>
|
||||
<td align = center><a href='?src=\ref[src];choice=Edit Field;field=show_photo_side'><img src=photo_side height=80 width=80 border=4></a><br>
|
||||
<a href='?src=\ref[src];choice=Edit Field;field=upd_photo_side'>Update side photo</a></td></table>
|
||||
</td></tr></table></td></tr></table>"}
|
||||
else
|
||||
dat += "General Record Lost!<br>"
|
||||
if ((istype(active2, /datum/data/record) && data_core.security.Find(active2)))
|
||||
dat += "<br><font size='4'><b>Security Data</b></font>"
|
||||
dat += "<br>General Record Lost!<br>"
|
||||
if((istype(active2, /datum/data/record) && data_core.security.Find(active2)))
|
||||
dat += "<font size='4'><b>Security Data</b></font>"
|
||||
dat += "<br>Criminal Status: <A href='?src=\ref[src];choice=Edit Field;field=criminal'>[active2.fields["criminal"]]</A>"
|
||||
dat += "<br><br>Minor Crimes: <A href='?src=\ref[src];choice=Edit Field;field=mi_crim_add'>Add New</A>"
|
||||
|
||||
@@ -244,13 +257,14 @@
|
||||
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 (!( data_core.general.Find(active1) ))
|
||||
. = ..()
|
||||
if(.)
|
||||
return .
|
||||
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!
|
||||
@@ -269,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
|
||||
@@ -283,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
|
||||
@@ -295,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))
|
||||
@@ -315,50 +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 = "<CENTER><B>Security Record - (SR-[data_core.securityPrintCount])</B></CENTER><BR>"
|
||||
if ((istype(active1, /datum/data/record) && data_core.general.Find(active1)))
|
||||
P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"], active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"])
|
||||
if((istype(active1, /datum/data/record) && data_core.general.Find(active1)))
|
||||
P.info += text("Name: [] ID: []<BR>\nSex: []<BR>\nAge: []<BR>", active1.fields["name"], active1.fields["id"], active1.fields["sex"], active1.fields["age"])
|
||||
if(config.mutant_races)
|
||||
P.info += "\nSpecies: [active1.fields["species"]]<BR>"
|
||||
P.info += text("\nFingerprint: []<BR>\nPhysical Status: []<BR>\nMental Status: []<BR>", active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"])
|
||||
else
|
||||
P.info += "<B>General Record Lost!</B><BR>"
|
||||
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("<BR>\n<CENTER><B>Security Data</B></CENTER><BR>\nCriminal Status: []", active2.fields["criminal"])
|
||||
|
||||
P.info += "<BR>\n<BR>\nMinor Crimes:<BR>\n"
|
||||
@@ -406,49 +423,49 @@ What a mess.*/
|
||||
P.info += "</TT>"
|
||||
printing = null
|
||||
//RECORD DELETE
|
||||
if ("Delete All Records")
|
||||
if("Delete All Records")
|
||||
temp = ""
|
||||
temp += "Are you sure you wish to delete all Security records?<br>"
|
||||
temp += "<a href='?src=\ref[src];choice=Purge All Records'>Yes</a><br>"
|
||||
temp += "<a href='?src=\ref[src];choice=Clear Screen'>No</a>"
|
||||
|
||||
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 = 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)])
|
||||
counter++
|
||||
active2.fields[text("com_[]", counter)] = text("Made by [] ([]) on [] [], []<BR>[]", 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 = "<h5>Are you sure you wish to delete the record (ALL)?</h5>"
|
||||
temp += "<a href='?src=\ref[src];choice=Delete Record (ALL) Execute'>Yes</a><br>"
|
||||
temp += "<a href='?src=\ref[src];choice=Clear Screen'>No</a>"
|
||||
|
||||
if ("Delete Record (Security)")
|
||||
if (active2)
|
||||
if("Delete Record (Security)")
|
||||
if(active2)
|
||||
temp = "<h5>Are you sure you wish to delete the record (Security Portion Only)?</h5>"
|
||||
temp += "<a href='?src=\ref[src];choice=Delete Record (Security) Execute'>Yes</a><br>"
|
||||
temp += "<a href='?src=\ref[src];choice=Clear Screen'>No</a>"
|
||||
|
||||
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"])] = "<B>Deleted</B>"
|
||||
//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"]
|
||||
@@ -461,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"
|
||||
@@ -469,6 +486,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"
|
||||
@@ -507,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 ((!( 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
|
||||
@@ -523,67 +544,93 @@ 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
|
||||
if(istype(active2,/datum/data/record))
|
||||
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))
|
||||
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))
|
||||
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))
|
||||
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))
|
||||
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)
|
||||
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(!canUseSecurityRecordsConsole(usr, t1, null, a1))
|
||||
return
|
||||
active1.fields["species"] = t1
|
||||
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("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))
|
||||
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))
|
||||
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))
|
||||
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(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))
|
||||
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))
|
||||
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))
|
||||
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(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))
|
||||
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))
|
||||
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))
|
||||
return
|
||||
active2.fields["notes"] = t1
|
||||
if("criminal")
|
||||
if (istype(active2, /datum/data/record))
|
||||
if(istype(active2, /datum/data/record))
|
||||
temp = "<h5>Criminal Status:</h5>"
|
||||
temp += "<ul>"
|
||||
temp += "<li><a href='?src=\ref[src];choice=Change Criminal Status;criminal2=none'>None</a></li>"
|
||||
@@ -595,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 = "<h5>Rank:</h5>"
|
||||
temp += "<ul>"
|
||||
for(var/rank in get_all_jobs())
|
||||
@@ -607,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")
|
||||
@@ -630,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
|
||||
@@ -657,6 +704,18 @@ What a mess.*/
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/computer/secure_data/proc/get_photo(var/mob/user)
|
||||
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)
|
||||
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))
|
||||
..(severity)
|
||||
@@ -664,11 +723,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)
|
||||
@@ -677,6 +736,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))
|
||||
@@ -685,6 +750,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"
|
||||
|
||||
@@ -260,21 +260,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 += "<span class = 'deptradio'>Rank:</span> [R.fields["rank"]]<br>"
|
||||
msg += "<a href='?src=\ref[src];hud=1;photo_front=1'>\[Front photo\]</a> "
|
||||
msg += "<a href='?src=\ref[src];hud=1;photo_side=1'>\[Side photo\]</a><br>"
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
|
||||
if(R)
|
||||
criminal = R.fields["criminal"]
|
||||
var/health = R.fields["p_stat"]
|
||||
msg += "<a href='?src=\ref[src];hud=m;p_stat=1'>\[[health]\]</a>"
|
||||
health = R.fields["m_stat"]
|
||||
msg += "<a href='?src=\ref[src];hud=m;m_stat=1'>\[[health]\]</a><br>"
|
||||
R = find_record("name", perpname, data_core.medical)
|
||||
if(R)
|
||||
msg += "<a href='?src=\ref[src];hud=m;evaluation=1'>\[Medical evaluation\]</a><br>"
|
||||
|
||||
msg += "<span class = 'deptradio'>Criminal status:</span> <a href='?src=\ref[src];criminal=1;status=1'>\[[criminal]\]</a>\n"
|
||||
msg += "<span class = 'deptradio'>Security record:</span> <a href='?src=\ref[src];criminal=1;view=1'>\[View\]</a> "
|
||||
msg += "<a href='?src=\ref[src];criminal=1;add_crime=1'>\[Add crime\]</a> "
|
||||
msg += "<a href='?src=\ref[src];criminal=1;view_comment=1'>\[View comment log\]</a> "
|
||||
msg += "<a href='?src=\ref[src];criminal=1;add_comment=1'>\[Add comment\]</a>\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 += "<span class = 'deptradio'>Criminal status:</span> <a href='?src=\ref[src];hud=s;status=1'>\[[criminal]\]</a>\n"
|
||||
msg += "<span class = 'deptradio'>Security record:</span> <a href='?src=\ref[src];hud=s;view=1'>\[View\]</a> "
|
||||
msg += "<a href='?src=\ref[src];hud=s;add_crime=1'>\[Add crime\]</a> "
|
||||
msg += "<a href='?src=\ref[src];hud=s;view_comment=1'>\[View comment log\]</a> "
|
||||
msg += "<a href='?src=\ref[src];hud=s;add_comment=1'>\[Add comment\]</a>\n"
|
||||
|
||||
msg += "*---------*</span>"
|
||||
|
||||
|
||||
@@ -249,7 +249,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"])
|
||||
@@ -295,113 +294,194 @@
|
||||
..()
|
||||
|
||||
|
||||
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_%$*"
|
||||
|
||||
|
||||
if(!allowed_access)
|
||||
H << "<span class='warning'>ERROR: Invalid Access</span>"
|
||||
return
|
||||
|
||||
var/perpname = get_face_name(get_id_name(""))
|
||||
if(perpname)
|
||||
var/datum/data/record/R = find_record("name", perpname, data_core.security)
|
||||
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(href_list["photo_front"] || href_list["photo_side"])
|
||||
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(!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"])
|
||||
P = R.fields["photo_front"]
|
||||
else if(href_list["photo_side"])
|
||||
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(R)
|
||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security))
|
||||
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(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 << "<span class='notice'>No external injuries detected.</span><br>"
|
||||
return
|
||||
var/span = "notice"
|
||||
var/status = ""
|
||||
if(getBruteLoss())
|
||||
usr << "<b>Physical trauma analysis:</b>"
|
||||
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 << "<span class='[span]'>The [org.getDisplayName()] appears to have [status]</span>"
|
||||
if(getFireLoss())
|
||||
usr << "<b>Analysis of skin burns:</b>"
|
||||
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 << "<span class='[span]'>The [org.getDisplayName()] appears to have [status]</span>"
|
||||
if(getOxyLoss())
|
||||
usr << "<span class='danger'>Patient has signs of suffocation, emergency treatment may be required!</span>"
|
||||
if(getToxLoss() > 20)
|
||||
usr << "<span class='danger'>Gathered data is inconsistent with the analysis, possible cause: poisoning.</span>"
|
||||
|
||||
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 << "<span class='warning'>ERROR: Invalid Access</span>"
|
||||
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(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))
|
||||
return
|
||||
usr << "<b>Name:</b> [R.fields["name"]] <b>Criminal Status:</b> [R.fields["criminal"]]"
|
||||
usr << "<b>Minor Crimes:</b>"
|
||||
for(var/datum/data/crime/c in R.fields["mi_crim"])
|
||||
usr << "<b>Crime:</b> [c.crimeName]"
|
||||
usr << "<b>Details:</b> [c.crimeDetails]"
|
||||
usr << "Added by [c.author] at [c.time]"
|
||||
usr << "----------"
|
||||
usr << "<b>Major Crimes:</b>"
|
||||
for(var/datum/data/crime/c in R.fields["ma_crim"])
|
||||
usr << "<b>Crime:</b> [c.crimeName]"
|
||||
usr << "<b>Details:</b> [c.crimeDetails]"
|
||||
usr << "Added by [c.author] at [c.time]"
|
||||
usr << "----------"
|
||||
usr << "<b>Notes:</b> [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 << "<span class='notice'>Successfully added a minor crime.</span>"
|
||||
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 << "<span class='notice'>Successfully added a major crime.</span>"
|
||||
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))
|
||||
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()
|
||||
return
|
||||
usr << "<b>Comments/Log:</b>"
|
||||
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(href_list["view"])
|
||||
if(R)
|
||||
if(!H.canUseHUD()) return
|
||||
else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return
|
||||
usr << "<b>Name:</b> [R.fields["name"]] <b>Criminal Status:</b> [R.fields["criminal"]]"
|
||||
usr << "<b>Minor Crimes:</b>"
|
||||
for(var/datum/data/crime/c in R.fields["mi_crim"])
|
||||
usr << "<b>Crime:</b> [c.crimeName]"
|
||||
usr << "<b>Details:</b> [c.crimeDetails]"
|
||||
usr << "Added by [c.author] at [c.time]"
|
||||
usr << "----------"
|
||||
usr << "<b>Major Crimes:</b>"
|
||||
for(var/datum/data/crime/c in R.fields["ma_crim"])
|
||||
usr << "<b>Crime:</b> [c.crimeName]"
|
||||
usr << "<b>Details:</b> [c.crimeDetails]"
|
||||
usr << "Added by [c.author] at [c.time]"
|
||||
usr << "----------"
|
||||
usr << "<b>Notes:</b> [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 = 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) 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 << "<span class='notice'>Successfully added a minor crime.</span>"
|
||||
return
|
||||
if("Major Crime")
|
||||
if(R)
|
||||
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) 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 << "<span class='notice'>Successfully added a major crime.</span>"
|
||||
return
|
||||
|
||||
if(href_list["view_comment"])
|
||||
if(R)
|
||||
if(!H.canUseHUD()) return
|
||||
else if(!istype(H.glasses, /obj/item/clothing/glasses/hud/security)) return
|
||||
usr << "<b>Comments/Log:</b>"
|
||||
var/counter = 1
|
||||
while(R.fields[text("com_[]", counter)])
|
||||
usr << R.fields[text("com_[]", counter)]
|
||||
usr << "----------"
|
||||
counter++
|
||||
return
|
||||
var/counter = 1
|
||||
while(R.fields[text("com_[]", counter)])
|
||||
counter++
|
||||
R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []<BR>[]", allowed_access, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,)
|
||||
usr << "<span class='notice'>Successfully added comment.</span>"
|
||||
return
|
||||
usr << "<span class='warning'>Unable to locate a data core entry for this person.</span>"
|
||||
|
||||
if(href_list["add_comment"])
|
||||
if(R)
|
||||
var/t1 = stripped_multiline_input("Add Comment:", "Secure. records", null, null)
|
||||
if(R)
|
||||
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++
|
||||
R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []<BR>[]", allowed_access, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,)
|
||||
usr << "<span class='notice'>Successfully added comment.</span>"
|
||||
return
|
||||
usr << "<span class='warning'>Unable to locate a data core entry for this person.</span>"
|
||||
|
||||
/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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -413,4 +414,8 @@
|
||||
return
|
||||
|
||||
/mob/living/silicon/setEarDamage()
|
||||
return
|
||||
return
|
||||
|
||||
/mob/living/silicon/proc/GetPhoto()
|
||||
if (aicamera)
|
||||
return aicamera.selectpicture(aicamera)
|
||||
@@ -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 << "<span class='userdanger'>No images saved</span>"
|
||||
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"]
|
||||
|
||||
+1
-1
@@ -58,7 +58,7 @@
|
||||
world.log << "Database connection established."
|
||||
|
||||
|
||||
data_core = new /obj/effect/datacore()
|
||||
data_core = new /datum/datacore()
|
||||
|
||||
|
||||
spawn(-1)
|
||||
|
||||
Reference in New Issue
Block a user