diff --git a/code/WorkInProgress/Chemistry-Reagents.dm b/code/WorkInProgress/Chemistry-Reagents.dm index 936ed486665..086471c839f 100644 --- a/code/WorkInProgress/Chemistry-Reagents.dm +++ b/code/WorkInProgress/Chemistry-Reagents.dm @@ -700,6 +700,11 @@ datum napalm.trace_gases += fuel T.assume_air(napalm) return + on_mob_life(var/mob/M) + if(!M) M = holder.my_atom + M:toxloss += 1 + ..() + return space_cleaner name = "Space cleaner" diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 821db91891f..89893774502 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -376,6 +376,7 @@ Pod/Blast Doors computer G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" M.fields["b_type"] = text("[]", H.b_type) + M.fields["b_dna"] = H.dna.unique_enzymes M.fields["mi_dis"] = "None" M.fields["mi_dis_d"] = "No minor disabilities have been declared." M.fields["ma_dis"] = "None" diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 4259e0d59c7..0b777a41dee 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -71,7 +71,7 @@ else dat += "General Record Lost!
" if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) - dat += text("
\n
Medical Data

\nBlood Type: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src, src.active2.fields["b_type"], src, src.active2.fields["mi_dis"], src, src.active2.fields["mi_dis_d"], src, src.active2.fields["ma_dis"], src, src.active2.fields["ma_dis_d"], src, src.active2.fields["alg"], src, src.active2.fields["alg_d"], src, src.active2.fields["cdi"], src, src.active2.fields["cdi_d"], src, src.active2.fields["notes"]) + dat += text("
\n
Medical Data

\nBlood Type: []
\nDNA: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src, src.active2.fields["b_type"], src, src.active2.fields["b_dna"], src, src.active2.fields["mi_dis"], src, src.active2.fields["mi_dis_d"], src, src.active2.fields["ma_dis"], src, src.active2.fields["ma_dis_d"], src, src.active2.fields["alg"], src, src.active2.fields["alg_d"], src, src.active2.fields["cdi"], src, src.active2.fields["cdi_d"], src, src.active2.fields["notes"]) var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) dat += text("[]
Delete Entry

", src.active2.fields[text("com_[]", counter)], src, counter) @@ -197,7 +197,7 @@ switch(href_list["field"]) if("fingerprint") if (istype(src.active1, /datum/data/record)) - var/t1 = input("Please input fingerprint hash:", "Med. records", src.active1.fields["id"], null) as text + var/t1 = input("Please input fingerprint hash:", "Med. records", src.active1.fields["fingerprint"], null) as text if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) return src.active1.fields["fingerprint"] = t1 @@ -276,6 +276,12 @@ if("b_type") if (istype(src.active2, /datum/data/record)) src.temp = text("Blood Type:
\n\tA- A+
\n\tB- B+
\n\tAB- AB+
\n\tO- O+
", src, src, src, src, src, src, src, src) + if("b_dna") + if (istype(src.active1, /datum/data/record)) + var/t1 = input("Please input DNA hash:", "Med. records", src.active1.fields["dna"], null) as text + if ((!( t1 ) || !( src.authenticated ) || usr.stat || usr.restrained() || (!in_range(src, usr) && (!istype(usr, /mob/living/silicon))) || src.active1 != a1)) + return + src.active1.fields["dna"] = t1 else if (href_list["p_stat"]) @@ -355,6 +361,7 @@ R.fields["id"] = src.active1.fields["id"] R.name = text("Medical Record #[]", R.fields["id"]) R.fields["b_type"] = "Unknown" + R.fields["b_dna"] = "Unknown" R.fields["mi_dis"] = "None" R.fields["mi_dis_d"] = "No minor disabilities have been declared." R.fields["ma_dis"] = "None" @@ -417,7 +424,7 @@ else P.info += "General Record Lost!
" if ((istype(src.active2, /datum/data/record) && data_core.medical.Find(src.active2))) - P.info += text("
\n
Medical Data

\nBlood Type: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src.active2.fields["b_type"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"]) + P.info += text("
\n
Medical Data

\nBlood Type: []
\nDNA: []
\n
\nMinor Disabilities: []
\nDetails: []
\n
\nMajor Disabilities: []
\nDetails: []
\n
\nAllergies: []
\nDetails: []
\n
\nCurrent Diseases: [] (per disease info placed in log/comment section)
\nDetails: []
\n
\nImportant Notes:
\n\t[]
\n
\n
Comments/Log

", src.active2.fields["b_type"], src.active2.fields["b_dna"], src.active2.fields["mi_dis"], src.active2.fields["mi_dis_d"], src.active2.fields["ma_dis"], src.active2.fields["ma_dis_d"], src.active2.fields["alg"], src.active2.fields["alg_d"], src.active2.fields["cdi"], src.active2.fields["cdi_d"], src.active2.fields["notes"]) var/counter = 1 while(src.active2.fields[text("com_[]", counter)]) P.info += text("[]
", src.active2.fields[text("com_[]", counter)]) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 9fc71b08047..8848afc6c92 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -184,7 +184,7 @@ /obj/manifest/proc/manifest() var/dat = "Crew Manifest:
" for(var/mob/living/carbon/human/M in world) - dat += text(" [] - []
", M.name, (istype(M.wear_id, /obj/item/weapon/card/id) ? text("[]", M.wear_id.assignment) : "Unknown Position")) + dat += text(" [] - []
", M.name, M.get_assignment()) var/obj/item/weapon/paper/P = new /obj/item/weapon/paper( src.loc ) P.info = dat P.name = "paper- 'Crew Manifest'" diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index bcca62b2ea0..4441bf49c5c 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -2,7 +2,7 @@ /obj/item/apc_frame/attackby(obj/item/weapon/W as obj, mob/user as mob) if (istype(W, /obj/item/weapon/wrench)) - new /obj/item/stack/sheet/metal( src.loc, 2 ) + new /obj/item/stack/sheet/metal( get_turf(src.loc), 2 ) del(src) /obj/item/apc_frame/proc/try_build(turf/on_wall) diff --git a/code/game/objects/radio/radio.dm b/code/game/objects/radio/radio.dm index d63c3437079..b1349ab4f54 100644 --- a/code/game/objects/radio/radio.dm +++ b/code/game/objects/radio/radio.dm @@ -145,18 +145,11 @@ Frequency: var/eqjobname - if (istype(M, /mob/living/carbon)) - if (M:wear_id) - var/id - if (istype(M:wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = M:wear_id - if (pda.id) id = pda.id.assignment - else id = pda.ownjob - else id = M:wear_id.assignment - if (id) eqjobname = id - else eqjobname = "No job" - else - eqjobname = "No id" + if (istype(M, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = M + eqjobname = H.get_assignment() + else if (istype(M, /mob/living/carbon)) + eqjobname = "No id" //only humans can wear ID else if (istype(M,/mob/living/silicon/ai)) eqjobname = "AI" else if (istype(M,/mob/living/silicon/robot)) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 76134694e1e..946a05d1f6e 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -990,10 +990,7 @@ var/showadminmessages = 1 continue H.paralysis += 5 if(H.wear_id) - var/obj/item/weapon/card/id/id = H.wear_id - if (istype (H.wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = H.wear_id - id = pda.id + var/obj/item/weapon/card/id/id = H.get_idcard() for(var/A in id.access) if(A == access_security) security++ @@ -1404,7 +1401,7 @@ var/showadminmessages = 1 dat += "" for(var/mob/living/carbon/human/H in world) if(H.ckey) - dat += text("", H.name, (istype(H.wear_id, /obj/item/weapon/card/id) ? text("[]", H.wear_id.assignment) : "Unknown Position")) + dat += text("", H.name, H.get_assignment()) dat += "
NamePosition
[][]
[][]
" usr << browse(dat, "window=manifest;size=440x410") if("DNA") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 4fc70337ae6..e8be1fb2c5e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -2587,3 +2587,59 @@ var/obj/machinery/bot/mulebot/MB = AM if(istype(MB)) MB.RunOver(src) + +//gets assignment from ID or ID inside PDA or PDA itself +//Useful when player do something with computers +/mob/living/carbon/human/proc/get_assignment(var/if_no_id = "No id", var/if_no_job = "No job") + var/obj/item/device/pda/pda = src.wear_id + var/obj/item/weapon/card/id/id = src.wear_id + if (istype(pda)) + if (pda.id) + . = pda.id.assignment + else + . = pda.ownjob + else if (istype(id)) + . = id.assignment + else + return if_no_id + if (!.) + . = if_no_job + return + +//gets name from ID or ID inside PDA or PDA itself +//Useful when player do something with computers +/mob/living/carbon/human/proc/get_authentification_name(var/if_no_id = "Unknown") + var/obj/item/device/pda/pda = src.wear_id + var/obj/item/weapon/card/id/id = src.wear_id + if (istype(pda)) + if (pda.id) + . = pda.id.registered + else + . = pda.owner + else if (istype(id)) + . = id.registered + else + return if_no_id + return + +//gets name from ID or PDA itself, ID inside PDA doesn't matter +//Useful when player is being seen by other mobs +/mob/living/carbon/human/proc/get_visible_name(var/if_no_id = "Unknown") + var/obj/item/device/pda/pda = src.wear_id + var/obj/item/weapon/card/id/id = src.wear_id + if (istype(pda)) + . = pda.owner + else if (istype(id)) + . = id.registered + else + return if_no_id + return + +//gets ID card object from special clothes slot or null. +/mob/living/carbon/human/proc/get_idcard() + var/obj/item/weapon/card/id/id = src.wear_id + var/obj/item/device/pda/pda = src.wear_id + if (istype(pda) && pda.id) + id = pda.id + if (istype(id)) + return id diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 21b13cea0e9..aa7b65a74f6 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -18,15 +18,8 @@ var/alt_name = "" if (istype(src, /mob/living/carbon/human) && src.name != src.real_name) - if (src.wear_id) - var/obj/item/weapon/card/id/id = src:wear_id - if(istype(src:wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = src:wear_id - id = pda.id - alt_name = " (as [id:registered])" - else - alt_name = " (as Unknown)" - + var/mob/living/carbon/human/H = src + alt_name = " (as [H.get_visible_name()])" // Mute disability if (src.sdisabilities & 2) return diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index fadd3de054f..c7e10cb73b0 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -27,17 +27,8 @@ var/alt_name = "" if (istype(src, /mob/living/carbon/human) && src.name != src.real_name) - if (src:wear_id) - var/id - if(istype(src:wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = src:wear_id - id = pda.owner - else - id = src:wear_id.registered - alt_name = " (as [id])" - else - alt_name = " (as Unknown)" - + var/mob/living/carbon/human/H = src + alt_name = " (as [H.get_visible_name()])" // Mute disability if (src.sdisabilities & 2) return diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 1d5d64a1f16..71012d84695 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -292,6 +292,7 @@ mob/new_player G.fields["p_stat"] = "Active" G.fields["m_stat"] = "Stable" M.fields["b_type"] = text("[]", H.b_type) + M.fields["b_dna"] = H.dna.unique_enzymes M.fields["mi_dis"] = "None" M.fields["mi_dis_d"] = "No minor disabilities have been declared." M.fields["ma_dis"] = "None" diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index d7b892eb99f..436625fc1e8 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -14,14 +14,8 @@ var/alt_name = "" if (istype(src, /mob/living/carbon/human) && src.name != src.real_name) - if (src:wear_id) - var/obj/item/weapon/card/id/id = src:wear_id - if(istype(src:wear_id, /obj/item/device/pda)) - var/obj/item/device/pda/pda = src:wear_id - id = pda.id - alt_name = " (as [id:registered])" - else - alt_name = " (as Unknown)" + var/mob/living/carbon/human/H = src + alt_name = " (as [H.get_authentification_name()])" else if (istype(src, /mob/dead/observer)) name = "Ghost" alt_name = " ([src.real_name])"