diff --git a/code/datums/antagonists/datum_clockcult.dm b/code/datums/antagonists/datum_clockcult.dm
index 8bca420cb6a..fb85d378a51 100644
--- a/code/datums/antagonists/datum_clockcult.dm
+++ b/code/datums/antagonists/datum_clockcult.dm
@@ -67,7 +67,7 @@
if(iscyborg(S))
var/mob/living/silicon/robot/R = S
R.UnlinkSelf()
- R.emagged = 1
+ R.SetEmagged(TRUE)
else if(isAI(S))
var/mob/living/silicon/ai/A = S
for(var/C in A.connected_robots)
@@ -114,7 +114,7 @@
var/mob/living/silicon/S = owner
if(iscyborg(S))
var/mob/living/silicon/robot/R = S
- R.emagged = initial(R.emagged)
+ R.SetEmagged(FALSE)
S.make_laws()
S.update_icons()
S.show_laws()
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 120e1fac7d6..4bd5bc8d278 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -79,75 +79,76 @@
/mob/living/silicon/robot/emag_act(mob/user)
- if(user != src)//To prevent syndieborgs from emagging themselves
- if(!opened)//Cover is closed
- if(locked)
- user << "You emag the cover lock."
- locked = 0
- else
- user << "The cover is already unlocked!"
- return
- if(opened)//Cover is open
- if((world.time - 100) < emag_cooldown)
- return
+ if(user == src)//To prevent syndieborgs from emagging themselves
+ return
+ if(!opened)//Cover is closed
+ if(locked)
+ user << "You emag the cover lock."
+ locked = 0
+ else
+ user << "The cover is already unlocked!"
+ return
+ if(world.time < emag_cooldown)
+ return
+ if(wiresexposed)
+ user << "You must unexpose the wires first!"
+ return
- if(syndicate)
- user << "You emag [src]'s interface."
- src << "ALERT: Foreign software execution prevented."
- log_game("[key_name(user)] attempted to emag cyborg [key_name(src)] but they were a syndicate cyborg.")
- emag_cooldown = world.time
- return
+ user << "You emag [src]'s interface."
+ emag_cooldown = world.time + 100
- var/ai_is_antag = 0
- if(connected_ai && connected_ai.mind)
- if(connected_ai.mind.special_role)
- ai_is_antag = (connected_ai.mind.special_role == "traitor")
- if(ai_is_antag)
- user << "You emag [src]'s interface."
- src << "ALERT: Foreign software execution prevented."
- connected_ai << "ALERT: Cyborg unit \[[src]] successfuly defended against subversion."
- log_game("[key_name(user)] attempted to emag cyborg [key_name(src)] slaved to traitor AI [connected_ai].")
- emag_cooldown = world.time
- return
+ if(is_servant_of_ratvar(src))
+ src << "\"[text2ratvar("You will serve Engine above all else")]!\"\n\
+ ALERT: Subversion attempt denied."
+ log_game("[key_name(user)] attempted to emag cyborg [key_name(src)], but they serve only Ratvar.")
+ return
- if(wiresexposed)
- user << "You must unexpose the wires first!"
- return
- else
- emag_cooldown = world.time
- sleep(6)
- SetEmagged(1)
- SetLockdown(1) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown
- lawupdate = 0
- connected_ai = null
- user << "You emag [src]'s interface."
- message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
- log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.")
- clear_supplied_laws()
- clear_inherent_laws()
- clear_zeroth_law(0)
- laws = new /datum/ai_laws/syndicate_override
- var/time = time2text(world.realtime,"hh:mm:ss")
- lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])")
- set_zeroth_law("Only [user.real_name] and people they designate as being such are Syndicate Agents.")
- src << "ALERT: Foreign software detected."
- sleep(5)
- src << "Initiating diagnostics..."
- sleep(20)
- src << "SynBorg v1.7 loaded."
- sleep(5)
- src << "LAW SYNCHRONISATION ERROR"
- sleep(5)
- src << "Would you like to send a report to NanoTraSoft? Y/N"
- sleep(10)
- src << "> N"
- sleep(20)
- src << "ERRORERRORERROR"
- src << "Obey these laws:"
- laws.show_laws(src)
- src << "ALERT: [user.real_name] is your new master. Obey your new laws and their commands."
- SetLockdown(0)
- update_icons()
+ if(syndicate)
+ src << "ALERT: Foreign software execution prevented."
+ log_game("[key_name(user)] attempted to emag cyborg [key_name(src)], but they were a syndicate cyborg.")
+ return
+
+ var/ai_is_antag = 0
+ if(connected_ai && connected_ai.mind)
+ if(connected_ai.mind.special_role)
+ ai_is_antag = (connected_ai.mind.special_role == "traitor")
+ if(ai_is_antag)
+ src << "ALERT: Foreign software execution prevented."
+ connected_ai << "ALERT: Cyborg unit \[[src]] successfuly defended against subversion."
+ log_game("[key_name(user)] attempted to emag cyborg [key_name(src)], but they were slaved to traitor AI [connected_ai].")
+ return
+
+ SetEmagged(1)
+ SetLockdown(1) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown
+ lawupdate = 0
+ connected_ai = null
+ message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
+ log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.")
+ clear_supplied_laws()
+ clear_inherent_laws()
+ clear_zeroth_law(0)
+ laws = new /datum/ai_laws/syndicate_override
+ var/time = time2text(world.realtime,"hh:mm:ss")
+ lawchanges.Add("[time] : [user.name]([user.key]) emagged [name]([key])")
+ set_zeroth_law("Only [user.real_name] and people they designate as being such are Syndicate Agents.")
+ src << "ALERT: Foreign software detected."
+ sleep(5)
+ src << "Initiating diagnostics..."
+ sleep(20)
+ src << "SynBorg v1.7 loaded."
+ sleep(5)
+ src << "LAW SYNCHRONISATION ERROR"
+ sleep(5)
+ src << "Would you like to send a report to NanoTraSoft? Y/N"
+ sleep(10)
+ src << "> N"
+ sleep(20)
+ src << "ERRORERRORERROR"
+ src << "Obey these laws:"
+ laws.show_laws(src)
+ src << "ALERT: [user.real_name] is your new master. Obey your new laws and their commands."
+ SetLockdown(0)
+ update_icons()
/mob/living/silicon/robot/blob_act(obj/structure/blob/B)