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]