diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index 2099b99f1b1..7951554dc05 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -1,3 +1,4 @@
+#define EMAG_TIMER 3000
/mob/living/silicon/robot/drone
name = "drone"
real_name = "drone"
@@ -30,6 +31,7 @@
var/mail_destination = 0
var/reboot_cooldown = 60 // one minute
var/last_reboot
+ var/emagged_time
holder_type = /obj/item/weapon/holder/drone
// var/sprite[0]
@@ -180,14 +182,17 @@
return
to_chat(user, "You swipe the sequencer across [src]'s interface and watch its eyes flicker.")
- to_chat(src, "You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script.")
+ to_chat(src, "You feel a sudden burst of malware loaded into your execute-as-root buffer. Your tiny brain methodically parses, loads and executes the script. You sense you have five minutes before the drone server detects this and automatically shuts you down.")
message_admins("[key_name_admin(user)] emagged drone [key_name_admin(src)]. Laws overridden.")
log_game("[key_name(user)] emagged drone [key_name(src)]. Laws overridden.")
var/time = time2text(world.realtime,"hh:mm:ss")
lawchanges.Add("[time] : [H.name]([H.key]) emagged [name]([key])")
+ emagged_time = world.time
emagged = 1
+ density = 1
+ pass_flags = 0
icon_state = "repairbot-emagged"
holder_type = /obj/item/weapon/holder/drone/emagged
update_icons()
@@ -196,11 +201,11 @@
clear_supplied_laws()
clear_inherent_laws()
laws = new /datum/ai_laws/syndicate_override
- set_zeroth_law("Only [H.real_name] and people he designates as being such are Syndicate Agents.")
+ 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:")
laws.show_laws(src)
- to_chat(src, "ALERT: [H.real_name] is your new master. Obey your new laws and his commands.")
+ to_chat(src, "ALERT: [H.real_name] is your new master. Obey your new laws and [H.real_name]'s commands.")
return
//DRONE LIFE/DEATH
@@ -245,13 +250,16 @@
full_law_reset()
show_laws()
-/mob/living/silicon/robot/drone/proc/shut_down()
- if(stat != 2)
- if(emagged)
- to_chat(src, "You feel a system kill order percolate through your tiny brain, but it doesn't seem like a good idea to you.")
- else
- to_chat(src, "You feel a system kill order percolate through your tiny brain, and you obediently destroy yourself.")
- death()
+/mob/living/silicon/robot/drone/proc/shut_down(force=FALSE)
+ if(stat == 2)
+ return
+
+ if(emagged && !force)
+ to_chat(src, "You feel a system kill order percolate through your tiny brain, but it doesn't seem like a good idea to you.")
+ return
+
+ to_chat(src, "You feel a system kill order percolate through your tiny brain, and you obediently destroy yourself.")
+ death()
/mob/living/silicon/robot/drone/proc/full_law_reset()
clear_supplied_laws()
@@ -347,6 +355,11 @@
/mob/living/silicon/robot/drone/update_canmove(delay_action_updates = 0)
. = ..()
+ if(emagged)
+ density = 1
+ if(world.time - emagged_time > EMAG_TIMER)
+ shut_down(TRUE)
+ return
density = 0 //this is reset every canmove update otherwise
/mob/living/simple_animal/drone/flash_eyes(intensity = 1, override_blindness_check = 0, affect_silicon = 0)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 3d95987bcf8..a1980b72fed 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -502,8 +502,6 @@
modules += new /obj/item/device/t_scanner(src)
modules += new /obj/item/weapon/rpd(src)
- emag = new /obj/item/weapon/pickaxe/drill/cyborg/diamond(src)
-
for(var/T in stacktypes)
var/obj/item/stack/sheet/W = new T(src)
W.amount = stacktypes[T]