diff --git a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
index e73d5a9fee5..250c2a5a2c8 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_manufacturer.dm
@@ -49,9 +49,12 @@
/obj/machinery/drone_fabricator/examine(mob/user)
. = ..()
- if(produce_drones && drone_progress >= 100 && isobserver(user) && count_drones() < MAX_MAINT_DRONES)
+ if(isobserver(user) && drone_prepared())
. += "
A drone is prepared. Select 'Join As Drone' from the Ghost tab to spawn as a maintenance drone."
+/obj/machinery/drone_fabricator/proc/drone_prepared()
+ return (produce_drones && drone_progress >= 100 && (count_drones() < MAX_MAINT_DRONES))
+
/obj/machinery/drone_fabricator/proc/count_drones()
var/drones = 0
for(var/mob/living/silicon/robot/drone/D in GLOB.silicon_mob_list)
@@ -78,7 +81,11 @@
drone_progress = 0
-
+/obj/machinery/drone_fabricator/attack_ghost(mob/user as mob)
+ if(!drone_prepared() || !isobserver(user))
+ return
+ var/mob/dead/observer/ghost = user
+ ghost.join_as_drone()
/mob/dead/verb/join_as_drone()
set category = "Ghost"
diff --git a/code/modules/mob/living/silicon/robot/drone/maint_drone.dm b/code/modules/mob/living/silicon/robot/drone/maint_drone.dm
index 92875b1343d..2aee30f2c3b 100644
--- a/code/modules/mob/living/silicon/robot/drone/maint_drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/maint_drone.dm
@@ -99,6 +99,9 @@
scanner.Grant(src)
update_icons()
+ // Drones have laws to not attack people
+ ADD_TRAIT(src, TRAIT_PACIFISM, INNATE_TRAIT)
+
/mob/living/silicon/robot/drone/init(alien = FALSE, mob/living/silicon/ai/ai_to_sync_to = null)
laws = new /datum/ai_laws/drone()
connected_ai = null
@@ -234,6 +237,7 @@
clear_supplied_laws()
clear_inherent_laws()
laws = new /datum/ai_laws/syndicate_override
+ REMOVE_TRAIT(src, TRAIT_PACIFISM, INNATE_TRAIT)
set_zeroth_law("Only [H.real_name] and people [H.real_name] designates as being such are Syndicate Agents.")
to_chat(src, "Obey these laws:")