diff --git a/code/__defines/map.dm b/code/__defines/map.dm index 13b1bfd795..7d0f3706af 100644 --- a/code/__defines/map.dm +++ b/code/__defines/map.dm @@ -6,6 +6,7 @@ #define MAP_LEVEL_SEALED 0x010 // Z-levels that don't allow random transit at edge #define MAP_LEVEL_EMPTY 0x020 // Empty Z-levels that may be used for various things (currently used by bluespace jump) #define MAP_LEVEL_CONSOLES 0x040 // Z-levels available to various consoles, such as the crew monitor (when that gets coded in). Defaults to station_levels if unset. +#define MAP_LEVEL_XENOARCH_EXEMPT 0x080 // Z-levels exempt from xenoarch digsite generation. // Misc map defines. #define SUBMAP_MAP_EDGE_PAD 15 // Automatically created submaps are forbidden from being this close to the main map's edge. \ No newline at end of file diff --git a/code/controllers/Processes/supply.dm b/code/controllers/Processes/supply.dm index aec0d624c7..f49730f25d 100644 --- a/code/controllers/Processes/supply.dm +++ b/code/controllers/Processes/supply.dm @@ -100,6 +100,7 @@ var/datum/controller/supply/supply_controller = new() EC.name = "\proper[MA.name]" EC.value = 0 EC.contents = list() + var/base_value = 0 // Must be in a crate! if(istype(MA,/obj/structure/closet/crate)) @@ -107,6 +108,8 @@ var/datum/controller/supply/supply_controller = new() callHook("sell_crate", list(CR, area_shuttle)) points += CR.points_per_crate + if(CR.points_per_crate) + base_value = CR.points_per_crate var/find_slip = 1 for(var/atom/A in CR) @@ -151,6 +154,7 @@ var/datum/controller/supply/supply_controller = new() exported_crates += EC points += EC.value + EC.value += base_value // Duplicate the receipt for the admin-side log var/datum/exported_crate/adm = new() diff --git a/code/controllers/subsystems/xenoarch.dm b/code/controllers/subsystems/xenoarch.dm index 7f3e292c1a..d863ad8269 100644 --- a/code/controllers/subsystems/xenoarch.dm +++ b/code/controllers/subsystems/xenoarch.dm @@ -31,7 +31,7 @@ SUBSYSTEM_DEF(xenoarch) /datum/controller/subsystem/xenoarch/proc/SetupXenoarch() for(var/turf/simulated/mineral/M in turfs) - if(!M.density) + if(!M.density || M.z in using_map.xenoarch_exempt_levels) continue if(isnull(M.geologic_data)) diff --git a/code/datums/observation/destroyed.dm b/code/datums/observation/destroyed.dm index ff8778645c..650909f86d 100644 --- a/code/datums/observation/destroyed.dm +++ b/code/datums/observation/destroyed.dm @@ -10,5 +10,6 @@ name = "Destroyed" /datum/Destroy() - GLOB.destroyed_event.raise_event(src) + if(GLOB.destroyed_event) + GLOB.destroyed_event.raise_event(src) . = ..() diff --git a/code/datums/wires/seedstorage.dm b/code/datums/wires/seedstorage.dm index e21bbb9faf..8268d936b0 100644 --- a/code/datums/wires/seedstorage.dm +++ b/code/datums/wires/seedstorage.dm @@ -10,10 +10,6 @@ /datum/wires/seedstorage/CanUse(var/mob/living/L) var/obj/machinery/seed_storage/V = holder - if(!istype(L, /mob/living/silicon)) - if(V.seconds_electrified) - if(V.shock(L, 100)) - return 0 if(V.panel_open) return 1 return 0 diff --git a/code/datums/wires/smartfridge.dm b/code/datums/wires/smartfridge.dm index b611497e79..15f10cd800 100644 --- a/code/datums/wires/smartfridge.dm +++ b/code/datums/wires/smartfridge.dm @@ -12,10 +12,6 @@ var/const/SMARTFRIDGE_WIRE_IDSCAN = 4 /datum/wires/smartfridge/CanUse(var/mob/living/L) var/obj/machinery/smartfridge/S = holder - if(!istype(L, /mob/living/silicon)) - if(S.seconds_electrified) - if(S.shock(L, 100)) - return 0 if(S.panel_open) return 1 return 0 diff --git a/code/datums/wires/vending.dm b/code/datums/wires/vending.dm index 6715669fc1..bad3a0078b 100644 --- a/code/datums/wires/vending.dm +++ b/code/datums/wires/vending.dm @@ -9,10 +9,6 @@ var/const/VENDING_WIRE_IDSCAN = 8 /datum/wires/vending/CanUse(var/mob/living/L) var/obj/machinery/vending/V = holder - if(!istype(L, /mob/living/silicon)) - if(V.seconds_electrified) - if(V.shock(L, 100)) - return 0 if(V.panel_open) return 1 return 0 @@ -43,7 +39,7 @@ var/const/VENDING_WIRE_IDSCAN = 8 if(VENDING_WIRE_THROW) V.shoot_inventory = !mended if(VENDING_WIRE_CONTRABAND) - V.categories &= ~CAT_HIDDEN + V.categories &= ~CAT_HIDDEN if(VENDING_WIRE_ELECTRIFY) if(mended) V.seconds_electrified = 0 diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 002ba894ad..de4e8a4685 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -205,24 +205,23 @@ var/list/obj/machinery/requests_console/allConsoles = list() if(computer_deconstruction_screwdriver(user, O)) return if(istype(O, /obj/item/device/multitool)) - if(panel_open) - var/input = sanitize(input(usr, "What Department ID would you like to give this request console?", "Multitool-Request Console Interface", department)) - if(!input) - to_chat(usr, "No input found. Please hang up and try your call again.") - return - department = input - announcement.title = "[department] announcement" - announcement.newscast = 1 - - name = "[department] Requests Console" - allConsoles += src - if(departmentType & RC_ASSIST) - req_console_assistance |= department - if(departmentType & RC_SUPPLY) - req_console_supplies |= department - if(departmentType & RC_INFO) - req_console_information |= department + var/input = sanitize(input(usr, "What Department ID would you like to give this request console?", "Multitool-Request Console Interface", department)) + if(!input) + to_chat(usr, "No input found. Please hang up and try your call again.") return + department = input + announcement.title = "[department] announcement" + announcement.newscast = 1 + + name = "[department] Requests Console" + allConsoles += src + if(departmentType & RC_ASSIST) + req_console_assistance |= department + if(departmentType & RC_SUPPLY) + req_console_supplies |= department + if(departmentType & RC_INFO) + req_console_information |= department + return if(istype(O, /obj/item/weapon/card/id)) if(inoperable(MAINT)) return diff --git a/code/game/objects/items/weapons/tools/crowbar.dm b/code/game/objects/items/weapons/tools/crowbar.dm index 477815e62f..73b62f0741 100644 --- a/code/game/objects/items/weapons/tools/crowbar.dm +++ b/code/game/objects/items/weapons/tools/crowbar.dm @@ -51,6 +51,24 @@ toolspeed = 0.1 origin_tech = list(TECH_COMBAT = 4, TECH_ENGINEERING = 4) +/obj/item/weapon/tool/crowbar/hybrid + name = "strange crowbar" + desc = "A crowbar whose head seems to phase in and out of view." + catalogue_data = list(/datum/category_item/catalogue/anomalous/precursor_a/alien_crowbar) + icon_state = "hybcrowbar" + usesound = 'sound/weapons/sonic_jackhammer.ogg' + toolspeed = 0.4 + origin_tech = list(TECH_COMBAT = 4, TECH_ENGINEERING = 3) + reach = 2 + +/obj/item/weapon/tool/crowbar/hybrid/is_crowbar() + if(prob(10)) + var/turf/T = get_turf(src) + radiation_repository.radiate(get_turf(src), 5) + T.visible_message("\The [src] shudders!") + return FALSE + return TRUE + /obj/item/weapon/tool/crowbar/cyborg name = "hydraulic crowbar" desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbars in industrial synthetics." diff --git a/code/game/objects/items/weapons/tools/screwdriver.dm b/code/game/objects/items/weapons/tools/screwdriver.dm index cb6a7f7c90..a9bdd6cee8 100644 --- a/code/game/objects/items/weapons/tools/screwdriver.dm +++ b/code/game/objects/items/weapons/tools/screwdriver.dm @@ -92,6 +92,27 @@ toolspeed = 0.1 random_color = FALSE +/obj/item/weapon/tool/screwdriver/hybrid + name = "strange screwdriver" + desc = "A strange conglomerate of a screwdriver." + icon_state = "hybscrewdriver" + item_state = "screwdriver_black" + origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3) + slowdown = 0.1 + w_class = ITEMSIZE_NORMAL + usesound = 'sound/effects/uncloak.ogg' + toolspeed = 0.4 + random_color = FALSE + reach = 2 + +/obj/item/weapon/tool/screwdriver/hybrid/is_screwdriver() + if(prob(10)) + var/turf/T = get_turf(src) + radiation_repository.radiate(get_turf(src), 5) + T.visible_message("\The [src] shudders!") + return FALSE + return TRUE + /obj/item/weapon/tool/screwdriver/cyborg name = "powered screwdriver" desc = "An electrical screwdriver, designed to be both precise and quick." diff --git a/code/game/objects/items/weapons/tools/weldingtool.dm b/code/game/objects/items/weapons/tools/weldingtool.dm index a47e78bd57..720b0d7b22 100644 --- a/code/game/objects/items/weapons/tools/weldingtool.dm +++ b/code/game/objects/items/weapons/tools/weldingtool.dm @@ -436,6 +436,19 @@ nextrefueltick = world.time + 10 reagents.add_reagent("fuel", 1) +/obj/item/weapon/weldingtool/experimental/hybrid + name = "strange welding tool" + desc = "An experimental welder capable of synthesizing its own fuel from spatial waveforms. It's like welding with a star!" + icon_state = "hybwelder" + max_fuel = 20 + eye_safety_modifier = -2 // Brighter than the sun. Literally, you can look at the sun with a welding mask of proper grade, this will burn through that. + slowdown = 0.1 + toolspeed = 0.25 + w_class = ITEMSIZE_LARGE + flame_intensity = 5 + origin_tech = list(TECH_ENGINEERING = 5, TECH_PHORON = 4, TECH_PRECURSOR = 1) + reach = 2 + /* * Backpack Welder. */ diff --git a/code/game/objects/items/weapons/tools/wirecutters.dm b/code/game/objects/items/weapons/tools/wirecutters.dm index f53225ab41..181c786c4c 100644 --- a/code/game/objects/items/weapons/tools/wirecutters.dm +++ b/code/game/objects/items/weapons/tools/wirecutters.dm @@ -73,6 +73,26 @@ usesound = 'sound/items/jaws_cut.ogg' toolspeed = 0.5 +/obj/item/weapon/tool/wirecutters/hybrid + name = "strange wirecutters" + desc = "This cuts wires. With Science!" + icon_state = "hybcutters" + w_class = ITEMSIZE_NORMAL + slowdown = 0.1 + origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_PHORON = 2) + attack_verb = list("pinched", "nipped", "warped", "blasted") + usesound = 'sound/effects/stealthoff.ogg' + toolspeed = 0.4 + reach = 2 + +/obj/item/weapon/tool/wirecutters/hybrid/is_wirecutter() + if(prob(10)) + var/turf/T = get_turf(src) + radiation_repository.radiate(get_turf(src), 5) + T.visible_message("\The [src] shudders!") + return FALSE + return TRUE + /obj/item/weapon/tool/wirecutters/power name = "jaws of life" desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head." diff --git a/code/game/objects/items/weapons/tools/wrench.dm b/code/game/objects/items/weapons/tools/wrench.dm index 7b1ab6a07c..652e32cf75 100644 --- a/code/game/objects/items/weapons/tools/wrench.dm +++ b/code/game/objects/items/weapons/tools/wrench.dm @@ -25,6 +25,29 @@ usesound = 'sound/items/drill_use.ogg' toolspeed = 0.5 +/obj/item/weapon/tool/wrench/hybrid // Slower and bulkier than normal power tools, but it has the power of reach. + name = "strange wrench" + desc = "A wrench with many common uses. Can be usually found in your hand." + icon = 'icons/obj/tools.dmi' + icon_state = "hybwrench" + slot_flags = SLOT_BELT + force = 8 + throwforce = 10 + w_class = ITEMSIZE_NORMAL + slowdown = 0.1 + origin_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_PHORON = 2) + attack_verb = list("bashed", "battered", "bludgeoned", "whacked", "warped", "blasted") + usesound = 'sound/effects/stealthoff.ogg' + toolspeed = 0.5 + reach = 2 + +/obj/item/weapon/tool/wrench/hybrid/is_wrench() + if(prob(10)) + var/turf/T = get_turf(src) + radiation_repository.radiate(get_turf(src), 5) + T.visible_message("\The [src] shudders!") + return FALSE + return TRUE /datum/category_item/catalogue/anomalous/precursor_a/alien_wrench name = "Precursor Alpha Object - Fastener Torque Tool" diff --git a/code/modules/food/drinkingglass/drinkingglass.dm b/code/modules/food/drinkingglass/drinkingglass.dm index d4c8389a51..604b85665f 100644 --- a/code/modules/food/drinkingglass/drinkingglass.dm +++ b/code/modules/food/drinkingglass/drinkingglass.dm @@ -65,7 +65,7 @@ return 1 return 0 -/obj/item/weapon/reagent_containers/food/drinks/glass2/New() +/obj/item/weapon/reagent_containers/food/drinks/glass2/Initialize() ..() icon_state = base_icon diff --git a/code/modules/food/drinkingglass/shaker.dm b/code/modules/food/drinkingglass/shaker.dm index b653f14c60..3b81c6bdec 100644 --- a/code/modules/food/drinkingglass/shaker.dm +++ b/code/modules/food/drinkingglass/shaker.dm @@ -11,7 +11,7 @@ rim_pos = null // no fruit slices var/lid_color = "black" -/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/New() +/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/Initialize() ..() lid_color = pick("black", "red", "blue") update_icon() @@ -23,7 +23,7 @@ /obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake name = "protein shake" -/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake/New() +/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake/Initialize() ..() reagents.add_reagent("nutriment", 30) reagents.add_reagent("iron", 10) diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index 2a84b7f844..355e40b362 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -171,9 +171,11 @@ "phoron" = 15, "silver" = 16, "gold" = 18, + "marble" = 20, "uranium" = 30, "diamond" = 50, "platinum" = 40, + "lead" = 40, "mhydrogen" = 40, "verdantium" = 60) diff --git a/code/modules/mining/ore_datum.dm b/code/modules/mining/ore_datum.dm index da97a26873..b54ac6c5f0 100644 --- a/code/modules/mining/ore_datum.dm +++ b/code/modules/mining/ore_datum.dm @@ -158,8 +158,8 @@ var/global/list/ore_data = list() /ore/lead name = MAT_LEAD display_name = "lead glance" - compresses_to = "marble" - result_amount = 1 - spread_chance = 10 - ore = /obj/item/weapon/ore/marble - scan_icon = "mineral_rare" \ No newline at end of file + smelts_to = "lead" + result_amount = 3 + spread_chance = 20 + ore = /obj/item/weapon/ore/lead + scan_icon = "mineral_rare" diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index c51eeb3226..987ab3ff68 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1387,7 +1387,7 @@ /mob/living/carbon/human/proc/process_glasses(var/obj/item/clothing/glasses/G) if(G && G.active) see_in_dark += G.darkness_view - if(G.overlay) + if(G.overlay && client) client.screen |= G.overlay if(G.vision_flags) sight |= G.vision_flags diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index fae3542f18..fe06438c69 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -904,7 +904,11 @@ default behaviour is: /mob/living/proc/escape_buckle() if(buckled) - buckled.user_unbuckle_mob(src, src) + if(istype(buckled, /obj/vehicle)) + var/obj/vehicle/vehicle = buckled + vehicle.unload() + else + buckled.user_unbuckle_mob(src, src) /mob/living/proc/resist_grab() var/resisting = 0 diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 5b6909f042..adac86b438 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -299,7 +299,10 @@ var/list/ai_verbs_default = list( /obj/machinery/ai_powersupply/New(var/mob/living/silicon/ai/ai=null) powered_ai = ai powered_ai.psupply = src - forceMove(powered_ai.loc) + if(istype(powered_ai,/mob/living/silicon/ai/announcer)) //Don't try to get a loc for a nullspace announcer mob, just put it into it + forceMove(powered_ai) + else + forceMove(powered_ai.loc) ..() use_power(1) // Just incase we need to wake up the power system. diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index ad76cb061f..8628315601 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -144,11 +144,6 @@ charge -= output_used*SMESRATE // reduce the storage (may be recovered in /restore() if excessive) add_avail(output_used) // add output to powernet (smes side) - - if(output_used < 0.0001) // either from no charge or set to 0 - outputting(0) - investigate_log("lost power and turned off","singulo") - log_game("SMES([x],[y],[z]) Power depleted.") else if(output_attempt && output_level > 0) outputting = 1 else diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm index ad79a052de..08427ba027 100644 --- a/code/modules/power/tesla/energy_ball.dm +++ b/code/modules/power/tesla/energy_ball.dm @@ -247,7 +247,7 @@ closest_atom = A closest_dist = dist - else if(closest_mob) + else if(closest_machine) continue else if(istype(A, /obj/structure/blob)) diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index 4121b8a558..4cc755d158 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -32,12 +32,7 @@ if(newdir) set_dir(newdir) - if(dir & (dir-1)) // Diagonal. Forwards is *away* from dir, curving to the right. - forwards = turn(dir, 135) - backwards = turn(dir, 45) - else - forwards = dir - backwards = turn(dir, 180) + update_dir() if(on) operating = FORWARDS @@ -60,6 +55,18 @@ operating = OFF update() +/obj/machinery/conveyor/set_dir() + .=..() + update_dir() + +/obj/machinery/conveyor/proc/update_dir() + if(!(dir in cardinal)) // Diagonal. Forwards is *away* from dir, curving to the right. + forwards = turn(dir, 135) + backwards = turn(dir, 45) + else + forwards = dir + backwards = turn(dir, 180) + /obj/machinery/conveyor/proc/update() if(stat & BROKEN) icon_state = "conveyor-broken" diff --git a/code/modules/research/designs/precursor.dm b/code/modules/research/designs/precursor.dm index 41284c64ef..88575e5667 100644 --- a/code/modules/research/designs/precursor.dm +++ b/code/modules/research/designs/precursor.dm @@ -13,6 +13,51 @@ desc = initial(I.desc) ..() +/datum/design/item/precursor/crowbar + name = "Hybrid Crowbar" + desc = "A tool utilizing cutting edge modern technology, and ancient component designs." + id = "hybridcrowbar" + req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PRECURSOR = 1) + materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_GOLD = 250, MAT_URANIUM = 2500) + build_path = /obj/item/weapon/tool/crowbar/hybrid + sort_string = "PATAC" + +/datum/design/item/precursor/wrench + name = "Hybrid Wrench" + desc = "A tool utilizing cutting edge modern technology, and ancient component designs." + id = "hybridwrench" + req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_PRECURSOR = 1) + materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_SILVER = 300, MAT_URANIUM = 2000) + build_path = /obj/item/weapon/tool/wrench/hybrid + sort_string = "PATAW" + +/datum/design/item/precursor/screwdriver + name = "Hybrid Screwdriver" + desc = "A tool utilizing cutting edge modern technology, and ancient component designs." + id = "hybridscrewdriver" + req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_BLUESPACE = 2, TECH_MAGNET = 3, TECH_PRECURSOR = 1) + materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_PLASTIC = 8000, MAT_DIAMOND = 2000) + build_path = /obj/item/weapon/tool/screwdriver/hybrid + sort_string = "PATAS" + +/datum/design/item/precursor/wirecutters + name = "Hybrid Wirecutters" + desc = "A tool utilizing cutting edge modern technology, and ancient component designs." + id = "hybridwirecutters" + req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_PHORON = 2, TECH_PRECURSOR = 1) + materials = list(MAT_PLASTEEL = 2000, MAT_VERDANTIUM = 3000, MAT_PLASTIC = 8000, MAT_PHORON = 2750, MAT_DIAMOND = 2000) + build_path = /obj/item/weapon/tool/wirecutters/hybrid + sort_string = "PATBW" + +/datum/design/item/precursor/welder + name = "Hybrid Welding Tool" + desc = "A tool utilizing cutting edge modern technology, and ancient component designs." + id = "hybridwelder" + req_tech = list(TECH_ENGINEERING = 6, TECH_MATERIAL = 6, TECH_BLUESPACE = 3, TECH_PHORON = 3, TECH_MAGNET = 5, TECH_PRECURSOR = 1) + materials = list(MAT_DURASTEEL = 2000, MAT_MORPHIUM = 3000, MAT_METALHYDROGEN = 4750, MAT_URANIUM = 6000) + build_path = /obj/item/weapon/weldingtool/experimental/hybrid + sort_string = "PATCW" + /datum/design/item/anomaly/AssembleDesignName() ..() name = "Anomalous prototype ([item_name])" diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi index 6f23560d10..87cf6172c1 100644 Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ diff --git a/icons/obj/tools.dmi b/icons/obj/tools.dmi index a7d05818bf..f1a46abc1d 100644 Binary files a/icons/obj/tools.dmi and b/icons/obj/tools.dmi differ diff --git a/maps/~map_system/maps.dm b/maps/~map_system/maps.dm index fb695a52a6..490f4eab8e 100644 --- a/maps/~map_system/maps.dm +++ b/maps/~map_system/maps.dm @@ -30,6 +30,7 @@ var/list/all_maps = list() var/list/contact_levels = list() // Z-levels that can be contacted from the station, for eg announcements var/list/player_levels = list() // Z-levels a character can typically reach var/list/sealed_levels = list() // Z-levels that don't allow random transit at edge + var/list/xenoarch_exempt_levels = list() //Z-levels exempt from xenoarch finds and digsites spawning. var/list/empty_levels = null // Empty Z-levels that may be used for various things (currently used by bluespace jump) var/list/map_levels // Z-levels available to various consoles, such as the crew monitor (when that gets coded in). Defaults to station_levels if unset. @@ -178,6 +179,7 @@ var/list/all_maps = list() if(flags & MAP_LEVEL_CONTACT) map.contact_levels += z if(flags & MAP_LEVEL_PLAYER) map.player_levels += z if(flags & MAP_LEVEL_SEALED) map.sealed_levels += z + if(flags & MAP_LEVEL_XENOARCH_EXEMPT) map.xenoarch_exempt_levels += z if(flags & MAP_LEVEL_EMPTY) if(!map.empty_levels) map.empty_levels = list() map.empty_levels += z