diff --git a/code/controllers/subsystem/techtree.dm b/code/controllers/subsystem/techtree.dm index 04ac2591bc..5f22373228 100644 --- a/code/controllers/subsystem/techtree.dm +++ b/code/controllers/subsystem/techtree.dm @@ -34,17 +34,6 @@ SUBSYSTEM_DEF(techtree) var/datum/space_level/zpos = SSmapping.add_new_zlevel(tree.name, list(ZTRAIT_TECHTREE)) tree.zlevel = zpos - var/zlevel = zpos.z_value - var/turf/z_min = locate(1, 1, zlevel) - var/turf/z_max = locate(world.maxx, world.maxy, zlevel) - - - - for(var/t in block(z_min, z_max)) - var/turf/Tu = t - Tu.ChangeTurf(/turf/closed/void, list(/turf/closed/void)) - new /area/techtree(Tu) - for(var/tier in tree.tree_tiers) tree.unlocked_techs += tier tree.all_techs += tier diff --git a/code/game/objects/structures/fence.dm b/code/game/objects/structures/fence.dm index b29c69e8af..6a4b479929 100644 --- a/code/game/objects/structures/fence.dm +++ b/code/game/objects/structures/fence.dm @@ -3,6 +3,7 @@ desc = "A large metal mesh strewn between two poles. Intended as a cheap way to separate areas, while allowing one to see through it." icon = 'icons/obj/structures/props/fence.dmi' icon_state = "fence0" + throwpass = TRUE density = TRUE anchored = TRUE layer = WINDOW_LAYER diff --git a/code/modules/admin/banjob.dm b/code/modules/admin/banjob.dm index 18f06e79a6..230590fdf9 100644 --- a/code/modules/admin/banjob.dm +++ b/code/modules/admin/banjob.dm @@ -146,6 +146,12 @@ WARNING!*/ else jobs += "Emergency Response Team" + //Freed Mobs + if(jobban_isbanned(M, "Freed Mob", P) || isbanned_dept) + jobs += "Freed Mob" + else + jobs += "Freed Mob" + //Survivor if(jobban_isbanned(M, "Survivor", P) || isbanned_dept) jobs += "Survivor" diff --git a/code/modules/cm_tech/techtree.dm b/code/modules/cm_tech/techtree.dm index 6c39d8ab9c..a027789185 100644 --- a/code/modules/cm_tech/techtree.dm +++ b/code/modules/cm_tech/techtree.dm @@ -58,16 +58,24 @@ if(longest_tier < tier_length) longest_tier = tier_length - // Clear out the area - for(var/t in block(locate(1, 1, zlevel.z_value), locate(longest_tier * 2 + 1, length(all_techs) * 3 + 1, zlevel.z_value))) + // Clear out and create the area + // (The `+ 2` on both of these is 1 for a buffer tile, and 1 for the outer `/turf/closed/void`.) + var/area_max_x = longest_tier * 2 + 2 + var/area_max_y = length(all_techs) * 3 + 2 + for(var/t in block(locate(1, 1, zlevel.z_value), locate(area_max_x, area_max_y, zlevel.z_value))) var/turf/pos = t for(var/A in pos) qdel(A) - pos.ChangeTurf(/turf/open/blank) - pos.color = "#000000" - + if(pos.x == area_max_x || pos.y == area_max_y) + // The turfs around the edge are closed. + pos.ChangeTurf(/turf/closed/void) + else + pos.ChangeTurf(/turf/open/blank) + pos.color = "#000000" + new /area/techtree(pos) + // Create the tech nodes var/y_offset = 1 for(var/tier in all_techs) var/tier_length = length(all_techs[tier]) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 44a3592329..409c88388f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -1034,6 +1034,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp to_chat(src, SPAN_WARNING("The game hasn't started yet!")) return + if(jobban_isbanned(src, "Freed Mob")) + to_chat(src, SPAN_WARNING("You are banned from being able to join as a freed mob.")) + return + var/list/mobs_by_role = list() // the list the mobs are assigned to first, for sorting purposes for(var/mob/freed_mob as anything in GLOB.freed_mob_list) var/role_name = freed_mob.get_role_name() @@ -1059,6 +1063,10 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp if(!istype(freed_mob) || !(freed_mob in GLOB.freed_mob_list)) return + if(jobban_isbanned(src, "Freed Mob")) + to_chat(src, SPAN_WARNING("You are banned from being able to join as a freed mob.")) + return + if(QDELETED(freed_mob) || freed_mob.client) GLOB.freed_mob_list -= freed_mob to_chat(src, SPAN_WARNING("Something went wrong.")) diff --git a/html/changelogs/archive/2024-07.yml b/html/changelogs/archive/2024-07.yml index a8046763ac..f171a09f14 100644 --- a/html/changelogs/archive/2024-07.yml +++ b/html/changelogs/archive/2024-07.yml @@ -9,3 +9,8 @@ Doubleumc: - bugfix: sounds & motion detectors should be more reliable - rscdel: Removed automatic end of round vote and reboot +2024-07-25: + Doubleumc: + - code_imp: Made the Tech Tree subsystem initialise faster. + Zonespace27: + - admin: Added freed mob bans to the jobban panel.