diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm
index 39d7f903f6f..1e67761d0f6 100644
--- a/_maps/map_files/generic/centcomm.dmm
+++ b/_maps/map_files/generic/centcomm.dmm
@@ -5958,11 +5958,6 @@
},
/turf/simulated/floor/mineral/plastitanium/red,
/area/shuttle/syndicate)
-"uI" = (
-/obj/effect/landmark/spawner/nuclear_bomb,
-/obj/machinery/light/spot,
-/turf/simulated/floor/mineral/plastitanium/red,
-/area/shuttle/syndicate)
"uJ" = (
/obj/machinery/optable,
/turf/simulated/floor/mineral/plastitanium/red,
@@ -9333,6 +9328,9 @@
},
/turf/simulated/floor/plasteel/dark,
/area/centcom/specops)
+"JT" = (
+/turf/simulated/wall/indestructible/opsglass/limited_smooth,
+/area/syndicate_mothership)
"JU" = (
/obj/structure/holowindow{
dir = 1
@@ -9691,6 +9689,11 @@
"Ln" = (
/turf/simulated/floor/carpet/black,
/area/wizard_station)
+"Lq" = (
+/obj/effect/landmark/spawner/nuclear_bomb/syndicate,
+/obj/machinery/light/spot,
+/turf/simulated/floor/mineral/plastitanium/red,
+/area/shuttle/syndicate)
"Ls" = (
/obj/machinery/door_control/no_emag{
id = "ASSAULT";
@@ -11971,9 +11974,6 @@
icon_state = "snow"
},
/area/holodeck/source_snowfield)
-"UO" = (
-/turf/simulated/wall/indestructible/opsglass/limited_smooth,
-/area/syndicate_mothership)
"UT" = (
/obj/machinery/economy/vending/cola/free,
/turf/simulated/floor/plasteel{
@@ -13259,6 +13259,13 @@
icon_state = "darkred"
},
/area/centcom/specops)
+"ZK" = (
+/obj/effect/landmark/spawner/nuclear_bomb/death_squad,
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "vault"
+ },
+/area/centcom/specops)
"ZL" = (
/obj/structure/showcase,
/turf/simulated/floor/wood,
@@ -33024,7 +33031,7 @@ Ji
Ra
Xz
Zr
-Ji
+ZK
MG
Ev
Xu
@@ -59698,7 +59705,7 @@ KX
KX
KX
uq
-uI
+Lq
uL
uV
ab
@@ -60457,9 +60464,9 @@ KR
mI
KY
nB
-UO
-UO
-UO
+JT
+JT
+JT
KY
rU
sn
@@ -60973,7 +60980,7 @@ ab
ab
BZ
hG
-UO
+JT
iT
rU
sx
@@ -61230,7 +61237,7 @@ ab
ab
BZ
BY
-UO
+JT
lB
KY
KY
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index aea167d9dd6..1e7852cfe9d 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -99,17 +99,19 @@
qdel(S)
continue
- var/obj/effect/landmark/nuke_spawn = locate(/obj/effect/landmark/spawner/nuclear_bomb)
-
+ var/obj/machinery/nuclearbomb/syndicate/the_bomb
var/nuke_code = rand(10000, 99999)
var/leader_selected = 0
var/agent_number = 1
var/spawnpos = 1
- var/obj/machinery/nuclearbomb/syndicate/the_bomb
- if(nuke_spawn && length(synd_spawn))
+ for(var/obj/effect/landmark/spawner/nuclear_bomb/syndicate/nuke_spawn in GLOB.landmarks_list)
+ if(!length(synd_spawn))
+ break
+
the_bomb = new /obj/machinery/nuclearbomb/syndicate(get_turf(nuke_spawn))
the_bomb.r_code = nuke_code
+ break
for(var/datum/mind/synd_mind in syndicates)
if(spawnpos > synd_spawn.len)
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 1f8e34bfb79..cf6c589179d 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -214,7 +214,13 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
name = "Holocarp Spawn"
/obj/effect/landmark/spawner/nuclear_bomb
- name = "Nuclear-Bomb"
+ icon_state = "Nuke_bomb"
+
+/obj/effect/landmark/spawner/nuclear_bomb/syndicate
+ name = "Syndicate Nuclear Bomb"
+
+/obj/effect/landmark/spawner/nuclear_bomb/death_squad
+ name = "Death Squad Nuclear Bomb"
/obj/effect/landmark/spawner/teleport_scroll
name = "Teleport-Scroll"
@@ -222,7 +228,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
/obj/effect/landmark/spawner/nuke_code
name = "nukecode"
-
/obj/effect/landmark/Destroy()
GLOB.landmarks_list -= src
..()
@@ -231,7 +236,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
/obj/effect/landmark/proc/set_tag()
tag = text("landmark*[]", name)
-
/obj/effect/landmark/singularity_act()
return
@@ -597,7 +601,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
icon = 'icons/effects/spawner_icons.dmi'
/obj/effect/landmark/mob_spawner/Initialize(mapload)
- . = ..()
+ . = ..()
new mobtype(loc)
return INITIALIZE_HINT_QDEL
diff --git a/code/modules/admin/verbs/deathsquad.dm b/code/modules/admin/verbs/deathsquad.dm
index f7b95b7cf72..d595a0efea0 100644
--- a/code/modules/admin/verbs/deathsquad.dm
+++ b/code/modules/admin/verbs/deathsquad.dm
@@ -50,13 +50,21 @@ GLOBAL_VAR_INIT(deathsquad_sent, FALSE)
// Find the nuclear auth code
var/nuke_code
+ var/new_nuke = FALSE
for(var/obj/machinery/nuclearbomb/N in GLOB.machines)
+ if(istype(N, /obj/machinery/nuclearbomb/syndicate) || !N.core)
+ continue
var/temp_code = text2num(N.r_code)
if(temp_code)//if it's actually a number. It won't convert any non-numericals.
nuke_code = N.r_code
break
if(!nuke_code)
- message_admins("No nuclear warheads have been detected, the Deathsquad will not be provided detonation codes.")
+ message_admins("No functional nuclear warheads have been detected, the Deathsquad will be issued a new warhead.")
+ new_nuke = TRUE
+ nuke_code = rand(10000, 99999)
+
+ if(alert("Do you want a new nuclear warhead to be spawned with this team?",, "Yes", "No") == "Yes")
+ new_nuke = TRUE
// Find ghosts willing to be Deathsquad
var/list/commando_ghosts = list()
@@ -74,6 +82,12 @@ GLOBAL_VAR_INIT(deathsquad_sent, FALSE)
to_chat(src, "Nobody volunteered to join the DeathSquad.")
return
+ // Spawns a nuclear warhead for the team
+ if(new_nuke)
+ for(var/obj/effect/landmark/spawner/nuclear_bomb/death_squad/nuke_spawn in GLOB.landmarks_list)
+ var/obj/machinery/nuclearbomb/undeployed/the_bomb = new (get_turf(nuke_spawn))
+ the_bomb.r_code = nuke_code
+
// Equips the Deathsquad
for(var/mob/ghost_mob in commando_ghosts)
if(!ghost_mob || !ghost_mob.key || !ghost_mob.client)
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index 6aecd76cc5a..daa067876b4 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -182,91 +182,6 @@
return TRUE
return FALSE
-
-
-/datum/admins/proc/makeNukeTeam()
-
- var/list/mob/candidates = list()
- var/mob/theghost = null
- var/time_passed = world.time
-
- var/antnum = input(owner, "How many nuclear operative you want to create? Enter 0 to cancel.","Amount:", 0) as num
- if(!antnum || antnum <= 0)
- return
- log_admin("[key_name(owner)] tried making a [antnum] person Nuke Op Team with One-Click-Antag")
- message_admins("[key_name_admin(owner)] tried making a [antnum] person Nuke Op Team with One-Click-Antag")
-
- for(var/mob/G in GLOB.respawnable_list)
- if(istype(G) && G.client && (ROLE_OPERATIVE in G.client.prefs.be_special))
- if(!jobban_isbanned(G, ROLE_OPERATIVE) && !jobban_isbanned(G, ROLE_SYNDICATE))
- if(player_old_enough_antag(G.client,ROLE_OPERATIVE))
- spawn(0)
- switch(alert(G,"Do you wish to be considered for a nuke team being sent in?","Please answer in 30 seconds!","Yes","No"))
- if("Yes")
- if((world.time-time_passed)>300)//If more than 30 game seconds passed.
- return
- candidates += G
- if("No")
- return
- else
- return
-
- sleep(300)
-
- if(candidates.len)
- var/agentcount = 0
-
- for(var/i = 0, i