From b168a8c294695916dd723a2ae60848f81c395be9 Mon Sep 17 00:00:00 2001 From: Ghommie Date: Sun, 23 Jun 2019 08:03:56 +0200 Subject: [PATCH 1/3] Fixes CWC construct shells being visible as ghost role to latejoiners. --- code/_globalvars/lists/objects.dm | 2 ++ code/modules/awaymissions/corpse.dm | 18 ++++++++++++++---- code/modules/mob/dead/new_player/new_player.dm | 8 ++++---- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 14c752613b..567e96b9c3 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -38,4 +38,6 @@ GLOBAL_LIST_EMPTY(wire_name_directory) GLOBAL_LIST_EMPTY(ai_status_displays) GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects +GLOBAL_LIST_EMPTY(latejoin_mob_spawners) // All mob_spawn objects that can be viewed and accessed from the lobby. + GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/computer/station_alert diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 7274f73965..a05d731f0a 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -28,6 +28,7 @@ var/show_flavour = TRUE var/banType = "lavaland" var/ghost_usable = TRUE + var/latejoin_visible = TRUE //ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/effect/mob_spawn/attack_ghost(mob/user, latejoinercalling) @@ -66,13 +67,22 @@ create() else if(ghost_usable) GLOB.poi_list |= src - LAZYADD(GLOB.mob_spawners[job_description ? job_description : name], src) + var/job_or_name = job_description ? job_description : name + LAZYADD(GLOB.mob_spawners[job_or_name], src) + if(latejoin_visible) + LAZYADD(GLOB.latejoin_mob_spawners[job_or_name], src) + /obj/effect/mob_spawn/Destroy() GLOB.poi_list -= src - LAZYREMOVE(GLOB.mob_spawners[job_description ? job_description : name], src) - if(!LAZYLEN(GLOB.mob_spawners[job_description ? job_description : name])) - GLOB.mob_spawners -= job_description ? job_description : name + var/job_or_name = job_description ? job_description : name + LAZYREMOVE(GLOB.mob_spawners[job_or_name], src) + if(!LAZYLEN(GLOB.mob_spawners[job_or_name])) + GLOB.mob_spawners -= job_or_name + LAZYREMOVE(GLOB.latejoin_mob_spawners[job_or_name], src) + if(!LAZYLEN(GLOB.latejoin_mob_spawners[job_or_name])) + GLOB.latejoin_mob_spawners -= job_or_name + return ..() /obj/effect/mob_spawn/proc/special(mob/M) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 84be6438c0..ceca7e1372 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -163,7 +163,7 @@ to_chat(usr, "Server is full.") return - var/obj/effect/mob_spawn/MS = pick(GLOB.mob_spawners[href_list["JoinAsGhostRole"]]) + var/obj/effect/mob_spawn/MS = pick(GLOB.latejoin_mob_spawners[href_list["JoinAsGhostRole"]]) if(istype(MS) && MS.attack_ghost(src, latejoinercalling = TRUE)) SSticker.queued_players -= src SSticker.queue_delay = 4 @@ -443,7 +443,7 @@ for(var/datum/job/job in SSjob.occupations) if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE) available_job_count++ - for(var/spawner in GLOB.mob_spawners) + for(var/spawner in GLOB.latejoin_mob_spawners) available_job_count++ break @@ -457,14 +457,14 @@ "Engineering" = list(jobs = list(), titles = GLOB.engineering_positions, color = "#ffd699"), "Supply" = list(jobs = list(), titles = GLOB.supply_positions, color = "#ead4ae"), "Miscellaneous" = list(jobs = list(), titles = list(), color = "#ffffff", colBreak = TRUE), - "Ghost Role" = list(jobs = list(), titles = GLOB.mob_spawners, color = "#ffffff"), + "Ghost Role" = list(jobs = list(), titles = GLOB.latejoin_mob_spawners, color = "#ffffff"), "Synthetic" = list(jobs = list(), titles = GLOB.nonhuman_positions, color = "#ccffcc"), "Service" = list(jobs = list(), titles = GLOB.civilian_positions, color = "#cccccc"), "Medical" = list(jobs = list(), titles = GLOB.medical_positions, color = "#99ffe6", colBreak = TRUE), "Science" = list(jobs = list(), titles = GLOB.science_positions, color = "#e6b3e6"), "Security" = list(jobs = list(), titles = GLOB.security_positions, color = "#ff9999"), ) - for(var/spawner in GLOB.mob_spawners) + for(var/spawner in GLOB.latejoin_mob_spawners) categorizedJobs["Ghost Role"]["jobs"] += spawner for(var/datum/job/job in SSjob.occupations) From a90ef6faa3afcc0161862bce891941fc309f1911 Mon Sep 17 00:00:00 2001 From: Ghommie Date: Thu, 27 Jun 2019 15:06:04 +0200 Subject: [PATCH 2/3] and it's gone. --- code/_globalvars/lists/objects.dm | 2 -- code/modules/awaymissions/corpse.dm | 17 ++++++----------- code/modules/mob/dead/new_player/new_player.dm | 18 ++++++++++-------- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 567e96b9c3..14c752613b 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -38,6 +38,4 @@ GLOBAL_LIST_EMPTY(wire_name_directory) GLOBAL_LIST_EMPTY(ai_status_displays) GLOBAL_LIST_EMPTY(mob_spawners) // All mob_spawn objects -GLOBAL_LIST_EMPTY(latejoin_mob_spawners) // All mob_spawn objects that can be viewed and accessed from the lobby. - GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/computer/station_alert diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index a05d731f0a..fc82a7bb3b 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -28,7 +28,6 @@ var/show_flavour = TRUE var/banType = "lavaland" var/ghost_usable = TRUE - var/latejoin_visible = TRUE //ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/effect/mob_spawn/attack_ghost(mob/user, latejoinercalling) @@ -69,22 +68,18 @@ GLOB.poi_list |= src var/job_or_name = job_description ? job_description : name LAZYADD(GLOB.mob_spawners[job_or_name], src) - if(latejoin_visible) - LAZYADD(GLOB.latejoin_mob_spawners[job_or_name], src) /obj/effect/mob_spawn/Destroy() GLOB.poi_list -= src - var/job_or_name = job_description ? job_description : name - LAZYREMOVE(GLOB.mob_spawners[job_or_name], src) - if(!LAZYLEN(GLOB.mob_spawners[job_or_name])) - GLOB.mob_spawners -= job_or_name - LAZYREMOVE(GLOB.latejoin_mob_spawners[job_or_name], src) - if(!LAZYLEN(GLOB.latejoin_mob_spawners[job_or_name])) - GLOB.latejoin_mob_spawners -= job_or_name - + LAZYREMOVE(GLOB.mob_spawners[job_description ? job_description : name], src) + if(!LAZYLEN(GLOB.mob_spawners[job_description ? job_description : name])) + GLOB.mob_spawners -= job_description ? job_description : name return ..() +/obj/effect/mob_spawn/proc/can_latejoin() //If it can be taken from the lobby. + return TRUE + /obj/effect/mob_spawn/proc/special(mob/M) return diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index ceca7e1372..686a028b47 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -163,8 +163,8 @@ to_chat(usr, "Server is full.") return - var/obj/effect/mob_spawn/MS = pick(GLOB.latejoin_mob_spawners[href_list["JoinAsGhostRole"]]) - if(istype(MS) && MS.attack_ghost(src, latejoinercalling = TRUE)) + var/obj/effect/mob_spawn/MS = pick(GLOB.mob_spawners[href_list["JoinAsGhostRole"]]) + if(MS?.attack_ghost(src, latejoinercalling = TRUE)) SSticker.queued_players -= src SSticker.queue_delay = 4 qdel(src) @@ -443,9 +443,10 @@ for(var/datum/job/job in SSjob.occupations) if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE) available_job_count++ - for(var/spawner in GLOB.latejoin_mob_spawners) - available_job_count++ - break + for(var/obj/effect/mob_spawn/spawner in GLOB.mob_spawners) + if(spawner.can_latejoin()) + available_job_count++ + break if(!available_job_count) dat += "
There are currently no open positions!
" @@ -457,15 +458,16 @@ "Engineering" = list(jobs = list(), titles = GLOB.engineering_positions, color = "#ffd699"), "Supply" = list(jobs = list(), titles = GLOB.supply_positions, color = "#ead4ae"), "Miscellaneous" = list(jobs = list(), titles = list(), color = "#ffffff", colBreak = TRUE), - "Ghost Role" = list(jobs = list(), titles = GLOB.latejoin_mob_spawners, color = "#ffffff"), + "Ghost Role" = list(jobs = list(), titles = GLOB.mob_spawners, color = "#ffffff"), "Synthetic" = list(jobs = list(), titles = GLOB.nonhuman_positions, color = "#ccffcc"), "Service" = list(jobs = list(), titles = GLOB.civilian_positions, color = "#cccccc"), "Medical" = list(jobs = list(), titles = GLOB.medical_positions, color = "#99ffe6", colBreak = TRUE), "Science" = list(jobs = list(), titles = GLOB.science_positions, color = "#e6b3e6"), "Security" = list(jobs = list(), titles = GLOB.security_positions, color = "#ff9999"), ) - for(var/spawner in GLOB.latejoin_mob_spawners) - categorizedJobs["Ghost Role"]["jobs"] += spawner + for(var/obj/effect/mob_spawn/spawner in GLOB.mob_spawners) + if(spawner.can_latejoin()) + categorizedJobs["Ghost Role"]["jobs"] += spawner for(var/datum/job/job in SSjob.occupations) if(job && IsJobUnavailable(job.title, TRUE) == JOB_AVAILABLE) From d782f24395c04362e3e08c9237b2443f0b62c298 Mon Sep 17 00:00:00 2001 From: Ghommie Date: Fri, 28 Jun 2019 17:30:28 +0200 Subject: [PATCH 3/3] change --- code/modules/awaymissions/corpse.dm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index fc82a7bb3b..8d2e6fcedf 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -66,8 +66,7 @@ create() else if(ghost_usable) GLOB.poi_list |= src - var/job_or_name = job_description ? job_description : name - LAZYADD(GLOB.mob_spawners[job_or_name], src) + LAZYADD(GLOB.mob_spawners[job_description ? job_description : name], src) /obj/effect/mob_spawn/Destroy()