diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index 7a6b41966a8..e96fceb8b6c 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -191,7 +191,7 @@
if(CanUse(U))
if(!Use(U))
return
- to_chat(U, "You replace [target.fitting] with [src].")
+ to_chat(U, "You replace the light [target.fitting] with [src].")
if(target.status != LIGHT_EMPTY)
AddShards(1, U)
diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm
index cd7b3525478..33298669157 100644
--- a/code/game/objects/structures/extinguisher.dm
+++ b/code/game/objects/structures/extinguisher.dm
@@ -40,7 +40,7 @@
return
if(!in_range(src, user))
return
- if(!iscarbon(usr))
+ if(!iscarbon(usr) && !isrobot(usr))
return
playsound(loc, 'sound/machines/click.ogg', 15, TRUE, -3)
opened = !opened
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index 91970d030a6..33ae1c923ec 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -35,6 +35,14 @@
var/reboot_cooldown = 60 // one minute
var/last_reboot
var/emagged_time
+ var/list/pullable_drone_items = list(
+ /obj/item/pipe,
+ /obj/structure/disposalconstruct,
+ /obj/item/stack/cable_coil,
+ /obj/item/stack/rods,
+ /obj/item/stack/sheet,
+ /obj/item/stack/tile
+ )
holder_type = /obj/item/holder/drone
// var/sprite[0]
@@ -69,6 +77,10 @@
verbs -= /mob/living/silicon/robot/verb/Namepick
module = new /obj/item/robot_module/drone(src)
+ //Allows Drones to hear the Engineering channel.
+ module.channels = list("Engineering" = 1)
+ radio.recalculateChannels()
+
//Grab stacks.
stack_metal = locate(/obj/item/stack/sheet/metal/cyborg) in src.module
stack_wood = locate(/obj/item/stack/sheet/wood) in src.module
@@ -154,15 +166,17 @@
return
else
- user.visible_message("\the [user] swipes [user.p_their()] ID card through [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.")
+ var/confirm = alert("Using your ID on a Maintenance Drone will shut it down, are you sure you want to do this?", "Disable Drone", "Yes", "No")
+ if(confirm == ("Yes") && (user in range(3, src)))
+ user.visible_message("\the [user] swipes [user.p_their()] ID card through [src], attempting to shut it down.", "You swipe your ID card through \the [src], attempting to shut it down.")
- if(emagged)
- return
+ if(emagged)
+ return
- if(allowed(W))
- shut_down()
- else
- to_chat(user, "Access denied.")
+ if(allowed(W))
+ shut_down()
+ else
+ to_chat(user, "Access denied.")
return
@@ -323,8 +337,9 @@
/mob/living/silicon/robot/drone/start_pulling(var/atom/movable/AM)
- if(istype(AM,/obj/item/pipe) || istype(AM,/obj/structure/disposalconstruct))
+ if(is_type_in_list(AM, pullable_drone_items))
..()
+
else if(istype(AM,/obj/item))
var/obj/item/O = AM
if(O.w_class > WEIGHT_CLASS_SMALL)
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
index a0582c135e4..16e81f53276 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm
@@ -8,7 +8,6 @@
//Has a list of items that it can hold.
var/list/can_hold = list(
- /obj/item/stock_parts/cell,
/obj/item/firealarm_electronics,
/obj/item/airalarm_electronics,
/obj/item/airlock_electronics,
@@ -24,6 +23,8 @@
/obj/item/mounted/frame/firealarm,
/obj/item/mounted/frame/newscaster_frame,
/obj/item/mounted/frame/intercom,
+ /obj/item/mounted/frame/extinguisher,
+ /obj/item/mounted/frame/light_switch,
/obj/item/rack_parts,
/obj/item/camera_assembly,
/obj/item/tank,