From 1a9d36b3f1c435243da5220cc204811466989f94 Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 29 Sep 2017 15:47:47 +1300 Subject: [PATCH 1/2] Merge pull request #31078 from pubby/opspawn Cleanup operative landmarks --- _maps/map_files/BoxStation/BoxStation.dmm | 11 +-- _maps/map_files/MetaStation/MetaStation.dmm | 11 +-- _maps/map_files/generic/CentCom.dmm | 77 ++++++++++++++++----- code/_globalvars/lists/mapping.dm | 2 + code/game/gamemodes/nuclear/nuclear.dm | 76 ++++++++------------ code/game/objects/effects/landmarks.dm | 35 +++++----- 6 files changed, 109 insertions(+), 103 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 656507316d..07642f1d08 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -7441,14 +7441,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/crew_quarters/fitness) -"aqt" = ( -/obj/effect/landmark/syndicate_breach_area, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/crew_quarters/fitness) "aqu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -14777,7 +14769,6 @@ /turf/open/floor/plating, /area/chapel/main) "aHr" = ( -/obj/effect/landmark/marauder_entry, /turf/open/space, /area/space) "aHs" = ( @@ -100719,7 +100710,7 @@ aaa aaa aaa aaa -aqt +aqs aro aro aro diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 67107bf501..21180a53bd 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -178,7 +178,6 @@ /turf/open/floor/plasteel/airless/solarpanel, /area/solar/port/fore) "aav" = ( -/obj/effect/landmark/marauder_entry, /turf/open/space, /area/space) "aaw" = ( @@ -2225,14 +2224,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) -"aeD" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/landmark/syndicate_breach_area, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/crew_quarters/fitness/recreation) "aeE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -129060,7 +129051,7 @@ aaa aaa bii aaa -aeD +aeC afD afD afD diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 05f0897465..72a05373eb 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -5751,6 +5751,10 @@ /obj/structure/mirror{ pixel_x = 28 }, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, /turf/open/floor/plasteel/freezer{ dir = 2 }, @@ -6101,7 +6105,7 @@ /area/syndicate_mothership/control) "qp" = ( /obj/structure/chair/stool, -/obj/effect/landmark/syndicate_spawn, +/obj/effect/landmark/start/nukeop, /turf/open/floor/plasteel/bar{ dir = 2 }, @@ -6506,6 +6510,7 @@ /area/syndicate_mothership/control) "rj" = ( /obj/structure/closet/cardboard, +/obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) "rk" = ( @@ -7623,7 +7628,7 @@ /turf/open/floor/wood, /area/syndicate_mothership/control) "tT" = ( -/obj/effect/landmark/syndicate_spawn, +/obj/effect/landmark/start/nukeop_leader, /turf/open/floor/wood, /area/syndicate_mothership/control) "tU" = ( @@ -8025,6 +8030,9 @@ /area/syndicate_mothership/control) "vb" = ( /obj/structure/closet/cardboard/metal, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) "vc" = ( @@ -9731,7 +9739,6 @@ /area/wizard_station) "zj" = ( /obj/structure/table/wood, -/obj/effect/landmark/teleport_scroll, /obj/item/dice/d20, /obj/item/dice, /turf/open/floor/carpet, @@ -13652,6 +13659,44 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/school) +"QT" = ( +/obj/effect/turf_decal/stripes/corner, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QU" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QV" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QW" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QX" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QY" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) +"QZ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/syndicate_mothership/control) (1,1,1) = {" aa @@ -34895,7 +34940,7 @@ lG hm aa kl -qs +QT rk rl rm @@ -34903,7 +34948,7 @@ tl rm ux vc -qs +QY kl aa aa @@ -36180,7 +36225,7 @@ hq hm aa kl -qt +QU ro rm sd @@ -36437,7 +36482,7 @@ hq hm aa kl -qs +QV rp ro rm @@ -36445,7 +36490,7 @@ tl rm uy ve -qs +QZ kl aa aa @@ -36695,13 +36740,13 @@ hm aa kl qs -qs +QW se se se se se -qs +QX qs kl aa @@ -76391,9 +76436,9 @@ dM QJ QL fg -QO -QQ -QR +QL +QK +QL dM fN fQ @@ -76903,11 +76948,11 @@ dM QI dM QK -QM +QL QN -QP +QL fr -QS +QL dM fN ab diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index a2d30b1528..d031c01223 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -33,6 +33,8 @@ GLOBAL_LIST_EMPTY(department_security_spawns) //list of all department security GLOBAL_LIST_EMPTY(generic_event_spawns) //list of all spawns for events GLOBAL_LIST_EMPTY(wizardstart) +GLOBAL_LIST_EMPTY(nukeop_start) +GLOBAL_LIST_EMPTY(nukeop_leader_start) GLOBAL_LIST_EMPTY(newplayer_start) GLOBAL_LIST_EMPTY(prisonwarp) //prisoners go to these GLOBAL_LIST_EMPTY(holdingfacility) //captured people go here diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm index 4c21f9688b..acf55e4036 100644 --- a/code/game/gamemodes/nuclear/nuclear.dm +++ b/code/game/gamemodes/nuclear/nuclear.dm @@ -22,27 +22,17 @@ var/nukes_left = 1 // Call 3714-PRAY right now and order more nukes! Limited offer! var/nuke_off_station = 0 //Used for tracking if the syndies actually haul the nuke to the station var/syndies_didnt_escape = 0 //Used for tracking if the syndies got the shuttle off of the z-level + var/list/pre_nukeops = list() /datum/game_mode/nuclear/pre_setup() - var/n_players = num_players() - var/n_agents = min(round(n_players / 10, 1), agents_possible) - - if(antag_candidates.len < n_agents) //In the case of having less candidates than the selected number of agents - n_agents = antag_candidates.len - - while(n_agents > 0) - var/datum/mind/new_syndicate = pick(antag_candidates) - syndicates += new_syndicate - antag_candidates -= new_syndicate //So it doesn't pick the same guy each time. - n_agents-- - - for(var/datum/mind/synd_mind in syndicates) - synd_mind.assigned_role = "Syndicate" - synd_mind.special_role = "Syndicate"//So they actually have a special role/N - log_game("[synd_mind.key] (ckey) has been selected as a nuclear operative") - - return 1 - + var/n_agents = min(round(num_players() / 10), antag_candidates.len, agents_possible) + for(var/i = 0, i < n_agents, ++i) + var/datum/mind/new_op = pick_n_take(antag_candidates) + pre_nukeops += new_op + new_op.assigned_role = "Nuclear Operative" + new_op.special_role = "Nuclear Operative" + log_game("[new_op.key] (ckey) has been selected as a nuclear operative") + return TRUE //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// @@ -60,48 +50,36 @@ //////////////////////////////////////////////////////////////////////////////////////// /datum/game_mode/nuclear/post_setup() - - var/list/turf/synd_spawn = list() - - for(var/obj/effect/landmark/A in GLOB.landmarks_list) - if(A.name == "Syndicate-Spawn") - synd_spawn += get_turf(A) - continue - var/nuke_code = random_nukecode() - var/leader_selected = 0 var/agent_number = 1 - var/spawnpos = 1 + var/datum/mind/leader = pick(pre_nukeops) + syndicates += pre_nukeops + for(var/i = 1 to pre_nukeops.len) + var/datum/mind/op = pre_nukeops[i] - for(var/datum/mind/synd_mind in syndicates) - if(spawnpos > synd_spawn.len) - spawnpos = 2 - synd_mind.current.loc = synd_spawn[spawnpos] - - forge_syndicate_objectives(synd_mind) - greet_syndicate(synd_mind) - equip_syndicate(synd_mind.current) + forge_syndicate_objectives(op) + greet_syndicate(op) + equip_syndicate(op.current) if(nuke_code) - synd_mind.store_memory("Syndicate Nuclear Bomb Code: [nuke_code]", 0, 0) - to_chat(synd_mind.current, "The nuclear authorization code is: [nuke_code]") + op.store_memory("Syndicate Nuclear Bomb Code: [nuke_code]", 0, 0) + to_chat(op.current, "The nuclear authorization code is: [nuke_code]") - if(!leader_selected) - prepare_syndicate_leader(synd_mind, nuke_code) - leader_selected = 1 + if(op == leader) + op.current.forceMove(pick(GLOB.nukeop_leader_start)) + prepare_syndicate_leader(op, nuke_code) else - synd_mind.current.real_name = "[syndicate_name()] Operative #[agent_number]" - agent_number++ - spawnpos++ - update_synd_icons_added(synd_mind) - synd_mind.current.playsound_local(get_turf(synd_mind.current), 'sound/ambience/antag/ops.ogg',100,0) - var/obj/machinery/nuclearbomb/nuke = locate("syndienuke") in GLOB.nuke_list + op.current.forceMove(GLOB.nukeop_start[((i - 1) % GLOB.nukeop_start.len) + 1]) + op.current.real_name = "[syndicate_name()] Operative #[agent_number++]" + update_synd_icons_added(op) + op.current.playsound_local(get_turf(op.current), 'sound/ambience/antag/ops.ogg',100,0) + + var/obj/machinery/nuclearbomb/nuke = locate("syndienuke") in GLOB.nuke_list if(nuke) nuke.r_code = nuke_code return ..() - /datum/game_mode/proc/prepare_syndicate_leader(datum/mind/synd_mind, nuke_code) var/leader_title = pick("Czar", "Boss", "Commander", "Chief", "Kingpin", "Director", "Overlord") spawn(1) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 7401797a47..68a1cb773c 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -157,11 +157,27 @@ /obj/effect/landmark/start/wizard name = "wizard" -/obj/effect/landmark/start/wizard/Initialize(mapload) +/obj/effect/landmark/start/wizard/Initialize() ..() GLOB.wizardstart += loc return INITIALIZE_HINT_QDEL +/obj/effect/landmark/start/nukeop + name = "nukeop" + +/obj/effect/landmark/start/nukeop/Initialize() + ..() + GLOB.nukeop_start += loc + return INITIALIZE_HINT_QDEL + +/obj/effect/landmark/start/nukeop_leader + name = "nukeop leader" + +/obj/effect/landmark/start/nukeop_leader/Initialize() + ..() + GLOB.nukeop_leader_start += loc + return INITIALIZE_HINT_QDEL + /obj/effect/landmark/start/new_player name = "New Player" @@ -205,23 +221,6 @@ /obj/effect/landmark/tripai name = "tripai" -// marauder entry (XXX WTF IS MAURADER ENTRY???) - -/obj/effect/landmark/marauder_entry - name = "Marauder Entry" - -// syndicate breach area (XXX I DON'T KNOW WHAT THIS IS EITHER) - -/obj/effect/landmark/syndicate_breach_area - name = "Syndicate Breach Area" - -// teleport scroll landmark, XXX DOES THIS DO ANYTHING? -/obj/effect/landmark/teleport_scroll - name = "Teleport-Scroll" - -/obj/effect/landmark/syndicate_spawn - name = "Syndicate-Spawn" - // xenos. /obj/effect/landmark/xeno_spawn name = "xeno_spawn"