mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-10 01:57:01 +00:00
Adds photos and species to security and medical records, plus some other tweaking
This commit is contained in:
@@ -190,6 +190,7 @@ var/record_id_num = 1001
|
|||||||
assignment = "Unassigned"
|
assignment = "Unassigned"
|
||||||
|
|
||||||
var/id = num2hex(record_id_num++,6)
|
var/id = num2hex(record_id_num++,6)
|
||||||
|
var/image = get_id_photo(H)
|
||||||
|
|
||||||
//These records should ~really~ be merged or something
|
//These records should ~really~ be merged or something
|
||||||
//General Record
|
//General Record
|
||||||
@@ -198,12 +199,14 @@ var/record_id_num = 1001
|
|||||||
G.fields["name"] = H.real_name
|
G.fields["name"] = H.real_name
|
||||||
G.fields["rank"] = assignment
|
G.fields["rank"] = assignment
|
||||||
G.fields["age"] = H.age
|
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["fingerprint"] = md5(H.dna.uni_identity)
|
||||||
G.fields["p_stat"] = "Active"
|
G.fields["p_stat"] = "Active"
|
||||||
G.fields["m_stat"] = "Stable"
|
G.fields["m_stat"] = "Stable"
|
||||||
G.fields["sex"] = H.gender
|
G.fields["sex"] = H.gender
|
||||||
G.fields["photo_front"] = icon(get_id_photo(H), dir = SOUTH)
|
G.fields["photo_front"] = icon(image, dir = SOUTH)
|
||||||
G.fields["photo_side"] = icon(get_id_photo(H), dir = WEST)
|
G.fields["photo_side"] = icon(image, dir = WEST)
|
||||||
general += G
|
general += G
|
||||||
|
|
||||||
//Medical Record
|
//Medical Record
|
||||||
@@ -244,7 +247,7 @@ var/record_id_num = 1001
|
|||||||
L.fields["b_dna"] = H.dna.unique_enzymes
|
L.fields["b_dna"] = H.dna.unique_enzymes
|
||||||
L.fields["enzymes"] = H.dna.struc_enzymes
|
L.fields["enzymes"] = H.dna.struc_enzymes
|
||||||
L.fields["identity"] = H.dna.uni_identity
|
L.fields["identity"] = H.dna.uni_identity
|
||||||
L.fields["image"] = getFlatIcon(H) //This is god-awful
|
L.fields["image"] = image
|
||||||
locked += L
|
locked += L
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -345,7 +348,7 @@ var/record_id_num = 1001
|
|||||||
clothes_s = icon('icons/mob/uniform.dmi', "cmo_s")
|
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/feet.dmi', "brown"), ICON_UNDERLAY)
|
||||||
clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat_cmo"), ICON_OVERLAY)
|
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 = icon('icons/mob/uniform.dmi', "medical_s")
|
||||||
clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
clothes_s.Blend(icon('icons/mob/feet.dmi', "white"), ICON_UNDERLAY)
|
||||||
clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY)
|
clothes_s.Blend(icon('icons/mob/suit.dmi', "labcoat"), ICON_OVERLAY)
|
||||||
|
|||||||
@@ -105,10 +105,13 @@
|
|||||||
|
|
||||||
dat += "<table><tr><td><b><font size='4'>Medical Record</font></b></td></tr>"
|
dat += "<table><tr><td><b><font size='4'>Medical Record</font></b></td></tr>"
|
||||||
if(active1 in data_core.general)
|
if(active1 in data_core.general)
|
||||||
dat += "<tr><td>Name:</td><td>[active1.fields["name"]]</td></tr>"
|
user << browse_rsc(active1.fields["photo_front"], "photo_front")
|
||||||
|
user << browse_rsc(active1.fields["photo_side"], "photo_side")
|
||||||
|
dat += "<tr><td>Name:</td><td>[active1.fields["name"]]</td><td><img src=photo_front height=80 width=80 border=4></td><td><img src=photo_side height=80 width=80 border=4></td></tr>"
|
||||||
dat += "<tr><td>ID:</td><td>[active1.fields["id"]]</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>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>"
|
dat += "<tr><td>Age:</td><td><A href='?src=\ref[src];field=age'> [active1.fields["age"]] </A></td></tr>"
|
||||||
|
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>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>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>"
|
dat += "<tr><td>Mental Status:</td><td><A href='?src=\ref[src];field=m_stat'> [active1.fields["m_stat"]] </A></td></tr>"
|
||||||
@@ -294,6 +297,12 @@
|
|||||||
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
|
if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1))
|
||||||
return
|
return
|
||||||
src.active1.fields["age"] = t1
|
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("mi_dis")
|
||||||
if(active2)
|
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)
|
var/t1 = copytext(sanitize(input("Please input minor disabilities list:", "Med. records", src.active2.fields["mi_dis"], null) as text),1,MAX_MESSAGE_LEN)
|
||||||
|
|||||||
@@ -162,20 +162,25 @@
|
|||||||
if ((istype(active1, /datum/data/record) && data_core.general.Find(active1)))
|
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_front"], "photo_front")
|
||||||
user << browse_rsc(active1.fields["photo_side"], "photo_side")
|
user << browse_rsc(active1.fields["photo_side"], "photo_side")
|
||||||
dat += {"<table>
|
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>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>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>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>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>
|
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>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>Physical Status:</td><td> [active1.fields["p_stat"]] </td></tr>
|
||||||
<tr><td>Mental Status:</td><td> [active1.fields["m_stat"]] </td></tr>
|
<tr><td>Mental Status:</td><td> [active1.fields["m_stat"]] </td></tr>
|
||||||
</table><div class='statusDisplay'><center><img src=photo_front height=64 width=64><img src=photo_side height=64 width=64></center></div>"}
|
</table></td>
|
||||||
|
<td><table><td align = center><img src=photo_front height=80 width=80 border=4><br><a href='?src=\ref[src];choice=Edit Field;field=photo front'>Update front photo</a></td>
|
||||||
|
<td align = center><img src=photo_side height=80 width=80 border=4><br><a href='?src=\ref[src];choice=Edit Field;field=photo side'>Update side photo</a></td></table>
|
||||||
|
</td></tr></table></td></tr></table>"}
|
||||||
else
|
else
|
||||||
dat += "General Record Lost!<br>"
|
dat += "<br>General Record Lost!<br>"
|
||||||
if ((istype(active2, /datum/data/record) && data_core.security.Find(active2)))
|
if ((istype(active2, /datum/data/record) && data_core.security.Find(active2)))
|
||||||
dat += "<br><font size='4'><b>Security Data</b></font>"
|
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>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>"
|
dat += "<br><br>Minor Crimes: <A href='?src=\ref[src];choice=Edit Field;field=mi_crim_add'>Add New</A>"
|
||||||
|
|
||||||
@@ -357,7 +362,10 @@ What a mess.*/
|
|||||||
var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( loc )
|
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>"
|
P.info = "<CENTER><B>Security Record - (SR-[data_core.securityPrintCount])</B></CENTER><BR>"
|
||||||
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: []<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"])
|
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
|
else
|
||||||
P.info += "<B>General Record Lost!</B><BR>"
|
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)))
|
||||||
@@ -471,6 +479,10 @@ What a mess.*/
|
|||||||
G.fields["rank"] = "Unassigned"
|
G.fields["rank"] = "Unassigned"
|
||||||
G.fields["sex"] = "Male"
|
G.fields["sex"] = "Male"
|
||||||
G.fields["age"] = "Unknown"
|
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["fingerprint"] = "?????"
|
||||||
G.fields["p_stat"] = "Active"
|
G.fields["p_stat"] = "Active"
|
||||||
G.fields["m_stat"] = "Stable"
|
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))
|
if ((!( t1 ) || !( authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || active1 != a1))
|
||||||
return
|
return
|
||||||
active1.fields["age"] = t1
|
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("mi_crim_add")
|
||||||
if (istype(active1, /datum/data/record))
|
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/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()
|
updateUsrDialog()
|
||||||
return
|
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)
|
/obj/machinery/computer/secure_data/emp_act(severity)
|
||||||
if(stat & (BROKEN|NOPOWER))
|
if(stat & (BROKEN|NOPOWER))
|
||||||
..(severity)
|
..(severity)
|
||||||
@@ -666,11 +702,11 @@ What a mess.*/
|
|||||||
|
|
||||||
for(var/datum/data/record/R in data_core.security)
|
for(var/datum/data/record/R in data_core.security)
|
||||||
if(prob(10/severity))
|
if(prob(10/severity))
|
||||||
switch(rand(1,6))
|
switch(rand(1,8))
|
||||||
if(1)
|
if(1)
|
||||||
R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]"
|
R.fields["name"] = "[pick(pick(first_names_male), pick(first_names_female))] [pick(last_names)]"
|
||||||
if(2)
|
if(2)
|
||||||
R.fields["sex"] = pick("Male", "Female")
|
R.fields["sex"] = pick("Male", "Female")
|
||||||
if(3)
|
if(3)
|
||||||
R.fields["age"] = rand(5, 85)
|
R.fields["age"] = rand(5, 85)
|
||||||
if(4)
|
if(4)
|
||||||
@@ -679,6 +715,12 @@ What a mess.*/
|
|||||||
R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit")
|
R.fields["p_stat"] = pick("*Unconcious*", "Active", "Physically Unfit")
|
||||||
if(6)
|
if(6)
|
||||||
R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable")
|
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
|
continue
|
||||||
|
|
||||||
else if(prob(1))
|
else if(prob(1))
|
||||||
|
|||||||
@@ -252,21 +252,37 @@
|
|||||||
|
|
||||||
if(istype(user, /mob/living/carbon/human))
|
if(istype(user, /mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/H = user
|
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(istype(H.glasses, /obj/item/clothing/glasses/hud))
|
||||||
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/perpname = get_face_name(get_id_name(""))
|
||||||
var/criminal = "None"
|
if(perpname)
|
||||||
|
var/datum/data/record/R = find_record("name", perpname, data_core.general)
|
||||||
var/perpname = get_face_name(get_id_name(""))
|
if(R)
|
||||||
if(perpname)
|
msg += "<span class = 'deptradio'>Rank:</span> [R.fields["rank"]]<br>"
|
||||||
var/datum/data/record/R = find_record("name", perpname, data_core.security)
|
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)
|
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"
|
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security))
|
||||||
msg += "<span class = 'deptradio'>Security record:</span> <a href='?src=\ref[src];criminal=1;view=1'>\[View\]</a> "
|
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.
|
||||||
msg += "<a href='?src=\ref[src];criminal=1;add_crime=1'>\[Add crime\]</a> "
|
var/criminal = "None"
|
||||||
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"
|
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>"
|
msg += "*---------*</span>"
|
||||||
|
|
||||||
|
|||||||
@@ -306,114 +306,186 @@
|
|||||||
|
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
///////HUDs///////
|
||||||
if(href_list["criminal"])
|
if(href_list["hud"])
|
||||||
if(istype(usr, /mob/living/carbon/human))
|
if(istype(usr, /mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/H = usr
|
var/mob/living/carbon/human/H = usr
|
||||||
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security))
|
var/perpname = get_face_name(get_id_name(""))
|
||||||
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.
|
if(istype(H.glasses, /obj/item/clothing/glasses/hud))
|
||||||
return //Non-fluff: This allows sec to set people to arrest as they get disarmed or beaten
|
var/datum/data/record/R = find_record("name", perpname, data_core.general)
|
||||||
// Checks the user has security clearence before allowing them to change arrest status via hud, comment out to enable all access
|
if(R)
|
||||||
var/allowed_access = null
|
if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud))
|
||||||
var/obj/item/clothing/glasses/G = H.glasses
|
return
|
||||||
if (!G.emagged)
|
var/icon/img = null
|
||||||
if(H.wear_id)
|
if(href_list["photo_front"])
|
||||||
var/list/access = H.wear_id.GetAccess()
|
img = R.fields["photo_front"]
|
||||||
if(access_sec_doors in access)
|
if(href_list["photo_side"])
|
||||||
allowed_access = H.get_authentification_name()
|
img = R.fields["photo_side"]
|
||||||
else
|
if(img)
|
||||||
allowed_access = "@%&ERROR_%$*"
|
usr << browse_rsc(img, "photo")
|
||||||
|
usr << browse("<img src='photo' height=80 width=80 border=4>", "window=photo;size=120x120")
|
||||||
|
|
||||||
|
if(href_list["hud"] == "m")
|
||||||
if(!allowed_access)
|
if(istype(H.glasses, /obj/item/clothing/glasses/hud/health))
|
||||||
H << "<span class='warning'>ERROR: Invalid Access</span>"
|
if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/health))
|
||||||
return
|
return
|
||||||
|
if(href_list["p_stat"])
|
||||||
var/perpname = get_face_name(get_id_name(""))
|
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(perpname)
|
if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/health))
|
||||||
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()
|
|
||||||
return
|
return
|
||||||
|
if(health != "Cancel")
|
||||||
if(href_list["view"])
|
R.fields["p_stat"] = health
|
||||||
if(R)
|
if(href_list["m_stat"])
|
||||||
if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security))
|
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")
|
||||||
return
|
if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/health))
|
||||||
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
|
return
|
||||||
|
if(health != "Cancel")
|
||||||
|
R.fields["m_stat"] = health
|
||||||
|
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: intoxication.</span>"
|
||||||
|
|
||||||
if(href_list["add_crime"])
|
if(href_list["hud"] == "s")
|
||||||
switch(alert("What crime would you like to add?","Security HUD","Minor Crime","Major Crime","Cancel"))
|
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security))
|
||||||
if("Minor Crime")
|
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(R)
|
if(R)
|
||||||
var/t1 = copytext(sanitize(input("Please input minor crime names:", "Security HUD", "", null) as text),1,MAX_MESSAGE_LEN)
|
if(istype(H.glasses, /obj/item/clothing/glasses/hud/security))
|
||||||
var/t2 = copytext(sanitize(input("Please input minor crime details:", "Security HUD", "", null) as message),1,MAX_MESSAGE_LEN)
|
if(setcriminal != "Cancel")
|
||||||
if(R)
|
investigate_log("[src.key] has been set from [R.fields["criminal"]] to [setcriminal] by [usr.name] ([usr.key]).", "records")
|
||||||
if (!t1 || !t2 || !allowed_access || H.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security))
|
R.fields["criminal"] = setcriminal
|
||||||
return
|
sec_hud_set_security_status()
|
||||||
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))
|
|
||||||
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))
|
|
||||||
return
|
return
|
||||||
var/counter = 1
|
|
||||||
while(R.fields[text("com_[]", counter)])
|
if(href_list["view"])
|
||||||
counter++
|
if(R)
|
||||||
R.fields[text("com_[]", counter)] = text("Made by [] on [] [], []<BR>[]", allowed_access, worldtime2text(), time2text(world.realtime, "MMM DD"), year_integer+540, t1,)
|
if(usr.stat || H.weakened || H.stunned || H.restrained() || !istype(H.glasses, /obj/item/clothing/glasses/hud/security))
|
||||||
usr << "<span class='notice'>Successfully added comment.</span>"
|
return
|
||||||
return
|
usr << "<b>Name:</b> [R.fields["name"]] <b>Criminal Status:</b> [R.fields["criminal"]]"
|
||||||
usr << "<span class='warning'>Unable to locate a data core entry for this person.</span>"
|
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))
|
||||||
|
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))
|
||||||
|
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/play_xylophone()
|
/mob/living/carbon/human/proc/play_xylophone()
|
||||||
if(!src.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.
|
radiomod = ";" //AIs will, by default, state their laws on the internal radio.
|
||||||
var/obj/item/device/pda/ai/aiPDA = null
|
var/obj/item/device/pda/ai/aiPDA = null
|
||||||
var/obj/item/device/multitool/aiMulti = null
|
var/obj/item/device/multitool/aiMulti = null
|
||||||
var/obj/item/device/camera/siliconcam/aicamera = null
|
|
||||||
var/obj/machinery/bot/Bot
|
var/obj/machinery/bot/Bot
|
||||||
|
|
||||||
//MALFUNCTION
|
//MALFUNCTION
|
||||||
|
|||||||
@@ -56,7 +56,6 @@
|
|||||||
|
|
||||||
var/obj/item/weapon/tank/internal = null //Hatred. Used if a borg has a jetpack.
|
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/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/toner = 0
|
||||||
var/tonermax = 40
|
var/tonermax = 40
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
var/list/alarms_to_clear = list()
|
var/list/alarms_to_clear = list()
|
||||||
var/designation = ""
|
var/designation = ""
|
||||||
var/radiomod = "" //Radio character used before state laws/arrivals announce to allow department transmissions, default, or none at all.
|
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()
|
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("<span class='danger'>[M] punches [src], but doesn't leave a dent.</span>", \
|
visible_message("<span class='danger'>[M] punches [src], but doesn't leave a dent.</span>", \
|
||||||
"<span class='userdanger'>[M] punches [src], but doesn't leave a dent.!</span>")
|
"<span class='userdanger'>[M] punches [src], but doesn't leave a dent.!</span>")
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
/mob/living/silicon/proc/GetPhoto()
|
||||||
|
if (aicamera)
|
||||||
|
return aicamera.selectpicture(aicamera)
|
||||||
@@ -332,22 +332,22 @@
|
|||||||
else
|
else
|
||||||
injectaialbum(icon, img, desc, pixel_x, pixel_y, blueprintsinject)
|
injectaialbum(icon, img, desc, pixel_x, pixel_y, blueprintsinject)
|
||||||
|
|
||||||
|
obj/item/device/camera/siliconcam/proc/selectpicture(var/obj/item/device/camera/siliconcam/targetloc)
|
||||||
obj/item/device/camera/siliconcam/proc/viewpichelper(var/obj/item/device/camera/siliconcam/targetloc)
|
|
||||||
var/list/nametemp = list()
|
var/list/nametemp = list()
|
||||||
var/find
|
var/find
|
||||||
var/datum/picture/selection
|
|
||||||
if(targetloc.aipictures.len == 0)
|
if(targetloc.aipictures.len == 0)
|
||||||
usr << "<span class='userdanger'>No images saved</span>"
|
usr << "<span class='userdanger'>No images saved</span>"
|
||||||
return
|
return
|
||||||
for(var/datum/picture/t in targetloc.aipictures)
|
for(var/datum/picture/t in targetloc.aipictures)
|
||||||
nametemp += t.fields["name"]
|
nametemp += t.fields["name"]
|
||||||
find = input("Select image (numbered in order taken)") in nametemp
|
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)
|
for(var/datum/picture/q in targetloc.aipictures)
|
||||||
if(q.fields["name"] == find)
|
if(q.fields["name"] == find)
|
||||||
selection = q
|
return q
|
||||||
break // just in case some AI decides to take 10 thousand pictures in a round
|
|
||||||
|
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.photocreate(selection.fields["icon"], selection.fields["img"], selection.fields["desc"])
|
||||||
P.pixel_x = selection.fields["pixel_x"]
|
P.pixel_x = selection.fields["pixel_x"]
|
||||||
P.pixel_y = selection.fields["pixel_y"]
|
P.pixel_y = selection.fields["pixel_y"]
|
||||||
|
|||||||
Reference in New Issue
Block a user