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:")