diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm
index 939b87aa7fb..f24d0ce2b85 100644
--- a/code/game/machinery/computer/ai_core.dm
+++ b/code/game/machinery/computer/ai_core.dm
@@ -117,7 +117,7 @@
laws.add_inherent_law(M.newFreeFormLaw)
usr << "Added a freeform law."
- if(istype(P, /obj/item/device/mmi) || istype(P, /obj/item/device/posibrain))
+ if(istype(P, /obj/item/device/mmi) || istype(P, /obj/item/device/mmi/posibrain))
if(!P:brainmob)
user << "\red Sticking an empty [P] into the frame would sort of defeat the purpose."
return
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 225318a9b86..d70512148c6 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -651,7 +651,7 @@
/obj/mecha/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/device/mmi) || istype(W, /obj/item/device/posibrain))
+ if(istype(W, /obj/item/device/mmi) || istype(W, /obj/item/device/mmi/posibrain))
if(mmi_move_inside(W,user))
user << "[src]-MMI interface initialized successfuly"
else
@@ -1136,7 +1136,7 @@
src.occupant.client.perspective = MOB_PERSPECTIVE
*/
src.occupant << browse(null, "window=exosuit")
- if(istype(mob_container, /obj/item/device/mmi) || istype(mob_container, /obj/item/device/posibrain))
+ if(istype(mob_container, /obj/item/device/mmi) || istype(mob_container, /obj/item/device/mmi/posibrain))
var/obj/item/device/mmi/mmi = mob_container
if(mmi.brainmob)
occupant.loc = mmi
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 62dfb126bf5..b4107855639 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -161,7 +161,7 @@
else
user << "\blue You need to attach a flash to it first!"
- if(istype(W, /obj/item/device/mmi) || istype(W, /obj/item/device/posibrain))
+ if(istype(W, /obj/item/device/mmi) || istype(W, /obj/item/device/mmi/posibrain))
var/obj/item/device/mmi/M = W
if(check_completion())
if(!istype(loc,/turf))
diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm
index c4697e63b6f..5b0be916c35 100644
--- a/code/game/objects/items/stacks/nanopaste.dm
+++ b/code/game/objects/items/stacks/nanopaste.dm
@@ -1,7 +1,7 @@
/obj/item/stack/nanopaste
name = "nanopaste"
singular_name = "nanite swarm"
- desc = "A tube of paste containing swarms of repair nanties. Very effective in repairing robotic machinery."
+ desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
icon = 'icons/obj/nanopaste.dmi'
icon_state = "tube"
origin_tech = "materials=4;engineering=3"
@@ -18,8 +18,8 @@
R.adjustFireLoss(-60)
R.updatehealth()
use(1)
- user.visible_message("You apply some [src] at [R]'s damaged areas.",\
- "\The [user] applied some [src] at [R]'s damaged areas.")
+ user.visible_message("\The [user] applied some [src] at [R]'s damaged areas.",\
+ "You apply some [src] at [R]'s damaged areas.")
else
user << "All [R]'s systems are nominal."
@@ -31,7 +31,7 @@
S.heal_damage(30, 30, robo_repair = 1)
H.updatehealth()
use(1)
- user.visible_message("You apply some nanite paste at [user == M ? "your" : "[M]'s"] [S.display_name]",\
- "\The [user] applies some nanite paste at[user != M ? " \the [M]'s" : " \the"][S.display_name] with \the [src]")
+ user.visible_message("\The [user] applies some nanite paste at[user != M ? " \the [M]'s" : " \the"][S.display_name] with \the [src].",\
+ "You apply some nanite paste at [user == M ? "your" : "[M]'s"] [S.display_name].")
else
user << "Nothing to fix here."
diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm
index fe3a0db56c5..8ed5860ecf8 100644
--- a/code/modules/mob/living/carbon/brain/posibrain.dm
+++ b/code/modules/mob/living/carbon/brain/posibrain.dm
@@ -1,4 +1,4 @@
-/obj/item/device/posibrain
+/obj/item/device/mmi/posibrain
name = "positronic brain"
desc = "A cube of shining metal, four inches to a side and covered in shallow grooves."
icon = 'icons/obj/assemblies.dmi'
@@ -6,14 +6,15 @@
w_class = 3
origin_tech = "engineering=4;materials=4;bluespace=2;programming=4"
- var/list/construction_cost = list("metal"=500,"glass"=500,"silver"=200,"gold"=200,"plasma"=100,"diamond"=10)
- var/construction_time = 75
+ construction_cost = list("metal"=500,"glass"=500,"silver"=200,"gold"=200,"plasma"=100,"diamond"=10)
+ construction_time = 75
var/searching = 0
var/askDelay = 10 * 60 * 1
- var/mob/living/carbon/brain/brainmob = null
+ mob/living/carbon/brain/brainmob = null
req_access = list(access_robotics)
- var/locked = 0
- var/obj/mecha = null//This does not appear to be used outside of reference in mecha.dm.
+ locked = 0
+ mecha = null//This does not appear to be used outside of reference in mecha.dm.
+
attack_self(mob/user as mob)
if(!brainmob.key && searching == 0)
@@ -73,7 +74,7 @@
for (var/mob/M in viewers(T))
M.show_message("\blue The positronic brain buzzes quietly, and the golden lights fade away. Perhaps you could try again?")
-/obj/item/device/posibrain/examine()
+/obj/item/device/mmi/posibrain/examine()
set src in oview()
@@ -97,20 +98,20 @@
usr << msg
return
-/obj/item/device/posibrain/emp_act(severity)
- if(!brainmob)
+/obj/item/device/mmi/posibrain/emp_act(severity)
+ if(!src.brainmob)
return
else
switch(severity)
if(1)
- brainmob.emp_damage += rand(20,30)
+ src.brainmob.emp_damage += rand(20,30)
if(2)
- brainmob.emp_damage += rand(10,20)
+ src.brainmob.emp_damage += rand(10,20)
if(3)
- brainmob.emp_damage += rand(0,10)
+ src.brainmob.emp_damage += rand(0,10)
..()
-/obj/item/device/posibrain/New()
+/obj/item/device/mmi/posibrain/New()
src.brainmob = new(src)
src.brainmob.name = "[pick(list("PBU","HIU","SINA","ARMA","OSI"))]-[rand(100, 999)]"
diff --git a/code/modules/mob/living/carbon/brain/say.dm b/code/modules/mob/living/carbon/brain/say.dm
index de169087b44..159f899f894 100644
--- a/code/modules/mob/living/carbon/brain/say.dm
+++ b/code/modules/mob/living/carbon/brain/say.dm
@@ -2,10 +2,10 @@
if (silent)
return
- if(!(container && (istype(container, /obj/item/device/mmi) || istype(container, /obj/item/device/posibrain))))
+ if(!(container && (istype(container, /obj/item/device/mmi) || istype(container, /obj/item/device/mmi/posibrain))))
return //No MMI, can't speak, bucko./N
else
- if ((copytext(message, 1, 3) == ":b") || (copytext(message, 1, 3) == ":B") && (container && istype(container, /obj/item/device/posibrain)))
+ if ((copytext(message, 1, 3) == ":b") || (copytext(message, 1, 3) == ":B") && (container && istype(container, /obj/item/device/mmi/posibrain)))
message = copytext(message, 3)
message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN))
robot_talk(message)
diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm
index b844ae784a9..42cb5038f39 100644
--- a/code/modules/mob/living/carbon/human/whisper.dm
+++ b/code/modules/mob/living/carbon/human/whisper.dm
@@ -140,5 +140,5 @@
for (var/mob/M in dead_mob_list)
if (!(M.client))
continue
- if (M.stat > 1 && !(M in heard_a))
+ if (M.stat > 1 && !(M in heard_a) && (M.client.prefs.toggles & CHAT_GHOSTEARS))
M.show_message(rendered, 2)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index b82f7b1d984..5415ba99003 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -194,7 +194,7 @@
/mob/living/silicon/robot/proc/updatename(var/prefix as text)
- if(istype(mmi, /obj/item/device/posibrain))
+ if(istype(mmi, /obj/item/device/mmi/posibrain))
braintype = "Android"
else
braintype = "Cyborg"
diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
index 86aeae28538..7a43f0a75e0 100644
--- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
+++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm
@@ -43,7 +43,7 @@
/mob/living/simple_animal/spiderbot/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if(istype(O, /obj/item/device/mmi) || istype(O, /obj/item/device/posibrain))
+ if(istype(O, /obj/item/device/mmi) || istype(O, /obj/item/device/mmi/posibrain))
var/obj/item/device/mmi/B = O
if(src.mmi) //There's already a brain in it.
user << "\red There's already a brain in [src]!"
@@ -315,11 +315,16 @@
var/obj/selection = input("Select an item.", "Pickup") in items
+ items.Cut()
if(selection)
- held_item = selection
- selection.loc = src
- visible_message("\blue [src] scoops up the [held_item]!", "\blue You grab the [held_item]!", "You hear a skittering noise and a clink.")
- return held_item
+ for(var/obj/item/I in view(1, src))
+ if(selection == I)
+ held_item = selection
+ selection.loc = src
+ visible_message("\blue [src] scoops up the [held_item]!", "\blue You grab the [held_item]!", "You hear a skittering noise and a clink.")
+ return held_item
+ else
+ src << "\red \The [selection] is too far away."
src << "\red There is nothing of interest to take."
return 0
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 6edc909cd8d..45cf1331e9e 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -158,7 +158,7 @@
update_icon()
if(mode == SYRINGE_BROKEN)
icon_state = "broken"
- overlays = null //dirty fix
+ overlays.Cut()
return
var/rounded_vol = round(reagents.total_volume,5)
overlays.Cut()
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index f1a4e8b683c..fa0c2b39359 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -1323,7 +1323,7 @@ datum/design/synthetic_flash
datum/design/nanopaste
name = "nanopaste"
- desc = "A tube of paste containing swarms of repair nanties. Very effective in repairing robotic machinery."
+ desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
id = "nanopaste"
req_tech = list("materials" = 4, "engineering" = 3)
build_type = PROTOLATHE
diff --git a/code/modules/research/xenoarchaeology/misc.dm b/code/modules/research/xenoarchaeology/misc.dm
index 3f682f65951..0673172db66 100644
--- a/code/modules/research/xenoarchaeology/misc.dm
+++ b/code/modules/research/xenoarchaeology/misc.dm
@@ -83,6 +83,9 @@
/obj/structure/closet/excavation
name = "Excavation tools"
icon_state = "toolcloset"
+ icon_closed = "toolcloset"
+ icon_opened = "toolclosetopen"
+
New()
..()
diff --git a/maps/tgstation.2.1.0.0.1.dmm b/maps/tgstation.2.1.0.0.1.dmm
index 107f33ab1a1..08f65388125 100644
--- a/maps/tgstation.2.1.0.0.1.dmm
+++ b/maps/tgstation.2.1.0.0.1.dmm
@@ -3066,7 +3066,7 @@
"bgX" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/medical/research{name = "Research Division"})
"bgY" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/lab)
"bgZ" = (/obj/structure/stool,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/lab)
-"bha" = (/obj/structure/table,/obj/item/device/posibrain,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/lab)
+"bha" = (/obj/structure/table,/obj/item/device/mmi/posibrain,/turf/simulated/floor{dir = 1; icon_state = "whitepurple"},/area/toxins/lab)
"bhb" = (/obj/machinery/camera{c_tag = "Research and Development"; dir = 2; network = list("RD"); pixel_x = 22},/obj/machinery/camera{c_tag = "Research and Development Lab"; dir = 2},/obj/machinery/power/apc{dir = 1; name = "Research Lab APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{dir = 1; icon_state = "whitepurplecorner"},/area/toxins/lab)
"bhc" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bhd" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
@@ -8461,7 +8461,7 @@
"dgK" = (/obj/structure/lattice,/obj/structure/transit_tube{tag = "icon-N-S"; icon_state = "N-S"},/turf/space,/area)
"dgL" = (/turf/simulated/wall/r_wall,/area/research_outpost/atmos{name = "Spectrometry Lab Atmospherics"})
"dgM" = (/obj/machinery/atmospherics/trinary/filter{dir = 1; filter_type = 2; icon_state = "intact_on"; name = "Gas filter (N2 tank)"; on = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos{name = "Spectrometry Lab Atmospherics"})
-"dgN" = (/obj/machinery/alarm{step_y = 25},/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; on = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos{name = "Spectrometry Lab Atmospherics"})
+"dgN" = (/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/binary/pump{dir = 4; icon_state = "intact_on"; on = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos{name = "Spectrometry Lab Atmospherics"})
"dgO" = (/obj/machinery/atmospherics/pipe/simple{color = "blue"; dir = 10; icon_state = "intact-b"; initialize_directions = 6; level = 2; name = "pipe"},/turf/simulated/floor/plating,/area/research_outpost/atmos{name = "Spectrometry Lab Atmospherics"})
"dgP" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 273; dir = 2; on = 1},/turf/simulated/floor/plating,/area/research_outpost/atmos{name = "Spectrometry Lab Atmospherics"})
"dgQ" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 273; dir = 2; on = 1},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/research_outpost/atmos{name = "Spectrometry Lab Atmospherics"})
@@ -8596,7 +8596,7 @@
"djp" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro)
"djq" = (/obj/machinery/anomaly/ion_mobility,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro)
"djr" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/spectro)
-"djs" = (/obj/structure/table,/obj/machinery/power/apc{dir = 4; name = "Mass Spectrometry APC"; pixel_x = 24; pixel_y = 0; step_x = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro)
+"djs" = (/obj/structure/table,/obj/machinery/power/apc{dir = 4; name = "Mass Spectrometry APC"; pixel_x = 24; pixel_y = 0; pixel_x = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 4; icon_state = "whitegreen"},/area/research_outpost/spectro)
"djt" = (/obj/structure/table,/obj/item/weapon/storage/box/beakers{pixel_x = 2; pixel_y = 3; pixel_x = 2; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample)
"dju" = (/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample)
"djv" = (/obj/structure/table,/obj/machinery/bunsen_burner,/turf/simulated/floor{icon_state = "white"},/area/research_outpost/sample)