From bb16e6d1b1150a4609be321b3d3d915277c819fc Mon Sep 17 00:00:00 2001 From: "joe.heinemeyer@gmail.com" Date: Thu, 8 Mar 2012 00:59:10 +0000 Subject: [PATCH] Speed things up yet /AGAIN/ and added an improved UI to the detective's scanner's dossier screen. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@3262 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/atom.dm | 2 +- code/game/atom_procs.dm | 28 +++--- code/game/objects/devices/PDA/PDA.dm | 4 +- code/game/objects/devices/scanners.dm | 14 ++- code/game/objects/items/item.dm | 2 +- code/game/objects/items/weapons/cards_ids.dm | 2 +- code/modules/admin/admin_verbs.dm | 4 - code/modules/admin/verbs/debug.dm | 72 +------------- code/modules/detectivework/detective_work.dm | 98 +++++++------------ .../living/carbon/alien/humanoid/humanoid.dm | 4 +- .../mob/living/carbon/human/examine.dm | 24 ++--- code/modules/mob/living/carbon/human/human.dm | 17 ++-- 12 files changed, 88 insertions(+), 183 deletions(-) diff --git a/code/defines/atom.dm b/code/defines/atom.dm index aa0c35b0705..f04d83c77fc 100644 --- a/code/defines/atom.dm +++ b/code/defines/atom.dm @@ -6,7 +6,7 @@ var/list/fingerprints var/list/fingerprintshidden var/fingerprintslast = null - var/list/blood_DNA = list() + var/list/blood_DNA var/last_bumped = 0 var/pass_flags = 0 diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index 3b72ed6d9d0..21285d543ee 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -113,7 +113,7 @@ if (!istype(H.dna, /datum/dna) || !H.dna.uni_identity || (length(H.dna.uni_identity) != 32)) if(!istype(H.dna, /datum/dna)) H.dna = new /datum/dna(null) - H.check_dna() + H.check_dna() if (H.gloves && H.gloves != src) if(src.fingerprintslast != H.key) src.fingerprintshidden += text("(Wearing gloves). Real name: [], Key: []",H.real_name, H.key) @@ -158,6 +158,7 @@ for(var/i = 1, i <= src.fingerprints.len, i++) if(length(src.fingerprints[i]) != 69) src.fingerprints.Remove(src.fingerprints[i]) + if(fingerprints && !fingerprints.len) del(fingerprints) return 1 else if(src.fingerprintslast != M.key) @@ -175,10 +176,7 @@ if (!( src.flags ) & 256) return if(!blood_DNA) - var/turf/Z = get_turf(src) - message_admins("\red ERROR: [src] at [Z.x], [Z.y], [Z.z] is missing it's blood_DNA list!") - log_game("\red ERROR: [src] at [Z.x], [Z.y], [Z.z] is missing it's blood_DNA list!") - return + blood_DNA = list() if (blood_DNA.len) if (istype(src, /obj/item)&&!istype(src, /obj/item/weapon/melee/energy))//Only regular items. Energy melee weapon are not affected. var/obj/item/source2 = src @@ -287,16 +285,10 @@ if (!( src.flags ) & 256) return - if(!blood_DNA) - var/turf/Z = get_turf(src) - message_admins("\red ERROR: [src] at [Z.x], [Z.y], [Z.z] is missing it's blood_DNA list!") - log_game("\red ERROR: [src] at [Z.x], [Z.y], [Z.z] is missing it's blood_DNA list!") - blood_DNA = list() - return - if ( src.blood_DNA.len ) + if ( src.blood_DNA ) if (istype (src, /mob/living/carbon)) var/obj/item/source2 = src - source2.blood_DNA = list() + del(source2.blood_DNA) //var/icon/I = new /icon(source2.icon_old, source2.icon_state) //doesnt have icon_old //source2.icon = I if(ishuman(src)) @@ -304,7 +296,7 @@ M.bloody_hands = 0 if (istype (src, /obj/item)) var/obj/item/source2 = src - source2.blood_DNA = list() + del(source2.blood_DNA) // var/icon/I = new /icon(source2.icon_old, source2.icon_state) if(source2.icon_old) source2.icon = source2.icon_old @@ -317,12 +309,14 @@ G.transfer_blood = 0 if (istype(src, /turf/simulated)) var/obj/item/source2 = src - source2.blood_DNA = list() + del(source2.blood_DNA) if(source2.icon_old) var/icon/I = new /icon(source2.icon_old, source2.icon_state) source2.icon = I else source2.icon = initial(icon) + if(blood_DNA && !blood_DNA.len) + del(blood_DNA) if(src.fingerprints && src.fingerprints.len) var/done = 0 while(!done) @@ -342,8 +336,8 @@ break else src.fingerprints[i] = "1=" + prints["1"] + "&2=" + new_print - if(!src.fingerprints) - src.fingerprints = list() + if(fingerprints && !fingerprints.len) + del(fingerprints) if(istype(src, /mob/living/carbon/human)) var/mob/living/carbon/human/M = src M.update_clothing() diff --git a/code/game/objects/devices/PDA/PDA.dm b/code/game/objects/devices/PDA/PDA.dm index 74e7902aad0..749a5783cc8 100644 --- a/code/game/objects/devices/PDA/PDA.dm +++ b/code/game/objects/devices/PDA/PDA.dm @@ -766,8 +766,10 @@ user << "\blue No fingerprints found on [C]" else user << text("\blue [C]'s Fingerprints: [md5(C:dna.uni_identity)]") - if ( !(C:blood_DNA.len) ) + if ( !(C:blood_DNA) ) user << "\blue No blood found on [C]" + if(C:blood_DNA) + del(C:blood_DNA) else user << "\blue Blood found on [C]. Analysing..." spawn(15) diff --git a/code/game/objects/devices/scanners.dm b/code/game/objects/devices/scanners.dm index 1ae6276a125..d41b75c5749 100644 --- a/code/game/objects/devices/scanners.dm +++ b/code/game/objects/devices/scanners.dm @@ -124,8 +124,10 @@ MASS SPECTROMETER user << "\blue Done printing." user << text("\blue [M]'s Fingerprints: [md5(M.dna.uni_identity)]") - if ( !(M.blood_DNA.len) ) + if ( !M.blood_DNA || !M.blood_DNA.len ) user << "\blue No blood found on [M]" + if(M.blood_DNA) + del(M.blood_DNA) else user << "\blue Blood found on [M]. Analysing..." spawn(15) @@ -148,16 +150,16 @@ MASS SPECTROMETER A.fingerprints = list() src.add_fingerprint(user) if (istype(A, /obj/effect/decal/cleanable/blood) || istype(A, /obj/effect/rune)) - if(!isnull(A.blood_DNA.len)) + if(!isnull(A.blood_DNA)) for(var/i = 1, i <= A.blood_DNA.len, i++) var/list/templist = A.blood_DNA[i] user << "\blue Blood type: [templist[2]]\nDNA: [templist[1]]" return var/duplicate = 0 - if ((!A.fingerprints || A.fingerprints.len == 0) && !(A.suit_fibers) && !(A.blood_DNA.len)) + if ((!A.fingerprints || !A.fingerprints.len) && !A.suit_fibers && !A.blood_DNA) user << "\blue Unable to locate any fingerprints, materials, fibers, or blood on [A]!" return 0 - else if (A.blood_DNA.len) + else if (A.blood_DNA) user << "\blue Blood found on [A]. Analysing..." sleep(15) if(!duplicate) @@ -170,8 +172,10 @@ MASS SPECTROMETER user << "\blue Blood type: [templist[2]]\nDNA: [templist[1]]" else user << "\blue No Blood Located" - if(!A.fingerprints || A.fingerprints.len == 0) + if(!A.fingerprints || !A.fingerprints.len) user << "\blue No Fingerprints Located." + if(A.fingerprints) + del(A.fingerprints) else user << text("\blue Isolated [A.fingerprints.len] fingerprints: Data Stored: Scan with Hi-Res Forensic Scanner to retrieve.") if(!duplicate) diff --git a/code/game/objects/items/item.dm b/code/game/objects/items/item.dm index 825707ceb53..5917cacee4a 100644 --- a/code/game/objects/items/item.dm +++ b/code/game/objects/items/item.dm @@ -100,7 +100,7 @@ t = "huge" else if ((usr.mutations & CLUMSY) && prob(50)) t = "funny-looking" - usr << text("This is a []\icon[][]. It is a [] item.", !src.blood_DNA.len ? "" : "bloody ",src, src.name, t) + usr << text("This is a []\icon[][]. It is a [] item.", !src.blood_DNA ? "" : "bloody ",src, src.name, t) if(src.desc) usr << src.desc return diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm index 25c3e503cc0..59a0ac9cdb9 100644 --- a/code/game/objects/items/weapons/cards_ids.dm +++ b/code/game/objects/items/weapons/cards_ids.dm @@ -251,7 +251,7 @@ FINGERPRINT CARD ..() if (!istype(usr, /mob/living/silicon)) - if (length(src.fingerprints)) + if (src.fingerprints) if (src.amount > 1) var/obj/item/weapon/f_card/F = new /obj/item/weapon/f_card(get_turf(src)) F.amount = --src.amount diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index bd2e83318db..c8ab5664db1 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -141,8 +141,6 @@ verbs += /client/proc/everyone_random verbs += /client/proc/only_one // Fateweaver suggested I do this - Doohl verbs += /client/proc/deadmin_self - verbs += /client/proc/cmd_debug_prints - verbs += /client/proc/cmd_debug_blood if (holder.level >= 5)//Game Admin******************************************************************** verbs += /obj/admins/proc/view_txt_log @@ -419,8 +417,6 @@ verbs -= /client/proc/jumptocoord verbs -= /client/proc/everyone_random verbs -= /client/proc/cmd_switch_radio - verbs -= /client/proc/cmd_debug_prints - verbs -= /client/proc/cmd_debug_blood return diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 6b664c8ddb8..30737928be8 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -715,74 +715,4 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_if_possible(W, M.slot_wear_id) M.update_clothing() - return - -/client/proc/cmd_debug_blood() - set category = "Debug" - set name = "Analyze all blood_DNA" - - // to prevent REALLY stupid activations - switch(alert("Are you sure?", ,"Yes", "No")) - if("No") - return - world << "\red ALERT! \black Standby for high CPU bugtesting to determine missing blood_DNA values!" - world << "\red THIS WILL PROBABLY LAG LIKE HELL." - world << "Initiating in 10 BYOND seconds..." - log_admin("[key_name(src)] has initiated a scan of all blood_DNA lists!") - message_admins("[key_name_admin(src)] has initiated a scan of all blood_DNA lists!", 0) - sleep(100) - world << "\red SCAN INITIATED." - spawn(0) //I am not stupid enough to leave that in a regular loop. - for(var/atom/O in world) - if(!islist(O.blood_DNA)) - var/turf/T = get_turf(O) - if(istype(O.loc,/turf)) - src << "[O] at [T.x],[T.y],[T.z] has a non-list blood_DNA variable! (Last touched by [O.fingerprintslast])" - else - src << "[O] in [O.loc] at [T.x],[T.y],[T.z] has a non-list blood_DNA variable! (Last touched by [O.fingerprintslast])" - world << "\red SCAN COMPLETE." - world << "Thank you for your patience." - return - - -/client/proc/cmd_debug_prints() - set category = "Debug" - set name = "Analyze all fingerprints" - - // to prevent REALLY stupid activations - switch(alert("Are you sure?", ,"Yes", "No")) - if("No") - return - world << "\red ALERT! \black Standby for high CPU bugtesting to determine incorrect fingerprint values!" - world << "\red THIS WILL PROBABLY LAG LIKE HELL." - world << "Initiating in 10 BYOND seconds..." - log_admin("[key_name(src)] has initiated a scan of all fingerprints!") - message_admins("[key_name_admin(src)] has initiated a scan of all fingerprints!", 0) - sleep(100) - world << "\red SCAN INITIATED." - spawn(0) //I am not stupid enough to leave that in a regular loop. - for(var/atom/O in world) - if(istype(O, /mob)) //Lets not. - continue - if(!islist(O.fingerprints)) - var/turf/T = get_turf(O) - if(istype(O.loc,/turf)) - src << "[O] at [T.x],[T.y],[T.z] has a non-list fingerprints variable! (Last touched by [O.fingerprintslast])" - else - src << "[O] in [O.loc] at [T.x],[T.y],[T.z] has a non-list fingerprints variable! (Last touched by [O.fingerprintslast])" - else if (O.fingerprints.len) - for(var/i = 1, i <= O.fingerprints.len, i++) - if(length(O.fingerprints[i]) != 69) - var/turf/T = get_turf(O) - if(isnull(T)) - src << "[O] at [O.loc] has a fingerprints variable of incorrect length! (TURF NOT FOUND). (Last touched by [O.fingerprintslast])" - else - if(istype(O.loc,/turf)) - src << "[O] at [T.x],[T.y],[T.z] has a fingerprints variable of incorrect length! (Last touched by [O.fingerprintslast])" - else - src << "[O] in [O.loc] at [T.x],[T.y],[T.z] has a fingerprints variable of incorrect length! (Last touched by [O.fingerprintslast])" - break - - world << "\red SCAN COMPLETE." - world << "Thank you for your patience." - return + return \ No newline at end of file diff --git a/code/modules/detectivework/detective_work.dm b/code/modules/detectivework/detective_work.dm index 26328e2314b..f5c84927e34 100644 --- a/code/modules/detectivework/detective_work.dm +++ b/code/modules/detectivework/detective_work.dm @@ -245,28 +245,23 @@ obj/machinery/computer/forensic_scanning print_string = "Fingerprints: (80% or higher completion reached)
" + prints[num2text(2)] + "
" temp += print_string for(var/i = 2, i <= dossier.len, i++) + temp += "
" var/list/outputs = dossier[i] var/item_name = get_name(outputs[1]) var/list/prints_len = outputs[2] - temp += "Object: [item_name]
" + temp += "Object: [item_name]
" + temp += " Fingerprints:
" temp += "    [prints_len.len] Unique fingerprints found.
" var/list/fibers = outputs[3] if(fibers && fibers.len) - var/dat = "[fibers[1]]" - for(var/j = 2, j <= fibers.len, j++) - dat += ",
      [fibers[j]]" - temp += "    Fibers: [dat]
" - else - temp += "    No fibers found.
" + temp += " Fibers:
" + for(var/j = 1, j <= fibers.len, j++) + temp += "      [fibers[j]]
" var/list/blood = outputs[4] if(blood && blood.len) - var/dat = "[blood[1]]" - if(blood.len > 1) - for(var/j = 2, j <= blood.len, j++) - dat += ",
      [blood[j]]" - temp += "    Blood: [dat]
" - else - temp += "    No blood found.
" + temp += " Blood:
" + for(var/j = 1, j <= blood.len, j++) + temp += "      [blood[j]]
" else temp = "ERROR. Database not found!
" temp += "
{Delete this Dossier}" @@ -286,28 +281,23 @@ obj/machinery/computer/forensic_scanning print_string = "Fingerprints: " + prints[num2text(2)] + "
" P.info += print_string for(var/i = 2, i <= dossier.len, i++) + P.info += "
" var/list/outputs = dossier[i] var/item_name = get_name(outputs[1]) var/list/prints_len = outputs[2] - P.info += "Object: [item_name]
" + P.info += "Object: [item_name]
" + P.info += " Fingerprints:
" P.info += "    [prints_len.len] Unique fingerprints found.
" var/list/fibers = outputs[3] if(fibers && fibers.len) - var/dat = "[fibers[1]]" - for(var/j = 2, j <= fibers.len, j++) - dat += ",
      [fibers[j]]" - P.info += "    Fibers: [dat]
" - else - P.info += "    No fibers found.
" + P.info += " Fibers:
" + for(var/j = 1, j <= fibers.len, j++) + P.info += "      [fibers[j]]
" var/list/blood = outputs[4] if(blood && blood.len) - var/dat = "[blood[1]]" - if(blood.len > 1) - for(var/j = 2, j <= blood.len, j++) - dat += ",
      [blood[j]]" - P.info += "    Blood: [dat]
" - else - P.info += "    No blood found." + P.info += " Blood:
" + for(var/j = 1, j <= blood.len, j++) + P.info += "      [blood[j]]
" else usr << "ERROR. Database not found!
" if("auxiliary") @@ -317,23 +307,17 @@ obj/machinery/computer/forensic_scanning var/identifier = text2num(href_list["identifier"]) var/list/outputs = misc[identifier] var/item_name = get_name(outputs[1]) - temp += "Consolidated data points: [item_name]
" + temp += "Consolidated data points: [item_name]
" var/list/fibers = outputs[2] if(fibers && fibers.len) - var/dat = "[fibers[1]]" - for(var/j = 2, j <= fibers.len, j++) - dat += "
      [fibers[j]]" - temp += "    Fibers: [dat]
" - else - temp += "    No fibers found." + temp += " Fibers:
" + for(var/j = 1, j <= fibers.len, j++) + temp += "
      [fibers[j]]" var/list/blood = outputs[3] if(blood && blood.len) - var/dat = "[blood[1]]" - for(var/j = 2, j <= blood.len, j++) - dat += "
      [blood[j]]" - temp += "    Blood: [dat]
" - else - temp += "    No blood found.
" + temp += " Blood:
" + for(var/j = 1, j <= blood.len, j++) + temp += "      [blood[j]]
" else temp = "ERROR. Database not found!
" temp += "
{Delete This Record}" @@ -348,23 +332,17 @@ obj/machinery/computer/forensic_scanning P.name = "Auxiliary Database File ([item_name])" P.overlays += "paper_words" P.info = "Auxiliary Evidence Database

" - P.info += "Consolidated data points: [item_name]
" + P.info += "Consolidated data points: [item_name]
" var/list/fibers = outputs[2] if(fibers && fibers.len) - var/dat = "[fibers[1]]" - for(var/j = 2, j <= fibers.len, j++) - dat += "
      [fibers[j]]" - P.info += "    Fibers: [dat]
" - else - P.info += "    No fibers found." + P.info += " Fibers:
" + for(var/j = 1, j <= fibers.len, j++) + P.info += "
      [fibers[j]]" var/list/blood = outputs[3] if(blood && blood.len) - var/dat = "[blood[1]]" - for(var/j = 2, j <= blood.len, j++) - dat += "
      [blood[j]]" - P.info += "    Blood: [dat]
" - else - P.info += "    No blood found.
" + P.info += " Blood:
" + for(var/j = 1, j <= blood.len, j++) + P.info += "      [blood[j]]
" else usr << "ERROR. Database not found!
" if("scan") @@ -400,7 +378,7 @@ obj/machinery/computer/forensic_scanning scan_process = 0 scan_name = scanning.name scan_data = "[scanning]

" - if (scanning.blood_DNA.len) + if (scanning.blood_DNA) scan_data += "Blood Found:
" for(var/i = 1, i <= scanning.blood_DNA.len, i++) var/list/templist = scanning.blood_DNA[i] @@ -408,8 +386,6 @@ obj/machinery/computer/forensic_scanning else scan_data += "No Blood Found

" if(!scanning.fingerprints) - scanning.fingerprints = list() - if (!length(scanning.fingerprints)) scan_data += "No Fingerprints Found

" else var/list/L = scanning.fingerprints @@ -443,7 +419,7 @@ obj/machinery/computer/forensic_scanning if(istype(scanning,/obj/item/device/detective_scanner)) scan_data += "
Data transfered from Scanner to Database.
" add_data_scanner(scanning) - else if(!length(scanning.fingerprints)) + else if(!scanning.fingerprints) scan_data += "
Add to Database?
" else temp = "Scan Failed: No Object" @@ -512,7 +488,7 @@ obj/machinery/computer/forensic_scanning A.suit_fibers = tempsuit_fibers backup_DNA = A.blood_DNA A.blood_DNA = tempblood_DNA - if((!A.fingerprints || !length(A.fingerprints))) //No prints + if(!A.fingerprints) //No prints var/merged = 0 if(!misc) misc = list() @@ -552,7 +528,7 @@ obj/machinery/computer/forensic_scanning misc[misc.len] = templist //Store it! return !merged else //Has prints. - var/list/found_prints[A.fingerprints.len + 1] + var/list/found_prints[A.fingerprints.len] for(var/i = 1, i <= found_prints.len, i++) found_prints[i] = 0 if(!files) @@ -621,7 +597,7 @@ obj/machinery/computer/forensic_scanning perp_list.len++ perp_list[perp_list.len] = sum_list files[i] = perp_list - for(var/m = 1, m < found_prints.len, m++) //Uh Oh! A print wasn't used! New datapoint! + for(var/m = 1, m <= found_prints.len, m++) //Uh Oh! A print wasn't used! New datapoint! if(found_prints[m] == 0) var/list/newperp[2] var/list/sum_list[4] diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm index 27f9ef970f3..8930cbcbf96 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm @@ -381,7 +381,7 @@ if (!t1) t1 = wear_suit.icon_state overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) - if (wear_suit.blood_DNA.len) + if (wear_suit.blood_DNA) if (istype(wear_suit, /obj/item/clothing/suit/armor)) overlays += image("icon" = 'blood.dmi', "icon_state" = "armorblood[!lying ? "" : "2"]", "layer" = MOB_LAYER) else @@ -406,7 +406,7 @@ if (!t1) t1 = head.icon_state overlays += image("icon" = 'mob.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) - if (head.blood_DNA.len) + if (head.blood_DNA) overlays += image("icon" = 'blood.dmi', "icon_state" = "helmetblood[!lying ? "" : "2"]", "layer" = MOB_LAYER) head.screen_loc = ui_oclothing diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index b1d890edd4c..3f61979c579 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -52,28 +52,28 @@ //uniform if (src.w_uniform && !skipjumpsuit) - if (src.w_uniform.blood_DNA.len) + if (src.w_uniform.blood_DNA) msg += "[t_He] [t_is] wearing \icon[src.w_uniform.icon] [src.w_uniform.gender==PLURAL?"some":"a"] blood-stained [src.w_uniform.name]!\n" else msg += "[t_He] [t_is] wearing \icon[src.w_uniform] \a [src.w_uniform].\n" //head if (src.head) - if (src.head.blood_DNA.len) + if (src.head.blood_DNA) msg += "[t_He] [t_is] wearing \icon[src.head.icon] [src.head.gender==PLURAL?"some":"a"] blood-stained [src.head.name] on [t_his] head!\n" else msg += "[t_He] [t_is] wearing \icon[src.head] \a [src.head] on [t_his] head.\n" //suit/armour if (src.wear_suit) - if (src.wear_suit.blood_DNA.len) + if (src.wear_suit.blood_DNA) msg += "[t_He] [t_is] wearing \icon[src.wear_suit.icon] [src.wear_suit.gender==PLURAL?"some":"a"] blood-stained [src.wear_suit.name]!\n" else msg += "[t_He] [t_is] wearing \icon[src.wear_suit] \a [src.wear_suit].\n" //suit/armour storage if(src.s_store && !skipsuitstorage) - if(src.s_store.blood_DNA.len) + if(src.s_store.blood_DNA) msg += "[t_He] [t_is] carrying \icon[src.s_store.icon] [src.s_store.gender==PLURAL?"some":"a"] blood-stained [src.s_store.name] on [t_his] [src.wear_suit.name]!\n" else msg += "[t_He] [t_is] carrying \icon[src.s_store] \a [src.s_store] on [t_his] [src.wear_suit.name].\n" @@ -84,25 +84,25 @@ //left hand if (src.l_hand) - if (src.l_hand.blood_DNA.len) + if (src.l_hand.blood_DNA) msg += "[t_He] [t_is] holding \icon[src.l_hand.icon] [src.l_hand.gender==PLURAL?"some":"a"] blood-stained [src.l_hand.name] in [t_his] left hand!\n" else msg += "[t_He] [t_is] holding \icon[src.l_hand] \a [src.l_hand] in [t_his] left hand.\n" //right hand if (src.r_hand) - if (src.r_hand.blood_DNA.len) + if (src.r_hand.blood_DNA) msg += "[t_He] [t_is] holding \icon[src.r_hand] [src.r_hand.gender==PLURAL?"some":"a"] blood-stained [src.r_hand.name] in [t_his] right hand!\n" else msg += "[t_He] [t_is] holding \icon[src.r_hand] \a [src.r_hand] in [t_his] right hand.\n" //gloves if (src.gloves && !skipgloves) - if (src.gloves.blood_DNA.len) + if (src.gloves.blood_DNA) msg += "[t_He] [t_has] \icon[src.gloves.icon] [src.gloves.gender==PLURAL?"some":"a"] blood-stained [src.gloves.name] on [t_his] hands!\n" else msg += "[t_He] [t_has] \icon[src.gloves] \a [src.gloves] on [t_his] hands.\n" - else if (src.blood_DNA.len) + else if (src.blood_DNA) msg += "[t_He] [t_has] blood-stained hands!\n" //handcuffed? @@ -111,21 +111,21 @@ //belt if (src.belt) - if (src.belt.blood_DNA.len) + if (src.belt.blood_DNA) msg += "[t_He] [t_has] \icon[src.belt.icon] [src.belt.gender==PLURAL?"some":"a"] blood-stained [src.belt.name] about [t_his] waist!\n" else msg += "[t_He] [t_has] \icon[src.belt] \a [src.belt] about [t_his] waist.\n" //shoes if (src.shoes && !skipshoes) - if(src.shoes.blood_DNA.len) + if(src.shoes.blood_DNA) msg += "[t_He] [t_is] wearing \icon[src.shoes.icon] [src.shoes.gender==PLURAL?"some":"a"] blood-stained [src.shoes.name] on [t_his] feet!\n" else msg += "[t_He] [t_is] wearing \icon[src.shoes] \a [src.shoes] on [t_his] feet.\n" //mask if (src.wear_mask && !skipmask) - if (src.wear_mask.blood_DNA.len) + if (src.wear_mask.blood_DNA) msg += "[t_He] [t_has] \icon[src.wear_mask.icon] [src.wear_mask.gender==PLURAL?"some":"a"] blood-stained [src.wear_mask.name] on [t_his] face!\n" else msg += "[t_He] [t_has] \icon[src.wear_mask] \a [src.wear_mask] on [t_his] face.\n" @@ -133,7 +133,7 @@ //eyes if (!skipeyes) if(src.glasses) - if (src.glasses.blood_DNA.len) + if (src.glasses.blood_DNA) msg += "[t_He] [t_has] \icon[src.glasses] [src.gloves.gender==PLURAL?"some":"a"] blood-stained [src.glasses] covering [t_his] eyes!\n" else msg += "[t_He] [t_has] \icon[src.glasses] \a [src.glasses] covering [t_his] eyes.\n" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 8deb1a80aaa..354bdc8f57e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -853,7 +853,7 @@ overlays += image("icon" = 'uniform_fat.dmi', "icon_state" = "[t1][!lying ? "_s" : "_l"]", "layer" = MOB_LAYER) else overlays += image("icon" = 'uniform.dmi', "icon_state" = text("[][]",t1, (!(lying) ? "_s" : "_l")), "layer" = MOB_LAYER) - if (w_uniform.blood_DNA.len) + if (w_uniform.blood_DNA) var/icon/stain_icon = icon('blood.dmi', "uniformblood[!lying ? "" : "2"]") overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) @@ -874,10 +874,10 @@ if (!t1) t1 = gloves.icon_state overlays += image("icon" = 'hands.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) - if (gloves.blood_DNA.len) + if (gloves.blood_DNA) var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]") overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) - else if (blood_DNA.len) + else if (blood_DNA) var/icon/stain_icon = icon('blood.dmi', "bloodyhands[!lying ? "" : "2"]") overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) // Glasses @@ -892,7 +892,7 @@ if (shoes) var/t1 = shoes.icon_state overlays += image("icon" = 'feet.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) - if (shoes.blood_DNA.len) + if (shoes.blood_DNA) var/icon/stain_icon = icon('blood.dmi', "shoesblood[!lying ? "" : "2"]") overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) // Radio /* if (w_radio) @@ -946,7 +946,7 @@ var/t1 = wear_suit.icon_state overlays += image("icon" = 'suit.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) if (wear_suit) - if (wear_suit.blood_DNA.len) + if (wear_suit.blood_DNA) var/icon/stain_icon = null if (istype(wear_suit, /obj/item/clothing/suit/armor/vest || /obj/item/clothing/suit/wcoat)) stain_icon = icon('blood.dmi', "armorblood[!lying ? "" : "2"]") @@ -982,7 +982,7 @@ var/t1 = wear_mask.icon_state overlays += image("icon" = 'mask.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) if (!istype(wear_mask, /obj/item/clothing/mask/cigarette)) - if (wear_mask.blood_DNA.len) + if (wear_mask.blood_DNA) var/icon/stain_icon = icon('blood.dmi', "maskblood[!lying ? "" : "2"]") overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) wear_mask.screen_loc = ui_mask @@ -994,7 +994,7 @@ if(istype(head,/obj/item/clothing/head/kitty)) head_icon = (( lying ) ? head:mob2 : head:mob) overlays += image("icon" = head_icon, "layer" = MOB_LAYER) - if (head.blood_DNA.len) + if (head.blood_DNA) var/icon/stain_icon = icon('blood.dmi', "helmetblood[!lying ? "" : "2"]") overlays += image("icon" = stain_icon, "layer" = MOB_LAYER) head.screen_loc = ui_head @@ -1990,6 +1990,9 @@ It can still be worn/put on as normal. else if(source) source.update_clothing() + spawn(0) + if(source.machine == target) + target.show_inv(source) if(target) target.update_clothing() //SN src = null