diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index c0ab1dc015..5ec2eddeab 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -208,12 +208,10 @@
SSticker.mode.update_brother_icons_removed(src)
/datum/mind/proc/remove_nukeop()
- if(src in SSticker.mode.syndicates)
- SSticker.mode.syndicates -= src
- SSticker.mode.update_synd_icons_removed(src)
- special_role = null
- remove_objectives()
- remove_antag_equip()
+ var/datum/antagonist/nukeop/nuke = has_antag_datum(/datum/antagonist/nukeop,TRUE)
+ if(nuke)
+ remove_antag_datum(nuke.type)
+ special_role = null
/datum/mind/proc/remove_wizard()
remove_antag_datum(/datum/antagonist/wizard)
@@ -329,14 +327,19 @@
SSticker.mode.add_cultist(src)
else if(is_revolutionary(creator))
- var/datum/antagonist/rev/converter = creator.mind.has_antag_datum(/datum/antagonist/rev)
++ var/datum/antagonist/rev/converter = creator.mind.has_antag_datum(/datum/antagonist/rev,TRUE)
converter.add_revolutionary(src,FALSE)
else if(is_servant_of_ratvar(creator))
add_servant_of_ratvar(current)
else if(is_nuclear_operative(creator))
- make_Nuke(null, null, 0, FALSE)
+ var/datum/antagonist/nukeop/converter = creator.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE)
+ var/datum/antagonist/nukeop/N = new(src)
+ N.send_to_spawnpoint = FALSE
+ N.nukeop_outfit = null
+ add_antag_datum(N,converter.nuke_team)
+
enslaved_to = creator
@@ -490,7 +493,8 @@
/** NUCLEAR ***/
text = "nuclear"
- if (SSticker.mode.config_tag=="nuclear")
+ var/datum/antagonist/nukeop/N = has_antag_datum(/datum/antagonist/nukeop,TRUE)
+ if(N)
text = uppertext(text)
text = "[text]: "
if (src in SSticker.mode.syndicates)
@@ -713,7 +717,7 @@
out += sections[i]+"
"
- if(((src in SSticker.mode.traitors) || (src in SSticker.mode.syndicates)) && ishuman(current))
+ if(((src in SSticker.mode.traitors) || is_nuclear_operative(current)) && ishuman(current))
text = "Uplink: give"
var/datum/component/uplink/U = find_syndicate_uplink()
if(U)
@@ -1071,36 +1075,14 @@
message_admins("[key_name_admin(usr)] has de-nuke op'ed [current].")
log_admin("[key_name(usr)] has de-nuke op'ed [current].")
if("nuclear")
- if(!(src in SSticker.mode.syndicates))
- SSticker.mode.syndicates += src
- SSticker.mode.update_synd_icons_added(src)
- if (SSticker.mode.syndicates.len==1)
- SSticker.mode.prepare_syndicate_leader(src)
- else
- current.real_name = "[syndicate_name()] Operative #[SSticker.mode.syndicates.len-1]"
- special_role = "Syndicate"
- assigned_role = "Syndicate"
- to_chat(current, "You are a [syndicate_name()] agent!")
- SSticker.mode.forge_syndicate_objectives(src)
- SSticker.mode.greet_syndicate(src)
- message_admins("[key_name_admin(usr)] has nuke op'ed [current].")
- log_admin("[key_name(usr)] has nuke op'ed [current].")
+ if(!has_antag_datum(/datum/antagonist/nukeop,TRUE))
+ add_antag_datum(/datum/antagonist/nukeop)
+ special_role = "Syndicate"
+ assigned_role = "Syndicate"
+ message_admins("[key_name_admin(usr)] has nuke op'ed [current].")
+ log_admin("[key_name(usr)] has nuke op'ed [current].")
if("lair")
current.forceMove(pick(GLOB.nukeop_start))
- if("dressup")
- var/mob/living/carbon/human/H = current
- qdel(H.belt)
- qdel(H.back)
- qdel(H.ears)
- qdel(H.gloves)
- qdel(H.head)
- qdel(H.shoes)
- qdel(H.wear_id)
- qdel(H.wear_suit)
- qdel(H.w_uniform)
-
- if (!SSticker.mode.equip_syndicate(current))
- to_chat(usr, "Equipping a syndicate failed!")
if("tellcode")
var/code
for (var/obj/machinery/nuclearbomb/bombue in GLOB.machines)
@@ -1348,50 +1330,6 @@
T.should_specialise = TRUE
add_antag_datum(T)
-
-/datum/mind/proc/make_Nuke(turf/spawnloc, nuke_code, leader=0, telecrystals = TRUE)
- if(!(src in SSticker.mode.syndicates))
- SSticker.mode.syndicates += src
- SSticker.mode.update_synd_icons_added(src)
- assigned_role = "Syndicate"
- special_role = "Syndicate"
- SSticker.mode.forge_syndicate_objectives(src)
- SSticker.mode.greet_syndicate(src)
- current.faction |= "syndicate"
-
- if(spawnloc)
- current.forceMove(spawnloc)
-
- if(ishuman(current))
- var/mob/living/carbon/human/H = current
- qdel(H.belt)
- qdel(H.back)
- qdel(H.ears)
- qdel(H.gloves)
- qdel(H.head)
- qdel(H.shoes)
- qdel(H.wear_id)
- qdel(H.wear_suit)
- qdel(H.w_uniform)
-
- SSticker.mode.equip_syndicate(current, telecrystals)
-
- if (nuke_code)
- store_memory("Syndicate Nuclear Bomb Code: [nuke_code]", 0, 0)
- to_chat(current, "The nuclear authorization code is: [nuke_code]")
- else
- var/obj/machinery/nuclearbomb/nuke = locate("syndienuke") in GLOB.nuke_list
- if(nuke)
- store_memory("Syndicate Nuclear Bomb Code: [nuke.r_code]", 0, 0)
- to_chat(current, "The nuclear authorization code is: nuke.r_code")
- else
- to_chat(current, "You were not provided with a nuclear code. Trying asking your team leader or contacting syndicate command.")
-
- if (leader)
- SSticker.mode.prepare_syndicate_leader(src,nuke_code)
- else
- current.real_name = "[syndicate_name()] Operative #[SSticker.mode.syndicates.len-1]"
-
/datum/mind/proc/make_Changling()
var/datum/antagonist/changeling/C = has_antag_datum(/datum/antagonist/changeling)
if(!C)