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