diff --git a/baystation12.dme b/baystation12.dme index 13f0147d9f7..69a61b42524 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -622,6 +622,7 @@ #include "code\game\objects\items\weapons\cigs_lighters.dm" #include "code\game\objects\items\weapons\clown_items.dm" #include "code\game\objects\items\weapons\dna_injector.dm" +#include "code\game\objects\items\weapons\evidence.dm" #include "code\game\objects\items\weapons\explosives.dm" #include "code\game\objects\items\weapons\flamethrower.dm" #include "code\game\objects\items\weapons\grenades.dm" @@ -670,6 +671,7 @@ #include "code\game\objects\storage\belt.dm" #include "code\game\objects\storage\bible.dm" #include "code\game\objects\storage\briefcase.dm" +#include "code\game\objects\storage\coat.dm" #include "code\game\objects\storage\crates.dm" #include "code\game\objects\storage\firstaid.dm" #include "code\game\objects\storage\kit.dm" diff --git a/code/WorkInProgress/detective_work.dm b/code/WorkInProgress/detective_work.dm index e74ba63c4a3..673c81bbb78 100644 --- a/code/WorkInProgress/detective_work.dm +++ b/code/WorkInProgress/detective_work.dm @@ -132,9 +132,14 @@ obj/machinery/computer/forensic_scanning var/mob/M = usr var/obj/item/I = M.equipped() if(I && istype(I)) - scanning = I - M.drop_item() - I.loc = src + if(istype(I, /obj/item/weapon/evidencebag)) + scanning = I.contents[1] + scanning.loc = src + I.underlays -= scanning + else + scanning = I + M.drop_item() + I.loc = src else temp = "Invalid Object Rejected." if("scan") diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 6ca6ff8e0c5..ea080c637bc 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -625,7 +625,8 @@ datum/mind var/mob/living/carbon/human/H = current del(H.belt) del(H.back) - del(H.ears) + del(H.l_ear) + del(H.r_ear) del(H.gloves) del(H.head) del(H.shoes) diff --git a/code/defines/obj/clothing/costume.dm b/code/defines/obj/clothing/costume.dm index d495a549902..21bb6172afd 100644 --- a/code/defines/obj/clothing/costume.dm +++ b/code/defines/obj/clothing/costume.dm @@ -15,7 +15,7 @@ /obj/effect/landmark/costume/madscientist/New() new /obj/item/clothing/under/gimmick/rank/captain/suit(src.loc) new /obj/item/clothing/head/flatcap(src.loc) - new /obj/item/clothing/suit/labcoat/mad(src.loc) + new /obj/item/clothing/suit/storage/labcoat/mad(src.loc) new /obj/item/clothing/glasses/gglasses(src.loc) del(src) @@ -39,7 +39,7 @@ del(src) /obj/effect/landmark/costume/butler/New() - new /obj/item/clothing/suit/wcoat(src.loc) + new /obj/item/clothing/suit/storage/wcoat(src.loc) new /obj/item/clothing/under/suit_jacket(src.loc) new /obj/item/clothing/head/that(src.loc) del(src) @@ -58,7 +58,7 @@ del(src) /obj/effect/landmark/costume/prig/New() - new /obj/item/clothing/suit/wcoat(src.loc) + new /obj/item/clothing/suit/storage/wcoat(src.loc) new /obj/item/clothing/glasses/monocle(src.loc) var/CHOICE= pick( /obj/item/clothing/head/bowler, /obj/item/clothing/head/that) new CHOICE(src.loc) @@ -82,7 +82,7 @@ new /obj/item/clothing/under/waiter(src.loc) var/CHOICE= pick( /obj/item/clothing/head/kitty, /obj/item/clothing/head/rabbitears) new CHOICE(src.loc) - new /obj/item/clothing/suit/apron(src.loc) + new /obj/item/clothing/suit/storage/apron(src.loc) del(src) /obj/effect/landmark/costume/pirate/New() diff --git a/code/defines/obj/clothing/ears.dm b/code/defines/obj/clothing/ears.dm index adfb51e4373..c89edc1cd22 100644 --- a/code/defines/obj/clothing/ears.dm +++ b/code/defines/obj/clothing/ears.dm @@ -4,10 +4,59 @@ name = "ears" w_class = 1.0 throwforce = 2 + var/twoeared = 0 + +/obj/item/clothing/ears/attack_hand(mob/user as mob) + if (!user) return + + if (src.loc != user || !istype(user,/mob/living/carbon/human)) + ..() + return + var/mob/living/carbon/human/H = user + if(H.l_ear != src && H.r_ear != src) + ..() + return + + if(!canremove) + return + + var/obj/item/clothing/ears/O + if(twoeared) + O = (H.l_ear == src ? H.r_ear : H.l_ear) + user.u_equip(O) + if(!istype(src,/obj/item/clothing/ears/offear)) + del(O) + O = src + else + O = src + + user.u_equip(src) + + if (O) + user.put_in_hand(O) + O.add_fingerprint(user) + + if(istype(src,/obj/item/clothing/ears/offear)) + del(src) + +/obj/item/clothing/ears/offear + name = "Other ear" + w_class = 5.0 + icon = 'screen1_old.dmi' + icon_state = "block" + twoeared = 1 + + New(var/obj/O) + name = O.name + desc = O.desc + icon = O.icon + icon_state = O.icon_state + dir = O.dir /obj/item/clothing/ears/earmuffs name = "earmuffs" desc = "Protects your hearing from loud noises, and quiet ones as well." icon_state = "earmuffs" protective_temperature = 500 - item_state = "earmuffs" \ No newline at end of file + item_state = "earmuffs" + twoeared = 1 \ No newline at end of file diff --git a/code/defines/obj/clothing/gloves.dm b/code/defines/obj/clothing/gloves.dm index 294d56063ce..55315576777 100644 --- a/code/defines/obj/clothing/gloves.dm +++ b/code/defines/obj/clothing/gloves.dm @@ -140,11 +140,13 @@ color="orange" /obj/item/clothing/gloves/red - name = "Red Gloves" - desc = "A pair of gloves, they don't look special in any way." + desc = "Heavily padded heavy-duty red gloves." + name = "red gloves" icon_state = "red" item_state = "redgloves" - color = "red" + siemens_coefficient = 0.30 + + protective_temperature = 1100 /obj/item/clothing/gloves/rainbow name = "Rainbow Gloves" diff --git a/code/defines/obj/computer.dm b/code/defines/obj/computer.dm index 082c8381839..6a1a62134d7 100644 --- a/code/defines/obj/computer.dm +++ b/code/defines/obj/computer.dm @@ -191,6 +191,8 @@ var/temp = null var/printing = null var/can_change_id = 0 + var/list/Perp + var/tempname = null /obj/machinery/computer/secure_data/detective_computer diff --git a/code/defines/obj/supplypacks.dm b/code/defines/obj/supplypacks.dm index df7f67c5971..bd711a54b88 100644 --- a/code/defines/obj/supplypacks.dm +++ b/code/defines/obj/supplypacks.dm @@ -285,7 +285,7 @@ "/obj/item/weapon/minihoe", "/obj/item/device/analyzer/plant_analyzer", "/obj/item/clothing/gloves/botanic_leather", - "/obj/item/clothing/suit/apron") // Updated with new things + "/obj/item/clothing/suit/storage/apron") // Updated with new things cost = 10 containertype = /obj/structure/closet/crate/hydroponics containername = "Hydroponics crate" diff --git a/code/defines/obj/vending.dm b/code/defines/obj/vending.dm index 58350621369..3c9838d0df5 100644 --- a/code/defines/obj/vending.dm +++ b/code/defines/obj/vending.dm @@ -158,8 +158,8 @@ icon_state = "sec" icon_deny = "sec-deny" req_access_txt = "1" - product_paths = "/obj/item/weapon/handcuffs;/obj/item/weapon/flashbang;/obj/item/device/flash;/obj/item/weapon/reagent_containers/food/snacks/donut" - product_amounts = "8;4;5;12" + product_paths = "/obj/item/weapon/handcuffs;/obj/item/weapon/flashbang;/obj/item/device/flash;/obj/item/weapon/reagent_containers/food/snacks/donut;/obj/item/weapon/evidencebag" + product_amounts = "8;4;5;12;6" product_hidden = "/obj/item/clothing/glasses/sunglasses;/obj/item/kitchen/donut_box" product_hideamt = "2;2" charge_type = "security" @@ -205,7 +205,7 @@ name = "Dinnerware" desc = "A kitchen and restaurant equipment vendor" icon_state = "dinnerware" - product_paths = "/obj/item/weapon/tray;/obj/item/weapon/kitchen/utensil/fork;/obj/item/weapon/kitchenknife;/obj/item/weapon/reagent_containers/food/drinks/drinkingglass;/obj/item/clothing/suit/chef/classic" + product_paths = "/obj/item/weapon/tray;/obj/item/weapon/kitchen/utensil/fork;/obj/item/weapon/kitchenknife;/obj/item/weapon/reagent_containers/food/drinks/drinkingglass;/obj/item/clothing/suit/storage/chef/classic" product_amounts = "8;6;3;8;2" //product_amounts = "8;5;4" Old totals product_hidden = "/obj/item/weapon/kitchen/utensil/spoon;/obj/item/weapon/kitchen/utensil/knife;/obj/item/weapon/kitchen/rollingpin;/obj/item/weapon/butch" diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm index cb52e0c0ac2..b27bc90b2fa 100644 --- a/code/defines/procs/helpers.dm +++ b/code/defines/procs/helpers.dm @@ -1185,7 +1185,8 @@ proc/listclearnulls(list/list) if(hasvar(src,"back")) if(src:back) items += src:back if(hasvar(src,"belt")) if(src:belt) items += src:belt - if(hasvar(src,"ears")) if(src:ears) items += src:ears + if(hasvar(src,"l_ear")) if(src:l_ear) items += src:l_ear + if(hasvar(src,"r_ear")) if(src:r_ear) items += src:r_ear if(hasvar(src,"glasses")) if(src:glasses) items += src:glasses if(hasvar(src,"gloves")) if(src:gloves) items += src:gloves if(hasvar(src,"head")) if(src:head) items += src:head diff --git a/code/game/algorithm.dm b/code/game/algorithm.dm index 9169d049652..92cbd2dde55 100644 --- a/code/game/algorithm.dm +++ b/code/game/algorithm.dm @@ -113,8 +113,11 @@ proc/countJob(rank) src.wear_id = W equipped = 1 if(slot_ears) - if(!src.ears) - src.ears = W + if(!src.l_ear) + src.l_ear = W + equipped = 1 + else if(!src.r_ear) + src.r_ear = W equipped = 1 if(slot_glasses) if(!src.glasses) diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm index 7d113523346..3a361fd10c4 100644 --- a/code/game/gamemodes/traitor/traitor.dm +++ b/code/game/gamemodes/traitor/traitor.dm @@ -230,8 +230,11 @@ if (!R && traitor_mob.w_uniform && istype(traitor_mob.belt, /obj/item/device/radio)) R = traitor_mob.belt loc = "on your belt" - if (!R && istype(traitor_mob.ears, /obj/item/device/radio)) - R = traitor_mob.ears + if (!R && istype(traitor_mob.l_ear, /obj/item/device/radio)) + R = traitor_mob.l_ear + loc = "on your head" + if (!R && istype(traitor_mob.r_ear, /obj/item/device/radio)) + R = traitor_mob.r_ear loc = "on your head" if (!R) traitor_mob << "Unfortunately, the Syndicate wasn't able to get you a radio." diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm index dc92ea836b9..9da0da4711b 100644 --- a/code/game/gamemodes/wizard/spellbook.dm +++ b/code/game/gamemodes/wizard/spellbook.dm @@ -14,7 +14,7 @@ dat += "The number after the spell name is the cooldown time.
" dat += "Magic Missile (10)
" dat += "Fireball (10)
" - dat += "Disintegrate (60)
" +// dat += "Disintegrate (60)
" dat += "Disable Technology (60)
" dat += "Smoke (10)
" dat += "Blind (30)
" @@ -54,10 +54,10 @@ usr.verbs += /client/proc/fireball usr.mind.special_verbs += /client/proc/fireball src.temp = "This spell fires a fireball at a target and does not require wizard garb. Be careful not to fire it at people that are standing next to you." - if ("3") - usr.verbs += /mob/proc/kill - usr.mind.special_verbs += /mob/proc/kill - src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown." +// if ("3") +// usr.verbs += /mob/proc/kill +// usr.mind.special_verbs += /mob/proc/kill +// src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown." if ("4") usr.verbs += /mob/proc/tech usr.mind.special_verbs += /mob/proc/tech @@ -114,9 +114,9 @@ if ("2") usr.spell_list += new /obj/effect/proc_holder/spell/targeted/projectile/fireball(usr) src.temp = "This spell fires a fireball at a target and does not require wizard garb. Be careful not to fire it at people that are standing next to you." - if ("3") - usr.spell_list += new /obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate(usr) - src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown." +// if ("3") +// usr.spell_list += new /obj/effect/proc_holder/spell/targeted/inflict_handler/disintegrate(usr) +// src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown." if ("4") usr.spell_list += new /obj/effect/proc_holder/spell/targeted/emplosion/disable_tech(usr) src.temp = "This spell disables all weapons, cameras and most other technology in range." @@ -183,7 +183,7 @@ dat += "Each item costs 1 telecrystal. The number afterwards is the cooldown time.
" dat += "Magic Missile (10)
" dat += "Fireball (10)
" - dat += "Disintegrate (60)
" +// dat += "Disintegrate (60)
" dat += "Disable Technology (60)
" dat += "Smoke (10)
" dat += "Blind (30)
" @@ -224,12 +224,12 @@ usr.verbs += /client/proc/fireball usr.mind.special_verbs += /client/proc/fireball src.temp = "This spell fires a fireball at a target and does not require wizard garb. Be careful not to fire it at people that are standing next to you." - else if (href_list["spell_disintegrate"]) - if (src.uses >= 1) - src.uses -= 1 - usr.verbs += /mob/proc/kill - usr.mind.special_verbs += /mob/proc/kill - src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown." +// else if (href_list["spell_disintegrate"]) +// if (src.uses >= 1) +// src.uses -= 1 +// usr.verbs += /mob/proc/kill +// usr.mind.special_verbs += /mob/proc/kill +// src.temp = "This spell instantly kills somebody adjacent to you with the vilest of magick. It has a long cooldown." else if (href_list["spell_emp"]) if (src.uses >= 1) src.uses -= 1 diff --git a/code/game/gamemodes/wizard/spells.dm b/code/game/gamemodes/wizard/spells.dm index bbc1e54c331..a10739c4103 100644 --- a/code/game/gamemodes/wizard/spells.dm +++ b/code/game/gamemodes/wizard/spells.dm @@ -229,6 +229,7 @@ //KILL +/* /mob/proc/kill(mob/living/M as mob in oview(1)) set category = "Spells" set name = "Disintegrate" @@ -249,6 +250,7 @@ s.start() M.dust() +*/ //DISABLE TECH diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm index 3c15ee72bbd..1d6b3dcea03 100644 --- a/code/game/gamemodes/wizard/wizard.dm +++ b/code/game/gamemodes/wizard/wizard.dm @@ -243,7 +243,7 @@ M.verbs -= /client/proc/jaunt M.verbs -= /client/proc/magicmissile M.verbs -= /client/proc/fireball - M.verbs -= /mob/proc/kill +// M.verbs -= /mob/proc/kill M.verbs -= /mob/proc/tech M.verbs -= /client/proc/smokecloud M.verbs -= /client/proc/blind @@ -257,7 +257,7 @@ M.mind.special_verbs -= /client/proc/jaunt M.mind.special_verbs -= /client/proc/magicmissile M.mind.special_verbs -= /client/proc/fireball - M.mind.special_verbs -= /mob/proc/kill +// M.mind.special_verbs -= /mob/proc/kill M.mind.special_verbs -= /mob/proc/tech M.mind.special_verbs -= /client/proc/smokecloud M.mind.special_verbs -= /client/proc/blind diff --git a/code/game/hud.dm b/code/game/hud.dm index 4c2433642bf..10cad02d49a 100644 --- a/code/game/hud.dm +++ b/code/game/hud.dm @@ -14,8 +14,9 @@ #define ui_hstore1 "SOUTH+1,5" #define ui_resist "EAST+1,SOUTH-1" #define ui_gloves "SOUTH,5" -#define ui_glasses "SOUTH,7" -#define ui_ears "SOUTH,6" +#define ui_glasses "SOUTH+1,6" +#define ui_lear "SOUTH,7" +#define ui_rear "SOUTH,6" #define ui_head "SOUTH+1,2" #define ui_shoes "SOUTH,4" #define ui_belt "SOUTH-1,3" @@ -56,7 +57,8 @@ obj/hud/New(var/type = 0) if(show_otherinventory) if(mymob:shoes) mymob:shoes:screen_loc = ui_shoes if(mymob:gloves) mymob:gloves:screen_loc = ui_gloves - if(mymob:ears) mymob:ears:screen_loc = ui_ears + if(mymob:l_ear) mymob:l_ear:screen_loc = ui_lear + if(mymob:r_ear) mymob:r_ear:screen_loc = ui_rear if(mymob:s_store) mymob:s_store:screen_loc = ui_sstore1 if(mymob:glasses) mymob:glasses:screen_loc = ui_glasses if(mymob:h_store) mymob:h_store:screen_loc = ui_hstore1 @@ -64,7 +66,8 @@ obj/hud/New(var/type = 0) if(istype(mymob, /mob/living/carbon/human)) if(mymob:shoes) mymob:shoes:screen_loc = null if(mymob:gloves) mymob:gloves:screen_loc = null - if(mymob:ears) mymob:ears:screen_loc = null + if(mymob:l_ear) mymob:l_ear:screen_loc = null + if(mymob:r_ear) mymob:r_ear:screen_loc = null if(mymob:s_store) mymob:s_store:screen_loc = null if(mymob:glasses) mymob:glasses:screen_loc = null if(mymob:h_store) mymob:h_store:screen_loc = null diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 42680a51d58..6452fc3f495 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -39,7 +39,7 @@ equip(var/mob/living/carbon/human/H) if(!H) return 0 H.equip_if_possible(new /obj/item/clothing/under/rank/chef(H), H.slot_w_uniform) - H.equip_if_possible(new /obj/item/clothing/suit/chef(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/chef(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) H.equip_if_possible(new /obj/item/clothing/head/chefhat(H), H.slot_head) return 1 @@ -60,7 +60,7 @@ H.equip_if_possible(new /obj/item/clothing/under/rank/hydroponics(H), H.slot_w_uniform) H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) H.equip_if_possible(new /obj/item/clothing/gloves/botanic_leather(H), H.slot_gloves) - H.equip_if_possible(new /obj/item/clothing/suit/apron(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/apron(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/device/analyzer/plant_analyzer(H), H.slot_s_store) return 1 diff --git a/code/game/jobs/job/engineering.dm b/code/game/jobs/job/engineering.dm index a0af39e115e..11686275443 100644 --- a/code/game/jobs/job/engineering.dm +++ b/code/game/jobs/job/engineering.dm @@ -80,7 +80,7 @@ H.equip_if_possible(new /obj/item/clothing/under/rank/roboticist(H), H.slot_w_uniform) H.equip_if_possible(new /obj/item/clothing/shoes/black(H), H.slot_shoes) H.equip_if_possible(new /obj/item/device/pda/engineering(H), H.slot_belt) - H.equip_if_possible(new /obj/item/clothing/suit/labcoat(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) H.equip_if_possible(new /obj/item/weapon/storage/toolbox/mechanical(H), H.slot_l_hand) return 1 \ No newline at end of file diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 175502ebaba..24ae2576f99 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -14,7 +14,7 @@ H.equip_if_possible(new /obj/item/clothing/under/rank/chief_medical_officer(H), H.slot_w_uniform) H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes) H.equip_if_possible(new /obj/item/device/pda/heads/cmo(H), H.slot_belt) - H.equip_if_possible(new /obj/item/clothing/suit/labcoat/cmo(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat/cmo(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(H), H.slot_l_hand) H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store) return 1 @@ -37,7 +37,7 @@ H.equip_if_possible(new /obj/item/clothing/under/rank/medical(H), H.slot_w_uniform) H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes) H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt) - H.equip_if_possible(new /obj/item/clothing/suit/labcoat(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/weapon/storage/firstaid/regular(H), H.slot_l_hand) H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store) return 1 @@ -60,7 +60,7 @@ H.equip_if_possible(new /obj/item/clothing/under/rank/geneticist(H), H.slot_w_uniform) H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes) H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt) - H.equip_if_possible(new /obj/item/clothing/suit/labcoat/genetics(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat/genetics(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store) return 1 @@ -83,7 +83,7 @@ H.equip_if_possible(new /obj/item/device/pda/medical(H), H.slot_belt) H.equip_if_possible(new /obj/item/clothing/mask/surgical(H), H.slot_wear_mask) H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes) - H.equip_if_possible(new /obj/item/clothing/suit/labcoat/virologist(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat/virologist(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/device/flashlight/pen(H), H.slot_s_store) return 1 diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 283501e2ca8..9549c1536b2 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -13,7 +13,7 @@ H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes) H.equip_if_possible(new /obj/item/clothing/under/rank/research_director(H), H.slot_w_uniform) H.equip_if_possible(new /obj/item/device/pda/heads/rd(H), H.slot_belt) - H.equip_if_possible(new /obj/item/clothing/suit/labcoat(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/weapon/clipboard(H), H.slot_r_hand) return 1 @@ -34,7 +34,7 @@ H.equip_if_possible(new /obj/item/clothing/under/rank/scientist(H), H.slot_w_uniform) H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes) H.equip_if_possible(new /obj/item/device/pda/toxins(H), H.slot_belt) - H.equip_if_possible(new /obj/item/clothing/suit/labcoat/science(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat/science(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/clothing/mask/gas(H), H.slot_wear_mask) H.equip_if_possible(new /obj/item/weapon/tank/oxygen(H), H.slot_l_hand) return 1 @@ -56,5 +56,5 @@ H.equip_if_possible(new /obj/item/clothing/under/rank/chemist(H), H.slot_w_uniform) H.equip_if_possible(new /obj/item/clothing/shoes/white(H), H.slot_shoes) H.equip_if_possible(new /obj/item/device/pda/toxins(H), H.slot_belt) - H.equip_if_possible(new /obj/item/clothing/suit/labcoat/chemist(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/labcoat/chemist(H), H.slot_wear_suit) return 1 diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm index fc2feda15b7..f9463337cc6 100644 --- a/code/game/jobs/job/security.dm +++ b/code/game/jobs/job/security.dm @@ -12,10 +12,12 @@ H.equip_if_possible(new /obj/item/weapon/storage/backpack/security (H), H.slot_back) H.equip_if_possible(new /obj/item/device/radio/headset/heads/hos(H), H.slot_ears) H.equip_if_possible(new /obj/item/clothing/under/rank/head_of_security(H), H.slot_w_uniform) + H.equip_if_possible(new /obj/item/clothing/suit/storage/armourrigvest(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/clothing/shoes/jackboots(H), H.slot_shoes) H.equip_if_possible(new /obj/item/device/pda/heads/hos(H), H.slot_belt) - H.equip_if_possible(new /obj/item/clothing/suit/armor/hos(H), H.slot_wear_suit) - H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) +// H.equip_if_possible(new /obj/item/clothing/suit/armor/hos(H), H.slot_wear_suit) +//We're Bay12, not Goon. We don't need armor 24/7 + H.equip_if_possible(new /obj/item/clothing/gloves/red(H), H.slot_gloves) H.equip_if_possible(new /obj/item/clothing/head/helmet/HoS(H), H.slot_head) H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses) H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack) @@ -45,7 +47,7 @@ H.equip_if_possible(new /obj/item/device/pda/security(H), H.slot_belt) H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/clothing/head/helmet/warden(H), H.slot_head) - H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) + H.equip_if_possible(new /obj/item/clothing/gloves/red(H), H.slot_gloves) H.equip_if_possible(new /obj/item/clothing/glasses/sunglasses/sechud(H), H.slot_glasses) H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack) H.equip_if_possible(new /obj/item/device/flash(H), H.slot_l_store) @@ -69,6 +71,7 @@ if(!H) return 0 H.equip_if_possible(new /obj/item/device/radio/headset/headset_sec(H), H.slot_ears) H.equip_if_possible(new /obj/item/weapon/storage/backpack(H), H.slot_back) + H.equip_if_possible(new /obj/item/weapon/storage/box/evidence(H.back), H.slot_in_backpack) H.equip_if_possible(new /obj/item/clothing/under/det(H), H.slot_w_uniform) H.equip_if_possible(new /obj/item/clothing/shoes/brown(H), H.slot_shoes) H.equip_if_possible(new /obj/item/device/pda/detective(H), H.slot_belt) @@ -80,7 +83,7 @@ H.equip_if_possible(new /obj/item/clothing/gloves/black(H), H.slot_gloves) H.equip_if_possible(new /obj/item/weapon/storage/fcard_kit(H.back), H.slot_in_backpack) H.equip_if_possible(new /obj/item/weapon/fcardholder(H), H.slot_in_backpack) - H.equip_if_possible(new /obj/item/clothing/suit/det_suit(H), H.slot_wear_suit) + H.equip_if_possible(new /obj/item/clothing/suit/storage/det_suit(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/device/detective_scanner(H), H.slot_in_backpack) H.equip_if_possible(new /obj/item/weapon/zippo(H), H.slot_l_store) // H.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/candy_corn(H), H.slot_h_store) @@ -111,6 +114,7 @@ H.equip_if_possible(new /obj/item/clothing/suit/armor/vest(H), H.slot_wear_suit) H.equip_if_possible(new /obj/item/clothing/head/helmet(H), H.slot_head) H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_in_backpack) + H.equip_if_possible(new /obj/item/clothing/gloves/red(H), H.slot_gloves) H.equip_if_possible(new /obj/item/weapon/handcuffs(H), H.slot_s_store) H.equip_if_possible(new /obj/item/device/flash(H), H.slot_l_store) var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H) diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm index 39f28cc5a72..b9cc67ce45a 100644 --- a/code/game/jobs/job_controller.dm +++ b/code/game/jobs/job_controller.dm @@ -225,9 +225,12 @@ var/global/datum/controller/occupations/job_master H.Robotize() return 1 - H.equip_if_possible(new /obj/item/device/radio/headset(H), H.slot_ears) + // make sure we don't already have one on 1 ear :p + if(!istype(H.r_ear,/obj/item/device/radio/headset) && !istype(H.l_ear,/obj/item/device/radio/headset)) + H.equip_if_possible(new /obj/item/device/radio/headset(H), H.slot_ears) var/obj/item/weapon/storage/backpack/BPK = new/obj/item/weapon/storage/backpack(H) H.equip_if_possible(BPK, H.slot_back,1) + H.equip_if_possible(new /obj/item/weapon/storage/box(H.back), H.slot_in_backpack) return 1 diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 0a88095bde0..303febedba2 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -18,6 +18,7 @@ dat += {" Search Records
List Records +
Search DNA

Virus Database
Medbot Tracking @@ -404,6 +405,24 @@ P.name = "paper- 'Medical Record'" src.printing = null + if (href_list["search_dna"]) + var/t1 = input("Search String: (DNA)", "Medical records", null, null) as text + 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.medical) + if (lowertext(R.fields["b_dna"]) == t1) + active2 = R + if (!( active2 )) + temp = text("Could not locate record [].", t1) + else + for(var/datum/data/record/E in data_core.general) + if ((E.fields["name"] == active2.fields["name"] || E.fields["id"] == active2.fields["id"])) + active1 = E + screen = 4 + src.add_fingerprint(usr) src.updateUsrDialog() return diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 3d7902590d0..3fe19ce1762 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -9,6 +9,7 @@ if(..()) return var/dat + if (temp) dat = text("[]

Clear Screen", temp, src) else @@ -16,20 +17,29 @@ if (authenticated) switch(screen) if(1.0) - dat += text("Search Records
\nList Records
\nSearch Fingerprints
\nNew General Record
\n
\nRecord Maintenance
\n{Log Out}
\n", src, src, src, src, src, src) - if(2.0) - dat += {"Record List:
- - - - - - - "} + dat += {" +

"} + dat += text("Search Records
", src) + dat += text("New Record
", src) + dat += {" +

+
Name (ID#)RankFingerprintsCriminal Status
+ + + +
Records:
+ + + + + + + +"} for(var/datum/data/record/R in data_core.general) 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) @@ -43,14 +53,20 @@ background = "'background-color:#3BB9FF;'" if("None") background = "'background-color:#00FF7F;'" - dat += text("", background, src, R, R.fields["name"], R.fields["id"]) + if("") + background = "'background-color:#FFFFFF;'" + crimstat = "No Record." + dat += text("", background, src, R, R.fields["name"]) + dat += text("", R.fields["id"]) dat += text("", R.fields["rank"]) dat += text("", R.fields["fingerprint"]) dat += text("", crimstat) - dat += text("
NameIDRankFingerprintsCriminal Status
[] (ID:[])
[][][][][]


Back", src) - if(3.0) + dat += "
" + dat += text("Record Maintenance

", src) + dat += text("{Log Out}",src) + if(2.0) dat += text("Records Maintenance
\nDelete All Records
\n
\nBack", src, src) - if(4.0) + if(3.0) dat += "
Security Record

" if ((istype(active1, /datum/data/record) && data_core.general.Find(active1))) dat += text("Name: [] ID: []
\nSex: []
\nAge: []
\nRank: []
\nFingerprint: []
\nPhysical Status: []
\nMental Status: []
", src, active1.fields["name"], src, active1.fields["id"], src, active1.fields["sex"], src, active1.fields["age"], src, active1.fields["rank"], src, active1.fields["fingerprint"], active1.fields["p_stat"], active1.fields["m_stat"]) @@ -68,10 +84,57 @@ dat += "Security Record Lost!
" dat += text("New Security Record

", src) dat += text("\nDelete Record (ALL)

\nPrint Record
\nBack
", src, src, src) + if(4.0) + if(!Perp.len) + dat += text("ERROR. String could not be located.

Back", src) + else + dat += {" + + "} + dat += text("", tempname) + dat += {" + +
Search Results for '[]':
+ + + + + + + + "} + for(var/i=1, i<=Perp.len, i += 2) + var/crimstat = "" + var/datum/data/record/R = Perp[i] + if(istype(Perp[i+1],/datum/data/record/)) + var/datum/data/record/E = Perp[i+1] + crimstat = E.fields["criminal"] + var/background + switch(crimstat) + if("*Arrest*") + background = "'background-color:#DC143C;'" + if("Incarcerated") + background = "'background-color:#CD853F;'" + if("Parolled") + background = "'background-color:#CD853F;'" + if("Released") + background = "'background-color:#3BB9FF;'" + if("None") + background = "'background-color:#00FF7F;'" + if("") + background = "'background-color:#FFFFFF;'" + crimstat = "No Record." + dat += text("", background, src, R, R.fields["name"]) + dat += text("", R.fields["id"]) + dat += text("", R.fields["rank"]) + dat += text("", R.fields["fingerprint"]) + dat += text("", crimstat) + dat += "
NameIDRankFingerprintsCriminal Status
[][][][][]

" + dat += text("
Return to index.", src) else else dat += text("{Log In}", src) - user << browse(text("Security Records[]", dat), "window=secure_rec") + user << browse(text("Security Records[]", dat), "window=secure_rec;size=550x400") onclose(user, "secure_rec") return @@ -129,31 +192,28 @@ What a mess.*/ rank = scan.assignment screen = 1 //RECORD FUNCTIONS - if("List Records") - screen = 2 - active1 = null - active2 = null - if("Search Records") - var/t1 = input("Search String: (Name or ID)", "Secure. records", null, null) as text + var/t1 = input("Search String: (Partial Name or ID or Fingerprints)", "Secure. records", null, null) as text if ((!( t1 ) || usr.stat || !( authenticated ) || usr.restrained() || !in_range(src, usr))) return - active1 = null - active2 = null + Perp = new/list() t1 = lowertext(t1) for(var/datum/data/record/R in data_core.general) - if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]))) - active1 = R - if (!( active1 )) - temp = text("Could not locate record [].", t1) - else + var/temptext = R.fields["name"] + " " + R.fields["id"] + " " + R.fields["fingerprint"] + if(findtext(temptext,t1)) + var/prelist = new/list(2) + prelist[1] = R + Perp += prelist + for(var/i = 1, i<=Perp.len, i+=2) for(var/datum/data/record/E in data_core.security) - if ((E.fields["name"] == active1.fields["name"] || E.fields["id"] == active1.fields["id"])) - active2 = E - screen = 4 + var/datum/data/record/R = Perp[i] + if ((E.fields["name"] == R.fields["name"] && E.fields["id"] == R.fields["id"])) + Perp[i+1] = E + tempname = t1 + screen = 4 if("Record Maintenance") - screen = 3 + screen = 2 active1 = null active2 = null @@ -168,9 +228,9 @@ What a mess.*/ S = E active1 = R active2 = S - screen = 4 + 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)))) return @@ -186,7 +246,7 @@ What a mess.*/ for(var/datum/data/record/E in data_core.security) if ((E.fields["name"] == active1.fields["name"] || E.fields["id"] == active1.fields["id"])) active2 = E - screen = 4 + screen = 3 */ if ("Print Record") if (!( printing )) @@ -263,7 +323,7 @@ What a mess.*/ R.fields["notes"] = "No notes." data_core.security += R active2 = R - screen = 4 + screen = 3 if ("New Record (General)") var/datum/data/record/G = new /datum/data/record() @@ -278,6 +338,7 @@ What a mess.*/ data_core.general += G active1 = G active2 = null + //FIELD FUNCTIONS if ("Edit Field") var/a1 = active1 diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 14b0794bf6a..869a99142e8 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -122,7 +122,7 @@ for(var/mob/living/carbon/M in ohearers(6, chassis)) if(istype(M, /mob/living/carbon/human)) var/mob/living/carbon/human/H = M - if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) + if(istype(H.l_ear, /obj/item/clothing/ears/earmuffs) || istype(H.r_ear, /obj/item/clothing/ears/earmuffs)) continue M << "HONK" if(!M.sleeping_willingly) diff --git a/code/game/objects/closets/gmcloset.dm b/code/game/objects/closets/gmcloset.dm index 3f3aadd70be..a4f286ba915 100644 --- a/code/game/objects/closets/gmcloset.dm +++ b/code/game/objects/closets/gmcloset.dm @@ -7,7 +7,7 @@ new /obj/item/clothing/under/sl_suit(src) new /obj/item/clothing/under/rank/bartender(src) new /obj/item/clothing/under/rank/bartender(src) - new /obj/item/clothing/suit/wcoat(src) - new /obj/item/clothing/suit/wcoat(src) + new /obj/item/clothing/suit/storage/wcoat(src) + new /obj/item/clothing/suit/storage/wcoat(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/shoes/black(src) diff --git a/code/game/objects/closets/secure/medical.dm b/code/game/objects/closets/secure/medical.dm index 1bf9f9bd9a0..43fa5f4616b 100644 --- a/code/game/objects/closets/secure/medical.dm +++ b/code/game/objects/closets/secure/medical.dm @@ -63,7 +63,7 @@ new /obj/item/clothing/under/rank/nursesuit (src) new /obj/item/clothing/head/nursehat (src) new /obj/item/clothing/under/rank/medical(src) - new /obj/item/clothing/suit/labcoat(src) + new /obj/item/clothing/suit/storage/labcoat(src) new /obj/item/clothing/shoes/white(src) new /obj/item/device/radio/headset/headset_med(src) new /obj/item/weapon/storage/belt/medical(src) @@ -82,7 +82,7 @@ new /obj/item/clothing/suit/bio_suit/cmo(src) new /obj/item/clothing/head/bio_hood/general(src) new /obj/item/clothing/under/rank/chief_medical_officer(src) - new /obj/item/clothing/suit/labcoat/cmo(src) + new /obj/item/clothing/suit/storage/labcoat/cmo(src) new /obj/item/clothing/gloves/latex(src) new /obj/item/clothing/shoes/brown (src) new /obj/item/device/radio/headset/heads/cmo(src) diff --git a/code/game/objects/closets/secure/scientist.dm b/code/game/objects/closets/secure/scientist.dm index 7e959155243..52461d4ccac 100644 --- a/code/game/objects/closets/secure/scientist.dm +++ b/code/game/objects/closets/secure/scientist.dm @@ -7,7 +7,7 @@ ..() sleep(2) new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/suit/labcoat(src) + new /obj/item/clothing/suit/storage/labcoat(src) new /obj/item/clothing/shoes/white(src) new /obj/item/device/radio/headset/headset_sci(src) new /obj/item/weapon/tank/air(src) @@ -27,7 +27,7 @@ new /obj/item/clothing/suit/bio_suit/scientist(src) new /obj/item/clothing/head/bio_hood/scientist(src) new /obj/item/clothing/under/rank/research_director(src) - new /obj/item/clothing/suit/labcoat(src) + new /obj/item/clothing/suit/storage/labcoat(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/gloves/latex(src) new /obj/item/device/radio/headset/heads/rd(src) diff --git a/code/game/objects/closets/secure/security.dm b/code/game/objects/closets/secure/security.dm index fc5d24bdeff..0f88397d045 100644 --- a/code/game/objects/closets/secure/security.dm +++ b/code/game/objects/closets/secure/security.dm @@ -6,7 +6,7 @@ New() ..() sleep(2) - new /obj/item/clothing/suit/captunic(src) + new /obj/item/clothing/suit/storage/captunic(src) new /obj/item/clothing/head/helmet/cap(src) new /obj/item/clothing/under/rank/captain(src) new /obj/item/clothing/suit/armor/vest(src) @@ -76,7 +76,9 @@ sleep(2) new /obj/item/clothing/under/rank/warden(src) new /obj/item/clothing/suit/armor/vest(src) + new /obj/item/clothing/suit/storage/gearharness(src) new /obj/item/clothing/head/helmet/warden(src) + new /obj/item/clothing/gloves/red(src) new /obj/item/device/radio/headset/headset_sec(src) new /obj/item/weapon/storage/flashbang_kit(src) new /obj/item/weapon/storage/belt/security(src) @@ -96,7 +98,9 @@ ..() sleep(2) new /obj/item/clothing/suit/armor/vest(src) + new /obj/item/clothing/suit/storage/gearharness(src) new /obj/item/clothing/head/helmet(src) + new /obj/item/clothing/gloves/red(src) new /obj/item/device/radio/headset/headset_sec(src) new /obj/item/weapon/storage/belt/security(src) new /obj/item/weapon/flashbang(src) @@ -125,7 +129,7 @@ sleep(2) new /obj/item/clothing/under/det(src) new /obj/item/clothing/suit/det_suit/armor(src) - new /obj/item/clothing/suit/det_suit(src) + new /obj/item/clothing/suit/storage/det_suit(src) new /obj/item/clothing/gloves/black(src) new /obj/item/clothing/head/det_hat(src) new /obj/item/clothing/shoes/brown(src) @@ -135,6 +139,7 @@ new /obj/item/weapon/clipboard(src) new /obj/item/device/detective_scanner(src) new /obj/item/weapon/pepperspray/small(src) + new /obj/item/weapon/storage/box/evidence(src) return diff --git a/code/game/objects/closets/wardrobe.dm b/code/game/objects/closets/wardrobe.dm index eaded55bf1d..199733359a4 100644 --- a/code/game/objects/closets/wardrobe.dm +++ b/code/game/objects/closets/wardrobe.dm @@ -48,7 +48,7 @@ new /obj/item/clothing/under/rank/chaplain(src) new /obj/item/clothing/shoes/black(src) new /obj/item/clothing/suit/nun(src) - new /obj/item/clothing/suit/chaplain_hoodie(src) + new /obj/item/clothing/suit/storage/chaplain_hoodie(src) new /obj/item/clothing/head/chaplain_hood(src) new /obj/item/clothing/suit/holidaypriest(src) new /obj/item/clothing/suit/hastur (src) @@ -116,9 +116,9 @@ new /obj/item/clothing/under/rank/scientist(src) new /obj/item/clothing/under/rank/scientist(src) new /obj/item/clothing/under/rank/scientist(src) - new /obj/item/clothing/suit/labcoat(src) - new /obj/item/clothing/suit/labcoat(src) - new /obj/item/clothing/suit/labcoat(src) + new /obj/item/clothing/suit/storage/labcoat(src) + new /obj/item/clothing/suit/storage/labcoat(src) + new /obj/item/clothing/suit/storage/labcoat(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src) @@ -133,9 +133,9 @@ new /obj/item/clothing/shoes/white(src) new /obj/item/clothing/shoes/white(src) new /obj/item/weapon/storage/stma_kit(src) - new /obj/item/clothing/suit/labcoat(src) - new /obj/item/clothing/suit/labcoat(src) - new /obj/item/clothing/suit/labcoat(src) + new /obj/item/clothing/suit/storage/labcoat(src) + new /obj/item/clothing/suit/storage/labcoat(src) + new /obj/item/clothing/suit/storage/labcoat(src) return /obj/structure/closet/wardrobe/grey/New() diff --git a/code/game/objects/effect_system.dm b/code/game/objects/effect_system.dm index 3e46dde648a..677e26b9612 100644 --- a/code/game/objects/effect_system.dm +++ b/code/game/objects/effect_system.dm @@ -618,7 +618,7 @@ steam.start() -- spawns the effect /obj/effect/effect/mustard_gas/Move() ..() for(var/mob/living/carbon/human/R in get_turf(src)) - if (R.internal != null && usr.wear_mask && (R.wear_mask.flags & MASKINTERNALS) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor))) + if (R.internal != null && usr.wear_mask && (R.wear_mask.flags & MASKINTERNALS) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/storage/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor))) else R.burn_skin(0.75) if (R.coughedtime != 1) @@ -632,7 +632,7 @@ steam.start() -- spawns the effect /obj/effect/effect/mustard_gas/HasEntered(mob/living/carbon/human/R as mob ) ..() if (istype(R, /mob/living/carbon/human)) - if (R.internal != null && usr.wear_mask && (R.wear_mask.flags & MASKINTERNALS) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor))) + if (R.internal != null && usr.wear_mask && (R.wear_mask.flags & MASKINTERNALS) && R.wear_suit != null && !istype(R.wear_suit, /obj/item/clothing/suit/storage/labcoat) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket) && !istype(R.wear_suit, /obj/item/clothing/suit/straight_jacket && !istype(R.wear_suit, /obj/item/clothing/suit/armor))) return R.burn_skin(0.75) if (R.coughedtime != 1) diff --git a/code/game/objects/items/clothing.dm b/code/game/objects/items/clothing.dm index ca6f4b16159..fa6b407f8e8 100644 --- a/code/game/objects/items/clothing.dm +++ b/code/game/objects/items/clothing.dm @@ -302,7 +302,7 @@ THERMAL GLASSES else usr << "Sorry! The suit you're wearing doesn't have buttons!" -/obj/item/clothing/suit/labcoat/verb/toggle() +/obj/item/clothing/suit/storage/labcoat/verb/toggle() set name = "Toggle Labcoat Buttons" set category = "Object" if(src.icon_state == "labcoat_open") diff --git a/code/game/objects/items/weapons/evidence.dm b/code/game/objects/items/weapons/evidence.dm new file mode 100644 index 00000000000..cdd4a661ece --- /dev/null +++ b/code/game/objects/items/weapons/evidence.dm @@ -0,0 +1,54 @@ +//CONTAINS: +//Evidence bags and stuff +/////////// +//Shamelessly ripped from Mini's old code. + +/obj/item/weapon/evidencebag + name = "evidence bag" + desc = "An empty evidence bag." + icon = 'storage.dmi' + icon_state = "evidenceobj" + +/* buggy and stuff +/obj/item/weapon/evidencebag/attackby(obj/item/weapon/O, mob/user as mob) + return src.afterattack(O, user) +*/ + +/obj/item/weapon/evidencebag/afterattack(obj/item/O, mob/user as mob) + +//Now you can put it into a briefcase, if it is in your hand. Otherwise, if it is evidence on the ground, it picks it up. + if(istype(O, /obj/item/weapon/storage) && O in user) + user << "You put the evidence bag into the [O]." + return ..() + if(!(O && istype(O)) || O.anchored == 1) + user << "You can't put that inside the [src]!" + return ..() + if(src.contents.len > 0) + user << "The [src] already has something inside it." + return ..() + user << "You put the [O] inside the [src]." + O.loc = src + icon_state = "evidence" + src.underlays += O + desc = "An evidence bag containing \a [O]. [O.desc]" + +/obj/item/weapon/evidencebag/attack_self(mob/user as mob) + var/obj/item/I = src.contents[1] + user << "You take the [I] out of the [src]." + I.loc = user.loc + src.underlays -= I + icon_state = "evidenceobj" + +/obj/item/weapon/storage/box/evidence + name = "evidence bag box" + desc = "A box claiming to contain evidence bags." + New() + new /obj/item/weapon/evidencebag(src) + new /obj/item/weapon/evidencebag(src) + new /obj/item/weapon/evidencebag(src) + new /obj/item/weapon/evidencebag(src) + new /obj/item/weapon/evidencebag(src) + new /obj/item/weapon/evidencebag(src) + new /obj/item/weapon/evidencebag(src) + ..() + return \ No newline at end of file diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades.dm index afbdc688913..38402a2366f 100644 --- a/code/game/objects/items/weapons/grenades.dm +++ b/code/game/objects/items/weapons/grenades.dm @@ -161,7 +161,7 @@ FLASHBANG if(iscarbon(M)) eye_safety = M.eyecheck() if(ishuman(M)) - if(istype(M:ears, /obj/item/clothing/ears/earmuffs)) + if(istype(M:l_ear, /obj/item/clothing/ears/earmuffs) || istype(M:r_ear, /obj/item/clothing/ears/earmuffs)) ear_safety += 2 if(M.mutations & HULK) ear_safety += 1 diff --git a/code/game/objects/storage/coat.dm b/code/game/objects/storage/coat.dm new file mode 100644 index 00000000000..4fd6ec8ebc6 --- /dev/null +++ b/code/game/objects/storage/coat.dm @@ -0,0 +1,215 @@ + +/obj/item/clothing/suit/storage/ + var/obj/screen/storage/boxes + var/obj/screen/close/closer + var/obj/slot1 + var/obj/slot2 + +/obj/item/clothing/suit/storage/New() + src.boxes = new /obj/screen/storage( ) + src.boxes.name = "storage" + src.boxes.master = src + src.boxes.icon_state = "block" + src.boxes.screen_loc = "7,7 to 9,7" + src.boxes.layer = 19 + src.closer = new /obj/screen/close( ) + src.closer.master = src + src.closer.icon_state = "x" + src.closer.layer = 20 + src.closer.screen_loc = "9,7" + +/obj/item/clothing/suit/storage/proc/view_inv(mob/user as mob) + if(!user) + return + user.client.screen += src.boxes + user.client.screen += src.closer + user.client.screen += src.contents + var/xs = 7 + var/ys = 7 + for(var/obj/O in src.contents) + O.screen_loc = "[xs],[ys]" + O.layer = 20 + xs++ + +/obj/item/clothing/suit/storage/proc/close(mob/user as mob) + if(!user) + return + user.s_active = src + user.client.screen -= src.boxes + user.client.screen -= src.closer + user.client.screen -= src.contents + +/obj/item/clothing/suit/storage/MouseDrop(atom/A) + if(istype(A,/mob/living/carbon)) + src.view_inv(A) + +/obj/item/clothing/suit/storage/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(W.w_class > 2 || src.loc == W ) + return + if(src.contents.len >= 2) + user << "You have nowhere to place that" + return + user.u_equip(W) + W.loc = src + if ((user.client && user.s_active != src)) + user.client.screen -= W + else if(user.s_active == src) + close(user) + view_inv(user) + W.dropped(user) +/*/obj/item/clothing/suit/storage/New() + + src.boxes = new /obj/screen/storage( ) + src.boxes.name = "storage" + src.boxes.master = src + src.boxes.icon_state = "block" + src.boxes.screen_loc = "7,7 to 10,8" + src.boxes.layer = 19 + src.closer = new /obj/screen/close( ) + src.closer.master = src + src.closer.icon_state = "x" + src.closer.layer = 20 + spawn( 5 ) + src.orient_objs(7, 8, 10, 7) + return + return + +/obj/item/clothing/suit/storage/attackby(obj/item/weapon/W as obj, mob/user as mob) + + if(can_hold.len) + var/ok = 0 + for(var/A in can_hold) + if(istype(W, text2path(A) )) ok = 1 + if(!ok) + user << "\red This container cannot hold [W]." + return + + if (src.contents.len >= 7) + return + if ((W.w_class >= 3 || istype(W, /obj/item/weapon/storage) || src.loc == W)) + return + user.u_equip(W) + W.loc = src + if ((user.client && user.s_active != src)) + user.client.screen -= W + src.orient2hud(user) + W.dropped(user) + add_fingerprint(user) + if (istype(W, /obj/item/weapon/gun/energy/crossbow)) return //STEALTHY + for(var/mob/O in viewers(user, null)) + O.show_message(text("\blue [] has added [] to []!", user, W, src), 1) + //Foreach goto(139) + return + +/obj/item/clothing/suit/storage/dropped(mob/user as mob) + src.orient_objs(7, 8, 10, 7) + return + +/obj/item/clothing/suit/storage/MouseDrop(over_object, src_location, over_location) + ..() + if ((over_object == usr && (in_range(src, usr) || usr.contents.Find(src)))) + if (usr.s_active) + usr.s_active.close(usr) + src.show_to(usr) + return + +/obj/item/clothing/suit/storage/attack_paw(mob/user as mob) + playsound(src.loc, "rustle", 50, 1, -5) + return src.attack_hand(user) + return + +/obj/item/clothing/suit/storage/attack_hand(mob/user as mob) + playsound(src.loc, "rustle", 50, 1, -5) + if (src.loc == user) + if (user.s_active) + user.s_active.close(user) + src.show_to(user) + else + ..() + for(var/mob/M in range(1)) + if (M.s_active == src) + src.close(M) + //Foreach goto(76) + src.orient2hud(user) + src.add_fingerprint(user) + return + +/obj/item/clothing/suit/storage/proc/return_inv() + + var/list/L = list( ) + + L += src.contents + + for(var/obj/item/weapon/storage/S in src) + L += S.return_inv() + for(var/obj/item/weapon/gift/G in src) + L += G.gift + if (istype(G.gift, /obj/item/weapon/storage)) + L += G.gift:return_inv() + return L + +/obj/item/clothing/suit/storage/proc/show_to(mob/user as mob) + for(var/obj/item/weapon/mousetrap/MT in src) + if(MT.armed) + for(var/mob/O in viewers(user, null)) + if(O == user) + user.show_message(text("\red You reach into the [src.name], but there was a live mousetrap in there!"), 1) + else + user.show_message(text("\red [user] reaches into the [src.name] and sets off a hidden mousetrap!"), 1) + MT.loc = user.loc + MT.triggered(user, user.hand ? "l_hand" : "r_hand") + MT.layer = OBJ_LAYER + return + user.client.screen -= src.boxes + user.client.screen -= src.closer + user.client.screen -= src.contents + user.client.screen += src.boxes + user.client.screen += src.closer + user.client.screen += src.contents + user.s_active = src + return + +/obj/item/clothing/suit/storage/proc/hide_from(mob/user as mob) + + if(!user.client) + return + user.client.screen -= src.boxes + user.client.screen -= src.closer + user.client.screen -= src.contents + return + +/obj/item/clothing/suit/storage/proc/close(mob/user as mob) + + src.hide_from(user) + user.s_active = null + return + +/obj/item/weapon/storage/proc/orient_objs(tx, ty, mx, my) + + var/cx = tx + var/cy = ty + src.boxes.screen_loc = text("[],[] to [],[]", tx, ty, mx, my) + for(var/obj/O in src.contents) + O.screen_loc = text("[],[]", cx, cy) + O.layer = 20 + cx++ + if (cx > mx) + cx = tx + cy-- + //Foreach goto(56) + src.closer.screen_loc = text("[],[]", mx, my) + return + +/obj/item/weapon/storage/proc/orient2hud(mob/user as mob) + + if (src == user.l_hand) + src.orient_objs(3, 11, 3, 4) + else + if (src == user.r_hand) + src.orient_objs(1, 11, 1, 4) + else + if (src == user.back) + src.orient_objs(4, 10, 4, 3) + else + src.orient_objs(4, 10, 4, 3) + return*/ \ No newline at end of file diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 6d455d3f9fe..8effc5a1f28 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -427,7 +427,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_if_possible(new /obj/item/clothing/under/det(M), M.slot_w_uniform) M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes) - M.equip_if_possible(new /obj/item/clothing/suit/det_suit(M), M.slot_wear_suit) + M.equip_if_possible(new /obj/item/clothing/suit/storage/det_suit(M), M.slot_wear_suit) M.equip_if_possible(new /obj/item/clothing/glasses/thermal/monocle(M), M.slot_glasses) M.equip_if_possible(new /obj/item/clothing/head/det_hat(M), M.slot_head) @@ -438,7 +438,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that if ("tournament chef") //Steven Seagal FTW M.equip_if_possible(new /obj/item/clothing/under/rank/chef(M), M.slot_w_uniform) - M.equip_if_possible(new /obj/item/clothing/suit/chef(M), M.slot_wear_suit) + M.equip_if_possible(new /obj/item/clothing/suit/storage/chef(M), M.slot_wear_suit) M.equip_if_possible(new /obj/item/clothing/shoes/black(M), M.slot_shoes) M.equip_if_possible(new /obj/item/clothing/head/chefhat(M), M.slot_head) @@ -501,7 +501,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_if_possible(new /obj/item/clothing/head/chaplain_hood(M), M.slot_head) M.equip_if_possible(new /obj/item/device/radio/headset(M), M.slot_ears) M.equip_if_possible(new /obj/item/clothing/glasses/thermal/monocle(M), M.slot_glasses) - M.equip_if_possible(new /obj/item/clothing/suit/chaplain_hoodie(M), M.slot_wear_suit) + M.equip_if_possible(new /obj/item/clothing/suit/storage/chaplain_hoodie(M), M.slot_wear_suit) M.equip_if_possible(new /obj/item/weapon/reagent_containers/food/snacks/grown/banana(M), M.slot_l_store) M.equip_if_possible(new /obj/item/weapon/bikehorn(M), M.slot_r_store) @@ -524,7 +524,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_if_possible(new /obj/item/clothing/head/helmet/welding(M), M.slot_head) M.equip_if_possible(new /obj/item/device/radio/headset(M), M.slot_ears) M.equip_if_possible(new /obj/item/clothing/glasses/thermal/monocle(M), M.slot_glasses) - M.equip_if_possible(new /obj/item/clothing/suit/apron(M), M.slot_wear_suit) + M.equip_if_possible(new /obj/item/clothing/suit/storage/apron(M), M.slot_wear_suit) M.equip_if_possible(new /obj/item/weapon/kitchenknife(M), M.slot_l_store) M.equip_if_possible(new /obj/item/weapon/scalpel(M), M.slot_r_store) @@ -542,7 +542,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that M.equip_if_possible(new /obj/item/clothing/gloves/black(M), M.slot_gloves) M.equip_if_possible(new /obj/item/device/radio/headset(M), M.slot_ears) M.equip_if_possible(new /obj/item/clothing/glasses/sunglasses(M), M.slot_glasses) - M.equip_if_possible(new /obj/item/clothing/suit/wcoat(M), M.slot_wear_suit) + M.equip_if_possible(new /obj/item/clothing/suit/storage/wcoat(M), M.slot_wear_suit) M.equip_if_possible(new /obj/item/weapon/melee/energy/sword(M), M.slot_l_store) M.equip_if_possible(new /obj/item/weapon/cloaking_device(M), M.slot_r_store) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 57c7c756e9b..59b311bfa84 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -55,6 +55,21 @@ item_state = "armor_reflec" armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0) +/obj/item/clothing/suit/storage/gearharness + name = "gear harness" + desc = "A simple security harness, used for storing small objects" + icon_state = "gearharness" + item_state = "gearharness" + body_parts_covered = UPPER_TORSO|LOWER_TORSO + flags = FPRINT | TABLEPASS | ONESIZEFITSALL + +/obj/item/clothing/suit/storage/armourrigvest + name = "armour rig vest" + desc = "An important looking armoured vest, outfitted with pockets." + icon_state = "armourrigvest" + item_state = "armourrigvest" + body_parts_covered = UPPER_TORSO|LOWER_TORSO + flags = FPRINT | TABLEPASS | ONESIZEFITSALL diff --git a/code/modules/clothing/suits/detective.dm b/code/modules/clothing/suits/detective.dm index a904edbb958..bceefa513b7 100644 --- a/code/modules/clothing/suits/detective.dm +++ b/code/modules/clothing/suits/detective.dm @@ -6,7 +6,7 @@ armor = list(melee = 50, bullet = 5, laser = 25,energy = 10, bomb = 0, bio = 0, rad = 0) -/obj/item/clothing/suit/det_suit +/obj/item/clothing/suit/storage/det_suit name = "coat" desc = "An 18th-century multi-purpose trenchcoat. Someone who wears this means serious business." icon_state = "detective" diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index 3b4923ceba7..111d74e0644 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -1,5 +1,5 @@ -/obj/item/clothing/suit/labcoat +/obj/item/clothing/suit/storage/labcoat name = "labcoat" desc = "A suit that protects against minor chemical spills." icon_state = "labcoat_open" @@ -10,34 +10,34 @@ allowed = list(/obj/item/device/analyzer,/obj/item/stack/medical,/obj/item/weapon/dnainjector,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/hypospray,/obj/item/device/healthanalyzer,/obj/item/device/flashlight/pen) armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 50, rad = 0) -/obj/item/clothing/suit/labcoat/cmo +/obj/item/clothing/suit/storage/labcoat/cmo name = "chief medical officer's labcoat" desc = "Bluer than the standard model." icon_state = "labcoat_cmo_open" item_state = "labcoat_cmo" -/obj/item/clothing/suit/labcoat/mad +/obj/item/clothing/suit/storage/labcoat/mad name = "The Mad's labcoat" desc = "It makes you look capable of konking someone on the noggin and shooting them into space." icon_state = "labgreen_open" item_state = "labgreen" -/obj/item/clothing/suit/labcoat/genetics +/obj/item/clothing/suit/storage/labcoat/genetics name = "Geneticist Labcoat" desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder." icon_state = "labcoat_gen_open" -/obj/item/clothing/suit/labcoat/chemist +/obj/item/clothing/suit/storage/labcoat/chemist name = "Chemist Labcoat" desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder." icon_state = "labcoat_chem_open" -/obj/item/clothing/suit/labcoat/virologist +/obj/item/clothing/suit/storage/labcoat/virologist name = "Virologist Labcoat" desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder." icon_state = "labcoat_vir_open" -/obj/item/clothing/suit/labcoat/science +/obj/item/clothing/suit/storage/labcoat/science name = "Scientist Labcoat" desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder." icon_state = "labcoat_tox_open" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 766b6fd65b9..547c57d1997 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -6,7 +6,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS -/obj/item/clothing/suit/wcoat +/obj/item/clothing/suit/storage/wcoat name = "waistcoat" desc = "For some classy, murderous fun." icon_state = "vest" @@ -14,18 +14,18 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS -/obj/item/clothing/suit/apron +/obj/item/clothing/suit/storage/apron name = "apron" - desc = "A basic blue apron." + desc = "A basic blue apron. It has a large pocket you can store things in." icon_state = "apron" item_state = "apron" body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS allowed = list (/obj/item/weapon/plantbgone,/obj/item/device/analyzer/plant_analyzer,/obj/item/seeds,/obj/item/nutrient,/obj/item/weapon/minihoe) -/obj/item/clothing/suit/chef +/obj/item/clothing/suit/storage/chef name = "Chef's apron" - desc = "An apron used by a high class chef." + desc = "An apron used by a high class chef. Has a few pockets for nic-naks." icon_state = "chef" item_state = "chef" gas_transfer_coefficient = 0.90 @@ -36,7 +36,7 @@ allowed = list (/obj/item/weapon/kitchenknife,/obj/item/weapon/butch) -/obj/item/clothing/suit/chef/classic +/obj/item/clothing/suit/storage/chef/classic name = "A classic chef's apron." desc = "A basic, dull, white chef's apron." icon_state = "apronchef" @@ -68,7 +68,7 @@ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/toy) -/obj/item/clothing/suit/captunic +/obj/item/clothing/suit/storage/captunic name = "captain's parade tunic" desc = "Worn by a Captain to show their class." icon_state = "captunic" @@ -84,7 +84,7 @@ body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS -/obj/item/clothing/suit/chaplain_hoodie +/obj/item/clothing/suit/storage/chaplain_hoodie name = "chaplain hoodie" desc = "This suit says to you 'hush'!" icon_state = "chaplain_hoodie" diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 0501f148595..06f9fa3b394 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -30,8 +30,11 @@ else usr << "\blue [src.name] has a \icon[src.wear_suit] [src.wear_suit.name] on." - if (src.ears) - usr << "\blue [src.name] has a \icon[src.ears] [src.ears.name] by [t_his] mouth." + if (src.l_ear) + usr << "\blue [src.name] has a \icon[src.l_ear] [src.l_ear.name] by [t_his] mouth." + + if (src.r_ear) + usr << "\blue [src.name] has a \icon[src.r_ear] [src.r_ear.name] by [t_his] mouth." if (src.wear_mask) if (src.wear_mask.blood_DNA) diff --git a/code/modules/mob/living/carbon/human/hud.dm b/code/modules/mob/living/carbon/human/hud.dm index 1cafa5e6043..632220c09bb 100644 --- a/code/modules/mob/living/carbon/human/hud.dm +++ b/code/modules/mob/living/carbon/human/hud.dm @@ -271,10 +271,20 @@ src.other += using using = new src.h_type( src ) - using.name = "ears" + using.name = "l_ear" + using.dir = EAST using.icon = ui_style using.icon_state = "ears" - using.screen_loc = ui_ears + using.screen_loc = ui_lear + using.layer = 19 + src.other += using + + using = new src.h_type( src ) + using.name = "r_ear" + using.dir = WEST + using.icon = ui_style + using.icon_state = "ears" + using.screen_loc = ui_rear using.layer = 19 src.other += using diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3a9274450bd..0fa6fbb9eae 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -30,7 +30,8 @@ var/obj/item/clothing/gloves/gloves = null var/obj/item/clothing/glasses/glasses = null var/obj/item/clothing/head/head = null - var/obj/item/clothing/ears/ears = null + var/obj/item/clothing/ears/l_ear = null + var/obj/item/clothing/ears/r_ear = null var/obj/item/weapon/card/id/wear_id = null var/obj/item/weapon/r_store = null var/obj/item/weapon/l_store = null @@ -252,7 +253,7 @@ b_loss = b_loss/1.5 f_loss = f_loss/1.5 - if (!istype(ears, /obj/item/clothing/ears/earmuffs)) + if (!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) ear_damage += 30 ear_deaf += 120 @@ -260,7 +261,7 @@ b_loss += 30 if (!prob(getarmor(null, "bomb"))) b_loss = b_loss/2 - if (!istype(ears, /obj/item/clothing/ears/earmuffs)) + if (!istype(l_ear, /obj/item/clothing/ears/earmuffs) && !istype(r_ear, /obj/item/clothing/ears/earmuffs)) ear_damage += 15 ear_deaf += 60 if (prob(50) && !shielded) @@ -363,8 +364,10 @@ del(face_standing) del(face_lying) - else if (W == ears) - ears = null + else if (W == l_ear) + l_ear = null + else if (W == r_ear) + r_ear = null else if (W == shoes) shoes = null else if (W == belt) @@ -523,15 +526,41 @@ if(istype(W,/obj/item/clothing/head/kitty)) W.update_icon(src) W.equipped(src, text) - if("ears") - if (ears) + if("l_ear") + if (l_ear) if (emptyHand) - ears.DblClick() + l_ear.DblClick() return - if (!( istype(W, /obj/item/clothing/ears) ) && !( istype(W, /obj/item/device/radio/headset) )) + else if(emptyHand) + return + if (!( istype(W, /obj/item/clothing/ears) ) && !( istype(W, /obj/item/device/radio/headset) ) && W.w_class != 1) + return + if(istype(W,/obj/item/clothing/ears) && W:twoeared && r_ear) return u_equip(W) - ears = W + l_ear = W + if(istype(W,/obj/item/clothing/ears) && W:twoeared) + var/obj/item/clothing/ears/offear/O = new(W) + O.loc = src + equip_if_possible(O, slot_ears) + W.equipped(src, text) + if("r_ear") + if (r_ear) + if (emptyHand) + r_ear.DblClick() + return + else if(emptyHand) + return + if (!( istype(W, /obj/item/clothing/ears) ) && !( istype(W, /obj/item/device/radio/headset) ) && W.w_class != 1) + return + if(istype(W,/obj/item/clothing/ears) && W:twoeared && l_ear) + return + u_equip(W) + r_ear = W + if(istype(W,/obj/item/clothing/ears) && W:twoeared) + var/obj/item/clothing/ears/offear/O = new(W) + O.loc = src + equip_if_possible(O, slot_ears) W.equipped(src, text) if("i_clothing") if (w_uniform) @@ -865,8 +894,11 @@ var/t1 = glasses.icon_state overlays += image("icon" = 'eyes.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) // Ears - if (ears) - var/t1 = ears.icon_state + if (l_ear) + var/t1 = l_ear.icon_state + overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) + if (r_ear) + var/t1 = r_ear.icon_state overlays += image("icon" = 'ears.dmi', "icon_state" = text("[][]", t1, (!( lying ) ? null : "2")), "layer" = MOB_LAYER) // Shoes if (shoes) @@ -928,9 +960,9 @@ if (wear_suit) 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)) + if (istype(wear_suit, /obj/item/clothing/suit/armor/vest || /obj/item/clothing/suit/storage/wcoat)) stain_icon = icon('blood.dmi', "armorblood[!lying ? "" : "2"]") - else if (istype(wear_suit, /obj/item/clothing/suit/det_suit || /obj/item/clothing/suit/labcoat)) + else if (istype(wear_suit, /obj/item/clothing/suit/storage/det_suit || /obj/item/clothing/suit/storage/labcoat)) stain_icon = icon('blood.dmi', "coatblood[!lying ? "" : "2"]") else stain_icon = icon('blood.dmi', "suitblood[!lying ? "" : "2"]") @@ -1413,11 +1445,16 @@ message = text("\red [] fails to take off \a [] from []'s body!", source, target.glasses, target) else message = text("\red [] is trying to take off the [] from []'s eyes!", source, target.glasses, target) - if("ears") - if(istype(target.ears, /obj/item/clothing)&&!target.ears:canremove) - message = text("\red [] fails to take off \a [] from []'s body!", source, target.ears, target) + if("l_ear") + if(istype(target.l_ear, /obj/item/clothing)&&!target.l_ear:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.l_ear, target) else - message = text("\red [] is trying to take off the [] from []'s ears!", source, target.ears, target) + message = text("\red [] is trying to take off the [] from []'s left ear!", source, target.l_ear, target) + if("r_ear") + if(istype(target.r_ear, /obj/item/clothing)&&!target.r_ear:canremove) + message = text("\red [] fails to take off \a [] from []'s body!", source, target.r_ear, target) + else + message = text("\red [] is trying to take off the [] from []'s right ear!", source, target.r_ear, target) if("head") if(istype(target.head, /obj/item/clothing)&&!target.head:canremove) message = text("\red [] fails to take off \a [] from []'s body!", source, target.head, target) @@ -1643,12 +1680,19 @@ It can still be worn/put on as normal. item.layer = 20 target.head = item item.loc = target - if("ears") - if (target.ears) - if(istype(target.ears, /obj/item/clothing)&& !target.ears:canremove) + if("l_ear") + if (target.l_ear) + if(istype(target.l_ear, /obj/item/clothing)&& !target.l_ear:canremove) return - var/obj/item/W = target.ears + var/obj/item/W = target.l_ear target.u_equip(W) + + if(istype(W,/obj/item/clothing/ears/offear)) + W = target.r_ear + if(istype(W, /obj/item/clothing/ears) && W:twoeared) + if (target.client) + target.client.screen -= target.r_ear + target.u_equip(target.r_ear) if (target.client) target.client.screen -= W if (W) @@ -1657,18 +1701,53 @@ It can still be worn/put on as normal. W.layer = initial(W.layer) W.add_fingerprint(source) else - if (istype(item, /obj/item/clothing/ears)) + if (istype(item, /obj/item/clothing/ears) || istype(item, /obj/item/device/radio/headset) || item.w_class == 1) source.drop_item() - loc = target - item.layer = 20 - target.ears = item - item.loc = target - else if (istype(item, /obj/item/device/radio/headset)) + if(istype(item, /obj/item/clothing/ears) && item:twoeared && target.r_ear) + loc = target.loc + else + loc = target + item.layer = 20 + target.l_ear = item + item.loc = target + if(istype(item, /obj/item/clothing/ears) && item:twoeared) + var/obj/item/clothing/ears/offear/O = new(item) + O.loc = target + target.equip_if_possible(O, target.slot_ears) + if("r_ear") + if (target.r_ear) + if(istype(target.r_ear, /obj/item/clothing)&& !target.r_ear:canremove) + return + var/obj/item/W = target.r_ear + target.u_equip(W) + + if(istype(W,/obj/item/clothing/ears/offear)) + W = target.l_ear + if(istype(W, /obj/item/clothing/ears) && W:twoeared) + if (target.client) + target.client.screen -= target.r_ear + target.u_equip(target.l_ear) + if (target.client) + target.client.screen -= W + if (W) + W.loc = target.loc + W.dropped(target) + W.layer = initial(W.layer) + W.add_fingerprint(source) + else + if (istype(item, /obj/item/clothing/ears) || istype(item, /obj/item/device/radio/headset) || item.w_class == 1) source.drop_item() - loc = target - item.layer = 20 - target.ears = item - item.loc = target + if(istype(item, /obj/item/clothing/ears) && item:twoeared && target.r_ear) + loc = target.loc + else + loc = target + item.layer = 20 + target.r_ear = item + item.loc = target + if(istype(item, /obj/item/clothing/ears) && item:twoeared) + var/obj/item/clothing/ears/offear/O = new/obj/item/clothing/ears/offear(item) + O.loc = target + target.equip_if_possible(O, target.slot_ears) if("shoes") if (target.shoes) if(istype(target.shoes, /obj/item/clothing)&& !target.shoes:canremove) @@ -1975,7 +2054,8 @@ It can still be worn/put on as normal.
Right Hand: [(r_hand ? r_hand : "Nothing")]
Gloves: [(gloves ? gloves : "Nothing")]
Eyes: [(glasses ? glasses : "Nothing")] -
Ears: [(ears ? ears : "Nothing")] +
Left Ear: [(l_ear ? l_ear : "Nothing")] +
Right Ear: [(r_ear ? r_ear : "Nothing")]
Head: [(head ? head : "Nothing")]
Shoes: [(shoes ? shoes : "Nothing")]
Belt: [(belt ? belt : "Nothing")] @@ -2199,7 +2279,7 @@ It can still be worn/put on as normal. /mob/living/carbon/human/abiotic(var/full_body = 0) - if(full_body && ((src.l_hand && !( src.l_hand.abstract )) || (src.r_hand && !( src.r_hand.abstract )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.ears || src.gloves))) + if(full_body && ((src.l_hand && !( src.l_hand.abstract )) || (src.r_hand && !( src.r_hand.abstract )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.l_ear || src.r_ear || src.gloves))) return 1 if((src.l_hand && !( src.l_hand.abstract )) || (src.r_hand && !( src.r_hand.abstract ))) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 02e0c2785da..77ab230be5d 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -551,9 +551,12 @@ if(glasses) if(glasses.protective_temperature > temp) fire_prot += (glasses.protective_temperature/10) - if(ears) - if(ears.protective_temperature > temp) - fire_prot += (ears.protective_temperature/10) + if(l_ear) + if(l_ear.protective_temperature > temp) + fire_prot += (l_ear.protective_temperature/10) + if(r_ear) + if(r_ear.protective_temperature > temp) + fire_prot += (r_ear.protective_temperature/10) if(wear_suit) if(wear_suit.protective_temperature > temp) fire_prot += (wear_suit.protective_temperature/10) @@ -730,7 +733,7 @@ if ((sdisabilities & 1 || istype(glasses, /obj/item/clothing/glasses/blindfold))) blinded = 1 - if ((sdisabilities & 4 || istype(ears, /obj/item/clothing/ears/earmuffs))) + if ((sdisabilities & 4 || istype(l_ear, /obj/item/clothing/ears/earmuffs) || istype(r_ear, /obj/item/clothing/ears/earmuffs))) ear_deaf = 1 if (eye_blurry > 0) diff --git a/code/modules/mob/living/carbon/monkey/hud.dm b/code/modules/mob/living/carbon/monkey/hud.dm index 6ead2fd432b..645e93c2da7 100644 --- a/code/modules/mob/living/carbon/monkey/hud.dm +++ b/code/modules/mob/living/carbon/monkey/hud.dm @@ -248,10 +248,19 @@ src.other += using using = new src.h_type( src ) - using.name = "ears" + using.name = "left ear" using.icon = ui_style using.icon_state = "ears" - using.screen_loc = ui_ears + using.screen_loc = ui_lear + using.layer = 19 + using.overlays += blocked + src.other += using + + using = new src.h_type( src ) + using.name = "right ear" + using.icon = ui_style + using.icon_state = "ears" + using.screen_loc = ui_rear using.layer = 19 using.overlays += blocked src.other += using diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 4fbf6a1e051..72e10af6faa 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -3,8 +3,12 @@ if (issilicon(src)) return 1 if (!ishuman(src)) return var/mob/living/carbon/human/H = src - if (H.ears) - var/obj/item/device/radio/headset/dongle = H.ears + if (H.l_ear || H.r_ear) + var/obj/item/device/radio/headset/dongle + if(istype(H.l_ear,/obj/item/device/radio/headset)) + dongle = H.l_ear + else + dongle = H.r_ear if(!istype(dongle)) return if(dongle.translate_binary) return 1 @@ -12,8 +16,12 @@ if (isalien(src)) return 1 if (!ishuman(src)) return var/mob/living/carbon/human/H = src - if (H.ears) - var/obj/item/device/radio/headset/dongle = H.ears + if (H.l_ear || H.r_ear) + var/obj/item/device/radio/headset/dongle + if(istype(H.l_ear,/obj/item/device/radio/headset)) + dongle = H.l_ear + else + dongle = H.r_ear if(!istype(dongle)) return if(dongle.translate_hive) return 1 @@ -75,8 +83,8 @@ var/channel_prefix = copytext(message, 1, 3) var/list/keys = list( - ":r" = "right hand", - ":l" = "left hand", + ":r" = "right ear", + ":l" = "left ear", ":i" = "intercom", ":h" = "department", ":c" = "Command", @@ -156,33 +164,39 @@ switch (message_mode) if ("headset") - if (src:ears) - src:ears.talk_into(src, message) - used_radios += src:ears + if (src:l_ear && istype(src:l_ear,/obj/item/device/radio)) + src:l_ear.talk_into(src, message) + used_radios += src:l_ear + else if (src:r_ear) + src:r_ear.talk_into(src, message) + used_radios += src:r_ear message_range = 1 italics = 1 if ("secure headset") - if (src:ears) - src:ears.talk_into(src, message, 1) - used_radios += src:ears + if (src:l_ear && istype(src:l_ear,/obj/item/device/radio)) + src:l_ear.talk_into(src, message, 1) + used_radios += src:l_ear + else if (src:r_ear) + src:r_ear.talk_into(src, message, 1) + used_radios += src:r_ear message_range = 1 italics = 1 - if ("right hand") - if (r_hand) - r_hand.talk_into(src, message) - used_radios += src:r_hand + if ("right ear") + if (src:r_ear) + src:r_ear.talk_into(src, message) + used_radios += src:r_ear message_range = 1 italics = 1 - if ("left hand") - if (l_hand) - l_hand.talk_into(src, message) - used_radios += src:l_hand + if ("left ear") + if (src:l_ear) + src:l_ear.talk_into(src, message) + used_radios += src:l_ear message_range = 1 italics = 1 @@ -213,9 +227,12 @@ return if ("department") - if (src:ears) - src:ears.talk_into(src, message, message_mode) - used_radios += src:ears + if (src:l_ear && istype(src:l_ear,/obj/item/device/radio)) + src:l_ear.talk_into(src, message, message_mode) + used_radios += src:l_ear + else if (src:r_ear) + src:r_ear.talk_into(src, message, message_mode) + used_radios += src:r_ear message_range = 1 italics = 1 if ("pAI") @@ -234,9 +251,12 @@ else //world << "SPECIAL HEADSETS" if (message_mode in radiochannels) - if (src:ears) - src:ears.talk_into(src, message, message_mode) - used_radios += src:ears + if (src:l_ear && istype(src:l_ear,/obj/item/device/radio)) + src:l_ear.talk_into(src, message, message_mode) + used_radios += src:l_ear + else if (src:r_ear) + src:r_ear.talk_into(src, message, message_mode) + used_radios += src:r_ear message_range = 1 italics = 1 /////SPECIAL HEADSETS END diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index fa41cdc8bb5..745c6d8f2d7 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -809,6 +809,8 @@ else gibs(loc, viruses) sleep(15) + for(var/obj/item/I in src.contents) + I.loc = get_turf(src) del(src) /* @@ -844,6 +846,8 @@ Dusting robots does not eject the MMI, so it's a bit more powerful than gib() /N sleep(15) if(isrobot(src)&&src:mmi)//Is a robot and it has an mmi. del(src:mmi)//Delete the MMI first so that it won't go popping out. + for(var/obj/item/I in src.contents) + I.loc = get_turf(src) del(src) /* diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm index 4a80978d786..ee4ed93f46d 100644 --- a/code/modules/projectiles/guns/projectile/revolver.dm +++ b/code/modules/projectiles/guns/projectile/revolver.dm @@ -9,7 +9,7 @@ special_check(var/mob/living/carbon/human/M) /* if(ishuman(M)) - if(istype(M.w_uniform, /obj/item/clothing/under/det) && istype(M.head, /obj/item/clothing/head/det_hat) && istype(M.wear_suit, /obj/item/clothing/suit/det_suit)) + if(istype(M.w_uniform, /obj/item/clothing/under/det) && istype(M.head, /obj/item/clothing/head/det_hat) && istype(M.wear_suit, /obj/item/clothing/suit/storage/det_suit)) return 1 M << "\red You just don't feel cool enough to use this gun looking like that." return 0 */ diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi index c91a553540b..d631ff02ce2 100644 Binary files a/icons/mob/screen1.dmi and b/icons/mob/screen1.dmi differ diff --git a/icons/mob/screen1_alien.dmi b/icons/mob/screen1_alien.dmi index 900feb86025..188d9f16d0d 100644 Binary files a/icons/mob/screen1_alien.dmi and b/icons/mob/screen1_alien.dmi differ diff --git a/icons/mob/screen1_old.dmi b/icons/mob/screen1_old.dmi index ae9ed11ff79..1918ebce9fe 100644 Binary files a/icons/mob/screen1_old.dmi and b/icons/mob/screen1_old.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 7e49957f9f1..09bf6b65599 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index abead579d61..9ae49fadf1f 100644 Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 8a03e11c9d5..8791d7266f3 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm index 726b1420b8d..b8dcfc9e5be 100644 --- a/maps/tgstation.2.0.8.dmm +++ b/maps/tgstation.2.0.8.dmm @@ -6143,7 +6143,7 @@ "cog" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "coh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) "coi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome) -"coj" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/suit/wcoat,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) +"coj" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/suit/storage/wcoat,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding) "cok" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/holding) "col" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "floor"},/area/tdome) "com" = (/turf/unsimulated/floor{icon_state = "floor"},/area/tdome)