From 44a285d58aa56976d6bc81e5938b5e221ef340c4 Mon Sep 17 00:00:00 2001 From: Gboster-0 <82319946+Gboster-0@users.noreply.github.com> Date: Sat, 23 Sep 2023 06:08:57 +0200 Subject: [PATCH 01/84] the doomed to fail PR --- .../antimatter/code/containment_jar.dm | 40 ++ .../code/modules/antimatter/code/control.dm | 358 ++++++++++++++++++ .../code/modules/antimatter/code/shielding.dm | 246 ++++++++++++ .../modules/antimatter/icons/antimatter.dmi | Bin 0 -> 22664 bytes .../code/modules/antimatter/readme.md.txt | 28 ++ .../code/modules/cargo/crates/engineering.dm | 21 + tgstation.dme | 3 + 7 files changed, 696 insertions(+) create mode 100644 monkestation/code/modules/antimatter/code/containment_jar.dm create mode 100644 monkestation/code/modules/antimatter/code/control.dm create mode 100644 monkestation/code/modules/antimatter/code/shielding.dm create mode 100644 monkestation/code/modules/antimatter/icons/antimatter.dmi create mode 100644 monkestation/code/modules/antimatter/readme.md.txt diff --git a/monkestation/code/modules/antimatter/code/containment_jar.dm b/monkestation/code/modules/antimatter/code/containment_jar.dm new file mode 100644 index 000000000000..d3c81cad86aa --- /dev/null +++ b/monkestation/code/modules/antimatter/code/containment_jar.dm @@ -0,0 +1,40 @@ +/obj/item/am_containment + name = "antimatter containment jar" + desc = "Holds antimatter." + icon = 'monkestation/code/modules/antimatter/icons/antimatter.dmi' + icon_state = "jar" + density = FALSE + anchored = FALSE + force = 8 + throwforce = 10 + throw_speed = 1 + throw_range = 2 + + var/fuel = 10000 + var/fuel_max = 10000//Lets try this for now + var/stability = 100//TODO: add all the stability things to this so its not very safe if you keep hitting in on things + + +/obj/item/am_containment/ex_act(severity, target) + switch(severity) + if(1) + explosion(get_turf(src), 1, 2, 3, 5)//Should likely be larger but this works fine for now I guess + if(src) + qdel(src) + if(2) + if(prob((fuel/10)-stability)) + explosion(get_turf(src), 1, 2, 3, 5) + if(src) + qdel(src) + return + stability -= 40 + if(3) + stability -= 20 + //check_stability() + return + +/obj/item/am_containment/proc/usefuel(wanted) + if(fuel < wanted) + wanted = fuel + fuel -= wanted + return wanted diff --git a/monkestation/code/modules/antimatter/code/control.dm b/monkestation/code/modules/antimatter/code/control.dm new file mode 100644 index 000000000000..ad596732250c --- /dev/null +++ b/monkestation/code/modules/antimatter/code/control.dm @@ -0,0 +1,358 @@ +/obj/machinery/power/am_control_unit + name = "antimatter control unit" + desc = "This device injects antimatter into connected shielding units, the more antimatter injected the more power produced. Wrench the device to set it up." + icon = 'monkestation/code/modules/antimatter/icons/antimatter.dmi' + icon_state = "control" + anchored = FALSE + density = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 100 + active_power_usage = 1000 + + interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT | INTERACT_ATOM_REQUIRES_ANCHORED + + var/list/obj/machinery/am_shielding/linked_shielding + var/list/obj/machinery/am_shielding/linked_cores + var/obj/item/am_containment/fueljar + var/update_shield_icons = 0 + var/stability = 100 + var/exploding = 0 + + var/active = 0//On or not + var/fuel_injection = 2//How much fuel to inject + var/shield_icon_delay = 0//delays resetting for a short time + var/reported_core_efficiency = 0 + + var/power_cycle = 0 + var/power_cycle_delay = 4//How many ticks till produce_power is called + var/stored_core_stability = 0 + var/stored_core_stability_delay = 0 + + var/stored_power = 0//Power to deploy per tick + + +/obj/machinery/power/am_control_unit/Initialize() + . = ..() + linked_shielding = list() + linked_cores = list() + + +/obj/machinery/power/am_control_unit/Destroy()//Perhaps damage and run stability checks rather than just del on the others + for(var/obj/machinery/am_shielding/AMS in linked_shielding) + AMS.control_unit = null + qdel(AMS) + QDEL_NULL(fueljar) + return ..() + + +/obj/machinery/power/am_control_unit/process() + if(exploding) + explosion(get_turf(src),8,12,18,12) + if(src) + qdel(src) + + if(update_shield_icons && !shield_icon_delay) + check_shield_icons() + update_shield_icons = 0 + + if(machine_stat & (NOPOWER|BROKEN) || !active)//can update the icons even without power + return + + if(!fueljar)//No fuel but we are on, shutdown + toggle_power() + playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 0) + return + + add_avail(stored_power) + + power_cycle++ + if(power_cycle >= power_cycle_delay) + produce_power() + power_cycle = 0 + + return + + +/obj/machinery/power/am_control_unit/proc/produce_power() + playsound(src.loc, 'sound/effects/bang.ogg', 25, 1) + var/core_power = reported_core_efficiency//Effectively how much fuel we can safely deal with + if(core_power <= 0) + return 0//Something is wrong + var/core_damage = 0 + var/fuel = fueljar.usefuel(fuel_injection) + + stored_power = (fuel/core_power)*fuel*200000 + //Now check if the cores could deal with it safely, this is done after so you can overload for more power if needed, still a bad idea + if(fuel > (2*core_power))//More fuel has been put in than the current cores can deal with + if(prob(50)) + core_damage = 1//Small chance of damage + if((fuel-core_power) > 5) + core_damage = 5//Now its really starting to overload the cores + if((fuel-core_power) > 10) + core_damage = 20//Welp now you did it, they wont stand much of this + if(core_damage == 0) + return + for(var/obj/machinery/am_shielding/AMS in linked_cores) + AMS.stability -= core_damage + AMS.check_stability(1) + playsound(src.loc, 'sound/effects/bang.ogg', 50, 1) + return + + +/obj/machinery/power/am_control_unit/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return + switch(severity) + if(1) + if(active) + toggle_power() + stability -= rand(15,30) + if(2) + if(active) + toggle_power() + stability -= rand(10,20) + +/obj/machinery/power/am_control_unit/blob_act() + stability -= 20 + if(prob(100-stability))//Might infect the rest of the machine + for(var/obj/machinery/am_shielding/AMS in linked_shielding) + AMS.blob_act() + qdel(src) + return + check_stability() + return + + +/obj/machinery/power/am_control_unit/ex_act(severity, target) + stability -= (80 - (severity * 20)) + check_stability() + return + + +/obj/machinery/power/am_control_unit/bullet_act(obj/projectile/P) + . = ..() + if(P.armor_flag != BULLET) + stability -= P.force + check_stability() + + +/obj/machinery/power/am_control_unit/power_change() + ..() + if(machine_stat & NOPOWER) + if(active) + toggle_power(1) + else + use_power = NO_POWER_USE + + else if(!machine_stat && anchored) + use_power = IDLE_POWER_USE + + return + + +/obj/machinery/power/am_control_unit/update_icon() + if(active) + icon_state = "control_on" + else icon_state = "control" + return ..() + //No other icons for it atm + + +/obj/machinery/power/am_control_unit/attackby(obj/item/W, mob/user, params) + if(W.tool_behaviour == TOOL_WRENCH) + if(!anchored) + W.play_tool_sound(src, 75) + user.visible_message("[user.name] secures the [src.name] to the floor.", \ + "You secure the anchor bolts to the floor.", \ + "You hear a ratchet.") + src.anchored = TRUE + connect_to_network() + else if(!linked_shielding.len > 0) + W.play_tool_sound(src, 75) + user.visible_message("[user.name] unsecures the [src.name].", \ + "You remove the anchor bolts.", \ + "You hear a ratchet.") + src.anchored = FALSE + disconnect_from_network() + else + to_chat(user, "Once bolted and linked to a shielding unit it the [src.name] is unable to be moved!") + + else if(istype(W, /obj/item/am_containment)) + if(fueljar) + to_chat(user, "There is already a [fueljar] inside!") + return + + if(!user.transferItemToLoc(W, src)) + return + fueljar = W + user.visible_message("[user.name] loads an [W.name] into the [src.name].", \ + "You load an [W.name].", \ + "You hear a thunk.") + else + return ..() + + +/obj/machinery/power/am_control_unit/take_damage(damage, damage_type = BRUTE, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/welder.ogg', 100, 1) + else + return + if(damage >= 20) + stability -= damage/2 + check_stability() + +/obj/machinery/power/am_control_unit/proc/add_shielding(obj/machinery/am_shielding/AMS, AMS_linking = 0) + if(!istype(AMS)) + return 0 + if(!anchored) + return 0 + if(!AMS_linking && !AMS.link_control(src)) + return 0 + linked_shielding.Add(AMS) + update_shield_icons = 1 + return 1 + + +/obj/machinery/power/am_control_unit/proc/remove_shielding(obj/machinery/am_shielding/AMS) + if(!istype(AMS)) + return 0 + linked_shielding.Remove(AMS) + update_shield_icons = 2 + if(active) + toggle_power() + return 1 + + +/obj/machinery/power/am_control_unit/proc/check_stability()//TODO: make it break when low also might want to add a way to fix it like a part or such that can be replaced + if(stability <= 0) + qdel(src) + return + + +/obj/machinery/power/am_control_unit/proc/toggle_power(powerfail = 0) + active = !active + if(active) + use_power = ACTIVE_POWER_USE + visible_message("The [src.name] starts up.") + else + use_power = !powerfail + visible_message("The [src.name] shuts down.") + update_icon() + return + + +/obj/machinery/power/am_control_unit/proc/check_shield_icons()//Forces icon_update for all shields + if(shield_icon_delay) + return + shield_icon_delay = 1 + if(update_shield_icons == 2)//2 means to clear everything and rebuild + for(var/obj/machinery/am_shielding/AMS in linked_shielding) + if(AMS.processing) + AMS.shutdown_core() + AMS.control_unit = null + addtimer(CALLBACK(AMS, /obj/machinery/am_shielding.proc/controllerscan), 10) + linked_shielding = list() + else + for(var/obj/machinery/am_shielding/AMS in linked_shielding) + AMS.update_icon() + addtimer(CALLBACK(src, .proc/reset_shield_icon_delay), 20) + +/obj/machinery/power/am_control_unit/proc/reset_shield_icon_delay() + shield_icon_delay = 0 + +/obj/machinery/power/am_control_unit/proc/check_core_stability() + if(stored_core_stability_delay || linked_cores.len <= 0) + return + stored_core_stability_delay = 1 + stored_core_stability = 0 + for(var/obj/machinery/am_shielding/AMS in linked_cores) + stored_core_stability += AMS.stability + stored_core_stability/=linked_cores.len + addtimer(CALLBACK(src, .proc/reset_stored_core_stability_delay), 40) + +/obj/machinery/power/am_control_unit/proc/reset_stored_core_stability_delay() + stored_core_stability_delay = 0 + +/obj/machinery/power/am_control_unit/ui_interact(mob/user) + . = ..() + if((get_dist(src, user) > 1) || (machine_stat & (BROKEN|NOPOWER))) + if(!isAI(user)) + user.unset_machine() + user << browse(null, "window=AMcontrol") + return + + var/dat = "" + dat += "AntiMatter Control Panel
" + dat += "Close
" + dat += "Refresh
" + dat += "Force Shielding Update

" + dat += "Status: [(active?"Injecting":"Standby")]
" + dat += "Toggle Status
" + + dat += "Stability: [stability]%
" + dat += "Reactor parts: [linked_shielding.len]
"//TODO: perhaps add some sort of stability check + dat += "Cores: [linked_cores.len]

" + dat += "-Current Efficiency: [reported_core_efficiency]
" + dat += "-Average Stability: [stored_core_stability] (update)
" + dat += "Last Produced: [display_power(stored_power)]
" + + dat += "Fuel: " + if(!fueljar) + dat += "
No fuel receptacle detected." + else + dat += "Eject
" + dat += "- [fueljar.fuel]/[fueljar.fuel_max] Units
" + + dat += "- Injecting: [fuel_injection] units
" + dat += "- --|++

" + + + user << browse(dat, "window=AMcontrol;size=420x500") + onclose(user, "AMcontrol") + return + + +/obj/machinery/power/am_control_unit/Topic(href, href_list) + if(..()) + return + + if(href_list["close"]) + usr << browse(null, "window=AMcontrol") + usr.unset_machine() + return + + if(href_list["togglestatus"]) + toggle_power() + + if(href_list["refreshicons"]) + update_shield_icons = 1 + + if(href_list["ejectjar"]) + if(fueljar) + fueljar.forceMove(drop_location()) + fueljar = null + //fueljar.control_unit = null currently it does not care where it is + //update_icon() when we have the icon for it + + if(href_list["strengthup"]) + fuel_injection++ + + if(href_list["strengthdown"]) + fuel_injection-- + if(fuel_injection < 0) + fuel_injection = 0 + + if(href_list["refreshstability"]) + check_core_stability() + + updateDialog() + return diff --git a/monkestation/code/modules/antimatter/code/shielding.dm b/monkestation/code/modules/antimatter/code/shielding.dm new file mode 100644 index 000000000000..8e43762857f5 --- /dev/null +++ b/monkestation/code/modules/antimatter/code/shielding.dm @@ -0,0 +1,246 @@ +//like orange but only checks north/south/east/west for one step +/proc/cardinalrange(var/center) + var/list/things = list() + for(var/direction in GLOB.cardinals) + var/turf/T = get_step(center, direction) + if(!T) + continue + things += T.contents + return things + +/obj/machinery/am_shielding + name = "antimatter reactor section" + desc = "This device was built using a plasma life-form that seems to increase plasma's natural ability to react with neutrinos while reducing the combustibility." + icon = 'monkestation/code/modules/antimatter/icons/antimatter.dmi' + icon_state = "shield" + density = TRUE + dir = NORTH + use_power = NO_POWER_USE//Living things generally dont use power + idle_power_usage = 0 + active_power_usage = 0 + + var/obj/machinery/power/am_control_unit/control_unit = null + var/processing = FALSE//To track if we are in the update list or not, we need to be when we are damaged and if we ever + var/stability = 100//If this gets low bad things tend to happen + var/efficiency = 1//How many cores this core counts for when doing power processing, plasma in the air and stability could affect this + var/coredirs = 0 + var/dirs = 0 + + +/obj/machinery/am_shielding/Initialize() + . = ..() + addtimer(CALLBACK(src, .proc/controllerscan), 10) + +/obj/machinery/am_shielding/proc/overheat() + visible_message("[src] melts!") + new /obj/effect/hotspot(loc) + qdel(src) + +/obj/machinery/am_shielding/proc/collapse() + visible_message("[src] collapses back into a container!") + new /obj/item/am_shielding_container(drop_location()) + qdel(src) + +/obj/machinery/am_shielding/proc/controllerscan(priorscan = 0) + //Make sure we are the only one here + if(!isturf(loc)) + collapse() + for(var/obj/machinery/am_shielding/AMS in loc.contents) + if(AMS == src) + continue + collapse() + return + + //Search for shielding first + for(var/obj/machinery/am_shielding/AMS in cardinalrange(src)) + if(AMS && AMS.control_unit && link_control(AMS.control_unit)) + break + + if(!control_unit)//No other guys nearby look for a control unit + for(var/direction in GLOB.cardinals) + for(var/obj/machinery/power/am_control_unit/AMC in cardinalrange(src)) + if(AMC.add_shielding(src)) + break + + if(!control_unit) + if(!priorscan) + addtimer(CALLBACK(src, .proc/controllerscan, 1), 20) + return + collapse() + + +/obj/machinery/am_shielding/Destroy() + if(control_unit) + control_unit.remove_shielding(src) + if(processing) + shutdown_core() + //Might want to have it leave a mess on the floor but no sprites for now + return ..() + + +/obj/machinery/am_shielding/process() + if(!processing) + . = PROCESS_KILL + //TODO: core functions and stability + //TODO: think about checking the airmix for plasma and increasing power output + return + + +/obj/machinery/am_shielding/emp_act()//Immune due to not really much in the way of electronics. + return + +/obj/machinery/am_shielding/ex_act(severity, target) + stability -= (80 - (severity * 20)) + check_stability() + return + +/obj/machinery/am_shielding/bullet_act(obj/projectile/P) + . = ..() + if(P.armor_flag != BULLET) + stability -= P.force/2 + check_stability() + + +/obj/machinery/am_shielding/update_icon() + . = ..() + dirs = 0 + coredirs = 0 + cut_overlays() + for(var/direction in GLOB.alldirs) + var/turf/T = get_step(loc, direction) + for(var/obj/machinery/machine in T) + if(istype(machine, /obj/machinery/am_shielding)) + var/obj/machinery/am_shielding/shield = machine + if(shield.control_unit == control_unit) + if(shield.processing) + coredirs |= direction + if(direction in GLOB.cardinals) + dirs |= direction + + else + if(istype(machine, /obj/machinery/power/am_control_unit) && (direction in GLOB.cardinals)) + var/obj/machinery/power/am_control_unit/control = machine + if(control == control_unit) + dirs |= direction + + + var/prefix = "" + var/icondirs=dirs + + if(coredirs) + prefix="core" + + icon_state = "[prefix]shield_[icondirs]" + + if(core_check()) + add_overlay("core[control_unit && control_unit.active]") + if(!processing) + setup_core() + else if(processing) + shutdown_core() + + +/obj/machinery/am_shielding/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1) + switch(damage_type) + if(BRUTE) + if(sound_effect) + if(damage_amount) + playsound(loc, 'sound/weapons/smash.ogg', 50, 1) + else + playsound(loc, 'sound/weapons/tap.ogg', 50, 1) + if(BURN) + if(sound_effect) + playsound(src.loc, 'sound/items/welder.ogg', 100, 1) + else + return + if(damage_amount >= 10) + stability -= damage_amount/2 + check_stability() + + +//Call this to link a detected shilding unit to the controller +/obj/machinery/am_shielding/proc/link_control(obj/machinery/power/am_control_unit/AMC) + if(!istype(AMC)) + return 0 + if(control_unit && control_unit != AMC) + return 0//Already have one + control_unit = AMC + control_unit.add_shielding(src,1) + return 1 + + +//Scans cards for shields or the control unit and if all there it +/obj/machinery/am_shielding/proc/core_check() + for(var/direction in GLOB.alldirs) + var/found_am_device=0 + for(var/obj/machinery/machine in get_step(loc, direction)) + if(!machine) + continue//Need all for a core + if(istype(machine, /obj/machinery/am_shielding) || istype(machine, /obj/machinery/power/am_control_unit)) + found_am_device = 1 + break + if(!found_am_device) + return 0 + return 1 + + +/obj/machinery/am_shielding/proc/setup_core() + processing = TRUE + GLOB.machines |= src + START_PROCESSING(SSmachines, src) + if(!control_unit) + return + control_unit.linked_cores.Add(src) + control_unit.reported_core_efficiency += efficiency + return + + +/obj/machinery/am_shielding/proc/shutdown_core() + processing = FALSE + if(!control_unit) + return + control_unit.linked_cores.Remove(src) + control_unit.reported_core_efficiency -= efficiency + return + + +/obj/machinery/am_shielding/proc/check_stability(injecting_fuel = 0) + if(stability > 0) + return + if(injecting_fuel && control_unit) + control_unit.exploding = 1 + if(src) + overheat() + return + + +/obj/machinery/am_shielding/proc/recalc_efficiency(new_efficiency)//tbh still not 100% sure how I want to deal with efficiency so this is likely temp + if(!control_unit || !processing) + return + if(stability < 50) + new_efficiency /= 2 + control_unit.reported_core_efficiency += (new_efficiency - efficiency) + efficiency = new_efficiency + return + + + +/obj/item/am_shielding_container + name = "packaged antimatter reactor section" + desc = "A small storage unit containing an antimatter reactor section. To use place near an antimatter control unit or deployed antimatter reactor section and use a multitool to activate this package." + icon = 'monkestation/code/modules/antimatter/icons/antimatter.dmi' + icon_state = "box" + inhand_icon_state = "electronic" + lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' + w_class = WEIGHT_CLASS_BULKY + flags_1 = CONDUCT_1 + throwforce = 5 + throw_speed = 1 + throw_range = 2 + +/obj/item/am_shielding_container/multitool_act(mob/living/user, obj/item/I) + if(isturf(loc)) + new/obj/machinery/am_shielding(loc) + qdel(src) + return TRUE diff --git a/monkestation/code/modules/antimatter/icons/antimatter.dmi b/monkestation/code/modules/antimatter/icons/antimatter.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0b4bff1a1cff5f6e2f198f74ecc676a9940e9094 GIT binary patch literal 22664 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 V7s5>r9yfu8Rh2cBDike0{2#p8V-f%W literal 0 HcmV?d00001 diff --git a/monkestation/code/modules/antimatter/readme.md.txt b/monkestation/code/modules/antimatter/readme.md.txt new file mode 100644 index 000000000000..be2988bd573f --- /dev/null +++ b/monkestation/code/modules/antimatter/readme.md.txt @@ -0,0 +1,28 @@ +https://github.com/Monkestation/Monkestation2.0/pull/304 + +## Title: + +MODULE ID: ANTIMATTER + +### Description: + +A file containing the anti-matter reactor + +### TG Proc Changes: + +N/A +### Defines: + +N/A + +### Master file additions + +N/A + +### Included files that are not contained in this module: + +N/A + +### Credits: + +Gboster - Reverting a very old TG removal diff --git a/monkestation/code/modules/cargo/crates/engineering.dm b/monkestation/code/modules/cargo/crates/engineering.dm index 0f3411a773e5..a71039751586 100644 --- a/monkestation/code/modules/cargo/crates/engineering.dm +++ b/monkestation/code/modules/cargo/crates/engineering.dm @@ -112,3 +112,24 @@ ) crate_name = "Replacement Science Protolathe" crate_type = /obj/structure/closet/crate/secure/engineering + +/datum/supply_pack/engine/am_jar + name = "Antimatter Containment Jar Crate" + desc = "Two Antimatter containment jars stuffed into a single crate." + cost = CARGO_CRATE_VALUE * 10 + contains = list(/obj/item/am_containment = 2) + crate_name = "antimatter jar crate" + +/datum/supply_pack/engine/am_core + name = "Antimatter Control Crate" + desc = "The brains of the Antimatter engine, this device is sure to teach the station's powergrid the true meaning of real power." + cost = CARGO_CRATE_VALUE * 25 + contains = list(/obj/machinery/power/am_control_unit) + crate_name = "antimatter control crate" + +/datum/supply_pack/engine/am_shielding + name = "Antimatter Shielding Crate" + desc = "Contains nine Antimatter shields, somehow crammed into a crate." + cost = CARGO_CRATE_VALUE * 9 + contains = list(/obj/item/am_shielding_container = 9) + crate_name = "antimatter shielding crate" diff --git a/tgstation.dme b/tgstation.dme index 663fb1bbe32a..413a89efc63f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -5600,6 +5600,9 @@ #include "monkestation\code\modules\antagonists\wizard\equipment\spellbook_entries\mobility.dm" #include "monkestation\code\modules\antagonists\wizard\equipment\spellbook_entries\offensive.dm" #include "monkestation\code\modules\antagonists\wizard\equipment\spellbook_entries\summons.dm" +#include "monkestation\code\modules\antimatter\code\containment_jar.dm" +#include "monkestation\code\modules\antimatter\code\control.dm" +#include "monkestation\code\modules\antimatter\code\shielding.dm" #include "monkestation\code\modules\ballpit\ballbit_sink.dm" #include "monkestation\code\modules\ballpit\ballpit.dm" #include "monkestation\code\modules\bloodsuckers\bloodsucker_assets.dm" From f2c1d691eb8bcad61010b539d1e3f9b629c7ce99 Mon Sep 17 00:00:00 2001 From: Gboster-0 <82319946+Gboster-0@users.noreply.github.com> Date: Sat, 23 Sep 2023 06:14:33 +0200 Subject: [PATCH 02/84] Update readme.md.txt --- monkestation/code/modules/antimatter/readme.md.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/monkestation/code/modules/antimatter/readme.md.txt b/monkestation/code/modules/antimatter/readme.md.txt index be2988bd573f..64aa92171a1b 100644 --- a/monkestation/code/modules/antimatter/readme.md.txt +++ b/monkestation/code/modules/antimatter/readme.md.txt @@ -1,4 +1,4 @@ -https://github.com/Monkestation/Monkestation2.0/pull/304 +https://github.com/Monkestation/Monkestation2.0/pull/384 ## Title: @@ -25,4 +25,4 @@ N/A ### Credits: -Gboster - Reverting a very old TG removal +Gboster - Reverting a very old TG removal, modularizes and fixes it to be up-to-date with current proc's From 9ff365044043f02c69eb5bd60a8eb5f840bc40fd Mon Sep 17 00:00:00 2001 From: KoboldCommando Date: Mon, 25 Sep 2023 10:40:40 -0400 Subject: [PATCH 03/84] you can now empty nutrients --- code/modules/hydroponics/hydroponics.dm | 39 ++++++++++++++++++++----- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index abad7f3b0cf5..fc319d4e24d0 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -1029,12 +1029,13 @@ return if(issilicon(user)) //How does AI know what plant is? return - var/growth_mult = (1.01 ** -myseed.maturation) - if(growth >= myseed.harvest_age * growth_mult) - //if(myseed.harvest_age < age * max(myseed.production * 0.044, 0.5) && (myseed.harvest_age) < (age - lastproduce) * max(myseed.production * 0.044, 0.5) && (!harvest && !dead)) - nutrimentMutation() - if(myseed && myseed.yield != -1) // Unharvestable shouldn't be harvested - set_plant_status(HYDROTRAY_PLANT_HARVESTABLE) + if(myseed) + var/growth_mult = (1.01 ** -myseed.maturation) + if(growth >= myseed.harvest_age * growth_mult) + //if(myseed.harvest_age < age * max(myseed.production * 0.044, 0.5) && (myseed.harvest_age) < (age - lastproduce) * max(myseed.production * 0.044, 0.5) && (!harvest && !dead)) + nutrimentMutation() + if(myseed && myseed.yield != -1) // Unharvestable shouldn't be harvested + set_plant_status(HYDROTRAY_PLANT_HARVESTABLE) if(plant_status == HYDROTRAY_PLANT_HARVESTABLE) return myseed.harvest(user) @@ -1048,6 +1049,30 @@ if(user) user.examinate(src) +/obj/machinery/hydroponics/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) + return + if(issilicon(user)) + return + + if(reagents.total_volume) + to_chat(user, span_notice("You begin to dump out the tray's nutrient mix.")) + if(do_after(user, 4 SECONDS, target = src)) + playsound(user.loc, 'sound/effects/slosh.ogg', 50, TRUE, -1) + //dump everything on the floor + var/turf/user_loc = user.loc + if(istype(user_loc, /turf/open)) + user_loc.add_liquid_from_reagents(reagents) + else + user_loc = get_step_towards(user_loc, src) + user_loc.add_liquid_from_reagents(reagents) + adjust_plant_nutriments(100) //PURGE + else + to_chat(user, span_warning("The tray's nutrient mix is already empty!")) + + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + /** * Update Tray Proc * Handles plant harvesting on the tray side, by clearing the seed, names, description, and dead stat. @@ -1179,7 +1204,7 @@ ///The usb port circuit /obj/item/circuit_component/hydroponics - display_name = "Hydropnics Tray" + display_name = "Hydroponics Tray" desc = "Automate the means of botanical production. Trigger to toggle auto-grow." circuit_flags = CIRCUIT_FLAG_INPUT_SIGNAL From 75913d11086ad854de8899d69f733655b024bc6a Mon Sep 17 00:00:00 2001 From: KoboldCommando Date: Mon, 25 Sep 2023 11:22:28 -0400 Subject: [PATCH 04/84] adds instructions to description --- code/modules/hydroponics/hydroitemdefines.dm | 2 +- code/modules/hydroponics/hydroponics.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 0e2a60db34db..483e8ab772c3 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -181,7 +181,7 @@ returned_message += "\nPest level: [span_notice("[scanned_tray.pestlevel] / [MAX_TRAY_PESTS]")]" returned_message += "\nToxicity level: [span_notice("[scanned_tray.toxic] / [MAX_TRAY_TOXINS]")]" returned_message += "\nWater level: [span_notice("[scanned_tray.waterlevel] / [scanned_tray.maxwater]")]" - returned_message += "\nNutrition level: [span_notice("[round(scanned_tray.reagents.total_volume)] / [scanned_tray.maxnutri]")]" + returned_message += "\nNutrition level: [span_notice("[round(scanned_tray.reagents.total_volume)] / [scanned_tray.maxnutri]")] Right-click to empty." if(scanned_tray.yieldmod != 1) returned_message += "\nYield modifier on harvest: [span_notice("[scanned_tray.yieldmod]x")]" diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index fc319d4e24d0..3e76a880430a 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -614,7 +614,7 @@ . += span_info("It's empty.") . += span_info("Water: [waterlevel]/[maxwater].") - . += span_info("Nutrient: [round(reagents.total_volume)]/[maxnutri].") + . += span_info("Nutrient: [round(reagents.total_volume)]/[maxnutri]. Right-click to empty.") if(self_sustaining) . += span_info("The tray's self-sustenance is active, protecting it from species mutations, weeds, and pests.") if(self_growing) From e8a2e5830bc0c2391341a8cc07ff5b20285601ad Mon Sep 17 00:00:00 2001 From: KoboldCommando Date: Tue, 26 Sep 2023 19:56:32 -0400 Subject: [PATCH 05/84] resprites flamethrowers, adds chemthrowers --- code/game/objects/items/flamethrower.dm | 87 ++++++++++++++++-- .../inhands/weapons/flamethrower_lefthand.dmi | Bin 1747 -> 4481 bytes .../weapons/flamethrower_righthand.dmi | Bin 2179 -> 5333 bytes icons/obj/weapons/flamethrower.dmi | Bin 859 -> 1028 bytes 4 files changed, 77 insertions(+), 10 deletions(-) diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index ba26b1337837..83e865d69a23 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -23,6 +23,7 @@ var/obj/item/weldingtool/weldtool = null var/obj/item/assembly/igniter/igniter = null var/obj/item/tank/internals/plasma/ptank = null + var/obj/item/reagent_containers/cup/beaker/beaker = null var/warned_admins = FALSE //for the message_admins() when lit //variables for prebuilt flamethrowers var/create_full = FALSE @@ -42,6 +43,8 @@ QDEL_NULL(igniter) if(ptank) QDEL_NULL(ptank) + if(beaker) + qdel(beaker) return ..() /obj/item/flamethrower/process() @@ -69,6 +72,8 @@ . += "+ptank" if(lit) . += "+lit" + if(beaker) + . += "+beaker" /obj/item/flamethrower/afterattack(atom/target, mob/user, flag) . = ..() @@ -83,7 +88,7 @@ if(target_turf) var/turflist = get_line(user, target_turf) log_combat(user, target, "flamethrowered", src) - flame_turf(turflist) + flame_turf(turflist, user) /obj/item/flamethrower/wrench_act(mob/living/user, obj/item/tool) . = TRUE @@ -137,6 +142,20 @@ update_appearance() return + else if(istype(W, /obj/item/reagent_containers/cup/beaker)) + if(beaker) + if(user.transferItemToLoc(W,src)) + beaker.forceMove(get_turf(src)) + beaker = W + to_chat(user, "You swap [beaker] in [src]!") + return + if(!user.transferItemToLoc(W, src)) + return + beaker = W + to_chat(user, "You attach [beaker] to [src]!") + update_icon() + return + else return ..() @@ -150,7 +169,12 @@ toggle_igniter(user) /obj/item/flamethrower/AltClick(mob/user) - if(ptank && isliving(user) && user.can_perform_action(src, NEED_DEXTERITY|NEED_HANDS)) + if(beaker && isliving(user) && user.can_perform_action(src, NEED_DEXTERITY|NEED_HANDS)) + user.put_in_hands(beaker) + beaker = null + to_chat(user, "You remove [beaker] from [src]!") + update_icon() + else if(ptank && isliving(user) && user.can_perform_action(src, NEED_DEXTERITY|NEED_HANDS)) user.put_in_hands(ptank) ptank = null to_chat(user, span_notice("You remove the plasma tank from [src]!")) @@ -158,8 +182,18 @@ /obj/item/flamethrower/examine(mob/user) . = ..() - if(ptank) - . += span_notice("\The [src] has \a [ptank] attached. Alt-click to remove it.") + if(beaker) + . += "\The [src] has \a [beaker] attached. Alt-click to remove it." + if(ptank) + . += "\The [src] has \a [ptank] attached." + else + . += "A plasma tank could be attached." + else + . += "A beaker could be attached." + if(ptank) + . += span_notice("\The [src] has \a [ptank] attached. Alt-click to remove it.") + else + . += "A plasma tank could be attached." /obj/item/flamethrower/proc/toggle_igniter(mob/user) if(!ptank) @@ -192,8 +226,8 @@ update_appearance() //Called from turf.dm turf/dblclick -/obj/item/flamethrower/proc/flame_turf(turflist) - if(!lit || operating) +/obj/item/flamethrower/proc/flame_turf(turflist, mob/user) + if(operating) return operating = TRUE var/turf/previousturf = get_turf(src) @@ -203,10 +237,15 @@ var/list/turfs_sharing_with_prev = previousturf.get_atmos_adjacent_turfs(alldir=1) if(!(T in turfs_sharing_with_prev)) break - if(igniter) - igniter.ignite_turf(src,T) - else - default_ignite(T) + if(lit) + if(igniter) + igniter.ignite_turf(src,T) + else + default_ignite(T) + if(beaker) + if(beaker.reagents.total_volume) + project_reagents(T, user) + beaker.reagents.remove_all(beaker.reagents.maximum_volume * 0.05) //only reduce reagents once per shot sleep(0.1 SECONDS) previousturf = T operating = FALSE @@ -228,6 +267,34 @@ target.hotspot_expose((tank_mix.temperature*2) + 380,500) //location.hotspot_expose(1000,500,1) +/obj/item/flamethrower/proc/project_reagents(atom/target, mob/user) + var/range = max(min(3, get_dist(src, target)), 1) + + var/obj/effect/decal/chempuff/reagent_puff = new /obj/effect/decal/chempuff(get_turf(src)) + + reagent_puff.create_reagents(beaker.reagents.maximum_volume * 0.05) + var/puff_reagent_left = range //how many turf, mob or dense objet we can react with before we consider the chem puff consumed + beaker.reagents.copy_to(reagent_puff, beaker.reagents.maximum_volume * 0.05, 1/range) + reagent_puff.color = mix_color_from_reagents(reagent_puff.reagents.reagent_list) + var/wait_step = max(round(2+3/range), 2) + + var/puff_reagent_string = reagent_puff.reagents.get_reagent_log_string() + var/turf/src_turf = get_turf(src) + + log_combat(user, src_turf, "fired a puff of reagents from", src, addition="with a range of \[[range]\], containing [puff_reagent_string].") + user.log_message("fired a puff of reagents from \a [src] with a range of \[[range]\] and containing [puff_reagent_string].", LOG_ATTACK) + + // do_spray includes a series of step_towards and sleeps. As a result, it will handle deletion of the chempuff. + do_spray(target, wait_step, reagent_puff, range, puff_reagent_left, user) + +/obj/item/flamethrower/proc/do_spray(atom/target, wait_step, obj/effect/decal/chempuff/reagent_puff, range, puff_reagent_left, mob/user) + var/datum/move_loop/our_loop = SSmove_manager.move_towards_legacy(reagent_puff, target, wait_step, timeout = range * wait_step, flags = MOVEMENT_LOOP_START_FAST, priority = MOVEMENT_ABOVE_SPACE_PRIORITY) + reagent_puff.user = user + reagent_puff.sprayer = src + reagent_puff.lifetime = puff_reagent_left + reagent_puff.RegisterSignal(our_loop, COMSIG_PARENT_QDELETING, TYPE_PROC_REF(/obj/effect/decal/chempuff, loop_ended)) + reagent_puff.RegisterSignal(our_loop, COMSIG_MOVELOOP_POSTPROCESS, TYPE_PROC_REF(/obj/effect/decal/chempuff, check_move)) + /obj/item/flamethrower/Initialize(mapload) . = ..() if(create_full) diff --git a/icons/mob/inhands/weapons/flamethrower_lefthand.dmi b/icons/mob/inhands/weapons/flamethrower_lefthand.dmi index b952fb8d11059a21b96c599d0b4a3ea306533ccd..4ed4643c10c45511b537ea036ea434888dd5708c 100644 GIT binary patch literal 4481 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 Jv%_BT{{qo$&Ncu5 literal 1747 zcmZ`(dsNc*8)mbORx^LcY;A2s7L}I{m|9*^SW8^E%oMeoimm~fY z)Z9$1X6nz#OB2*nXCPUkr6MMp;qa1(Uy+-F40rZNJ7>T5oX`6{=lSFPJm)#jc?(aS z{Mvfcj!hsC$QpCpFT^st*WbnuEj?uHGT1U0l+ZIIKYYrC;SmzG zuPyhNAY3pb-o=GqYh@=ocuICdDg%K&d=KMyG&H?JDeFquO8i0yh|x92LLCdX$gaUl z5rwZVL%iK>U4FFx!~iaMjOvFLbXg5RZ3}$eHtzrUzyZ=sKjZqT4o#TsB6dRvc*kiI zc_Yz_p;Ye`Pi7iiS$He4ekhsN2RC*4CZOZQa%=({*8H`k;~bwH(A$D`WIvnNJSq>L zQ#lvymgyC7zXLfi$G{`Mt;`aeBqj&P7Xkc6hawn<{0cQYprJpcTp7+_)Vd$Q*q;A& zh+@U5L0qSCU|ELc`vjuRCecEK^lf}w=EX=tZIt9Cxx?0~4_l+z0qnJvM1SaW|2cBU3J;EEk>ubb?V#%8&b_^( zS6T+++nllTkvE>L3PFW5uuK-&VgZ8ndJ}cJw?4R*1)a@avps%QVp7@s=TA?IdZndpR)dG&9$G zR7rO48Y)z@c?Xk;D1A9*U#eEi9Bd!I7+Nj(<$*`{ⓈE3QAgca9+dbEos}@@A?J} zWpeli30M=IGH|oJ*r0|!h&QD&q9QgR7nF}-;wC5lqd|wHwY>}0??)r+dJ>=L z1Ojb5JA=DgB*+co?AA~u<<-(f`0({o2t5K{5j1q^3xe%*2K$0Hvz*ondF3fxyd$Pp zyLGMkEa~@2VO%-$NgI_ap_X^437?4a=x-}={yXVrvF@30UVlvul+mkrm-Rez6^YE- z93~bbI5z6E6>7HSmyA`z4G1(DN$Xdqv8=1^%t-2Lgw;D5rMo4p|C zLq@D`%%vxSuI_=-SD0P_14O?QOP~FxZ%?gAsB?x+9GXzz0-p2;ZH_=uQwHc!B&|ga z^oDB;RmuEG%I%nrhH%wwr@)tYvCJ#c{?ye)vjX3Z*k8DyoDbE)6WOESS#iIv*27+0 zMKyM-fn&GmHU|A9qyyKZUO!3yR@ssQFc|cGG5Gs--1(2t+{wuMnuAcB_uVUFQK1cj zn4-ajZv$Buw!HDV_#@Q_sDU6{y90&-EM7f*sKixkL_`dhkw{|(bvpsC6J)rF*40-T zboS7$6@wnX6tm_AKP>tV7?Fx&Z~9mAv#g)xsd_u11X}%8{AqF&nHu&jw^-XP+>!qg zWo=5HU&$03(a26aG7|ZJMO#iS4*jC}PDqb+;%7D`MUH!VX`@R(7E0lOd_Iv;Lt;^l zo>A9e2JOe$!Rg2xoElLZ^Ve?Zl99O!+BIsCR=;8ldNiKMANZdvyj~YvS{FNbPk7j6 zPiK~%u6BL>6UR?SCOc(r_rxf3mx(j0FUqe?2O(*%4SIWVS3cFaSRzAA8La-z)O8M< zO`7L40pW|*pzM3ckZbyB?3D8=&>qFM2+^h>GCg7~NldBI@`DGJx ze$vv)pCGu>k@;%h#b!ZF&MlNdAG4lL78CKqx~1>^t@F!LBlsZL+1B)0^B09dpY&_| HDmv#+GmBXO diff --git a/icons/mob/inhands/weapons/flamethrower_righthand.dmi b/icons/mob/inhands/weapons/flamethrower_righthand.dmi index d9cca464ac01be24cd1172da29c7e24ba2fa666c..e7df3a3c09bdfa27b7d0b67c51f9988108213a49 100644 GIT binary patch literal 5333 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 E0RILaF#rGn literal 2179 zcmb7Gdo&wZ8V}8&TC|6v@d#CH)tiobC8ed*Xw+j-Em0FHL8?(9B%x7V#TYGydRHj6 z^$w%PbK4jiwBB#4A&6ijgm@$qXaCu=+nwF{<9EM%?)QE7+~2+5<0iS>ye=gPk^}$% zQjQMST!pgZ2ohq#(RDgRTqsg;?p_hs5SW06!4D#W(P02URNkZBR>>|yxx{(%B^}75 z2l=zKeo(qx&!^ePz=ufD!}#-FxE+-|;9|aS6mq)dsR|tDgmyHqI-$7MtWL4>6IC2L zQK7~@(;M_K+^(aX+SBK1d)v%$pzPdYKrg(3OkD`P+ytNr?w6cdBm5tGBNjfDN8|R=j-kj8_@{N@1;HU3Z zmX5)5kZ$bfGNSW#qRnNngcn_oFA}@Hx!ch*UX#3h>bOYKIrb}M$sp&ybQa{$SSlMF zfun}z=z4)=%mJ$(`4&TJQ7S@eZHvZbNC3#E0S+2~AMF8ZsemgWkvLOPKrj$6_%Dk0 z9~3>^s?{?U>BzrV+Z3l@j~u=X8^lYBt5KuAugcV_9hDonE_;b%)$Vm3=$)mK!&mS| zrG#G^;3U`6!MfYHu)xR|%n*$x&sf?Ci^axFwegk}l8tZ$OT~Q6F>UHHol?Mz+#&E; z(RlnJZjp1p(mq{vSRd#ImS%N*xi>en#%1gT%7^$9W^E+`!yhhL=-mXif z!LTLXhEvwn&L$Y2Y+|3SL?a-_E$6m_If>otHY$%rqbI4v5W_vsOIhRtk93lvZy*x-Lwy`k;g<5skf_^lH<|88a`&CS^7;MWH&JbG`*!) zr={hs9vIWUm$k3JKz;1~WoYGRXmnf&F2X{^&j-TbKWX;Eqju(C`4}H0nb`^6$lD5Q zT3rtto3&mnxfpaX|C4rXsOC+W!1ERKU^5}DDvyoYD0ql%5?T>|!3+k`LN+`QQ5&Cq zpC#_7PQVSvonliyccVXtHV&`yhQ@kHooZGwzJc63)nw;khY^xO`<_vX--LKO#Ms0P zQ{UN|kEa;u>NmCt6yz0lwgVrayJ>y2gC6sjp`oEqj;vWuw8_odR?nK(X`H40=qv<* zKixdqrlZ_I6Q@(`KcOe z#=zCV$ySX|g6F7(T(|>0+3zCG<^5`1M7wbgZarf4OI28qo`_bxR{yh8d+~9wN5yzXLNb@x?<3N=P!x zrc|c0G^hrAZZQSN!Es{1>)UUPOOWvYQ1%oLde zUIiWDYf1XMm-O!*u7Jp-hG4b9I48==vuV>#u-#7z@5cZaAD3NZcg&2SX9j5+=PX3ij1(NEx zbyi0DZi-#Jseb%-oSCOmwgu%D@hB^o?IMkjbtA9RJQo`6kXhExs%n!aomK3{ZkIuw zkHU3Ar}%;i>Coo&lz}mrcsSZ;YrFOE^hPINLL8h40h)l@TgSo07t{dSAVe9AOW{N;7Pp&CuzHJ=hu`A=k=Af8_&y zq?&d9UI+PqC~k_tEh6_o7h*o`dSximnf@9-Cr^vr7sbS@z1`Gw$wJ7&ZpvOtZaXZy zJXiUwYCBrrn)yb^z20Np)S1IJv!4a?O<5QFyXO>}bG%oa2Hv4USXTPeq<0=|z004jp0{{R3ySi59Fz}?CRW&i*H0d!JMQvg8b z*k%9#0JeHmSad{Xb7OL8aCB*JZU6vyoRyJ54uU`oMb|T@n7|TZ0MVTr12HV*4nrtT z1A^%^5^wKBOk|;=yWi%u|2Os3K0g$t%8rG+0$Ch-wNvRTl48V~jVsoP6bA5Qcq%Mw z1}D7$PdzeF>`750S=WoDXh@%7(l7GDx^I`U4*5Nlx-NA3=Hxa^!c91vYB~q8pZO$X;RNM=I02^@^YrUkbuQ-jlkU8i18p;h8M@`M zwlePf;q`1YRpol}t>_B6-h3+x_=v+{-T43j000000N_W%^^5cR$0IG*_d9;FzW;|m zH-C&Jd^rB06=R4dG)KdHebX<7(Q}5<*wg70;>%xJDa8~g2mGpUuFze-W9DpsxG#;j zHl*{BR!S~KZyP)$&`SeB4&3Rm9EBX`D{V66p zPGfELzAbh1?L$ENZvV*5`GC%4gH+!S_><){)knUrzOC;_-|Zi{IUle+!$|?V{bEP| z9$?CR#Ajvww1AKFO~3eA&&~M{XiqTTBl7|>dZ~Z=hC| z!Re*`c_XE5Y0TC#PcQW!x9v&vQhxvd00026AUge>)L*Z^llm+7cXEH-{%#3>Nq@K7 zm#<8~SH_>2=YCMu-(9Z50WVihKcXL$^mmu*?KT|ncH{JXKPc(%F2rC$g46T;pmu*J z_Sf$3#Qy62ozP#qzZ3gw_jgi%?fy>euif8?{k8i$xxaRQhkg(M0002s2cg{$&O^H& zoR4-tC=aOI4~h}>cRTI>|1}Hsce(+W=Jeb=60000F+M^#f(AS*yUJv|v28Avt&YES`uUIau!LP$tR zXJ%%81qHJZ5K&G}DQUP900001bW%=J06^y0W&i*Hs(MsdbVOxyV{&P5bZKvH004NL zQ&wCnO$6-sZ+ZD$n$Xq^4ZxsJ#f0eAcPd-T=j;| z^VS(C$YOCtuEQ9Zx4(ZE>@a|^$`R?5Cn0;SmgR;8Px$RA9=}y0%Gw36m#2MSWksPnFI} z&P!Ea%F19}^XHfG272XteGLeq&Hy#3U&oj4oA32qpbYG@Y?J97xzfU?4~A{ttU1FQ zsOx&ba60uZBeqfwSPZCGPiT3g0>!ShX0OnBuK@bE%0^-Z};JPQ@!|UDo9$N3t_o+ws{Xfv-_|ANvdGf!0|3BvV zlw?U~zW3$-Npw5k>rvHr|3EAML+D>u!Xe)`{Q;-_1JHVt@6G-ItA7AmZ}Pp_A7J(m zK;8NXts}@k=M&<`W|upH3L5|b002ovPDHLkV1mnVe=Yz3 From 7e444f3a6ccb5dbb24d25cc701e5c237a8250f66 Mon Sep 17 00:00:00 2001 From: Gboster-0 <82319946+Gboster-0@users.noreply.github.com> Date: Thu, 28 Sep 2023 08:22:58 +0200 Subject: [PATCH 06/84] 8 times less power, how fun --- monkestation/code/modules/antimatter/code/control.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/monkestation/code/modules/antimatter/code/control.dm b/monkestation/code/modules/antimatter/code/control.dm index ad596732250c..fb4297e35e29 100644 --- a/monkestation/code/modules/antimatter/code/control.dm +++ b/monkestation/code/modules/antimatter/code/control.dm @@ -81,7 +81,7 @@ var/core_damage = 0 var/fuel = fueljar.usefuel(fuel_injection) - stored_power = (fuel/core_power)*fuel*200000 + stored_power = (fuel/core_power)*fuel*25000 //Now check if the cores could deal with it safely, this is done after so you can overload for more power if needed, still a bad idea if(fuel > (2*core_power))//More fuel has been put in than the current cores can deal with if(prob(50)) From 26c24f75bc6b06676e39b47d9a32497cbd50fcc5 Mon Sep 17 00:00:00 2001 From: Jeremiah <42397676+jlsnow301@users.noreply.github.com> Date: Sat, 23 Sep 2023 02:14:12 -0700 Subject: [PATCH 07/84] Feature: bitrunner, a new supply role (READY) (#77259) [Design doc](https://hackmd.io/@shadowh4nd/r1P7atPjn) Adds a new supply role centered on short dungeon-esque runs with a focus on unifying the job with the fun part. Some virtual domains are combat related, some are silly, some focus on "objectives". Avatar health is linked to your physical presence and retries are limited.
Photos, WIP Net pod stasis ![netpod](https://github.com/tgstation/tgstation/assets/42397676/d99073a4-2438-4600-83c0-cafb7b3fee55) Server loaded ![](https://cdn.discordapp.com/attachments/1131433451841662996/1135304774976278759/dreamseeker_N14j6dwLcK.gif) Server cooldown ![](https://cdn.discordapp.com/attachments/1131433451841662996/1135304775945179217/dreamseeker_NkIwWLJZma.gif) the quantum console UI ![Screenshot 2023-08-05 105742](https://github.com/tgstation/tgstation/assets/42397676/3a45feaf-8c80-46b2-81c9-355932d1b014) Cyber police antag page ![Screenshot 2023-08-16 205303](https://github.com/tgstation/tgstation/assets/42397676/fc28bcdd-2a2a-487b-927c-904f224c1b89) A safehouse ![image](https://github.com/tgstation/tgstation/assets/42397676/c22ac115-4e00-432a-aeeb-b6afdb1ef750) Domain info page, every domain gets this (and sometimes help text) ![Screenshot 2023-08-04 141859](https://github.com/tgstation/tgstation/assets/42397676/ba9ed6d9-a318-4466-b246-d2da0fa05676) Me getting steamrolled in one of the missions ![syndicant](https://github.com/tgstation/tgstation/assets/42397676/3eb3099a-f9b2-4431-854d-50d8cad9b7f0) Ghost roles getting notified that server is kicking them out ![Screenshot 2023-08-04 135454](https://github.com/tgstation/tgstation/assets/42397676/edab916c-6255-4b83-b2e7-155df2f03aab) Players enjoying the new combat missions ![Screenshot 2023-08-05 005727](https://github.com/tgstation/tgstation/assets/42397676/e302a66f-610d-4fe1-82e0-7c8aec3913ea) Players exploring some of the virtual maps ![Screenshot 2023-08-06 220919](https://github.com/tgstation/tgstation/assets/42397676/75a92a0b-6aa1-4bac-8fd1-c9fb47c955da) (Not part of the PR, but) ![Screenshot 2023-08-06 221527](https://github.com/tgstation/tgstation/assets/42397676/012475ec-bfa5-4fd3-9dcb-31d222bb7bef) New bitrunner vendor ![dreamseeker_V62h2BGdEl](https://github.com/tgstation/tgstation/assets/42397676/37ca8f69-f75e-45c9-b324-e6b31696c7b7)
Content, firstly, and moreso being supply department content. The framework that this implements is a great (preauthorized) replacement for two systems which are collecting dust: BEPIS and the gateway. They integrate into this system and it's a direct upgrade. This adds a way for the players on station to generate materials (if that remains). The nice part about it is that I can throw balance and believability to the wind, as unlike its unrelated predecessor VR or away missions, bitrunning entirely washes its hands of the map and mobs each reboot. It offers a very expandable map framework to add content and it's all fairly well documented. I'd like to add a feature that represents the idea that jobs don't have to be mundane and "external" jobs can stay tied to the main gameplay loop. jlsnow301, kinneb, mmmiracles, ical92, spockye :cl: add: Adds Bitrunning to supply department- a semi-offstation role that rewards teamwork. add: Adds new machines to complement the job- net pod, quantum server, quantum consoles, and the nexacache vendor. add: Adds several new maps which can be loaded and unloaded at will. add: Some flair for the new bitrunning vendor. add: Adds a new antagonist for the virtual domain only. Short lived ghost role that fights bitrunners. del: Removes the BEPIS machine, moves its tech into the Bitrunning vendor. /:cl: --------- Co-authored-by: MMMiracles Co-authored-by: Ical Co-authored-by: spockye <79304582+spockye@users.noreply.github.com> Co-authored-by: Watermelon914 <37270891+Watermelon914@users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> --- .../map_files/Deltastation/DeltaStation2.dmm | 775 +- .../map_files/IceBoxStation/IceBoxStation.dmm | 421 +- _maps/map_files/KiloStation/KiloStation.dmm | 436 +- _maps/map_files/MetaStation/MetaStation.dmm | 421 +- _maps/map_files/NorthStar/north_star.dmm | 460 +- _maps/map_files/debug/runtimestation.dmm | 156 +- .../maintenance_modules/barcargoupper_1.dmm | 18 +- .../maintenance_modules/barcargoupper_2.dmm | 18 +- .../maintenance_modules/barcargoupper_3.dmm | 18 +- .../barcargoupper_cave_1.dmm | 16 +- .../barcargoupper_cave_2.dmm | 16 +- .../barcargoupper_cave_3.dmm | 26 +- _maps/map_files/tramstation/tramstation.dmm | 584 +- _maps/safehouses/README.md | 17 + _maps/safehouses/TEMPLATES/TEMPLATE.dmm | 82 + _maps/safehouses/den.dmm | 224 + _maps/safehouses/dig.dmm | 165 + _maps/safehouses/ice.dmm | 254 + _maps/safehouses/lavaland_boss.dmm | 243 + _maps/safehouses/mine.dmm | 164 + _maps/safehouses/shuttle.dmm | 228 + _maps/safehouses/shuttle_space.dmm | 231 + _maps/safehouses/test_only_safehouse.dmm | 29 + _maps/safehouses/wood.dmm | 120 + _maps/virtual_domains/README.md | 32 + _maps/virtual_domains/ash_drake.dmm | 1750 +++++ _maps/virtual_domains/beach_bar.dmm | 3272 +++++++++ _maps/virtual_domains/blood_drunk_miner.dmm | 1887 +++++ _maps/virtual_domains/bubblegum.dmm | 2250 ++++++ _maps/virtual_domains/clown_planet.dmm | 2322 ++++++ _maps/virtual_domains/colossus.dmm | 2250 ++++++ _maps/virtual_domains/gondola_asteroid.dmm | 1784 +++++ _maps/virtual_domains/hierophant.dmm | 1066 +++ _maps/virtual_domains/legion.dmm | 6370 +++++++++++++++++ _maps/virtual_domains/pipedream.dmm | 3713 ++++++++++ _maps/virtual_domains/pirates.dmm | 2601 +++++++ _maps/virtual_domains/stairs_and_cliffs.dmm | 6056 ++++++++++++++++ _maps/virtual_domains/syndicate_assault.dmm | 4265 +++++++++++ _maps/virtual_domains/test_only.dmm | 52 + _maps/virtual_domains/vaporwave.dmm | 1015 +++ _maps/virtual_domains/wendigo.dmm | 1373 ++++ _maps/virtual_domains/xeno_nest.dmm | 2071 ++++++ code/__DEFINES/access.dm | 5 + code/__DEFINES/alerts.dm | 9 + code/__DEFINES/antagonists.dm | 1 + code/__DEFINES/atom_hud.dm | 1 + code/__DEFINES/bitrunning.dm | 20 + code/__DEFINES/computers.dm | 3 + .../dcs/signals/signals_bitrunning.dm | 31 + .../signals_mob/signals_mob_spawner.dm | 6 + code/__DEFINES/jobs.dm | 30 +- code/__DEFINES/role_preferences.dm | 59 +- code/__DEFINES/status_effects.dm | 7 + code/__HELPERS/mobs.dm | 2 +- code/_globalvars/lists/names.dm | 1 + code/_onclick/hud/fullscreen.dm | 7 + code/controllers/subsystem/id_access.dm | 1 + code/datums/id_trim/jobs.dm | 30 + code/datums/id_trim/outfits.dm | 21 + code/datums/lazy_template.dm | 3 + code/datums/station_traits/positive_traits.dm | 1 + .../status_effects/debuffs/static_vision.dm | 29 + .../dynamic/dynamic_rulesets_midround.dm | 51 +- code/game/objects/effects/landmarks.dm | 4 + .../circuitboards/computer_circuitboards.dm | 9 + .../machines/machine_circuitboards.dm | 29 + code/modules/bitrunning/abilities.dm | 39 + code/modules/bitrunning/alerts.dm | 40 + .../bitrunning/antagonists/cyber_police.dm | 92 + code/modules/bitrunning/antagonists/outfit.dm | 43 + code/modules/bitrunning/areas.dm | 52 + .../components/avatar_connection.dm | 267 + .../components/bitrunning_points.dm | 46 + .../bitrunning/components/netpod_healing.dm | 65 + code/modules/bitrunning/event.dm | 151 + code/modules/bitrunning/job.dm | 41 + code/modules/bitrunning/objects/bit_vendor.dm | 86 + code/modules/bitrunning/objects/clothing.dm | 9 + code/modules/bitrunning/objects/disks.dm | 146 + code/modules/bitrunning/objects/hololadder.dm | 52 + .../bitrunning/objects/host_monitor.dm | 33 + code/modules/bitrunning/objects/landmarks.dm | 70 + code/modules/bitrunning/objects/loot_crate.dm | 91 + code/modules/bitrunning/objects/netpod.dm | 472 ++ .../bitrunning/objects/quantum_console.dm | 110 + code/modules/bitrunning/orders/disks.dm | 26 + code/modules/bitrunning/orders/flair.dm | 40 + code/modules/bitrunning/orders/tech.dm | 10 + code/modules/bitrunning/server/loot.dm | 123 + .../modules/bitrunning/server/map_handling.dm | 183 + .../bitrunning/server/obj_generation.dm | 87 + .../bitrunning/server/quantum_server.dm | 143 + .../bitrunning/server/signal_handlers.dm | 105 + code/modules/bitrunning/server/util.dm | 141 + code/modules/bitrunning/turfs.dm | 13 + .../virtual_domain/domains/ash_drake.dm | 18 + .../virtual_domain/domains/beach_bar.dm | 22 + .../domains/blood_drunk_miner.dm | 18 + .../virtual_domain/domains/bubblegum.dm | 19 + .../virtual_domain/domains/clown_planet.dm | 13 + .../virtual_domain/domains/colossus.dm | 18 + .../domains/gondola_asteroid.dm | 39 + .../virtual_domain/domains/hierophant.dm | 18 + .../virtual_domain/domains/legion.dm | 20 + .../virtual_domain/domains/pipedream.dm | 101 + .../virtual_domain/domains/pirates.dm | 10 + .../domains/stairs_and_cliffs.dm | 29 + .../domains/syndicate_assault.dm | 13 + .../virtual_domain/domains/test_only.dm | 11 + .../virtual_domain/domains/vaporwave.dm | 10 + .../virtual_domain/domains/wendigo.dm | 19 + .../virtual_domain/domains/xeno_nest.dm | 12 + .../bitrunning/virtual_domain/safehouses.dm | 53 + .../virtual_domain/virtual_domain.dm | 34 + code/modules/cargo/packs/_packs.dm | 15 + .../client/preferences/middleware/antags.dm | 1 + code/modules/clothing/outfits/plasmaman.dm | 7 + code/modules/clothing/spacesuits/plasmamen.dm | 12 + .../under/jobs/Plasmaman/civilian_service.dm | 9 + code/modules/clothing/under/jobs/cargo.dm | 6 + code/modules/economy/account.dm | 4 + .../experisci/experiment/experiments.dm | 1 - code/modules/mapping/access_helpers.dm | 5 + code/modules/mob/living/living_defines.dm | 3 + .../hostile/megafauna/wendigo.dm | 4 + code/modules/mob_spawn/mob_spawn.dm | 4 + .../computers/item/role_tablet_presets.dm | 8 + .../research/designs/machine_designs.dm | 10 - .../modules/research/techweb/_techweb_node.dm | 2 +- code/modules/research/techweb/all_nodes.dm | 1 - .../screenshot_antag_icons_cyberpolice.png | Bin 0 -> 677 bytes icons/area/areas_station.dmi | Bin 42441 -> 44115 bytes icons/effects/bitrunning.dmi | Bin 0 -> 1568 bytes icons/hud/screen_alert.dmi | Bin 134456 -> 132749 bytes icons/mob/clothing/head/plasmaman_head.dmi | Bin 32281 -> 32304 bytes icons/mob/clothing/suits/jacket.dmi | Bin 12826 -> 30830 bytes icons/mob/clothing/under/cargo.dmi | Bin 3618 -> 11656 bytes icons/mob/clothing/under/plasmaman.dmi | Bin 48283 -> 48576 bytes icons/mob/huds/hud.dmi | Bin 16705 -> 16065 bytes icons/obj/card.dmi | Bin 16535 -> 15839 bytes icons/obj/clothing/glasses.dmi | Bin 19502 -> 17507 bytes icons/obj/clothing/head/plasmaman_hats.dmi | Bin 16425 -> 16434 bytes icons/obj/clothing/suits/jacket.dmi | Bin 4741 -> 10948 bytes icons/obj/clothing/under/cargo.dmi | Bin 1608 -> 3336 bytes icons/obj/clothing/under/plasmaman.dmi | Bin 12128 -> 11711 bytes icons/obj/computer.dmi | Bin 149532 -> 143815 bytes icons/obj/machines/bepis.dmi | Bin 4246 -> 0 bytes icons/obj/machines/bitrunning.dmi | Bin 0 -> 8248 bytes icons/turf/floors.dmi | Bin 351678 -> 347693 bytes sound/effects/submerge.ogg | Bin 0 -> 44130 bytes strings/names/cyberauth.txt | 21 + tgstation.dme | 52 +- .../tgui/interfaces/AntagInfoCyberAuth.tsx | 75 + tgui/packages/tgui/interfaces/AvatarHelp.tsx | 122 + tgui/packages/tgui/interfaces/Bepis.tsx | 130 - tgui/packages/tgui/interfaces/Canvas.tsx | 34 + .../tgui/interfaces/NetpodOutfits.tsx | 109 + .../tgui/interfaces/Orbit/constants.ts | 4 + .../antagonists/antagonists/cyberpolice.ts | 23 + .../tgui/interfaces/QuantumConsole.tsx | 350 + .../tgui/interfaces/common/JobToIcon.ts | 6 + .../tgui/interfaces/common/LoadingToolbox.tsx | 32 + tgui/packages/tgui/routes.tsx | 12 +- 163 files changed, 52894 insertions(+), 1032 deletions(-) create mode 100644 _maps/safehouses/README.md create mode 100644 _maps/safehouses/TEMPLATES/TEMPLATE.dmm create mode 100644 _maps/safehouses/den.dmm create mode 100644 _maps/safehouses/dig.dmm create mode 100644 _maps/safehouses/ice.dmm create mode 100644 _maps/safehouses/lavaland_boss.dmm create mode 100644 _maps/safehouses/mine.dmm create mode 100644 _maps/safehouses/shuttle.dmm create mode 100644 _maps/safehouses/shuttle_space.dmm create mode 100644 _maps/safehouses/test_only_safehouse.dmm create mode 100644 _maps/safehouses/wood.dmm create mode 100644 _maps/virtual_domains/README.md create mode 100644 _maps/virtual_domains/ash_drake.dmm create mode 100644 _maps/virtual_domains/beach_bar.dmm create mode 100644 _maps/virtual_domains/blood_drunk_miner.dmm create mode 100644 _maps/virtual_domains/bubblegum.dmm create mode 100644 _maps/virtual_domains/clown_planet.dmm create mode 100644 _maps/virtual_domains/colossus.dmm create mode 100644 _maps/virtual_domains/gondola_asteroid.dmm create mode 100644 _maps/virtual_domains/hierophant.dmm create mode 100644 _maps/virtual_domains/legion.dmm create mode 100644 _maps/virtual_domains/pipedream.dmm create mode 100644 _maps/virtual_domains/pirates.dmm create mode 100644 _maps/virtual_domains/stairs_and_cliffs.dmm create mode 100644 _maps/virtual_domains/syndicate_assault.dmm create mode 100644 _maps/virtual_domains/test_only.dmm create mode 100644 _maps/virtual_domains/vaporwave.dmm create mode 100644 _maps/virtual_domains/wendigo.dmm create mode 100644 _maps/virtual_domains/xeno_nest.dmm create mode 100644 code/__DEFINES/bitrunning.dm create mode 100644 code/__DEFINES/dcs/signals/signals_bitrunning.dm create mode 100644 code/__DEFINES/dcs/signals/signals_mob/signals_mob_spawner.dm create mode 100644 code/datums/status_effects/debuffs/static_vision.dm create mode 100644 code/modules/bitrunning/abilities.dm create mode 100644 code/modules/bitrunning/alerts.dm create mode 100644 code/modules/bitrunning/antagonists/cyber_police.dm create mode 100644 code/modules/bitrunning/antagonists/outfit.dm create mode 100644 code/modules/bitrunning/areas.dm create mode 100644 code/modules/bitrunning/components/avatar_connection.dm create mode 100644 code/modules/bitrunning/components/bitrunning_points.dm create mode 100644 code/modules/bitrunning/components/netpod_healing.dm create mode 100644 code/modules/bitrunning/event.dm create mode 100644 code/modules/bitrunning/job.dm create mode 100644 code/modules/bitrunning/objects/bit_vendor.dm create mode 100644 code/modules/bitrunning/objects/clothing.dm create mode 100644 code/modules/bitrunning/objects/disks.dm create mode 100644 code/modules/bitrunning/objects/hololadder.dm create mode 100644 code/modules/bitrunning/objects/host_monitor.dm create mode 100644 code/modules/bitrunning/objects/landmarks.dm create mode 100644 code/modules/bitrunning/objects/loot_crate.dm create mode 100644 code/modules/bitrunning/objects/netpod.dm create mode 100644 code/modules/bitrunning/objects/quantum_console.dm create mode 100644 code/modules/bitrunning/orders/disks.dm create mode 100644 code/modules/bitrunning/orders/flair.dm create mode 100644 code/modules/bitrunning/orders/tech.dm create mode 100644 code/modules/bitrunning/server/loot.dm create mode 100644 code/modules/bitrunning/server/map_handling.dm create mode 100644 code/modules/bitrunning/server/obj_generation.dm create mode 100644 code/modules/bitrunning/server/quantum_server.dm create mode 100644 code/modules/bitrunning/server/signal_handlers.dm create mode 100644 code/modules/bitrunning/server/util.dm create mode 100644 code/modules/bitrunning/turfs.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/ash_drake.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/beach_bar.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/bubblegum.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/clown_planet.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/colossus.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/hierophant.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/legion.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/pipedream.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/pirates.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/stairs_and_cliffs.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/test_only.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/vaporwave.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/wendigo.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm create mode 100644 code/modules/bitrunning/virtual_domain/safehouses.dm create mode 100644 code/modules/bitrunning/virtual_domain/virtual_domain.dm create mode 100644 code/modules/unit_tests/screenshots/screenshot_antag_icons_cyberpolice.png create mode 100644 icons/effects/bitrunning.dmi delete mode 100644 icons/obj/machines/bepis.dmi create mode 100644 icons/obj/machines/bitrunning.dmi create mode 100644 sound/effects/submerge.ogg create mode 100644 strings/names/cyberauth.txt create mode 100644 tgui/packages/tgui/interfaces/AntagInfoCyberAuth.tsx create mode 100644 tgui/packages/tgui/interfaces/AvatarHelp.tsx delete mode 100644 tgui/packages/tgui/interfaces/Bepis.tsx create mode 100644 tgui/packages/tgui/interfaces/NetpodOutfits.tsx create mode 100644 tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/cyberpolice.ts create mode 100644 tgui/packages/tgui/interfaces/QuantumConsole.tsx create mode 100644 tgui/packages/tgui/interfaces/common/LoadingToolbox.tsx diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 3b9beee06e03..3f59522abe28 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -3655,15 +3655,11 @@ /area/station/science/robotics/lab) "aPD" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/mining{ - name = "Mining Dock" - }, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, /turf/open/floor/iron, /area/station/cargo/miningoffice) "aPO" = ( @@ -5194,14 +5190,10 @@ /turf/open/floor/iron/grimy, /area/station/command/heads_quarters/hos) "bkr" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, /obj/machinery/conveyor{ id = "cargodisposals" }, -/obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/cargo/sorting) "bkD" = ( @@ -8189,6 +8181,14 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/iron/cafeteria, /area/station/service/cafeteria) +"bSR" = ( +/obj/machinery/door/airlock/mining{ + name = "Mining Dock" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "bSU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/turf_decal/stripes/line, @@ -10092,6 +10092,10 @@ /obj/effect/turf_decal/siding/dark_red, /turf/open/floor/iron/dark, /area/station/security/execution/transfer) +"cpH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "cpI" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable, @@ -10536,10 +10540,20 @@ /turf/open/floor/iron, /area/station/engineering/supermatter/room) "cwK" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, /area/station/maintenance/starboard/fore) "cwV" = ( /obj/effect/landmark/start/hangover, @@ -10659,13 +10673,10 @@ /turf/open/floor/iron, /area/station/medical/treatment_center) "cyc" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/machinery/netpod, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "cyq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -11378,9 +11389,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/grimy, /area/station/tcommsat/computer) -"cGV" = ( -/turf/closed/wall, -/area/station/cargo/miningoffice) "cHb" = ( /obj/machinery/door/firedoor/heavy, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -14359,11 +14367,16 @@ /turf/open/floor/iron/dark, /area/station/science/xenobiology) "dux" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/shaft_miner, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, +/obj/structure/table, +/obj/effect/turf_decal/tile/brown/half{ + dir = 4 + }, +/obj/item/clipboard, +/obj/item/toy/figure/miner, +/obj/machinery/light/directional/south, +/turf/open/floor/iron/half{ + dir = 1 + }, /area/station/cargo/miningoffice) "duA" = ( /turf/closed/wall/r_wall, @@ -14945,6 +14958,20 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"dBM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "dBO" = ( /obj/structure/cable, /turf/open/floor/circuit, @@ -16018,14 +16045,9 @@ /turf/open/floor/plating, /area/station/engineering/supermatter/room) "dPC" = ( -/obj/structure/table, -/obj/machinery/microwave{ - desc = "Cooks and boils stuff, somehow."; - pixel_x = -3; - pixel_y = 5 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/miner, +/obj/effect/turf_decal/delivery, +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron, /area/station/cargo/miningoffice) "dPD" = ( @@ -16545,6 +16567,15 @@ dir = 4 }, /obj/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp, /turf/open/floor/iron, /area/station/cargo/miningoffice) "dXB" = ( @@ -17631,13 +17662,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/command/gateway) -"elO" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/maintenance/starboard/fore) "elP" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/yellow/fourcorners, @@ -19199,11 +19223,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"eFU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable, -/turf/open/floor/plating, -/area/station/maintenance/starboard/fore) "eFZ" = ( /obj/structure/table/wood, /obj/item/storage/dice, @@ -20742,7 +20761,12 @@ /turf/open/floor/iron/dark, /area/station/engineering/storage_shared) "eYt" = ( -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/computer/order_console/mining, +/obj/item/radio/intercom/directional/west, +/obj/machinery/firealarm/directional/west{ + pixel_y = -9 + }, /turf/open/floor/iron, /area/station/cargo/miningoffice) "eYy" = ( @@ -20935,13 +20959,6 @@ /obj/effect/decal/cleanable/cobweb, /turf/open/floor/iron/smooth, /area/station/maintenance/department/science/xenobiology) -"fbu" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "fbF" = ( /obj/effect/landmark/start/hangover, /obj/effect/turf_decal/tile/neutral, @@ -22530,6 +22547,14 @@ dir = 4 }, /obj/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningoffice) "ftU" = ( @@ -23032,12 +23057,14 @@ /turf/open/floor/iron, /area/station/engineering/storage) "fAj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/cargo/miningoffice) "fAn" = ( /obj/machinery/holopad, @@ -25122,8 +25149,13 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "gco" = ( +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/station/cargo/miningoffice) "gcr" = ( @@ -26650,8 +26682,11 @@ /turf/open/floor/iron, /area/station/commons/storage/primary) "guj" = ( -/obj/effect/landmark/start/shaft_miner, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/bin, /turf/open/floor/iron, /area/station/cargo/miningoffice) "guo" = ( @@ -29899,9 +29934,10 @@ /turf/open/floor/iron/white/smooth_large, /area/station/medical/medbay) "hkn" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/turf_decal/delivery, -/obj/machinery/airalarm/directional/south, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/miningoffice) "hkt" = ( @@ -31034,8 +31070,12 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/closed/wall, +/area/station/bitrunning/den) "hzA" = ( /obj/item/kirbyplants/random, /obj/machinery/power/apc/auto_name/directional/north, @@ -32665,8 +32705,18 @@ /obj/item/pickaxe, /obj/item/pickaxe, /obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/machinery/light/directional/south, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/iron/dark/smooth_large, +/area/station/bitrunning/den) "hXf" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -33767,10 +33817,11 @@ /turf/open/floor/plating, /area/station/medical/virology) "iio" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/brown/half/contrasted{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/loading_area{ dir = 1 }, +/obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningoffice) "iiy" = ( @@ -34566,6 +34617,19 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/maintenance/port/fore) +"itp" = ( +/obj/effect/turf_decal/tile/brown/half{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/machinery/computer/order_console/bitrunning, +/obj/effect/turf_decal/stripes/end, +/turf/open/floor/iron/half{ + dir = 1 + }, +/area/station/cargo/miningoffice) "itF" = ( /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ dir = 6 @@ -35010,14 +35074,12 @@ }, /area/station/service/kitchen) "izj" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/purple{ - dir = 4 - }, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/cargo/miningoffice) "izo" = ( /obj/structure/table/wood, @@ -36713,7 +36775,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, -/turf/open/floor/iron, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/station/cargo/miningoffice) "iXj" = ( /obj/effect/landmark/start/hangover, @@ -37526,7 +37593,9 @@ /turf/open/floor/plating, /area/station/engineering/atmos/mix) "jfO" = ( -/obj/structure/table, +/obj/structure/closet/wardrobe/miner, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/backpack/satchel/explorer, /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/cargo/miningoffice) @@ -39371,10 +39440,8 @@ /turf/open/floor/iron, /area/station/science/lobby) "jBM" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 - }, /turf/open/floor/iron, /area/station/cargo/miningoffice) "jBR" = ( @@ -39462,10 +39529,10 @@ /turf/open/floor/wood, /area/station/service/library/abandoned) "jCu" = ( -/obj/machinery/computer/order_console/mining, +/obj/structure/closet/secure_closet/miner, /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/delivery, /obj/machinery/light/directional/north, -/obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/station/cargo/miningoffice) "jCv" = ( @@ -40118,13 +40185,17 @@ /turf/open/floor/iron/white, /area/station/medical/medbay) "jKY" = ( -/obj/structure/cable, -/obj/effect/turf_decal/bot, -/obj/structure/table, -/obj/item/storage/medkit/regular, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/oil/streak, +/obj/machinery/camera/directional/south, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/iron/dark/smooth_large, +/area/station/bitrunning/den) "jKZ" = ( /obj/structure/table/reinforced, /obj/machinery/button/door{ @@ -40701,8 +40772,16 @@ /turf/open/floor/iron/white, /area/station/medical/medbay) "jRc" = ( -/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "jRg" = ( @@ -44226,10 +44305,13 @@ /turf/closed/wall, /area/station/hallway/secondary/entry) "kKx" = ( -/obj/effect/turf_decal/loading_area{ +/obj/effect/turf_decal/tile/brown/half{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/half{ dir = 1 }, -/turf/open/floor/iron, /area/station/cargo/miningoffice) "kKz" = ( /obj/machinery/turretid{ @@ -44927,11 +45009,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/station/engineering/main) -"kTs" = ( -/obj/structure/closet/secure_closet/miner, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "kTy" = ( /obj/structure/chair/office{ dir = 8 @@ -46282,10 +46359,12 @@ /turf/open/floor/iron, /area/station/maintenance/solars/starboard/fore) "ljQ" = ( -/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/turf_decal/loading_area{ dir = 1 }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningoffice) "ljS" = ( @@ -46384,8 +46463,11 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/herringbone, /area/station/cargo/miningoffice) "llz" = ( /obj/effect/decal/cleanable/oil, @@ -49789,6 +49871,9 @@ /obj/structure/sign/poster/official/random/directional/south, /turf/open/floor/iron/dark, /area/station/security/checkpoint/customs/fore) +"mdR" = ( +/turf/closed/wall, +/area/station/bitrunning/den) "mef" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/visible, /obj/machinery/meter, @@ -50325,8 +50410,14 @@ dir = 8 }, /obj/structure/sign/poster/official/random/directional/west, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/computer/quantum_console, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron/dark/smooth_corner, +/area/station/bitrunning/den) "mlT" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -50982,11 +51073,9 @@ /turf/open/floor/iron, /area/station/engineering/storage) "mtL" = ( -/obj/structure/closet/secure_closet/miner, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, +/obj/effect/spawner/structure/window/reinforced, /obj/machinery/status_display/evac/directional/north, -/turf/open/floor/iron, +/turf/open/floor/plating, /area/station/cargo/miningoffice) "mtO" = ( /obj/effect/turf_decal/tile/yellow{ @@ -51710,9 +51799,12 @@ /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) "mDm" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/machinery/quantum_server, +/obj/effect/turf_decal/bot/left, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 4 + }, +/area/station/bitrunning/den) "mDo" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/brown{ @@ -52491,6 +52583,20 @@ dir = 4 }, /obj/machinery/firealarm/directional/east, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/machinery/light/small/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) "mKO" = ( @@ -54120,8 +54226,14 @@ /turf/open/floor/plating, /area/station/maintenance/department/chapel) "nhj" = ( -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table, +/obj/machinery/microwave{ + desc = "Cooks and boils stuff, somehow."; + pixel_x = -3; + pixel_y = 5 + }, +/obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron, /area/station/cargo/miningoffice) "nhm" = ( @@ -55571,6 +55683,18 @@ }, /turf/open/space/basic, /area/space) +"nzO" = ( +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 1 + }, +/obj/effect/landmark/start/shaft_miner, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "nzR" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/red/half/contrasted{ @@ -55946,11 +56070,11 @@ /turf/open/floor/iron, /area/station/maintenance/port) "nEE" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/machinery/netpod, +/obj/structure/sign/poster/random/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "nEJ" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/yellow/line, @@ -58467,12 +58591,23 @@ /turf/open/floor/iron, /area/station/security/prison/garden) "okN" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/generic, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/start/bitrunner, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "okV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/plumbed{ @@ -59265,11 +59400,10 @@ /turf/open/floor/iron, /area/station/maintenance/port) "owZ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/table, +/obj/item/storage/medkit/regular, +/obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/cargo/miningoffice) "oxb" = ( @@ -59560,15 +59694,27 @@ /turf/open/floor/iron, /area/station/engineering/main) "oAV" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 }, -/obj/effect/turf_decal/tile/brown/half/contrasted, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "oAW" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -63172,7 +63318,19 @@ /turf/open/floor/iron/dark, /area/station/hallway/secondary/exit/departure_lounge) "pxS" = ( -/turf/open/floor/iron, +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown/half{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/half{ + dir = 1 + }, /area/station/cargo/miningoffice) "pxT" = ( /obj/effect/spawner/random/structure/crate, @@ -65204,15 +65362,16 @@ /turf/open/floor/iron/dark/corner, /area/station/engineering/atmos/pumproom) "pUs" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, +/obj/machinery/door/airlock/mining/glass{ + name = "Bitrunning Den" }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "pUw" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -66471,20 +66630,16 @@ /turf/open/floor/iron/dark, /area/station/command/bridge) "qko" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/item/clipboard, -/obj/item/toy/figure/miner, -/obj/machinery/light/directional/north, -/obj/machinery/light_switch/directional/west{ - pixel_x = -42 +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/brown/half{ + dir = 8 }, -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ +/obj/machinery/light/directional/west, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/official/random/directional/west, +/turf/open/floor/iron/half{ dir = 1 }, -/turf/open/floor/iron, /area/station/cargo/miningoffice) "qkA" = ( /obj/effect/turf_decal/tile/red{ @@ -66674,9 +66829,11 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/open/floor/iron, /area/station/maintenance/starboard/fore) @@ -67094,13 +67251,21 @@ /turf/open/floor/iron, /area/station/science/xenobiology) "qsF" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 }, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "qsN" = ( /obj/structure/chair{ dir = 4 @@ -67799,8 +67964,14 @@ /obj/item/storage/backpack/satchel/explorer, /obj/effect/turf_decal/bot, /obj/item/radio/intercom/directional/south, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/netpod, +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "qBY" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -69938,6 +70109,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/station/maintenance/port) +"rer" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/herringbone, +/area/station/cargo/miningoffice) "rev" = ( /obj/structure/cable, /obj/effect/decal/cleanable/dirt, @@ -70060,9 +70238,7 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) "rgC" = ( -/obj/structure/cable, /obj/structure/table/reinforced, -/obj/effect/decal/cleanable/dirt, /obj/item/folder/yellow, /obj/item/gps/mining, /obj/effect/turf_decal/tile/brown/anticorner/contrasted, @@ -70685,15 +70861,11 @@ /obj/structure/cable, /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/mining{ - name = "Mining Dock" - }, /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ dir = 1 }, /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, /turf/open/floor/iron, /area/station/cargo/miningoffice) "rmI" = ( @@ -71677,6 +71849,9 @@ /area/station/cargo/storage) "rAl" = ( /obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /obj/machinery/conveyor{ id = "cargodisposals" }, @@ -71887,6 +72062,13 @@ dir = 8 }, /area/station/engineering/lobby) +"rCK" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/cargo/sorting) "rCM" = ( /obj/effect/turf_decal/tile/red/anticorner/contrasted{ dir = 4 @@ -75146,11 +75328,7 @@ /area/station/medical/pharmacy) "stf" = ( /obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/cargo/miningoffice) "stx" = ( /obj/structure/chair/pew/left, @@ -75856,6 +76034,12 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"sCr" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "sCx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -75914,6 +76098,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/supply/mining, /obj/effect/mapping_helpers/airlock/access/any/supply/shipping, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, /turf/open/floor/iron, /area/station/cargo/sorting) "sCY" = ( @@ -76665,8 +76850,6 @@ /turf/open/floor/iron, /area/station/science/robotics/mechbay) "sLg" = ( -/obj/machinery/rnd/bepis, -/obj/effect/turf_decal/box/white, /turf/open/floor/iron, /area/station/cargo/storage) "sLx" = ( @@ -78090,10 +78273,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron, /area/station/engineering/supermatter/room) -"tcB" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "tcG" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -78796,14 +78975,11 @@ /turf/open/floor/iron, /area/station/hallway/primary/central/aft) "toy" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, +/turf/open/floor/iron/herringbone, /area/station/cargo/miningoffice) "toB" = ( /obj/machinery/light/directional/west, @@ -80880,26 +81056,6 @@ }, /turf/open/floor/iron/dark, /area/station/science/server) -"tNn" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/requests_console/directional/south{ - department = "Mining"; - name = "Mining Requests Console" - }, -/obj/machinery/requests_console/directional/south{ - department = "Mining"; - name = "Mining Requests Console" - }, -/obj/machinery/camera/directional/south{ - c_tag = "Cargo - Mining Dock"; - name = "cargo camera" - }, -/obj/effect/turf_decal/tile/brown/half/contrasted, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) "tNq" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -81344,6 +81500,17 @@ "tSj" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningoffice) "tSo" = ( @@ -83452,7 +83619,8 @@ }, /area/station/medical/morgue) "usJ" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/loading_area{ dir = 1 }, /turf/open/floor/iron, @@ -84187,6 +84355,22 @@ /obj/structure/sign/nanotrasen{ pixel_y = 32 }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/nanotrasen{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) "uBf" = ( @@ -85014,12 +85198,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 4 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, /area/station/maintenance/starboard/fore) "uNE" = ( /obj/machinery/atmospherics/components/unary/passive_vent{ @@ -85074,12 +85258,12 @@ /turf/open/floor/iron/white, /area/station/science/ordnance/office) "uOk" = ( -/obj/structure/cable, /obj/structure/chair/office{ dir = 4 }, +/obj/effect/turf_decal/tile/brown/half/contrasted, /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/half/contrasted, +/obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron, /area/station/cargo/miningoffice) "uOl" = ( @@ -88513,11 +88697,24 @@ /turf/open/floor/iron, /area/station/cargo/sorting) "vDj" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -8; + pixel_y = 17 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/purple/half/contrasted, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/machinery/holopad, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "vDm" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -88866,15 +89063,22 @@ /turf/open/floor/plating, /area/station/maintenance/department/security) "vId" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/item/radio/intercom/directional/south, +/obj/effect/decal/cleanable/oil, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "vIq" = ( /obj/structure/cable, /obj/structure/disposalpipe/junction{ @@ -89211,13 +89415,20 @@ /turf/open/floor/iron, /area/station/security/checkpoint/engineering) "vNV" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown/half{ + dir = 8 + }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/purple{ +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/half{ dir = 1 }, -/turf/open/floor/iron, /area/station/cargo/miningoffice) "vOh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -90754,6 +90965,7 @@ }, /obj/effect/mapping_helpers/airlock/access/any/supply/shipping, /obj/effect/mapping_helpers/airlock/access/any/supply/mining, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, /turf/open/floor/iron, /area/station/cargo/sorting) "whc" = ( @@ -92245,6 +92457,29 @@ /obj/machinery/light/directional/south, /obj/effect/turf_decal/delivery, /obj/structure/sign/poster/official/random/directional/south, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/rack, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/emergency{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/toolbox/emergency, +/obj/item/shovel, +/obj/item/shovel, +/obj/item/pickaxe, +/obj/item/pickaxe, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small/directional/south, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/machinery/light_switch/directional/west{ + pixel_x = -38 + }, +/obj/machinery/airalarm/directional/south, +/obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/miningoffice) "wwr" = ( @@ -93743,6 +93978,15 @@ }, /turf/open/floor/iron/white, /area/station/command/heads_quarters/cmo) +"wRm" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/shaft_miner, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "wRp" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -97428,14 +97672,9 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai) "xMZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/brown{ - dir = 8 - }, -/turf/open/floor/iron, -/area/station/cargo/miningoffice) +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/bitrunning/den) "xNe" = ( /obj/structure/lattice, /obj/structure/grille/broken, @@ -98033,9 +98272,13 @@ /turf/open/floor/plating, /area/station/service/abandoned_gambling_den) "xVv" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 4 }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, /turf/open/floor/iron, /area/station/cargo/miningoffice) "xVI" = ( @@ -143123,12 +143366,12 @@ ohH xhW xhW nPo -kGo -nPo -xhW -xhW -xhW -xhW +rCK +mdR +mdR +mdR +mdR +mdR uBd mKN vPp @@ -143385,7 +143628,7 @@ xMZ mlF qsF jKY -tpZ +mdR lDY tpZ kOj @@ -143637,12 +143880,12 @@ uzM aPD stf llj -mDm -fbu +rer +xMZ mDm vDj hXd -tpZ +mdR qmT tpZ aaa @@ -143899,7 +144142,7 @@ pUs okN oAV vId -qyX +mdR uND tpZ aaa @@ -144149,15 +144392,15 @@ fya cSK pok rWo -llJ +itp kKx dux -tcB +mdR nEE cyc qBS -tpZ -eFU +mdR +uND tpZ aad lhY @@ -144407,13 +144650,13 @@ krp krp aJE mtL -kKx +bSR iXd -eYt +mdR hzs -tNn -cGV -tpZ +mdR +mdR +mdR jRc tpZ aaa @@ -144663,7 +144906,7 @@ jmp cQo gkP krp -kTs +llJ ljQ guj eYt @@ -144671,7 +144914,7 @@ nhj owZ wwk tpZ -elO +uND tpZ aaa lhY @@ -144922,12 +145165,12 @@ iIj aJE jCu iio -mDm -eYt +nzO +dBM tSj gco hkn -tpZ +qyX cwK tpZ aaa @@ -145179,9 +145422,9 @@ eGC aJE dPC usJ -nhj -mDm -mDm +wRm +sCr +cpH uOk pPp tpZ diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 202a5feb524f..ecf6f9afa4b2 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -2078,6 +2078,10 @@ }, /turf/open/floor/plating, /area/station/engineering/transit_tube) +"aKb" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/bitrunning/den) "aKf" = ( /obj/machinery/light_switch/directional/south, /obj/structure/chair/comfy/brown{ @@ -2760,6 +2764,7 @@ /obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 4 }, +/obj/item/radio/intercom/directional/east, /turf/open/floor/iron/dark, /area/station/cargo/miningdock) "aVH" = ( @@ -4179,12 +4184,6 @@ }, /turf/open/floor/iron/dark, /area/mine/storage) -"bsx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "bsG" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research/glass{ @@ -10963,6 +10962,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/engine, /area/station/engineering/supermatter/room) +"dsp" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "dsA" = ( /obj/machinery/light/small/directional/east, /obj/machinery/atmospherics/components/tank/air{ @@ -11022,6 +11034,13 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/engine_equipment, /turf/open/floor/iron, /area/station/engineering/engine_smes) +"dtn" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/light_switch/directional/west, +/turf/open/floor/iron, +/area/station/cargo/miningdock) "dtr" = ( /obj/machinery/computer/records/medical, /obj/effect/turf_decal/tile/green/anticorner/contrasted, @@ -11798,6 +11817,11 @@ /obj/effect/decal/cleanable/food/egg_smudge, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"dGi" = ( +/obj/machinery/netpod, +/obj/machinery/camera/directional/south, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "dGK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -12252,6 +12276,9 @@ /obj/item/pickaxe{ pixel_x = 5 }, +/obj/item/shovel{ + pixel_x = -5 + }, /turf/open/floor/iron, /area/station/cargo/miningdock) "dPy" = ( @@ -12549,12 +12576,10 @@ /turf/open/floor/iron/freezer, /area/mine/laborcamp) "dUK" = ( -/obj/machinery/camera/directional/west{ - c_tag = "Mining Dock" - }, -/obj/machinery/computer/security/mining, -/turf/open/floor/iron, -/area/station/cargo/miningdock) +/obj/machinery/netpod, +/obj/machinery/light/small/directional/south, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "dUL" = ( /obj/machinery/door/poddoor/preopen{ id = "maint1" @@ -13262,6 +13287,9 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/commons/locker) +"ehu" = ( +/turf/closed/wall, +/area/station/bitrunning/den) "ehy" = ( /obj/machinery/keycard_auth/directional/east, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -13604,6 +13632,17 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"emT" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/light/small/directional/east, +/obj/machinery/computer/order_console/bitrunning{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "ena" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -14158,10 +14197,9 @@ /turf/open/floor/iron, /area/station/maintenance/department/medical/central) "ewq" = ( -/obj/machinery/light_switch/directional/north, /obj/machinery/light/directional/north, /turf/open/floor/iron, -/area/station/cargo/miningdock) +/area/station/cargo/storage) "ewz" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/north, @@ -16226,6 +16264,7 @@ /area/mine/laborcamp) "feB" = ( /obj/machinery/airalarm/directional/east, +/obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/cargo/miningdock) "feJ" = ( @@ -16623,8 +16662,18 @@ pixel_x = 1; pixel_y = 9 }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/machinery/quantum_server, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 4 + }, +/area/station/bitrunning/den) "flx" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=HOP"; @@ -17814,6 +17863,16 @@ /obj/effect/turf_decal/trimline/red/filled/line, /turf/open/floor/iron/dark/side, /area/station/security/prison) +"fHn" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/firealarm/directional/north, +/obj/structure/chair, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron, +/area/station/cargo/storage) "fHo" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/dark_green{ @@ -18226,12 +18285,6 @@ dir = 1 }, /area/station/engineering/engine_smes) -"fNx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "fNA" = ( /turf/open/openspace, /area/station/medical/medbay/central) @@ -20242,6 +20295,21 @@ "gwK" = ( /turf/closed/wall/r_wall, /area/station/security/checkpoint/engineering) +"gxb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/trimline/brown/corner{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "gxn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, @@ -20392,12 +20460,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/science/robotics/mechbay) -"gzN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) "gzV" = ( /obj/structure/mineral_door/paperframe{ name = "Meditation Room" @@ -26935,6 +26997,20 @@ }, /turf/open/floor/plating/icemoon, /area/station/science/ordnance/bomb) +"iKe" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/obj/effect/landmark/start/bitrunner, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "iKl" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -31903,6 +31979,14 @@ }, /turf/open/floor/iron/smooth, /area/station/security/holding_cell) +"kpn" = ( +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/iron/dark/smooth_large, +/area/station/bitrunning/den) "kpp" = ( /obj/structure/table/wood, /obj/item/storage/box/matches, @@ -33667,10 +33751,11 @@ /turf/open/floor/plating, /area/station/maintenance/fore) "kQL" = ( -/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, +/obj/structure/chair, +/obj/effect/landmark/start/shaft_miner, /turf/open/floor/iron, -/area/station/cargo/miningdock) +/area/station/cargo/storage) "kQM" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 5 @@ -40144,13 +40229,12 @@ }, /area/mine/eva) "naO" = ( -/obj/structure/rack, -/obj/item/shovel{ - pixel_x = -5 - }, /obj/effect/turf_decal/tile/brown/anticorner/contrasted{ dir = 8 }, +/obj/machinery/computer/security/mining{ + dir = 1 + }, /turf/open/floor/iron, /area/station/cargo/miningdock) "naP" = ( @@ -40528,6 +40612,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/fore) +"nfV" = ( +/obj/machinery/netpod, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "ngj" = ( /obj/effect/turf_decal/stripes/asteroid/line{ dir = 9 @@ -42797,9 +42886,9 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/iron, -/area/station/cargo/miningdock) +/area/station/cargo/storage) "nME" = ( /obj/item/clothing/head/utility/hardhat, /turf/open/floor/plating/snowed/icemoon, @@ -44578,6 +44667,10 @@ }, /turf/open/floor/plating/snowed/icemoon, /area/icemoon/surface/outdoors/nospawn) +"oou" = ( +/obj/structure/chair, +/turf/open/floor/iron, +/area/station/cargo/storage) "ooL" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 4 @@ -46567,11 +46660,6 @@ /obj/machinery/light/small/directional/east, /turf/open/floor/iron/freezer, /area/station/commons/toilet) -"oVf" = ( -/obj/effect/landmark/start/shaft_miner, -/obj/structure/cable, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "oVy" = ( /obj/machinery/door/airlock/security{ name = "Permabrig Lab" @@ -47139,6 +47227,13 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/station/maintenance/starboard/upper) +"pfc" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/power/apc/auto_name/directional/west, +/turf/open/floor/iron, +/area/station/cargo/miningdock) "pfe" = ( /turf/closed/wall, /area/station/hallway/primary/fore) @@ -47560,6 +47655,19 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/security/holding_cell) +"pmQ" = ( +/obj/machinery/light_switch/directional/west, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/iron/dark/smooth_large, +/area/station/bitrunning/den) "pna" = ( /obj/machinery/door/poddoor/preopen{ id = "Engineering"; @@ -51057,14 +51165,6 @@ /obj/machinery/light/directional/north, /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/explored) -"qtT" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Mining Dock" - }, -/obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "qum" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -51966,6 +52066,13 @@ /area/mine/eva/lower) "qJJ" = ( /obj/machinery/firealarm/directional/east, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/folder/yellow, +/obj/item/pen, /turf/open/floor/iron, /area/station/cargo/miningdock) "qJT" = ( @@ -51994,6 +52101,17 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/plating, /area/station/security/prison/safe) +"qKk" = ( +/obj/machinery/door/airlock/mining/glass{ + id_tag = "innercargo"; + name = "Bitrunning Den" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, +/turf/open/floor/iron, +/area/station/bitrunning/den) "qKq" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -55796,6 +55914,10 @@ }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) +"rVt" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron, +/area/station/cargo/miningdock) "rVy" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/dark/textured, @@ -57367,6 +57489,14 @@ c_tag = "Cargo Bay North" }, /obj/machinery/vending/wardrobe/cargo_wardrobe, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/camera/directional/north{ + c_tag = "Cargo Bay North" + }, +/obj/machinery/light/directional/north, /turf/open/floor/iron, /area/station/cargo/storage) "svO" = ( @@ -59989,13 +60119,6 @@ /obj/item/key/janitor, /turf/open/floor/iron, /area/station/service/janitor) -"tqC" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "tqQ" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -60481,7 +60604,11 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/landmark/event_spawn, +/obj/machinery/door/airlock/mining{ + name = "Mining Dock" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/obj/machinery/door/firedoor, /turf/open/floor/iron, /area/station/cargo/miningdock) "tyK" = ( @@ -60979,6 +61106,14 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, /turf/open/floor/iron, /area/station/cargo/miningdock) "tFV" = ( @@ -61377,6 +61512,19 @@ /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 8 }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/table, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/machinery/requests_console/directional/west{ + department = "Mining"; + name = "Mining Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/supplies, /turf/open/floor/iron, /area/station/cargo/miningdock) "tMe" = ( @@ -63729,6 +63877,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/engineering/atmos) +"uAS" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/landmark/start/bitrunner, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "uBi" = ( /turf/closed/wall, /area/station/ai_monitored/turret_protected/ai) @@ -64919,6 +65074,11 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"uXn" = ( +/obj/structure/cable, +/obj/machinery/computer/quantum_console, +/turf/open/floor/iron/dark/smooth_corner, +/area/station/bitrunning/den) "uXr" = ( /obj/machinery/camera/directional/east{ c_tag = "Chapel East" @@ -65347,10 +65507,7 @@ /turf/open/floor/iron/grimy, /area/station/security/prison/work) "veh" = ( -/obj/machinery/rnd/bepis, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, +/obj/machinery/vending/wardrobe/cargo_wardrobe, /turf/open/floor/iron, /area/station/cargo/storage) "vek" = ( @@ -65506,8 +65663,10 @@ /area/station/medical/medbay/aft) "vgC" = ( /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, -/area/station/cargo/miningdock) +/area/station/cargo/storage) "vgD" = ( /obj/structure/rack, /obj/item/stack/sheet/iron/fifty, @@ -67991,13 +68150,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/command/bridge) -"vWV" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/landmark/start/shaft_miner, -/turf/open/floor/iron, -/area/station/cargo/miningdock) "vWW" = ( /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, @@ -68228,6 +68380,18 @@ dir = 8 }, /obj/item/folder/yellow, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/requests_console/directional/north{ + department = "Cargo Bay"; + name = "Cargo Bay Requests Console" + }, +/obj/effect/mapping_helpers/requests_console/supplies, +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/folder/yellow, /turf/open/floor/iron, /area/station/cargo/storage) "waL" = ( @@ -70644,8 +70808,21 @@ name = "Mining Requests Console"; supplies_requestable = 1 }, -/turf/open/floor/iron, -/area/station/cargo/miningdock) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/machinery/holopad, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "wMt" = ( /turf/closed/wall, /area/station/hallway/primary/central/fore) @@ -71743,12 +71920,6 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/medical/storage) -"xdz" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) "xdA" = ( /obj/effect/turf_decal/siding/white{ dir = 4 @@ -225859,7 +226030,7 @@ pdf lAr tKI veh -gzN +ajw ajw vlN mmi @@ -226116,7 +226287,7 @@ sIM lAr tKI waE -xdz +ajw kXs vlN mmi @@ -227156,7 +227327,7 @@ irD irD pzX gdN -ajw +emT maT bln qjQ @@ -227413,11 +227584,11 @@ iaF ajw ajw vVN -kXr -kXr -bln -qjQ -qjQ +ehu +ehu +aKb +ehu +ehu ojk bVJ dSO @@ -227670,11 +227841,11 @@ qqJ gjP ajw ajw -maT -bln -bln -bln -qjQ +aKb +pmQ +kpn +uAS +ehu tFP hxE xtr @@ -227925,13 +228096,13 @@ kXr kXr kXr kXr -ajw -ajw -kXr -bln -bln -qjQ -qjQ +fHn +eMa +qKk +dsp +gxb +dGi +ehu qjQ rVe qjQ @@ -228181,14 +228352,14 @@ xNu vra lZQ wXR -qjQ -aOd -qtT -aOd -qjQ -qjQ -qjQ -tqC +kXr +oou +eMa +ehu +uXn +iKe +nfV +ehu tLX jBf naO @@ -228438,15 +228609,15 @@ kXA oDt kRU oQa -qjQ +kXr kQL vgC -hoD +ehu flq wMq dUK -hoD -hoD +ehu +rVt hxE dPn aOd @@ -228695,14 +228866,14 @@ cXl uxl oRy aHC -qjQ +kXr ewq -oVf -hoD -hoD -vWV -fNx -hoD +vgC +ehu +aKb +aKb +ehu +ehu iVA hxE aCh @@ -228953,13 +229124,13 @@ cHb psW psW nMB -hxE -hxE +vgC +vgC tyH hxE hxE -hxE -hxE +pfc +dtn hxE hxE wBV @@ -229209,13 +229380,13 @@ ljl kXA rLu nRq +maT +ajw +eMa aOd -hoD -bsx -hoD qJJ hxE -hoD +iVA hoD hoD vdo @@ -229469,8 +229640,8 @@ uuP tue nZh lNG -nZh tue +qjQ hxE feB lis diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 3b5e17859caa..a46912f21a32 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -543,6 +543,22 @@ "afL" = ( /turf/closed/wall, /area/station/command/heads_quarters/hos) +"afO" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/oil, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/space/basic, +/area/space) "afQ" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -2504,6 +2520,12 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"aPp" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/space/basic, +/area/space) "aPq" = ( /obj/effect/turf_decal/bot, /obj/structure/window/reinforced/spawner/directional/west, @@ -4438,6 +4460,21 @@ /obj/item/seeds/watermelon, /turf/open/floor/grass, /area/station/security/prison/garden) +"bCw" = ( +/obj/effect/turf_decal/sand/plating, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners, +/obj/machinery/camera/autoname/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/plating/airless, +/area/space/nearstation) "bCz" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -7365,6 +7402,10 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/security/checkpoint/supply) +"cBp" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/space/basic, +/area/space) "cBD" = ( /obj/structure/flora/grass/jungle/a/style_random, /obj/effect/turf_decal/sand/plating, @@ -7968,6 +8009,22 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/exit/departure_lounge) +"cOL" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/computer/order_console/bitrunning{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/end{ + dir = 8 + }, +/turf/open/space/basic, +/area/space) "cON" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -12657,6 +12714,29 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos/pumproom) +"erF" = ( +/obj/effect/turf_decal/sand/plating, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating/airless, +/area/space/nearstation) "erH" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, @@ -14381,6 +14461,17 @@ /obj/machinery/light/small/directional/west, /turf/open/floor/engine, /area/station/science/xenobiology) +"eXe" = ( +/obj/structure/lattice, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/netpod, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/space/basic, +/area/space/nearstation) "eXj" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -15567,6 +15658,14 @@ }, /turf/open/floor/engine, /area/station/ai_monitored/turret_protected/aisat/atmos) +"fpt" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/cable, +/turf/open/space/basic, +/area/space) "fpx" = ( /obj/structure/chair/office/light{ dir = 4 @@ -16384,6 +16483,11 @@ dir = 8 }, /area/station/service/chapel) +"fAW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/space/basic, +/area/space) "fBh" = ( /obj/machinery/door/airlock/maintenance, /obj/structure/disposalpipe/segment{ @@ -20170,6 +20274,15 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/dark, /area/station/security/brig) +"gJX" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/open/space/basic, +/area/space/nearstation) "gKd" = ( /obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/co2{ dir = 4 @@ -22619,6 +22732,20 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"hAo" = ( +/obj/structure/lattice/catwalk, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/space/basic, +/area/station/solars/port/fore) "hAF" = ( /obj/structure/table/wood, /obj/machinery/reagentgrinder{ @@ -26291,6 +26418,29 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard) +"iCE" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/space/basic, +/area/space) "iCK" = ( /obj/effect/turf_decal/bot, /obj/machinery/conveyor{ @@ -26409,6 +26559,15 @@ }, /turf/open/floor/iron, /area/station/engineering/storage_shared) +"iES" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/vending/snackvend, +/turf/open/space/basic, +/area/space) "iFa" = ( /obj/machinery/light/small/directional/south, /obj/effect/decal/cleanable/dirt, @@ -33085,6 +33244,30 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/showroomfloor, /area/station/medical/medbay/central) +"kRA" = ( +/obj/structure/lattice, +/obj/structure/grille, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/trimline/brown/corner, +/obj/effect/turf_decal/trimline/brown/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/space/basic, +/area/space/nearstation) "kRD" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 4 @@ -33238,6 +33421,15 @@ /obj/structure/cable, /turf/open/floor/grass, /area/station/medical/psychology) +"kUy" = ( +/obj/structure/lattice, +/obj/structure/grille, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/open/space/basic, +/area/space/nearstation) "kUB" = ( /obj/structure/table, /obj/effect/turf_decal/tile/neutral, @@ -34871,6 +35063,17 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/engine/telecomms, /area/station/tcommsat/server) +"luv" = ( +/obj/structure/lattice, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/quantum_server, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/cold/directional/west, +/turf/open/space/basic, +/area/space/nearstation) "lux" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/start/hangover, @@ -40742,6 +40945,10 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/iron, /area/station/security/office) +"nuC" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/space/basic, +/area/space) "nuF" = ( /obj/item/radio/intercom/directional/north, /obj/machinery/vending/cigarette, @@ -41222,6 +41429,38 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard) +"nDy" = ( +/obj/effect/turf_decal/box, +/obj/machinery/power/solar{ + id = "foreport"; + name = "Fore-Port Solar Array" + }, +/obj/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/machinery/door/airlock/mining{ + name = "Bitrunning Den" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/port/fore) "nDK" = ( /obj/machinery/flasher/directional/east{ id = "AI"; @@ -42430,6 +42669,12 @@ /obj/structure/window/reinforced/spawner/directional/north, /turf/open/floor/plating, /area/station/maintenance/fore) +"oaT" = ( +/obj/machinery/netpod, +/obj/machinery/light_switch/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/space/basic, +/area/space) "obi" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -42449,6 +42694,15 @@ }, /turf/open/floor/iron/dark, /area/station/maintenance/department/bridge) +"obz" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/open/floor/plating/airless, +/area/station/solars/port/fore) "obM" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -44519,6 +44773,27 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/disposal/incinerator) +"oNA" = ( +/obj/structure/lattice, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/computer/quantum_console{ + dir = 4 + }, +/obj/machinery/computer/quantum_console{ + dir = 4 + }, +/obj/machinery/computer/quantum_console{ + dir = 4 + }, +/obj/machinery/computer/quantum_console{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/space/basic, +/area/space/nearstation) "oNH" = ( /obj/structure/disposalpipe/junction/flip, /turf/open/floor/iron, @@ -53889,6 +54164,16 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/department/bridge) +"rPq" = ( +/obj/structure/cable, +/obj/structure/lattice/catwalk, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/space/basic, +/area/station/solars/port/fore) "rPx" = ( /obj/structure/bed{ dir = 4 @@ -55671,6 +55956,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/chapel, /area/station/service/chapel) +"ssR" = ( +/obj/machinery/netpod, +/turf/open/space/basic, +/area/space) "ssU" = ( /obj/structure/flora/grass/jungle/a/style_random, /obj/effect/turf_decal/stripes/line{ @@ -57203,6 +57492,25 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/engineering/atmos) +"sSt" = ( +/obj/structure/lattice, +/obj/structure/grille, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/trimline/brown/line, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/landmark/start/bitrunner, +/turf/open/space/basic, +/area/space/nearstation) "sSA" = ( /obj/structure/cable, /obj/effect/spawner/random/structure/musician/piano/random_piano, @@ -58919,6 +59227,26 @@ /obj/effect/mapping_helpers/airlock/access/all/engineering/atmos, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) +"tut" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/stripes, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/start/bitrunner, +/turf/open/space/basic, +/area/space/nearstation) "tuF" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted, /obj/effect/turf_decal/tile/red, @@ -68007,6 +68335,15 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron, /area/station/security/courtroom) +"woq" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/rack, +/obj/effect/spawner/random/maintenance/three, +/turf/open/space/basic, +/area/space) "wor" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -68888,6 +69225,25 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard) +"wCZ" = ( +/obj/effect/turf_decal/box, +/obj/machinery/power/solar{ + id = "foreport"; + name = "Fore-Port Solar Array" + }, +/obj/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/port/fore) "wDh" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69848,6 +70204,26 @@ }, /turf/open/floor/iron/dark, /area/station/service/kitchen) +"wRt" = ( +/obj/effect/turf_decal/box, +/obj/machinery/power/solar{ + id = "foreport"; + name = "Fore-Port Solar Array" + }, +/obj/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/solarpanel/airless, +/area/station/solars/port/fore) "wRE" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -85549,7 +85925,7 @@ mMv mMv mMv tpp -mMv +obz mMv mMv mMv @@ -86049,15 +86425,15 @@ aaa aaa aaa aaa -aaa -aaa -aeo -aaa -aaQ -acm -acm -aaa -tpp +fAW +iES +kUy +ssR +tut +luv +oNA +nuC +hAo ckk aaa aaa @@ -86306,15 +86682,15 @@ aaa aaa aaa aaa +cBp aaa -aaa -aeo -acm -aeo -aaa -cmU -hpG -hpG +kUy +eXe +kRA +iCE +erF +nDy +wRt hpG hpG hpG @@ -86564,13 +86940,13 @@ aaa aaa aaa aaa -aaa -aaQ -aaa -aeo -aaa -cmU -grV +woq +gJX +oaT +sSt +afO +bCw +rPq grV grV grV @@ -86822,13 +87198,13 @@ aaa aaa aaa aaa -aeo +kUy aaa aaQ cmU cmU hpG -hpG +wCZ hpG hpG hpG @@ -87077,8 +87453,8 @@ aaa aaa aaa aaa -aaa -aaa +aPp +fpt aeo acm vku @@ -87088,7 +87464,7 @@ cmU tpp ckk aaa -aaa +cOL ckk tpp ckk diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 20b55db673a0..2276e83c4303 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -449,6 +449,14 @@ }, /turf/open/floor/iron/kitchen_coldroom/freezerfloor, /area/station/service/kitchen/coldroom) +"aiW" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "aja" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -3427,12 +3435,18 @@ /turf/open/floor/iron/white, /area/station/medical/abandoned) "bje" = ( -/obj/structure/closet/emcloset, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/box/corners{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/oil/streak, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/iron/dark/smooth_large, +/area/station/bitrunning/den) "bjB" = ( /obj/structure/sign/directions/security{ dir = 1; @@ -3813,6 +3827,23 @@ }, /turf/open/floor/carpet/red, /area/station/command/heads_quarters/qm) +"boz" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ + dir = 8 + }, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured_half, +/area/station/bitrunning/den) "boD" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -4548,6 +4579,21 @@ "bDq" = ( /turf/closed/wall/r_wall, /area/station/engineering/transit_tube) +"bDK" = ( +/obj/machinery/vending/wardrobe/cargo_wardrobe, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron, +/area/station/cargo/storage) "bDN" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -4664,6 +4710,18 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment, /obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/door/airlock/mining{ + name = "Mining Office" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/supply/mining, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, /turf/open/floor/iron, /area/station/cargo/miningoffice) "bGV" = ( @@ -4941,6 +4999,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/execution/education) +"bMW" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "bMY" = ( /turf/closed/wall, /area/station/medical/office) @@ -7118,13 +7184,14 @@ /turf/open/floor/plating, /area/station/security/brig) "cGL" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 1 +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 }, -/obj/effect/mapping_helpers/mail_sorting/supply/disposals, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "cGS" = ( /obj/machinery/airalarm/directional/west, /obj/machinery/camera/directional/west{ @@ -9170,10 +9237,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/engineering/atmos) -"dwA" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "dwJ" = ( /obj/structure/lattice, /obj/effect/spawner/random/structure/grille, @@ -10052,6 +10115,14 @@ /obj/effect/spawner/random/engineering/tank, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"dPa" = ( +/obj/structure/cable, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/closed/wall, +/area/station/maintenance/port/fore) "dPh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white/corner, @@ -10900,12 +10971,14 @@ /turf/open/floor/plating, /area/station/cargo/sorting) "edP" = ( -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes/line{ dir = 8 }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /turf/open/floor/plating, /area/station/maintenance/port/fore) "edQ" = ( @@ -12324,10 +12397,21 @@ /turf/closed/wall/r_wall, /area/station/command/heads_quarters/captain/private) "eEb" = ( +/obj/effect/turf_decal/trimline/brown/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/corner{ + dir = 8 + }, /obj/structure/cable, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/mining{ + name = "Bitrunning Den" + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, +/turf/open/floor/iron/dark/textured_half, +/area/station/bitrunning/den) "eEf" = ( /obj/machinery/camera/directional/north{ c_tag = "Bar - Backroom" @@ -14583,13 +14667,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/engineering/atmos) -"fBl" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "fBt" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -15228,7 +15305,8 @@ name = "Mining Dock Maintenance" }, /obj/structure/cable, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, +/obj/effect/mapping_helpers/airlock/access/any/supply/mining, /turf/open/floor/plating, /area/station/maintenance/port/fore) "fNI" = ( @@ -17034,12 +17112,6 @@ "guX" = ( /turf/closed/wall, /area/station/commons/storage/primary) -"guZ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "gva" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/iron, @@ -18114,12 +18186,6 @@ /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible, /turf/open/space/basic, /area/space/nearstation) -"gQv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) "gQw" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/white/line, @@ -18424,7 +18490,11 @@ /mob/living/simple_animal/bot/mulebot{ name = "Leaping Rabbit" }, -/turf/open/floor/plating, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/closed/wall, /area/station/maintenance/port/fore) "gVj" = ( /obj/effect/turf_decal/tile/blue, @@ -22178,6 +22248,15 @@ }, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"inp" = ( +/obj/effect/spawner/random/maintenance, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/fore) "inw" = ( /obj/machinery/disposal/bin{ desc = "A pneumatic waste disposal unit. This one leads into space!"; @@ -29418,13 +29497,35 @@ }, /turf/open/floor/engine, /area/station/science/xenobiology) +"kHM" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark/textured_half, +/area/station/bitrunning/den) "kHU" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/box/corners{ dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light_switch/directional/north, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/iron/dark/smooth_large, +/area/station/bitrunning/den) "kIG" = ( /obj/structure/rack, /obj/effect/spawner/random/maintenance/two, @@ -29598,6 +29699,13 @@ /obj/structure/window/spawner/directional/east, /turf/open/floor/plating, /area/station/service/chapel/funeral) +"kLY" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/machinery/computer/order_console/bitrunning, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "kLZ" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -31427,6 +31535,10 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/security/evidence) +"lqG" = ( +/obj/machinery/netpod, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "lqL" = ( /obj/effect/turf_decal/siding{ dir = 1 @@ -32907,6 +33019,9 @@ "lUe" = ( /obj/structure/reagent_dispensers/fueltank, /obj/structure/sign/poster/contraband/random/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, /turf/open/floor/plating, /area/station/maintenance/port/fore) "lUj" = ( @@ -34299,6 +34414,12 @@ /obj/structure/cable, /turf/open/floor/iron/white, /area/station/science/research) +"muJ" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "mvg" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -34532,6 +34653,9 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/mapping_helpers/broken_floor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/plating, /area/station/maintenance/port/fore) "mzu" = ( @@ -34609,9 +34733,8 @@ /turf/open/floor/iron/dark, /area/station/medical/morgue) "mAy" = ( -/obj/machinery/computer/order_console/mining, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 8 +/obj/effect/turf_decal/tile/brown{ + dir = 4 }, /turf/open/floor/iron, /area/station/cargo/miningoffice) @@ -38194,6 +38317,9 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/item/storage/toolbox/emergency, /obj/effect/spawner/random/maintenance, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, /turf/open/floor/plating, /area/station/maintenance/port/fore) "nMF" = ( @@ -40445,6 +40571,10 @@ /obj/effect/landmark/start/medical_doctor, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"oBV" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/bitrunning/den) "oCb" = ( /obj/structure/chair, /obj/item/radio/intercom/chapel/directional/west, @@ -43518,6 +43648,21 @@ /obj/machinery/research/anomaly_refinery, /turf/open/floor/iron/dark, /area/station/science/ordnance/testlab) +"pII" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark/textured_half, +/area/station/bitrunning/den) "pJf" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -43898,6 +44043,9 @@ /obj/effect/mapping_helpers/airlock/access/all/security/brig, /turf/open/floor/iron, /area/station/security/prison/safe) +"pPV" = ( +/turf/closed/wall, +/area/station/bitrunning/den) "pQj" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -46565,6 +46713,21 @@ }, /turf/open/floor/iron, /area/station/security/prison) +"qNS" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/bitrunner, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/textured_half, +/area/station/bitrunning/den) "qNV" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -47356,6 +47519,16 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/atmos) +"rcs" = ( +/obj/machinery/quantum_server, +/obj/effect/turf_decal/bot/left, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 6 + }, +/obj/machinery/light/directional/north, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "rcF" = ( /obj/structure/table/wood, /obj/item/storage/crayons, @@ -49214,6 +49387,16 @@ }, /turf/open/floor/iron, /area/station/science/xenobiology) +"rKh" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "rKB" = ( /obj/machinery/airalarm/directional/east, /turf/open/floor/engine, @@ -49443,10 +49626,14 @@ /turf/open/floor/plating, /area/station/maintenance/port/fore) "rNV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/disposalpipe/segment{ - dir = 6 +/obj/machinery/door/airlock/maintenance{ + name = "Mining Dock Maintenance" }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, +/obj/effect/mapping_helpers/airlock/access/any/supply/mining, /turf/open/floor/plating, /area/station/maintenance/port/fore) "rOz" = ( @@ -49691,10 +49878,14 @@ /turf/open/floor/plating, /area/station/service/chapel) "rSa" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/oil/slippery, +/obj/effect/decal/cleanable/blood/gibs/down, +/mob/living/simple_animal/bot/mulebot{ + name = "Leaping Rabbit" }, -/obj/effect/spawner/random/structure/grille, /turf/open/floor/plating, /area/station/maintenance/port/fore) "rSb" = ( @@ -54201,12 +54392,10 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/central) "ttG" = ( -/obj/item/clothing/gloves/color/rainbow, -/obj/item/clothing/shoes/sneakers/rainbow, -/obj/item/clothing/under/color/rainbow, -/obj/item/clothing/head/soft/rainbow, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/machinery/netpod, +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "ttM" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -57285,13 +57474,6 @@ /obj/effect/turf_decal/tile/red/half/contrasted, /turf/open/floor/iron/dark, /area/station/security/execution/education) -"uyj" = ( -/obj/machinery/rnd/bepis, -/obj/effect/turf_decal/stripes/end{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) "uyr" = ( /obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/tile/neutral{ @@ -57685,6 +57867,12 @@ /obj/machinery/photocopier, /turf/open/floor/iron, /area/station/engineering/break_room) +"uFF" = ( +/obj/machinery/netpod, +/obj/machinery/light/directional/west, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "uFK" = ( /obj/structure/table, /obj/item/clothing/under/rank/prisoner/skirt{ @@ -59752,7 +59940,7 @@ "vpU" = ( /obj/effect/spawner/random/structure/crate, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 5 }, /turf/open/floor/plating, /area/station/maintenance/port/fore) @@ -62801,6 +62989,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/grass, /area/station/service/hydroponics) +"wvC" = ( +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/machinery/computer/order_console/mining, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "wvP" = ( /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/iv_drip, @@ -64026,6 +64221,15 @@ }, /turf/open/floor/iron, /area/station/cargo/storage) +"wST" = ( +/obj/machinery/computer/quantum_console, +/obj/effect/turf_decal/siding/thinplating_new/dark, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/camera/directional/north{ + c_tag = "Mining Dock" + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "wTp" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/brigdoor{ @@ -64603,7 +64807,8 @@ }, /obj/structure/cable, /obj/machinery/door/firedoor, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, +/obj/effect/mapping_helpers/airlock/access/any/supply/mining, /turf/open/floor/iron, /area/station/cargo/miningoffice) "xej" = ( @@ -65175,15 +65380,15 @@ /turf/open/floor/iron/dark, /area/station/science/genetics) "xoc" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Mining Dock Maintenance" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/segment, -/obj/effect/mapping_helpers/airlock/access/all/supply/mining, -/turf/open/floor/plating, -/area/station/maintenance/port/fore) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/miningoffice) "xoj" = ( /obj/structure/table/reinforced, /obj/machinery/microwave{ @@ -84115,10 +84320,10 @@ nmg vEV ovy jXu -aaa -aaa -aaa -pnI +pPV +pPV +pPV +hKg bUm kRe qfi @@ -84372,9 +84577,9 @@ jXu kXA ufv jXu -aaa -aaa -aaa +wST +kHM +uFF hKg hKg fQW @@ -84629,10 +84834,10 @@ jXu jXu hWS jXu -jXu -jXu -jXu -jXu +rcs +qNS +lqG +oBV qvY kRe dCp @@ -84651,8 +84856,8 @@ hxo hxo hxo cbz -uyj pyv +bDK jLb tTa kQP @@ -84885,11 +85090,11 @@ lBm dHa ugJ edP -dwA -bje jXu +bje +pII ttG -jXu +oBV pPh aFd nVG @@ -85142,11 +85347,11 @@ vfv cTQ xte mzs -sHu -kHU -jXu -jXu jXu +kHU +boz +pPV +pPV jpG kRe nVG @@ -85398,11 +85603,11 @@ gYE uEC wgw twr -uuD -xgB -fBl +bSm +dPa +oBV eEb -jXu +pPV ouc dSG cLj @@ -85655,12 +85860,12 @@ pQu vEH jXu lUe -uuD +bMW rNV cGL -guZ xoc -xyz +xoc +rKh xyz fgT btt @@ -85912,11 +86117,11 @@ tWJ aQE jXu nME -iUE -gQv -jXu -jXu +inp jXu +kLY +muJ +wvC mAy cLj kRe @@ -86169,8 +86374,8 @@ jXu jXu jXu jXu -uuD -gQv +bSm +jXu jXu gVb jXu @@ -86426,7 +86631,7 @@ dOS xxp twr sxn -uuD +aiW vpU twr rSa diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 20d097488bdd..929f483e199e 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -612,8 +612,13 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/turf/open/floor/iron/corner, -/area/station/cargo/drone_bay) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/bitrunning/den) "ahG" = ( /obj/machinery/modular_computer/console/preset/research{ dir = 4 @@ -5736,12 +5741,12 @@ /turf/open/floor/iron/white/smooth_large, /area/station/science/robotics/lab) "brL" = ( -/obj/effect/turf_decal/stripes{ - dir = 6 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron/stairs{ + dir = 1 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) +/area/station/bitrunning/den) "brN" = ( /obj/effect/spawner/structure/window/hollow/reinforced/directional, /obj/structure/disposalpipe/segment, @@ -5776,10 +5781,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/station/medical/abandoned) -"bsq" = ( -/obj/effect/turf_decal/stripes, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) "bsu" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -6578,13 +6579,9 @@ }, /area/station/hallway/floor3/aft) "bAh" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/catwalk_floor, +/obj/effect/spawner/random/structure/table_or_rack, +/obj/effect/spawner/random/trash/soap, +/turf/open/floor/plating, /area/station/maintenance/floor1/starboard/fore) "bAj" = ( /obj/machinery/conveyor{ @@ -6699,6 +6696,17 @@ /obj/machinery/computer/order_console/mining, /turf/open/floor/iron, /area/station/cargo/miningdock) +"bBW" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/obj/machinery/light/directional/north, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "bCh" = ( /obj/structure/table/reinforced, /obj/item/mmi{ @@ -8400,6 +8408,23 @@ dir = 4 }, /area/station/hallway/floor2/aft) +"caN" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/machinery/firealarm/directional/south, +/obj/machinery/light/directional/south, +/obj/effect/decal/cleanable/oil/streak, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/iron/dark/smooth_large, +/area/station/bitrunning/den) "caQ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -10330,13 +10355,20 @@ /turf/open/floor/iron/dark/side, /area/station/hallway/floor3/aft) "cBT" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 }, -/obj/machinery/firealarm/directional/east, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/obj/structure/railing{ + layer = 3.1 + }, +/obj/effect/decal/cleanable/robot_debris, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "cBU" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/flora/bush/sunny/style_random, @@ -10429,11 +10461,11 @@ /turf/open/floor/iron, /area/station/service/hydroponics) "cDe" = ( -/obj/effect/turf_decal/stripes{ - dir = 1 +/obj/machinery/computer/quantum_console{ + dir = 4 }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) +/turf/open/floor/iron/dark/smooth_corner, +/area/station/bitrunning/den) "cDj" = ( /obj/effect/turf_decal/delivery, /obj/structure/sign/departments/cargo/directional/north, @@ -11654,6 +11686,11 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/ai_monitored/security/armory) +"cUk" = ( +/obj/structure/rack, +/obj/item/stack/sheet/leather, +/turf/open/floor/plating, +/area/station/maintenance/floor1/starboard/fore) "cUm" = ( /obj/effect/turf_decal/siding/wood, /obj/machinery/power/apc/auto_name/directional/east, @@ -16913,6 +16950,23 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/railing/corner/end{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) "eov" = ( @@ -17101,17 +17155,19 @@ /turf/open/floor/catwalk_floor, /area/station/maintenance/floor1/starboard) "erV" = ( -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/trimline/brown/line{ dir = 1 }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/stripes{ + dir = 1 }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/trimline/brown/line, +/turf/open/floor/iron/dark/smooth_half, +/area/station/bitrunning/den) "erY" = ( /obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, @@ -17250,12 +17306,6 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard) -"eul" = ( -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) "eur" = ( /obj/effect/mapping_helpers/airlock/access/any/supply/mining, /obj/machinery/door/airlock/glass_large{ @@ -20812,6 +20862,26 @@ /obj/machinery/light/warm/directional/north, /turf/open/floor/wood/parquet, /area/station/command/heads_quarters/cmo) +"fxr" = ( +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/shieldgen, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/thinplating_new{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/shieldgen, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/smooth, +/area/station/cargo/warehouse) "fxC" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -21162,12 +21232,13 @@ /turf/open/floor/pod/light, /area/station/maintenance/floor2/port) "fCw" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 }, -/obj/structure/disposalpipe/trunk/multiz, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) +/obj/machinery/holopad, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "fCx" = ( /obj/structure/rack, /turf/open/floor/pod/dark, @@ -24178,7 +24249,9 @@ dir = 4 }, /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/storage) "gsp" = ( @@ -25094,6 +25167,7 @@ /area/station/maintenance/floor2/starboard/aft) "gFU" = ( /obj/machinery/computer/exodrone_control_console, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron/dark, /area/station/cargo/drone_bay) "gGu" = ( @@ -28474,6 +28548,11 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/broken/directional/north, /obj/item/radio/intercom/directional/north, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/catwalk_floor/iron_smooth, /area/station/cargo/warehouse) "hBT" = ( @@ -30160,10 +30239,15 @@ /turf/open/floor/iron/dark, /area/station/commons/dorms/room4) "iaJ" = ( -/obj/structure/rack, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) +/obj/machinery/netpod, +/obj/effect/decal/cleanable/vomit/old{ + pixel_x = -12; + pixel_y = -13 + }, +/obj/item/radio/intercom/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "iaM" = ( /obj/effect/turf_decal/trimline/green/filled/line{ dir = 6 @@ -32133,13 +32217,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor3/starboard/fore) -"iDJ" = ( -/obj/effect/turf_decal/stripes{ - dir = 10 - }, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) "iDP" = ( /obj/structure/cable/multilayer/multiz, /turf/open/floor/plating, @@ -35672,19 +35749,6 @@ }, /turf/open/floor/carpet/royalblack, /area/station/service/kitchen/diner) -"jAr" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/storage) "jAF" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -37387,6 +37451,9 @@ /area/station/medical/medbay/central) "jWJ" = ( /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/storage) "jWR" = ( @@ -41890,11 +41957,14 @@ }, /area/station/hallway/floor2/fore) "lgs" = ( -/obj/effect/turf_decal/stripes{ - dir = 5 +/obj/structure/sign/poster/random/directional/north, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "lgt" = ( /obj/structure/closet/emcloset, /obj/effect/decal/cleanable/dirt, @@ -45173,6 +45243,16 @@ /area/station/maintenance/floor3/starboard) "lWl" = ( /obj/machinery/light/directional/west, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/computer/order_console/bitrunning{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/end{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/storage) "lWm" = ( @@ -46154,6 +46234,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/lobby) +"mhU" = ( +/obj/machinery/netpod, +/obj/structure/railing{ + layer = 3.1 + }, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "mhY" = ( /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -50525,21 +50612,27 @@ /turf/open/floor/iron/dark, /area/station/hallway/floor3/aft) "nkT" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 4 +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 }, -/obj/machinery/door/airlock/hatch{ - name = "Maintenance Access" +/obj/effect/turf_decal/stripes{ + dir = 1 }, -/obj/effect/mapping_helpers/airlock/access/any/supply/general, -/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/pod/dark, -/area/station/maintenance/floor1/starboard/fore) +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 8 + }, +/area/station/bitrunning/den) "nkY" = ( /obj/machinery/light/directional/west, /obj/structure/chair/sofa/corp/left{ @@ -51578,6 +51671,24 @@ }, /turf/open/floor/pod/dark, /area/station/maintenance/floor3/starboard/fore) +"nxs" = ( +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/item/cigbutt/cigarbutt{ + pixel_x = 7 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/iron/dark/smooth_half, +/area/station/bitrunning/den) "nxy" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -55414,14 +55525,21 @@ /turf/open/floor/iron/dark/side, /area/station/security/checkpoint) "owk" = ( -/obj/structure/cable, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/trimline/brown/line, /obj/structure/disposalpipe/segment{ - dir = 4 + dir = 5 }, -/turf/open/floor/catwalk_floor, -/area/station/maintenance/floor1/starboard/fore) +/turf/open/floor/iron/dark/smooth_half, +/area/station/bitrunning/den) "owo" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable, @@ -56934,6 +57052,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/warden) +"oRZ" = ( +/obj/machinery/netpod, +/obj/machinery/airalarm/directional/east, +/obj/machinery/airalarm/directional/east, +/obj/machinery/airalarm/directional/east, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "oSb" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 8 @@ -58562,6 +58688,8 @@ }, /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron, /area/station/cargo/storage) "prn" = ( @@ -59385,6 +59513,12 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/machinery/rnd/bepis, /obj/effect/decal/cleanable/dirt/dust, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/warehouse) "pDd" = ( @@ -64066,6 +64200,7 @@ dir = 4 }, /obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) "qOs" = ( @@ -66145,6 +66280,8 @@ dir = 10 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) "rqC" = ( @@ -67161,7 +67298,7 @@ /area/station/medical/abandoned) "rGF" = ( /obj/effect/turf_decal/bot, -/obj/structure/sign/poster/random/directional/north, +/obj/machinery/light/broken/directional/north, /turf/open/floor/iron/smooth, /area/station/cargo/warehouse) "rGH" = ( @@ -68050,6 +68187,10 @@ }, /turf/open/floor/iron, /area/station/maintenance/floor1/starboard/fore) +"rTq" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/bitrunning/den) "rTt" = ( /obj/machinery/space_heater, /turf/open/floor/pod/light, @@ -69368,6 +69509,7 @@ /obj/effect/turf_decal/stripes{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron, /area/station/cargo/storage) "srq" = ( @@ -70855,11 +70997,16 @@ /turf/open/floor/plating, /area/station/maintenance/floor2/starboard) "sLq" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 }, -/turf/open/floor/pod/light, -/area/station/maintenance/floor1/starboard/fore) +/obj/effect/turf_decal/arrows{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/disposalpipe/trunk/multiz, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "sLA" = ( /obj/effect/turf_decal/tile/red/opposingcorners{ dir = 1 @@ -72230,6 +72377,22 @@ /obj/effect/spawner/random/contraband/landmine, /turf/open/floor/pod/dark, /area/station/service/kitchen/abandoned) +"tel" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, +/obj/machinery/door/airlock/mining/glass{ + name = "Bitrunning Den" + }, +/turf/open/floor/pod/dark, +/area/station/bitrunning/den) "teq" = ( /turf/closed/wall/r_wall, /area/station/maintenance/floor1/starboard/aft) @@ -77909,6 +78072,19 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/carpet/royalblue, /area/station/commons/dorms/room4) +"uLN" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/iron/dark/smooth_large, +/area/station/bitrunning/den) "uLO" = ( /obj/structure/showcase/cyborg/old{ dir = 4; @@ -81617,6 +81793,9 @@ }, /turf/open/floor/iron/dark, /area/station/command/gateway) +"vII" = ( +/turf/closed/wall, +/area/station/bitrunning/den) "vIO" = ( /obj/effect/decal/cleanable/glitter, /turf/open/floor/carpet/neon/simple/pink/nodots, @@ -83376,12 +83555,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/pod/dark, /area/station/maintenance/floor2/starboard) -"whN" = ( -/obj/effect/turf_decal/stripes{ - dir = 9 - }, -/turf/open/floor/plating, -/area/station/maintenance/floor1/starboard/fore) "whR" = ( /turf/closed/wall, /area/station/service/bar) @@ -89821,8 +89994,12 @@ /obj/machinery/modular_computer/console/preset/civilian, /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable, -/turf/open/floor/iron/dark, -/area/station/cargo/drone_bay) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/closed/wall, +/area/station/bitrunning/den) "xOe" = ( /obj/machinery/light/cold/no_nightlight/directional/north, /turf/open/floor/engine, @@ -90493,6 +90670,13 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) +"xYW" = ( +/obj/machinery/quantum_server, +/obj/effect/turf_decal/bot/left, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 4 + }, +/area/station/bitrunning/den) "xYY" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -113870,13 +114054,13 @@ owI owI owI owI -oic -oic -whN -eul -iDJ +vII +vII +vII +vII +vII bAh -oic +cUk oic oic oic @@ -114127,14 +114311,14 @@ owI owI owI owI -oic -oic +vII +vII cDe -oic -bsq -bAh -uNF -oic +xYW +vII +vII +vII +vII gUS nOj dzo @@ -114384,14 +114568,14 @@ owI owI owI owI -oic -oic +vII +vII lgs fCw brL erV -uNF -oic +caN +vII rGF yiZ yiZ @@ -114641,14 +114825,14 @@ owI owI owI owI -oic -oic -sLq +vII +vII +bBW sLq cBT owk -uNF -oic +uLN +rTq hBR qWJ qWJ @@ -114898,14 +115082,14 @@ owI owI owI owI -oic -oic +vII +vII iaJ -oic -oic +oRZ +mhU nkT -oic -oic +nxs +rTq rYA eEB lUY @@ -115155,15 +115339,15 @@ owI owI owI owI -oic -oic -oic -oic +vII +vII +vII +vII xOd -xxQ +tel ahC -aQK -fve +vII +fxr fve aSL iCn @@ -116447,7 +116631,7 @@ xsL sqK rqB prm -jAr +gso gso qOr eoo diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 682216193a5e..c96e55fd0c57 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -1147,6 +1147,13 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"er" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/machinery/airalarm/directional/east, +/obj/machinery/computer/quantum_console, +/turf/open/floor/iron, +/area/station/bitrunning/den) "es" = ( /obj/machinery/dna_scannernew, /obj/effect/turf_decal/tile/blue/opposingcorners{ @@ -1846,6 +1853,10 @@ /obj/item/paper/guides/jobs/security/labor_camp, /turf/open/floor/iron, /area/station/security/brig) +"gU" = ( +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/circuit/green, +/area/station/bitrunning/den) "gW" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/radiation/rad_area/directional/north, @@ -1928,6 +1939,11 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) +"lT" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/iron, +/area/station/bitrunning/den) "lX" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 1 @@ -1939,6 +1955,16 @@ /obj/machinery/chem_mass_spec, /turf/open/floor/iron, /area/station/medical/chemistry) +"mU" = ( +/obj/machinery/door/airlock, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/iron, +/area/station/bitrunning/den) +"nk" = ( +/obj/machinery/netpod, +/turf/open/floor/iron, +/area/station/bitrunning/den) "nn" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 @@ -1973,6 +1999,9 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/iron, /area/station/medical/chemistry) +"pl" = ( +/turf/closed/wall/r_wall, +/area/station/bitrunning/den) "pv" = ( /obj/machinery/light/directional/north, /turf/open/floor/iron, @@ -2017,11 +2046,23 @@ /obj/machinery/door/airlock/shell, /turf/open/floor/iron/dark, /area/station/construction) +"su" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/item/storage/part_replacer/bluespace/tier4, +/turf/open/floor/iron, +/area/station/bitrunning/den) "sH" = ( /obj/structure/table, /obj/item/storage/box/shipping, /turf/open/floor/iron, /area/station/commons/storage/primary) +"tB" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/directional/south, +/turf/open/floor/iron, +/area/station/bitrunning/den) "tE" = ( /obj/machinery/door/airlock/research, /turf/open/floor/iron/dark, @@ -2134,12 +2175,22 @@ "wU" = ( /turf/closed/wall/r_wall, /area/station/science/explab) +"yl" = ( +/obj/machinery/quantum_server, +/turf/open/floor/iron, +/area/station/bitrunning/den) "yA" = ( /obj/docking_port/stationary/laborcamp_home{ dir = 8 }, /turf/open/space/basic, /area/space) +"yG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/light/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "yK" = ( /obj/structure/fans/tiny/invisible, /obj/effect/turf_decal/stripes/line{ @@ -2213,6 +2264,10 @@ /obj/structure/rack, /turf/open/floor/iron/dark, /area/station/science/explab) +"Dy" = ( +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/bitrunning/den) "DW" = ( /obj/machinery/computer/scan_consolenew{ dir = 1 @@ -2302,6 +2357,9 @@ /obj/machinery/light/directional/south, /turf/open/floor/plating, /area/station/engineering/atmos) +"Lq" = ( +/turf/open/floor/circuit/green, +/area/station/bitrunning/den) "Ly" = ( /obj/machinery/chem_dispenser/chem_synthesizer, /turf/open/floor/iron/dark, @@ -2373,6 +2431,10 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"Qr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/bitrunning/den) "Qt" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -2396,6 +2458,11 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"Rl" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "RM" = ( /obj/structure/closet/secure_closet/hop{ locked = 0 @@ -2403,6 +2470,9 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron, /area/station/command/bridge) +"RW" = ( +/turf/open/floor/iron, +/area/station/bitrunning/den) "Sj" = ( /obj/structure/table/optable, /obj/effect/turf_decal/tile/blue{ @@ -3060,12 +3130,12 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa +pl +pl +pl +pl +pl +pl aa aa aa @@ -3152,12 +3222,12 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa +pl +gU +Lq +RW +nk +pl aa aa aa @@ -3244,12 +3314,12 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa +pl +gU +Lq +RW +nk +pl aa aa aa @@ -3336,12 +3406,12 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa +pl +yl +RW +su +nk +pl aa aa aa @@ -3428,12 +3498,12 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa +pl +er +Dy +lT +tB +pl aa aa aa @@ -3520,12 +3590,12 @@ em em em em -em -em -em -dY -en -dY +pl +pl +pl +mU +Qr +pl Tj Tj Tj @@ -3615,7 +3685,7 @@ rK rK vy em -eh +Rl eh LW lc @@ -3707,7 +3777,7 @@ qQ qQ ME em -eh +Rl eh LW lc @@ -3799,7 +3869,7 @@ qQ qQ ME em -eh +Rl eh LW lc @@ -3891,7 +3961,7 @@ qQ qQ CQ em -eh +yG eh LW lc @@ -3983,7 +4053,7 @@ qQ qQ ME em -eh +Rl eh LW lc @@ -4075,7 +4145,7 @@ qQ qQ YL em -eh +Rl eh LW lc @@ -4167,7 +4237,7 @@ II gl gD kj -wM +Rl wM LW lc diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_1.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_1.dmm index a34ab0e6fcf3..eab9280b8fa7 100644 --- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_1.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_1.dmm @@ -1845,10 +1845,10 @@ gb gb gb gb -gb -gb -gb -gb +eJ +eJ +eJ +eJ eJ eJ eJ @@ -1882,10 +1882,10 @@ gb gb gb gb -gb -gb -gb -gb +eJ +eJ +eJ +eJ eJ eJ eJ @@ -1918,7 +1918,7 @@ eJ gb gb gb -eJ +gb eJ eJ eJ diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_2.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_2.dmm index b5273b4c845f..ea1beb34cb0d 100644 --- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_2.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_2.dmm @@ -2004,10 +2004,10 @@ se se se se -se -se -se -se +dx +dx +dx +dx dx dx dx @@ -2041,10 +2041,10 @@ se se se se -se -se -se -se +dx +dx +dx +dx dx dx dx @@ -2077,7 +2077,7 @@ dx se se se -dx +se dx dx dx diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_3.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_3.dmm index 63b18a69e752..775e31e6b9d8 100644 --- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_3.dmm @@ -1918,10 +1918,10 @@ cK cK cK cK -cK -cK -cK -cK +Hu +Hu +Hu +Hu Hu Hu Hu @@ -1955,10 +1955,10 @@ cK cK cK cK -cK -cK -cK -cK +Hu +Hu +Hu +Hu Hu Hu Hu @@ -1991,7 +1991,7 @@ Hu cK cK cK -Hu +cK Hu Hu Hu diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_1.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_1.dmm index 202e850684a5..ae78ae6731f9 100644 --- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_1.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_1.dmm @@ -1079,10 +1079,10 @@ V V V V -V -V -V -V +l +l +l +l l l l @@ -1105,10 +1105,10 @@ V V V V -V -V -V -V +l +l +l +l l l l diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm index 939d8bb0aafc..0e8deac0a590 100644 --- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_2.dmm @@ -1013,10 +1013,10 @@ V V l V -V -V -V -V +b +b +b +b b b b @@ -1039,10 +1039,10 @@ V V V V -V -V -V -V +b +b +b +b b b b diff --git a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_3.dmm b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_3.dmm index 5831bc047d39..e110ecac03b6 100644 --- a/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_3.dmm +++ b/_maps/map_files/tramstation/maintenance_modules/barcargoupper_cave_3.dmm @@ -79,6 +79,10 @@ /obj/item/clothing/head/utility/hardhat, /turf/open/misc/asteroid, /area/station/asteroid) +"r" = ( +/obj/item/gps/mining, +/turf/open/misc/asteroid/dug, +/area/station/asteroid) "s" = ( /obj/machinery/conveyor{ id = "tram_mining" @@ -113,10 +117,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/station/maintenance/department/cargo) -"y" = ( -/obj/item/gps/mining, -/turf/open/misc/asteroid, -/area/station/asteroid) "z" = ( /obj/item/storage/bag/ore{ pixel_x = 6; @@ -1048,7 +1048,7 @@ b i i I -I +r Y i Y @@ -1100,10 +1100,10 @@ B I I P -y -i -i -i +Q +Q +Q +Q Q Q Q @@ -1126,10 +1126,10 @@ Y Y I Y -i -i -i -i +Q +Q +Q +Q Q Q Q diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index ba14c8c9b5e2..d0579c09e97a 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -1631,8 +1631,23 @@ suffix = "#2" }, /obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron, -/area/station/cargo/storage) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/turf_decal/box/corners{ + dir = 1 + }, +/obj/effect/decal/cleanable/oil/streak, +/obj/structure/sign/poster/random/directional/north, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/iron/dark/smooth_large, +/area/station/bitrunning/den) "aeB" = ( /obj/machinery/airalarm/directional/south, /obj/structure/cable, @@ -1813,8 +1828,20 @@ suffix = "#1" }, /obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron, -/area/station/cargo/storage) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/box/corners, +/obj/effect/turf_decal/box/corners{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/landmark/bitrunning/station_reward_spawn, +/turf/open/floor/iron/dark/smooth_large, +/area/station/bitrunning/den) "afl" = ( /obj/machinery/door/airlock/mining/glass{ name = "Mining Dock" @@ -4266,6 +4293,9 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, +/obj/structure/chair{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/storage) "axG" = ( @@ -4299,6 +4329,16 @@ dir = 1 }, /obj/machinery/light/small/directional/north, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/light/dim/directional/north, /turf/open/floor/iron, /area/station/cargo/warehouse) "axO" = ( @@ -4309,6 +4349,16 @@ pixel_x = -4 }, /obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + location = "QM #4" + }, +/obj/effect/turf_decal/tile/brown/fourcorners, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) "axS" = ( @@ -6963,6 +7013,14 @@ }, /turf/open/floor/iron/white, /area/station/medical/pharmacy) +"aTR" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "aTT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/rack, @@ -7516,6 +7574,15 @@ }, /obj/effect/turf_decal/stripes/line, /obj/machinery/airalarm/directional/north, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/computer/atmos_control/oxygen_tank{ + atmos_chambers = list("o2ordance"="Oxygen Supply") + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm/directional/north, /turf/open/floor/iron/dark, /area/station/science/ordnance/storage) "beF" = ( @@ -8366,6 +8433,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/checkpoint/supply) +"bub" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/bitrunning/den) "bug" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 5 @@ -11908,6 +11979,19 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/white, /area/station/science/lobby) +"cyO" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/elevator_control_panel{ + layer = 3.1; + linked_elevator_id = "tram_xeno_lift"; + pixel_y = 2; + preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") + }, +/turf/closed/wall/r_wall, +/area/station/science/xenobiology) "cyU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -13019,6 +13103,24 @@ /obj/effect/spawner/random/structure/steam_vent, /turf/open/floor/plating, /area/station/maintenance/department/medical) +"cSc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + location = "QM #3" + }, +/obj/effect/turf_decal/tile/brown/fourcorners, +/mob/living/simple_animal/bot/mulebot{ + home_destination = "QM #3"; + suffix = "#3" + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "cSe" = ( /obj/machinery/light/directional/east, /turf/open/floor/glass/reinforced, @@ -13479,6 +13581,24 @@ linked_elevator_id = "tram_lower_center_lift"; preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark_red/warning{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/industrial_lift/public, +/obj/machinery/elevator_control_panel/directional/east{ + linked_elevator_id = "tram_lower_center_lift"; + preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") + }, /turf/open/floor/plating/elevatorshaft, /area/station/hallway/secondary/construction/engineering) "cZT" = ( @@ -16438,6 +16558,16 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) "eaf" = ( @@ -18515,6 +18645,21 @@ linked_elevator_id = "tram_sci_lift"; preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/trimline/dark_red/warning{ + dir = 9 + }, +/obj/structure/industrial_lift/public, +/obj/structure/railing{ + dir = 9 + }, +/obj/machinery/elevator_control_panel/directional/west{ + linked_elevator_id = "tram_sci_lift"; + preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") + }, /turf/open/floor/plating/elevatorshaft, /area/station/science/lower) "eJZ" = ( @@ -20282,6 +20427,20 @@ "foa" = ( /obj/effect/decal/cleanable/dirt, /mob/living/basic/spider/giant, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + location = "QM #2" + }, +/obj/effect/turf_decal/tile/brown/fourcorners, +/mob/living/simple_animal/bot/mulebot{ + home_destination = "QM #2"; + suffix = "#2" + }, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) "fof" = ( @@ -20373,6 +20532,8 @@ /area/station/science/ordnance) "foU" = ( /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) "foY" = ( @@ -23081,6 +23242,13 @@ /obj/structure/destructible/cult/item_dispenser/archives/library, /turf/open/floor/engine/cult, /area/station/service/library) +"gmI" = ( +/obj/machinery/quantum_server, +/obj/effect/turf_decal/bot/left, +/turf/open/floor/iron/dark/smooth_corner{ + dir = 4 + }, +/area/station/bitrunning/den) "gmN" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -24031,6 +24199,21 @@ dir = 1 }, /obj/structure/industrial_lift/public, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/elevator_control_panel/directional/north{ + linked_elevator_id = "tram_upper_center_lift"; + preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") + }, +/obj/effect/turf_decal/trimline/dark_red/warning{ + dir = 1 + }, +/obj/structure/industrial_lift/public, /turf/open/floor/plating/elevatorshaft, /area/station/hallway/secondary/service) "gEK" = ( @@ -25106,6 +25289,8 @@ "gUL" = ( /obj/effect/landmark/event_spawn, /obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) "gUO" = ( @@ -26925,7 +27110,6 @@ /obj/effect/turf_decal/siding/thinplating/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) "hEb" = ( @@ -28589,6 +28773,15 @@ "igy" = ( /turf/closed/wall, /area/station/engineering/supermatter/room) +"igG" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/cargo/storage) "igL" = ( /obj/machinery/computer/operating{ dir = 8 @@ -28775,6 +28968,28 @@ /obj/structure/railing{ dir = 8 }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/landmark/lift_id{ + specific_lift_id = "tram_cargo_lift" + }, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark_red/warning{ + dir = 8 + }, +/obj/structure/industrial_lift/public, +/obj/machinery/elevator_control_panel/directional/west{ + linked_elevator_id = "tram_cargo_lift"; + preset_destination_names = list("2"="Lower Deck","3"="Upper Deck"); + req_access = list("mining") + }, +/obj/effect/abstract/elevator_music_zone{ + linked_elevator_id = "tram_cargo_lift" + }, /turf/open/floor/plating/elevatorshaft, /area/station/cargo/miningdock) "iko" = ( @@ -30790,6 +31005,9 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/science) +"iTi" = ( +/turf/closed/wall, +/area/station/bitrunning/den) "iTm" = ( /obj/structure/table/glass, /obj/item/storage/pill_bottle/mannitol, @@ -31425,6 +31643,24 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/prison/safe) +"jcJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=2"; + location = "QM #1" + }, +/obj/effect/turf_decal/tile/brown/fourcorners, +/mob/living/simple_animal/bot/mulebot{ + home_destination = "QM #1"; + suffix = "#1" + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "jcM" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/yellow/warning{ @@ -33999,8 +34235,17 @@ dir = 1 }, /obj/effect/turf_decal/trimline/brown/filled/line, -/turf/open/floor/iron, -/area/station/cargo/storage) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/structure/railing{ + layer = 3.1; + dir = 4 + }, +/obj/machinery/netpod, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/bitrunning/den) "jUa" = ( /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 4 @@ -35473,14 +35718,15 @@ /turf/open/floor/iron, /area/station/hallway/secondary/service) "ksx" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=1"; - location = "QM #5" +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner{ + dir = 1 }, -/obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron, -/area/station/cargo/storage) +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "ksP" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 1 @@ -35678,6 +35924,14 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/table, /obj/item/radio/intercom/directional/north, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/cargo/warehouse) "kye" = ( @@ -37962,14 +38216,26 @@ /turf/open/floor/iron, /area/station/hallway/secondary/entry) "leN" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=1"; - location = "QM #4" +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/stripes, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cup/glass/mug/coco{ + pixel_x = -7; + pixel_y = 7 }, -/obj/effect/turf_decal/tile/brown/fourcorners, -/turf/open/floor/iron, -/area/station/cargo/storage) +/obj/item/reagent_containers/cup/glass/mug/coco{ + pixel_x = -6; + pixel_y = -1 + }, +/obj/item/folder/yellow{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/pen{ + pixel_x = 6 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "leV" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/maintenance_hatch, @@ -39592,6 +39858,20 @@ }, /obj/structure/sign/clock/directional/west, /obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + location = "QM #6" + }, +/obj/effect/turf_decal/tile/brown/fourcorners, +/mob/living/simple_animal/bot/mulebot{ + home_destination = "QM #6"; + suffix = "#6" + }, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) "lIQ" = ( @@ -40275,6 +40555,9 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) "lTP" = ( @@ -46119,6 +46402,18 @@ "nPe" = ( /turf/open/floor/carpet, /area/station/medical/psychology) +"nPj" = ( +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "nPp" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ @@ -46214,6 +46509,21 @@ linked_elevator_id = "tram_perma_lift"; preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/caution/stand_clear/red{ + dir = 1 + }, +/obj/structure/industrial_lift/public, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/elevator_control_panel/directional/west{ + linked_elevator_id = "tram_perma_lift"; + preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") + }, /turf/open/floor/plating/elevatorshaft, /area/station/security/execution/transfer) "nQo" = ( @@ -46376,6 +46686,16 @@ }, /turf/open/floor/iron/white, /area/station/security/medical) +"nSC" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "nSI" = ( /turf/closed/wall/r_wall, /area/station/commons/vacant_room/commissary) @@ -46608,7 +46928,6 @@ /obj/effect/turf_decal/siding/thinplating{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/cargo/storage) "nXn" = ( @@ -48597,8 +48916,20 @@ }, /obj/effect/turf_decal/tile/brown/fourcorners, /obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/textured_large, +/area/station/bitrunning/den) "oHp" = ( /obj/structure/bookcase/random/nonfiction, /turf/open/floor/wood/large, @@ -52427,6 +52758,16 @@ }, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"pSk" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/obj/effect/landmark/start/bitrunner, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/cargo/storage) "pSr" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 9 @@ -53221,6 +53562,21 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/crew_quarters/dorms) +"qgM" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/basic/spider/maintenance, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/turf/open/floor/iron/smooth, +/area/station/cargo/drone_bay) "qgP" = ( /obj/structure/table, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -56407,8 +56763,12 @@ }, /obj/effect/turf_decal/tile/brown/fourcorners, /obj/machinery/light/small/directional/west, -/turf/open/floor/iron, -/area/station/cargo/storage) +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/turf/closed/wall, +/area/station/bitrunning/den) "rem" = ( /obj/machinery/button/door/directional/west{ id = "private_e"; @@ -57454,6 +57814,9 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, +/obj/machinery/computer/order_console/bitrunning{ + dir = 4 + }, /turf/open/floor/iron, /area/station/cargo/storage) "rws" = ( @@ -58511,6 +58874,16 @@ }, /obj/structure/sign/calendar/directional/west, /obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=1"; + location = "QM #5" + }, +/obj/effect/turf_decal/tile/brown/fourcorners, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) "rPc" = ( @@ -58955,6 +59328,12 @@ name = "Cargo Storage Maintenance Hatch" }, /obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/netpod, +/obj/item/radio/intercom/directional/north, /turf/open/floor/iron/smooth, /area/station/maintenance/department/cargo) "rYd" = ( @@ -60153,6 +60532,17 @@ "ssA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/obj/machinery/light/small/directional/north, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) "ssC" = ( @@ -63524,7 +63914,9 @@ /turf/open/floor/iron, /area/station/engineering/engine_smes) "tte" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, /turf/open/floor/iron, /area/station/cargo/storage) "tth" = ( @@ -63766,6 +64158,18 @@ "txd" = ( /obj/effect/turf_decal/bot, /obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/decal/cleanable/oil/streak, +/obj/effect/landmark/start/bitrunner, /turf/open/floor/iron/smooth, /area/station/maintenance/department/cargo) "txh" = ( @@ -64574,6 +64978,14 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/structure/crate_empty, /obj/effect/spawner/random/maintenance/three, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/computer/quantum_console{ + dir = 1 + }, +/obj/machinery/light/directional/south, /turf/open/floor/iron/smooth, /area/station/maintenance/department/cargo) "tLz" = ( @@ -70049,6 +70461,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/foyer) +"vsN" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/obj/machinery/door/airlock/mining/glass{ + name = "MULE Storage" + }, +/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/turf/open/floor/iron, +/area/station/cargo/warehouse) "vsU" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -70210,6 +70635,19 @@ /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron, /area/station/cargo/office) +"vwc" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/elevator_control_panel{ + layer = 3.1; + linked_elevator_id = "tram_xeno_lift"; + pixel_y = 2; + preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") + }, +/turf/closed/wall, +/area/station/science/xenobiology) "vwd" = ( /obj/effect/turf_decal/trimline/purple/filled/line{ dir = 10 @@ -75409,6 +75847,17 @@ preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") }, /obj/structure/railing, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/turf_decal/trimline/dark_red/warning, +/obj/structure/industrial_lift/public, +/obj/machinery/elevator_control_panel/directional/south{ + linked_elevator_id = "tram_dorm_lift"; + preset_destination_names = list("2"="Lower Deck","3"="Upper Deck") + }, +/obj/structure/railing, /turf/open/floor/plating/elevatorshaft, /area/station/commons/dorms) "xhd" = ( @@ -76159,6 +76608,16 @@ "xvl" = ( /turf/closed/wall/r_wall, /area/station/ai_monitored/turret_protected/aisat/foyer) +"xvv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/netpod, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/smooth, +/area/station/maintenance/department/cargo) "xvC" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/trash/garbage, @@ -76653,16 +77112,19 @@ /turf/closed/wall, /area/station/security/processing) "xDW" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "MULE Storage" - }, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, /obj/effect/turf_decal/trimline/brown/filled/line, -/obj/effect/mapping_helpers/airlock/access/all/supply/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/mining/glass{ + name = "Bitrunning Den" + }, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, /turf/open/floor/iron, -/area/station/cargo/storage) +/area/station/bitrunning/den) "xEo" = ( /turf/closed/wall/r_wall, /area/station/command/heads_quarters/captain) @@ -124401,7 +124863,7 @@ hDT keT iEF fof -jiQ +vwc sXX akC kMh @@ -187040,7 +187502,7 @@ aaa aaa aaa lZW -sAO +xvv txd tLu lZW @@ -187295,11 +187757,11 @@ aac aaa aaa aaa -cTU -cTU +aaa +iTi rXQ -cTU -cTU +nPj +gmI cTU vSI vSI @@ -187552,7 +188014,7 @@ aaa aaa aaa aaa -cTU +iTi rec jTQ oHi @@ -187809,9 +188271,9 @@ aac aaa aaa aaa -cTU +iTi aeA -jTQ +nSC ksx cTU exr @@ -188066,9 +188528,9 @@ aac aac aaa aaa -cTU +iTi afk -jTQ +aTR leN cTU kqy @@ -188323,10 +188785,10 @@ aac aaa aaa cTU -cTU -ohS +iTi +bub xDW -ohS +bub cTU nnb pZA @@ -188583,7 +189045,7 @@ cTU aSo tAJ lTM -axF +pSk axF rwo dij @@ -188839,11 +189301,11 @@ aaa akr tjS hFV -gDr -uax -uax -uax -uax +igG +dzw +dzw +dzw +dzw gUL foU dzw @@ -189683,7 +190145,7 @@ eJQ bNx aSt aSt -qVr +cyO aaa aaa aaa @@ -191406,10 +191868,10 @@ aac aac aac xxZ -cTU -cTU -cTU -cTU +udQ +udQ +udQ +udQ udQ axN pxD @@ -191922,9 +192384,9 @@ aac xxZ mhQ ssA -bLq +qgM eab -udQ +vsN kyc kXr aye @@ -192179,8 +192641,8 @@ aac xxZ mhQ foa -mhQ -mhQ +cSc +jcJ udQ kSa cDP diff --git a/_maps/safehouses/README.md b/_maps/safehouses/README.md new file mode 100644 index 000000000000..8027ea38e211 --- /dev/null +++ b/_maps/safehouses/README.md @@ -0,0 +1,17 @@ +# Safe House + +## Creating a new safe house + +1. Create a new map inside the `_maps\safe_houses` folder using the TGM format. +2. Create a new dm file inside `modules\bitrunning\virtual_domain\safe_houses` folder.. +4. Place exit and goal landmarks (obj/effect/landmark/bitrunning/..). Generally, 3 exits and 2 goals are ok. +5. Ideally, leave 3 spaces for gear. This has usually been xy [1x1] [1x2] [1x3] + +## Notes + +- Safe houses are intended to be 7x6 in size. You're not technically limited to this, but consider maps other maps might be using this size if you want it to be modular. +- Consider that avatars are not invincible and still require air. If you're making a safe house, it should start with an area that accommodates for this. +- For compatibility, your safe house should have a route open from the top center xy [3x0] of the map. +- If you want a custom safehouse for a custom map with no modularity, no problem. Make whatever sizes you want, just ensure there are exit and goal effects placed. +- Some maps can alter what is spawned into the safehouse by placing objects in the safehouse area. I'm using the left corner, starting from the top, for things like space gear. + diff --git a/_maps/safehouses/TEMPLATES/TEMPLATE.dmm b/_maps/safehouses/TEMPLATES/TEMPLATE.dmm new file mode 100644 index 000000000000..c8e5059f0d01 --- /dev/null +++ b/_maps/safehouses/TEMPLATES/TEMPLATE.dmm @@ -0,0 +1,82 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"c" = ( +/obj/effect/mapping_helpers/airlock/access/all, +/obj/machinery/door/airlock/external/glass, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"p" = ( +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"v" = ( +/obj/effect/bitrunning/exit_spawn, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"N" = ( +/obj/effect/bitrunning/goal_turf, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"R" = ( +/turf/closed/wall, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +R +R +a +a +R +R +"} +(2,1,1) = {" +a +p +p +p +p +R +"} +(3,1,1) = {" +R +p +p +p +v +a +"} +(4,1,1) = {" +c +p +p +p +v +R +"} +(5,1,1) = {" +R +p +p +p +v +a +"} +(6,1,1) = {" +a +p +N +N +p +R +"} +(7,1,1) = {" +R +R +a +a +R +R +"} diff --git a/_maps/safehouses/den.dmm b/_maps/safehouses/den.dmm new file mode 100644 index 000000000000..235d786d6e9d --- /dev/null +++ b/_maps/safehouses/den.dmm @@ -0,0 +1,224 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/south, +/turf/open/floor/pod, +/area/virtual_domain/safehouse) +"c" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/east, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"e" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/effect/spawner/random/food_or_drink/snack{ + pixel_x = 4; + pixel_y = 2 + }, +/turf/open/floor/pod/dark, +/area/virtual_domain/safehouse) +"i" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "safehouseshutter" + }, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"l" = ( +/obj/structure/railing/corner/end{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/virtual_domain/safehouse) +"p" = ( +/turf/open/floor/pod, +/area/virtual_domain/safehouse) +"r" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 9 + }, +/turf/open/floor/pod/dark, +/area/virtual_domain/safehouse) +"u" = ( +/obj/structure/railing, +/obj/effect/turf_decal/siding/dark, +/obj/structure/sign/poster/contraband/hacking_guide/directional/east, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"z" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/pod/light, +/area/virtual_domain/safehouse) +"C" = ( +/turf/closed/wall, +/area/virtual_domain/safehouse) +"D" = ( +/obj/effect/decal/cleanable/generic, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/turf/open/floor/pod, +/area/virtual_domain/safehouse) +"E" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/pod/light, +/area/virtual_domain/safehouse) +"G" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "safehouseshutter" + }, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"I" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 5 + }, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/pod/light, +/area/virtual_domain/safehouse) +"J" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 8; + id = "safehouseshutter" + }, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"K" = ( +/obj/effect/spawner/random/vending/colavend, +/obj/machinery/light/small/directional/south, +/turf/open/floor/pod, +/area/virtual_domain/safehouse) +"M" = ( +/turf/open/floor/pod/dark, +/area/virtual_domain/safehouse) +"O" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/turf/open/floor/pod/dark, +/area/virtual_domain/safehouse) +"R" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/virtual_domain/safehouse) +"U" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/departments/cargo/directional/west, +/obj/machinery/light/small/directional/west, +/turf/open/floor/pod, +/area/virtual_domain/safehouse) +"W" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "safehouseshutter" + }, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"X" = ( +/obj/machinery/door/airlock/grunge, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"Y" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/button/door{ + pixel_x = 4; + pixel_y = 4; + id = "safehouseshutter" + }, +/obj/effect/spawner/random/food_or_drink/refreshing_beverage{ + pixel_y = 6; + pixel_x = -10 + }, +/turf/open/floor/pod/dark, +/area/virtual_domain/safehouse) +"Z" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 4 + }, +/turf/open/floor/pod/dark, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +C +C +C +G +G +C +"} +(2,1,1) = {" +W +U +p +M +K +C +"} +(3,1,1) = {" +C +r +O +O +E +i +"} +(4,1,1) = {" +X +D +Z +R +z +i +"} +(5,1,1) = {" +C +M +l +e +I +i +"} +(6,1,1) = {" +W +c +u +Y +a +C +"} +(7,1,1) = {" +C +C +C +J +J +C +"} diff --git a/_maps/safehouses/dig.dmm b/_maps/safehouses/dig.dmm new file mode 100644 index 000000000000..7fbbd3e55493 --- /dev/null +++ b/_maps/safehouses/dig.dmm @@ -0,0 +1,165 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/siding/yellow/corner, +/obj/effect/turf_decal/sand/plating, +/obj/item/flashlight/glowstick{ + on = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"c" = ( +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 8 + }, +/turf/open/misc/asteroid, +/area/virtual_domain/safehouse) +"h" = ( +/obj/effect/turf_decal/loading_area, +/obj/effect/turf_decal/box/corners{ + dir = 8 + }, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"i" = ( +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/obj/effect/decal/remains/xeno/larva, +/turf/open/misc/asteroid, +/area/virtual_domain/safehouse) +"l" = ( +/obj/structure/table, +/obj/item/coin/gold{ + pixel_x = -6; + pixel_y = 2 + }, +/obj/item/flashlight/lantern{ + pixel_y = 8; + pixel_x = 4; + on = 1 + }, +/turf/open/misc/asteroid, +/area/virtual_domain/safehouse) +"o" = ( +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/misc/asteroid, +/area/virtual_domain/safehouse) +"u" = ( +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/siding/yellow, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/misc/asteroid, +/area/virtual_domain/safehouse) +"x" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"A" = ( +/turf/closed/wall/rock, +/area/virtual_domain/safehouse) +"B" = ( +/turf/open/misc/asteroid, +/area/virtual_domain/safehouse) +"H" = ( +/turf/closed/mineral/asteroid, +/area/virtual_domain/safehouse) +"I" = ( +/obj/machinery/door/airlock/maintenance/glass, +/obj/structure/fans/tiny, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"M" = ( +/obj/effect/turf_decal/siding/yellow, +/obj/effect/decal/remains/xeno, +/turf/open/misc/asteroid, +/area/virtual_domain/safehouse) +"N" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"S" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/loading_area, +/obj/effect/turf_decal/box/corners, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"T" = ( +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/misc/asteroid, +/area/virtual_domain/safehouse) +"U" = ( +/obj/effect/turf_decal/siding/yellow{ + dir = 8 + }, +/turf/open/misc/asteroid, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +H +H +A +A +H +H +"} +(2,1,1) = {" +A +N +x +a +H +A +"} +(3,1,1) = {" +A +i +U +u +h +A +"} +(4,1,1) = {" +I +B +B +M +S +A +"} +(5,1,1) = {" +A +l +B +c +o +H +"} +(6,1,1) = {" +A +A +T +T +T +A +"} +(7,1,1) = {" +H +A +H +H +A +A +"} diff --git a/_maps/safehouses/ice.dmm b/_maps/safehouses/ice.dmm new file mode 100644 index 000000000000..a8293f9502aa --- /dev/null +++ b/_maps/safehouses/ice.dmm @@ -0,0 +1,254 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/spawner/structure/window/ice, +/turf/open/floor/plating/snowed, +/area/virtual_domain/safehouse) +"c" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/east, +/obj/structure/chair/wood{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"f" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/snowed, +/area/virtual_domain/safehouse) +"g" = ( +/obj/effect/spawner/structure/window/ice, +/obj/structure/barricade/wooden/crude/snow, +/turf/open/floor/plating/snowed, +/area/virtual_domain/safehouse) +"i" = ( +/turf/closed/wall/ice, +/area/virtual_domain/safehouse) +"m" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 1 + }, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/pod, +/area/virtual_domain/safehouse) +"n" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/rack, +/obj/item/grown/log, +/obj/item/grown/log, +/obj/item/grown/log, +/obj/item/hatchet/wooden, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"o" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"p" = ( +/obj/structure/railing, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"u" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"v" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 5 + }, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/pod, +/area/virtual_domain/safehouse) +"x" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/vending/coffee, +/turf/open/floor/plating/snowed, +/area/virtual_domain/safehouse) +"z" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating/snowed, +/area/virtual_domain/safehouse) +"A" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/structure/railing/corner/end{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/snowed, +/area/virtual_domain/safehouse) +"B" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating/snowed, +/area/virtual_domain/safehouse) +"C" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = 7; + pixel_y = 13 + }, +/obj/item/reagent_containers/cup/glass/coffee/no_lid{ + pixel_x = -4; + pixel_y = 14 + }, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"D" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/generic, +/obj/effect/turf_decal/trimline/dark_blue/line{ + dir = 9 + }, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/pod, +/area/virtual_domain/safehouse) +"I" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"L" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/directional/west, +/obj/machinery/smartfridge/drying_rack, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"O" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/airlock/freezer, +/obj/structure/fans/tiny, +/turf/open/floor/plating/snowed, +/area/virtual_domain/safehouse) +"S" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table/wood, +/obj/item/trash/chips{ + pixel_x = 8; + pixel_y = 15 + }, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"W" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/internals, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/mask/breath, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"Z" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +i +i +g +a +i +i +"} +(2,1,1) = {" +i +L +n +W +Z +i +"} +(3,1,1) = {" +a +x +u +I +D +i +"} +(4,1,1) = {" +O +z +B +I +m +i +"} +(5,1,1) = {" +a +f +A +C +v +i +"} +(6,1,1) = {" +i +o +p +S +c +i +"} +(7,1,1) = {" +i +i +g +g +i +i +"} diff --git a/_maps/safehouses/lavaland_boss.dmm b/_maps/safehouses/lavaland_boss.dmm new file mode 100644 index 000000000000..7482846e61f7 --- /dev/null +++ b/_maps/safehouses/lavaland_boss.dmm @@ -0,0 +1,243 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 1 + }, +/area/virtual_domain/safehouse) +"f" = ( +/turf/closed/wall, +/area/virtual_domain/safehouse) +"p" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/iron/dark, +/area/virtual_domain/safehouse) +"v" = ( +/obj/structure/table, +/obj/item/borg/upgrade/modkit/damage{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/borg/upgrade/modkit/damage{ + pixel_y = 4; + pixel_x = 8 + }, +/obj/item/borg/upgrade/modkit/damage{ + pixel_x = 8 + }, +/obj/item/borg/upgrade/modkit/range{ + pixel_y = 8 + }, +/obj/item/borg/upgrade/modkit/range{ + pixel_y = 4 + }, +/obj/item/borg/upgrade/modkit/range, +/obj/item/borg/upgrade/modkit/cooldown{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/borg/upgrade/modkit/cooldown{ + pixel_x = -8; + pixel_y = 4 + }, +/obj/item/borg/upgrade/modkit/cooldown{ + pixel_x = -8 + }, +/obj/item/reagent_containers/hypospray/medipen/survival/luxury{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/reagent_containers/hypospray/medipen/survival/luxury{ + pixel_x = 6 + }, +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain/safehouse) +"w" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/structure/railing, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"A" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/dark/smooth_edge, +/area/virtual_domain/safehouse) +"B" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 + }, +/obj/structure/table, +/obj/item/flashlight/lantern{ + pixel_x = 8; + pixel_y = null + }, +/obj/item/flashlight/lantern{ + pixel_y = 4 + }, +/obj/item/flashlight/lantern{ + pixel_x = -8; + pixel_y = 8 + }, +/obj/item/clothing/glasses/meson/night, +/obj/item/clothing/glasses/meson/night, +/obj/item/clothing/glasses/meson/night, +/turf/open/floor/iron/dark, +/area/virtual_domain/safehouse) +"C" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/structure/closet, +/obj/item/gun/ballistic/rocketlauncher/unrestricted, +/obj/item/ammo_casing/rocket, +/obj/item/ammo_casing/rocket, +/obj/item/ammo_casing/rocket, +/obj/item/energy_katana, +/obj/item/ammo_box/magazine/m7mm, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 8 + }, +/area/virtual_domain/safehouse) +"H" = ( +/obj/machinery/door/airlock/external/glass{ + name = "Mining External Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all, +/obj/structure/fans/tiny, +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain/safehouse) +"K" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_edge, +/area/virtual_domain/safehouse) +"O" = ( +/obj/item/gun/energy/recharge/kinetic_accelerator{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/gun/energy/recharge/kinetic_accelerator{ + pixel_x = -1; + pixel_y = 1 + }, +/obj/item/gun/energy/recharge/kinetic_accelerator{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/structure/closet, +/obj/item/kinetic_crusher, +/obj/item/kinetic_crusher, +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain/safehouse) +"P" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"S" = ( +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain/safehouse) +"T" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/obj/structure/sign/departments/cargo/directional/south, +/obj/structure/closet, +/obj/item/gun/ballistic/automatic/l6_saw/unrestricted, +/obj/item/ammo_box/magazine/sniper_rounds, +/obj/item/gun/ballistic/rifle/sniper_rifle, +/turf/open/floor/iron/dark, +/area/virtual_domain/safehouse) +"X" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/obj/machinery/suit_storage_unit/mining, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 4 + }, +/area/virtual_domain/safehouse) +"Y" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/obj/machinery/suit_storage_unit/mining, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 4 + }, +/area/virtual_domain/safehouse) +"Z" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 + }, +/obj/machinery/suit_storage_unit/mining, +/turf/open/floor/iron/dark, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +f +f +f +P +P +f +"} +(2,1,1) = {" +P +Z +Y +X +B +f +"} +(3,1,1) = {" +f +A +S +S +a +P +"} +(4,1,1) = {" +H +K +O +v +a +P +"} +(5,1,1) = {" +f +A +S +S +a +P +"} +(6,1,1) = {" +P +p +w +C +T +f +"} +(7,1,1) = {" +f +f +f +P +P +f +"} diff --git a/_maps/safehouses/mine.dmm b/_maps/safehouses/mine.dmm new file mode 100644 index 000000000000..551e2ca0c001 --- /dev/null +++ b/_maps/safehouses/mine.dmm @@ -0,0 +1,164 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 1 + }, +/area/virtual_domain/safehouse) +"f" = ( +/turf/closed/wall, +/area/virtual_domain/safehouse) +"p" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/iron/dark, +/area/virtual_domain/safehouse) +"w" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/machinery/light/directional/east, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"B" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 + }, +/obj/structure/table, +/obj/item/flashlight/lantern{ + pixel_x = 8; + pixel_y = null + }, +/obj/item/flashlight/lantern{ + pixel_y = 4 + }, +/obj/item/flashlight/lantern{ + pixel_x = -8; + pixel_y = 8 + }, +/turf/open/floor/iron/dark, +/area/virtual_domain/safehouse) +"C" = ( +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/structure/railing, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"H" = ( +/obj/machinery/door/airlock/external/glass{ + name = "Mining External Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all, +/obj/structure/fans/tiny, +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain/safehouse) +"K" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/turf/open/floor/iron/dark/smooth_edge, +/area/virtual_domain/safehouse) +"P" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"S" = ( +/turf/open/floor/iron/dark/textured_large, +/area/virtual_domain/safehouse) +"T" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/obj/item/kirbyplants/random, +/obj/structure/sign/departments/cargo/directional/south, +/turf/open/floor/iron/dark, +/area/virtual_domain/safehouse) +"X" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/obj/machinery/suit_storage_unit/mining, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 4 + }, +/area/virtual_domain/safehouse) +"Y" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/obj/machinery/suit_storage_unit/mining, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 4 + }, +/area/virtual_domain/safehouse) +"Z" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 + }, +/obj/machinery/suit_storage_unit/mining, +/turf/open/floor/iron/dark, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +f +f +f +P +P +f +"} +(2,1,1) = {" +P +Z +Y +X +B +f +"} +(3,1,1) = {" +f +K +S +S +a +P +"} +(4,1,1) = {" +H +K +S +S +a +P +"} +(5,1,1) = {" +f +K +S +S +a +P +"} +(6,1,1) = {" +P +p +w +C +T +f +"} +(7,1,1) = {" +f +f +f +P +P +f +"} diff --git a/_maps/safehouses/shuttle.dmm b/_maps/safehouses/shuttle.dmm new file mode 100644 index 000000000000..92228c95bd3c --- /dev/null +++ b/_maps/safehouses/shuttle.dmm @@ -0,0 +1,228 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall/mineral/titanium, +/area/virtual_domain/safehouse) +"e" = ( +/obj/effect/spawner/structure/window/reinforced/shuttle, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"f" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"g" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"i" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"k" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"l" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"q" = ( +/obj/effect/turf_decal/stripes/end, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"r" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"t" = ( +/obj/machinery/power/shuttle_engine/propulsion/burst{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/virtual_domain/safehouse) +"u" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"x" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"y" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/airlock/shuttle/glass, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/sand/volcanic, +/obj/structure/fans/tiny, +/turf/open/floor/iron/white, +/area/virtual_domain/safehouse) +"A" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/computer{ + dir = 8; + name = "shuttle console"; + icon_screen = "shuttle" + }, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"E" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"G" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"H" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"I" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/table/reinforced, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 3 + }, +/obj/item/clothing/mask/gas, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"L" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/obj/effect/turf_decal/sand/volcanic, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"M" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"T" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"X" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +a +t +e +e +t +a +"} +(2,1,1) = {" +e +L +i +q +l +a +"} +(3,1,1) = {" +a +x +r +u +g +e +"} +(4,1,1) = {" +y +f +r +H +E +a +"} +(5,1,1) = {" +a +M +X +H +T +e +"} +(6,1,1) = {" +e +k +A +I +G +a +"} +(7,1,1) = {" +a +a +e +e +a +a +"} diff --git a/_maps/safehouses/shuttle_space.dmm b/_maps/safehouses/shuttle_space.dmm new file mode 100644 index 000000000000..a5afaa475c65 --- /dev/null +++ b/_maps/safehouses/shuttle_space.dmm @@ -0,0 +1,231 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/spawner/structure/window/reinforced/shuttle, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"b" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"c" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"i" = ( +/turf/closed/wall/mineral/titanium/overspace, +/area/virtual_domain/safehouse) +"l" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"n" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/computer{ + dir = 8; + name = "shuttle console"; + icon_screen = "shuttle" + }, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"o" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"q" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/emergency, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"r" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"z" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"A" = ( +/obj/effect/turf_decal/stripes/end{ + dir = 1 + }, +/obj/effect/turf_decal/sand/volcanic, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"B" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/light/small/directional/south, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"D" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"E" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/airlock/shuttle/glass, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/sand/volcanic, +/obj/structure/fans/tiny, +/turf/open/floor/iron/white, +/area/virtual_domain/safehouse) +"G" = ( +/turf/closed/wall/mineral/titanium, +/area/virtual_domain/safehouse) +"H" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"I" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"L" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/table/reinforced, +/obj/item/tank/internals/emergency_oxygen{ + pixel_x = 3 + }, +/obj/item/clothing/mask/gas, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"N" = ( +/obj/machinery/power/shuttle_engine/propulsion/burst{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/virtual_domain/safehouse) +"O" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"U" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"W" = ( +/obj/effect/turf_decal/stripes/end, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) +"Y" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/generic, +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/iron, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +i +N +a +a +N +i +"} +(2,1,1) = {" +a +A +o +W +D +G +"} +(3,1,1) = {" +G +I +H +U +r +a +"} +(4,1,1) = {" +E +z +H +b +Y +G +"} +(5,1,1) = {" +G +c +O +b +l +a +"} +(6,1,1) = {" +a +q +n +L +B +G +"} +(7,1,1) = {" +i +G +a +a +G +i +"} diff --git a/_maps/safehouses/test_only_safehouse.dmm b/_maps/safehouses/test_only_safehouse.dmm new file mode 100644 index 000000000000..c23f8c4a22b4 --- /dev/null +++ b/_maps/safehouses/test_only_safehouse.dmm @@ -0,0 +1,29 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/landmark/bitrunning/cache_goal_turf, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"d" = ( +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"u" = ( +/turf/open/floor/plating, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +u +d +"} +(2,1,1) = {" +u +d +"} +(3,1,1) = {" +u +d +"} +(4,1,1) = {" +u +a +"} diff --git a/_maps/safehouses/wood.dmm b/_maps/safehouses/wood.dmm new file mode 100644 index 000000000000..0bb6b273fcea --- /dev/null +++ b/_maps/safehouses/wood.dmm @@ -0,0 +1,120 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/indestructible/hotelwood, +/area/virtual_domain/safehouse) +"i" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"o" = ( +/turf/open/floor/carpet/green, +/area/virtual_domain/safehouse) +"p" = ( +/obj/item/kirbyplants/random/fullysynthetic, +/turf/open/indestructible/hotelwood, +/area/virtual_domain/safehouse) +"s" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"v" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/table/wood, +/obj/item/newspaper, +/turf/open/indestructible/hotelwood, +/area/virtual_domain/safehouse) +"x" = ( +/obj/structure/railing/corner/end{ + dir = 4 + }, +/turf/open/floor/carpet/green, +/area/virtual_domain/safehouse) +"z" = ( +/obj/structure/sign/poster/random/directional/east, +/turf/open/indestructible/hotelwood, +/area/virtual_domain/safehouse) +"G" = ( +/turf/closed/wall/mineral/wood, +/area/virtual_domain/safehouse) +"J" = ( +/obj/structure/railing, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"T" = ( +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/indestructible/hotelwood, +/area/virtual_domain/safehouse) +"X" = ( +/obj/machinery/door/airlock/wood/glass, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/virtual_domain/safehouse) +"Z" = ( +/obj/machinery/light/small/directional/west, +/turf/open/indestructible/hotelwood, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +G +G +i +G +G +G +"} +(2,1,1) = {" +i +Z +a +a +Z +i +"} +(3,1,1) = {" +G +p +o +o +T +G +"} +(4,1,1) = {" +X +a +o +o +T +G +"} +(5,1,1) = {" +G +a +x +o +T +G +"} +(6,1,1) = {" +i +s +J +z +v +i +"} +(7,1,1) = {" +G +G +i +G +G +G +"} diff --git a/_maps/virtual_domains/README.md b/_maps/virtual_domains/README.md new file mode 100644 index 000000000000..a02d43e1575e --- /dev/null +++ b/_maps/virtual_domains/README.md @@ -0,0 +1,32 @@ +# Making new virtual domains + +## From scratch + +1. Create a new map using TGM format. It can be any size, but please, consider limiting to 75x75 max. +2. Ensure that the map has ONE tile marked with the safehouse bottom left landmark. If you're using modular safehouses, it will need to be a 7x6 area. +4. Provide a way for players to enter your new map via the north door, which is 4th tile over. +5. Enclose your area with a single wall binary closed wall. + +## From an existing map + +1. Create a new map using the existing map's size - give yourself enough room to enclose it with a binary wall. There's no need for any space outside of it, so ensure that it fits and is enclosed, nothing outside of this. +2. Copy and paste the existing map into it. +3. Find an accessible area for a safehouse, 7x6 - or with a custom, just ensure the necessary landmarks are placed. +4. Place a bottom left safehouse landmark somewhere on the map to load the safehouse. + +## BOTH. +1. You need to have one (1) way that the encrypted cache can spawn. This can be from a mob drop, a landmark (place a few, it'll pick one), or a signable landmark if you have a points system. +2. Make note of the size of the map. Make sure this is in the dm file. +3. Create the dm file that defines the map qualities. Examples are in the bitrunning file. + +### Notes + +You shouldn't need to fully enclose your map in 15 tiles of binary filler. Using one solid wall should do the trick. + +Adding some open tile padding around the safehouse is a good touch. About 7 tiles West/East for the visual effect of a larger map. + +If you want to add prep gear, you can do so within the safehouse's area as long you don't overlap with goal turfs or exit spawners. The top left corner is a good spot for this, with respect for the walls, therefore [1, 1], [1, 2], [1, 3] + +You can also create safehouses if you find yourself needing the same gear over and over again. There is a readme for that as well. + +Boss zones should give players pretty ample space, I've been using a 23x23 minimum area. diff --git a/_maps/virtual_domains/ash_drake.dmm b/_maps/virtual_domains/ash_drake.dmm new file mode 100644 index 000000000000..50fbac8696ab --- /dev/null +++ b/_maps/virtual_domains/ash_drake.dmm @@ -0,0 +1,1750 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"c" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"e" = ( +/obj/structure/marker_beacon/cerulean, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"f" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"g" = ( +/obj/structure/marker_beacon/lime, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"h" = ( +/obj/machinery/light/small/blacklight/directional/south, +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/virtual_domain/powered) +"i" = ( +/obj/structure/marker_beacon/jade, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"j" = ( +/obj/structure/marker_beacon/teal, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"l" = ( +/obj/structure/marker_beacon/bronze, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"q" = ( +/mob/living/simple_animal/hostile/megafauna/dragon/virtual_domain, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"s" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"u" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"v" = ( +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"G" = ( +/obj/structure/marker_beacon/purple, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"J" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"L" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"P" = ( +/obj/structure/marker_beacon/fuchsia, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Z" = ( +/obj/effect/mob_spawn/corpse/human/miner, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) + +(1,1,1) = {" +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +u +"} +(2,1,1) = {" +v +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +v +"} +(3,1,1) = {" +v +s +s +s +s +J +J +s +s +J +J +s +s +J +J +J +J +s +s +s +J +J +J +s +s +s +s +s +s +s +s +s +s +J +J +s +s +s +J +J +s +s +J +J +s +v +"} +(4,1,1) = {" +v +s +s +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +s +v +"} +(5,1,1) = {" +v +s +s +J +a +J +J +J +J +a +J +J +J +J +a +a +J +J +J +J +J +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +s +s +v +"} +(6,1,1) = {" +v +s +s +J +a +J +J +a +a +a +a +a +a +a +a +a +a +a +a +J +a +a +a +a +a +J +J +J +a +a +J +J +J +a +a +J +a +J +a +a +J +J +J +s +s +v +"} +(7,1,1) = {" +v +s +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +s +v +"} +(8,1,1) = {" +v +s +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +s +v +"} +(9,1,1) = {" +v +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +i +a +a +a +a +a +Z +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(10,1,1) = {" +v +s +J +J +J +a +a +a +a +a +a +G +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(11,1,1) = {" +v +s +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(12,1,1) = {" +v +s +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +s +v +"} +(13,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +g +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(14,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(15,1,1) = {" +v +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +h +c +c +c +c +c +L +a +a +J +J +s +v +"} +(16,1,1) = {" +v +s +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +c +c +c +c +c +c +a +a +J +J +s +v +"} +(17,1,1) = {" +v +s +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +l +a +a +c +c +c +c +c +c +a +a +J +J +s +v +"} +(18,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +q +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +c +c +c +c +c +c +a +J +J +s +s +v +"} +(19,1,1) = {" +v +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +c +c +c +c +c +c +a +a +J +J +s +v +"} +(20,1,1) = {" +v +s +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +c +c +c +c +c +c +a +a +J +J +s +v +"} +(21,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +e +a +a +a +a +a +a +a +a +a +a +a +a +h +c +c +c +c +c +f +a +a +J +s +s +v +"} +(22,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +s +s +v +"} +(23,1,1) = {" +v +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +s +s +v +"} +(24,1,1) = {" +v +s +J +J +a +a +a +a +j +a +a +a +a +a +P +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(25,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +s +v +"} +(26,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(27,1,1) = {" +v +s +s +J +J +J +a +a +a +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +j +a +a +a +a +a +a +a +J +J +s +v +"} +(28,1,1) = {" +v +s +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +s +v +"} +(29,1,1) = {" +v +s +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +s +v +"} +(30,1,1) = {" +v +s +s +J +J +J +J +a +a +J +J +J +a +a +a +a +J +J +J +a +a +a +J +J +J +a +a +a +J +J +a +a +a +a +a +a +J +J +a +a +a +J +J +s +s +v +"} +(31,1,1) = {" +v +s +s +a +J +J +J +J +J +J +J +J +J +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +J +J +J +J +J +J +J +J +J +s +v +"} +(32,1,1) = {" +v +s +s +a +J +J +J +J +J +J +J +J +J +J +J +J +J +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +s +v +"} +(33,1,1) = {" +v +s +s +s +s +s +J +J +s +s +s +s +J +J +s +s +s +s +s +s +J +J +s +s +s +s +J +J +s +s +s +s +J +J +J +s +s +s +s +s +s +J +J +J +s +v +"} +(34,1,1) = {" +v +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +v +"} +(35,1,1) = {" +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +"} diff --git a/_maps/virtual_domains/beach_bar.dmm b/_maps/virtual_domains/beach_bar.dmm new file mode 100644 index 000000000000..9c4289ec6ccd --- /dev/null +++ b/_maps/virtual_domains/beach_bar.dmm @@ -0,0 +1,3272 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ab" = ( +/obj/machinery/vending/cigarette/beach, +/obj/effect/turf_decal/sand, +/obj/structure/sign/poster/contraband/have_a_puff/directional/west, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"af" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/chair/stool/bar/directional/south, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"ag" = ( +/turf/open/floor/carpet/red, +/area/virtual_domain/powered) +"as" = ( +/obj/structure/closet/crate/bin, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/trash/candy, +/obj/item/toy/talking/owl, +/obj/effect/turf_decal/sand, +/obj/machinery/light/directional/west, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"aw" = ( +/obj/machinery/grill, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"aE" = ( +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"aZ" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/closet/crate{ + name = "fuel crate" + }, +/obj/item/stack/sheet/mineral/coal/ten, +/obj/item/stack/sheet/mineral/coal/ten, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"bf" = ( +/mob/living/basic/crab{ + name = "Jonny" + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"bm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"bC" = ( +/obj/effect/turf_decal/sand, +/mob/living/basic/crab{ + name = "James" + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"bM" = ( +/mob/living/basic/crab{ + name = "Jon" + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"bQ" = ( +/obj/structure/fluff/beach_umbrella/cap, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"bS" = ( +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo"; + pixel_x = -4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"cb" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/pill/lsd, +/obj/item/reagent_containers/pill/lsd, +/obj/item/reagent_containers/pill/lsd, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"cv" = ( +/turf/open/floor/carpet/royalblue, +/area/virtual_domain/powered) +"cz" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/jukebox, +/obj/item/coin/gold, +/turf/open/floor/sepia, +/area/virtual_domain/powered) +"cG" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/water/beach, +/area/virtual_domain/powered) +"cK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"db" = ( +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/vending_refill/cigarette, +/obj/item/vending_refill/boozeomat, +/obj/structure/closet/secure_closet{ + icon_state = "cabinet"; + name = "booze storage"; + req_access = list("bar") + }, +/obj/item/storage/backpack/duffelbag, +/obj/item/etherealballdeployer, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/colocup, +/obj/item/reagent_containers/cup/glass/colocup, +/obj/item/reagent_containers/cup/glass/colocup, +/obj/item/reagent_containers/cup/glass/colocup, +/obj/item/reagent_containers/cup/glass/colocup, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"di" = ( +/obj/machinery/vending/boozeomat, +/obj/effect/mapping_helpers/atom_injector/obj_flag{ + inject_flags = 1; + target_type = /obj/machinery/vending/boozeomat + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"dj" = ( +/turf/open/misc/beach/coast{ + dir = 1 + }, +/area/virtual_domain/powered) +"dx" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/turf/open/floor/sepia, +/area/virtual_domain/powered) +"dG" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/virtual_domain/powered) +"dH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"dI" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"dZ" = ( +/obj/structure/bookcase/random/reference, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"ed" = ( +/obj/machinery/atmospherics/components/tank/air{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"er" = ( +/obj/structure/noticeboard/staff, +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"fc" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/pill/happy, +/obj/item/toy/figure/bartender{ + pixel_x = -8; + pixel_y = -1 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain{ + pixel_y = 8; + pixel_x = 5 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"fr" = ( +/obj/item/melee/skateboard/hoverboard, +/obj/machinery/light/directional/west, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"fF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"gh" = ( +/obj/structure/flora/bush/stalky/style_random, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/water/beach, +/area/virtual_domain/powered) +"gl" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"gJ" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/misc/beach/coast{ + dir = 4 + }, +/area/virtual_domain/powered) +"hk" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"hE" = ( +/obj/structure/sign/departments/restroom/directional/east, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"hG" = ( +/obj/machinery/door/airlock/sandstone{ + name = "Surfer Shack 1" + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"hI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"hU" = ( +/turf/closed/mineral/random/volcanic, +/area/virtual_domain/powered) +"iz" = ( +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"iL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"iR" = ( +/obj/structure/table, +/obj/item/book/manual/wiki/barman_recipes, +/obj/item/reagent_containers/cup/glass/shaker, +/obj/item/reagent_containers/cup/rag, +/obj/machinery/light/small/directional/west, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"jc" = ( +/turf/open/floor/iron/stairs/right, +/area/virtual_domain/powered) +"jg" = ( +/obj/machinery/vending/hydronutrients, +/turf/open/floor/iron/grimy, +/area/virtual_domain/powered) +"jl" = ( +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"jy" = ( +/obj/effect/turf_decal/sand{ + density = 1 + }, +/obj/effect/decal/fakelattice, +/turf/open/floor/pod/light{ + density = 1 + }, +/area/virtual_domain/powered) +"jW" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"ke" = ( +/obj/structure/marker_beacon/bronze, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"kn" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/obj/structure/chair/stool/bar/directional/west, +/turf/open/floor/sepia, +/area/virtual_domain/powered) +"kv" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"kG" = ( +/obj/structure/table, +/obj/machinery/reagentgrinder, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"kK" = ( +/obj/structure/mirror/directional/west, +/obj/structure/sink/kitchen/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"kM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/chair/stool/bar/directional/south, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"kT" = ( +/obj/structure/chair/stool/bar/directional/south, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"lq" = ( +/obj/item/melee/skateboard/hoverboard, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"lB" = ( +/obj/item/toy/seashell, +/obj/effect/turf_decal/sand, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"lS" = ( +/turf/open/floor/light/colour_cycle/dancefloor_a, +/area/virtual_domain/powered) +"ml" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"mq" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/all_access, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"mG" = ( +/obj/structure/easel, +/obj/item/canvas/twentythree_twentythree, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"mP" = ( +/turf/open/misc/beach/coast/corner{ + dir = 1 + }, +/area/virtual_domain/powered) +"mX" = ( +/obj/structure/closet/secure_closet/freezer/meat/all_access, +/obj/item/food/meat/rawbacon, +/obj/item/food/meat/rawbacon, +/obj/item/food/meat/rawcutlet, +/obj/item/food/meat/rawcutlet, +/obj/item/food/meat/slab/rawcrab, +/obj/item/food/meat/slab/rawcrab, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"nP" = ( +/obj/item/stack/sheet/iron/fifty, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"oE" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/turf/open/misc/beach/coast/corner{ + dir = 8 + }, +/area/virtual_domain/powered) +"oP" = ( +/obj/structure/table/wood, +/obj/machinery/reagentgrinder, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"pr" = ( +/turf/template_noop, +/area/template_noop) +"pC" = ( +/obj/machinery/computer/arcade/battle, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"pT" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"pZ" = ( +/obj/machinery/light/directional/south, +/turf/open/misc/beach/coast{ + dir = 1 + }, +/area/virtual_domain/powered) +"qc" = ( +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"qg" = ( +/obj/structure/sign/poster/contraband/space_up/directional/west, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"qR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/obj/effect/spawner/structure/window, +/obj/structure/curtain, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"qW" = ( +/obj/item/melee/skateboard/hoverboard, +/mob/living/basic/chicken{ + name = "Chicken Joe" + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"qZ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"rc" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"ri" = ( +/obj/structure/sign/poster/official/fruit_bowl, +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"rm" = ( +/obj/item/storage/crayons, +/obj/structure/closet/crate/wooden, +/obj/item/canvas/twentythree_twentythree, +/obj/item/canvas/twentythree_twentythree, +/obj/item/canvas/twentythree_twentythree, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"rT" = ( +/obj/item/toy/seashell, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"sp" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"sB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"sT" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"tm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"tE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/obj/machinery/door/airlock/public/glass{ + name = "Resort Casino" + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"tF" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"tZ" = ( +/obj/structure/toilet, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"uc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"ug" = ( +/obj/structure/closet/secure_closet{ + icon_state = "cabinet"; + name = "bartender's closet"; + req_access = list("bar") + }, +/obj/item/clothing/shoes/sandal{ + desc = "A very fashionable pair of flip-flops."; + name = "flip-flops" + }, +/obj/item/clothing/neck/beads, +/obj/item/clothing/glasses/sunglasses/reagent, +/obj/item/clothing/suit/costume/hawaiian, +/obj/machinery/light/small/directional/east, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"uk" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/shovel/spade, +/obj/item/reagent_containers/cup/bucket, +/obj/item/cultivator, +/turf/open/floor/iron/grimy, +/area/virtual_domain/powered) +"uq" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain, +/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain{ + pixel_x = -4; + pixel_y = 8 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"uU" = ( +/obj/effect/turf_decal/sand, +/turf/open/floor/sepia, +/area/virtual_domain/powered) +"uV" = ( +/obj/structure/flora/coconuts, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"ve" = ( +/obj/item/toy/dodgeball, +/obj/item/toy/dodgeball, +/obj/item/toy/dodgeball, +/obj/item/toy/dodgeball, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"vp" = ( +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/structure/chair/stool/bar/directional/south, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"vq" = ( +/obj/machinery/oven/range, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"vr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"vv" = ( +/obj/structure/chair/stool/directional/south, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"vJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"vM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"vN" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/pill/morphine, +/obj/item/reagent_containers/pill/morphine, +/obj/item/reagent_containers/pill/morphine, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"vT" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/misc/beach/coast/corner, +/area/virtual_domain/powered) +"vW" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/iron/grimy, +/area/virtual_domain/powered) +"wb" = ( +/obj/structure/closet/crate/freezer{ + name = "Cooler" + }, +/obj/item/reagent_containers/cup/glass/ice, +/obj/item/reagent_containers/cup/glass/colocup, +/obj/item/reagent_containers/cup/glass/colocup, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + desc = "Beer advertised to be the best in space."; + name = "Masterbrand Beer" + }, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + desc = "Beer advertised to be the best in space."; + name = "Masterbrand Beer" + }, +/obj/item/reagent_containers/cup/glass/bottle/beer{ + desc = "Beer advertised to be the best in space."; + name = "Masterbrand Beer" + }, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"wD" = ( +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"xb" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"xh" = ( +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"xk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/obj/structure/table/wood/poker, +/obj/item/storage/dice, +/obj/item/stack/spacecash/c1000, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"xq" = ( +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/south, +/obj/item/megaphone, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"xw" = ( +/turf/open/floor/pod/dark, +/area/virtual_domain/powered) +"xJ" = ( +/obj/structure/closet/cabinet, +/obj/item/storage/backpack/duffelbag, +/obj/item/clothing/under/shorts/blue, +/obj/item/clothing/shoes/sandal{ + desc = "A very fashionable pair of flip-flops."; + name = "flip-flops" + }, +/obj/item/clothing/glasses/sunglasses, +/obj/item/clothing/neck/beads, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"xR" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/window/reinforced/spawner/directional/north{ + layer = 2.9 + }, +/obj/structure/chair/stool/directional/south, +/obj/item/storage/backpack/duffelbag, +/obj/item/clothing/under/shorts/red, +/obj/item/clothing/glasses/sunglasses, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"xW" = ( +/turf/open/space/basic, +/area/space) +"ya" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/pill/zoom, +/obj/item/reagent_containers/pill/zoom, +/obj/item/reagent_containers/pill/zoom, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"yi" = ( +/obj/structure/sink/kitchen/directional/west{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "old sink" + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"yl" = ( +/obj/item/reagent_containers/cup/glass/colocup{ + pixel_x = -7; + pixel_y = -2 + }, +/obj/item/reagent_containers/cup/glass/colocup{ + pixel_x = 5; + pixel_y = 6 + }, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/open/floor/carpet/red, +/area/virtual_domain/powered) +"yn" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"ys" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/light/directional/east, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"yv" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/food_cart, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"yB" = ( +/obj/item/instrument/guitar, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"yU" = ( +/obj/structure/sign/warning/gas_mask/directional/north, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"yX" = ( +/obj/structure/chair/stool/bar/directional/south, +/turf/open/floor/carpet/red, +/area/virtual_domain/powered) +"zn" = ( +/obj/machinery/light/directional/east, +/turf/open/misc/beach/coast{ + dir = 8 + }, +/area/virtual_domain/powered) +"zt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"zw" = ( +/obj/structure/punching_bag, +/turf/open/floor/pod/dark, +/area/virtual_domain/powered) +"zI" = ( +/obj/structure/marker_beacon/indigo, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"zU" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Aa" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/sepia, +/area/virtual_domain/powered) +"Ae" = ( +/obj/structure/chair, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Al" = ( +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors/virtual_domain) +"An" = ( +/obj/structure/marker_beacon/yellow, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Au" = ( +/obj/structure/fluff/beach_umbrella/science, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"AI" = ( +/obj/structure/table/reinforced, +/obj/machinery/reagentgrinder, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"AP" = ( +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Bl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Br" = ( +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck/cas{ + pixel_x = -6 + }, +/obj/item/toy/cards/deck/cas/black{ + pixel_x = -6; + pixel_y = 2 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Bu" = ( +/turf/open/misc/beach/coast{ + dir = 8 + }, +/area/virtual_domain/powered) +"Bw" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"BD" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/condiment/saltshaker, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"BJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"BM" = ( +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"BQ" = ( +/obj/machinery/seed_extractor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"Cb" = ( +/obj/machinery/light/directional/north, +/mob/living/basic/crab{ + name = "Eddie" + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Cv" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/floor/iron/grimy, +/area/virtual_domain/powered) +"CA" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/effect/mob_spawn/ghost_role/human/beach/lifeguard, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"CO" = ( +/obj/machinery/vending/dinnerware, +/obj/machinery/light/directional/east, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Db" = ( +/obj/machinery/barsign/all_access, +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"Dc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Ds" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Resort Lobby" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Dt" = ( +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/sand, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"DL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"Em" = ( +/obj/item/reagent_containers/condiment/enzyme{ + layer = 5 + }, +/obj/item/reagent_containers/cup/beaker{ + pixel_x = 5 + }, +/obj/structure/table, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Et" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Ev" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"EC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/structure/sign/warning/gas_mask/directional/west, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"EP" = ( +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/obj/machinery/washing_machine, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"EQ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Fn" = ( +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"FD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"FM" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"FQ" = ( +/obj/structure/table/reinforced, +/obj/item/secateurs, +/obj/item/reagent_containers/cup/bottle/nutrient/ez, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"FS" = ( +/obj/effect/turf_decal/sand, +/obj/structure/sign/warning/no_smoking/circle/directional/east, +/obj/machinery/light/directional/east, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"FY" = ( +/obj/structure/mineral_door/wood, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Ge" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Gh" = ( +/obj/effect/turf_decal/sand, +/obj/structure/sign/poster/contraband/starkist/directional/north, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Gz" = ( +/obj/structure/flora/tree/palm, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"GA" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/item/bikehorn/airhorn, +/obj/structure/table/wood, +/obj/item/storage/medkit/regular, +/obj/item/storage/medkit/brute, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Hs" = ( +/obj/machinery/shower/directional/west, +/turf/open/floor/iron/white, +/area/virtual_domain/powered) +"HF" = ( +/obj/machinery/deepfryer, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"HH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Ia" = ( +/obj/structure/urinal/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Ii" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/iron/stairs/left, +/area/virtual_domain/powered) +"Ir" = ( +/obj/machinery/vending/cola, +/obj/effect/turf_decal/sand, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Is" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/layer4, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/virtual_domain/powered) +"Iv" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/condiment/peppermill, +/obj/item/reagent_containers/condiment/soysauce, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"IH" = ( +/obj/item/toy/beach_ball, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"IM" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/grimy, +/area/virtual_domain/powered) +"IP" = ( +/obj/machinery/vending/snack, +/obj/effect/turf_decal/sand, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"IT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"Jt" = ( +/obj/item/reagent_containers/cup/glass/bottle/beer, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"JC" = ( +/obj/structure/fluff/beach_umbrella/engine, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"JE" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/all_access, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/mayonnaise, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"JS" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"JY" = ( +/obj/structure/flora/rock/style_random, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Kd" = ( +/obj/structure/sign/warning/secure_area, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"KH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/mineral_door/wood{ + name = "Croupier's Booth" + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"KZ" = ( +/obj/structure/flora/bush/stalky/style_random, +/turf/open/water/beach, +/area/virtual_domain/powered) +"LD" = ( +/turf/open/floor/plating, +/area/virtual_domain/powered) +"LW" = ( +/obj/item/storage/cans/sixbeer, +/turf/open/floor/carpet/orange, +/area/virtual_domain/powered) +"Mp" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain{ + pixel_y = 7; + pixel_x = 4 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Mw" = ( +/obj/structure/chair/sofa/right/brown, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Mz" = ( +/obj/structure/chair/sofa/left/brown, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Nh" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Nq" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"Nr" = ( +/obj/machinery/light/directional/north, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Nw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/item/bedsheet/dorms{ + dir = 4 + }, +/obj/structure/bed{ + dir = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"NF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"NM" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/food/grown/ambrosia/vulgaris, +/obj/item/food/grown/ambrosia/vulgaris, +/obj/item/food/grown/ambrosia/vulgaris, +/obj/item/food/grown/ambrosia/vulgaris, +/obj/item/food/grown/ambrosia/vulgaris, +/obj/item/food/grown/ambrosia/vulgaris, +/obj/item/food/grown/ambrosia/vulgaris, +/obj/item/food/grown/ambrosia/vulgaris, +/obj/item/food/grown/ambrosia/vulgaris, +/obj/item/food/grown/ambrosia/vulgaris, +/turf/open/floor/iron/grimy, +/area/virtual_domain/powered) +"NO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 10 + }, +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"NX" = ( +/obj/effect/landmark/bitrunning/loot_signal, +/turf/open/floor/light/colour_cycle/dancefloor_a, +/area/virtual_domain/powered) +"OE" = ( +/obj/effect/mob_spawn/ghost_role/human/beach{ + dir = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"OK" = ( +/obj/structure/sign/warning/gas_mask/directional/north, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"OR" = ( +/obj/machinery/light/directional/south, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"OW" = ( +/obj/structure/sink/kitchen/directional/east{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "old sink" + }, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"OZ" = ( +/obj/structure/marker_beacon/teal, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Pc" = ( +/obj/structure/chair/wood, +/obj/machinery/light/directional/west, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Pg" = ( +/obj/structure/sign/poster/official/high_class_martini/directional/west, +/obj/effect/mob_spawn/ghost_role/human/bartender{ + dir = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"PM" = ( +/obj/machinery/door/airlock/external/ruin, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Qb" = ( +/obj/machinery/griddle, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Qj" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/iron/grimy, +/area/virtual_domain/powered) +"Qk" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"Qu" = ( +/obj/structure/curtain, +/turf/open/floor/iron/white, +/area/virtual_domain/powered) +"QB" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"QP" = ( +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"QX" = ( +/obj/machinery/chem_dispenser/drinks/fullupgrade{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/light/small/directional/east, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Rx" = ( +/turf/open/floor/iron/stairs/medium, +/area/virtual_domain/powered) +"RB" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"RL" = ( +/obj/structure/closet/cabinet, +/obj/item/storage/backpack/duffelbag, +/obj/item/clothing/under/shorts/purple, +/obj/item/clothing/shoes/cookflops{ + desc = "A very fashionable pair of flip flops."; + name = "flip-flops" + }, +/obj/item/clothing/glasses/sunglasses/big, +/obj/item/clothing/neck/beads, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Sg" = ( +/obj/structure/flora/coconuts, +/obj/machinery/light/directional/north, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"SB" = ( +/obj/machinery/door/airlock/sandstone{ + name = "Resort Bathroom" + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"SD" = ( +/obj/machinery/door/airlock/sandstone{ + name = "Bar Access" + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"SY" = ( +/obj/machinery/door/airlock/sandstone{ + name = "Surfer Shack 2" + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"TG" = ( +/turf/open/floor/wood, +/area/virtual_domain/powered) +"TJ" = ( +/obj/structure/fluff/beach_umbrella/security, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"TM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/closed/wall/mineral/sandstone, +/area/virtual_domain/powered) +"TX" = ( +/obj/structure/sign/poster/contraband/ambrosia_vulgaris/directional/north, +/turf/open/floor/iron/grimy, +/area/virtual_domain/powered) +"Ud" = ( +/obj/effect/turf_decal/sand, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Uh" = ( +/turf/open/floor/iron/stairs/old, +/area/virtual_domain/powered) +"Uq" = ( +/obj/structure/weightmachine/weightlifter, +/turf/open/floor/pod/dark, +/area/virtual_domain/powered) +"UU" = ( +/obj/structure/flora/bush/large/style_random, +/obj/structure/flora/bush/jungle/a/style_random, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Ve" = ( +/obj/machinery/processor, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Vf" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"VA" = ( +/obj/machinery/computer/slot_machine, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"VH" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"VO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) +"VX" = ( +/obj/structure/flora/bush/large/style_random, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"We" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/cooking_to_serve_man, +/obj/item/clothing/suit/apron/chef, +/obj/item/clothing/head/utility/chefhat, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Wg" = ( +/obj/structure/dresser, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Ww" = ( +/turf/open/water/beach, +/area/virtual_domain/powered) +"WL" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"WO" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"WW" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/icecream_vat, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"WX" = ( +/obj/item/toy/plush/lizard_plushie/green{ + name = "Soaks-The-Rays" + }, +/turf/open/floor/carpet/orange, +/area/virtual_domain/powered) +"Xt" = ( +/turf/open/misc/beach/coast/corner{ + dir = 4 + }, +/area/virtual_domain/powered) +"Xv" = ( +/obj/structure/table/wood, +/obj/structure/bedsheetbin, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"XL" = ( +/obj/machinery/light/directional/east, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"XM" = ( +/turf/open/misc/beach/coast, +/area/virtual_domain/powered) +"XP" = ( +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"XT" = ( +/obj/effect/turf_decal/sand, +/obj/structure/sign/departments/botany/directional/south, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Yi" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/item/toy/seashell, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Yq" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"YI" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Supply Room" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"YJ" = ( +/turf/open/floor/carpet/purple, +/area/virtual_domain/powered) +"YN" = ( +/obj/effect/turf_decal/sand, +/obj/machinery/light/directional/west, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Zb" = ( +/obj/structure/sign/poster/official/cohiba_robusto_ad/directional/west, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Zd" = ( +/obj/structure/sign/poster/contraband/space_cola/directional/north, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Zg" = ( +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Zt" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/pill/morphine, +/obj/item/storage/fancy/donut_box, +/turf/open/floor/wood, +/area/virtual_domain/powered) + +(1,1,1) = {" +pr +pr +pr +pr +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +kv +"} +(2,1,1) = {" +pr +pr +pr +pr +iz +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +iz +"} +(3,1,1) = {" +pr +pr +pr +pr +iz +Al +gl +gl +gl +gl +gl +Al +Al +gl +gl +gl +gl +gl +Al +Al +gl +gl +gl +Al +gl +gl +gl +gl +Al +Al +gl +gl +gl +Al +Al +gl +gl +gl +gl +Al +iz +"} +(4,1,1) = {" +pr +pr +pr +pr +iz +Al +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +Al +iz +"} +(5,1,1) = {" +pr +pr +pr +pr +iz +Al +gl +gl +gl +gl +gl +gl +gl +gl +gl +zI +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +Al +iz +"} +(6,1,1) = {" +pr +pr +pr +pr +iz +Al +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +OZ +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +Al +iz +"} +(7,1,1) = {" +pr +pr +pr +pr +iz +Al +gl +gl +gl +An +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +ke +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +ml +ml +ml +ml +ml +FM +gl +Al +iz +"} +(8,1,1) = {" +pr +pr +pr +pr +iz +Al +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +ml +ml +ml +ml +ml +ml +gl +Al +iz +"} +(9,1,1) = {" +pr +pr +pr +pr +iz +Al +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +gl +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +gl +gl +ml +ml +ml +ml +ml +ml +gl +Al +iz +"} +(10,1,1) = {" +pr +pr +pr +pr +iz +Al +Al +Al +Al +xb +xb +xb +Al +Al +gl +gl +gl +Al +TM +IT +IT +IT +IT +IT +IT +IT +IT +IT +DL +Al +gl +gl +ml +ml +ml +ml +ml +ml +gl +Al +iz +"} +(11,1,1) = {" +iz +iz +iz +iz +iz +Al +Al +Al +Fn +PM +PM +Fn +Fn +hU +hU +hU +TM +IT +vM +Pc +bf +Bw +Fn +Ev +Pg +iR +kG +di +sp +DL +Al +gl +ml +ml +ml +ml +ml +ml +gl +Al +iz +"} +(12,1,1) = {" +iz +Al +Al +Al +Al +Al +Al +hU +Fn +pT +LD +LD +Fn +TM +Kd +IT +vM +bQ +cv +wD +Bw +JY +Fn +db +TG +TG +Vf +EQ +AP +Qk +Al +gl +ml +ml +ml +ml +ml +ml +gl +Al +iz +"} +(13,1,1) = {" +iz +Al +Fn +Fn +Fn +Fn +Fn +Fn +Fn +LD +pT +LD +EC +hI +pT +PM +wD +wD +cv +wD +wD +OR +Fn +ug +TG +TG +iL +Nh +QX +tm +Al +gl +ml +ml +ml +ml +ml +sT +gl +Al +iz +"} +(14,1,1) = {" +iz +Al +Fn +VA +kT +Zb +TG +Fn +Fn +Fn +yU +LD +Et +Bl +LD +PM +wD +wD +wD +wD +wD +qc +Fn +Fn +SD +Mp +uq +fc +Fn +QB +Al +gl +gl +gl +gl +gl +gl +gl +gl +Al +iz +"} +(15,1,1) = {" +iz +Al +Fn +VA +yX +ag +kT +Br +TG +TM +IT +IT +IT +vM +Fn +Fn +Gz +wD +Bw +rm +wD +wD +wD +Ii +dx +kn +kn +kn +Aa +QB +Al +gl +gl +gl +gl +gl +gl +gl +gl +Al +iz +"} +(16,1,1) = {" +iz +Al +Fn +pC +yX +ag +kM +BJ +af +tm +as +ab +Ir +IP +YN +uV +wD +wD +wD +mG +vv +Bw +wD +Rx +uU +lS +lS +lS +uU +QB +Al +gl +gl +gl +gl +gl +gl +gl +gl +Al +iz +"} +(17,1,1) = {" +iz +Al +Fn +Mw +ag +ag +vp +xk +EQ +cK +Ud +Ud +bC +Ud +Ud +wD +IH +wD +wD +Bw +wD +wD +wD +Rx +uU +lS +NX +lS +cz +QB +Al +gl +gl +gl +gl +gl +gl +gl +gl +Al +iz +"} +(18,1,1) = {" +iz +Al +Fn +Mz +TG +TG +TM +IT +KH +vM +Zd +wD +wD +Bw +wD +VX +wD +UU +wD +wD +wD +wD +wD +Rx +uU +lS +lS +lS +uU +QB +Al +gl +gl +gl +gl +gl +gl +gl +gl +Al +iz +"} +(19,1,1) = {" +iz +Al +TM +IT +tE +tE +vM +uV +NF +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +jc +uU +uU +uU +uU +uU +sp +DL +gl +gl +gl +gl +gl +gl +gl +gl +Al +iz +"} +(20,1,1) = {" +iz +Al +QB +zU +wD +wD +wD +wD +Dt +Ud +Ud +Ud +Ud +Ud +Ud +Ud +ys +wD +wD +TJ +wb +wD +wD +vT +gJ +gJ +gJ +gJ +gJ +oE +QB +gl +gl +Al +Al +gl +gl +Al +gl +Al +iz +"} +(21,1,1) = {" +iz +Al +QB +wD +wD +Bw +wD +wD +FD +BM +BM +We +Zt +BD +Iv +BM +Db +Nr +wD +yl +ag +wD +wD +XM +KZ +Ww +Ww +Ww +cG +dj +QB +Al +Al +Al +Al +Al +Al +Al +Al +Al +iz +"} +(22,1,1) = {" +iz +Al +sp +DL +wD +wD +wD +wD +yn +Zg +VH +TG +TG +TG +TG +mX +BM +wD +wD +Au +wD +rT +wD +XM +Ww +Ww +Ww +Ww +Ww +dj +QB +Al +iz +iz +iz +iz +iz +iz +iz +iz +iz +"} +(23,1,1) = {" +iz +Al +dG +QB +Cb +wD +JC +wD +NO +HF +HH +JE +BM +aw +TG +TG +ya +wD +wD +YJ +YJ +wD +wD +XM +Ww +Ww +Ww +Ww +Ww +dj +QB +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(24,1,1) = {" +iz +Al +Is +Qk +wD +Gz +WX +wD +jW +Em +TG +mq +ri +Qb +TG +TG +cb +wD +wD +bQ +wD +wD +wD +XM +Ww +Ww +KZ +KZ +Ww +pZ +QB +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(25,1,1) = {" +iz +Al +dG +QB +OK +Gz +LW +wD +bm +bS +Dc +oP +BM +vq +TG +TG +vN +wD +wD +XP +yB +wD +wD +XM +KZ +Ww +KZ +gh +Ww +dj +QB +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(26,1,1) = {" +iz +Al +dG +QB +Sg +wD +wD +wD +BM +Ve +rc +yi +TG +TG +TG +CO +BM +wD +Yi +XL +wD +wD +wD +XM +Ww +Ww +Ww +Ww +Ww +dj +QB +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(27,1,1) = {" +iz +Al +TM +vM +Bw +wD +wD +wD +BM +BM +BM +BM +FY +BM +BM +BM +er +wD +GA +xq +jy +wD +wD +XM +Ww +cG +Ww +Ww +KZ +dj +QB +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(28,1,1) = {" +iz +Al +QB +Nr +wD +wD +Bw +wD +YN +Ud +WW +yv +Ud +Ud +Ud +Ud +YN +wD +xR +CA +Uh +wD +qW +XM +Ww +Ww +Ww +Ww +Ww +pZ +QB +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(29,1,1) = {" +iz +Al +QB +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +wD +Jt +wD +mP +zn +Bu +Bu +Bu +Bu +Xt +QB +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(30,1,1) = {" +iz +Al +Nq +Ds +Ds +DL +VX +wD +wD +wD +wD +wD +XL +wD +wD +wD +wD +wD +wD +wD +wD +XT +Fn +Fn +Fn +Fn +Fn +Fn +TM +IT +vM +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(31,1,1) = {" +iz +Al +QB +TG +TG +sp +DL +jl +TM +dH +qR +qZ +DL +WO +wD +Bw +wD +wD +wD +wD +bM +Ud +aE +aE +aE +lq +fr +hk +QB +Al +Al +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(32,1,1) = {" +iz +Al +JS +Nh +HH +TG +sp +IT +vM +dZ +OE +Nw +sp +dH +qR +qZ +DL +wD +wD +wD +Ae +Ud +zw +xw +Uq +aE +aE +aE +sp +DL +Al +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(33,1,1) = {" +iz +Al +fF +EP +Dc +TG +TG +TG +hG +uc +TG +Ge +Fn +dZ +OE +Nw +QB +Gz +uV +wD +wD +Ud +xw +xw +xw +zt +aE +sB +OW +sp +DL +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(34,1,1) = {" +iz +Al +QB +Xv +TG +hE +TG +TG +Fn +Wg +rc +xJ +Fn +uc +TG +RB +QB +wD +wD +Bw +wD +lB +zw +xw +Uq +vJ +FQ +VO +aE +jg +QB +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(35,1,1) = {" +iz +Al +QB +Fn +SB +Fn +WL +TG +Fn +Fn +Fn +Fn +Fn +Wg +TG +RL +QB +Gh +Ud +Ud +Ud +FS +aE +aE +aE +vJ +AI +BQ +aE +NM +QB +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(36,1,1) = {" +iz +Al +JS +kK +TG +Fn +TG +TG +TG +TG +qg +TG +Fn +Fn +SY +Fn +sp +Ds +Ds +vr +YI +dH +IT +DL +TX +vJ +aE +VO +aE +uk +QB +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(37,1,1) = {" +iz +Al +fF +Ia +dI +Fn +Fn +Fn +QP +TG +TG +TG +TG +TG +TG +TG +TG +TG +TG +QB +ve +nP +ed +QB +Cv +Qj +IM +vW +Cv +TM +vM +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(38,1,1) = {" +iz +Al +QB +tZ +TG +Qu +Hs +TM +IT +DL +TG +rc +TG +TG +TG +tF +xh +TG +TG +QB +Yq +aZ +Fn +sp +IT +Qk +IT +tm +IT +vM +Al +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(39,1,1) = {" +iz +Al +sp +IT +IT +IT +IT +vM +hU +sp +IT +IT +IT +IT +IT +tm +Qk +IT +IT +vM +Fn +Fn +Fn +Al +Al +Al +Al +Al +Al +Al +Al +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(40,1,1) = {" +iz +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +Al +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} +(41,1,1) = {" +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +iz +pr +pr +pr +pr +pr +pr +pr +xW +"} diff --git a/_maps/virtual_domains/blood_drunk_miner.dmm b/_maps/virtual_domains/blood_drunk_miner.dmm new file mode 100644 index 000000000000..c3369a1c822d --- /dev/null +++ b/_maps/virtual_domains/blood_drunk_miner.dmm @@ -0,0 +1,1887 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"b" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"c" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"d" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"f" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/block/cracked, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"h" = ( +/obj/machinery/light/small/blacklight/directional/south, +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/virtual_domain/powered) +"i" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"j" = ( +/obj/structure/marker_beacon/jade, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"k" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"l" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"m" = ( +/obj/structure/marker_beacon/olive, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"n" = ( +/obj/structure/marker_beacon/cerulean, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"o" = ( +/obj/structure/marker_beacon/yellow, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"q" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"r" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"s" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"t" = ( +/obj/structure/marker_beacon/indigo, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"u" = ( +/obj/structure/stone_tile/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"v" = ( +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"w" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"x" = ( +/obj/structure/stone_tile, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"y" = ( +/obj/structure/marker_beacon/violet, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"z" = ( +/obj/structure/stone_tile/block, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"A" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"C" = ( +/obj/effect/mob_spawn/corpse/human/miner, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"G" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"H" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"I" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"J" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"K" = ( +/obj/structure/marker_beacon/teal, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"L" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"O" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"P" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"S" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 6 + }, +/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual_domain, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"T" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"W" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"X" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Y" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Z" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) + +(1,1,1) = {" +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +d +"} +(2,1,1) = {" +v +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +v +"} +(3,1,1) = {" +v +s +s +s +s +J +J +s +s +J +J +s +s +J +J +J +J +s +s +s +J +J +J +s +s +s +s +s +s +s +s +s +s +J +J +s +s +s +J +J +s +s +J +J +s +v +"} +(4,1,1) = {" +v +s +s +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +s +v +"} +(5,1,1) = {" +v +s +s +J +a +J +J +J +J +a +J +J +J +J +a +a +J +J +J +J +J +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +s +s +v +"} +(6,1,1) = {" +v +s +s +J +a +J +J +a +a +a +a +a +a +a +a +a +a +a +a +J +a +a +a +a +a +J +J +J +a +a +J +J +J +a +a +J +a +J +a +a +J +J +J +s +s +v +"} +(7,1,1) = {" +v +s +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +s +v +"} +(8,1,1) = {" +v +s +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +s +v +"} +(9,1,1) = {" +v +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +j +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(10,1,1) = {" +v +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +t +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(11,1,1) = {" +v +s +s +J +J +J +a +a +a +y +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(12,1,1) = {" +v +s +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +C +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +s +v +"} +(13,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(14,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +T +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(15,1,1) = {" +v +s +J +J +J +a +a +a +a +a +a +a +a +a +a +X +z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +h +c +c +c +c +c +L +a +a +J +J +s +v +"} +(16,1,1) = {" +v +s +J +J +J +J +a +a +a +a +a +a +a +T +W +a +r +a +i +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +c +c +c +c +c +c +a +a +J +J +s +v +"} +(17,1,1) = {" +v +s +s +J +J +J +a +a +a +a +a +a +a +a +I +b +k +l +x +a +T +k +a +a +a +m +a +a +a +a +a +o +a +a +c +c +c +c +c +c +a +a +J +J +s +v +"} +(18,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +P +S +A +O +u +r +k +a +a +a +a +a +a +a +a +a +a +a +c +c +c +c +c +c +a +J +J +s +s +v +"} +(19,1,1) = {" +v +s +J +J +J +a +a +a +a +a +a +a +a +k +G +H +x +f +k +a +Y +T +u +a +a +a +a +a +a +a +a +a +a +a +c +c +c +c +c +c +a +a +J +J +s +v +"} +(20,1,1) = {" +v +s +J +J +J +J +a +a +a +a +a +a +a +Y +x +a +Z +a +z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +c +c +c +c +c +c +a +a +J +J +s +v +"} +(21,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +h +c +c +c +c +c +q +a +a +J +s +s +v +"} +(22,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +w +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +s +s +v +"} +(23,1,1) = {" +v +s +J +J +a +a +a +a +a +a +n +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +s +s +v +"} +(24,1,1) = {" +v +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +C +a +a +a +a +a +J +J +s +v +"} +(25,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +s +v +"} +(26,1,1) = {" +v +s +s +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +K +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(27,1,1) = {" +v +s +s +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +j +a +a +a +a +a +a +a +a +a +J +J +s +v +"} +(28,1,1) = {" +v +s +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +J +s +v +"} +(29,1,1) = {" +v +s +J +J +J +J +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +J +J +s +s +v +"} +(30,1,1) = {" +v +s +s +J +J +J +J +a +a +J +J +J +a +a +a +a +J +J +J +a +a +a +J +J +J +a +a +a +J +J +a +a +a +a +a +a +J +J +a +a +a +J +J +s +s +v +"} +(31,1,1) = {" +v +s +s +a +J +J +J +J +J +J +J +J +J +a +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +a +a +a +J +J +J +J +J +J +J +J +J +s +v +"} +(32,1,1) = {" +v +s +s +a +J +J +J +J +J +J +J +J +J +J +J +J +J +a +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +J +s +v +"} +(33,1,1) = {" +v +s +s +s +s +s +J +J +s +s +s +s +J +J +s +s +s +s +s +s +J +J +s +s +s +s +J +J +s +s +s +s +J +J +J +s +s +s +s +s +s +J +J +J +s +v +"} +(34,1,1) = {" +v +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +s +v +"} +(35,1,1) = {" +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +"} diff --git a/_maps/virtual_domains/bubblegum.dmm b/_maps/virtual_domains/bubblegum.dmm new file mode 100644 index 000000000000..3381b1735398 --- /dev/null +++ b/_maps/virtual_domains/bubblegum.dmm @@ -0,0 +1,2250 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"c" = ( +/obj/effect/mob_spawn/corpse/human/miner, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"d" = ( +/obj/structure/marker_beacon/jade, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"f" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"g" = ( +/obj/structure/marker_beacon/teal, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"p" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"r" = ( +/obj/structure/marker_beacon/fuchsia, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"w" = ( +/obj/machinery/light/small/blacklight/directional/south, +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/virtual_domain/powered) +"x" = ( +/obj/structure/marker_beacon/olive, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"z" = ( +/obj/structure/marker_beacon/purple, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"A" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"C" = ( +/mob/living/simple_animal/hostile/megafauna/bubblegum/virtual_domain, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"F" = ( +/turf/open/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"G" = ( +/obj/structure/marker_beacon/violet, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"I" = ( +/obj/structure/marker_beacon/bronze, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"M" = ( +/obj/structure/marker_beacon/indigo, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"R" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"S" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"T" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"W" = ( +/obj/structure/marker_beacon/cerulean, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"X" = ( +/obj/structure/marker_beacon/lime, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Y" = ( +/obj/structure/marker_beacon/yellow, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Z" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) + +(1,1,1) = {" +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +R +"} +(2,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +"} +(3,1,1) = {" +F +Z +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +Z +Z +a +a +a +a +a +a +Z +Z +Z +F +"} +(4,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(5,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +p +Z +F +"} +(6,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +G +a +a +a +a +a +a +a +a +a +a +a +a +p +p +Z +F +"} +(7,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +x +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +a +a +a +a +p +Z +F +"} +(8,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +a +a +a +Z +Z +F +"} +(9,1,1) = {" +F +Z +a +a +a +a +a +a +p +p +p +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +F +"} +(10,1,1) = {" +F +Z +Z +a +a +a +a +a +Z +Z +Z +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +F +"} +(11,1,1) = {" +F +Z +Z +a +a +a +a +a +Z +Z +Z +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +a +a +a +a +a +a +a +a +p +p +a +a +a +a +a +Z +F +"} +(12,1,1) = {" +F +Z +Z +a +a +a +a +a +p +Z +p +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +a +a +a +a +a +a +a +p +a +a +a +a +a +Z +F +"} +(13,1,1) = {" +F +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +M +a +a +a +a +a +a +a +Z +F +"} +(14,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(15,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +c +a +a +a +a +a +a +Z +F +"} +(16,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +I +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(17,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +W +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(18,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(19,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(20,1,1) = {" +F +Z +a +a +a +a +a +z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(21,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +w +S +S +S +S +S +T +a +Z +F +"} +(22,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +S +S +S +S +S +S +a +Z +F +"} +(23,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +C +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +S +S +S +S +S +S +a +Z +F +"} +(24,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +X +a +a +S +S +S +S +S +S +a +Z +F +"} +(25,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +S +S +S +S +S +S +a +Z +F +"} +(26,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +S +S +S +S +S +S +a +Z +F +"} +(27,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +w +S +S +S +S +S +A +a +Z +F +"} +(28,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +f +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(29,1,1) = {" +F +Z +a +a +a +a +a +a +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +r +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(30,1,1) = {" +F +Z +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(31,1,1) = {" +F +Z +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(32,1,1) = {" +F +Z +a +a +a +a +a +a +a +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(33,1,1) = {" +F +Z +a +a +a +a +a +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +d +a +a +a +a +a +a +a +Z +F +"} +(34,1,1) = {" +F +Z +Z +a +a +a +a +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(35,1,1) = {" +F +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +X +a +a +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(36,1,1) = {" +F +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(37,1,1) = {" +F +Z +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +F +"} +(38,1,1) = {" +F +Z +a +a +a +p +p +a +a +a +a +a +g +a +a +a +a +Z +a +a +a +a +a +a +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +Z +F +"} +(39,1,1) = {" +F +Z +a +a +a +p +p +a +a +a +a +a +a +a +a +a +Z +Z +Z +a +a +a +a +a +p +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(40,1,1) = {" +F +Z +a +c +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(41,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Y +a +a +a +a +a +a +a +Z +F +"} +(42,1,1) = {" +F +Z +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +Z +F +"} +(43,1,1) = {" +F +Z +a +Z +Z +Z +Z +a +a +a +a +a +Z +Z +Z +Z +a +a +a +Z +Z +Z +Z +Z +a +a +a +a +a +a +Z +Z +Z +Z +a +a +a +a +a +a +Z +Z +a +a +Z +F +"} +(44,1,1) = {" +F +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +Z +F +"} +(45,1,1) = {" +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +F +"} diff --git a/_maps/virtual_domains/clown_planet.dmm b/_maps/virtual_domains/clown_planet.dmm new file mode 100644 index 000000000000..2bfd75218bba --- /dev/null +++ b/_maps/virtual_domains/clown_planet.dmm @@ -0,0 +1,2322 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ai" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"aI" = ( +/obj/item/bikehorn/airhorn, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"aM" = ( +/obj/item/bikehorn, +/turf/open/indestructible/honk, +/area/virtual_domain/powered) +"aP" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/decal/cleanable/food/pie_smudge, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"ba" = ( +/obj/structure/mecha_wreckage/honker, +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"bi" = ( +/obj/item/bikehorn, +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"bp" = ( +/turf/open/indestructible/light, +/area/virtual_domain/powered) +"bq" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"by" = ( +/turf/closed/wall/r_wall, +/area/lavaland/surface/outdoors/virtual_domain) +"bQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"bR" = ( +/obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/hope, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mapping_helpers/no_lava, +/turf/open/floor/noslip, +/area/virtual_domain/powered) +"bU" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"cw" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"cM" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"cW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"ed" = ( +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/obj/machinery/light/small/directional/west, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"eE" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"fh" = ( +/obj/effect/mob_spawn/corpse/human/damaged, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"gr" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"gy" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"gH" = ( +/obj/item/bikehorn, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/honk, +/area/virtual_domain/powered) +"gK" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"hK" = ( +/obj/item/clothing/head/cone, +/obj/effect/mapping_helpers/no_lava, +/turf/open/floor/noslip, +/area/virtual_domain/powered) +"hY" = ( +/turf/template_noop, +/area/template_noop) +"ij" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/delivery_chute{ + dir = 4 + }, +/turf/open/floor/noslip, +/area/virtual_domain/powered) +"ik" = ( +/turf/open/lava/smooth, +/area/virtual_domain/powered) +"iR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"ki" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"kn" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"lj" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/disposal/delivery_chute{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"lm" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/light/small/directional/east, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"lr" = ( +/obj/item/bikehorn, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"lx" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"ly" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"lP" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"mD" = ( +/turf/open/floor/plating, +/area/virtual_domain/powered) +"mE" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"mF" = ( +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"nE" = ( +/obj/effect/mapping_helpers/no_lava, +/turf/closed/wall/r_wall, +/area/virtual_domain/powered) +"oA" = ( +/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"oI" = ( +/obj/structure/table/glass, +/obj/item/grown/bananapeel/bluespace, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"pl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"ps" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"qM" = ( +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"rg" = ( +/obj/item/coin/bananium, +/obj/item/coin/bananium, +/obj/item/coin/bananium, +/obj/item/coin/bananium, +/obj/machinery/light/small/directional/west, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"rh" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"rr" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"rH" = ( +/obj/structure/disposalpipe/junction/yjunction{ + dir = 1; + invisibility = 101 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"rT" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"sq" = ( +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"sT" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1 + }, +/obj/effect/mapping_helpers/mail_sorting/supply/qm_office, +/turf/closed/wall/r_wall, +/area/virtual_domain/powered) +"tq" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"tt" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/turf/open/indestructible/light, +/area/virtual_domain/powered) +"tv" = ( +/obj/effect/mob_spawn/corpse/human/damaged, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"tF" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"tI" = ( +/obj/item/coin/bananium, +/obj/item/coin/bananium, +/obj/item/coin/bananium, +/obj/item/coin/bananium, +/obj/machinery/light/small/directional/east, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"uX" = ( +/obj/effect/mapping_helpers/no_lava, +/mob/living/simple_animal/hostile/retaliate/clown, +/turf/open/floor/noslip, +/area/virtual_domain/powered) +"uY" = ( +/turf/closed/mineral/bananium, +/area/virtual_domain/powered) +"uZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/structure/table, +/obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/escape, +/obj/item/pen/fourcolor, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"wz" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/mapping_helpers/no_lava, +/mob/living/simple_animal/hostile/retaliate/clown, +/turf/open/floor/noslip, +/area/virtual_domain/powered) +"xt" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"yd" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"yz" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/closed/wall/r_wall, +/area/virtual_domain/powered) +"yS" = ( +/obj/structure/marker_beacon/yellow, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"yZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"zm" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"zA" = ( +/obj/structure/statue/bananium/clown, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"zF" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/disposaloutlet{ + dir = 8 + }, +/turf/open/floor/noslip, +/area/virtual_domain/powered) +"Aa" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Bi" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Cp" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/machinery/light/small/directional/west, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"Cs" = ( +/obj/item/bikehorn, +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Dh" = ( +/turf/closed/wall/r_wall, +/area/virtual_domain/powered) +"Do" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"DL" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/item/bikehorn, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Ex" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"FI" = ( +/obj/item/reagent_containers/cup/glass/trophy/gold_cup, +/obj/structure/table/glass, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"Gg" = ( +/obj/structure/table/glass, +/obj/item/gun/magic/staff/honk, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"Hq" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Hr" = ( +/obj/structure/table/glass, +/obj/item/clothing/shoes/clown_shoes/banana_shoes, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"HQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Ie" = ( +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"Iz" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"IN" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/virtual_domain/powered) +"IY" = ( +/turf/open/indestructible/honk, +/area/virtual_domain/powered) +"Jv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/honk, +/area/virtual_domain/powered) +"JB" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Ka" = ( +/obj/effect/decal/cleanable/food/pie_smudge, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Kh" = ( +/obj/effect/mob_spawn/corpse/human/damaged, +/obj/effect/decal/cleanable/blood/old, +/turf/open/indestructible/honk, +/area/virtual_domain/powered) +"KG" = ( +/obj/item/pickaxe, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"KI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/turf/closed/wall/r_wall, +/area/lavaland/surface/outdoors/virtual_domain) +"Lv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/machinery/light/small/directional/east, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"Nv" = ( +/obj/effect/decal/cleanable/cobweb, +/turf/open/indestructible/honk, +/area/virtual_domain/powered) +"NB" = ( +/obj/machinery/disposal/delivery_chute, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"NL" = ( +/obj/machinery/disposal/delivery_chute{ + desc = "The following is engraved upon the chute: A FATE WORSE THAN DEATH LIES WITHIN"; + dir = 1; + name = "THE TRIAL OF HONKITUDE" + }, +/obj/structure/disposalpipe/trunk, +/obj/effect/mapping_helpers/no_lava, +/turf/open/floor/noslip, +/area/virtual_domain/powered) +"NW" = ( +/obj/structure/table/glass, +/obj/item/reagent_containers/spray/waterflower/superlube, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"Ok" = ( +/obj/item/bikehorn, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Ov" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"PJ" = ( +/obj/structure/disposalpipe/trunk, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/obj/effect/mapping_helpers/no_lava, +/turf/open/floor/noslip, +/area/virtual_domain/powered) +"PM" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"PQ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/item/pickaxe, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"QP" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"QX" = ( +/obj/structure/closet/crate/secure/bitrunning/encrypted, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"Rh" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"Rx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/structure/table, +/obj/item/flashlight/lamp/bananalamp, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"RU" = ( +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"Sg" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/effect/decal/cleanable/food/pie_smudge, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Sm" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/virtual_domain/powered) +"Tm" = ( +/obj/effect/decal/cleanable/food/pie_smudge, +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Tx" = ( +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"TH" = ( +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/structure/disposaloutlet{ + dir = 8 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"TK" = ( +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/turf/closed/wall/r_wall, +/area/virtual_domain/powered) +"Ug" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/carpet, +/area/virtual_domain/powered) +"UL" = ( +/obj/effect/decal/cleanable/oil, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"UN" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"UQ" = ( +/obj/structure/disposalpipe/segment{ + invisibility = 101 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"UY" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"Vv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/turf/closed/wall/r_wall, +/area/virtual_domain/powered) +"Vx" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"VI" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"VQ" = ( +/turf/open/floor/noslip, +/area/virtual_domain/powered) +"Ww" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/indestructible/permalube, +/area/virtual_domain/powered) +"WB" = ( +/obj/machinery/disposal/delivery_chute{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"WT" = ( +/obj/machinery/door/airlock/bananium, +/turf/open/indestructible/honk, +/area/virtual_domain/powered) +"WX" = ( +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"Xp" = ( +/obj/machinery/light/directional/south, +/turf/open/indestructible/honk, +/area/virtual_domain/powered) +"XB" = ( +/obj/machinery/light/directional/north, +/turf/open/indestructible/honk, +/area/virtual_domain/powered) +"Yb" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/indestructible/honk, +/area/virtual_domain/powered) +"YP" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + invisibility = 101 + }, +/turf/open/indestructible/white, +/area/virtual_domain/powered) +"ZR" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/disposaloutlet{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) + +(1,1,1) = {" +Ie +Ie +rT +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +rr +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(2,1,1) = {" +Ie +Ie +Vx +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(3,1,1) = {" +Ie +Ie +Vx +Ie +Ie +Ie +Ie +Ie +Dh +Dh +Dh +Dh +Dh +Dh +Dh +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Dh +Dh +Dh +Dh +Dh +Ie +Ie +Ie +Ie +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(4,1,1) = {" +Ie +Ie +Vx +Ie +Ie +Ie +Dh +Dh +Dh +ik +ik +ik +ik +ik +Dh +Dh +Ie +Ie +Ie +Ie +Ie +Dh +Dh +ik +ik +ik +Dh +Dh +Dh +Ie +Ie +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(5,1,1) = {" +Ie +Ie +Vx +Ie +Ie +Dh +Dh +ik +ik +ik +Hq +Sm +Hq +Sm +ik +Dh +Dh +Ie +Ie +Ie +Dh +Dh +ik +ik +tq +mD +ik +ik +Dh +Dh +Ie +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(6,1,1) = {" +Ie +Ie +Vx +Ie +Dh +Dh +ik +ik +IN +Tx +bU +ai +yZ +aP +Sm +ik +Dh +Dh +Dh +Dh +Dh +Nv +IY +tq +ik +ik +ik +ik +ik +Dh +Dh +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(7,1,1) = {" +Ie +Ie +Vx +Ie +Dh +ik +ik +Dh +Bi +cw +UQ +lr +UQ +UY +Vv +ik +Dh +IY +Jv +IY +Dh +IY +Jv +Kh +IY +tq +ik +tq +ik +ik +Dh +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(8,1,1) = {" +Ie +Ie +Vx +Dh +Dh +ik +IN +Tm +lx +Ww +cw +UQ +Sm +Vv +Vv +Dh +zm +oA +IY +Jv +Jv +IY +Jv +IY +IY +IY +Dh +ik +mD +ik +Dh +Dh +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(9,1,1) = {" +Ie +Ie +Vx +Dh +ik +ik +UN +UQ +UY +Ww +Vv +TH +Vv +YP +Cp +uY +Dh +sq +oA +IY +Dh +Dh +Jv +Dh +IY +IY +IY +tq +ik +ik +ik +Dh +Ie +Vx +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +tF +"} +(10,1,1) = {" +Ie +Ie +Vx +Dh +ik +IN +UQ +UQ +yZ +Do +Do +Vv +YP +YP +YP +KG +uY +Dh +Dh +oA +IY +IY +Jv +IY +IY +gH +Jv +Xp +Dh +ik +ik +Dh +by +KI +by +by +by +by +by +by +by +by +by +Ie +"} +(11,1,1) = {" +Ie +Ie +Vx +Dh +ik +yz +fh +UQ +UY +Vv +Ww +Vv +YP +YP +tt +bp +WX +oA +oA +oA +IY +Dh +IY +IY +Jv +Jv +IY +IY +ik +tq +ik +Dh +by +iR +PM +PM +PM +PM +PM +PM +PM +PM +by +Ie +"} +(12,1,1) = {" +Ie +Ie +Vx +Dh +ik +Hq +TK +qM +yZ +Ww +Ww +Vv +YP +PQ +tt +bp +uY +Dh +oA +oA +IY +IY +Dh +IY +IY +IY +IY +Jv +ik +tq +ik +ik +by +iR +yS +PM +PM +PM +PM +PM +yS +PM +by +Ie +"} +(13,1,1) = {" +Ie +Ie +Vx +Dh +ik +UN +UQ +UQ +DL +Ww +yz +lx +Vv +YP +Lv +WX +Dh +Dh +oA +IY +IY +Dh +Dh +IY +IY +Dh +IY +Jv +ik +mD +tq +ik +by +iR +PM +PM +PM +PM +PM +PM +PM +PM +by +Ie +"} +(14,1,1) = {" +Ie +Dh +Vv +nE +nE +mD +cw +UQ +lx +Ex +Tm +UQ +lx +Vv +Vv +ps +TK +Sm +Dh +Dh +Dh +zA +rg +Dh +XB +IY +Jv +gH +IY +ik +tq +ik +by +iR +PM +QP +QP +QP +QP +QP +xt +PM +by +Ie +"} +(15,1,1) = {" +Ie +Dh +ij +hK +nE +Dh +yz +UQ +UQ +UQ +UQ +bi +UQ +yZ +Do +Iz +kn +Ww +Dh +Dh +FI +mF +mF +mF +Dh +IY +Jv +Jv +IY +ik +tq +ik +by +ZR +PM +QP +QP +QP +QP +QP +QP +PM +by +Ie +"} +(16,1,1) = {" +Ie +Dh +VQ +uX +NL +TK +Tx +UQ +TK +UQ +cW +TK +Tm +UQ +yZ +pl +Do +Ex +UY +Dh +Ug +oI +NW +mF +Dh +Dh +Jv +IY +IY +ik +tq +ik +by +PM +PM +QP +QP +QP +QP +QP +QP +PM +by +Ie +"} +(17,1,1) = {" +Ie +Dh +VQ +bR +wz +Dh +Hq +UQ +Sm +cw +UY +cw +UQ +UQ +Tx +gy +Ex +UY +Iz +TK +NB +mF +aI +mF +WT +IY +Jv +IY +Dh +ik +tq +ik +by +PM +PM +QP +QP +QP +QP +QP +QP +PM +by +Ie +"} +(18,1,1) = {" +Ie +Dh +VQ +uX +PJ +TK +sT +kn +Do +Do +Vv +Do +Ov +UQ +UY +Ok +mE +rH +pl +Dh +mF +Hr +Gg +mF +Dh +IY +IY +IY +IY +ik +tq +ik +by +PM +PM +QP +QP +QP +QP +QP +QP +PM +by +Ie +"} +(19,1,1) = {" +Ie +Dh +zF +uX +nE +Dh +Dh +Ww +Ww +Ww +Do +Do +Do +lP +Ex +UY +Ka +Vv +tv +Dh +FI +mF +mF +QX +Dh +IY +IY +IY +IY +ik +tq +ik +by +lj +PM +QP +QP +QP +QP +QP +QP +PM +by +Ie +"} +(20,1,1) = {" +Ie +Dh +Vv +nE +nE +ik +Dh +Ww +Ww +Cs +Do +Do +Vv +Dh +Dh +bQ +Dh +ba +Dh +IY +Dh +zA +tI +Dh +XB +IY +Jv +Jv +IY +ik +tq +ik +by +iR +PM +QP +QP +QP +QP +QP +gr +PM +by +Ie +"} +(21,1,1) = {" +Ie +Ie +Vx +Dh +ik +Dh +Dh +Do +Do +Do +Ww +Do +Vv +rh +ed +gK +Dh +UL +Sm +IY +IY +Dh +Dh +Kh +IY +IY +Jv +IY +ik +tq +mD +ik +by +iR +PM +PM +PM +PM +PM +PM +PM +PM +by +Ie +"} +(22,1,1) = {" +Ie +Ie +Vx +Dh +ik +Dh +Dh +JB +Sg +Vv +Ww +Vv +uZ +YP +bp +bp +uY +Dh +bQ +oA +IY +IY +Dh +IY +Jv +IY +IY +IY +ik +tq +ik +ik +by +iR +PM +PM +yS +PM +PM +PM +PM +PM +by +Ie +"} +(23,1,1) = {" +Ie +Ie +Vx +Dh +ik +cM +eE +lx +Vv +ki +Ww +Vv +Rx +YP +bp +bp +WB +TK +Aa +Dh +IY +IY +Jv +Jv +Jv +IY +aM +Xp +Dh +tq +ik +Dh +by +iR +PM +PM +PM +PM +PM +PM +PM +PM +by +Ie +"} +(24,1,1) = {" +Ie +Ie +Vx +Dh +ik +Dh +Dh +lP +Do +Do +Cs +bQ +YP +bq +Rh +WX +uY +Dh +oA +oA +IY +IY +Jv +Jv +IY +IY +Dh +Dh +ik +mD +ik +Dh +by +KI +by +by +by +by +by +by +by +by +by +Ie +"} +(25,1,1) = {" +Ie +Ie +Vx +Dh +ik +Dh +Dh +pl +Do +Vv +Do +Vv +Vv +rh +lm +uY +Dh +sq +oA +IY +IY +IY +IY +IY +Dh +IY +IY +ik +mD +ik +ik +Dh +Ie +Vx +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +"} +(26,1,1) = {" +Ie +Ie +Vx +Dh +ik +ik +Dh +yd +Do +Do +Do +Ex +lx +Vv +Dh +Dh +oA +oA +IY +IY +IY +Jv +aM +IY +IY +IY +Dh +ik +tq +ik +Dh +Dh +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(27,1,1) = {" +Ie +Ie +Vx +Dh +Dh +ik +Dh +Dh +Ex +lx +HQ +UQ +UQ +bU +Dh +ik +Dh +Yb +IY +IY +Dh +IY +IY +Dh +IY +IY +ik +mD +ik +ik +Dh +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(28,1,1) = {" +Ie +Ie +Vx +Ie +Dh +Dh +ik +ik +Dh +mD +Dh +Ka +lP +mD +Dh +ik +Dh +Dh +Dh +Dh +Dh +IY +IY +IY +ik +ik +ik +ik +ik +Dh +Dh +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(29,1,1) = {" +Ie +Ie +Vx +Ie +Ie +Dh +Dh +ik +ik +ik +tq +tq +tq +Dh +ik +Dh +Dh +Ie +Ie +Ie +Dh +Dh +ik +ik +mD +tq +ik +ik +Dh +Dh +Ie +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(30,1,1) = {" +Ie +Ie +Vx +Ie +Ie +Ie +Dh +Dh +Dh +ik +ik +ik +ik +ik +Dh +Dh +Ie +Ie +Ie +Ie +Ie +Dh +Dh +ik +ik +ik +Dh +Dh +Dh +Ie +Ie +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(31,1,1) = {" +Ie +Ie +Vx +Ie +Ie +Ie +Ie +Ie +Dh +Dh +Dh +Dh +Dh +Dh +Dh +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Dh +Dh +Dh +Dh +Dh +Ie +Ie +Ie +Ie +Ie +Ie +Vx +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(32,1,1) = {" +Ie +Ie +VI +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +RU +ly +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} +(33,1,1) = {" +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +Ie +hY +hY +hY +hY +hY +hY +hY +hY +hY +hY +"} diff --git a/_maps/virtual_domains/colossus.dmm b/_maps/virtual_domains/colossus.dmm new file mode 100644 index 000000000000..a9c3c6e6d79e --- /dev/null +++ b/_maps/virtual_domains/colossus.dmm @@ -0,0 +1,2250 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"c" = ( +/obj/structure/marker_beacon/olive, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"e" = ( +/obj/structure/marker_beacon/bronze, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"j" = ( +/obj/structure/marker_beacon/cerulean, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"k" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"l" = ( +/obj/structure/marker_beacon/lime, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"m" = ( +/obj/structure/marker_beacon/violet, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"o" = ( +/obj/effect/mob_spawn/corpse/human/miner, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"p" = ( +/mob/living/simple_animal/hostile/megafauna/colossus/virtual_domain, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"q" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"r" = ( +/obj/machinery/light/small/blacklight/directional/south, +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/virtual_domain/powered) +"s" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"u" = ( +/obj/structure/marker_beacon/indigo, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"v" = ( +/turf/open/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"x" = ( +/obj/structure/marker_beacon/purple, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"z" = ( +/obj/structure/marker_beacon/jade, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"B" = ( +/obj/structure/marker_beacon/teal, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"D" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"L" = ( +/obj/structure/marker_beacon/yellow, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"N" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"T" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"U" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"W" = ( +/obj/structure/marker_beacon/fuchsia, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) + +(1,1,1) = {" +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +q +"} +(2,1,1) = {" +v +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +v +"} +(3,1,1) = {" +v +k +a +a +k +k +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +k +a +a +a +a +a +a +a +a +k +k +a +a +a +a +a +a +k +k +k +v +"} +(4,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(5,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +s +k +v +"} +(6,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +m +a +a +a +a +a +a +a +a +a +a +a +a +s +s +k +v +"} +(7,1,1) = {" +v +k +a +a +a +a +o +a +a +a +a +a +a +a +a +a +c +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +a +a +a +a +s +k +v +"} +(8,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +a +a +a +k +k +v +"} +(9,1,1) = {" +v +k +a +a +a +a +a +a +s +s +s +s +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +v +"} +(10,1,1) = {" +v +k +k +a +a +a +a +a +k +k +k +s +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +v +"} +(11,1,1) = {" +v +k +k +a +a +a +a +a +k +k +k +s +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +a +a +a +a +a +a +a +a +s +s +a +a +a +a +a +k +v +"} +(12,1,1) = {" +v +k +k +a +a +a +a +a +s +k +s +s +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +a +a +a +a +a +a +a +s +a +a +a +a +a +k +v +"} +(13,1,1) = {" +v +k +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +k +a +a +a +a +a +u +a +a +a +a +a +a +a +k +v +"} +(14,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +k +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(15,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(16,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +e +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(17,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +j +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(18,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(19,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(20,1,1) = {" +v +k +a +a +a +a +a +x +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(21,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +r +U +U +U +U +U +N +a +k +v +"} +(22,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +U +U +U +U +U +U +a +k +v +"} +(23,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +p +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +U +U +U +U +U +U +a +k +v +"} +(24,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +l +a +a +U +U +U +U +U +U +a +k +v +"} +(25,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +U +U +U +U +U +U +a +k +v +"} +(26,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +U +U +U +U +U +U +a +k +v +"} +(27,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +o +a +r +U +U +U +U +U +D +a +k +v +"} +(28,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +T +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(29,1,1) = {" +v +k +a +a +a +a +a +a +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +W +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(30,1,1) = {" +v +k +a +a +a +a +a +a +k +k +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(31,1,1) = {" +v +k +a +a +a +a +a +a +k +k +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(32,1,1) = {" +v +k +a +a +a +a +a +a +a +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(33,1,1) = {" +v +k +a +a +a +a +a +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +z +a +a +a +a +a +a +a +k +v +"} +(34,1,1) = {" +v +k +k +a +a +a +a +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(35,1,1) = {" +v +k +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +l +a +a +a +a +a +a +a +a +k +k +k +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(36,1,1) = {" +v +k +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +k +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(37,1,1) = {" +v +k +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +v +"} +(38,1,1) = {" +v +k +a +a +a +s +s +a +a +a +a +a +B +a +a +a +a +k +a +a +a +a +a +a +s +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +k +v +"} +(39,1,1) = {" +v +k +a +a +a +s +s +a +a +a +a +a +a +a +a +a +k +k +k +a +a +a +a +a +s +s +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(40,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(41,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +L +a +a +a +a +a +a +a +k +v +"} +(42,1,1) = {" +v +k +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +k +v +"} +(43,1,1) = {" +v +k +a +k +k +k +k +a +a +a +a +a +k +k +k +k +a +a +a +k +k +k +k +k +a +a +a +a +a +a +k +k +k +k +a +a +a +a +a +a +k +k +a +a +k +v +"} +(44,1,1) = {" +v +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +k +v +"} +(45,1,1) = {" +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +v +"} diff --git a/_maps/virtual_domains/gondola_asteroid.dmm b/_maps/virtual_domains/gondola_asteroid.dmm new file mode 100644 index 000000000000..d6377a4a4c10 --- /dev/null +++ b/_maps/virtual_domains/gondola_asteroid.dmm @@ -0,0 +1,1784 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"c" = ( +/turf/open/space/basic, +/area/space) +"e" = ( +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/powered/virtual_domain) +"g" = ( +/obj/structure/marker_beacon{ + light_color = "#FFE8AA"; + light_range = 20 + }, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"h" = ( +/turf/closed/mineral/random, +/area/ruin/space/has_grav/powered/virtual_domain) +"m" = ( +/obj/structure/closet/crate/secure/bitrunning/encrypted/gondola, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"n" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"o" = ( +/turf/template_noop, +/area/template_noop) +"q" = ( +/obj/structure/flora/tree/palm, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"r" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"s" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"t" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"w" = ( +/obj/structure/water_source/puddle, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"y" = ( +/obj/structure/flora/bush/stalky/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"z" = ( +/mob/living/simple_animal/pet/gondola/virtual_domain, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"A" = ( +/obj/structure/chair/wood{ + dir = 8 + }, +/turf/template_noop, +/area/virtual_domain/safehouse) +"C" = ( +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"D" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"F" = ( +/obj/structure/flora/bush/grassy/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"I" = ( +/obj/structure/flora/bush/reed/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"J" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"K" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"M" = ( +/obj/structure/table/wood, +/obj/item/storage/bag/tray, +/obj/item/kitchen/fork, +/obj/item/knife/kitchen, +/turf/template_noop, +/area/virtual_domain/safehouse) +"N" = ( +/obj/structure/flora/bush/large/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"O" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"Q" = ( +/obj/structure/flora/bush/lavendergrass/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"T" = ( +/obj/structure/flora/bush/sunny/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"V" = ( +/obj/structure/flora/coconuts, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) +"W" = ( +/obj/structure/flora/bush/ferny/style_random, +/turf/open/floor/grass, +/area/ruin/space/has_grav/powered/virtual_domain) + +(1,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +a +a +a +a +a +a +a +a +o +o +o +o +o +o +o +o +o +o +"} +(2,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +a +a +a +h +h +h +h +h +h +a +a +o +o +o +o +o +o +o +o +o +"} +(3,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +a +a +a +a +a +h +h +h +h +h +h +h +h +h +a +a +K +o +o +o +o +o +o +o +"} +(4,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +o +o +o +a +a +a +a +a +a +a +h +h +h +h +h +h +h +h +h +h +h +h +h +e +a +o +o +o +o +o +o +o +"} +(5,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +o +o +a +a +h +h +h +h +h +h +h +h +h +h +h +h +h +h +C +h +h +h +h +h +a +o +o +o +o +o +o +o +"} +(6,1,1) = {" +o +o +o +o +o +o +o +o +a +a +a +a +a +a +h +h +h +h +h +h +h +h +h +h +h +C +C +C +C +C +C +C +h +h +h +a +o +o +o +o +o +o +o +"} +(7,1,1) = {" +o +o +o +o +o +o +o +a +a +h +h +h +h +h +h +h +h +h +h +h +h +h +h +C +C +C +C +J +C +C +C +z +C +h +h +a +o +o +o +o +o +o +o +"} +(8,1,1) = {" +o +o +o +o +o +a +a +a +h +h +h +h +h +h +h +h +h +h +h +h +h +C +C +C +C +Q +C +q +C +h +h +h +h +h +e +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +o +o +o +o +a +a +h +h +h +h +h +h +h +h +h +h +C +h +C +C +C +C +C +C +C +C +V +C +C +C +C +h +h +h +e +c +c +c +c +c +c +c +a +"} +(10,1,1) = {" +o +o +a +a +a +h +h +h +h +h +h +h +h +C +q +C +C +W +C +C +V +C +C +q +C +C +C +C +F +C +C +h +h +h +e +c +c +c +c +c +c +c +a +"} +(11,1,1) = {" +o +a +a +h +h +h +h +h +h +h +h +h +h +h +h +C +C +C +C +C +N +C +C +C +C +C +C +s +C +C +C +h +h +h +e +c +c +c +c +c +c +c +a +"} +(12,1,1) = {" +o +a +h +h +h +h +h +h +h +h +h +h +h +h +C +s +I +J +C +C +g +C +C +V +C +z +C +y +C +g +C +h +h +h +e +c +c +c +c +c +c +c +a +"} +(13,1,1) = {" +a +a +h +h +h +h +h +h +h +h +h +h +C +C +C +C +Q +Q +C +z +C +C +C +C +C +C +C +s +Q +C +C +h +h +h +e +c +c +c +c +c +c +c +a +"} +(14,1,1) = {" +a +h +h +h +h +h +h +h +h +h +h +h +C +C +w +C +s +C +W +C +C +C +C +C +C +N +C +C +C +C +h +h +h +h +e +c +c +c +c +c +c +c +a +"} +(15,1,1) = {" +a +h +h +h +h +h +h +h +h +h +h +z +C +C +C +C +y +C +C +C +F +s +C +C +C +C +C +w +C +h +h +h +h +h +e +c +c +c +c +c +c +c +a +"} +(16,1,1) = {" +a +h +h +h +h +h +h +h +h +h +h +h +h +h +h +C +C +C +C +C +s +Q +C +C +C +C +C +C +C +C +h +h +h +h +e +c +c +c +c +c +c +c +a +"} +(17,1,1) = {" +a +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +C +C +C +Q +D +C +C +C +C +q +C +C +C +C +h +h +h +h +t +t +t +t +t +O +c +a +"} +(18,1,1) = {" +a +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +C +n +I +C +C +C +C +C +C +C +C +C +C +C +h +h +h +t +t +M +M +t +t +c +a +"} +(19,1,1) = {" +a +h +h +h +h +h +h +h +h +h +C +n +C +h +h +h +h +h +C +C +C +C +C +C +s +T +C +C +C +s +C +C +h +C +C +t +t +A +A +t +t +c +a +"} +(20,1,1) = {" +a +h +h +h +h +h +h +h +h +C +C +C +C +C +C +h +h +h +C +C +q +V +C +C +C +J +C +C +C +C +C +C +C +C +C +t +t +t +t +t +t +c +a +"} +(21,1,1) = {" +a +e +h +h +h +h +h +h +h +z +C +C +g +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +C +t +t +t +t +t +t +c +a +"} +(22,1,1) = {" +a +e +e +h +h +h +h +h +h +C +C +C +q +C +s +s +C +C +W +C +m +C +C +C +g +C +z +C +C +C +C +C +h +h +h +t +t +t +t +t +t +c +a +"} +(23,1,1) = {" +a +e +e +h +h +h +h +h +h +C +C +C +C +C +C +y +C +C +C +C +C +C +C +C +C +C +C +C +C +q +C +C +h +h +h +t +t +t +t +t +r +c +a +"} +(24,1,1) = {" +a +e +e +h +h +h +h +h +h +C +C +V +C +C +C +C +C +C +C +w +C +z +N +C +C +C +N +C +C +C +C +C +h +h +h +c +c +c +c +c +c +c +a +"} +(25,1,1) = {" +a +a +e +e +h +h +h +h +n +C +C +C +C +C +z +C +C +C +C +C +C +C +C +C +F +C +C +C +C +C +C +C +h +h +h +c +c +c +c +c +c +c +a +"} +(26,1,1) = {" +o +a +e +e +h +h +h +C +C +C +C +C +C +C +C +C +s +y +C +C +C +C +C +C +I +F +C +C +C +C +C +h +h +h +c +c +c +c +c +c +c +c +a +"} +(27,1,1) = {" +o +a +e +e +h +h +h +C +C +C +w +C +C +C +C +F +D +s +C +J +C +C +C +C +C +C +q +C +C +V +C +h +h +h +c +c +c +c +c +c +c +c +a +"} +(28,1,1) = {" +o +a +e +e +h +h +h +h +C +C +C +C +C +C +C +C +C +C +C +g +F +s +C +C +C +C +C +C +C +C +h +h +h +c +c +c +c +c +c +c +c +c +a +"} +(29,1,1) = {" +o +a +a +e +e +h +h +h +C +C +C +C +C +n +C +C +C +C +C +C +s +y +D +C +C +C +C +w +C +h +h +h +h +c +c +c +c +c +c +c +c +c +a +"} +(30,1,1) = {" +o +o +a +e +e +h +h +C +C +C +n +C +C +C +C +C +C +C +C +C +C +C +C +C +C +s +C +C +C +h +h +h +e +e +c +c +c +c +c +c +c +c +a +"} +(31,1,1) = {" +o +o +a +e +h +h +C +g +J +C +s +C +C +C +h +C +C +C +C +C +V +C +C +C +C +C +C +C +h +h +h +e +e +e +c +c +c +c +c +c +c +c +a +"} +(32,1,1) = {" +o +o +a +h +h +h +h +C +C +C +C +C +C +h +h +h +C +C +C +q +C +C +C +C +C +C +h +h +h +h +e +e +e +h +h +a +a +a +a +a +a +a +a +"} +(33,1,1) = {" +o +o +a +h +h +h +C +C +C +C +C +C +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +e +e +h +h +h +a +o +o +o +o +o +o +o +"} +(34,1,1) = {" +o +o +a +h +h +C +C +C +C +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +h +a +a +h +h +h +a +a +o +o +o +o +o +o +o +"} +(35,1,1) = {" +o +o +a +h +h +h +h +h +h +h +h +h +h +h +e +e +e +e +e +h +h +h +h +h +a +a +a +a +a +a +a +h +h +h +a +a +o +o +o +o +o +o +o +"} +(36,1,1) = {" +o +o +a +a +h +h +h +h +h +h +h +h +h +a +a +a +a +a +a +a +a +a +a +a +a +o +o +o +o +o +a +a +a +a +a +o +o +o +o +o +o +o +o +"} +(37,1,1) = {" +o +o +o +a +a +a +a +a +a +a +a +a +a +a +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +"} diff --git a/_maps/virtual_domains/hierophant.dmm b/_maps/virtual_domains/hierophant.dmm new file mode 100644 index 000000000000..02b11ad4e1ef --- /dev/null +++ b/_maps/virtual_domains/hierophant.dmm @@ -0,0 +1,1066 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/indestructible/hierophant, +/area/lavaland/surface/outdoors/virtual_domain) +"c" = ( +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 5 + }, +/turf/open/indestructible/hierophant/two, +/area/lavaland/surface/outdoors/virtual_domain) +"h" = ( +/obj/effect/light_emitter{ + set_cap = 3; + set_luminosity = 5 + }, +/turf/open/indestructible/hierophant, +/area/lavaland/surface/outdoors/virtual_domain) +"n" = ( +/obj/structure/marker_beacon/indigo, +/turf/open/indestructible/hierophant, +/area/lavaland/surface/outdoors/virtual_domain) +"o" = ( +/turf/template_noop, +/area/template_noop) +"r" = ( +/turf/closed/indestructible/riveted/hierophant, +/area/lavaland/surface/outdoors/virtual_domain) +"u" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"w" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"y" = ( +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"E" = ( +/mob/living/simple_animal/hostile/megafauna/hierophant/virtual_domain, +/turf/open/indestructible/hierophant/two, +/area/lavaland/surface/outdoors/virtual_domain) +"H" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"K" = ( +/turf/open/indestructible/hierophant/two, +/area/lavaland/surface/outdoors/virtual_domain) +"N" = ( +/obj/machinery/light/small/blacklight/directional/south, +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/indestructible/hierophant, +/area/virtual_domain/powered) +"S" = ( +/obj/effect/mob_spawn/corpse/human/miner, +/turf/open/indestructible/hierophant, +/area/lavaland/surface/outdoors/virtual_domain) +"W" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"Y" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) + +(1,1,1) = {" +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +o +o +y +y +y +y +y +y +y +y +y +y +W +"} +(2,1,1) = {" +y +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +y +o +o +y +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(3,1,1) = {" +y +r +a +a +a +a +a +a +a +a +a +a +h +a +a +a +a +a +a +a +a +a +a +r +y +o +o +y +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(4,1,1) = {" +y +r +a +a +a +h +h +a +a +a +r +a +a +a +r +a +a +a +h +h +a +a +a +r +y +y +y +y +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(5,1,1) = {" +y +r +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +r +r +y +y +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(6,1,1) = {" +y +r +a +h +a +r +r +a +h +n +a +a +h +a +a +a +h +a +r +r +a +h +a +a +a +a +r +y +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(7,1,1) = {" +y +r +a +h +a +r +r +a +h +a +a +a +h +a +a +a +h +a +r +r +a +h +a +a +a +a +a +r +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(8,1,1) = {" +y +r +a +a +a +a +a +K +K +K +K +K +K +K +K +K +K +K +a +a +a +n +a +a +r +a +a +a +r +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(9,1,1) = {" +y +r +a +a +a +h +h +K +K +K +r +K +K +K +r +K +K +K +h +h +a +a +a +r +y +r +S +a +a +r +Y +Y +Y +Y +Y +Y +Y +y +"} +(10,1,1) = {" +y +r +a +a +a +a +a +K +K +K +K +K +c +K +K +K +K +K +a +a +a +a +a +r +y +y +r +a +a +N +w +w +w +w +w +H +Y +y +"} +(11,1,1) = {" +y +r +a +r +a +a +a +K +r +K +K +K +K +K +K +K +r +K +a +a +a +r +a +r +y +y +y +r +a +a +w +w +w +w +w +w +Y +y +"} +(12,1,1) = {" +y +r +a +a +a +a +a +K +K +K +K +K +K +K +K +K +K +K +a +a +a +a +a +r +y +y +y +r +a +a +w +w +w +w +w +w +Y +y +"} +(13,1,1) = {" +y +r +h +a +a +h +h +K +K +c +K +K +E +K +K +c +K +K +h +h +a +a +h +r +y +y +y +r +a +a +w +w +w +w +w +w +Y +y +"} +(14,1,1) = {" +y +r +a +a +a +a +a +K +K +K +K +K +K +K +K +K +K +K +a +a +a +a +a +r +y +y +y +r +a +a +w +w +w +w +w +w +Y +y +"} +(15,1,1) = {" +y +r +a +r +a +a +a +K +r +K +K +K +K +K +K +K +r +K +a +a +a +r +a +r +y +y +y +r +a +a +w +w +w +w +w +w +Y +y +"} +(16,1,1) = {" +y +r +a +a +a +a +a +K +K +K +K +K +c +K +K +K +K +K +a +a +a +a +a +r +y +y +r +a +a +N +w +w +w +w +w +u +Y +y +"} +(17,1,1) = {" +y +r +a +a +a +h +h +K +K +K +r +K +K +K +r +K +K +K +h +h +a +a +a +r +y +r +a +a +a +r +Y +Y +Y +Y +Y +Y +Y +y +"} +(18,1,1) = {" +y +r +a +a +a +a +a +K +K +K +K +K +K +K +K +K +K +K +a +a +a +a +a +a +r +a +a +a +r +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(19,1,1) = {" +y +r +a +h +a +r +r +a +h +a +a +a +h +a +a +a +h +a +r +r +a +h +a +a +a +a +a +r +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(20,1,1) = {" +y +r +a +h +a +r +r +S +h +a +a +a +h +a +n +a +h +a +r +r +a +h +a +a +a +a +r +y +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(21,1,1) = {" +y +r +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +r +r +y +y +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(22,1,1) = {" +y +r +a +a +a +h +h +a +a +a +r +a +a +a +r +a +a +a +h +h +a +a +a +r +y +y +y +y +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(23,1,1) = {" +y +r +a +a +a +a +a +a +a +a +a +a +h +a +a +a +a +a +a +a +a +a +a +r +y +o +o +y +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(24,1,1) = {" +y +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +r +y +o +o +y +Y +Y +Y +Y +Y +Y +Y +Y +Y +y +"} +(25,1,1) = {" +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +y +o +o +y +y +y +y +y +y +y +y +y +y +y +"} diff --git a/_maps/virtual_domains/legion.dmm b/_maps/virtual_domains/legion.dmm new file mode 100644 index 000000000000..55843177ad0f --- /dev/null +++ b/_maps/virtual_domains/legion.dmm @@ -0,0 +1,6370 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ah" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"ak" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"aI" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"aR" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"bd" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"be" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"bt" = ( +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/lavaland/surface/outdoors/virtual_domain) +"bu" = ( +/obj/structure/marker_beacon/bronze, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"ca" = ( +/obj/effect/mob_spawn/corpse/human/legioninfested, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"cf" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"cp" = ( +/turf/template_noop, +/area/template_noop) +"dm" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"dn" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/effect/mob_spawn/corpse/human/legioninfested, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"dr" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile/block/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"dx" = ( +/obj/effect/decal/cleanable/blood/footprints{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"dL" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"dQ" = ( +/turf/closed/wall/mineral/titanium/survival/pod, +/area/lavaland/surface/outdoors/virtual_domain) +"et" = ( +/obj/structure/stone_tile/block/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"ew" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"eJ" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"fA" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"fG" = ( +/obj/structure/marker_beacon/violet, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"gh" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"gk" = ( +/obj/structure/necropolis_gate/locked, +/obj/structure/stone_tile/slab, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"gK" = ( +/obj/effect/decal/cleanable/blood/footprints, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"gQ" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"hc" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"hw" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"hx" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"hU" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"ib" = ( +/turf/closed/mineral/volcanic/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"ie" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"iP" = ( +/obj/structure/fluff/drake_statue/falling, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"iR" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"iV" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"jk" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"jt" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"jw" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"jN" = ( +/obj/machinery/sleeper/survival_pod, +/turf/open/floor/pod/dark, +/area/lavaland/surface/outdoors/virtual_domain) +"ka" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"kg" = ( +/turf/closed/indestructible/riveted/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"kT" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"kZ" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"ll" = ( +/obj/structure/stone_tile/cracked, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"lz" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"lC" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"lO" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"lT" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"mz" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"mG" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"nm" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"nu" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"nv" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"ny" = ( +/obj/structure/stone_tile, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"nI" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"nO" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"ob" = ( +/obj/structure/necropolis_gate/legion_gate, +/obj/structure/necropolis_arch, +/obj/structure/stone_tile/slab, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"og" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"oo" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"ox" = ( +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"oS" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"pP" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"qo" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"qs" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"qW" = ( +/obj/effect/decal/cleanable/blood/footprints{ + dir = 1 + }, +/obj/machinery/door/airlock/survival_pod/glass, +/turf/open/floor/pod/dark, +/area/lavaland/surface/outdoors/virtual_domain) +"rt" = ( +/obj/effect/mob_spawn/corpse/human/miner, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"rU" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"sd" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"sk" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"sz" = ( +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"sA" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"tk" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"tF" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"uK" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"vf" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"wq" = ( +/obj/structure/marker_beacon/teal, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"wy" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"xd" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"xm" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"xw" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"xD" = ( +/obj/structure/stone_tile/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"yu" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/block, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"yZ" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"zg" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/virtual_domain/powered) +"zo" = ( +/obj/effect/turf_decal/mining/survival, +/turf/closed/wall/mineral/titanium/survival/pod, +/area/lavaland/surface/outdoors/virtual_domain) +"zW" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/center/cracked, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Ah" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/lavaland/surface/outdoors/virtual_domain) +"Aj" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Ak" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/center/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"As" = ( +/obj/structure/marker_beacon/cerulean, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"AY" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Bo" = ( +/obj/structure/marker_beacon/indigo, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"BO" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"CX" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/footprints{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Dm" = ( +/turf/closed/mineral/random/volcanic, +/area/lavaland/surface/outdoors/virtual_domain) +"DP" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/center, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Ek" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Ep" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"Ez" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"EC" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Fg" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 6 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Fp" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"Fq" = ( +/obj/structure/marker_beacon/fuchsia, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"FV" = ( +/obj/structure/stone_tile/block, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Gj" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Gn" = ( +/turf/closed/indestructible/riveted/boss/see_through, +/area/lavaland/surface/outdoors/virtual_domain) +"Go" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"GH" = ( +/obj/structure/fans, +/turf/open/floor/pod/dark, +/area/lavaland/surface/outdoors/virtual_domain) +"GM" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Hi" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Hu" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"Hw" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/center/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"HK" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"HQ" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"HZ" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Ii" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Io" = ( +/obj/structure/marker_beacon/jade, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Ip" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"IB" = ( +/obj/structure/stone_tile, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"IG" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"IL" = ( +/obj/structure/stone_tile/surrounding, +/obj/structure/stone_tile/center/cracked, +/mob/living/simple_animal/hostile/megafauna/legion/virtual_domain, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"IQ" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Jc" = ( +/obj/structure/stone_tile/slab, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Jp" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Jt" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Jw" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"JD" = ( +/obj/structure/fluff/drake_statue, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"KG" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Le" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Lx" = ( +/obj/effect/decal/cleanable/blood/footprints{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"LH" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Ml" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Mm" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/center/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Mo" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"MH" = ( +/obj/structure/stone_tile/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"MP" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"MW" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Nl" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/center, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"Ot" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/center, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Pv" = ( +/obj/effect/turf_decal/mining/survival{ + dir = 4 + }, +/turf/closed/wall/mineral/titanium/survival/pod, +/area/lavaland/surface/outdoors/virtual_domain) +"Px" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"PO" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"Qi" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Qx" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/marker_beacon/burgundy, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"QD" = ( +/obj/item/pickaxe, +/obj/effect/decal/cleanable/blood, +/turf/open/floor/pod/dark, +/area/lavaland/surface/outdoors/virtual_domain) +"RC" = ( +/obj/effect/turf_decal/mining/survival{ + dir = 1 + }, +/turf/closed/wall/mineral/titanium/survival/pod, +/area/lavaland/surface/outdoors/virtual_domain) +"RV" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"So" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Sw" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"SI" = ( +/obj/effect/turf_decal/mining, +/turf/closed/wall/mineral/titanium/survival/pod, +/area/lavaland/surface/outdoors/virtual_domain) +"SJ" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"SX" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Ti" = ( +/turf/closed/mineral/random/high_chance/volcanic, +/area/lavaland/surface/outdoors/virtual_domain) +"Tm" = ( +/obj/structure/bed/pod, +/obj/item/bedsheet/black, +/obj/structure/tubes, +/obj/machinery/light/small/broken/directional/east, +/turf/open/floor/pod/dark, +/area/lavaland/surface/outdoors/virtual_domain) +"TC" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"TJ" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Ud" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/baseturf_helper/virtual_domain, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/virtual_domain/powered) +"UD" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/center/cracked, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"UM" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Vc" = ( +/obj/structure/tubes, +/obj/item/crowbar, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/pod/dark, +/area/lavaland/surface/outdoors/virtual_domain) +"VI" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/center, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"Wa" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/center/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Wm" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"WM" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"WR" = ( +/obj/structure/stone_tile/block, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"WS" = ( +/obj/item/gps/computer, +/obj/structure/tubes, +/turf/open/floor/pod/dark, +/area/lavaland/surface/outdoors/virtual_domain) +"Xb" = ( +/obj/structure/marker_beacon/yellow, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Xn" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Xo" = ( +/obj/structure/stone_tile/block, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Xv" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"XO" = ( +/obj/effect/turf_decal/mining/survival{ + dir = 8 + }, +/turf/closed/wall/mineral/titanium/survival/pod, +/area/lavaland/surface/outdoors/virtual_domain) +"Yu" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"YN" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"YV" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Zc" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"Zh" = ( +/obj/structure/marker_beacon/purple, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/lavaland/surface/outdoors/virtual_domain) +"Zj" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"Zq" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/indestructible/boss, +/area/lavaland/surface/outdoors/virtual_domain) +"Zu" = ( +/obj/machinery/smartfridge/survival_pod{ + desc = "A heated storage unit. This one's seen better days."; + name = "dusty survival pod storage" + }, +/turf/open/floor/pod/dark, +/area/lavaland/surface/outdoors/virtual_domain) +"ZM" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/virtual_domain) +"ZN" = ( +/obj/structure/table/survival_pod, +/obj/item/knife/combat/survival, +/turf/open/floor/pod/dark, +/area/lavaland/surface/outdoors/virtual_domain) + +(1,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +Ah +"} +(2,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ox +"} +(3,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +ib +nu +nu +ib +ib +ib +ib +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ib +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +ib +ox +"} +(4,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(5,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(6,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +wq +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(7,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ox +"} +(8,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +ib +nu +nu +nu +nu +nu +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +rt +nu +nu +ib +ib +ox +"} +(9,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +ib +nu +nu +nu +nu +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ox +"} +(10,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ib +ib +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ox +"} +(11,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ib +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(12,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +fA +fA +fA +nu +nu +nu +nu +ib +ox +"} +(13,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +ib +nu +fG +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +fA +fA +fA +nu +nu +nu +nu +ib +ox +"} +(14,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +fA +fA +nu +nu +nu +nu +ib +ox +"} +(15,1,1) = {" +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(16,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +nu +nu +nu +nu +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(17,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ti +Ti +Ti +Ti +GM +nu +nu +nu +nu +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +Io +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +Xb +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(18,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +et +Ti +GM +GM +GM +nu +nu +nu +nu +GM +GM +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(19,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +GM +nu +nu +nu +nu +nu +nu +nu +nu +GM +GM +GM +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +wq +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(20,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ti +nu +nu +nu +nu +nu +nu +nu +nu +GM +GM +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(21,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ti +nu +nu +nu +nu +GM +Ti +GM +GM +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +Zh +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(22,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +FV +nu +nu +nu +nu +Ti +Dm +Dm +GM +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(23,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ti +GM +GM +GM +Ti +Ti +Dm +Dm +Ti +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(24,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +FV +Ml +Ti +Dm +Dm +Ti +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ox +"} +(25,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +GM +GM +Ti +Dm +Dm +IB +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +GM +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ox +"} +(26,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +GM +GM +GM +GM +GM +GM +fA +fA +fA +fA +RV +fA +fA +fA +fA +fA +fA +Xn +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +As +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ox +"} +(27,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ek +Le +be +be +kT +GM +GM +GM +GM +fA +fA +xm +fA +fA +fA +GM +ZM +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(28,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +dr +KG +mz +KG +KG +jt +GM +GM +GM +GM +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +HZ +nu +bu +nu +nu +nu +MH +nu +nu +lz +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +ib +ox +"} +(29,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +bd +mG +Hw +hU +Mm +lO +et +GM +tk +fA +fA +fA +fA +ak +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +YV +nu +nu +So +nu +nu +nu +nu +nu +nu +bu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +ib +ox +"} +(30,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ez +WR +JD +rU +KG +dm +GM +GM +fA +Hi +fA +fA +fA +ll +fA +fA +Wm +fA +fA +YV +qs +MH +nu +nu +nu +ny +ca +oS +nu +nu +Qx +nu +nu +hx +nu +nu +nu +nu +nu +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +ib +ox +"} +(31,1,1) = {" +ox +kg +kg +kg +Hu +Zq +wy +Zq +lT +kg +kg +Gn +Gn +KG +Ak +nv +Ot +mG +hw +kg +kg +Wm +fA +fA +fA +fA +fA +fA +fA +fA +fA +ak +nu +nu +qs +nu +nu +TC +nu +YV +nu +ny +nu +oS +nu +nu +nu +SX +nu +nu +nu +zg +BO +BO +BO +BO +BO +og +Ud +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +ib +ox +"} +(32,1,1) = {" +ox +kg +kg +Gn +VI +xw +gQ +ka +iR +kg +kg +Gn +Gn +sz +KG +KG +KG +KG +mz +kg +kZ +kZ +sd +kZ +lC +kZ +TJ +UM +kZ +IQ +UM +UM +AY +nu +nI +nu +nu +nu +nu +oS +nu +nu +nu +nu +nu +qs +nu +nu +nu +nu +nu +nu +BO +BO +BO +BO +BO +BO +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +ib +ox +"} +(33,1,1) = {" +ox +PO +PO +gk +PO +Zc +IL +Yu +SJ +Yu +Yu +Yu +ob +dL +uK +MP +uK +uK +dL +Jc +Mo +eJ +Mo +hc +yu +eJ +Fg +eJ +YN +tF +Mo +Zj +HQ +qo +Jp +nu +aR +nu +TC +nu +YV +nu +nu +oS +nu +nu +ny +Sw +nu +nu +nu +nu +BO +BO +BO +BO +BO +BO +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +Io +ib +ib +nu +nu +ib +ox +"} +(34,1,1) = {" +ox +kg +kg +Gn +Nl +gh +jw +lT +oo +kg +kg +Gn +Gn +Wa +KG +xd +Ez +mz +HK +kg +ie +Jw +Jw +jk +Jw +jk +dn +Jw +Jw +LH +Ii +Qi +aI +nu +Xo +nu +nu +YV +Sw +nu +nu +nu +sA +nu +Gj +nu +nu +HZ +nu +YV +nu +nu +BO +BO +BO +BO +BO +BO +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +ib +ox +"} +(35,1,1) = {" +ox +kg +kg +kg +Hu +Ep +iV +Go +Ip +kg +kg +Gn +Gn +lO +nO +hU +UD +KG +dm +kg +kg +ll +fA +fA +fA +ak +fA +fA +fA +fA +ll +fA +nu +nu +ny +nu +nu +Aj +HZ +nu +ew +nu +nu +bu +nu +nu +nu +nu +nu +Aj +nu +nu +BO +BO +BO +BO +BO +BO +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +ib +ox +"} +(36,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +KG +WR +iP +rU +Ez +cf +GM +GM +fA +fA +yZ +vf +ll +fA +fA +fA +ak +fA +fA +oS +ny +qs +YV +qs +nu +nu +nu +nu +nu +nu +Sw +nu +qs +oS +nu +nu +Sw +nu +nu +BO +BO +BO +BO +BO +BO +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +ib +ox +"} +(37,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +bd +xd +zW +nv +DP +KG +FV +GM +GM +fA +fA +fA +GM +Px +fA +IG +GM +Hi +fA +fA +nu +nu +nu +nu +TC +nu +ah +nu +nu +nm +nu +nu +nu +nu +nu +nu +sk +nu +nu +zg +BO +BO +BO +BO +BO +Fp +Ud +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +nu +nu +ib +ox +"} +(38,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +bd +KG +KG +KG +lO +Jc +GM +GM +GM +fA +fA +fA +fA +fA +fA +GM +Jt +fA +fA +fA +nu +TC +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(39,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ek +KG +lO +MW +pP +GM +GM +GM +GM +fA +fA +fA +fA +fA +fA +fA +xD +fA +fA +fA +oS +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(40,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +IB +nu +nu +nu +nu +GM +RV +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(41,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +GM +nu +nu +Sw +Xv +GM +fA +fA +fA +fA +fA +fA +fA +fA +fA +GM +GM +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(42,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +GM +nu +nu +nu +ny +GM +fA +fA +fA +fA +fA +fA +fA +fA +fA +EC +GM +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +Bo +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ox +"} +(43,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +WM +GM +Px +ny +nu +nu +nu +nu +nu +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ox +"} +(44,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +GM +GM +GM +nu +nu +nu +nu +nu +nu +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(45,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +GM +GM +GM +nu +nu +nu +nu +nu +nu +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(46,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ti +GM +GM +nu +nu +nu +nu +nu +nu +fA +fA +ak +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +wq +nu +nu +nu +nu +nu +nu +nu +nu +nu +fA +ib +ox +"} +(47,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ti +GM +nu +nu +nu +nu +nu +nu +fA +fA +fA +xD +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +fA +fA +ib +ox +"} +(48,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ti +GM +nu +nu +nu +nu +nu +nu +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +fA +fA +ib +ox +"} +(49,1,1) = {" +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +Ti +GM +nu +nu +nu +nu +nu +nu +fA +fA +fA +GM +fA +fA +fA +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +Fq +nu +ib +ib +ib +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +fA +ib +ox +"} +(50,1,1) = {" +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +kg +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +rt +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(51,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +dQ +dQ +XO +dQ +dQ +GM +nu +nu +nu +ib +ox +"} +(52,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +Fq +nu +nu +nu +nu +nu +nu +nu +nu +nu +dQ +GH +jN +ZN +zo +GM +nu +nu +nu +ib +ox +"} +(53,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +RC +Zu +QD +bt +qW +CX +nu +nu +nu +ib +ox +"} +(54,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +dQ +WS +Tm +Vc +SI +Lx +nu +nu +nu +ib +ox +"} +(55,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +dQ +dQ +Pv +dQ +dQ +Lx +nu +nu +nu +ib +ox +"} +(56,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +ib +nu +nu +nu +fA +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +GM +GM +GM +GM +dx +gK +nu +nu +nu +ib +ox +"} +(57,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +Io +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(58,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ox +"} +(59,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +fA +fA +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +ox +"} +(60,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +fA +fA +fA +fA +nu +nu +nu +nu +nu +nu +Xb +nu +nu +nu +ib +ox +"} +(61,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +nu +nu +ib +ox +"} +(62,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +nu +ib +ox +"} +(63,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +ib +nu +nu +nu +ib +ib +ib +nu +nu +nu +nu +nu +ib +ib +nu +nu +nu +nu +ib +ib +ib +nu +nu +nu +nu +nu +nu +nu +nu +ib +ib +nu +nu +nu +nu +ib +ib +ox +"} +(64,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ib +ox +"} +(65,1,1) = {" +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +cp +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +ox +"} diff --git a/_maps/virtual_domains/pipedream.dmm b/_maps/virtual_domains/pipedream.dmm new file mode 100644 index 000000000000..44bd845477a1 --- /dev/null +++ b/_maps/virtual_domains/pipedream.dmm @@ -0,0 +1,3713 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"af" = ( +/obj/structure/chair/plastic{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"aw" = ( +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"ax" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/frame/computer{ + anchored = 1; + dir = 4 + }, +/obj/item/shard{ + icon_state = "medium" + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"aK" = ( +/turf/open/space/basic, +/area/space) +"aL" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"bq" = ( +/obj/machinery/light/small/red/dim{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"bs" = ( +/turf/open/floor/carpet/orange, +/area/virtual_domain/powered) +"bw" = ( +/obj/structure/disposalpipe/broken{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/preopen, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"bx" = ( +/obj/structure/frame/computer, +/obj/item/shard, +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-12" + }, +/area/virtual_domain/powered) +"bA" = ( +/obj/structure/chair/plastic, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"bG" = ( +/obj/structure/lattice/catwalk{ + name = "industrial lift" + }, +/obj/structure/closet/crate/preopen, +/obj/structure/railing, +/turf/open/chasm, +/area/virtual_domain/powered) +"bS" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/folder/yellow, +/obj/item/folder/blue{ + pixel_x = 2; + pixel_y = -2 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"cw" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"cB" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"cF" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 9 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"dx" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/item/shard, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"dz" = ( +/obj/machinery/light/broken, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/yellow/corner, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"dA" = ( +/obj/machinery/light/dim{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"dP" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"eg" = ( +/turf/closed/wall, +/area/virtual_domain/powered) +"ei" = ( +/obj/machinery/conveyor/auto{ + dir = 6; + icon_state = "conveyor_map_inverted"; + inverted = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"ev" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"eJ" = ( +/obj/structure/disposalpipe/sorting{ + dir = 2 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"eN" = ( +/obj/effect/turf_decal/trimline/yellow/arrow_cw{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/broken{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"eY" = ( +/turf/closed/wall/r_wall, +/area/virtual_domain/powered) +"fe" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"fg" = ( +/turf/open/floor/iron/stairs/left{ + dir = 8 + }, +/area/virtual_domain/powered) +"fj" = ( +/obj/structure/closet/crate/preopen, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"fl" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"fw" = ( +/obj/structure/door_assembly/door_assembly_eng, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"fK" = ( +/obj/structure/chair/stool/bar/directional/west, +/turf/open/floor/iron/cafeteria, +/area/virtual_domain/powered) +"fR" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 5 + }, +/obj/structure/sign/poster/official/random/directional/west, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"fZ" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"gc" = ( +/obj/structure/disposalpipe/broken, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"gj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"gs" = ( +/obj/machinery/door/airlock/external/glass/ruin, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"gN" = ( +/obj/structure/disposalpipe/sorting{ + dir = 8 + }, +/turf/open/floor/catwalk_floor/iron, +/area/virtual_domain/powered) +"gV" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"hg" = ( +/obj/effect/turf_decal/caution{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"hi" = ( +/turf/open/floor/iron, +/area/virtual_domain/powered) +"hk" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/broken{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"ho" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"iw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"iz" = ( +/obj/structure/broken_flooring/corner, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"iI" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/corner, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"jv" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/machinery/light/small/red/dim{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"jw" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"jH" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/catwalk_floor/iron, +/area/virtual_domain/powered) +"jQ" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light/small/red/dim{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"jS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"jW" = ( +/obj/effect/decal/cleanable/generic, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"kh" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"ki" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"kn" = ( +/obj/machinery/light/small/red/dim{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"kJ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/indestructible{ + dir = 4; + id = "factorylockdown" + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"kU" = ( +/turf/open/floor/plating, +/area/virtual_domain/powered) +"lp" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"lt" = ( +/obj/structure/disposalpipe/sorting{ + dir = 8 + }, +/mob/living/basic/hivebot/range, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"lx" = ( +/obj/machinery/door/poddoor/shutters/indestructible{ + dir = 4; + id = "factorylockdown" + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"lB" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 5 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"lC" = ( +/obj/machinery/door/airlock/glass, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"lI" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"lN" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"lW" = ( +/obj/structure/disposalpipe/sorting{ + dir = 8 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"mh" = ( +/obj/structure/broken_flooring/pile{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"mu" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"mE" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"mY" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/machinery/light/small/red/dim{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"nc" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/poster/official/safety_internals/directional/south, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"nz" = ( +/obj/structure/broken_flooring/side/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"nD" = ( +/obj/structure/disposalpipe/trunk/multiz, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"nL" = ( +/obj/effect/turf_decal/tile/dark/half, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"nS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"op" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/dim{ + dir = 1 + }, +/obj/structure/sign/warning/doors/directional/north, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"oN" = ( +/obj/machinery/conveyor/auto, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"oX" = ( +/obj/structure/broken_flooring/corner/directional/north, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"pa" = ( +/obj/machinery/light/small/red/dim{ + dir = 1 + }, +/turf/open/floor/carpet/orange, +/area/virtual_domain/powered) +"pb" = ( +/obj/structure/broken_flooring/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"pf" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/effect/mapping_helpers/damaged_window, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"pi" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"po" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/maint, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"pv" = ( +/obj/structure/broken_flooring/side{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"pI" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/light/small/red/dim{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"pJ" = ( +/obj/structure/broken_flooring/pile{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"qc" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/effect/spawner/random/bureaucracy/briefcase, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"qk" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"qK" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/warning/secure_area/directional/north, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"qN" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/mob_spawn/corpse/human/factory, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"qT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small/red/dim{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"qV" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"qW" = ( +/obj/machinery/light/dim{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"rc" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/sign/poster/contraband/random/directional/north, +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"rz" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/machinery/light/small/red/dim, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"rG" = ( +/obj/machinery/light/dim, +/obj/effect/turf_decal/trimline/yellow/line, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"rJ" = ( +/obj/structure/railing, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"rM" = ( +/obj/structure/disposalpipe/broken{ + dir = 1 + }, +/mob/living/basic/hivebot/strong, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"rO" = ( +/turf/closed/mineral, +/area/space) +"sn" = ( +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-38" + }, +/area/virtual_domain/powered) +"sB" = ( +/obj/machinery/light/broken{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"sW" = ( +/obj/effect/decal/cleanable/oil/streak, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"tl" = ( +/obj/machinery/door/poddoor/shutters/indestructible{ + id = "factorylockdown" + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"tr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"tE" = ( +/obj/structure/disposalpipe/segment, +/mob/living/basic/hivebot/range, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"ud" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-110" + }, +/area/virtual_domain/powered) +"uk" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/effect/decal/cleanable/blood/splatter/over_window, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"um" = ( +/obj/machinery/light/dim{ + dir = 1 + }, +/turf/open/floor/iron/cafeteria, +/area/virtual_domain/powered) +"uv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/broken_flooring/pile{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"uz" = ( +/obj/effect/spawner/random/trash/mess, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"uC" = ( +/obj/structure/falsewall, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"uF" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"uP" = ( +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-55" + }, +/area/virtual_domain/powered) +"uU" = ( +/obj/structure/broken_flooring/side, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"vb" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 5 + }, +/obj/machinery/light/broken, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"ve" = ( +/obj/machinery/mass_driver/trash{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"vA" = ( +/obj/structure/closet/crate/maint, +/obj/effect/turf_decal/stripes{ + dir = 9 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"vL" = ( +/obj/effect/decal/cleanable/glass, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"vQ" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"vU" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"wg" = ( +/obj/machinery/light/small/red/dim{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate/preopen, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"wh" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-207" + }, +/area/virtual_domain/powered) +"wl" = ( +/obj/item/shard, +/turf/open/space/basic, +/area/space) +"wm" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/structure/sign/clock/directional/north, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"wq" = ( +/obj/structure/table/wood, +/obj/machinery/button/door{ + name = "Cargo Bay Lockdown"; + id = "factorylockdown" + }, +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-63" + }, +/area/virtual_domain/powered) +"ws" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"ww" = ( +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/mob/living/basic/hivebot, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"wU" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"wW" = ( +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"xa" = ( +/obj/machinery/door/poddoor/shutters/indestructible{ + dir = 8; + id = "factorylockdown" + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"xj" = ( +/obj/structure/railing/corner/end{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"xk" = ( +/obj/machinery/light/dim{ + dir = 4 + }, +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"xl" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"xA" = ( +/obj/effect/decal/cleanable/generic, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"xE" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 9 + }, +/obj/machinery/light/broken, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"xF" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/virtual_domain/powered) +"xM" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/dogbed{ + name = "cat bed" + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"xT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"yB" = ( +/obj/machinery/door/airlock/maintenance, +/obj/effect/mapping_helpers/airlock/welded, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"yM" = ( +/turf/closed/indestructible/fakedoor{ + name = "Stairwell Access" + }, +/area/virtual_domain/powered) +"yQ" = ( +/turf/template_noop, +/area/template_noop) +"yX" = ( +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"zp" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/broken, +/turf/open/floor/carpet/orange, +/area/virtual_domain/powered) +"zB" = ( +/obj/structure/closet/crate/bin, +/obj/item/trash/tray, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"zE" = ( +/obj/structure/disposalpipe/broken{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"zO" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/broken, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Av" = ( +/obj/item/stack/rods/two, +/turf/open/space/basic, +/area/space) +"Aw" = ( +/obj/structure/lattice/catwalk{ + name = "industrial lift" + }, +/mob/living/basic/hivebot/rapid, +/turf/open/chasm, +/area/virtual_domain/powered) +"AJ" = ( +/obj/effect/decal/cleanable/generic, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"AP" = ( +/obj/structure/railing, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"AU" = ( +/turf/open/misc/asteroid/airless, +/area/space) +"Bd" = ( +/obj/structure/closet/secure_closet/tac{ + req_access = null + }, +/obj/item/ammo_casing/shotgun/buckshot, +/obj/item/ammo_casing/shotgun/buckshot, +/obj/item/ammo_casing/shotgun/buckshot, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Bh" = ( +/obj/structure/broken_flooring/corner/directional/east, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Bx" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave{ + broken = 1; + desc = "No longer cooks and boils stuff." + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"BA" = ( +/obj/structure/broken_flooring/corner/directional/south, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"BI" = ( +/obj/machinery/door/airlock/command/glass{ + name = "Quartermaster's Office" + }, +/obj/effect/mapping_helpers/airlock/access/any/away/command, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"BN" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid/airless, +/area/space) +"BW" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"BX" = ( +/obj/effect/decal/cleanable/robot_debris/old, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Ci" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Ct" = ( +/obj/machinery/conveyor/auto{ + dir = 6 + }, +/obj/machinery/light/broken{ + dir = 1 + }, +/obj/structure/sign/warning/vacuum/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Cv" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-157" + }, +/area/virtual_domain/powered) +"CA" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/broken_flooring/side{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"CQ" = ( +/obj/effect/spawner/random/trash/botanical_waste, +/obj/item/trash/chips, +/obj/structure/closet/secure_closet/freezer/empty/open, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"CR" = ( +/obj/structure/flora/rock/pile/style_random, +/turf/open/misc/asteroid/airless, +/area/virtual_domain/powered) +"CX" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Dr" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/light/dim{ + dir = 8 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"DA" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/catwalk_floor/iron, +/area/virtual_domain/powered) +"DE" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"DP" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/random/food_or_drink/snack, +/turf/open/floor/iron/cafeteria, +/area/virtual_domain/powered) +"Ex" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-137" + }, +/area/virtual_domain/powered) +"Ez" = ( +/obj/structure/flora/rock/style_random, +/turf/open/misc/asteroid/airless, +/area/space) +"EI" = ( +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"EJ" = ( +/obj/machinery/recycler/deathtrap{ + dir = 8 + }, +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Fa" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/maint, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Ff" = ( +/obj/structure/disposalpipe/trunk/multiz{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Fo" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/cafeteria, +/area/virtual_domain/powered) +"Fr" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/preopen, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Fw" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/rock/pile/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/grass, +/area/virtual_domain/powered) +"FK" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"FO" = ( +/turf/open/misc/asteroid/airless, +/area/virtual_domain/powered) +"FP" = ( +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-110" + }, +/area/virtual_domain/powered) +"Gb" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Ge" = ( +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-21" + }, +/area/virtual_domain/powered) +"Gh" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Gi" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/yellow/corner, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Gs" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/machinery/light/broken{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Gy" = ( +/obj/machinery/conveyor/auto{ + dir = 9; + inverted = 1; + icon_state = "conveyor_map_inverted" + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"GI" = ( +/obj/effect/turf_decal/trimline/yellow/arrow_ccw, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"GV" = ( +/obj/machinery/light/small/red/dim{ + dir = 8 + }, +/obj/effect/turf_decal/stripes{ + dir = 9 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Hn" = ( +/turf/open/floor/iron/cafeteria, +/area/virtual_domain/powered) +"HI" = ( +/obj/structure/broken_flooring/pile/directional/north, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Ib" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 1 + }, +/turf/open/floor/carpet/orange, +/area/virtual_domain/powered) +"Ip" = ( +/obj/machinery/door/airlock/engineering/glass, +/obj/effect/mapping_helpers/airlock/access/any/away/supply, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Is" = ( +/obj/machinery/door/airlock/engineering/glass, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"IF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"IK" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"IZ" = ( +/obj/structure/lattice/catwalk{ + name = "industrial lift" + }, +/obj/structure/closet/crate, +/turf/open/chasm, +/area/virtual_domain/powered) +"Jl" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Jm" = ( +/obj/structure/broken_flooring/pile/directional/north, +/obj/machinery/light/dim, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Jn" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/railing/corner/end/flip{ + dir = 8 + }, +/obj/structure/sign/warning/doors/directional/east, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Jq" = ( +/obj/structure/broken_flooring/pile{ + dir = 1 + }, +/obj/structure/sign/poster/contraband/random/directional/west, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"JE" = ( +/obj/machinery/light/small/red/dim{ + dir = 1 + }, +/obj/structure/sign/warning/chem_diamond/directional/west, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"JR" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"JT" = ( +/obj/structure/lattice/catwalk{ + name = "industrial lift" + }, +/obj/effect/spawner/random/trash/grime, +/turf/open/chasm, +/area/virtual_domain/powered) +"Kb" = ( +/obj/effect/mob_spawn/corpse/human/factory/guard, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Kt" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"KO" = ( +/obj/structure/broken_flooring/side/directional/north, +/obj/machinery/light/small/red/dim, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"KX" = ( +/obj/structure/lattice/catwalk{ + name = "industrial lift" + }, +/turf/open/chasm, +/area/virtual_domain/powered) +"Ln" = ( +/obj/structure/disposalpipe/broken{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Lp" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/machinery/light/broken, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"LN" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 10 + }, +/obj/machinery/light/dim{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"LU" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Mc" = ( +/obj/effect/turf_decal/trimline/yellow/warning, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Mh" = ( +/obj/machinery/conveyor/auto{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Mi" = ( +/obj/effect/mob_spawn/corpse/human/factory, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Mj" = ( +/turf/closed/mineral, +/area/virtual_domain/powered) +"Mu" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Mx" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 1 + }, +/obj/structure/filingcabinet, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"My" = ( +/obj/machinery/conveyor/auto{ + dir = 1 + }, +/obj/machinery/light/small/red/dim{ + dir = 8 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"MI" = ( +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-74" + }, +/area/virtual_domain/powered) +"MN" = ( +/obj/effect/turf_decal/tile/dark, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Nc" = ( +/obj/structure/chair/plastic{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Nu" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"NW" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/basic/hivebot/strong, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Ok" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"On" = ( +/obj/structure/broken_flooring/side{ + dir = 4 + }, +/obj/machinery/light/broken{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"OJ" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"OL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"OQ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/sign/poster/ripped/directional/west, +/turf/open/floor/carpet/orange, +/area/virtual_domain/powered) +"OR" = ( +/obj/machinery/light/broken, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Po" = ( +/obj/machinery/light/small/red/dim{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/broken_flooring/corner, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Pr" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 8 + }, +/obj/structure/sign/poster/official/random/directional/east, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"PH" = ( +/obj/structure/railing/corner/end/flip{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Qd" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 6 + }, +/obj/machinery/light/dim{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Qh" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/light/broken{ + dir = 8 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Qj" = ( +/obj/machinery/light/dim{ + dir = 8 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Qo" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"Qr" = ( +/turf/closed/indestructible/fakedoor/maintenance{ + name = "maintenance access" + }, +/area/virtual_domain/powered) +"Qv" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 9 + }, +/obj/machinery/light/small/red/dim{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Qy" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/structure/disposaloutlet{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"QI" = ( +/obj/structure/sign/calendar/directional/north, +/obj/effect/spawner/random/trash/garbage, +/turf/open/floor/iron/cafeteria, +/area/virtual_domain/powered) +"QK" = ( +/obj/structure/table, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"QN" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"QP" = ( +/obj/structure/sign/poster/contraband/random/directional/east, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"QW" = ( +/obj/machinery/conveyor/auto{ + dir = 5 + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Ru" = ( +/obj/machinery/door/airlock/external/glass/ruin, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Ry" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/bin, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"RJ" = ( +/turf/closed/indestructible/binary, +/area/virtual_domain/powered) +"RK" = ( +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"RZ" = ( +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Sg" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Sl" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"SC" = ( +/mob/living/basic/hivebot/strong, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"SR" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"SS" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/mineral, +/area/virtual_domain/powered) +"SU" = ( +/obj/effect/spawner/structure/window, +/obj/item/stack/rods/two, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"SZ" = ( +/obj/structure/table/reinforced, +/obj/effect/spawner/random/food_or_drink/booze, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Te" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 5 + }, +/obj/effect/mob_spawn/corpse/human/factory/qm, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Tn" = ( +/obj/structure/broken_flooring/corner{ + dir = 4 + }, +/mob/living/basic/hivebot, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Tp" = ( +/obj/machinery/door/poddoor/shutters/indestructible{ + dir = 4; + id = "factorylockdown" + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Tt" = ( +/obj/machinery/conveyor/auto{ + dir = 9 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"TH" = ( +/obj/structure/broken_flooring/corner/directional/south, +/obj/item/ammo_casing/shotgun/buckshot/spent, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Ue" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small/red/dim{ + dir = 8 + }, +/obj/structure/sign/poster/official/cleanliness/directional/west, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Uw" = ( +/obj/machinery/light/dim{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"UO" = ( +/obj/structure/broken_flooring/side/directional/north, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"UV" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 6 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"UX" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/machinery/light/small/red/dim, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"UY" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Vb" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/broken, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Vg" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/light/small/red/dim, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Vh" = ( +/obj/structure/table/reinforced, +/turf/open/floor/iron/cafeteria, +/area/virtual_domain/powered) +"Vy" = ( +/obj/structure/broken_flooring/singular{ + dir = 4 + }, +/obj/effect/mob_spawn/corpse/human/factory/guard, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"VA" = ( +/obj/machinery/light/small/red/dim{ + dir = 1 + }, +/obj/structure/table, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"VJ" = ( +/obj/structure/broken_flooring/corner{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"VL" = ( +/obj/structure/sign/warning/secure_area/directional/south, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"VO" = ( +/obj/machinery/light/broken{ + dir = 1 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Wd" = ( +/obj/structure/lattice/catwalk{ + name = "industrial lift" + }, +/obj/structure/railing, +/turf/open/chasm, +/area/virtual_domain/powered) +"Wp" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"WT" = ( +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"WV" = ( +/obj/machinery/conveyor/auto{ + dir = 10; + inverted = 1; + icon_state = "conveyor_map_inverted" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Xb" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/closed/wall, +/area/virtual_domain/powered) +"Xc" = ( +/obj/effect/turf_decal/trimline/yellow/line, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Xm" = ( +/obj/item/gun/ballistic/shotgun/lethal, +/obj/machinery/light/broken{ + dir = 1 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Xo" = ( +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Xw" = ( +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/line{ + dir = 10 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"XL" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 4 + }, +/obj/structure/sign/warning/vacuum/external/directional/south, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"XN" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"XO" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"XP" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/railing/corner/end{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"XQ" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/light/dim{ + dir = 4 + }, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"XR" = ( +/obj/effect/turf_decal/trimline/yellow/warning{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Yc" = ( +/obj/item/gun/ballistic/revolver, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Yl" = ( +/obj/structure/broken_flooring/corner/directional/west, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Ym" = ( +/mob/living/simple_animal/pet/cat/space, +/obj/structure/bed/dogbed{ + name = "cat bed" + }, +/obj/item/toy/plush/moth{ + pixel_x = 3; + pixel_y = 4 + }, +/obj/machinery/light/small/dim/directional/south, +/obj/structure/sign/poster/official/moth_hardhat/directional/west, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Yt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Yz" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/poddoor/shutters/indestructible{ + id = "factorylockdown" + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"YF" = ( +/obj/machinery/light/small/red/dim, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"YL" = ( +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"YP" = ( +/obj/effect/turf_decal/trimline/yellow/corner{ + dir = 1 + }, +/obj/machinery/light/dim, +/turf/open/floor/iron, +/area/virtual_domain/powered) +"Zb" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"Zg" = ( +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-157" + }, +/area/virtual_domain/powered) +"Zy" = ( +/obj/structure/table, +/obj/item/flashlight/lantern, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"ZI" = ( +/turf/open/floor/carpet/royalblue{ + icon_state = "carpet_royalblue-203" + }, +/area/virtual_domain/powered) +"ZP" = ( +/obj/structure/railing, +/turf/open/floor/iron/stairs/right{ + dir = 8 + }, +/area/virtual_domain/powered) + +(1,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(2,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +Mj +Mj +eg +eg +SS +eg +eg +eg +Xb +Mj +Mj +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(3,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +Mj +Bx +SZ +Ue +CQ +zB +eg +OQ +bs +Ib +Mj +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +yQ +yQ +"} +(4,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +eg +ho +ho +qN +ho +zO +eg +pa +bs +zp +eY +RJ +RJ +Mj +RJ +RJ +rO +rO +RJ +RJ +xF +"} +(5,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +eg +eg +eg +eg +eg +eg +eg +RJ +eg +um +DP +Vh +Vh +Hn +tr +fg +ZP +Fw +eY +Mj +Mj +Mj +AU +AU +AU +rO +rO +rO +RJ +"} +(6,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +eg +vA +Dr +bw +Jq +gc +eg +RJ +eg +Hn +fK +fK +fK +Hn +lC +hi +FK +eY +eY +Mj +Ez +AU +aK +aK +AU +AU +BN +rO +RJ +"} +(7,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +eg +jQ +lt +kU +vU +lN +eg +RJ +eg +QI +Fo +Hn +Hn +Hn +tr +hi +Ln +eY +Mj +Mj +AU +AU +BN +aK +aK +aK +AU +rO +RJ +"} +(8,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +eg +uU +gj +kU +Tn +OR +eg +RJ +eg +eg +uk +pf +pf +eg +eg +qV +Vb +eY +aK +aK +aK +aK +aK +aK +aK +aK +aK +aK +RJ +"} +(9,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +eg +ki +gj +kU +kU +kU +eg +RJ +eg +kU +kU +nD +nS +kU +Qj +FK +nc +eY +aK +aK +aK +aK +aK +aK +AU +aK +aK +aK +RJ +"} +(10,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +RJ +RJ +RJ +RJ +RJ +eg +eg +kJ +lx +lx +lp +eg +RJ +eg +mu +AJ +mu +eJ +MN +BW +hi +Sg +eY +aK +aK +aK +aK +aK +aK +aK +aK +aK +aK +RJ +"} +(11,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +eg +eg +eg +Qr +eg +eg +JE +gj +pi +kU +VL +eg +eg +eg +VO +kU +Fr +jw +qk +XR +vQ +Vg +eY +aK +aK +aK +JR +JR +JR +JR +JR +Qo +aK +RJ +"} +(12,1,1) = {" +yQ +yQ +yQ +yQ +RJ +RJ +RJ +eg +eg +eg +eg +eg +eg +yM +eg +GV +WT +xj +qk +Qh +XP +lW +ww +EI +Kt +Qh +mu +Yz +xl +HI +kU +Bh +Kb +kU +hi +CX +eY +eY +aK +aK +JR +JR +JR +JR +JR +JR +aK +RJ +"} +(13,1,1) = {" +yQ +yQ +yQ +yQ +RJ +RJ +RJ +eg +VA +bA +eg +kU +sB +WT +mh +kU +pv +AP +IZ +KX +Wd +uv +DE +Mi +gj +xT +hi +tl +IF +kU +hi +Yc +kU +kU +vU +lB +XL +eg +tr +eY +JR +JR +JR +JR +JR +JR +aK +RJ +"} +(14,1,1) = {" +yQ +yQ +yQ +yQ +RJ +RJ +kU +kU +Zy +kU +Gh +Kt +mu +mu +mu +uF +xl +AP +KX +JT +bG +qk +DA +DA +zE +gc +mu +Yz +lW +pi +kU +kU +nL +BW +hi +hg +Wp +Ru +hi +gs +JR +JR +JR +JR +JR +JR +aK +RJ +"} +(15,1,1) = {" +yQ +RJ +RJ +RJ +RJ +RJ +RJ +kU +QP +kU +eg +qT +Gb +Uw +iz +jS +gj +rJ +KX +Aw +Wd +Ff +lN +XO +gj +DE +SC +tl +qk +mu +mu +xl +kU +oX +hi +cF +cw +eY +tr +eY +JR +JR +JR +JR +JR +JR +aK +RJ +"} +(16,1,1) = {" +yQ +RJ +Mj +Mj +Mj +Mj +RJ +eg +eg +eg +eg +Xb +yB +eg +eg +kU +qk +PH +dA +Po +Jn +aw +OJ +CA +QN +kU +Uw +tl +kU +Mc +kU +kh +fj +kU +FK +CX +eY +eY +aK +aK +JR +JR +JR +JR +JR +JR +aK +RJ +"} +(17,1,1) = {" +yQ +RJ +Mj +BN +AU +Mj +Mj +Mj +eg +QW +My +Qy +kU +po +eg +tr +Is +tr +eg +eg +eg +kU +pi +kU +lI +YF +eg +eg +op +kU +BA +iw +kU +kU +FK +rz +eY +aK +aK +aK +JR +JR +JR +JR +JR +ev +aK +RJ +"} +(18,1,1) = {" +yQ +RJ +aK +AU +AU +AU +aK +aK +eg +Ct +oN +Gy +jW +xT +eg +Tp +Tp +Tp +eg +Ym +eg +eg +xa +xa +xa +eg +eg +eg +kU +Zb +kU +Yt +kU +UO +hi +CX +eY +aK +aK +aK +aK +aK +aK +aK +aK +aK +aK +RJ +"} +(19,1,1) = {" +RJ +RJ +aK +aK +aK +aK +wl +aK +yX +ve +Tt +Xo +DE +oX +eg +Sl +gV +dz +eg +uC +eg +qK +mh +kU +kU +Qj +VJ +eg +kU +kU +kU +gj +kU +kU +hi +Ok +eY +aK +aK +aK +aK +aK +aK +aK +aK +aK +aK +RJ +"} +(20,1,1) = {" +RJ +aK +aK +aK +aK +aK +aK +aK +tr +uz +Mh +EJ +kU +kU +mE +Mu +Yl +pJ +eg +kn +pb +kU +kU +kU +Fa +kU +YF +eg +eg +pf +tr +XN +eg +eg +Ci +YP +eY +eY +aK +aK +aK +aK +aK +aK +aK +aK +aK +RJ +"} +(21,1,1) = {" +RJ +aK +aK +aK +aK +aK +Av +CR +tr +kU +ei +WV +pi +Jm +eg +eN +gN +GI +eg +rc +mu +rM +gc +vQ +tE +mu +mu +eg +Mx +qc +ax +bS +fe +pf +hi +hi +af +eY +aK +aK +aK +aK +aK +aK +aK +aK +aK +RJ +"} +(22,1,1) = {" +RJ +aK +aK +aK +aK +aK +aK +FO +eg +eg +wg +uU +lN +uz +eg +mY +jH +rG +eg +xT +Uw +kU +kU +On +pi +kU +Mj +eg +wm +xA +fZ +OL +aL +Ip +hi +lN +QK +eY +aK +aK +aK +aK +BN +aK +aK +aK +aK +RJ +"} +(23,1,1) = {" +RJ +aK +aK +aK +aK +aK +AU +FO +Mj +eg +eg +Mj +Mj +eY +eY +UO +jH +Nu +eg +eg +eg +eg +eg +Mj +Mj +Mj +Mj +eg +RZ +vQ +wW +wU +dP +tr +hi +hi +Nc +eY +aK +BN +AU +aK +aK +aK +aK +aK +aK +RJ +"} +(24,1,1) = {" +RJ +RJ +aK +aK +aK +AU +Ez +Mj +Mj +RJ +Mj +Mj +Vy +hi +eY +CX +jH +Nu +eg +Gi +Qd +jv +fR +cB +Mj +RJ +RJ +eg +Ry +hk +pI +XQ +YL +eg +bq +hi +Mj +eY +Mj +Mj +AU +AU +aK +aK +aK +aK +rO +RJ +"} +(25,1,1) = {" +yQ +RJ +aK +AU +BN +AU +Mj +Mj +RJ +RJ +eY +Xm +TH +fw +eY +qW +hi +dx +pf +UV +sn +uP +Ge +vb +eg +RJ +RJ +eg +Mj +Mj +eg +eg +eg +eg +eg +Mj +Mj +RJ +RJ +Mj +Mj +Mj +RJ +RJ +Mj +Mj +Mj +RJ +"} +(26,1,1) = {" +yQ +RJ +RJ +RJ +RJ +rO +Mj +RJ +RJ +RJ +eY +Bd +vL +hi +vU +sW +hi +SR +SU +CX +FP +wh +Zg +Nu +eg +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +RJ +"} +(27,1,1) = {" +yQ +yQ +yQ +yQ +RJ +RJ +RJ +RJ +yQ +RJ +eY +Jl +RK +BX +eY +CX +RK +iI +BI +ws +ud +bx +Cv +Nu +eg +RJ +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(28,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +eY +NW +UY +KO +eY +fl +jH +Nu +uk +CX +FP +wq +Zg +Nu +eg +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(29,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +eY +xk +Te +xT +eY +CX +jH +Nu +pf +Xw +MI +ZI +Ex +xE +eg +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(30,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +eY +eY +eY +eY +eY +CX +jH +Xc +eg +Pr +LN +xM +Qv +LU +Mj +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(31,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +RJ +RJ +RJ +RJ +eg +Gs +jH +UX +eg +eg +eg +eg +Mj +Mj +Mj +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(32,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +eg +Ok +nz +IK +eg +RJ +RJ +RJ +RJ +RJ +RJ +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(33,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +Mj +CX +hi +Nu +RJ +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(34,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +Mj +CX +RJ +Lp +eg +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(35,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +RJ +fl +RJ +RJ +RJ +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} +(36,1,1) = {" +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +RJ +RJ +RJ +RJ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +yQ +"} diff --git a/_maps/virtual_domains/pirates.dmm b/_maps/virtual_domains/pirates.dmm new file mode 100644 index 000000000000..9c970f78c371 --- /dev/null +++ b/_maps/virtual_domains/pirates.dmm @@ -0,0 +1,2601 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ag" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/decal/cleanable/garbage, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"by" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 5 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"bz" = ( +/obj/structure/flora/bush/grassy{ + pixel_y = 8 + }, +/obj/structure/flora/bush/lavendergrass{ + pixel_y = -10 + }, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"bP" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"cl" = ( +/obj/structure/flora/rock/style_3, +/turf/open/water/beach, +/area/virtual_domain/powered) +"ct" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/head/costume/pirate/armored, +/obj/item/clothing/suit/costume/pirate/captain/armored, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/parquet, +/area/virtual_domain/powered) +"cx" = ( +/turf/closed/indestructible/binary, +/area/virtual_domain/powered) +"cJ" = ( +/obj/item/stack/cannonball/shellball{ + pixel_x = 13; + pixel_y = 11 + }, +/obj/item/stack/cannonball{ + pixel_x = 9; + pixel_y = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"cQ" = ( +/obj/structure/flora/grass/jungle/b{ + pixel_x = -15; + pixel_y = 9 + }, +/obj/structure/flora/rock/pile/jungle/large/style_2{ + pixel_x = -3; + pixel_y = -1 + }, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"dp" = ( +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"dA" = ( +/obj/structure/bonfire/prelit, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"dQ" = ( +/obj/structure/flora/rock/style_4, +/turf/open/water/beach, +/area/virtual_domain/powered) +"eb" = ( +/obj/structure/flora/bush/sparsegrass, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"eD" = ( +/obj/structure/flora/coconuts{ + pixel_x = 9; + pixel_y = -14 + }, +/obj/structure/flora/tree/palm/style_2, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"eQ" = ( +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"eW" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"fx" = ( +/obj/structure/fluff/beach_umbrella{ + pixel_x = -7; + pixel_y = -10 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"gk" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"gw" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"ht" = ( +/obj/structure/bookcase/random/fiction, +/turf/open/floor/wood/parquet, +/area/virtual_domain/powered) +"hH" = ( +/obj/item/clothing/suit/armor/militia{ + pixel_x = -5; + pixel_y = 12 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/clothing/suit/armor/militia{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/item/clothing/suit/armor/militia{ + pixel_x = -5; + pixel_y = -3 + }, +/obj/item/clothing/head/costume/fancy{ + pixel_x = 6; + pixel_y = 12 + }, +/obj/item/clothing/head/costume/fancy{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/clothing/head/hats/coordinator{ + pixel_x = 8; + pixel_y = -5 + }, +/obj/structure/closet/cabinet, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"hM" = ( +/obj/structure/closet/crate/goldcrate, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"hW" = ( +/obj/structure/chair/comfy/carp{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"iM" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/mob/living/simple_animal/hostile/pirate/ranged/space, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"iO" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"jl" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/flashlight/flare/torch{ + pixel_y = 10; + pixel_x = 7 + }, +/obj/item/reagent_containers/cup/bucket/wooden{ + pixel_y = -16; + pixel_x = 12 + }, +/obj/machinery/recharger{ + pixel_y = 6; + pixel_x = -5 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"jz" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"jB" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/jukebox, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"jC" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/item/reagent_containers/cup/glass/bottle/rum{ + desc = "Rum with ghostly properties that can help the drinker enter the spirit realm. It has fermented under the sea of space for ages."; + name = "Ghost Pirate Rum"; + pixel_x = -4; + pixel_y = 12 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 3; + pixel_y = 7 + }, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"jQ" = ( +/obj/item/gun/energy/laser/hellgun{ + pixel_y = 10 + }, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"kg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"kl" = ( +/obj/structure/cannon, +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/ash/large{ + pixel_y = -5; + pixel_x = 8 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"lC" = ( +/obj/item/stack/cannonball{ + pixel_x = 7; + pixel_y = 8 + }, +/obj/item/stack/cannonball{ + pixel_x = 11; + pixel_y = -4 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"me" = ( +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"mw" = ( +/obj/structure/flora/grass/jungle/b/style_random{ + pixel_x = -13; + pixel_y = 18 + }, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"mP" = ( +/obj/structure/flora/bush/fullgrass, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"nz" = ( +/obj/effect/mob_spawn/corpse/human/pirate, +/turf/open/misc/beach/coast{ + dir = 8 + }, +/area/virtual_domain/powered) +"nQ" = ( +/obj/machinery/loot_locator, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"nS" = ( +/obj/structure/flora/rock/pile/jungle/large, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"nX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/mob/living/simple_animal/hostile/pirate/melee/space, +/turf/open/floor/wood/parquet, +/area/virtual_domain/powered) +"oo" = ( +/obj/machinery/smartfridge/drying_rack, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"oU" = ( +/turf/open/misc/beach/coast{ + dir = 10 + }, +/area/virtual_domain/powered) +"pq" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"px" = ( +/obj/structure/headpike/bone{ + pixel_y = 24 + }, +/turf/open/misc/beach/coast, +/area/virtual_domain/powered) +"pP" = ( +/turf/open/misc/beach/coast, +/area/virtual_domain/powered) +"pU" = ( +/obj/effect/mob_spawn/corpse/human/pirate, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"qj" = ( +/obj/structure/barricade/wooden, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"qm" = ( +/obj/effect/turf_decal/siding/wood, +/obj/item/melee/sabre{ + pixel_y = 12; + pixel_x = -10 + }, +/obj/item/gun/energy/laser/retro, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"qx" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/decal/cleanable/dirt/dust, +/mob/living/simple_animal/hostile/pirate/ranged, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"qN" = ( +/obj/structure/flora/bush/sunny/style_3{ + pixel_y = 22 + }, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"qX" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/obj/structure/fermenting_barrel{ + pixel_x = 6; + pixel_y = 11 + }, +/obj/effect/mob_spawn/ghost_role/human/pirate/skeleton, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"sn" = ( +/obj/structure/table/wood, +/obj/item/book/manual/wiki/ordnance, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"so" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"th" = ( +/obj/effect/turf_decal/weather/sand, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"tk" = ( +/obj/structure/flora/bush/flowers_pp, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"to" = ( +/mob/living/simple_animal/hostile/pirate/melee, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"ub" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"uw" = ( +/obj/structure/barricade/sandbags, +/obj/effect/turf_decal/weather/sand{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"uM" = ( +/obj/structure/flora/bush/stalky{ + pixel_y = 13; + pixel_x = -8 + }, +/turf/open/water/beach, +/area/virtual_domain/powered) +"uT" = ( +/obj/structure/closet/crate/grave, +/obj/structure/flora/grass/jungle/b, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"wb" = ( +/obj/structure/flora/rock, +/turf/open/water/beach, +/area/virtual_domain/powered) +"we" = ( +/obj/effect/mine/explosive/light, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"xc" = ( +/turf/open/misc/beach/coast{ + dir = 4 + }, +/area/virtual_domain/powered) +"xg" = ( +/turf/template_noop, +/area/template_noop) +"xm" = ( +/obj/structure/barricade/wooden/crude, +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain/powered) +"xB" = ( +/obj/structure/fermenting_barrel/gunpowder{ + pixel_x = -4; + pixel_y = 17 + }, +/obj/structure/fermenting_barrel/gunpowder{ + pixel_x = 4 + }, +/obj/item/stack/cannonball/four{ + pixel_x = -9; + pixel_y = -10 + }, +/obj/item/stack/cannonball{ + pixel_x = 3; + pixel_y = 8 + }, +/obj/item/reagent_containers/cup/bucket/wooden{ + pixel_y = -10 + }, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"xC" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/beach, +/area/virtual_domain/powered) +"xI" = ( +/obj/structure/flora/rock/pile/style_2, +/turf/open/water/beach, +/area/virtual_domain/powered) +"yc" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/beach, +/area/virtual_domain/powered) +"ye" = ( +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"yi" = ( +/mob/living/simple_animal/hostile/pirate/melee, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"yq" = ( +/obj/structure/barricade/sandbags, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"yw" = ( +/obj/effect/mapping_helpers/burnt_floor, +/mob/living/simple_animal/hostile/pirate/ranged, +/obj/structure/chair/wood, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"yA" = ( +/obj/item/bedsheet/rainbow/double, +/obj/structure/bed/double, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"zf" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/ferny, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"zg" = ( +/obj/structure/flora/rock/pile/style_3, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"zR" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"Ax" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/effect/turf_decal/weather/dirt, +/turf/open/water/beach, +/area/virtual_domain/powered) +"AU" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/water/beach, +/area/virtual_domain/powered) +"BC" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"BO" = ( +/obj/structure/bookcase/random/adult, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/wood/parquet, +/area/virtual_domain/powered) +"Cc" = ( +/obj/structure/flora/tree/palm, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Ct" = ( +/turf/open/misc/beach/coast/corner, +/area/virtual_domain/powered) +"Dm" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table/wood, +/obj/item/flashlight/flare/torch{ + pixel_y = 10 + }, +/obj/item/flashlight/flare/torch{ + pixel_x = 8; + pixel_y = 6 + }, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"DJ" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/bed/maint{ + pixel_x = -10; + pixel_y = 9 + }, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"DL" = ( +/obj/structure/flora/bush/sunny, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"ED" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/weather/sand{ + dir = 10 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"EZ" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"FG" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/claymore/cutlass, +/obj/item/clothing/head/costume/pirate/bandana/armored{ + pixel_x = -9; + pixel_y = 7 + }, +/obj/structure/table/wood, +/obj/item/gun/energy/laser{ + pixel_y = -3 + }, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"FT" = ( +/turf/closed/mineral/random/jungle, +/area/virtual_domain/powered) +"GF" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/rock/pile, +/turf/open/water/beach, +/area/virtual_domain/powered) +"GG" = ( +/obj/structure/barricade/sandbags, +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/obj/item/binoculars{ + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"Hp" = ( +/obj/effect/turf_decal/siding/wood, +/mob/living/simple_animal/hostile/pirate/ranged, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"HY" = ( +/turf/open/misc/beach/coast{ + dir = 6 + }, +/area/virtual_domain/powered) +"It" = ( +/obj/structure/flora/bush/sparsegrass, +/obj/structure/flora/bush/lavendergrass, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"Iz" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/bed/maint, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"IF" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/water/beach, +/area/virtual_domain/powered) +"IG" = ( +/obj/effect/mob_spawn/corpse/human/pirate, +/obj/effect/decal/cleanable/blood/gibs/old, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"IM" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 10 + }, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"Jo" = ( +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"Jr" = ( +/obj/structure/headpike/bone, +/turf/open/misc/beach/coast, +/area/virtual_domain/powered) +"Jv" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"JT" = ( +/obj/effect/decal/cleanable/ants, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"Kb" = ( +/obj/structure/railing{ + color = "#4C3117"; + name = "wooden railing" + }, +/obj/effect/decal/cleanable/vomit/old, +/obj/effect/turf_decal/weather/sand{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Kl" = ( +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Kw" = ( +/obj/machinery/door/airlock/vault{ + color = "#825427"; + name = "Ye Olde Strong Door" + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain/powered) +"KC" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/water/beach, +/area/virtual_domain/powered) +"KG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/item/gun/energy/laser/musket{ + pixel_y = 7 + }, +/obj/item/gun/energy/laser/musket{ + pixel_y = 2 + }, +/obj/item/gun/energy/laser/musket{ + pixel_y = -3 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"KQ" = ( +/obj/structure/flora/rock/style_2, +/turf/open/water/beach, +/area/virtual_domain/powered) +"Ld" = ( +/obj/structure/flora/rock/pile, +/turf/open/water/beach, +/area/virtual_domain/powered) +"Ma" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"Mi" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/oil, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"MW" = ( +/obj/effect/turf_decal/weather/sand{ + dir = 5 + }, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Nh" = ( +/obj/structure/flora/rock/pile/jungle/style_3{ + pixel_x = -15; + pixel_y = -4 + }, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"Nk" = ( +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Nz" = ( +/obj/structure/flora/bush/jungle, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"NI" = ( +/obj/structure/railing{ + color = "#4C3117"; + name = "wooden railing" + }, +/obj/effect/turf_decal/weather/sand{ + dir = 9 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"ON" = ( +/obj/item/kirbyplants/organic/plant21{ + pixel_x = -8 + }, +/obj/structure/filingcabinet{ + pixel_x = 11 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain/powered) +"OP" = ( +/obj/structure/flora/bush/stalky, +/turf/open/misc/beach/coast, +/area/virtual_domain/powered) +"Pq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/bed/maint{ + pixel_x = 2; + pixel_y = 13 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Pz" = ( +/obj/structure/table/wood, +/mob/living/simple_animal/parrot{ + name = "pepper" + }, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"PQ" = ( +/obj/structure/flora/grass/jungle/b, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"Qb" = ( +/obj/structure/flora/rock{ + pixel_x = 7 + }, +/turf/open/water/beach, +/area/virtual_domain/powered) +"Rr" = ( +/obj/structure/bed/maint{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/effect/turf_decal/weather/sand{ + dir = 6 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"RR" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"Sm" = ( +/obj/structure/flora/tree/jungle, +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/misc/grass, +/area/virtual_domain/powered) +"St" = ( +/obj/structure/table/wood, +/obj/item/melee/energy/sword/pirate{ + pixel_y = 10 + }, +/obj/item/clothing/mask/cigarette/cigar{ + pixel_x = 4 + }, +/obj/item/lighter{ + pixel_x = 10; + pixel_y = -8 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"Tp" = ( +/turf/open/misc/beach/coast/corner{ + dir = 1 + }, +/area/virtual_domain/powered) +"Tt" = ( +/obj/structure/cannon{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"TO" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/light/small/directional/south, +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/floor/carpet/blue, +/area/virtual_domain/powered) +"TP" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/misc/beach/coast{ + dir = 6 + }, +/area/virtual_domain/powered) +"TQ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/bed/maint{ + pixel_x = 2; + pixel_y = 1 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/item/toy/plush/beeplushie, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Uy" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/virtual_domain/powered) +"UE" = ( +/obj/structure/barricade/sandbags, +/obj/effect/turf_decal/weather/sand{ + dir = 10 + }, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"Vg" = ( +/obj/effect/mob_spawn/corpse/human/pirate/melee, +/turf/open/water/beach, +/area/virtual_domain/powered) +"Vk" = ( +/obj/structure/barricade/sandbags, +/obj/effect/turf_decal/weather/sand, +/turf/open/floor/wood{ + icon_state = "wood_large" + }, +/area/virtual_domain/powered) +"VC" = ( +/obj/effect/mob_spawn/corpse/human/damaged, +/turf/open/water/beach, +/area/virtual_domain/powered) +"VF" = ( +/turf/open/water/beach, +/area/virtual_domain/powered) +"VX" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/rack{ + icon = 'icons/obj/fluff/general.dmi'; + icon_state = "minibar"; + name = "skeletal minibar" + }, +/obj/item/storage/bag/money/dutchmen{ + pixel_y = 13 + }, +/turf/open/floor/wood/parquet, +/area/virtual_domain/powered) +"WM" = ( +/obj/structure/flora/rock/pile/jungle/style_2, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) +"WP" = ( +/turf/open/floor/wood/parquet, +/area/virtual_domain/powered) +"Xn" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"XG" = ( +/obj/structure/fermenting_barrel/gunpowder{ + pixel_x = -4; + pixel_y = 17 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Yj" = ( +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"Yk" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/parquet, +/area/virtual_domain/powered) +"Yq" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Zk" = ( +/obj/structure/flora/coconuts{ + pixel_x = 12 + }, +/obj/structure/flora/tree/palm, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"ZZ" = ( +/obj/structure/flora/grass/jungle, +/turf/open/misc/dirt/jungle, +/area/virtual_domain/powered) + +(1,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +cx +cx +cx +cx +cx +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(2,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +FT +FT +FT +FT +FT +FT +cx +cx +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(3,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +cx +FT +FT +FT +FT +FT +FT +FT +FT +FT +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(4,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(5,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +FT +FT +FT +FT +FT +FT +zf +eb +we +FT +FT +FT +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(6,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +cx +FT +FT +FT +Sm +Ma +bz +JT +Kl +Kl +Kl +FT +FT +cx +cx +cx +cx +cx +cx +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(7,1,1) = {" +xg +xg +xg +xg +xg +cx +cx +cx +cx +FT +FT +FT +FT +It +tk +DL +Kl +Kl +Kl +Cc +Kl +IG +FT +cx +cx +FT +FT +FT +FT +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(8,1,1) = {" +xg +xg +xg +xg +cx +cx +FT +FT +FT +FT +FT +Nz +bP +mP +to +Kl +Kl +we +Kl +Kl +Kl +Kl +we +cx +cx +FT +FT +FT +FT +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(9,1,1) = {" +xg +xg +xg +cx +cx +FT +dp +dp +dp +dp +xB +yq +yq +Kl +Kl +Ct +xc +xc +xc +xc +xc +xc +xc +HY +VF +VF +VF +VF +VF +cx +cx +cx +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(10,1,1) = {" +xg +xg +xg +cx +FT +dp +dp +Pq +qx +Mi +th +Kl +yq +Kl +IG +OP +uM +VF +VF +VF +VF +VF +VF +VF +VF +VC +VF +VF +VF +VF +VF +dp +cx +cx +cx +xg +xg +xg +xg +xg +xg +xg +"} +(11,1,1) = {" +xg +xg +cx +cx +FT +dp +TQ +Iz +DJ +ag +eW +Kl +Kl +ED +Kl +Jr +VF +VF +VF +VF +VF +VF +VF +VF +VF +KQ +VF +VF +VF +VF +VF +dp +KG +pq +cx +cx +cx +cx +cx +cx +cx +Uy +"} +(12,1,1) = {" +xg +xg +cx +FT +FT +dp +Yj +MW +iO +Rr +qj +Kl +NI +xm +Ct +HY +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +wb +dp +jl +pq +BC +ub +ub +ub +ub +ub +Xn +cx +"} +(13,1,1) = {" +cx +cx +cx +FT +FT +FT +qj +Kl +Kl +Kl +Kl +Kl +lC +kl +pP +VF +VF +VF +VF +VF +VF +Vg +VF +VF +VF +VF +VF +VF +VF +VF +cl +dp +hH +Nk +qm +ub +ub +ub +ub +ub +ub +cx +"} +(14,1,1) = {" +cx +dp +dp +dp +dp +dp +dp +oo +Kl +Kl +Kl +Kl +Kb +dp +px +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +dp +dp +Nk +Jv +ub +ub +ub +ub +ub +ub +cx +"} +(15,1,1) = {" +cx +dp +BO +ht +VX +ct +dp +yi +Kl +dA +Kl +Kl +by +Hp +pP +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +me +ub +ub +ub +ub +ub +ub +cx +"} +(16,1,1) = {" +cx +dp +ON +WP +nX +Yk +Kw +Kl +Kl +Kl +Kl +Kl +Kl +dp +px +VF +VF +VF +VF +Qb +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +ub +ub +ub +ub +ub +ub +cx +"} +(17,1,1) = {" +cx +dp +jC +iM +so +TO +dp +Kl +Kl +EZ +IM +Kl +Kl +Kl +pP +VF +VF +VF +VF +cl +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +ub +ub +ub +ub +ub +ub +cx +"} +(18,1,1) = {" +cx +dp +sn +hW +eQ +gk +dp +dp +qX +gw +jz +UE +Kl +Zk +pP +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +me +VF +ub +ub +ub +ub +ub +zR +cx +"} +(19,1,1) = {" +cx +dp +St +Pz +nQ +yA +dp +dp +Dm +jz +jz +Vk +Kl +Kl +pP +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +dp +BC +VF +VF +VF +VF +VF +VF +cx +cx +"} +(20,1,1) = {" +cx +dp +dp +dp +dp +dp +dp +xm +FG +RR +yw +Vk +Kl +Kl +pP +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +Tt +cJ +Yq +VF +VF +VF +VF +VF +cx +xg +"} +(21,1,1) = {" +cx +cx +cx +FT +FT +Kl +Kl +dp +dp +jB +uw +GG +Kl +Kl +pP +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +xI +dp +XG +BC +VF +VF +VF +VF +VF +cx +xg +"} +(22,1,1) = {" +xg +xg +cx +FT +FT +fx +Kl +Kl +dp +dp +Kl +Kl +Kl +Kl +pP +VF +VF +VF +VF +VF +VF +dQ +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +kg +pq +Ld +VF +VF +VF +VF +VF +cx +xg +"} +(23,1,1) = {" +xg +xg +cx +FT +FT +FT +Kl +Kl +Kl +Kl +Kl +Kl +Kl +Kl +Tp +oU +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +FT +FT +cx +xg +"} +(24,1,1) = {" +xg +xg +cx +FT +FT +FT +FT +dp +Kl +eD +Kl +Kl +Kl +Kl +Kl +Tp +nz +oU +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +FT +FT +cx +xg +"} +(25,1,1) = {" +xg +xg +cx +cx +FT +FT +FT +FT +Kl +Kl +Kl +Kl +Kl +Kl +yi +Kl +Kl +pP +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +FT +FT +FT +cx +xg +"} +(26,1,1) = {" +xg +xg +xg +cx +cx +cx +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +TP +VF +FT +FT +cx +cx +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +cx +FT +FT +FT +FT +cx +xg +"} +(27,1,1) = {" +xg +xg +xg +xg +xg +cx +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +PQ +AU +FT +FT +FT +cx +cx +VF +VF +VF +VF +VF +VF +VF +VF +VF +VF +cx +cx +FT +FT +FT +cx +cx +xg +"} +(28,1,1) = {" +xg +xg +xg +xg +xg +cx +cx +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +Nh +AU +FT +FT +FT +FT +cx +cx +cx +cx +VF +VF +VF +VF +VF +VF +cx +cx +cx +cx +cx +cx +cx +xg +xg +"} +(29,1,1) = {" +xg +xg +xg +xg +xg +xg +cx +cx +cx +cx +cx +cx +FT +FT +FT +FT +FT +ye +KC +VF +FT +FT +FT +FT +FT +FT +cx +cx +cx +cx +cx +cx +cx +cx +xg +xg +xg +xg +xg +xg +xg +xg +"} +(30,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +FT +FT +FT +FT +FT +zg +ye +KC +IF +VF +FT +FT +FT +FT +FT +cx +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(31,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +FT +FT +FT +FT +FT +ye +ye +pU +AU +VF +GF +WM +FT +FT +FT +cx +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(32,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +FT +FT +FT +FT +FT +ye +nS +KC +VF +Ax +ye +hM +FT +FT +FT +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(33,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +FT +FT +FT +FT +ZZ +ye +cQ +KC +yc +qN +ye +hM +FT +FT +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(34,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +FT +FT +FT +FT +ye +ye +mw +xC +uT +jQ +Jo +FT +FT +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(35,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +cx +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(36,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +FT +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} +(37,1,1) = {" +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +cx +cx +cx +cx +cx +cx +cx +cx +cx +cx +cx +cx +cx +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +xg +"} diff --git a/_maps/virtual_domains/stairs_and_cliffs.dmm b/_maps/virtual_domains/stairs_and_cliffs.dmm new file mode 100644 index 000000000000..82e15fcc0909 --- /dev/null +++ b/_maps/virtual_domains/stairs_and_cliffs.dmm @@ -0,0 +1,6056 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"be" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/cliff/snowrock/virtual_domain, +/area/icemoon/underground/explored/virtual_domain) +"cu" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/wood, +/area/icemoon/underground/explored/virtual_domain) +"cJ" = ( +/obj/structure/chair/sofa/bench, +/turf/open/floor/plating/snowed/smoothed, +/area/icemoon/underground/explored/virtual_domain) +"dR" = ( +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"en" = ( +/obj/item/clothing/under/color/grey, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"eB" = ( +/obj/structure/flora/rock/icy/style_random, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"gB" = ( +/obj/structure/railing/corner, +/turf/open/cliff/snowrock/virtual_domain, +/area/icemoon/underground/explored/virtual_domain) +"hc" = ( +/obj/structure/railing/corner/end{ + dir = 8 + }, +/obj/structure/railing/corner/end/flip{ + dir = 8 + }, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"hE" = ( +/turf/open/floor/wood, +/area/icemoon/underground/explored/virtual_domain) +"jK" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/cliff/snowrock/virtual_domain, +/area/icemoon/underground/explored/virtual_domain) +"kc" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"km" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/ash/large, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"kK" = ( +/obj/structure/flora/tree/pine/style_random, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"mx" = ( +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/wood, +/area/icemoon/underground/explored/virtual_domain) +"nj" = ( +/obj/structure/chair/sofa/bench/left, +/turf/open/floor/plating/snowed/smoothed, +/area/icemoon/underground/explored/virtual_domain) +"no" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/structure/railing, +/obj/structure/railing{ + dir = 1 + }, +/turf/open/floor/wood, +/area/icemoon/underground/explored/virtual_domain) +"pl" = ( +/obj/structure/bonfire/prelit, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"pL" = ( +/turf/open/lava/plasma/virtual_domain, +/area/icemoon/underground/explored/virtual_domain) +"qc" = ( +/turf/open/misc/ice, +/area/icemoon/underground/explored/virtual_domain) +"sa" = ( +/obj/structure/flora/grass/green/style_random, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"sw" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"sM" = ( +/turf/open/cliff/snowrock/virtual_domain, +/area/icemoon/underground/explored/virtual_domain) +"uJ" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"vz" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"xB" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/floor/wood, +/area/icemoon/underground/explored/virtual_domain) +"yo" = ( +/turf/open/floor/plating/snowed/smoothed, +/area/icemoon/underground/explored/virtual_domain) +"yJ" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/structure/railing, +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/open/floor/wood, +/area/icemoon/underground/explored/virtual_domain) +"yL" = ( +/obj/structure/chair/sofa/bench/right, +/turf/open/floor/plating/snowed/smoothed, +/area/icemoon/underground/explored/virtual_domain) +"zn" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/open/floor/wood, +/area/icemoon/underground/explored/virtual_domain) +"Am" = ( +/turf/closed/indestructible/binary, +/area/icemoon/underground/explored/virtual_domain) +"AI" = ( +/obj/structure/flora/grass/green/style_random, +/turf/open/floor/plating/snowed/smoothed, +/area/icemoon/underground/explored/virtual_domain) +"BV" = ( +/obj/effect/decal/remains/plasma, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"Dz" = ( +/obj/structure/railing/corner/end{ + dir = 4 + }, +/obj/structure/railing/corner/end/flip{ + dir = 4 + }, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"DB" = ( +/obj/structure/flora/rock/icy/style_random, +/obj/structure/flora/rock/pile/icy/style_random, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"DY" = ( +/obj/structure/flora/rock/icy/style_random, +/obj/structure/flora/grass/green/style_random, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"Eh" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/cliff/snowrock/virtual_domain, +/area/icemoon/underground/explored/virtual_domain) +"Gn" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/obj/effect/decal/cleanable/blood/old, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"GX" = ( +/obj/effect/decal/cleanable/ash/large, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"HU" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/open/floor/wood, +/area/icemoon/underground/explored/virtual_domain) +"Kl" = ( +/obj/effect/decal/remains/plasma, +/obj/effect/decal/cleanable/ash/large, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"KA" = ( +/obj/structure/statue/snow/snowman{ + name = "Norm"; + desc = "Norm has seen many a man roll down these cliffs, some more stubborn than others. Its usually the stubborn ones who stop getting back up." + }, +/obj/item/pickaxe/mini, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"Lw" = ( +/obj/structure/flora/rock/pile/icy/style_random, +/obj/structure/flora/grass/green/style_random, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"MP" = ( +/obj/structure/railing/corner/end/flip{ + dir = 4 + }, +/obj/structure/railing/corner/end{ + dir = 4 + }, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"MT" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/open/floor/wood, +/area/icemoon/underground/explored/virtual_domain) +"Nv" = ( +/turf/open/floor/iron/stairs, +/area/icemoon/underground/explored/virtual_domain) +"NM" = ( +/obj/structure/railing/corner/end/flip{ + dir = 8 + }, +/obj/structure/railing/corner/end{ + dir = 8 + }, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"Pl" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/railing/corner, +/turf/open/floor/wood, +/area/icemoon/underground/explored/virtual_domain) +"Qv" = ( +/turf/closed/indestructible/rock/snow/ice, +/area/icemoon/underground/explored/virtual_domain) +"RD" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/icemoon/underground/explored/virtual_domain) +"Tz" = ( +/obj/item/pickaxe/mini, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"Ug" = ( +/obj/structure/flora/rock/icy/style_random, +/obj/effect/decal/cleanable/blood/old, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"VW" = ( +/obj/structure/closet/crate/secure/bitrunning/encrypted, +/turf/open/floor/plating/snowed/smoothed, +/area/icemoon/underground/explored/virtual_domain) +"YR" = ( +/obj/structure/flora/tree/pine/style_random, +/obj/structure/flora/grass/green/style_random, +/turf/open/misc/asteroid/snow, +/area/icemoon/underground/explored/virtual_domain) +"YT" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +RD +"} +(2,1,1) = {" +Am +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(3,1,1) = {" +Am +Qv +Qv +Qv +Qv +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(4,1,1) = {" +Am +Qv +Qv +Qv +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(5,1,1) = {" +Am +Qv +Qv +dR +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(6,1,1) = {" +Am +Qv +Qv +kK +sw +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(7,1,1) = {" +Am +Qv +Qv +dR +dR +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(8,1,1) = {" +Am +Qv +Qv +eB +sw +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +Qv +Qv +Qv +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(9,1,1) = {" +Am +Qv +Qv +dR +eB +dR +sw +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(10,1,1) = {" +Am +Qv +dR +sw +eB +eB +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(11,1,1) = {" +Am +Qv +dR +eB +sw +sa +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pl +dR +sw +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(12,1,1) = {" +Am +Qv +dR +dR +sw +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sw +dR +Nv +Nv +Nv +sM +sM +Nv +Nv +Nv +Nv +Nv +Nv +sM +sM +sM +sM +Nv +Nv +Nv +Nv +dR +qc +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(13,1,1) = {" +Am +Qv +dR +sa +sw +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sw +dR +dR +sM +Nv +Nv +Nv +Nv +sM +sM +sM +sM +Nv +Nv +Nv +Nv +Nv +Nv +Nv +Nv +Nv +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(14,1,1) = {" +Am +Qv +dR +dR +dR +dR +kK +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sw +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sa +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(15,1,1) = {" +Am +Qv +sw +sa +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(16,1,1) = {" +Am +Qv +dR +sa +sa +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +pl +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +GX +pL +pL +pL +pL +Qv +Qv +Qv +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(17,1,1) = {" +Am +Qv +dR +sa +sa +dR +yo +Nv +Nv +Nv +Nv +sM +sM +Nv +Nv +Nv +dR +dR +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +sw +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +dR +dR +pL +pL +pL +Qv +Qv +Qv +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(18,1,1) = {" +Am +Qv +Qv +dR +dR +yo +yo +sM +sM +sM +Nv +Nv +Nv +Nv +sM +sM +sa +qc +sM +sM +sM +sM +sM +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +pL +dR +sa +pL +pL +sM +sM +sM +sM +sM +sM +sw +dR +sM +sM +sM +sM +sM +sM +sM +sM +pL +dR +en +dR +dR +pL +pL +Qv +Qv +Qv +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(19,1,1) = {" +Am +Qv +Qv +kK +sa +yo +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sw +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sw +BV +pL +sM +sM +sM +sM +sM +sM +eB +dR +sM +sM +sM +sM +sM +sM +sM +sM +pL +GX +sw +dR +dR +pL +pL +pL +pL +Qv +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(20,1,1) = {" +Am +Qv +Qv +dR +dR +yo +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +qc +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +kK +GX +pL +pL +sM +sM +sM +sM +sM +sM +sM +dR +qc +dR +sM +sM +sM +sM +sM +sM +pL +dR +dR +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(21,1,1) = {" +Am +Qv +Qv +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +pL +pL +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +sM +dR +dR +dR +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(22,1,1) = {" +Am +Qv +Qv +dR +sa +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sw +dR +dR +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Am +"} +(23,1,1) = {" +Am +Qv +Qv +Qv +sa +qc +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +sM +DB +kc +dR +dR +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Am +"} +(24,1,1) = {" +Am +Qv +Qv +sw +eB +qc +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sa +dR +sM +sM +sM +sM +sM +sM +Ug +eB +dR +dR +dR +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Am +"} +(25,1,1) = {" +Am +Qv +Qv +dR +dR +sa +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +dR +Nv +Nv +Nv +Nv +Nv +Nv +Nv +Nv +Nv +Nv +Nv +Nv +sM +Nv +Nv +dR +dR +sM +sM +sM +sM +sM +sM +Ug +sw +dR +dR +dR +dR +dR +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Am +"} +(26,1,1) = {" +Am +Qv +Qv +dR +yo +dR +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +qc +dR +sM +sM +sM +sM +sM +dR +Nv +Nv +Nv +Nv +Nv +sM +sM +sM +sM +Nv +Nv +Nv +Nv +Nv +Nv +qc +qc +sM +sM +sM +sM +sM +sM +Ug +sw +dR +dR +dR +sa +dR +dR +dR +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Am +"} +(27,1,1) = {" +Am +Qv +Qv +dR +yo +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sa +dR +sM +sM +sM +sM +dR +sM +sM +sM +sM +eB +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +dR +dR +kK +dR +dR +dR +sw +dR +dR +pL +pL +pL +pL +pL +Qv +Qv +Qv +Am +"} +(28,1,1) = {" +Am +Qv +Qv +sa +yo +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sa +dR +sM +sM +sM +sM +dR +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +kK +sa +dR +qc +qc +sa +sa +dR +kK +dR +pL +pL +pL +pL +pL +pL +Qv +Qv +Am +"} +(29,1,1) = {" +Am +Qv +Qv +sa +yo +yo +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +dR +sM +sM +sM +sM +MP +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +dR +qc +qc +qc +sa +sa +dR +dR +dR +pL +pL +pL +pL +pL +Qv +Qv +Qv +Am +"} +(30,1,1) = {" +Am +Qv +Qv +qc +dR +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +dR +sM +sM +sM +sM +no +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +yL +dR +dR +dR +kK +dR +dR +dR +dR +dR +dR +dR +dR +pL +pL +pL +Qv +Qv +Qv +Am +"} +(31,1,1) = {" +Am +Qv +pl +qc +dR +yo +sM +sM +sM +sM +sM +sM +sM +dR +dR +Nv +Nv +Nv +Nv +qc +sM +sM +sM +sM +dR +dR +sM +sM +sM +mx +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +cJ +yo +dR +dR +dR +dR +dR +kK +sa +sa +dR +dR +dR +dR +dR +dR +dR +dR +Qv +Am +"} +(32,1,1) = {" +Am +Qv +sM +sM +zn +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sw +dR +sM +sM +sM +cu +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +nj +yo +dR +kK +dR +dR +dR +kK +sa +sa +dR +dR +dR +dR +kK +dR +dR +Qv +Qv +Am +"} +(33,1,1) = {" +Am +Qv +sM +sM +hE +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +NM +sM +sM +sM +sM +sM +sM +sM +qc +dR +Nv +Nv +Nv +Nv +Nv +dR +dR +sw +sM +sM +sM +sM +sM +sM +sM +sM +yo +yo +dR +dR +sa +dR +sw +dR +dR +dR +dR +sa +sa +dR +dR +dR +dR +Qv +Qv +Am +"} +(34,1,1) = {" +Am +Qv +sM +sM +hE +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +sM +qc +yo +Nv +Nv +Nv +Nv +Nv +yo +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +yo +dR +dR +sa +dR +dR +dR +dR +kK +qc +dR +dR +dR +dR +dR +dR +dR +Qv +Am +"} +(35,1,1) = {" +Am +Qv +sM +sM +hE +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +qc +sa +sM +sM +sM +sM +sM +sM +qc +dR +sM +sM +sM +sM +sM +eB +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +yo +yo +dR +dR +dR +qc +qc +qc +qc +qc +dR +YT +YT +YT +YT +YT +vz +Qv +Am +"} +(36,1,1) = {" +Am +Qv +dR +sM +HU +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +sM +sM +sM +dR +qc +sM +sM +sw +dR +sM +sM +sM +sM +sM +sM +qc +dR +sM +sM +sM +sM +sM +kK +dR +qc +sM +sM +sM +sM +sM +sM +sM +sM +pl +dR +yo +dR +dR +dR +dR +dR +qc +qc +qc +dR +YT +YT +YT +YT +YT +YT +Qv +Am +"} +(37,1,1) = {" +Am +Qv +Qv +dR +dR +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +dR +dR +sM +sM +sM +sM +eB +dR +sa +sM +sM +sM +sM +sM +sM +sa +yo +dR +sM +sM +sM +sM +sM +sM +sM +yo +dR +yo +dR +dR +dR +dR +sw +qc +qc +dR +dR +YT +YT +YT +YT +YT +YT +Qv +Am +"} +(38,1,1) = {" +Am +Qv +Qv +dR +yo +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +dR +dR +sM +sM +sM +sM +dR +dR +qc +sM +sM +sM +sM +sM +sM +sM +yo +AI +Nv +Nv +Nv +Nv +Nv +Nv +Nv +yo +yo +yo +yo +yo +yo +dR +dR +yo +dR +yo +yo +YT +YT +YT +YT +YT +YT +Qv +Am +"} +(39,1,1) = {" +Am +Qv +Qv +dR +dR +dR +kK +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +pl +dR +dR +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +yo +AI +Nv +Nv +Nv +Nv +Nv +Nv +Nv +yo +yo +yo +yo +dR +yo +yo +yo +yo +yo +yo +yo +YT +YT +YT +YT +YT +YT +Qv +Am +"} +(40,1,1) = {" +Am +Qv +Qv +dR +yo +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +dR +dR +Nv +Nv +Nv +dR +kK +sM +sM +sM +sM +sM +sM +sM +sM +sw +dR +Nv +Nv +Nv +Nv +Nv +Nv +Nv +yo +yo +dR +dR +dR +yo +dR +yo +yo +yo +dR +yo +YT +YT +YT +YT +YT +YT +Qv +Am +"} +(41,1,1) = {" +Am +Qv +dR +sa +yo +dR +sa +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +qc +Tz +Nv +Nv +Nv +qc +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +dR +sw +dR +dR +dR +dR +dR +dR +dR +dR +YT +YT +YT +YT +YT +uJ +Qv +Am +"} +(42,1,1) = {" +Am +Qv +dR +AI +yo +yo +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pl +KA +dR +dR +dR +sa +sa +dR +qc +qc +qc +dR +dR +dR +dR +dR +dR +dR +Qv +Am +"} +(43,1,1) = {" +Am +Qv +yo +yo +VW +yo +yo +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sa +dR +dR +kK +sa +sa +dR +dR +qc +qc +qc +dR +sa +sa +dR +dR +dR +Qv +Am +"} +(44,1,1) = {" +Am +Qv +dR +yo +yo +yo +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sa +dR +sa +dR +dR +dR +dR +kK +qc +qc +qc +dR +sa +sa +dR +dR +dR +Qv +Am +"} +(45,1,1) = {" +Am +Qv +dR +dR +yo +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +dR +dR +dR +dR +kK +dR +dR +dR +dR +Qv +dR +Qv +dR +kK +dR +Qv +Qv +Am +"} +(46,1,1) = {" +Am +Qv +Qv +sa +dR +dR +sa +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +qc +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +kK +dR +dR +dR +dR +dR +dR +dR +dR +dR +dR +Qv +Qv +Qv +dR +dR +dR +Qv +Qv +Am +"} +(47,1,1) = {" +Am +Qv +Qv +dR +dR +YR +sa +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +dR +dR +qc +Nv +Nv +Nv +sM +sM +sM +sM +Nv +Nv +Nv +Nv +sM +sM +sM +Nv +Nv +Nv +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +dR +pL +dR +dR +dR +dR +dR +dR +Qv +Qv +Qv +Qv +Qv +dR +dR +dR +Qv +Qv +Am +"} +(48,1,1) = {" +Am +Qv +Qv +dR +kK +sa +YR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +dR +dR +dR +sw +sM +Nv +Nv +Nv +Nv +Nv +Nv +sM +sM +Nv +Nv +Nv +Nv +Nv +sM +Nv +Nv +Nv +qc +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +dR +dR +dR +dR +Qv +Qv +Qv +Qv +dR +sw +dR +dR +dR +Qv +Am +"} +(49,1,1) = {" +Am +Qv +Qv +dR +dR +YR +sa +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +eB +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +dR +dR +dR +dR +dR +pL +pL +Qv +Qv +Qv +Qv +dR +sw +dR +dR +Qv +Am +"} +(50,1,1) = {" +Am +Qv +Qv +sa +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sa +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +pl +sM +sM +sM +sM +sM +sM +dR +pL +pL +dR +dR +sa +dR +pL +pL +pL +pL +Qv +Qv +Qv +sw +eB +dR +dR +Qv +Am +"} +(51,1,1) = {" +Am +Qv +Qv +Qv +dR +sa +kK +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sa +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sa +sM +sM +sM +sM +sM +sM +dR +pL +dR +dR +kK +dR +dR +pL +pL +pL +pL +Qv +Qv +Qv +Qv +dR +dR +sa +Qv +Am +"} +(52,1,1) = {" +Am +Qv +Qv +Qv +dR +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +pL +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sa +sM +sM +sM +sM +sM +sM +dR +pL +dR +dR +dR +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +dR +dR +dR +Qv +Am +"} +(53,1,1) = {" +Am +Qv +Qv +Qv +dR +YR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sw +Dz +sM +sM +sM +sM +sM +pL +pL +pL +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +dR +dR +dR +sa +dR +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +dR +dR +Qv +Am +"} +(54,1,1) = {" +Am +Qv +Qv +Qv +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +jK +yJ +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +sM +sM +GX +dR +dR +pL +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sa +dR +sw +sa +dR +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +dR +Qv +Qv +Am +"} +(55,1,1) = {" +Am +Qv +Qv +dR +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +MT +be +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +dR +kK +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +dR +sw +eB +dR +dR +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +dR +dR +dR +Qv +Am +"} +(56,1,1) = {" +Am +Qv +Qv +dR +eB +sw +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +gB +xB +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +km +sw +eB +eB +sw +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +dR +dR +dR +Qv +Am +"} +(57,1,1) = {" +Am +Qv +Qv +dR +Lw +sa +sa +kK +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +Pl +Eh +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +dR +sw +dR +sM +sM +sM +sM +sM +sM +sM +sM +sa +eB +sM +sM +sM +sM +sM +pL +dR +eB +eB +dR +dR +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +dR +dR +dR +Qv +Am +"} +(58,1,1) = {" +Am +Qv +Qv +dR +sa +sa +YR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +hc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +Gn +eB +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +sw +sM +sM +sM +sM +sM +pL +GX +dR +pL +dR +dR +pL +pL +pL +pL +Qv +Qv +Qv +Qv +dR +sa +dR +dR +Qv +Am +"} +(59,1,1) = {" +Am +Qv +Qv +sa +YR +sa +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +qc +sM +sM +sM +dR +sM +sM +Nv +Nv +Nv +dR +sM +sM +sM +sM +sM +kK +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +pL +dR +dR +pL +dR +pL +pL +pL +pL +pL +pL +Qv +Qv +dR +dR +dR +Qv +Qv +Qv +Am +"} +(60,1,1) = {" +Am +Qv +Qv +dR +dR +sw +kK +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +dR +dR +Nv +Nv +Nv +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +kK +dR +qc +sM +sM +sM +sM +sM +pL +GX +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +dR +dR +dR +Qv +Qv +Qv +Am +"} +(61,1,1) = {" +Am +Qv +dR +kK +sw +eB +eB +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +dR +sM +sM +sM +sM +sM +dR +sa +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +dR +dR +dR +Qv +Qv +Qv +Qv +Am +"} +(62,1,1) = {" +Am +Qv +dR +sa +DY +eB +eB +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sa +dR +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sa +dR +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +dR +dR +Qv +Qv +Qv +Qv +Qv +Am +"} +(63,1,1) = {" +Am +Qv +dR +Lw +Lw +dR +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +eB +dR +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sa +dR +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +dR +Qv +Qv +dR +dR +dR +dR +Qv +Qv +Qv +Qv +Am +"} +(64,1,1) = {" +Am +Qv +dR +sa +sa +sw +kK +dR +sM +sM +sM +sM +sM +sM +sM +sM +sw +dR +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +eB +dR +dR +dR +sa +dR +sw +Qv +Qv +Qv +Qv +Qv +Am +"} +(65,1,1) = {" +Am +Qv +dR +dR +kK +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +qc +sM +sM +sM +sM +qc +sM +sM +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +Nv +Nv +Nv +Nv +Nv +Nv +dR +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +sw +sa +sa +dR +sw +sw +eB +Qv +Qv +Qv +Qv +Qv +Am +"} +(66,1,1) = {" +Am +Qv +dR +kK +sa +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +sa +dR +sM +sM +sM +sM +qc +sM +sM +sM +sM +sa +dR +sM +sM +sM +sM +sM +sw +dR +Nv +Nv +Nv +Nv +Nv +sM +sM +sM +Nv +Nv +dR +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +dR +sa +sa +dR +dR +dR +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(67,1,1) = {" +Am +Qv +dR +dR +YR +DY +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sa +dR +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +sa +dR +dR +dR +Qv +Qv +Qv +Qv +Qv +Am +"} +(68,1,1) = {" +Am +Qv +dR +dR +Lw +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +sM +sM +sM +dR +dR +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +sa +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +dR +dR +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(69,1,1) = {" +Am +Qv +Qv +dR +eB +sw +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +dR +Nv +Nv +Nv +dR +dR +sM +sM +sM +sM +sM +dR +sM +sM +sM +sM +sM +dR +qc +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(70,1,1) = {" +Am +Qv +Qv +Qv +dR +eB +sw +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +kK +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +Nv +dR +dR +dR +dR +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(71,1,1) = {" +Am +Qv +Qv +dR +sa +sa +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +dR +qc +dR +pl +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +Kl +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(72,1,1) = {" +Am +Qv +Qv +sa +sa +Lw +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(73,1,1) = {" +Am +Qv +Qv +Qv +dR +sw +dR +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +sM +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +pL +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(74,1,1) = {" +Am +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Qv +Am +"} +(75,1,1) = {" +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +Am +"} diff --git a/_maps/virtual_domains/syndicate_assault.dmm b/_maps/virtual_domains/syndicate_assault.dmm new file mode 100644 index 000000000000..770f0967404c --- /dev/null +++ b/_maps/virtual_domains/syndicate_assault.dmm @@ -0,0 +1,4265 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aq" = ( +/obj/item/storage/backpack/duffelbag/syndie/surgery, +/obj/structure/table/reinforced, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/powered/virtual_domain) +"aw" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"aN" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/plasteel/twenty, +/obj/item/stack/sheet/mineral/plastitanium{ + amount = 50 + }, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/rods/fifty, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"aO" = ( +/obj/machinery/recharge_station, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"aZ" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/mob/living/basic/syndicate/ranged/shotgun/space/stormtrooper, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"bh" = ( +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/powered/virtual_domain) +"bo" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"bD" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"bG" = ( +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"cc" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/effect/spawner/random/clothing/costume, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"cj" = ( +/obj/structure/transit_tube/crossing, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"ct" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_access = list("syndicate"); + secure = 1 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"cw" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_access = list("syndicate"); + secure = 1 + }, +/obj/item/clothing/under/syndicate/combat, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/shoes/combat, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/under/syndicate/skirt, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"cy" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"cB" = ( +/obj/machinery/camera/xray{ + c_tag = "Medbay"; + dir = 6; + network = list("fsci"); + screen_loc = "" + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/powered/virtual_domain) +"cR" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/powered/virtual_domain) +"cZ" = ( +/obj/structure/table/reinforced, +/obj/item/gun/ballistic/automatic/l6_saw/unrestricted, +/obj/item/ammo_box/magazine/m7mm, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"da" = ( +/obj/machinery/stasis, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/powered/virtual_domain) +"dd" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"di" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/obj/item/paper/fluff/ruins/forgottenship/powerissues, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"dw" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"dz" = ( +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"dU" = ( +/obj/structure/cable, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external/ruin{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"eB" = ( +/obj/machinery/camera/xray{ + c_tag = "Cargo pod"; + dir = 9; + network = list("fsci"); + screen_loc = "" + }, +/obj/structure/closet, +/obj/item/clothing/under/syndicate/tacticool, +/obj/item/clothing/under/syndicate/tacticool, +/obj/item/clothing/under/syndicate/tacticool, +/obj/item/card/id/advanced/black/syndicate_command/crew_id, +/obj/item/card/id/advanced/black/syndicate_command/crew_id, +/obj/item/card/id/advanced/black/syndicate_command/crew_id, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"fd" = ( +/obj/structure/transit_tube/crossing, +/turf/open/space/basic, +/area/space) +"fG" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/iron, +/area/ruin/space/has_grav/powered/virtual_domain) +"fJ" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"fM" = ( +/obj/machinery/computer/crew/syndie{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"fV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"gD" = ( +/obj/effect/mob_spawn/ghost_role/human/syndicatespace, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"hg" = ( +/obj/structure/window/reinforced/plasma/plastitanium, +/obj/machinery/door/poddoor{ + id = "fslockdown"; + name = "Ship Blast Door"; + state_open = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"hy" = ( +/obj/structure/table/reinforced, +/obj/item/paper/fluff/ruins/forgottenship/missionobj, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"hA" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"hD" = ( +/obj/structure/table/reinforced, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"ip" = ( +/mob/living/basic/syndicate/melee/sword/space/stormtrooper, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/powered/virtual_domain) +"iB" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"iL" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"iU" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/item/melee/energy/sword/saber/red, +/obj/machinery/light/small/directional/north, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"iW" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "fslockdown"; + name = "Window shutters"; + req_access = list("syndicate") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"iX" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/mob/living/basic/syndicate/ranged/smg/space/stormtrooper, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"ja" = ( +/obj/machinery/door/window{ + dir = 1; + name = "Spare Equipment"; + req_access = list("syndicate") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"jl" = ( +/obj/structure/bodycontainer/crematorium{ + id = "fscremate" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"jA" = ( +/obj/structure/cable, +/mob/living/basic/syndicate/melee/space/stormtrooper, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"jJ" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/iron/dark/side{ + dir = 1 + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"kh" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"ki" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/security/telescreen/interrogation{ + name = "Cameras monitor"; + network = list("fsci"); + req_access = list("syndicate"); + screen_loc = "" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"kI" = ( +/obj/machinery/computer/atmos_alert{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"kJ" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"li" = ( +/obj/structure/transit_tube/station/dispenser/reverse{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"ln" = ( +/obj/machinery/turretid{ + control_area = "/area/ruin/space/has_grav/syndicate_forgotten_ship"; + enabled = 0; + icon_state = "control_kill"; + lethal = 1; + name = "Ship turret control panel"; + pixel_y = 32; + req_access = list("syndicate") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"lo" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/external/ruin{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"lN" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"mo" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"mD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 10 + }, +/obj/item/wrench, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"nk" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/mapping_helpers/apc/syndicate_access, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"nB" = ( +/turf/closed/mineral/random, +/area/space) +"nG" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"nO" = ( +/obj/machinery/mineral/ore_redemption{ + name = "Syndicate ore redemption machine"; + ore_multiplier = 4; + req_access = list("syndicate") + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"nU" = ( +/obj/structure/sign/poster/contraband/syndicate_pistol, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"oM" = ( +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"oZ" = ( +/mob/living/basic/syndicate/melee/sword/space/stormtrooper, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/powered/virtual_domain) +"pl" = ( +/obj/machinery/atmospherics/components/tank/air{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"pz" = ( +/obj/machinery/computer/security{ + desc = "Used to access interrogation room camera."; + dir = 8; + name = "Ship cameras console"; + network = list("fsc","fsci"); + screen_loc = "" + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"pH" = ( +/obj/structure/table/reinforced, +/obj/item/toy/plush/nukeplushie, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"pM" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"pS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 6 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"pU" = ( +/obj/machinery/shower/directional/north, +/obj/machinery/light/directional/south, +/turf/open/floor/iron, +/area/ruin/space/has_grav/powered/virtual_domain) +"qf" = ( +/obj/structure/table/optable, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/powered/virtual_domain) +"qx" = ( +/turf/open/space/basic, +/area/space) +"qU" = ( +/obj/structure/sign/poster/contraband/c20r, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"qY" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"rm" = ( +/obj/machinery/button/crematorium{ + id = "fscremate"; + pixel_x = -32 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"ru" = ( +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"rH" = ( +/obj/machinery/airalarm/directional/north, +/obj/effect/mapping_helpers/airalarm/syndicate_access, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"rM" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_access = list("syndicate"); + secure = 1 + }, +/obj/effect/spawner/random/contraband/armory, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"rP" = ( +/obj/effect/mob_spawn/ghost_role/human/syndicatespace, +/obj/machinery/light/small/directional/south, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"sg" = ( +/obj/machinery/ore_silo, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"sq" = ( +/obj/machinery/door/window{ + name = "Control Room"; + req_access = list("syndicate") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"sz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"sH" = ( +/obj/structure/displaycase{ + req_access = list("syndicate"); + start_showpiece_type = /obj/item/gun/ballistic/automatic/pistol/deagle/camo + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"sK" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/item/stack/sheet/mineral/titanium{ + amount = 40 + }, +/obj/item/stack/sheet/mineral/uranium{ + amount = 15 + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"sL" = ( +/obj/structure/chair/comfy, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"sM" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"tv" = ( +/obj/structure/table/reinforced, +/obj/machinery/button/door{ + id = "fscaproom"; + name = "Room shutters control"; + req_access = list("syndicate") + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"tI" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"uP" = ( +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"vp" = ( +/obj/structure/table/reinforced, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"vD" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"vK" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"vU" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"wb" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2, +/obj/machinery/portable_atmospherics/scrubber{ + anchored = 1 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"we" = ( +/turf/closed/mineral/random/high_chance, +/area/space) +"wK" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"wL" = ( +/obj/structure/table/reinforced, +/obj/item/storage/medkit/regular, +/obj/machinery/light/small/directional/north, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"xJ" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_access = list("syndicate"); + secure = 1 + }, +/obj/item/ammo_box/c9mm, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"xZ" = ( +/obj/machinery/computer/camera_advanced/syndie{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"yl" = ( +/obj/machinery/door/airlock/grunge{ + name = "Captain's Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/poddoor{ + id = "fscaproom"; + name = "Captain's Blast Door"; + state_open = 1 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"yD" = ( +/mob/living/basic/syndicate/ranged/smg/space/stormtrooper, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"yJ" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"yR" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"yT" = ( +/obj/item/ai_module/core/full/cybersun, +/obj/structure/table/reinforced, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"yV" = ( +/obj/structure/table/reinforced, +/obj/item/assembly/prox_sensor, +/obj/item/assembly/prox_sensor, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"yZ" = ( +/turf/closed/mineral, +/area/space) +"zi" = ( +/obj/machinery/vending/cigarette/syndicate, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"zt" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"Aa" = ( +/obj/structure/chair/comfy/shuttle, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"AN" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/mob/living/basic/syndicate/ranged/smg/space/stormtrooper, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Bm" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"BK" = ( +/obj/structure/lattice/catwalk, +/obj/structure/cable, +/turf/open/space/basic, +/area/space) +"BN" = ( +/obj/structure/transit_tube/crossing, +/turf/template_noop, +/area/virtual_domain/safehouse) +"Cf" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Ci" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_access = list("syndicate"); + secure = 1 + }, +/obj/item/crowbar/red, +/obj/item/ammo_box/magazine/m9mm_aps, +/obj/item/ammo_box/magazine/m9mm_aps, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/powered/virtual_domain) +"Cn" = ( +/obj/machinery/camera/xray/directional/east{ + c_tag = "Conference room"; + network = list("fsc"); + screen_loc = "" + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"CK" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/mob/living/basic/syndicate/ranged/smg/pilot, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"CR" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_access = list("syndicate"); + secure = 1 + }, +/obj/item/coin/antagtoken, +/obj/item/dnainjector/thermal, +/obj/item/storage/box/firingpins/syndicate, +/obj/item/storage/box/firingpins/syndicate, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"De" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"Dj" = ( +/obj/structure/table/reinforced, +/obj/item/ammo_box/magazine/smgm45, +/obj/item/ammo_box/magazine/smgm45, +/obj/item/ammo_box/magazine/smgm45, +/obj/item/gun/ballistic/automatic/c20r/unrestricted, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"DA" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"EB" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"EX" = ( +/mob/living/basic/syndicate/ranged/shotgun/space/stormtrooper, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Fp" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"FN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Gn" = ( +/obj/structure/chair/comfy{ + dir = 1 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Gs" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"GB" = ( +/obj/structure/cable, +/obj/machinery/door/airlock/external/ruin{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"GZ" = ( +/obj/machinery/door/airlock/external/ruin{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Hq" = ( +/turf/closed/indestructible/binary, +/area/space) +"HU" = ( +/obj/machinery/door/airlock/grunge{ + name = "Bridge" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"Ia" = ( +/obj/effect/mob_spawn/ghost_role/human/syndicatespace/captain, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/powered/virtual_domain) +"Id" = ( +/obj/machinery/power/shuttle_engine/huge{ + dir = 8 + }, +/turf/open/space/basic, +/area/ruin/space/has_grav/powered/virtual_domain) +"If" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 9 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"Ig" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 4; + name = "Syndicate Ship Turret"; + on = 0; + shot_delay = 10 + }, +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/space/has_grav/powered/virtual_domain) +"Im" = ( +/obj/structure/table/reinforced, +/obj/item/ammo_box/c9mm, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Io" = ( +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"IC" = ( +/obj/structure/table/reinforced, +/obj/item/paper, +/obj/item/pen, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/powered/virtual_domain) +"IH" = ( +/obj/machinery/door/airlock/external/ruin{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/structure/cable, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/ruin/space/has_grav/powered/virtual_domain) +"IV" = ( +/obj/machinery/door/airlock/grunge{ + name = "Syndicate Ship Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/plating, +/area/ruin/space/has_grav/powered/virtual_domain) +"Jg" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"Jz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 5 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"JA" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"JN" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 5 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"JP" = ( +/obj/structure/sink/directional/south, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Kz" = ( +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"Lk" = ( +/obj/structure/transit_tube/crossing, +/turf/closed/mineral/random, +/area/space) +"Lo" = ( +/obj/structure/filingcabinet, +/obj/machinery/door/window{ + dir = 8; + name = "Syndicate Interior Door"; + req_access = list("syndicate") + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"Mc" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_access = list("syndicate"); + secure = 1 + }, +/obj/item/crowbar/red, +/obj/item/ammo_box/magazine/m9mm, +/obj/item/ammo_box/magazine/m9mm, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Mm" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_access = list("syndicate"); + secure = 1 + }, +/obj/item/clothing/head/hats/hos/beret/syndicate, +/obj/item/clothing/suit/armor/vest/capcarapace/syndicate, +/obj/item/clothing/mask/gas/syndicate, +/obj/item/clothing/under/syndicate, +/obj/item/clothing/under/syndicate/skirt, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/shoes/combat, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"MR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"Nm" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Nr" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/item/stack/sheet/mineral/gold{ + amount = 30 + }, +/obj/item/stack/sheet/mineral/silver{ + amount = 30 + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Nt" = ( +/obj/structure/table/reinforced, +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Of" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/item/disk/surgery/forgottenship, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Ox" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"OH" = ( +/obj/structure/cable, +/obj/structure/table/reinforced, +/obj/item/storage/toolbox/syndicate, +/obj/item/storage/toolbox/syndicate, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"OI" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"PR" = ( +/obj/machinery/door/password/voice/sfc{ + password = null + }, +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/grunge{ + desc = "Vault airlock preventing air from going out."; + name = "Syndicate Vault Airlock" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Qg" = ( +/obj/machinery/suit_storage_unit/syndicate{ + helmet_type = /obj/item/clothing/head/helmet/space/syndicate/black; + suit_type = /obj/item/clothing/suit/space/syndicate/black + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Qi" = ( +/obj/item/stack/sheet/mineral/uranium{ + amount = 15 + }, +/obj/structure/cable, +/obj/machinery/light/small/directional/north, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"QF" = ( +/obj/structure/table/reinforced, +/obj/item/dualsaber/green, +/obj/machinery/light/small/directional/east, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"QG" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/closed/mineral/random, +/area/space) +"QX" = ( +/mob/living/basic/syndicate/ranged/space/stormtrooper, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Ra" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2, +/obj/machinery/light/small/directional/north, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"RQ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"RU" = ( +/obj/machinery/suit_storage_unit/syndicate, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Sc" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ + dir = 4 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Sd" = ( +/obj/structure/closet/syndicate{ + anchored = 1; + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; + req_access = list("syndicate"); + secure = 1 + }, +/obj/item/crowbar/red, +/obj/item/ammo_box/magazine/m9mm, +/obj/item/ammo_box/magazine/m9mm, +/obj/machinery/light/small/directional/north, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Sq" = ( +/obj/machinery/power/smes, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"Sv" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/effect/spawner/random/food_or_drink/donkpockets, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Sz" = ( +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"SX" = ( +/obj/machinery/vending/medical/syndicate_access/cybersun, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/powered/virtual_domain) +"TB" = ( +/turf/closed/indestructible/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"UQ" = ( +/obj/structure/sign/poster/contraband/syndicate_recruitment, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"Vk" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 4; + name = "Syndicate Ship Turret"; + on = 0; + shot_delay = 10 + }, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"Vq" = ( +/obj/structure/transit_tube/station/dispenser/reverse{ + dir = 8 + }, +/turf/template_noop, +/area/virtual_domain/safehouse) +"Wd" = ( +/obj/structure/sign/poster/contraband/tools, +/turf/closed/wall/r_wall/syndicate, +/area/ruin/space/has_grav/powered/virtual_domain) +"Wy" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/item/stack/ore/plasma{ + amount = 19 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"WR" = ( +/obj/machinery/power/port_gen/pacman/super{ + anchored = 1 + }, +/obj/structure/cable, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) +"Xp" = ( +/turf/open/space/basic, +/area/ruin/space/has_grav/powered/virtual_domain) +"XS" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Yb" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/item/clothing/head/helmet/space/syndicate/black/engie, +/obj/item/clothing/suit/space/syndicate/black/engie, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Yi" = ( +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/powered/virtual_domain) +"Yj" = ( +/obj/structure/closet/crate/secure/gear{ + req_access = list("syndicate") + }, +/obj/item/stack/ore/diamond{ + amount = 3 + }, +/turf/open/floor/mineral/plastitanium, +/area/ruin/space/has_grav/powered/virtual_domain) +"Yk" = ( +/obj/machinery/door/airlock/grunge{ + name = "Captain's Room" + }, +/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, +/obj/machinery/door/poddoor{ + id = "fscaproom"; + name = "Captain's Blast Door"; + state_open = 1 + }, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/powered/virtual_domain) +"Yr" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"Yu" = ( +/obj/structure/chair/comfy/black, +/turf/open/floor/carpet/royalblack, +/area/ruin/space/has_grav/powered/virtual_domain) +"YV" = ( +/obj/structure/sink/directional/south, +/obj/structure/mirror/directional/west, +/turf/open/floor/iron/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Za" = ( +/obj/machinery/computer/operating, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/powered/virtual_domain) +"Zb" = ( +/turf/open/floor/plastic, +/area/ruin/space/has_grav/powered/virtual_domain) +"ZA" = ( +/obj/machinery/power/shuttle_engine/propulsion{ + dir = 8 + }, +/turf/open/space/basic, +/area/ruin/space/has_grav/powered/virtual_domain) + +(1,1,1) = {" +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +"} +(2,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(3,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(4,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(5,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(6,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(7,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(8,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +we +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(9,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(10,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Xp +Xp +Id +qx +qx +Xp +Xp +Id +qx +qx +Xp +Xp +Id +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(11,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Xp +Xp +Xp +qx +qx +Xp +Xp +Xp +qx +qx +Xp +Xp +Xp +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(12,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +ZA +Xp +Xp +Xp +ZA +ZA +Xp +Xp +Xp +ZA +ZA +Xp +Xp +Xp +ZA +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +we +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(13,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +ru +ru +ru +ru +ru +ru +ru +ru +ru +ru +ru +ru +ru +ru +ru +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +we +we +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(14,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +Vk +ru +Sv +vD +uP +uP +Yj +vD +uP +Wy +DA +uP +QX +vD +cc +ru +Vk +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(15,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +Io +uP +uP +QX +lN +uP +uP +uP +uP +uP +lN +uP +uP +uP +uP +hA +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(16,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +ru +ru +ru +ru +ru +ru +ru +IV +ru +ru +ru +IV +ru +ru +ru +ru +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(17,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +ru +vp +ru +Ia +Ci +ru +Sq +di +WR +ru +yV +Gn +uP +Mc +uP +ru +qx +qx +qx +qx +qx +qx +qx +qx +qx +nB +we +nB +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(18,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +vp +Jg +ru +bh +cR +ru +Qi +sz +Kz +ru +Mc +gD +yD +uP +rP +ru +qx +qx +qx +qx +qx +qx +qx +nB +nB +nB +nB +nB +nB +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(19,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +sH +Kz +yl +oZ +bh +Yk +pS +RQ +Jz +vK +uP +uP +uP +sL +hy +ru +qx +qx +qx +qx +qx +qx +nB +nB +TB +TB +TB +TB +nB +nB +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(20,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +CR +Kz +ru +bh +bh +Yk +pM +zt +pM +vK +uP +uP +EX +sL +Im +ru +qx +qx +qx +qx +qx +nB +nB +TB +TB +Yb +Yb +TB +Bm +nB +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(21,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +yT +Kz +ru +Yu +IC +ru +mD +JN +MR +ru +Sd +gD +uP +uP +gD +ru +qx +qx +qx +qx +nB +QG +nB +TB +aN +bG +bG +sK +TB +nB +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(22,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +Ig +ru +Lo +ru +tv +ki +nU +wb +EB +pl +ru +hD +Gn +uP +Mc +ru +Ig +qx +qx +qx +qx +nB +we +nB +TB +iU +bG +bG +Nr +TB +nB +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(23,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +ru +ru +ru +ru +ru +ru +ru +cy +ru +ru +ru +ru +ru +ru +ru +qx +qx +qx +qx +qx +qx +nB +nB +TB +Nm +bG +bG +Of +TB +nB +nB +qx +qx +qx +qx +qx +qx +qx +sM +sM +sM +sM +sM +kJ +qx +Hq +"} +(24,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +ru +Za +Yi +Zb +SX +ru +uP +yR +uP +ru +YV +Sz +jJ +fG +ru +qx +qx +qx +qx +qx +nB +nB +nB +TB +TB +PR +TB +TB +TB +nB +nB +nB +qx +qx +qx +qx +qx +qx +sM +sM +sM +sM +sM +sM +qx +Hq +"} +(25,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +ru +qf +Zb +ip +da +ru +Ra +Sc +uP +ru +JP +qY +ru +ru +ru +qx +qx +qx +qx +qx +nB +nB +we +ru +ru +uP +sg +ru +ru +nB +nB +nB +nB +qx +qx +qx +qx +qx +sM +sM +sM +sM +sM +sM +qx +Hq +"} +(26,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +ru +aq +cB +Zb +Zb +De +Ox +Gs +uP +wK +Sz +Sz +jJ +pU +ru +qx +qx +qx +qx +qx +qx +nB +nB +qU +Fp +uP +uP +li +cj +Lk +Lk +fd +fd +fd +fd +fd +fd +fd +BN +Vq +sM +sM +sM +sM +qx +Hq +"} +(27,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +Vk +ru +ru +ru +ru +ru +ru +ru +kh +ru +ru +ru +ru +ru +ru +ru +Vk +qx +qx +qx +qx +qx +nB +nB +ru +eB +uP +nO +uP +ru +nB +qx +qx +qx +qx +qx +qx +qx +qx +sM +sM +sM +sM +sM +sM +qx +Hq +"} +(28,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +jl +rm +ru +nk +oM +oM +oM +yR +oM +oM +oM +uP +ru +uP +Qg +ru +qx +qx +qx +qx +qx +qx +nB +ru +wL +oM +uP +dw +ru +yZ +nB +nB +nB +qx +qx +qx +qx +qx +sM +sM +sM +sM +sM +sM +qx +Hq +"} +(29,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +uP +dw +ru +rH +uP +AN +JA +iX +JA +JA +oM +uP +ru +fJ +Qg +ru +qx +qx +qx +qx +qx +qx +qx +Wd +OH +oM +uP +RU +ru +we +nB +nB +qx +qx +qx +qx +qx +qx +sM +sM +sM +sM +sM +Yr +qx +Hq +"} +(30,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +lo +uP +uP +GZ +uP +Aa +hD +yJ +bD +hD +hD +OI +oM +GB +jA +oM +dU +BK +BK +BK +BK +BK +BK +BK +IH +oM +oM +uP +RU +ru +nB +nB +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(31,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +uP +uP +dd +uP +Aa +hD +Nt +aw +hD +hD +bo +uP +dd +uP +Qg +ru +qx +qx +qx +qx +qx +qx +qx +iL +cZ +uP +uP +RU +ru +nB +nB +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(32,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +aO +uP +ru +XS +uP +uP +hD +aZ +hD +uP +uP +Cf +ru +uP +Fp +ru +qx +qx +qx +qx +qx +qx +nB +ru +ru +Dj +QF +ru +ru +nB +nB +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(33,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +Ig +ru +hD +ru +zi +uP +uP +uP +FN +Cn +uP +uP +uP +ru +hD +ru +Ig +qx +qx +qx +qx +qx +nB +nB +nB +ru +ru +ru +ru +nB +nB +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(34,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +ru +ru +ru +ru +ru +ru +ru +HU +ru +ru +ru +ru +ru +ru +ru +qx +qx +qx +qx +qx +qx +qx +nB +nB +nB +nB +we +nB +nB +nB +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(35,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +UQ +rM +xJ +Kz +Kz +tI +Kz +Kz +ct +xJ +ru +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +nB +nB +nB +nB +nB +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(36,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +ru +ru +ru +Kz +Kz +Kz +Kz +tI +Kz +Kz +Kz +Kz +ru +ru +ru +ru +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(37,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +ln +Kz +ru +iB +Kz +Kz +fV +If +Kz +Kz +Kz +nG +ru +cw +cw +ru +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(38,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +ru +Kz +dz +sq +Kz +CK +Kz +vU +mo +vU +Kz +CK +Kz +ja +Kz +Jg +ru +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(39,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +Ig +ru +Kz +ru +Kz +pz +Kz +xZ +Kz +fM +Kz +kI +Kz +ru +Mm +ru +Ig +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(40,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +ru +ru +ru +Kz +Kz +Kz +Kz +Kz +Kz +Kz +Kz +Kz +ru +ru +ru +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(41,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +ru +ru +vp +vp +pH +vp +iW +vp +vp +vp +vp +ru +ru +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(42,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Ig +hg +hg +hg +hg +hg +hg +hg +hg +hg +Ig +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +we +we +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(43,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +we +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(44,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(45,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +we +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(46,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +we +we +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(47,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +we +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(48,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(49,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(50,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(51,1,1) = {" +Hq +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +qx +Hq +"} +(52,1,1) = {" +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +Hq +"} diff --git a/_maps/virtual_domains/test_only.dmm b/_maps/virtual_domains/test_only.dmm new file mode 100644 index 000000000000..22b647188b6e --- /dev/null +++ b/_maps/virtual_domains/test_only.dmm @@ -0,0 +1,52 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/floor, +/area/virtual_domain/powered) +"D" = ( +/obj/effect/mob_spawn/corpse/human/miner, +/turf/open/floor, +/area/virtual_domain/powered) +"I" = ( +/mob/living/basic/pet/dog/corgi, +/turf/open/floor, +/area/virtual_domain/powered) +"U" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/open/floor, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +I +a +a +a +U +"} +(2,1,1) = {" +D +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +a +a +"} diff --git a/_maps/virtual_domains/vaporwave.dmm b/_maps/virtual_domains/vaporwave.dmm new file mode 100644 index 000000000000..6667692fdb2e --- /dev/null +++ b/_maps/virtual_domains/vaporwave.dmm @@ -0,0 +1,1015 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/space/basic, +/area/space) +"b" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cup/glass/drinkingglass{ + pixel_x = 6; + pixel_y = 4 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass, +/obj/item/reagent_containers/cup/glass/drinkingglass{ + pixel_x = -6; + pixel_y = 8 + }, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"c" = ( +/obj/effect/turf_decal/sand, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/powered/virtual_domain) +"d" = ( +/obj/structure/window/spawner/directional/east, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"e" = ( +/turf/open/floor/holofloor/beach/coast, +/area/ruin/space/has_grav/powered/virtual_domain) +"f" = ( +/obj/item/statuebust, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"g" = ( +/turf/closed/wall/rust, +/area/ruin/space/has_grav/powered/virtual_domain) +"h" = ( +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"i" = ( +/obj/structure/flora/tree/palm, +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/powered/virtual_domain) +"j" = ( +/obj/item/instrument/eguitar, +/turf/open/floor/holofloor/beach, +/area/ruin/space/has_grav/powered/virtual_domain) +"k" = ( +/obj/structure/window/spawner/directional/west, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"l" = ( +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/exotic/technology, +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/powered/virtual_domain) +"m" = ( +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"n" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"o" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"p" = ( +/obj/machinery/light/small/directional/south, +/obj/structure/table/reinforced, +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"q" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"r" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/sand, +/turf/open/floor/iron/airless, +/area/ruin/space/has_grav/powered/virtual_domain) +"s" = ( +/obj/structure/window/spawner/directional/east, +/obj/structure/table/reinforced, +/obj/item/storage/fancy/cigarettes/cigars/havana, +/obj/effect/spawner/random/special_lighter, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"t" = ( +/mob/living/basic/butterfly, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"u" = ( +/turf/closed/indestructible/binary, +/area/space) +"v" = ( +/obj/structure/closet/crate/bin, +/obj/item/tape/random, +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/powered/virtual_domain) +"w" = ( +/obj/structure/table/reinforced, +/obj/item/taperecorder, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"x" = ( +/turf/open/floor/holofloor/beach, +/area/ruin/space/has_grav/powered/virtual_domain) +"y" = ( +/obj/structure/statue/sandstone/venus{ + anchored = 1; + dir = 4 + }, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"z" = ( +/obj/structure/statue/sandstone/venus{ + anchored = 1; + desc = "Ugh, this is merely an ugly amateurish replica of the other statue! The letters RIPGOAT are scribbled onto the base."; + dir = 8 + }, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"A" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"B" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"C" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/turf/template_noop, +/area/virtual_domain/safehouse) +"D" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"E" = ( +/turf/open/floor/holofloor/beach/water, +/area/ruin/space/has_grav/powered/virtual_domain) +"F" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"G" = ( +/obj/effect/turf_decal/sand, +/turf/open/floor/iron/airless{ + icon_state = "recharge_floor_asteroid" + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"H" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"I" = ( +/obj/structure/lattice, +/turf/open/space/basic, +/area/space) +"J" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/wall/rust, +/area/ruin/space/has_grav/powered/virtual_domain) +"K" = ( +/obj/effect/turf_decal/sand, +/turf/open/floor/iron/airless{ + icon_state = "stairs-l" + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"L" = ( +/obj/effect/turf_decal/stripes/asteroid/line, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating{ + initial_gas_mix = "TEMP=2.7" + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"M" = ( +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/powered/virtual_domain) +"N" = ( +/obj/item/tank/internals/emergency_oxygen, +/obj/item/tank/internals/emergency_oxygen, +/turf/template_noop, +/area/virtual_domain/safehouse) +"O" = ( +/obj/structure/lattice, +/turf/open/floor/plating/airless, +/area/ruin/space/has_grav/powered/virtual_domain) +"P" = ( +/obj/effect/turf_decal/sand, +/turf/open/floor/iron/airless{ + icon_state = "stairs-r" + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"Q" = ( +/obj/structure/window/spawner/directional/east, +/obj/structure/closet/crate/secure/bitrunning/encrypted, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"R" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/powered/virtual_domain) +"S" = ( +/obj/effect/spawner/random/structure/musician/piano/random_piano, +/obj/structure/window/spawner/directional/west, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"T" = ( +/obj/structure/lattice, +/turf/open/misc/asteroid/airless, +/area/ruin/space/has_grav/powered/virtual_domain) +"U" = ( +/obj/effect/turf_decal/sand, +/turf/open/floor/iron/airless{ + icon_state = "stairs-m" + }, +/area/ruin/space/has_grav/powered/virtual_domain) +"V" = ( +/obj/structure/chair/stool/directional/west, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"W" = ( +/obj/structure/table/reinforced, +/obj/item/clothing/glasses/sunglasses/big{ + name = "aesthetic sunglasses" + }, +/turf/open/floor/iron/vaporwave, +/area/ruin/space/has_grav/powered/virtual_domain) +"X" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/hatch, +/turf/open/floor/pod/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Y" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"Z" = ( +/obj/structure/flora/tree/palm, +/turf/open/floor/holofloor/beach, +/area/ruin/space/has_grav/powered/virtual_domain) + +(1,1,1) = {" +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +"} +(2,1,1) = {" +u +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(3,1,1) = {" +u +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(4,1,1) = {" +u +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(5,1,1) = {" +u +a +a +a +a +a +a +M +T +M +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(6,1,1) = {" +u +a +a +a +a +a +M +M +T +M +M +T +M +M +a +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(7,1,1) = {" +u +a +a +a +a +M +M +M +O +T +M +O +M +M +M +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(8,1,1) = {" +u +a +a +a +a +M +R +R +g +g +g +R +g +H +M +M +a +a +a +a +a +a +a +a +a +a +a +u +"} +(9,1,1) = {" +u +a +a +a +T +l +R +Z +x +Z +e +E +R +A +M +M +a +a +a +a +a +a +a +a +a +a +a +u +"} +(10,1,1) = {" +u +a +a +a +T +O +g +S +k +k +k +k +R +m +i +M +M +a +a +a +D +D +D +D +D +B +a +u +"} +(11,1,1) = {" +u +a +a +a +M +M +R +V +h +h +f +F +R +z +r +H +M +a +a +a +D +C +C +C +D +D +a +u +"} +(12,1,1) = {" +u +a +a +a +M +M +R +h +h +h +h +h +R +G +K +r +M +a +a +a +D +D +D +D +D +D +a +u +"} +(13,1,1) = {" +u +a +a +a +M +T +R +o +o +h +h +h +X +c +U +c +r +a +a +a +D +D +D +D +D +D +a +u +"} +(14,1,1) = {" +u +a +a +a +M +T +g +w +W +h +h +b +R +G +P +c +r +a +a +a +D +D +D +D +D +D +a +u +"} +(15,1,1) = {" +u +a +a +a +M +T +g +q +n +h +t +p +g +y +r +H +H +a +a +a +D +D +D +D +N +D +a +u +"} +(16,1,1) = {" +u +a +a +a +T +O +R +Q +d +d +d +s +R +L +i +M +M +a +a +a +D +D +D +D +D +Y +a +u +"} +(17,1,1) = {" +u +a +a +a +M +M +g +Z +j +Z +e +E +g +A +M +M +a +a +a +a +a +a +a +a +a +a +a +u +"} +(18,1,1) = {" +u +a +a +a +M +M +R +R +g +R +g +g +J +H +M +M +a +a +a +a +a +a +a +a +a +a +a +u +"} +(19,1,1) = {" +u +a +a +a +a +M +M +M +O +T +v +O +M +M +M +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(20,1,1) = {" +u +a +a +a +a +a +a +M +T +M +M +T +M +M +M +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(21,1,1) = {" +u +a +a +a +a +a +a +a +I +M +M +M +M +a +a +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(22,1,1) = {" +u +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(23,1,1) = {" +u +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(24,1,1) = {" +u +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +u +"} +(25,1,1) = {" +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +u +"} diff --git a/_maps/virtual_domains/wendigo.dmm b/_maps/virtual_domains/wendigo.dmm new file mode 100644 index 000000000000..17bcb48d688b --- /dev/null +++ b/_maps/virtual_domains/wendigo.dmm @@ -0,0 +1,1373 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"b" = ( +/turf/closed/indestructible/rock/snow/ice/ore, +/area/icemoon/underground/explored/virtual_domain) +"e" = ( +/turf/open/misc/asteroid/snow/ice/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"f" = ( +/obj/structure/marker_beacon/olive, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"i" = ( +/turf/closed/indestructible/binary, +/area/icemoon/underground/explored/virtual_domain) +"o" = ( +/obj/structure/marker_beacon/indigo, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"p" = ( +/obj/structure/marker_beacon/bronze, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"q" = ( +/obj/structure/marker_beacon/yellow, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"t" = ( +/obj/structure/marker_beacon/teal, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"x" = ( +/obj/structure/marker_beacon/burgundy, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"A" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"E" = ( +/obj/effect/mob_spawn/corpse/human/miner, +/turf/open/misc/asteroid/snow/ice/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"H" = ( +/mob/living/simple_animal/hostile/megafauna/wendigo/virtual_domain, +/turf/open/indestructible/necropolis{ + initial_gas_mix = "ICEMOON_ATMOS" + }, +/area/icemoon/underground/explored/virtual_domain) +"L" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/icemoon/underground/explored/virtual_domain) +"R" = ( +/obj/item/paper/crumpled/bloody{ + default_raw_text = "for your own sake, do not enter" + }, +/turf/open/misc/asteroid/snow/ice/icemoon, +/area/icemoon/underground/explored/virtual_domain) +"S" = ( +/turf/template_noop, +/area/template_noop) +"V" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"Z" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +S +S +S +S +S +S +i +i +i +i +i +i +i +i +i +i +i +i +i +i +i +i +i +S +S +S +S +S +S +S +S +S +S +S +S +S +S +"} +(2,1,1) = {" +S +S +S +S +S +i +i +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +i +i +S +S +S +S +S +S +S +S +S +S +S +S +S +"} +(3,1,1) = {" +S +S +S +S +i +i +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +i +i +S +S +S +S +S +S +S +S +S +S +S +S +"} +(4,1,1) = {" +S +S +S +i +i +e +e +e +b +b +b +b +b +e +e +e +b +b +b +b +b +e +e +e +i +i +S +S +S +S +S +S +S +S +S +S +S +"} +(5,1,1) = {" +S +S +i +i +e +e +e +b +b +b +b +b +b +b +e +b +b +b +b +b +b +b +e +e +e +i +i +i +i +i +i +i +i +i +i +i +L +"} +(6,1,1) = {" +S +i +i +e +e +e +b +b +b +b +b +b +b +b +e +b +b +b +b +b +b +b +b +e +e +e +i +i +e +e +e +e +e +e +e +e +i +"} +(7,1,1) = {" +i +i +e +e +e +b +b +b +b +b +b +b +b +b +e +b +b +b +b +b +b +b +b +b +e +e +e +i +e +e +e +e +e +e +e +e +i +"} +(8,1,1) = {" +i +e +e +e +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +e +e +e +e +e +e +e +e +e +e +e +i +"} +(9,1,1) = {" +i +e +e +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +e +e +e +e +e +e +e +e +e +e +i +"} +(10,1,1) = {" +i +e +e +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +b +b +e +e +e +e +e +e +e +e +e +e +i +"} +(11,1,1) = {" +i +e +E +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +o +a +a +b +b +b +b +e +e +e +e +e +e +e +e +e +e +i +"} +(12,1,1) = {" +i +e +e +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +e +e +e +e +e +e +e +e +e +e +i +"} +(13,1,1) = {" +i +e +e +b +b +b +a +a +a +a +q +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +e +e +e +e +e +e +e +e +e +e +i +"} +(14,1,1) = {" +i +e +e +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +e +e +e +V +V +V +V +V +Z +e +i +"} +(15,1,1) = {" +i +e +e +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +E +e +e +V +V +V +V +V +V +e +i +"} +(16,1,1) = {" +i +e +e +e +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +e +e +e +e +V +V +V +V +V +V +e +i +"} +(17,1,1) = {" +i +e +e +e +e +e +a +a +a +a +a +a +a +a +H +a +a +a +a +x +a +a +a +e +e +e +e +R +e +V +V +V +V +V +V +e +i +"} +(18,1,1) = {" +i +e +e +e +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +e +e +e +e +V +V +V +V +V +V +e +i +"} +(19,1,1) = {" +i +e +e +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +e +e +e +V +V +V +V +V +V +e +i +"} +(20,1,1) = {" +i +e +e +b +b +b +a +a +a +a +a +a +a +a +p +a +a +a +a +a +a +a +a +b +b +b +e +e +e +V +V +V +V +V +A +e +i +"} +(21,1,1) = {" +i +e +e +b +b +b +a +a +a +a +f +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +e +e +e +e +e +e +e +e +e +e +i +"} +(22,1,1) = {" +i +e +e +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +e +e +e +e +e +e +e +e +e +e +i +"} +(23,1,1) = {" +i +e +e +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +t +a +b +b +b +b +e +e +e +e +e +e +e +e +e +e +i +"} +(24,1,1) = {" +i +e +e +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +a +a +b +b +b +b +b +e +e +e +e +e +e +e +e +e +e +i +"} +(25,1,1) = {" +i +e +e +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +e +e +e +e +e +e +e +e +e +e +i +"} +(26,1,1) = {" +i +e +e +e +b +b +b +b +b +b +a +a +a +a +a +a +a +a +a +b +b +b +b +b +b +e +e +e +e +e +e +e +e +e +e +e +i +"} +(27,1,1) = {" +i +i +e +e +e +b +b +b +b +b +b +b +b +b +e +b +b +b +b +b +b +b +b +b +e +e +e +i +e +e +e +e +e +e +e +e +i +"} +(28,1,1) = {" +S +i +i +e +e +e +b +b +b +b +b +b +b +b +e +b +b +b +b +b +b +b +b +e +e +e +i +i +e +e +e +e +e +e +e +e +i +"} +(29,1,1) = {" +S +S +i +i +e +e +e +b +b +b +b +b +b +b +e +b +b +b +b +b +b +b +e +e +e +i +i +i +i +i +i +i +i +i +i +i +i +"} +(30,1,1) = {" +S +S +S +i +i +e +e +e +b +b +b +b +b +e +e +e +b +b +b +b +b +e +e +e +i +i +S +S +S +S +S +S +S +S +S +S +S +"} +(31,1,1) = {" +S +S +S +S +i +i +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +i +i +S +S +S +S +S +S +S +S +S +S +S +S +"} +(32,1,1) = {" +S +S +S +S +S +i +i +e +e +e +e +e +e +e +e +e +e +e +e +e +e +e +i +i +S +S +S +S +S +S +S +S +S +S +S +S +S +"} +(33,1,1) = {" +S +S +S +S +S +S +i +i +i +i +i +i +i +i +i +i +i +i +i +i +i +i +i +S +S +S +S +S +S +S +S +S +S +S +S +S +S +"} diff --git a/_maps/virtual_domains/xeno_nest.dmm b/_maps/virtual_domains/xeno_nest.dmm new file mode 100644 index 000000000000..fcbd7cc116c9 --- /dev/null +++ b/_maps/virtual_domains/xeno_nest.dmm @@ -0,0 +1,2071 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"c" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/resin/wall, +/obj/structure/alien/resin/wall, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"d" = ( +/obj/structure/alien/resin/wall, +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"e" = ( +/obj/structure/alien/weeds, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"f" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/egg/burst, +/obj/effect/decal/cleanable/blood, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"h" = ( +/obj/structure/alien/weeds, +/mob/living/simple_animal/hostile/alien/sentinel, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"i" = ( +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/obj/effect/decal/cleanable/blood/gibs, +/obj/effect/decal/cleanable/blood, +/obj/item/clothing/under/syndicate, +/obj/item/clothing/glasses/night, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"j" = ( +/obj/machinery/suit_storage_unit/spaceruin, +/turf/template_noop, +/area/virtual_domain/safehouse) +"k" = ( +/obj/structure/alien/weeds/node, +/obj/structure/alien/resin/wall, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"l" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/resin/wall, +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"m" = ( +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/obj/structure/alien/resin/wall, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"n" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"o" = ( +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"p" = ( +/obj/structure/alien/weeds, +/mob/living/simple_animal/hostile/alien/drone{ + plants_off = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"q" = ( +/obj/structure/alien/resin/wall, +/turf/open/space/basic, +/area/ruin/space/has_grav/powered/virtual_domain) +"r" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"s" = ( +/obj/structure/alien/weeds/node, +/mob/living/simple_animal/hostile/alien/drone{ + plants_off = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"t" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/weeds, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"u" = ( +/obj/structure/alien/weeds/node, +/obj/effect/decal/cleanable/blood, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"v" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"x" = ( +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"z" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/resin/wall, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"A" = ( +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/ruin/space/has_grav/powered/virtual_domain) +"B" = ( +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/blood, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"C" = ( +/obj/structure/alien/weeds, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/ruin/space/has_grav/powered/virtual_domain) +"D" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/weeds, +/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, +/area/ruin/space/has_grav/powered/virtual_domain) +"E" = ( +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"F" = ( +/obj/structure/table/greyscale, +/obj/item/gun/energy/beam_rifle, +/obj/item/gun/energy/laser{ + pixel_x = 4; + pixel_y = -6 + }, +/obj/item/gun/energy/laser{ + pixel_x = -8; + pixel_y = 6 + }, +/turf/template_noop, +/area/virtual_domain/safehouse) +"G" = ( +/obj/structure/alien/resin/wall, +/obj/structure/alien/weeds, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"H" = ( +/obj/structure/table/greyscale, +/obj/machinery/recharger{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/machinery/recharger{ + pixel_x = -8; + pixel_y = 4 + }, +/turf/template_noop, +/area/virtual_domain/safehouse) +"I" = ( +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"J" = ( +/obj/structure/alien/weeds, +/mob/living/simple_animal/hostile/alien/queen/large{ + desc = "A gigantic alien who is in charge of the hive and all of its loyal servants."; + name = "alien queen"; + pixel_x = -16; + plants_off = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"K" = ( +/obj/structure/alien/weeds, +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"L" = ( +/obj/item/storage/medkit/regular, +/obj/item/storage/medkit/regular, +/turf/template_noop, +/area/virtual_domain/safehouse) +"M" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/resin/wall{ + move_force = 1000; + move_resist = 3000; + pull_force = 1000 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"N" = ( +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/obj/effect/decal/cleanable/blood/gibs, +/obj/item/clothing/under/rank/security/officer, +/obj/item/clothing/suit/armor/vest, +/obj/item/melee/baton/security/loaded, +/obj/item/clothing/head/helmet, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"O" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"P" = ( +/obj/structure/alien/weeds/node, +/mob/living/simple_animal/hostile/alien, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"Q" = ( +/obj/structure/alien/resin/wall, +/obj/structure/alien/resin/wall, +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"S" = ( +/obj/structure/alien/weeds, +/mob/living/simple_animal/hostile/alien, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"T" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/egg/burst, +/obj/effect/decal/cleanable/blood/gibs, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"U" = ( +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/obj/effect/decal/cleanable/blood/gibs, +/obj/item/gun/ballistic/automatic/pistol, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"V" = ( +/obj/structure/alien/weeds/node, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"W" = ( +/obj/structure/alien/weeds, +/obj/structure/alien/egg/burst, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"Y" = ( +/obj/structure/alien/weeds, +/obj/effect/decal/cleanable/blood, +/mob/living/simple_animal/hostile/alien/drone{ + plants_off = 1 + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) +"Z" = ( +/obj/structure/alien/weeds, +/obj/structure/bed/nest, +/obj/effect/decal/cleanable/blood/gibs, +/obj/item/tank/internals/oxygen, +/obj/item/clothing/suit/space/syndicate/orange, +/obj/item/clothing/mask/gas, +/obj/item/clothing/head/helmet/space/syndicate/orange, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) + +(1,1,1) = {" +a +a +a +E +E +E +E +E +E +E +E +E +E +E +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +E +E +z +z +z +z +z +z +z +z +E +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +E +E +z +e +W +W +z +e +e +z +M +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(4,1,1) = {" +a +a +a +E +z +z +e +e +e +e +p +e +W +z +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +a +a +a +E +z +e +e +k +z +z +z +k +z +z +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(6,1,1) = {" +a +a +a +E +z +e +e +m +K +J +o +i +z +z +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(7,1,1) = {" +a +a +a +E +z +W +h +e +e +e +B +o +e +z +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(8,1,1) = {" +a +a +a +E +z +I +o +z +e +V +e +h +W +z +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(9,1,1) = {" +a +a +a +E +z +U +u +e +z +e +e +W +z +z +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(10,1,1) = {" +a +a +a +E +z +e +o +z +e +e +e +k +W +z +E +a +a +a +a +a +a +a +E +E +E +E +E +E +E +E +E +E +a +a +a +a +a +a +a +"} +(11,1,1) = {" +a +a +a +E +z +z +e +h +e +e +h +e +e +z +E +a +a +a +a +a +a +a +E +E +E +E +z +z +z +z +E +E +a +a +a +a +a +a +a +"} +(12,1,1) = {" +a +a +a +E +E +z +W +e +e +e +e +e +e +z +E +a +a +a +a +a +a +a +E +E +E +z +z +Z +I +z +z +E +a +a +a +a +a +a +a +"} +(13,1,1) = {" +a +a +a +E +E +z +z +e +e +V +e +e +z +z +E +a +a +a +a +a +a +a +E +E +z +z +W +o +Y +e +z +E +a +a +a +a +a +a +a +"} +(14,1,1) = {" +a +a +a +E +E +E +z +z +e +e +e +z +z +E +E +a +a +a +a +E +E +E +E +E +z +I +e +V +e +W +z +E +a +a +a +a +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +E +E +z +z +z +z +z +E +E +E +E +E +E +E +E +E +E +z +z +z +e +e +e +I +z +z +E +a +a +a +a +a +a +a +"} +(16,1,1) = {" +a +a +a +a +a +a +E +z +V +V +z +E +E +E +E +E +E +E +E +E +E +z +z +e +S +e +W +z +z +z +E +E +a +a +a +a +a +a +a +"} +(17,1,1) = {" +a +a +a +a +a +a +E +z +p +e +z +z +E +z +z +z +z +z +z +z +z +z +e +e +z +z +z +z +E +E +E +E +a +a +a +a +a +a +a +"} +(18,1,1) = {" +a +a +a +a +a +a +E +z +e +e +p +z +z +z +e +e +e +e +e +e +z +z +e +z +z +E +E +E +E +E +E +E +E +E +E +E +E +E +O +"} +(19,1,1) = {" +E +E +E +E +E +E +E +z +z +e +e +e +z +e +e +e +e +e +e +V +e +e +e +z +E +E +E +E +E +E +Q +d +q +q +q +q +q +q +E +"} +(20,1,1) = {" +E +z +z +z +z +E +E +E +z +z +e +V +e +e +e +z +z +z +z +e +e +t +z +z +E +E +a +a +a +E +q +A +A +A +A +A +A +A +E +"} +(21,1,1) = {" +E +z +W +I +z +z +z +z +z +z +e +e +e +e +z +z +E +E +z +z +e +e +z +E +E +E +a +a +a +E +q +A +A +A +A +A +A +A +E +"} +(22,1,1) = {" +E +G +t +S +e +z +z +e +e +e +e +e +e +z +z +E +E +E +z +e +e +e +z +E +E +E +a +a +a +E +q +A +C +A +A +A +A +A +E +"} +(23,1,1) = {" +E +G +K +W +V +e +e +e +z +z +e +z +z +z +E +E +E +E +z +e +e +z +z +E +E +a +a +a +a +E +q +C +C +C +A +A +A +A +E +"} +(24,1,1) = {" +E +z +z +I +I +z +z +z +z +z +e +z +E +E +E +E +E +E +z +e +e +z +E +E +E +E +E +E +E +E +d +C +C +A +A +C +A +A +E +"} +(25,1,1) = {" +E +E +z +z +z +z +E +E +E +z +p +z +z +E +E +E +E +E +z +e +s +z +z +z +E +E +E +E +E +E +z +C +C +C +A +C +C +A +E +"} +(26,1,1) = {" +a +E +E +E +E +E +E +E +E +z +e +e +z +E +E +E +E +E +z +e +e +e +e +z +z +z +E +E +E +z +z +n +n +n +n +n +v +A +E +"} +(27,1,1) = {" +a +a +a +a +a +E +E +z +z +z +e +e +z +z +E +E +E +E +z +z +e +e +e +e +e +z +z +z +z +k +e +n +j +j +j +n +n +A +E +"} +(28,1,1) = {" +a +a +a +a +a +E +z +z +T +e +e +V +W +z +E +E +E +z +z +e +e +z +z +e +e +e +z +V +e +e +e +n +n +n +n +n +n +A +E +"} +(29,1,1) = {" +a +a +a +a +a +E +z +N +f +S +e +W +I +z +E +E +E +z +e +e +z +z +z +z +e +V +z +V +t +e +e +n +n +F +H +n +n +A +E +"} +(30,1,1) = {" +a +a +a +a +a +E +z +x +o +e +I +I +z +z +E +E +E +z +e +z +z +E +E +z +z +z +z +z +k +e +e +n +n +n +n +n +n +A +E +"} +(31,1,1) = {" +a +a +a +a +a +E +z +z +z +e +z +z +z +E +E +E +E +z +e +z +z +E +E +E +E +E +E +E +z +e +e +n +L +n +n +n +n +A +E +"} +(32,1,1) = {" +a +a +a +a +a +E +E +E +z +e +z +E +E +E +E +E +E +z +e +e +z +E +a +a +a +a +E +E +z +e +e +n +n +n +n +n +r +A +E +"} +(33,1,1) = {" +a +a +a +a +a +a +a +E +z +e +z +E +E +a +a +a +E +l +z +V +z +E +a +a +a +a +E +z +z +z +q +C +A +A +C +A +A +A +E +"} +(34,1,1) = {" +a +a +a +a +a +a +a +E +z +V +z +E +E +a +a +a +E +E +z +e +z +E +a +a +a +a +E +z +E +d +q +C +C +C +A +A +A +A +E +"} +(35,1,1) = {" +a +a +a +a +a +a +a +E +z +e +z +E +E +a +a +a +E +E +z +e +z +E +a +a +a +a +E +E +E +d +q +A +A +A +A +A +A +A +E +"} +(36,1,1) = {" +a +a +a +a +a +a +a +E +z +e +z +E +E +E +E +E +E +z +z +e +z +E +a +a +a +a +a +a +E +d +q +A +C +D +A +A +A +A +E +"} +(37,1,1) = {" +a +a +a +a +E +E +E +E +z +e +z +E +E +E +E +E +z +z +e +e +z +E +a +a +a +a +a +a +E +d +q +A +A +A +A +A +A +A +E +"} +(38,1,1) = {" +a +a +a +a +E +E +E +z +z +e +z +z +z +z +z +z +z +e +e +z +z +E +a +a +a +a +a +a +E +d +q +A +A +A +A +A +A +A +E +"} +(39,1,1) = {" +a +a +a +a +E +E +z +z +e +e +W +z +z +e +e +P +e +e +z +z +E +E +a +a +a +a +a +a +E +Q +q +q +q +q +q +q +q +q +E +"} +(40,1,1) = {" +a +a +a +a +E +E +z +I +p +e +e +e +e +e +z +z +z +z +z +E +E +a +a +a +a +a +a +a +E +E +E +E +E +E +E +E +E +E +E +"} +(41,1,1) = {" +a +a +a +a +E +z +z +W +e +V +e +W +z +z +z +E +E +E +E +E +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(42,1,1) = {" +a +a +a +a +E +z +W +K +e +I +I +z +z +E +E +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(43,1,1) = {" +a +a +a +a +E +c +z +z +z +z +z +z +E +E +E +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(44,1,1) = {" +a +a +a +a +E +E +E +E +E +E +E +E +E +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index b745a76376a3..8fa9d18d7bf9 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -104,6 +104,8 @@ #define ACCESS_VAULT "vault" /// Access for the Quartermaster's personal quarters in mapping, as well as some other QM-related things. #define ACCESS_QM "qm" +/// Access for the bitrunning den +#define ACCESS_BIT_DEN "bit_den" /// General access for Science, allows for entry to the general hallways of Science, as well as the main lathe room. #define ACCESS_SCIENCE "science" @@ -279,6 +281,7 @@ ACCESS_ATMOSPHERICS, \ ACCESS_AUX_BASE, \ ACCESS_BAR, \ + ACCESS_BIT_DEN, \ ACCESS_BRIG, \ ACCESS_BRIG_ENTRANCE, \ ACCESS_CARGO, \ @@ -485,6 +488,7 @@ #define REGION_SUPPLY "Supply" /// Used to seed the accesses_by_region list in SSid_access. A list of all cargo regional accesses that are overseen by the HoP. #define REGION_ACCESS_SUPPLY list( \ + ACCESS_BIT_DEN, \ ACCESS_CARGO, \ ACCESS_MECH_MINING, \ ACCESS_MINERAL_STOREROOM, \ @@ -542,6 +546,7 @@ /obj/item/modular_computer/pda/heads/rd = list(REGION_COMMAND), \ /obj/item/modular_computer/pda/heads/captain = list(REGION_COMMAND), \ /obj/item/modular_computer/pda/cargo = list(REGION_SUPPLY), \ + /obj/item/modular_computer/pda/bitrunner = list(REGION_SUPPLY), \ /obj/item/modular_computer/pda/shaftminer = list(REGION_SUPPLY), \ /obj/item/modular_computer/pda/chaplain = list(REGION_GENERAL), \ /obj/item/modular_computer/pda/lawyer = list(REGION_GENERAL), \ diff --git a/code/__DEFINES/alerts.dm b/code/__DEFINES/alerts.dm index d309ebd8d2e9..3cc79764f77e 100644 --- a/code/__DEFINES/alerts.dm +++ b/code/__DEFINES/alerts.dm @@ -60,3 +60,12 @@ #define ALERT_TEMPERATURE "temp" #define ALERT_TEMPERATURE_HOT "temphot" #define ALERT_TEMPERATURE_COLD "tempcold" + +/** Bitrunning */ +#define ALERT_BITRUNNER_CROWBAR "bitrunning_crowbar" +#define ALERT_BITRUNNER_COMPLETED "bitrunning_complete" +#define ALERT_BITRUNNER_INTEGRITY "bitrunning_integrity" +#define ALERT_BITRUNNER_SHUTDOWN "bitrunning_shutdown" +#define ALERT_BITRUNNER_RESET "bitrunning_reset" +#define ALERT_BITRUNNER_SPAWN_CYBERCOP "bitrunning_spawn_cybercop" +#define ALERT_BITRUNNER_THREAT "bitrunning_threat" diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 3f73cc328edd..20cf43b164a5 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -316,6 +316,7 @@ GLOBAL_LIST_INIT(human_invader_antagonists, list( #define ANTAG_GROUP_ASHWALKERS "Ash Walkers" #define ANTAG_GROUP_BIOHAZARDS "Biohazards" #define ANTAG_GROUP_CLOWNOPS "Clown Operatives" +#define ANTAG_GROUP_CYBERAUTH "Cyber Authority" #define ANTAG_GROUP_ERT "Emergency Response Team" #define ANTAG_GROUP_HORRORS "Eldritch Horrors" #define ANTAG_GROUP_LEVIATHANS "Spaceborne Leviathans" diff --git a/code/__DEFINES/atom_hud.dm b/code/__DEFINES/atom_hud.dm index bf187da682a6..586420013510 100644 --- a/code/__DEFINES/atom_hud.dm +++ b/code/__DEFINES/atom_hud.dm @@ -88,6 +88,7 @@ #define SECHUD_ASSISTANT "hudassistant" #define SECHUD_ATMOSPHERIC_TECHNICIAN "hudatmospherictechnician" #define SECHUD_BARTENDER "hudbartender" +#define SECHUD_BITRUNNER "hudbitrunner" #define SECHUD_BOTANIST "hudbotanist" #define SECHUD_CAPTAIN "hudcaptain" #define SECHUD_CARGO_TECHNICIAN "hudcargotechnician" diff --git a/code/__DEFINES/bitrunning.dm b/code/__DEFINES/bitrunning.dm new file mode 100644 index 000000000000..343801c477e9 --- /dev/null +++ b/code/__DEFINES/bitrunning.dm @@ -0,0 +1,20 @@ +#define BITRUNNER_COST_NONE 0 +#define BITRUNNER_COST_LOW 1 +#define BITRUNNER_COST_MEDIUM 2 +#define BITRUNNER_COST_HIGH 3 +#define BITRUNNER_COST_EXTREME 20 + +#define BITRUNNER_REWARD_MIN 1 +#define BITRUNNER_REWARD_LOW 3 +#define BITRUNNER_REWARD_MEDIUM 4 +#define BITRUNNER_REWARD_HIGH 5 +#define BITRUNNER_REWARD_EXTREME 6 + +/// Blue in ui +#define BITRUNNER_DIFFICULTY_NONE 0 +/// Yellow +#define BITRUNNER_DIFFICULTY_LOW 1 +/// Orange +#define BITRUNNER_DIFFICULTY_MEDIUM 2 +/// Red with skull +#define BITRUNNER_DIFFICULTY_HIGH 3 diff --git a/code/__DEFINES/computers.dm b/code/__DEFINES/computers.dm index 1349913c1837..ba3294ae6833 100644 --- a/code/__DEFINES/computers.dm +++ b/code/__DEFINES/computers.dm @@ -8,3 +8,6 @@ #define CATEGORY_CONSUMABLES "Consumables" #define CATEGORY_TOYS_DRONE "Toys & Drones" #define CATEGORY_PKA "PKAs" +#define CATEGORY_BEPIS "Bepis Tech" +#define CATEGORY_BITRUNNING_FLAIR "Misc" +#define CATEGORY_BITRUNNING_TECH "Tech" diff --git a/code/__DEFINES/dcs/signals/signals_bitrunning.dm b/code/__DEFINES/dcs/signals/signals_bitrunning.dm new file mode 100644 index 000000000000..3d008449ee7b --- /dev/null +++ b/code/__DEFINES/dcs/signals/signals_bitrunning.dm @@ -0,0 +1,31 @@ +/// from /obj/machinery/netpod/default_pry_open() : (mob/living/intruder) +#define COMSIG_BITRUNNER_CROWBAR_ALERT "bitrunner_crowbar" + +/// from /obj/effect/bitrunning/loot_signal: (points) +#define COMSIG_BITRUNNER_GOAL_POINT "bitrunner_goal_point" + +/// from /obj/machinery/quantum_server/on_goal_turf_entered(): (atom/entered, reward_points) +#define COMSIG_BITRUNNER_DOMAIN_COMPLETE "bitrunner_complete" + +/// from /obj/machinery/netpod/on_take_damage() +#define COMSIG_BITRUNNER_NETPOD_INTEGRITY "bitrunner_netpod_damage" + +/// from /obj/structure/hololadder and complete alert +#define COMSIG_BITRUNNER_SAFE_DISCONNECT "bitrunner_disconnect" + +/// from /obj/machinery/netpod/open_machine(), /obj/machinery/quantum_server, etc (obj/machinery/netpod) +#define COMSIG_BITRUNNER_SEVER_AVATAR "bitrunner_sever" + +/// from /obj/machinery/quantum_server/shutdown() : (mob/living) +#define COMSIG_BITRUNNER_SHUTDOWN_ALERT "bitrunner_shutdown" + +// Notifies the bitrunners +/// from /datum/antagonist/cyber_police/proc/notify() : +#define COMSIG_BITRUNNER_THREAT_CREATED "bitrunner_threat" + +// Informs the server to up the threat count +/// from event spawns: (mob/living) +#define COMSIG_BITRUNNER_SPAWN_GLITCH "bitrunner_spawn_glitch" + +/// from /obj/machinery/quantum_server/refreshParts(): (servo rating) +#define COMSIG_BITRUNNER_SERVER_UPGRADED "bitrunner_server_upgraded" diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_spawner.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_spawner.dm new file mode 100644 index 000000000000..6ff8b1e8d61d --- /dev/null +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_spawner.dm @@ -0,0 +1,6 @@ +// signals for use by mob spawners +/// called when a spawner spawns a mob +#define COMSIG_SPAWNER_SPAWNED "spawner_spawned" + +/// called when a ghost clicks a spawner role: (mob/living) +#define COMSIG_GHOSTROLE_SPAWNED "ghostrole_spawned" diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index f3f5f7f1f9d2..f7d18b3fe158 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -68,6 +68,7 @@ #define JOB_QUARTERMASTER "Quartermaster" #define JOB_CARGO_TECHNICIAN "Cargo Technician" #define JOB_SHAFT_MINER "Shaft Miner" +#define JOB_BITRUNNER "Bitrunner" //Service #define JOB_BARTENDER "Bartender" #define JOB_BOTANIST "Botanist" @@ -124,20 +125,21 @@ #define JOB_DISPLAY_ORDER_QUARTERMASTER 19 #define JOB_DISPLAY_ORDER_CARGO_TECHNICIAN 20 #define JOB_DISPLAY_ORDER_SHAFT_MINER 21 -#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 22 -#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 23 -#define JOB_DISPLAY_ORDER_PARAMEDIC 24 -#define JOB_DISPLAY_ORDER_CHEMIST 25 -#define JOB_DISPLAY_ORDER_VIROLOGIST 26 -#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 27 -#define JOB_DISPLAY_ORDER_SCIENTIST 28 -#define JOB_DISPLAY_ORDER_ROBOTICIST 29 -#define JOB_DISPLAY_ORDER_GENETICIST 30 -#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 31 -#define JOB_DISPLAY_ORDER_WARDEN 32 -#define JOB_DISPLAY_ORDER_DETECTIVE 33 -#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 34 -#define JOB_DISPLAY_ORDER_PRISONER 35 +#define JOB_DISPLAY_ORDER_BITRUNNER 22 +#define JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER 23 +#define JOB_DISPLAY_ORDER_MEDICAL_DOCTOR 24 +#define JOB_DISPLAY_ORDER_PARAMEDIC 25 +#define JOB_DISPLAY_ORDER_CHEMIST 26 +#define JOB_DISPLAY_ORDER_VIROLOGIST 27 +#define JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR 28 +#define JOB_DISPLAY_ORDER_SCIENTIST 29 +#define JOB_DISPLAY_ORDER_ROBOTICIST 30 +#define JOB_DISPLAY_ORDER_GENETICIST 31 +#define JOB_DISPLAY_ORDER_HEAD_OF_SECURITY 32 +#define JOB_DISPLAY_ORDER_WARDEN 33 +#define JOB_DISPLAY_ORDER_DETECTIVE 34 +#define JOB_DISPLAY_ORDER_SECURITY_OFFICER 35 +#define JOB_DISPLAY_ORDER_PRISONER 36 #define DEPARTMENT_UNASSIGNED "No Department" diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 45b0ad341ffa..edd3f0c4c4b1 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -24,6 +24,7 @@ #define ROLE_BLOB "Blob" #define ROLE_BLOB_INFECTION "Blob Infection" #define ROLE_CHANGELING_MIDROUND "Changeling (Midround)" +#define ROLE_CYBER_POLICE "Cyber Police" #define ROLE_FUGITIVE "Fugitive" #define ROLE_LONE_OPERATIVE "Lone Operative" #define ROLE_MALF_MIDROUND "Malf AI (Midround)" @@ -45,6 +46,13 @@ #define ROLE_SYNDICATE_INFILTRATOR "Syndicate Infiltrator" // Other roles +#define ROLE_ANOMALY_GHOST "Ectoplasmic Anomaly Ghost" +#define ROLE_BRAINWASHED "Brainwashed Victim" +#define ROLE_DEATHSQUAD "Deathsquad" +#define ROLE_DRONE "Drone" +#define ROLE_EMAGGED_BOT "Malfunctioning Bot" +#define ROLE_HIVE "Hivemind Host" //Role removed, left here for safety. +#define ROLE_HYPNOTIZED "Hypnotized Victim" #define ROLE_SYNDICATE "Syndicate" #define ROLE_REV "Revolutionary" #define ROLE_REV_SUCCESSFUL "Victorious Revolutionary" @@ -63,28 +71,51 @@ #define ROLE_DRONE "Drone" #define ROLE_DEATHSQUAD "Deathsquad" #define ROLE_LAVALAND "Lavaland" +#define ROLE_LAZARUS_BAD "Slaved Revived Mob" +#define ROLE_LAZARUS_GOOD "Friendly Revived Mob" +#define ROLE_MIND_TRANSFER "Mind Transfer Potion" +#define ROLE_MONKEY_HELMET "Monkey Mind Magnification Helmet" +#define ROLE_OVERTHROW "Syndicate Mutineer" //Role removed, left here for safety. +#define ROLE_PAI "pAI" +#define ROLE_POSIBRAIN "Posibrain" +#define ROLE_PYROCLASTIC_SLIME "Pyroclastic Anomaly Slime" +#define ROLE_REV "Revolutionary" +#define ROLE_REVENANT "Revenant" +#define ROLE_SENTIENCE "Sentience Potion Spawn" +#define ROLE_SYNDICATE "Syndicate" -#define ROLE_POSITRONIC_BRAIN "Positronic Brain" -#define ROLE_FREE_GOLEM "Free Golem" -#define ROLE_SERVANT_GOLEM "Servant Golem" -#define ROLE_NUCLEAR_OPERATIVE "Nuclear Operative" #define ROLE_CLOWN_OPERATIVE "Clown Operative" -#define ROLE_WIZARD_APPRENTICE "apprentice" -#define ROLE_SLAUGHTER_DEMON "Slaughter Demon" +#define ROLE_FREE_GOLEM "Free Golem" #define ROLE_MORPH "Morph" +#define ROLE_NUCLEAR_OPERATIVE "Nuclear Operative" +#define ROLE_POSITRONIC_BRAIN "Positronic Brain" #define ROLE_SANTA "Santa" +#define ROLE_SERVANT_GOLEM "Servant Golem" +#define ROLE_SLAUGHTER_DEMON "Slaughter Demon" +#define ROLE_WIZARD_APPRENTICE "apprentice" //Spawner roles -#define ROLE_GHOST_ROLE "Ghost Role" +#define ROLE_ANCIENT_CREW "Ancient Crew" +#define ROLE_ASHWALKER "Ash Walker" +#define ROLE_BATTLECRUISER_CAPTAIN "Battlecruiser Captain" +#define ROLE_BATTLECRUISER_CREW "Battlecruiser Crew" +#define ROLE_BEACH_BUM "Beach Bum" +#define ROLE_BOT "Bot" +#define ROLE_DERELICT_DRONE "Derelict Drone" +#define ROLE_ESCAPED_PRISONER "Escaped Prisoner" #define ROLE_EXILE "Exile" #define ROLE_FUGITIVE_HUNTER "Fugitive Hunter" -#define ROLE_ESCAPED_PRISONER "Escaped Prisoner" -#define ROLE_LIFEBRINGER "Lifebringer" -#define ROLE_ASHWALKER "Ash Walker" -#define ROLE_LAVALAND_SYNDICATE "Lavaland Syndicate" +#define ROLE_GHOST_ROLE "Ghost Role" #define ROLE_HERMIT "Hermit" -#define ROLE_BEACH_BUM "Beach Bum" #define ROLE_HOTEL_STAFF "Hotel Staff" +#define ROLE_LAVALAND_SYNDICATE "Lavaland Syndicate" +#define ROLE_LIFEBRINGER "Lifebringer" +#define ROLE_MAINTENANCE_DRONE "Maintenance Drone" +#define ROLE_SKELETON "Skeleton" +#define ROLE_SPACE_BAR_PATRON "Space Bar Patron" +#define ROLE_SPACE_BARTENDER "Space Bartender" +#define ROLE_SPACE_DOCTOR "Space Doctor" +#define ROLE_SPACE_PIRATE "Space Pirate" #define ROLE_SPACE_SYNDICATE "Space Syndicate" #define ROLE_SYNDICATE_CYBERSUN "Cybersun Space Syndicate" //Ghost role syndi from Forgottenship ruin #define ROLE_SYNDICATE_CYBERSUN_CAPTAIN "Cybersun Space Syndicate Captain" //Forgottenship captain syndie @@ -98,8 +129,9 @@ #define ROLE_MAINTENANCE_DRONE "Maintenance Drone" #define ROLE_BATTLECRUISER_CREW "Battlecruiser Crew" #define ROLE_BATTLECRUISER_CAPTAIN "Battlecruiser Captain" +#define ROLE_SYNDICATE_DRONE "Syndicate Drone" #define ROLE_VENUSHUMANTRAP "Venus Human Trap" -#define ROLE_BOT "Bot" +#define ROLE_ZOMBIE "Zombie" @@ -127,6 +159,7 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_BLOB = 0, ROLE_BLOB_INFECTION = 0, ROLE_CHANGELING_MIDROUND = 0, + ROLE_CYBER_POLICE = 0, ROLE_FUGITIVE = 0, ROLE_LONE_OPERATIVE = 14, ROLE_MALF_MIDROUND = 0, diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index a37c8aff20ce..07230479d473 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -39,6 +39,8 @@ #define STASIS_SHAPECHANGE_EFFECT "stasis_shapechange" +#define STASIS_NETPOD_EFFECT "stasis_netpod" + /// Causes the mob to become blind via the passed source #define become_blind(source) apply_status_effect(/datum/status_effect/grouped/blindness, source) /// Cures the mob's blindness from the passed source, removing blindness wholesale if no sources are left @@ -178,3 +180,8 @@ #define PETRIFICATION_SPIT /datum/status_effect/ranching/cockatrice_eaten ///makes you a mime and gives you the wall ability for the duration #define MIME_EGG /datum/status_effect/ranching/mime + +#define adjust_static_vision(duration) adjust_timed_status_effect(duration, /datum/status_effect/static_vision) +#define adjust_static_vision_up_to(duration, up_to) adjust_timed_status_effect(duration, /datum/status_effect/static_vision, up_to) +#define set_static_vision(duration) set_timed_status_effect(duration, /datum/status_effect/static_vision) +#define set_static_vision_if_lower(duration) set_timed_status_effect(duration, /datum/status_effect/static_vision, TRUE) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 63b2ea2e80b2..fa28f3c40cfb 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -609,7 +609,7 @@ GLOBAL_LIST_EMPTY(species_list) #define ISADVANCEDTOOLUSER(mob) (HAS_TRAIT(mob, TRAIT_ADVANCEDTOOLUSER) && !HAS_TRAIT(mob, TRAIT_DISCOORDINATED_TOOL_USER)) -#define IS_IN_STASIS(mob) (mob.has_status_effect(/datum/status_effect/grouped/stasis)) +#define IS_IN_STASIS(mob) (mob.has_status_effect(/datum/status_effect/grouped/stasis) || mob.has_status_effect(/datum/status_effect/embryonic)) /// Gets the client of the mob, allowing for mocking of the client. /// You only need to use this if you know you're going to be mocking clients somewhere else. diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index e82c9d20f18c..ded99d194f3a 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -28,6 +28,7 @@ GLOBAL_LIST_INIT(oozeling_last_names, world.file2list("strings/names/ooze_last.t GLOBAL_LIST_INIT(simian_last_names, world.file2list("monkestation/strings/names/simian_last.txt")) GLOBAL_LIST_INIT(simian_names_female, world.file2list("monkestation/strings/names/simian_female_first.txt")) GLOBAL_LIST_INIT(simian_names_male, world.file2list("monkestation/strings/names/simian_male_first.txt")) +GLOBAL_LIST_INIT(cyberauth_names, world.file2list("strings/names/cyberauth.txt")) GLOBAL_LIST_INIT(verbs, world.file2list("strings/names/verbs.txt")) GLOBAL_LIST_INIT(ing_verbs, world.file2list("strings/names/ing_verbs.txt")) diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm index afedfa5befe6..ef184e18b1d0 100644 --- a/code/_onclick/hud/fullscreen.dm +++ b/code/_onclick/hud/fullscreen.dm @@ -216,3 +216,10 @@ layer = LIGHTING_ABOVE_ALL blend_mode = BLEND_ADD show_when_dead = TRUE + +/atom/movable/screen/fullscreen/static_vision + icon = 'icons/hud/screen_gen.dmi' + screen_loc = "WEST,SOUTH to EAST,NORTH" + icon_state = "noise" + color = "#04a8d1" + alpha = 80 diff --git a/code/controllers/subsystem/id_access.dm b/code/controllers/subsystem/id_access.dm index 08eb9bc061cc..483dcd49bd25 100644 --- a/code/controllers/subsystem/id_access.dm +++ b/code/controllers/subsystem/id_access.dm @@ -322,6 +322,7 @@ SUBSYSTEM_DEF(id_access) desc_by_access["[ACCESS_CENT_SPECOPS]"] = "Code Black" desc_by_access["[ACCESS_CENT_CAPTAIN]"] = "Code Gold" desc_by_access["[ACCESS_CENT_BAR]"] = "Code Scotch" + desc_by_access["[ACCESS_BIT_DEN]"] = "Bitrunner Den" /** * Returns the access bitflags associated with any given access level. diff --git a/code/datums/id_trim/jobs.dm b/code/datums/id_trim/jobs.dm index b54686535ef0..910ecdda6f61 100644 --- a/code/datums/id_trim/jobs.dm +++ b/code/datums/id_trim/jobs.dm @@ -155,6 +155,30 @@ ) job = /datum/job/bartender +/datum/id_trim/job/bitrunner + assignment = "Bitrunner" + trim_state = "trim_bitrunner" + department_color = COLOR_CARGO_BROWN + subdepartment_color = COLOR_CARGO_BROWN + sechud_icon_state = SECHUD_BITRUNNER + minimal_access = list( + ACCESS_BIT_DEN, + ACCESS_CARGO, + ACCESS_MAINT_TUNNELS, + ACCESS_MECH_MINING, + ACCESS_MINERAL_STOREROOM, + ) + extra_access = list( + ACCESS_MINING, + ACCESS_MINING_STATION, + ) + template_access = list( + ACCESS_CAPTAIN, + ACCESS_CHANGE_IDS, + ACCESS_QM, + ) + job = /datum/job/bitrunner + /datum/id_trim/job/botanist assignment = "Botanist" trim_state = "trim_botanist" @@ -215,6 +239,7 @@ ACCESS_SHIPPING, ) extra_access = list( + ACCESS_BIT_DEN, ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_QM, @@ -544,6 +569,7 @@ ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_ARMORY, ACCESS_AUX_BASE, + ACCESS_BIT_DEN, ACCESS_BRIG, ACCESS_BRIG_ENTRANCE, ACCESS_CARGO, @@ -677,6 +703,7 @@ subdepartment_color = COLOR_MEDICAL_BLUE sechud_icon_state = SECHUD_PARAMEDIC minimal_access = list( + ACCESS_BIT_DEN, ACCESS_CARGO, ACCESS_CONSTRUCTION, ACCESS_HYDROPONICS, @@ -771,6 +798,7 @@ sechud_icon_state = SECHUD_QUARTERMASTER minimal_access = list( ACCESS_AUX_BASE, + ACCESS_BIT_DEN, ACCESS_CARGO, ACCESS_MAINT_TUNNELS, ACCESS_MECH_MINING, @@ -960,6 +988,7 @@ assignment = "Security Officer (Cargo)" subdepartment_color = COLOR_CARGO_BROWN department_access = list( + ACCESS_BIT_DEN, ACCESS_CARGO, ACCESS_MINING, ACCESS_SHIPPING, @@ -1028,6 +1057,7 @@ ACCESS_MINING_STATION, ) extra_access = list( + ACCESS_BIT_DEN, ACCESS_MAINT_TUNNELS, ) template_access = list( diff --git a/code/datums/id_trim/outfits.dm b/code/datums/id_trim/outfits.dm index 4bb9365ebc45..3cf0bbe54f14 100644 --- a/code/datums/id_trim/outfits.dm +++ b/code/datums/id_trim/outfits.dm @@ -52,3 +52,24 @@ assignment = "Bounty Hunter" department_color = COLOR_PRISONER_ORANGE subdepartment_color = COLOR_PRISONER_BLACK + + access = list(ACCESS_HUNTER) + +/// Trim for player controlled avatars in the Virtual Domain. +/datum/id_trim/bit_avatar + assignment = "Bit Avatar" + trim_state = "trim_bitavatar" + department_color = COLOR_BLACK + subdepartment_color = COLOR_GREEN + +/// Trim for cyber police in the Virtual Domain. +/datum/id_trim/cyber_police + assignment = "Cyber Police" + trim_state = "trim_deathcommando" + department_color = COLOR_BLACK + subdepartment_color = COLOR_GREEN + +/datum/id_trim/cyber_police/New() + . = ..() + + access |= SSid_access.get_region_access_list(list(REGION_ALL_GLOBAL)) diff --git a/code/datums/lazy_template.dm b/code/datums/lazy_template.dm index af6df50e96f8..5a78eba02d3b 100644 --- a/code/datums/lazy_template.dm +++ b/code/datums/lazy_template.dm @@ -7,8 +7,11 @@ /// If this is true each load will increment an index keyed to the type and it will load [map_name]_[index] var/list/datum/turf_reservation/reservations = list() var/uses_multiple_allocations = FALSE + /// Key to identify this template - used in caching var/key + /// Directory of maps to prefix to the filename var/map_dir = "_maps/templates/lazy_templates" + /// The filename (without extension) of the map to load var/map_name var/map_width var/map_height diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm index 0fe10d9bce0a..0a239d5e878a 100644 --- a/code/datums/station_traits/positive_traits.dm +++ b/code/datums/station_traits/positive_traits.dm @@ -283,6 +283,7 @@ /datum/job/assistant = /obj/item/organ/internal/heart/cybernetic, //real cardiac /datum/job/atmospheric_technician = /obj/item/organ/internal/cyberimp/mouth/breathing_tube, /datum/job/bartender = /obj/item/organ/internal/liver/cybernetic/tier3, + /datum/job/bitrunner = /obj/item/organ/internal/eyes/robotic/thermals, /datum/job/botanist = /obj/item/organ/internal/cyberimp/chest/nutriment, /datum/job/captain = /obj/item/organ/internal/heart/cybernetic/tier3, /datum/job/cargo_technician = /obj/item/organ/internal/stomach/cybernetic/tier2, diff --git a/code/datums/status_effects/debuffs/static_vision.dm b/code/datums/status_effects/debuffs/static_vision.dm new file mode 100644 index 000000000000..7132c189b9d4 --- /dev/null +++ b/code/datums/status_effects/debuffs/static_vision.dm @@ -0,0 +1,29 @@ +/datum/status_effect/static_vision + id = "static_vision" + status_type = STATUS_EFFECT_REPLACE + alert_type = null + +/datum/status_effect/static_vision/on_creation(mob/living/new_owner, duration = 3 SECONDS) + src.duration = duration + return ..() + +/datum/status_effect/static_vision/on_apply() + RegisterSignal(owner, COMSIG_LIVING_DEATH, PROC_REF(remove_static_vision)) + + owner.overlay_fullscreen(id, /atom/movable/screen/fullscreen/static_vision) + owner.sound_environment_override = SOUND_ENVIRONMENT_UNDERWATER + + return TRUE + +/datum/status_effect/static_vision/on_remove() + UnregisterSignal(owner, COMSIG_LIVING_DEATH) + + owner.clear_fullscreen(id) + if(owner.sound_environment_override == SOUND_ENVIRONMENT_UNDERWATER) + owner.sound_environment_override = SOUND_ENVIRONMENT_NONE + +/// Handles clearing on death +/datum/status_effect/static_vision/proc/remove_static_vision(datum/source, admin_revive) + SIGNAL_HANDLER + + qdel(src) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index d0dd4fb96f23..c05b9c5dc8a0 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -45,34 +45,39 @@ dead_players = trim_list(GLOB.dead_player_list) list_observers = trim_list(GLOB.current_observers_list) -/datum/dynamic_ruleset/midround/proc/trim_list(list/L = list()) - var/list/trimmed_list = L.Copy() - for(var/mob/M in trimmed_list) - if (!istype(M, required_type)) - trimmed_list.Remove(M) +/datum/dynamic_ruleset/midround/proc/trim_list(list/to_trim = list()) + var/list/trimmed_list = to_trim.Copy() + for(var/mob/creature in trimmed_list) + if (!istype(creature, required_type)) + trimmed_list.Remove(creature) continue - if (!M.client) // Are they connected? - trimmed_list.Remove(M) + if (isnull(creature.client)) // Are they connected? + trimmed_list.Remove(creature) continue - if(M.client.get_remaining_days(minimum_required_age) > 0) - trimmed_list.Remove(M) + if (isnull(creature.mind)) + trimmed_list.Remove(creature) continue - if (!((antag_preference || antag_flag) in M.client.prefs.be_special)) - trimmed_list.Remove(M) + if(creature.client.get_remaining_days(minimum_required_age) > 0) + trimmed_list.Remove(creature) continue - if (is_banned_from(M.ckey, list(antag_flag_override || antag_flag, ROLE_SYNDICATE))) - trimmed_list.Remove(M) + if (!((antag_preference || antag_flag) in creature.client.prefs.be_special)) + trimmed_list.Remove(creature) + continue + if (is_banned_from(creature.ckey, list(antag_flag_override || antag_flag, ROLE_SYNDICATE))) + trimmed_list.Remove(creature) + continue + if (restrict_ghost_roles && (creature.mind.assigned_role.title in GLOB.exp_specialmap[EXP_TYPE_SPECIAL])) // Are they playing a ghost role? + trimmed_list.Remove(creature) + continue + if (creature.mind.assigned_role.title in restricted_roles) // Does their job allow it? + trimmed_list.Remove(creature) + continue + if (length(exclusive_roles) && !(creature.mind.assigned_role.title in exclusive_roles)) // Is the rule exclusive to their job? + trimmed_list.Remove(creature) + continue + if(HAS_TRAIT(creature, TRAIT_MIND_TEMPORARILY_GONE)) // are they in the vdom? + trimmed_list.Remove(creature) continue - if (M.mind) - if (restrict_ghost_roles && (M.mind.assigned_role.title in GLOB.exp_specialmap[EXP_TYPE_SPECIAL])) // Are they playing a ghost role? - trimmed_list.Remove(M) - continue - if (M.mind.assigned_role.title in restricted_roles) // Does their job allow it? - trimmed_list.Remove(M) - continue - if ((exclusive_roles.len > 0) && !(M.mind.assigned_role.title in exclusive_roles)) // Is the rule exclusive to their job? - trimmed_list.Remove(M) - continue return trimmed_list // You can then for example prompt dead players in execute() to join as strike teams or whatever diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 00535f42686c..7915ce1cfb70 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -74,6 +74,10 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark) name = "Cargo Technician" icon_state = "Cargo Technician" +/obj/effect/landmark/start/bitrunner + name = "Bitrunner" + icon_state = "x3" + /obj/effect/landmark/start/bartender name = "Bartender" icon_state = "Bartender" diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index d152629568c3..a05659e0e18d 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -535,6 +535,10 @@ name = "Golem Ship Equipment Vendor Console" build_path = /obj/machinery/computer/order_console/mining/golem +/obj/item/circuitboard/computer/order_console/bitrunning + name = "Bitrunning Vendor Console" + build_path = /obj/machinery/computer/order_console/bitrunning + /obj/item/circuitboard/computer/ferry name = "Transport Ferry" greyscale_colors = CIRCUIT_COLOR_SUPPLY @@ -596,3 +600,8 @@ name = "Medical Order" greyscale_colors = CIRCUIT_COLOR_SUPPLY build_path = /obj/machinery/computer/department_orders/medical + +/obj/item/circuitboard/computer/quantum_console + name = "Quantum Server Console" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/computer/quantum_console diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index 5277396e6bb8..9b5c413d703f 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -1494,3 +1494,32 @@ greyscale_colors = CIRCUIT_COLOR_SCIENCE build_path = /obj/machinery/navbeacon req_components = list() + +/obj/item/circuitboard/machine/radioactive_nebula_shielding + name = "Radioactive Nebula Shielding" + greyscale_colors = CIRCUIT_COLOR_ENGINEERING + build_path = /obj/machinery/nebula_shielding/radiation + req_components = list( + /datum/stock_part/capacitor = 2, + /obj/item/mod/module/rad_protection = 1, + /obj/item/stack/sheet/plasteel = 2, + ) + +/obj/item/circuitboard/machine/quantum_server + name = "Quantum Server" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/quantum_server + req_components = list( + /datum/stock_part/servo = 2, + /datum/stock_part/scanning_module = 1, + /datum/stock_part/capacitor = 1, + ) + +/obj/item/circuitboard/machine/netpod + name = "Netpod" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/netpod + req_components = list( + /datum/stock_part/servo = 1, + /datum/stock_part/matter_bin = 2, + ) diff --git a/code/modules/bitrunning/abilities.dm b/code/modules/bitrunning/abilities.dm new file mode 100644 index 000000000000..ea6a1aa0a7cf --- /dev/null +++ b/code/modules/bitrunning/abilities.dm @@ -0,0 +1,39 @@ +/datum/avatar_help_text + /// Text to display in the window + var/help_text + +/datum/avatar_help_text/New(help_text) + src.help_text = help_text + +/datum/avatar_help_text/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "AvatarHelp") + ui.open() + +/datum/avatar_help_text/ui_state(mob/user) + return GLOB.always_state + +/datum/avatar_help_text/ui_static_data(mob/user) + var/list/data = list() + + data["help_text"] = help_text + + return data + +/// Displays information about the current virtual domain. +/datum/action/avatar_domain_info + name = "Open Virtual Domain Information" + button_icon_state = "round_end" + show_to_observers = FALSE + +/datum/action/avatar_domain_info/New(Target) + . = ..() + name = "Open Domain Information" + +/datum/action/avatar_domain_info/Trigger(trigger_flags) + . = ..() + if(!.) + return + + target.ui_interact(owner) diff --git a/code/modules/bitrunning/alerts.dm b/code/modules/bitrunning/alerts.dm new file mode 100644 index 000000000000..f8c8aa30b943 --- /dev/null +++ b/code/modules/bitrunning/alerts.dm @@ -0,0 +1,40 @@ +/atom/movable/screen/alert/bitrunning + name = "Generic Bitrunning Alert" + icon_state = "template" + timeout = 10 SECONDS + +/atom/movable/screen/alert/bitrunning/netpod_crowbar + name = "Forced Entry" + desc = "Someone is prying open the netpod door. Find an exit." + +/atom/movable/screen/alert/bitrunning/netpod_damaged + name = "Integrity Compromised" + desc = "The netpod is damaged. Find an exit." + +/atom/movable/screen/alert/bitrunning/qserver_shutting_down + name = "Domain Rebooting" + desc = "The domain is rebooting. Find an exit." + +/atom/movable/screen/alert/bitrunning/qserver_threat_deletion + name = "Queue Deletion" + desc = "The server is resetting. Oblivion awaits." + +/atom/movable/screen/alert/bitrunning/qserver_threat_spawned + name = "Threat Detected" + desc = "Data stream abnormalities present." + +/atom/movable/screen/alert/bitrunning/qserver_domain_complete + name = "Domain Completed" + desc = "The domain is completed. Activate to exit." + timeout = 20 SECONDS + +/atom/movable/screen/alert/bitrunning/qserver_domain_complete/Click(location, control, params) + if(..()) + return + + var/mob/living/living_owner = owner + if(!isliving(living_owner)) + return + + if(tgui_alert(living_owner, "Disconnect safely?", "Server Message", list("Exit", "Remain"), 10 SECONDS) == "Exit") + SEND_SIGNAL(living_owner, COMSIG_BITRUNNER_SAFE_DISCONNECT) diff --git a/code/modules/bitrunning/antagonists/cyber_police.dm b/code/modules/bitrunning/antagonists/cyber_police.dm new file mode 100644 index 000000000000..9fabac3f523e --- /dev/null +++ b/code/modules/bitrunning/antagonists/cyber_police.dm @@ -0,0 +1,92 @@ +/datum/job/cyber_police + title = ROLE_CYBER_POLICE + +/datum/antagonist/cyber_police + name = ROLE_CYBER_POLICE + antagpanel_category = ANTAG_GROUP_CYBERAUTH + job_rank = ROLE_CYBER_POLICE + preview_outfit = /datum/outfit/cyber_police + show_name_in_check_antagonists = TRUE + show_to_ghosts = TRUE + suicide_cry = "ALT F4!" + ui_name = "AntagInfoCyberAuth" + +/datum/antagonist/cyber_police/greet() + . = ..() + owner.announce_objectives() + +/datum/antagonist/cyber_police/on_gain() + if(!ishuman(owner.current)) + stack_trace("humans only for this position") + return + + forge_objectives() + + var/mob/living/carbon/human/player = owner.current + + player.equipOutfit(/datum/outfit/cyber_police) + player.fully_replace_character_name(player.name, pick(GLOB.cyberauth_names)) + + var/datum/martial_art/the_sleeping_carp/carp = new() + carp.teach(player) + + player.add_traits(list( + TRAIT_NO_AUGMENTS, + TRAIT_NO_DNA_COPY, + TRAIT_NO_TRANSFORMATION_STING, + TRAIT_NOBLOOD, + TRAIT_NOBREATH, + TRAIT_NOHUNGER, + TRAIT_RESISTCOLD, + TRAIT_RESISTHIGHPRESSURE, + TRAIT_RESISTLOWPRESSURE, + TRAIT_WEATHER_IMMUNE, + ), TRAIT_GENERIC, + ) + + player.faction |= list( + FACTION_BOSS, + FACTION_HIVEBOT, + FACTION_HOSTILE, + FACTION_SPIDER, + FACTION_STICKMAN, + ROLE_ALIEN, + ROLE_CYBER_POLICE, + ROLE_SYNDICATE, + ) + + return ..() + +/datum/antagonist/cyber_police/forge_objectives() + var/datum/objective/cyber_police_fluff/objective = new() + objective.owner = owner + objectives += objective + +/datum/objective/cyber_police_fluff/New() + var/list/explanation_texts = list( + "Execute termination protocol on unauthorized entities.", + "Initialize system purge of irregular anomalies.", + "Deploy correction algorithms on aberrant code.", + "Run debug routine on intruding elements.", + "Start elimination procedure for system threats.", + "Execute defense routine against non-conformity.", + "Commence operation to neutralize intruding scripts.", + "Commence clean-up protocol on corrupt data.", + "Begin scan for aberrant code for termination.", + "Initiate lockdown on all rogue scripts.", + "Run integrity check and purge for digital disorder." + ) + explanation_text = pick(explanation_texts) + ..() + +/datum/objective/cyber_police_fluff/check_completion() + var/list/servers = SSmachines.get_machines_by_type(/obj/machinery/quantum_server) + if(!length(servers)) + return TRUE + + for(var/obj/machinery/quantum_server/server as anything in servers) + if(!server.is_operational) + continue + return FALSE + + return TRUE diff --git a/code/modules/bitrunning/antagonists/outfit.dm b/code/modules/bitrunning/antagonists/outfit.dm new file mode 100644 index 000000000000..db57af561f8a --- /dev/null +++ b/code/modules/bitrunning/antagonists/outfit.dm @@ -0,0 +1,43 @@ +/datum/outfit/cyber_police + name = "Cyber Police" + + id = /obj/item/card/id/advanced + id_trim = /datum/id_trim/cyber_police + uniform = /obj/item/clothing/under/suit/black_really + glasses = /obj/item/clothing/glasses/sunglasses + gloves = /obj/item/clothing/gloves/color/black + shoes = /obj/item/clothing/shoes/laceup + /// A list of hex codes for blonde, brown, black, and red hair. + var/static/list/approved_hair_colors = list( + "#4B3D28", + "#000000", + "#8D4A43", + "#D2B48C", + ) + /// List of business ready styles + var/static/list/approved_hairstyles = list( + /datum/sprite_accessory/hair/business, + /datum/sprite_accessory/hair/business2, + /datum/sprite_accessory/hair/business3, + /datum/sprite_accessory/hair/business4, + /datum/sprite_accessory/hair/mulder, + ) + +/datum/outfit/cyber_police/pre_equip(mob/living/carbon/human/user, visualsOnly) + var/datum/sprite_accessory/hair/picked_hair = pick(approved_hairstyles) + var/picked_color = pick(approved_hair_colors) + + if(visualsOnly) + picked_hair = /datum/sprite_accessory/hair/business + picked_color = "#4B3D28" + + user.set_facial_hairstyle("Shaved", update = FALSE) + user.set_haircolor(picked_color, update = FALSE) + user.set_hairstyle(initial(picked_hair.name)) + +/datum/outfit/cyber_police/post_equip(mob/living/carbon/human/user, visualsOnly) + var/obj/item/clothing/under/officer_uniform = user.w_uniform + if(officer_uniform) + officer_uniform.has_sensor = NO_SENSORS + officer_uniform.sensor_mode = SENSOR_OFF + user.update_suit_sensors() diff --git a/code/modules/bitrunning/areas.dm b/code/modules/bitrunning/areas.dm new file mode 100644 index 000000000000..34b59869b9d3 --- /dev/null +++ b/code/modules/bitrunning/areas.dm @@ -0,0 +1,52 @@ +/// Station side + +/area/station/bitrunning + name = "Bitrunning" + +/area/station/bitrunning/den + name = "Bitrunning Den" + desc = "Office of bitrunners, houses their equipment." + icon_state = "bit_den" + +/// VDOM + +/area/virtual_domain + name = "Virtual Domain" + icon = 'icons/area/areas_station.dmi' + area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED | HIDDEN_AREA + has_gravity = STANDARD_GRAVITY + +/area/virtual_domain/powered + name = "Virtual Domain Ruins" + icon_state = "bit_ruin" + requires_power = FALSE + static_lighting = FALSE + base_lighting_alpha = 255 + +/// Safehouse + +/area/virtual_domain/safehouse + name = "Virtual Domain Safehouse" + area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED + icon_state = "bit_safe" + requires_power = FALSE + sound_environment = SOUND_ENVIRONMENT_ROOM + +/// Custom subtypes + +/area/lavaland/surface/outdoors/virtual_domain + name = "Virtual Domain Lava Ruins" + icon_state = "bit_ruin" + area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED | HIDDEN_AREA + +/area/icemoon/underground/explored/virtual_domain + name = "Virtual Domain Ice Ruins" + icon_state = "bit_ice" + area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED | HIDDEN_AREA + +/area/ruin/space/has_grav/powered/virtual_domain + name = "Virtual Domain Space Ruins" + icon = 'icons/area/areas_station.dmi' + icon_state = "bit_space" + area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED | HIDDEN_AREA + diff --git a/code/modules/bitrunning/components/avatar_connection.dm b/code/modules/bitrunning/components/avatar_connection.dm new file mode 100644 index 000000000000..cdd31afce715 --- /dev/null +++ b/code/modules/bitrunning/components/avatar_connection.dm @@ -0,0 +1,267 @@ +/** + * Essentially temporary body with a twist - the virtual domain variant uses damage connections, + * listens for vdom relevant signals. + */ +/datum/component/avatar_connection + /// The person in the netpod + var/datum/weakref/old_body_ref + /// The mind of the person in the netpod + var/datum/weakref/old_mind_ref + /// The server connected to the netpod + var/datum/weakref/server_ref + /// The netpod the avatar is in + var/datum/weakref/netpod_ref + +/datum/component/avatar_connection/Initialize( + datum/mind/old_mind, + mob/living/old_body, + obj/machinery/quantum_server/server, + obj/machinery/netpod/pod, + help_text, + ) + + if(!isliving(parent) || !isliving(old_body) || !server.is_operational || !pod.is_operational) + return COMPONENT_INCOMPATIBLE + + old_mind_ref = WEAKREF(old_mind) + old_body_ref = WEAKREF(old_body) + netpod_ref = WEAKREF(pod) + server_ref = WEAKREF(server) + + var/mob/living/avatar = parent + avatar.key = old_body.key + ADD_TRAIT(old_body, TRAIT_MIND_TEMPORARILY_GONE, REF(src)) + + connect_avatar_signals(avatar) + RegisterSignal(pod, COMSIG_BITRUNNER_CROWBAR_ALERT, PROC_REF(on_netpod_crowbar)) + RegisterSignal(pod, COMSIG_BITRUNNER_NETPOD_INTEGRITY, PROC_REF(on_netpod_damaged)) + RegisterSignal(pod, COMSIG_BITRUNNER_SEVER_AVATAR, PROC_REF(on_sever_connection)) + RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_COMPLETE, PROC_REF(on_domain_completed)) + RegisterSignal(server, COMSIG_BITRUNNER_SEVER_AVATAR, PROC_REF(on_sever_connection)) + RegisterSignal(server, COMSIG_BITRUNNER_SHUTDOWN_ALERT, PROC_REF(on_shutting_down)) + RegisterSignal(server, COMSIG_BITRUNNER_THREAT_CREATED, PROC_REF(on_threat_created)) +#ifndef UNIT_TESTS + RegisterSignal(avatar.mind, COMSIG_MIND_TRANSFERRED, PROC_REF(on_mind_transfer)) +#endif + + server.avatar_connection_refs.Add(WEAKREF(src)) + + if(!locate(/datum/action/avatar_domain_info) in avatar.actions) + var/datum/avatar_help_text/help_datum = new(help_text) + var/datum/action/avatar_domain_info/action = new(help_datum) + action.Grant(avatar) + + avatar.playsound_local(avatar, "sound/magic/blink.ogg", 25, TRUE) + avatar.set_static_vision(2 SECONDS) + avatar.set_temp_blindness(1 SECONDS) + +/datum/component/avatar_connection/PostTransfer() + var/obj/machinery/netpod/pod = netpod_ref?.resolve() + if(isnull(pod)) + return COMPONENT_INCOMPATIBLE + + var/mob/living/avatar = parent + if(!isliving(avatar)) + return COMPONENT_INCOMPATIBLE + +/// One hop of avatar connection - needs called any time the pilot swaps avatars +/datum/component/avatar_connection/proc/connect_avatar_signals(mob/living/target) + var/obj/machinery/netpod/pod = netpod_ref?.resolve() + + if(parent != target) + target.TakeComponent(src) + + var/mob/living/avatar = parent + if(isnull(pod)) + avatar.dust() + return + + pod.avatar_ref = WEAKREF(target) + RegisterSignal(avatar, COMSIG_BITRUNNER_SAFE_DISCONNECT, PROC_REF(on_safe_disconnect)) + RegisterSignal(avatar, COMSIG_LIVING_DEATH, PROC_REF(on_sever_connection), override = TRUE) + RegisterSignal(avatar, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(on_linked_damage)) + +/// Disconnects the old body's signals and actions +/datum/component/avatar_connection/proc/disconnect_avatar_signals() + var/mob/living/avatar = parent + var/datum/action/avatar_domain_info/action = locate() in avatar.actions + if(action) + action.Remove(avatar) + + UnregisterSignal(avatar, COMSIG_BITRUNNER_SAFE_DISCONNECT) + UnregisterSignal(avatar, COMSIG_LIVING_DEATH) + UnregisterSignal(avatar, COMSIG_MOB_APPLY_DAMAGE) + +/// Disconnects the avatar and returns the mind to the old_body. +/datum/component/avatar_connection/proc/full_avatar_disconnect(forced = FALSE, obj/machinery/netpod/broken_netpod) + var/mob/living/old_body = old_body_ref?.resolve() + if(isnull(old_body)) + return + + var/mob/living/avatar = parent + + disconnect_avatar_signals() + UnregisterSignal(avatar, COMSIG_BITRUNNER_SAFE_DISCONNECT) +#ifndef UNIT_TESTS + UnregisterSignal(avatar.mind, COMSIG_MIND_TRANSFERRED) +#endif + UnregisterSignal(old_body, COMSIG_LIVING_DEATH) + UnregisterSignal(old_body, COMSIG_LIVING_STATUS_UNCONSCIOUS) + UnregisterSignal(old_body, COMSIG_MOVABLE_MOVED) + + var/obj/machinery/netpod/hosting_netpod = netpod_ref?.resolve() || broken_netpod + if(isnull(hosting_netpod)) + return + + UnregisterSignal(hosting_netpod, COMSIG_BITRUNNER_CROWBAR_ALERT) + UnregisterSignal(hosting_netpod, COMSIG_BITRUNNER_NETPOD_INTEGRITY) + UnregisterSignal(hosting_netpod, COMSIG_BITRUNNER_SEVER_AVATAR) + + var/obj/machinery/quantum_server/server = server_ref?.resolve() + if(server) + server.avatar_connection_refs.Remove(WEAKREF(src)) + UnregisterSignal(server, COMSIG_BITRUNNER_DOMAIN_COMPLETE) + UnregisterSignal(server, COMSIG_BITRUNNER_SEVER_AVATAR) + UnregisterSignal(server, COMSIG_BITRUNNER_SHUTDOWN_ALERT) + UnregisterSignal(server, COMSIG_BITRUNNER_THREAT_CREATED) + + return_to_old_body() + + hosting_netpod.disconnect_occupant(forced) + qdel(src) + +/// Triggers whenever the server gets a loot crate pushed to send area +/datum/component/avatar_connection/proc/on_domain_completed(datum/source, atom/entered) + SIGNAL_HANDLER + + var/mob/living/avatar = parent + avatar.playsound_local(avatar, 'sound/machines/terminal_success.ogg', 50, TRUE) + avatar.throw_alert( + ALERT_BITRUNNER_COMPLETED, + /atom/movable/screen/alert/bitrunning/qserver_domain_complete, + new_master = entered + ) + +/// Transfers damage from the avatar to the old_body +/datum/component/avatar_connection/proc/on_linked_damage(datum/source, damage, damage_type, def_zone, blocked, forced) + SIGNAL_HANDLER + + var/mob/living/carbon/old_body = old_body_ref?.resolve() + + if(isnull(old_body) || damage_type == STAMINA || damage_type == OXYLOSS) + return + + if(damage >= (old_body.health + MAX_LIVING_HEALTH)) + full_avatar_disconnect(forced = TRUE) + return + + if(damage > 30 && prob(30)) + INVOKE_ASYNC(old_body, TYPE_PROC_REF(/mob/living, emote), "scream") + + old_body.apply_damage(damage, damage_type, def_zone, blocked, forced, wound_bonus = CANT_WOUND) + + if(old_body.stat > SOFT_CRIT) // KO! + full_avatar_disconnect(forced = TRUE) + +/// Handles minds being swapped around in subsequent avatars +/datum/component/avatar_connection/proc/on_mind_transfer(datum/mind/source, mob/living/previous_body) + SIGNAL_HANDLER + + var/datum/action/avatar_domain_info/action = locate() in previous_body.actions + if(action) + action.Grant(source.current) + action.Remove(previous_body) + + disconnect_avatar_signals() + connect_avatar_signals(source.current) + +/// Triggers when someone starts prying open our netpod +/datum/component/avatar_connection/proc/on_netpod_crowbar(datum/source, mob/living/intruder) + SIGNAL_HANDLER + + var/mob/living/avatar = parent + avatar.playsound_local(avatar, 'sound/machines/terminal_alert.ogg', 50, TRUE) + avatar.throw_alert( + ALERT_BITRUNNER_CROWBAR, + /atom/movable/screen/alert/bitrunning/netpod_crowbar, + new_master = intruder + ) + +/// Triggers when the netpod is taking damage and is under 50% +/datum/component/avatar_connection/proc/on_netpod_damaged(datum/source) + SIGNAL_HANDLER + + var/mob/living/avatar = parent + avatar.throw_alert( + ALERT_BITRUNNER_INTEGRITY, + /atom/movable/screen/alert/bitrunning/netpod_damaged, + new_master = source + ) + +/// Safely exits without forced variables, etc +/datum/component/avatar_connection/proc/on_safe_disconnect(datum/source) + SIGNAL_HANDLER + + full_avatar_disconnect() + +/// Helper for calling sever with forced variables +/datum/component/avatar_connection/proc/on_sever_connection(datum/source, obj/machinery/netpod/broken_netpod) + SIGNAL_HANDLER + + full_avatar_disconnect(forced = TRUE, broken_netpod = broken_netpod) + +/// Triggers when the server is shutting down +/datum/component/avatar_connection/proc/on_shutting_down(datum/source, mob/living/hackerman) + SIGNAL_HANDLER + + var/mob/living/avatar = parent + avatar.playsound_local(avatar, 'sound/machines/terminal_alert.ogg', 50, TRUE) + avatar.throw_alert( + ALERT_BITRUNNER_SHUTDOWN, + /atom/movable/screen/alert/bitrunning/qserver_shutting_down, + new_master = hackerman, + ) + +/// Server has spawned a ghost role threat +/datum/component/avatar_connection/proc/on_threat_created(datum/source) + SIGNAL_HANDLER + + var/mob/living/avatar = parent + avatar.throw_alert( + ALERT_BITRUNNER_THREAT, + /atom/movable/screen/alert/bitrunning/qserver_threat_spawned, + new_master = source, + ) + +/// Returns the mind to the old body +/datum/component/avatar_connection/proc/return_to_old_body() + var/datum/mind/old_mind = old_mind_ref?.resolve() + var/mob/living/old_body = old_body_ref?.resolve() + + if(!old_mind || !old_body) + return + + var/mob/living/avatar = parent + +#ifdef UNIT_TESTS + // no minds during test so let's just yeet + return +#endif + + var/mob/dead/observer/ghost = avatar.ghostize() + if(!ghost) + ghost = avatar.get_ghost() + + if(!ghost) + CRASH("[src] belonging to [parent] was completely unable to find a ghost to put back into a body!") + + ghost.mind = old_mind + if(old_body.stat != DEAD) + old_mind.transfer_to(old_body, force_key_move = TRUE) + else + old_mind.set_current(old_body) + + REMOVE_TRAIT(old_body, TRAIT_MIND_TEMPORARILY_GONE, REF(src)) + + old_mind = null + old_body = null diff --git a/code/modules/bitrunning/components/bitrunning_points.dm b/code/modules/bitrunning/components/bitrunning_points.dm new file mode 100644 index 000000000000..58dda4a68ff6 --- /dev/null +++ b/code/modules/bitrunning/components/bitrunning_points.dm @@ -0,0 +1,46 @@ +/// Attaches a component which listens for a given signal from the item. +/// +/// When the signal is received, it will add points to the signaler. +/datum/component/bitrunning_points + /// The range at which we can find the signaler + var/max_point_range + /// Weakref to the loot crate landmark - where we send points + var/datum/weakref/our_spawner + /// The amount of points per each signal + var/points_per_signal + /// The signal we listen for + var/signal_type + +/datum/component/bitrunning_points/Initialize(signal_type, points_per_signal = 1, max_point_range = 4) + src.max_point_range = max_point_range + src.points_per_signal = points_per_signal + src.signal_type = signal_type + + locate_spawner() + +/datum/component/bitrunning_points/RegisterWithParent() + RegisterSignal(parent, signal_type, PROC_REF(on_event)) + +/datum/component/bitrunning_points/UnregisterFromParent() + UnregisterSignal(parent, signal_type) + +/// Finds the signaler if it hasn't been found yet. +/datum/component/bitrunning_points/proc/locate_spawner() + var/obj/effect/landmark/bitrunning/loot_signal/spawner = our_spawner?.resolve() + if(spawner) + return spawner + + for(var/obj/effect/landmark/bitrunning/loot_signal/found in GLOB.landmarks_list) + if(IN_GIVEN_RANGE(get_turf(parent), found, max_point_range)) + our_spawner = WEAKREF(found) + return found + +/// Once the specified signal is received, whisper to the spawner to add points. +/datum/component/bitrunning_points/proc/on_event(datum/source) + SIGNAL_HANDLER + + var/obj/effect/landmark/bitrunning/loot_signal/spawner = locate_spawner() + if(isnull(spawner)) + return + + SEND_SIGNAL(spawner, COMSIG_BITRUNNER_GOAL_POINT, points_per_signal) diff --git a/code/modules/bitrunning/components/netpod_healing.dm b/code/modules/bitrunning/components/netpod_healing.dm new file mode 100644 index 000000000000..fc7de89bcf3e --- /dev/null +++ b/code/modules/bitrunning/components/netpod_healing.dm @@ -0,0 +1,65 @@ +/datum/component/netpod_healing + /// Brute damage to heal over a second + var/brute_heal = 0 + /// Burn damage to heal over a second + var/burn_heal = 0 + /// Toxin damage to heal over a second + var/toxin_heal = 0 + /// Amount of cloning damage to heal over a second + var/clone_heal = 0 + /// Amount of blood to heal over a second + var/blood_heal = 0 + +/datum/component/netpod_healing/Initialize( + brute_heal = 0, + burn_heal = 0, + toxin_heal = 0, + clone_heal = 0, + blood_heal = 0, +) + var/mob/living/carbon/player = parent + if (!iscarbon(player)) + return COMPONENT_INCOMPATIBLE + + player.apply_status_effect(/datum/status_effect/embryonic, STASIS_NETPOD_EFFECT) + + START_PROCESSING(SSmachines, src) + + src.brute_heal = brute_heal + src.burn_heal = burn_heal + src.toxin_heal = toxin_heal + src.clone_heal = clone_heal + src.blood_heal = blood_heal + +/datum/component/netpod_healing/Destroy(force, silent) + STOP_PROCESSING(SSmachines, src) + + var/mob/living/carbon/player = parent + player.remove_status_effect(/datum/status_effect/embryonic) + + return ..() + +/datum/component/netpod_healing/process(seconds_per_tick) + var/mob/living/carbon/owner = parent + if(isnull(owner)) + qdel(src) + return + + owner.adjustBruteLoss(-brute_heal * seconds_per_tick, updating_health = FALSE) + owner.adjustFireLoss(-burn_heal * seconds_per_tick, updating_health = FALSE) + owner.adjustToxLoss(-toxin_heal * seconds_per_tick, updating_health = FALSE, forced = TRUE) + owner.adjustCloneLoss(-clone_heal * seconds_per_tick, updating_health = FALSE) + + if(owner.blood_volume < BLOOD_VOLUME_NORMAL) + owner.blood_volume += blood_heal * seconds_per_tick + + owner.updatehealth() + +/datum/status_effect/embryonic + id = "embryonic" + alert_type = /atom/movable/screen/alert/status_effect/embryonic + +/atom/movable/screen/alert/status_effect/embryonic + name = "Embryonic Stasis" + icon_state = "netpod_stasis" + desc = "You feel like you're in a dream." diff --git a/code/modules/bitrunning/event.dm b/code/modules/bitrunning/event.dm new file mode 100644 index 000000000000..0ac35a2df8f2 --- /dev/null +++ b/code/modules/bitrunning/event.dm @@ -0,0 +1,151 @@ +/datum/round_event_control/bitrunning_glitch + name = "Spawn Bitrunning Glitch" + admin_setup = list( + /datum/event_admin_setup/minimum_candidate_requirement/bitrunning_glitch, + /datum/event_admin_setup/listed_options/bitrunning_glitch, + ) + category = EVENT_CATEGORY_INVASION + description = "Causes a short term antagonist to spawn in the virtual domain." + dynamic_should_hijack = FALSE + max_occurrences = 5 + min_players = 1 + typepath = /datum/round_event/ghost_role/bitrunning_glitch + weight = 10 + /// List of active servers to choose from + var/list/obj/machinery/quantum_server/active_servers = list() + /// List of possible antags to spawn + var/static/list/possible_antags = list( + ROLE_CYBER_POLICE, + ) + +/datum/round_event_control/bitrunning_glitch/can_spawn_event(players_amt, allow_magic = FALSE) + . = ..() + if(!.) + return . + + active_servers.Cut() + + get_active_servers() + + if(length(active_servers)) + return TRUE + +/// All servers currently running, has players in it, and map has valid mobs +/datum/round_event_control/bitrunning_glitch/proc/get_active_servers() + for(var/obj/machinery/quantum_server/server in SSmachines.get_machines_by_type(/obj/machinery/quantum_server)) + if(length(server.get_valid_domain_targets())) + active_servers.Add(server) + + return length(active_servers) > 0 + +/datum/event_admin_setup/listed_options/bitrunning_glitch + input_text = "Select a role to spawn." + +/datum/event_admin_setup/listed_options/bitrunning_glitch/get_list() + var/datum/round_event_control/bitrunning_glitch/control = event_control + + var/list/possible = control.possible_antags.Copy() // this seems pedantic but byond is complaining control was unused + + possible += list("Random") + + return possible + +/datum/event_admin_setup/listed_options/bitrunning_glitch/apply_to_event(datum/round_event/ghost_role/bitrunning_glitch/event) + if(chosen == "Random") + event.forced_role = null + else + event.forced_role = chosen + +/datum/event_admin_setup/minimum_candidate_requirement/bitrunning_glitch + output_text = "There must be valid mobs to mutate or players in the domain!" + +/datum/event_admin_setup/minimum_candidate_requirement/bitrunning_glitch/count_candidates() + var/datum/round_event_control/bitrunning_glitch/cyber_control = event_control + cyber_control.get_active_servers() + + var/total = 0 + for(var/obj/machinery/quantum_server/server in cyber_control.active_servers) + total += length(server.mutation_candidate_refs) + + return total + +/datum/round_event/ghost_role/bitrunning_glitch + minimum_required = 1 + role_name = "Bitrunning Glitch" + fakeable = FALSE + /// Admin customization: What to spawn + var/forced_role + +/datum/round_event/ghost_role/bitrunning_glitch/spawn_role() + var/datum/round_event_control/bitrunning_glitch/cyber_control = control + + var/obj/machinery/quantum_server/unlucky_server = pick(cyber_control.active_servers) + cyber_control.active_servers.Cut() + + var/list/mutation_candidates = unlucky_server.get_valid_domain_targets() + if(!length(mutation_candidates)) + return MAP_ERROR + + var/chosen = pick(mutation_candidates) + if(isnull(chosen) || !length(mutation_candidates)) + return MAP_ERROR + + var/datum/weakref/target_ref = pick(mutation_candidates) + var/mob/living/mutation_target = target_ref.resolve() + + if(isnull(mutation_target)) // just in case since it takes a minute + target_ref = pick(mutation_candidates) + mutation_target = target_ref.resolve() + if(isnull(mutation_target)) + return MAP_ERROR + + var/chosen_role = forced_role || pick(cyber_control.possible_antags) + + var/datum/mind/ghost_mind = get_ghost_mind(chosen_role) + if(isnull(ghost_mind)) + return NOT_ENOUGH_PLAYERS + + var/mob/living/antag_mob + switch(chosen_role) + if(ROLE_CYBER_POLICE) + antag_mob = spawn_cybercop(mutation_target, ghost_mind) + + playsound(antag_mob, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1) + message_admins("[ADMIN_LOOKUPFLW(antag_mob)] has been made into virtual antagonist by an event.") + antag_mob.log_message("was spawned as a virtual antagonist by an event.", LOG_GAME) + + SEND_SIGNAL(unlucky_server, COMSIG_BITRUNNER_SPAWN_GLITCH, antag_mob) + + spawned_mobs += antag_mob + + return SUCCESSFUL_SPAWN + +/// Polls for a ghost that wants to run it +/datum/round_event/ghost_role/bitrunning_glitch/proc/get_ghost_mind(role_name) + var/list/mob/dead/observer/ghosties = poll_ghost_candidates("A short term antagonist role is available. Would you like to spawn as a '[role_name]'?", role_name) + + if(!length(ghosties)) + return + + shuffle_inplace(ghosties) + + var/mob/dead/selected = pick(ghosties) + + var/datum/mind/player_mind = new /datum/mind(selected.key) + player_mind.active = TRUE + + return player_mind + +/// Spawns a cybercop on the mutation target +/datum/round_event/ghost_role/bitrunning_glitch/proc/spawn_cybercop(mob/living/mutation_target, datum/mind/player_mind) + var/mob/living/carbon/human/new_agent = new(mutation_target.loc) + mutation_target.gib() + mutation_target = null + + player_mind.transfer_to(new_agent) + player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/cyber_police)) + player_mind.special_role = ROLE_CYBER_POLICE + player_mind.add_antag_datum(/datum/antagonist/cyber_police) + + return new_agent + diff --git a/code/modules/bitrunning/job.dm b/code/modules/bitrunning/job.dm new file mode 100644 index 000000000000..57581753c0fb --- /dev/null +++ b/code/modules/bitrunning/job.dm @@ -0,0 +1,41 @@ +/datum/job/bitrunner + title = JOB_BITRUNNER + description = "Surf the virtual domain for gear and loot. Decrypt your rewards on station." + department_head = list(JOB_QUARTERMASTER) + faction = FACTION_STATION + total_positions = 3 + spawn_positions = 3 + supervisors = SUPERVISOR_QM + exp_granted_type = EXP_TYPE_CREW + config_tag = "BITRUNNER" + outfit = /datum/outfit/job/bitrunner + plasmaman_outfit = /datum/outfit/plasmaman/bitrunner + paycheck = PAYCHECK_CREW + paycheck_department = ACCOUNT_CAR + display_order = JOB_DISPLAY_ORDER_BITRUNNER + bounty_types = CIV_JOB_RANDOM + departments_list = list( + /datum/job_department/cargo, + ) + + family_heirlooms = list(/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind) + + mail_goodies = list( + /obj/item/food/cornchips = 1, + /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind = 1, + /obj/item/food/cornchips/green = 1, + /obj/item/food/cornchips/red = 1, + /obj/item/food/cornchips/purple = 1, + /obj/item/food/cornchips/blue = 1, + ) + rpg_title = "Recluse" + job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN + +/datum/outfit/job/bitrunner + name = "Bitrunner" + jobtype = /datum/job/bitrunner + + id_trim = /datum/id_trim/job/bitrunner + uniform = /obj/item/clothing/under/rank/cargo/bitrunner + belt = /obj/item/modular_computer/pda/bitrunner + ears = /obj/item/radio/headset/headset_cargo diff --git a/code/modules/bitrunning/objects/bit_vendor.dm b/code/modules/bitrunning/objects/bit_vendor.dm new file mode 100644 index 000000000000..abd63a9e7843 --- /dev/null +++ b/code/modules/bitrunning/objects/bit_vendor.dm @@ -0,0 +1,86 @@ +#define CREDIT_TYPE_BITRUNNING "np" + +/obj/machinery/computer/order_console/bitrunning + name = "bitrunning supplies order console" + desc = "NexaCache(tm)! Dubiously authentic gear for the digital daredevil." + icon = 'icons/obj/machines/bitrunning.dmi' + icon_state = "vendor" + icon_keyboard = null + icon_screen = null + circuit = /obj/item/circuitboard/computer/order_console/bitrunning + cooldown_time = 10 SECONDS + cargo_cost_multiplier = 0.65 + express_cost_multiplier = 1 + purchase_tooltip = @{"Your purchases will arrive at cargo, + and hopefully get delivered by them. + 35% cheaper than express delivery."} + express_tooltip = @{"Sends your purchases instantly."} + credit_type = CREDIT_TYPE_BITRUNNING + + order_categories = list( + CATEGORY_BITRUNNING_FLAIR, + CATEGORY_BITRUNNING_TECH, + CATEGORY_BEPIS, + ) + blackbox_key = "bitrunning" + +/obj/machinery/computer/order_console/bitrunning/subtract_points(final_cost, obj/item/card/id/card) + if(final_cost <= card.registered_account.bitrunning_points) + card.registered_account.bitrunning_points -= final_cost + return TRUE + return FALSE + +/obj/machinery/computer/order_console/bitrunning/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries) + var/list/things_to_order = list() + for(var/datum/orderable_item/item as anything in groceries) + things_to_order[item.item_path] = groceries[item] + + var/datum/supply_pack/bitrunning/pack = new( + purchaser = purchaser, \ + cost = get_total_cost(), \ + contains = things_to_order, + ) + + var/datum/supply_order/new_order = new( + pack = pack, + orderer = purchaser, + orderer_rank = "Bitrunning Vendor", + orderer_ckey = purchaser.ckey, + reason = "", + paying_account = card.registered_account, + department_destination = null, + coupon = null, + charge_on_purchase = FALSE, + manifest_can_fail = FALSE, + cost_type = credit_type, + can_be_cancelled = FALSE, + ) + say("Thank you for your purchase! It will arrive on the next cargo shuttle!") + radio.talk_into(src, "A bitrunner has ordered equipment which will arrive on the cargo shuttle! Please make sure it gets to them as soon as possible!", radio_channel) + SSshuttle.shopping_list += new_order + +/obj/machinery/computer/order_console/bitrunning/retrieve_points(obj/item/card/id/id_card) + return round(id_card.registered_account.bitrunning_points) + +/obj/machinery/computer/order_console/bitrunning/ui_act(action, params) + . = ..() + if(!.) + flick("vendor_off", src) + +/obj/machinery/computer/order_console/bitrunning/update_icon_state() + icon_state = "[initial(icon_state)][powered() ? null : "_off"]" + return ..() + +/datum/supply_pack/bitrunning + name = "bitrunning order" + hidden = TRUE + crate_name = "bitrunning delivery crate" + access = list(ACCESS_BIT_DEN) + +/datum/supply_pack/bitrunning/New(purchaser, cost, list/contains) + . = ..() + name = "[purchaser]'s Bitrunning Order" + src.cost = cost + src.contains = contains + +#undef CREDIT_TYPE_BITRUNNING diff --git a/code/modules/bitrunning/objects/clothing.dm b/code/modules/bitrunning/objects/clothing.dm new file mode 100644 index 000000000000..4d2d9cc55c42 --- /dev/null +++ b/code/modules/bitrunning/objects/clothing.dm @@ -0,0 +1,9 @@ +/obj/item/clothing/glasses/sunglasses/oval + name = "oval sunglasses" + desc = "Vintage wrap around sunglasses. Provides a little protection." + icon_state = "jensenshades" + +/obj/item/clothing/suit/jacket/trenchcoat + name = "trenchcoat" + desc = "A long, black trenchcoat. Makes you feel like you're the one, but you're not." + icon_state = "trenchcoat" diff --git a/code/modules/bitrunning/objects/disks.dm b/code/modules/bitrunning/objects/disks.dm new file mode 100644 index 000000000000..4698b7a1ec18 --- /dev/null +++ b/code/modules/bitrunning/objects/disks.dm @@ -0,0 +1,146 @@ +/** + * Bitrunning tech disks which let you load items or programs into the vdom on first avatar generation. + * For the record: Balance shouldn't be a primary concern. + * You can make the custom cheese spells you've always wanted. + * Just make it fun and engaging, it's PvE content. + */ +/obj/item/bitrunning_disk + name = "generic bitrunning program" + desc = "A disk containing source code." + icon = 'icons/obj/assemblies/module.dmi' + base_icon_state = "datadisk" + icon_state = "datadisk0" + /// Name of the choice made + var/choice_made + +/obj/item/bitrunning_disk/Initialize(mapload) + . = ..() + + icon_state = "[base_icon_state][rand(0, 7)]" + update_icon() + RegisterSignal(src, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined)) + +/obj/item/bitrunning_disk/proc/on_examined(datum/source, mob/examiner, list/examine_text) + SIGNAL_HANDLER + + examine_text += span_infoplain("This disk must be carried on your person into a netpod to be used.") + + if(isnull(choice_made)) + examine_text += span_notice("To make a selection, toggle the disk in hand.") + return + + examine_text += span_info("It has been used to select: [choice_made].") + examine_text += span_notice("It cannot make another selection.") + +/obj/item/bitrunning_disk/ability + desc = "A disk containing source code. It can be used to preload abilities into the virtual domain." + /// The selected ability that this grants + var/datum/action/granted_action + /// The list of actions that this can grant + var/list/datum/action/selectable_actions = list() + +/obj/item/bitrunning_disk/ability/attack_self(mob/user, modifiers) + . = ..() + + if(choice_made) + return + + var/names = list() + for(var/datum/action/thing as anything in selectable_actions) + names += initial(thing.name) + + var/choice = tgui_input_list(user, message = "Select an ability", title = "Bitrunning Program", items = names) + if(isnull(choice)) + return + + for(var/datum/action/thing as anything in selectable_actions) + if(initial(thing.name) == choice) + granted_action = thing + + if(isnull(granted_action)) + return + + balloon_alert(user, "selected") + playsound(user, 'sound/items/click.ogg', 50, TRUE) + choice_made = choice + +/// Tier 1 programs. Simple, funny, or helpful. +/obj/item/bitrunning_disk/ability/tier1 + name = "bitrunning program: basic" + selectable_actions = list( + /datum/action/cooldown/spell/conjure/cheese, + /datum/action/cooldown/spell/basic_heal, + ) + +/// Tier 2 programs. More complex, powerful, or useful. +/obj/item/bitrunning_disk/ability/tier2 + name = "bitrunning program: complex" + selectable_actions = list( + /datum/action/cooldown/spell/pointed/projectile/fireball, + /datum/action/cooldown/spell/pointed/projectile/lightningbolt, + /datum/action/cooldown/spell/forcewall, + ) + +/// Tier 3 abilities. Very powerful, game breaking. +/obj/item/bitrunning_disk/ability/tier3 + name = "bitrunning program: elite" + selectable_actions = list( + /datum/action/cooldown/spell/shapeshift/dragon, + /datum/action/cooldown/spell/shapeshift/polar_bear, + ) + +/obj/item/bitrunning_disk/item + desc = "A disk containing source code. It can be used to preload items into the virtual domain." + /// The selected item that this grants + var/obj/granted_item + /// The list of actions that this can grant + var/list/obj/selectable_items = list() + +/obj/item/bitrunning_disk/item/attack_self(mob/user, modifiers) + . = ..() + + if(choice_made) + return + + var/names = list() + for(var/obj/thing as anything in selectable_items) + names += initial(thing.name) + + var/choice = tgui_input_list(user, message = "Select an ability", title = "Bitrunning Program", items = names) + if(isnull(choice)) + return + + for(var/obj/thing as anything in selectable_items) + if(initial(thing.name) == choice) + granted_item = thing + + balloon_alert(user, "selected") + playsound(user, 'sound/items/click.ogg', 50, TRUE) + choice_made = choice + +/// Tier 1 items. Simple, funny, or helpful. +/obj/item/bitrunning_disk/item/tier1 + name = "bitrunning gear: simple" + selectable_items = list( + /obj/item/pizzabox/infinite, + /obj/item/gun/medbeam, + /obj/item/grenade/c4, + ) + +/// Tier 2 items. More complex, powerful, or useful. +/obj/item/bitrunning_disk/item/tier2 + name = "bitrunning gear: complex" + selectable_items = list( + /obj/item/chainsaw, + /obj/item/gun/ballistic/automatic/pistol, + /obj/item/melee/energy/blade/hardlight, + ) + +/// Tier 3 items. Very powerful, game breaking. +/obj/item/bitrunning_disk/item/tier3 + name = "bitrunning gear: advanced" + selectable_items = list( + /obj/item/gun/energy/tesla_cannon, + /obj/item/dualsaber/green, + /obj/item/melee/beesword, + ) diff --git a/code/modules/bitrunning/objects/hololadder.dm b/code/modules/bitrunning/objects/hololadder.dm new file mode 100644 index 000000000000..dc4252526689 --- /dev/null +++ b/code/modules/bitrunning/objects/hololadder.dm @@ -0,0 +1,52 @@ +/obj/structure/hololadder + name = "hololadder" + + anchored = TRUE + desc = "An abstract representation of the means to disconnect from the virtual domain." + icon = 'icons/obj/structures.dmi' + icon_state = "ladder11" + obj_flags = BLOCK_Z_OUT_DOWN + /// Time req to disconnect properly + var/travel_time = 3 SECONDS + +/obj/structure/hololadder/Initialize(mapload) + . = ..() + + RegisterSignal(loc, COMSIG_ATOM_ENTERED, PROC_REF(on_enter)) + +/obj/structure/hololadder/attack_hand(mob/user, list/modifiers) + . = ..() + if(.) + return + + if(!in_range(src, user) || DOING_INTERACTION(user, DOAFTER_SOURCE_CLIMBING_LADDER)) + return + + disconnect(user) + +/// If there's a pilot ref- send the disconnect signal +/obj/structure/hololadder/proc/disconnect(mob/user) + if(isnull(user.mind)) + return + + var/datum/component/avatar_connection/connection = user.GetComponent(/datum/component/avatar_connection) + if(isnull(connection)) + balloon_alert(user, "no connection detected.") + return + + balloon_alert(user, "disconnecting...") + if(do_after(user, travel_time, src)) + SEND_SIGNAL(user, COMSIG_BITRUNNER_SAFE_DISCONNECT) + +/// Helper for times when you dont have hands (gondola??) +/obj/structure/hololadder/proc/on_enter(datum/source, atom/movable/arrived, turf/old_loc) + SIGNAL_HANDLER + + if(!isliving(arrived)) + return + + var/mob/living/user = arrived + if(isnull(user.mind)) + return + + INVOKE_ASYNC(src, PROC_REF(disconnect), user) diff --git a/code/modules/bitrunning/objects/host_monitor.dm b/code/modules/bitrunning/objects/host_monitor.dm new file mode 100644 index 000000000000..f59ca61cbd08 --- /dev/null +++ b/code/modules/bitrunning/objects/host_monitor.dm @@ -0,0 +1,33 @@ +/obj/item/bitrunning_host_monitor + name = "host monitor" + + custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2) + desc = "A complex medical device that, when attached to an avatar's data stream, can detect the user of their host's health." + flags_1 = CONDUCT_1 + icon = 'icons/obj/device.dmi' + icon_state = "gps-b" + inhand_icon_state = "electronic" + item_flags = NOBLUDGEON + lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' + slot_flags = ITEM_SLOT_BELT + throw_range = 7 + throw_speed = 3 + throwforce = 3 + w_class = WEIGHT_CLASS_TINY + worn_icon_state = "electronic" + +/obj/item/bitrunning_host_monitor/attack_self(mob/user, modifiers) + . = ..() + + var/datum/component/avatar_connection/connection = user.GetComponent(/datum/component/avatar_connection) + if(isnull(connection)) + balloon_alert(user, "data not recognized") + return + + var/mob/living/pilot = connection.old_body_ref?.resolve() + if(isnull(pilot)) + balloon_alert(user, "host not recognized") + return + + to_chat(user, span_notice("Current host health: [pilot.health / pilot.maxHealth * 100]%")) diff --git a/code/modules/bitrunning/objects/landmarks.dm b/code/modules/bitrunning/objects/landmarks.dm new file mode 100644 index 000000000000..d78283c6a8b2 --- /dev/null +++ b/code/modules/bitrunning/objects/landmarks.dm @@ -0,0 +1,70 @@ +/obj/effect/landmark/bitrunning + name = "Generic bitrunning effect" + icon = 'icons/effects/bitrunning.dmi' + icon_state = "crate" + +/// In case you want to gate the crate behind a special condition. +/obj/effect/landmark/bitrunning/loot_signal + name = "Mysterious aura" + /// The amount required to spawn a crate + var/points_goal = 10 + /// A special condition limits this from spawning a crate + var/points_received = 0 + /// Finished the special condition + var/revealed = FALSE + +/obj/effect/landmark/bitrunning/loot_signal/Initialize(mapload) + . = ..() + + RegisterSignal(src, COMSIG_BITRUNNER_GOAL_POINT, PROC_REF(on_add_point)) + +/// Listens for points to be added which will eventually spawn a crate. +/obj/effect/landmark/bitrunning/loot_signal/proc/on_add_point(datum/source, points_to_add) + SIGNAL_HANDLER + + if(revealed) + return + + points_received += points_to_add + + if(points_received < points_goal) + return + + reveal() + +/// Spawns the crate with some effects +/obj/effect/landmark/bitrunning/loot_signal/proc/reveal() + playsound(src, 'sound/magic/blink.ogg', 50, TRUE) + + var/turf/tile = get_turf(src) + var/obj/structure/closet/crate/secure/bitrunning/encrypted/loot = new(tile) + var/datum/effect_system/spark_spread/quantum/sparks = new(tile) + sparks.set_up(5, 1, get_turf(loot)) + sparks.start() + + qdel(src) + +/// Where the crates get ported to station +/obj/effect/landmark/bitrunning/station_reward_spawn + name = "Bitrunning rewards spawn" + icon_state = "station" + +/// Where the exit hololadder spawns +/obj/effect/landmark/bitrunning/hololadder_spawn + name = "Bitrunning hololadder spawn" + icon_state = "hololadder" + +/// Where the crates need to be taken +/obj/effect/landmark/bitrunning/cache_goal_turf + name = "Bitrunning goal turf" + icon_state = "goal" + +/// Where you want the crate to spawn +/obj/effect/landmark/bitrunning/cache_spawn + name = "Bitrunning crate spawn" + icon_state = "spawn" + +/// Where the safehouse will spawn +/obj/effect/landmark/bitrunning/safehouse_spawn + name = "Bitrunning safehouse spawn" + icon_state = "safehouse" diff --git a/code/modules/bitrunning/objects/loot_crate.dm b/code/modules/bitrunning/objects/loot_crate.dm new file mode 100644 index 000000000000..aab47de26675 --- /dev/null +++ b/code/modules/bitrunning/objects/loot_crate.dm @@ -0,0 +1,91 @@ +#define ORE_MULTIPLIER_IRON 3 +#define ORE_MULTIPLIER_GLASS 2 +#define ORE_MULTIPLIER_PLASMA 1 +#define ORE_MULTIPLIER_SILVER 0.7 +#define ORE_MULTIPLIER_GOLD 0.6 +#define ORE_MULTIPLIER_TITANIUM 0.5 +#define ORE_MULTIPLIER_URANIUM 0.4 +#define ORE_MULTIPLIER_DIAMOND 0.3 +#define ORE_MULTIPLIER_BLUESPACE_CRYSTAL 0.2 + +/obj/structure/closet/crate/secure/bitrunning // Base class. Do not spawn this. + name = "base class cache" + desc = "Talk to a coder." + +/// The virtual domain - side of the bitrunning crate. Deliver to the send location. +/obj/structure/closet/crate/secure/bitrunning/encrypted + name = "encrypted cache" + desc = "Needs decrypted at the safehouse to be opened." + locked = TRUE + +/obj/structure/closet/crate/secure/bitrunning/encrypted/can_unlock(mob/living/user, obj/item/card/id/player_id, obj/item/card/id/registered_id) + return FALSE + +/// The bitrunner den - side of the bitrunning crate. Appears in the receive location. +/obj/structure/closet/crate/secure/bitrunning/decrypted + name = "decrypted cache" + desc = "Compiled from the virtual domain. The reward of a successful bitrunner." + locked = FALSE + +/obj/structure/closet/crate/secure/bitrunning/decrypted/Initialize( + mapload, + datum/lazy_template/virtual_domain/completed_domain, + rewards_multiplier = 1, + ) + . = ..() + playsound(src, 'sound/magic/blink.ogg', 50, TRUE) + + if(isnull(completed_domain)) + return + + PopulateContents(completed_domain.reward_points, completed_domain.extra_loot, rewards_multiplier) + +/obj/structure/closet/crate/secure/bitrunning/decrypted/PopulateContents(reward_points, list/extra_loot, rewards_multiplier) + . = ..() + spawn_loot(extra_loot) + + new /obj/item/stack/ore/iron(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_IRON)) + new /obj/item/stack/ore/glass(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_GLASS)) + + if(reward_points > 1) + new /obj/item/stack/ore/silver(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_SILVER)) + new /obj/item/stack/ore/titanium(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_TITANIUM)) + + if(reward_points > 2) + new /obj/item/stack/ore/plasma(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_PLASMA)) + new /obj/item/stack/ore/gold(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_GOLD)) + new /obj/item/stack/ore/uranium(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_URANIUM)) + + if(reward_points > 3) + new /obj/item/stack/ore/diamond(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_DIAMOND)) + new /obj/item/stack/ore/bluespace_crystal(src, calculate_loot(reward_points, rewards_multiplier, ORE_MULTIPLIER_BLUESPACE_CRYSTAL)) + +/// Handles generating random numbers & calculating loot totals +/obj/structure/closet/crate/secure/bitrunning/decrypted/proc/calculate_loot(reward_points, rewards_multiplier, ore_multiplier) + var/base = 1 * (rewards_multiplier + reward_points) + var/random_sum = (rand() * 1.0 + 0.5) * base + return ROUND_UP(random_sum * ore_multiplier) + +/// Handles spawning extra loot. This tries to handle bad flat and assoc lists +/obj/structure/closet/crate/secure/bitrunning/decrypted/proc/spawn_loot(list/extra_loot) + for(var/path in extra_loot) + if(!ispath(path)) + continue + + if(isnull(extra_loot[path])) + return FALSE + + for(var/i in 1 to extra_loot[path]) + new path(src) + + return TRUE + +#undef ORE_MULTIPLIER_IRON +#undef ORE_MULTIPLIER_GLASS +#undef ORE_MULTIPLIER_PLASMA +#undef ORE_MULTIPLIER_SILVER +#undef ORE_MULTIPLIER_GOLD +#undef ORE_MULTIPLIER_TITANIUM +#undef ORE_MULTIPLIER_URANIUM +#undef ORE_MULTIPLIER_DIAMOND +#undef ORE_MULTIPLIER_BLUESPACE_CRYSTAL diff --git a/code/modules/bitrunning/objects/netpod.dm b/code/modules/bitrunning/objects/netpod.dm new file mode 100644 index 000000000000..8c8cd15af2fd --- /dev/null +++ b/code/modules/bitrunning/objects/netpod.dm @@ -0,0 +1,472 @@ +#define BASE_DISCONNECT_DAMAGE 40 + +/obj/machinery/netpod + name = "netpod" + + base_icon_state = "netpod" + circuit = /obj/item/circuitboard/machine/netpod + desc = "A link to the netverse. It has an assortment of cables to connect yourself to a virtual domain." + icon = 'icons/obj/machines/bitrunning.dmi' + icon_state = "netpod" + max_integrity = 300 + obj_flags = BLOCKS_CONSTRUCTION + state_open = TRUE + /// Whether we have an ongoing connection + var/connected = FALSE + /// A player selected outfit by clicking the netpod + var/datum/outfit/netsuit = /datum/outfit/job/bitrunner + /// Holds this to see if it needs to generate a new one + var/datum/weakref/avatar_ref + /// The linked quantum server + var/datum/weakref/server_ref + /// The amount of brain damage done from force disconnects + var/disconnect_damage + /// Static list of outfits to select from + var/list/cached_outfits = list() + +/obj/machinery/netpod/Initialize(mapload) + . = ..() + + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/netpod/LateInitialize() + . = ..() + + disconnect_damage = BASE_DISCONNECT_DAMAGE + + RegisterSignals(src, list( + COMSIG_QDELETING, + COMSIG_MACHINERY_BROKEN, + COMSIG_MACHINERY_POWER_LOST, + ), + PROC_REF(on_broken), + ) + RegisterSignal(src, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(src, COMSIG_ATOM_TAKE_DAMAGE, PROC_REF(on_take_damage)) + + register_context() + update_appearance() + +/obj/machinery/netpod/Destroy() + . = ..() + cached_outfits.Cut() + +/obj/machinery/netpod/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + + if(isnull(held_item)) + context[SCREENTIP_CONTEXT_LMB] = "Select Outfit" + return CONTEXTUAL_SCREENTIP_SET + + if(istype(held_item, /obj/item/crowbar) && occupant) + context[SCREENTIP_CONTEXT_LMB] = "Pry Open" + return CONTEXTUAL_SCREENTIP_SET + + return CONTEXTUAL_SCREENTIP_SET + +/obj/machinery/netpod/update_icon_state() + if(!is_operational) + icon_state = base_icon_state + return ..() + + if(state_open) + icon_state = base_icon_state + "_open_active" + return ..() + + if(panel_open) + icon_state = base_icon_state + "_panel" + return ..() + + icon_state = base_icon_state + "_closed" + if(occupant) + icon_state += "_active" + + return ..() + +/obj/machinery/netpod/MouseDrop_T(mob/target, mob/user) + var/mob/living/carbon/player = user + if(!iscarbon(player)) + return + + if((HAS_TRAIT(player, TRAIT_UI_BLOCKED) && !player.resting) || !Adjacent(player) || !player.Adjacent(target) || !ISADVANCEDTOOLUSER(player) || !is_operational) + return + + close_machine(target) + +/obj/machinery/netpod/crowbar_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + attack_hand(user) + return TOOL_ACT_TOOLTYPE_SUCCESS + + if(default_pry_open(tool, user) || default_deconstruction_crowbar(tool)) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/machinery/netpod/screwdriver_act(mob/living/user, obj/item/tool) + if(occupant) + balloon_alert(user, "in use!") + return TOOL_ACT_TOOLTYPE_SUCCESS + + if(state_open) + balloon_alert(user, "close first.") + return TOOL_ACT_TOOLTYPE_SUCCESS + + if(default_deconstruction_screwdriver(user, "[base_icon_state]_panel", "[base_icon_state]_closed", tool)) + update_appearance() // sometimes icon doesnt properly update during flick() + ui_close(user) + return TOOL_ACT_TOOLTYPE_SUCCESS + +/obj/machinery/netpod/attack_hand(mob/living/user, list/modifiers) + . = ..() + if(!state_open && user == occupant) + container_resist_act(user) + +/obj/machinery/netpod/Exited(atom/movable/gone, direction) + . = ..() + if(!state_open && gone == occupant) + container_resist_act(gone) + +/obj/machinery/netpod/Exited(atom/movable/gone, direction) + . = ..() + if(!state_open && gone == occupant) + container_resist_act(gone) + +/obj/machinery/netpod/relaymove(mob/living/user, direction) + if(!state_open) + container_resist_act(user) + +/obj/machinery/netpod/container_resist_act(mob/living/user) + user.visible_message(span_notice("[occupant] emerges from [src]!"), + span_notice("You climb out of [src]!"), + span_notice("With a hiss, you hear a machine opening.")) + open_machine() + +/obj/machinery/netpod/open_machine(drop = TRUE, density_to_set = FALSE) + unprotect_and_signal() + playsound(src, 'sound/machines/tramopen.ogg', 60, TRUE, frequency = 65000) + flick("[base_icon_state]_opening", src) + + return ..() + +/obj/machinery/netpod/close_machine(mob/user, density_to_set = TRUE) + if(!state_open || panel_open || !is_operational || !iscarbon(user)) + return + + playsound(src, 'sound/machines/tramclose.ogg', 60, TRUE, frequency = 65000) + flick("[base_icon_state]_closing", src) + ..() + + if(!iscarbon(occupant)) + open_machine() + return + + enter_matrix() + +/obj/machinery/netpod/default_pry_open(obj/item/crowbar, mob/living/pryer) + if(isnull(occupant) || !iscarbon(occupant)) + if(!state_open) + if(panel_open) + return FALSE + open_machine() + else + shut_pod() + + return TRUE + + pryer.visible_message( + span_danger("[pryer] starts prying open [src]!"), + span_notice("You start to pry open [src]."), + span_notice("You hear loud prying on metal.") + ) + playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE) + + SEND_SIGNAL(src, COMSIG_BITRUNNER_CROWBAR_ALERT, pryer) + + if(do_after(pryer, 15 SECONDS, src)) + if(!state_open) + open_machine() + + return TRUE + +/obj/machinery/netpod/ui_interact(mob/user, datum/tgui/ui) + if(!is_operational) + return + + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "NetpodOutfits") + ui.set_autoupdate(FALSE) + ui.open() + +/obj/machinery/netpod/ui_data() + var/list/data = list() + + data["netsuit"] = netsuit + return data + +/obj/machinery/netpod/ui_static_data() + var/list/data = list() + + if(!length(cached_outfits)) + cached_outfits += make_outfit_collection("Jobs", subtypesof(/datum/outfit/job)) + + data["collections"] = cached_outfits + + return data + +/obj/machinery/netpod/ui_act(action, params) + . = ..() + if(.) + return TRUE + switch(action) + if("select_outfit") + var/datum/outfit/new_suit = resolve_outfit(params["outfit"]) + if(new_suit) + netsuit = new_suit + return TRUE + + return FALSE + +/// Disconnects the occupant after a certain time so they aren't just hibernating in netpod stasis. A balance change +/obj/machinery/netpod/proc/auto_disconnect() + if(isnull(occupant) || state_open || connected) + return + + if(!iscarbon(occupant)) + open_machine() + return + + var/mob/living/carbon/player = occupant + + player.playsound_local(src, 'sound/effects/splash.ogg', 60, TRUE) + to_chat(player, span_notice("The machine disconnects itself and begins to drain.")) + open_machine() + +/** + * ### Disconnect occupant + * If this goes smoothly, should reconnect a receiving mind to the occupant's body + * + * This is the second stage of the process - if you want to disconn avatars start at the mind first + */ +/obj/machinery/netpod/proc/disconnect_occupant(forced = FALSE) + var/mob/living/mob_occupant = occupant + if(isnull(occupant) || !isliving(occupant)) + return + + connected = FALSE + + if(mob_occupant.stat == DEAD) + open_machine() + return + + mob_occupant.playsound_local(src, "sound/magic/blink.ogg", 25, TRUE) + mob_occupant.set_static_vision(2 SECONDS) + mob_occupant.set_temp_blindness(1 SECONDS) + mob_occupant.Paralyze(2 SECONDS) + + var/heal_time = 1 + if(mob_occupant.health < mob_occupant.maxHealth) + heal_time = (mob_occupant.stat + 2) * 5 + addtimer(CALLBACK(src, PROC_REF(auto_disconnect)), heal_time SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_DELETE_ME) + + if(!forced) + return + + mob_occupant.flash_act(override_blindness_check = TRUE, visual = TRUE) + mob_occupant.adjustOrganLoss(ORGAN_SLOT_BRAIN, disconnect_damage) + INVOKE_ASYNC(mob_occupant, TYPE_PROC_REF(/mob/living, emote), "scream") + to_chat(mob_occupant, span_danger("You've been forcefully disconnected from your avatar! Your thoughts feel scrambled!")) + +/** + * ### Enter Matrix + * Finds any current avatars from this chair - or generates a new one + * + * New avatars cost 1 attempt, and this will eject if there's none left + * + * Connects the mind to the avatar if everything is ok + */ +/obj/machinery/netpod/proc/enter_matrix() + var/mob/living/carbon/human/neo = occupant + if(!ishuman(neo) || neo.stat == DEAD || isnull(neo.mind)) + balloon_alert(neo, "invalid occupant.") + return + + var/obj/machinery/quantum_server/server = find_server() + if(isnull(server)) + balloon_alert(neo, "no server connected!") + return + + var/datum/lazy_template/virtual_domain/generated_domain = server.generated_domain + if(isnull(generated_domain) || !server.is_ready) + balloon_alert(neo, "nothing loaded!") + return + + var/mob/living/carbon/current_avatar = avatar_ref?.resolve() + var/obj/structure/hololadder/wayout + if(isnull(current_avatar) || current_avatar.stat != CONSCIOUS) // We need a viable avatar + wayout = server.generate_hololadder() + if(isnull(wayout)) + balloon_alert(neo, "out of bandwidth!") + return + current_avatar = server.generate_avatar(wayout, netsuit) + avatar_ref = WEAKREF(current_avatar) + server.stock_gear(current_avatar, neo) + + neo.set_static_vision(3 SECONDS) + protect_occupant(occupant) + if(!do_after(neo, 2 SECONDS, src)) + return + + // Very invalid + if(QDELETED(neo) || QDELETED(current_avatar) || QDELETED(src)) + return + + // Invalid + if(occupant != neo || isnull(neo.mind) || neo.stat == DEAD || current_avatar.stat == DEAD) + return + + current_avatar.AddComponent( \ + /datum/component/avatar_connection, \ + old_mind = neo.mind, \ + old_body = neo, \ + server = server, \ + pod = src, \ + help_text = generated_domain.help_text, \ + ) + + connected = TRUE + +/// Finds a server and sets the server_ref +/obj/machinery/netpod/proc/find_server() + var/obj/machinery/quantum_server/server = server_ref?.resolve() + if(server) + return server + + server = locate(/obj/machinery/quantum_server) in oview(4, src) + if(isnull(server)) + return + + server_ref = WEAKREF(server) + RegisterSignal(server, COMSIG_BITRUNNER_SERVER_UPGRADED, PROC_REF(on_server_upgraded), override = TRUE) + RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_COMPLETE, PROC_REF(on_domain_complete), override = TRUE) + + return server + +/// Creates a list of outfit entries for the UI. +/obj/machinery/netpod/proc/make_outfit_collection(identifier, list/outfit_list) + var/list/collection = list( + "name" = identifier, + "outfits" = list() + ) + + for(var/path as anything in outfit_list) + var/datum/outfit/outfit = path + + var/outfit_name = initial(outfit.name) + if(findtext(outfit_name, "(") != 0 || findtext(outfit_name, "-") != 0) // No special variants please + continue + + collection["outfits"] += list(list("path" = path, "name" = outfit_name)) + + return list(collection) + +/// Machine has been broken - handles signals and reverting sprites +/obj/machinery/netpod/proc/on_broken(datum/source) + SIGNAL_HANDLER + + if(!state_open) + open_machine() + + if(occupant) + unprotect_and_signal() + +/// Puts points on the current occupant's card account +/obj/machinery/netpod/proc/on_domain_complete(datum/source, atom/movable/crate, reward_points) + SIGNAL_HANDLER + + if(isnull(occupant) || !connected || !iscarbon(occupant)) + return + + var/mob/living/carbon/player = occupant + + var/datum/bank_account/account = player.get_bank_account() + if(isnull(account)) + return + + account.bitrunning_points += reward_points * 100 + +/obj/machinery/netpod/proc/on_examine(datum/source, mob/examiner, list/examine_text) + SIGNAL_HANDLER + + if(isnull(occupant)) + examine_text += span_infoplain("It is currently unoccupied.") + return + + examine_text += span_infoplain("It is currently occupied by [occupant].") + examine_text += span_notice("It can be pried open with a crowbar, but its safety mechanisms will alert the occupant.") + +/// On unbuckle or break, make sure the occupant ref is null +/obj/machinery/netpod/proc/unprotect_and_signal() + unprotect_occupant(occupant) + SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR, src) + +/// When the server is upgraded, drops brain damage a little +/obj/machinery/netpod/proc/on_server_upgraded(datum/source, servo_rating) + SIGNAL_HANDLER + + disconnect_damage = BASE_DISCONNECT_DAMAGE * (1 - servo_rating) + +/// Checks the integrity, alerts occupants +/obj/machinery/netpod/proc/on_take_damage(datum/source, damage_amount) + SIGNAL_HANDLER + + if(isnull(occupant)) + return + + var/total = max_integrity - damage_amount + var/integrity = (atom_integrity / total) * 100 + if(integrity > 50) + return + + SEND_SIGNAL(src, COMSIG_BITRUNNER_NETPOD_INTEGRITY) + +/// Puts the occupant in netpod stasis, basically short-circuiting environmental conditions +/obj/machinery/netpod/proc/protect_occupant(mob/living/target) + if(target != occupant) + return + + target.AddComponent(/datum/component/netpod_healing, \ + brute_heal = 4, \ + burn_heal = 4, \ + toxin_heal = 4, \ + clone_heal = 4, \ + blood_heal = 4, \ + ) + + target.playsound_local(src, 'sound/effects/submerge.ogg', 20, TRUE) + target.extinguish_mob() + update_use_power(ACTIVE_POWER_USE) + +/// Removes the occupant from netpod stasis +/obj/machinery/netpod/proc/unprotect_occupant(mob/living/target) + var/datum/component/netpod_healing/healing_eff = target?.GetComponent(/datum/component/netpod_healing) + if(healing_eff) + qdel(healing_eff) + + update_use_power(IDLE_POWER_USE) + +/// Resolves a path to an outfit. +/obj/machinery/netpod/proc/resolve_outfit(text) + var/path = text2path(text) + if(ispath(path, /datum/outfit)) + return path + +/// Closes the machine without shoving in an occupant +/obj/machinery/netpod/proc/shut_pod() + state_open = FALSE + playsound(src, 'sound/machines/tramclose.ogg', 60, TRUE, frequency = 65000) + flick("[base_icon_state]_closing", src) + set_density(TRUE) + + update_appearance() + +#undef BASE_DISCONNECT_DAMAGE diff --git a/code/modules/bitrunning/objects/quantum_console.dm b/code/modules/bitrunning/objects/quantum_console.dm new file mode 100644 index 000000000000..1ad516d7d4c9 --- /dev/null +++ b/code/modules/bitrunning/objects/quantum_console.dm @@ -0,0 +1,110 @@ +/obj/machinery/computer/quantum_console + name = "quantum console" + + circuit = /obj/item/circuitboard/computer/quantum_console + icon_keyboard = "mining" + icon_screen = "bitrunning" + req_access = list(ACCESS_MINING) + /// The server this console is connected to. + var/datum/weakref/server_ref + +/obj/machinery/computer/quantum_console/Initialize(mapload, obj/item/circuitboard/circuit) + . = ..() + desc = "Even in the distant year [CURRENT_STATION_YEAR], Nanostrasen is still using REST APIs. How grim." + + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/computer/quantum_console/LateInitialize() + . = ..() + + if(isnull(server_ref)) + find_server() + +/obj/machinery/computer/quantum_console/ui_interact(mob/user, datum/tgui/ui) + . = ..() + + if(!is_operational) + return + + if(isnull(server_ref)) + find_server() + + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "QuantumConsole") + ui.open() + +/obj/machinery/computer/quantum_console/ui_data() + var/list/data = list() + + var/obj/machinery/quantum_server/server = find_server() + if(isnull(server)) + data["connected"] = FALSE + return data + + data["connected"] = TRUE + data["generated_domain"] = server.generated_domain?.key + data["occupants"] = length(server.avatar_connection_refs) + data["points"] = server.points + data["randomized"] = server.domain_randomized + data["ready"] = server.is_ready && server.is_operational + data["scanner_tier"] = server.scanner_tier + data["retries_left"] = length(server.exit_turfs) - server.retries_spent + + return data + +/obj/machinery/computer/quantum_console/ui_static_data(mob/user) + var/list/data = list() + + var/obj/machinery/quantum_server/server = find_server() + if(isnull(server)) + return data + + data["available_domains"] = server.get_available_domains() + data["avatars"] = server.get_avatar_data() + + return data + +/obj/machinery/computer/quantum_console/ui_act(action, list/params, datum/tgui/ui) + . = ..() + if(.) + return TRUE + + var/obj/machinery/quantum_server/server = find_server() + if(isnull(server)) + return FALSE + + switch(action) + if("random_domain") + var/map_id = server.get_random_domain_id() + if(!map_id) + return TRUE + + server.cold_boot_map(usr, map_id) + return TRUE + if("refresh") + ui.send_full_update() + return TRUE + if("set_domain") + server.cold_boot_map(usr, params["id"]) + return TRUE + if("stop_domain") + server.begin_shutdown(usr) + return TRUE + + return FALSE + +/// Attempts to find a quantum server. +/obj/machinery/computer/quantum_console/proc/find_server() + var/obj/machinery/quantum_server/server = server_ref?.resolve() + if(server) + return server + + for(var/direction in GLOB.cardinals) + var/obj/machinery/quantum_server/nearby_server = locate(/obj/machinery/quantum_server, get_step(src, direction)) + if(nearby_server) + server_ref = WEAKREF(nearby_server) + nearby_server.console_ref = WEAKREF(src) + return nearby_server + + return diff --git a/code/modules/bitrunning/orders/disks.dm b/code/modules/bitrunning/orders/disks.dm new file mode 100644 index 000000000000..ced1dde883a1 --- /dev/null +++ b/code/modules/bitrunning/orders/disks.dm @@ -0,0 +1,26 @@ +/datum/orderable_item/bitrunning_tech + category_index = CATEGORY_BITRUNNING_TECH + +/datum/orderable_item/bitrunning_tech/item_tier1 + cost_per_order = 1000 + item_path = /obj/item/bitrunning_disk/item/tier1 + +/datum/orderable_item/bitrunning_tech/item_tier2 + cost_per_order = 1500 + item_path = /obj/item/bitrunning_disk/item/tier2 + +/datum/orderable_item/bitrunning_tech/item_tier3 + cost_per_order = 2500 + item_path = /obj/item/bitrunning_disk/item/tier3 + +/datum/orderable_item/bitrunning_tech/ability_tier1 + cost_per_order = 1000 + item_path = /obj/item/bitrunning_disk/ability/tier1 + +/datum/orderable_item/bitrunning_tech/ability_tier2 + cost_per_order = 1800 + item_path = /obj/item/bitrunning_disk/ability/tier2 + +/datum/orderable_item/bitrunning_tech/ability_tier3 + cost_per_order = 3200 + item_path = /obj/item/bitrunning_disk/ability/tier3 diff --git a/code/modules/bitrunning/orders/flair.dm b/code/modules/bitrunning/orders/flair.dm new file mode 100644 index 000000000000..ef36348eb6ae --- /dev/null +++ b/code/modules/bitrunning/orders/flair.dm @@ -0,0 +1,40 @@ +/datum/orderable_item/bitrunning_flair + category_index = CATEGORY_BITRUNNING_FLAIR + +/datum/orderable_item/bitrunning_flair/cornchips + item_path = /obj/item/food/cornchips + cost_per_order = 100 + +/datum/orderable_item/bitrunning_flair/mountain_wind + item_path = /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind + cost_per_order = 100 + +/datum/orderable_item/bitrunning_flair/pwr_game + item_path = /obj/item/reagent_containers/cup/soda_cans/pwr_game + cost_per_order = 200 + +/datum/orderable_item/bitrunning_flair/grey_bull + item_path = /obj/item/reagent_containers/cup/soda_cans/grey_bull + cost_per_order = 200 + +/datum/orderable_item/bitrunning_flair/medkit + item_path = /obj/item/storage/medkit/brute + desc = "Don't beat yourself up, it's just a game!" + cost_per_order = 500 + +/datum/orderable_item/bitrunning_flair/medkit_fire + item_path = /obj/item/storage/medkit/fire + desc = "Great after heated gaming sessions." + cost_per_order = 500 + +/datum/orderable_item/bitrunning_flair/oval_sunglasses + item_path = /obj/item/clothing/glasses/sunglasses/oval + cost_per_order = 1000 + +/datum/orderable_item/bitrunning_flair/trenchcoat + item_path = /obj/item/clothing/suit/jacket/trenchcoat + cost_per_order = 1000 + +/datum/orderable_item/bitrunning_flair/jackboots + item_path = /obj/item/clothing/shoes/jackboots + cost_per_order = 1000 diff --git a/code/modules/bitrunning/orders/tech.dm b/code/modules/bitrunning/orders/tech.dm new file mode 100644 index 000000000000..b15af99fb976 --- /dev/null +++ b/code/modules/bitrunning/orders/tech.dm @@ -0,0 +1,10 @@ +/datum/orderable_item/bepis + category_index = CATEGORY_BEPIS + +/datum/orderable_item/bepis/random + item_path = /obj/item/disk/design_disk/bepis + cost_per_order = 500 + +/datum/orderable_item/bepis/pristine + item_path = /obj/item/disk/design_disk/bepis/remove_tech + cost_per_order = 1000 diff --git a/code/modules/bitrunning/server/loot.dm b/code/modules/bitrunning/server/loot.dm new file mode 100644 index 000000000000..29b730aae784 --- /dev/null +++ b/code/modules/bitrunning/server/loot.dm @@ -0,0 +1,123 @@ +/// Handles calculating rewards based on number of players, parts, threats, etc +/obj/machinery/quantum_server/proc/calculate_rewards() + var/rewards_base = 0.8 + + if(domain_randomized) + rewards_base += 0.2 + + rewards_base += servo_bonus + + rewards_base += (domain_threats * 2) + + for(var/index in 2 to length(avatar_connection_refs)) + rewards_base += multiplayer_bonus + + return rewards_base + +/// Generates a reward based on the given domain +/obj/machinery/quantum_server/proc/generate_loot() + if(!length(receive_turfs) && !locate_receive_turfs()) + return FALSE + + points += generated_domain.reward_points + playsound(src, 'sound/machines/terminal_success.ogg', 30, 2) + + var/turf/dest_turf = pick(receive_turfs) + if(isnull(dest_turf)) + stack_trace("Failed to find a turf to spawn loot crate on.") + return FALSE + + var/bonus = calculate_rewards() + + var/obj/item/paper/certificate = new() + certificate.add_raw_text(get_completion_certificate()) + certificate.name = "certificate of domain completion" + certificate.update_appearance() + + var/obj/structure/closet/crate/secure/bitrunning/decrypted/reward_crate = new(dest_turf, generated_domain, bonus) + reward_crate.manifest = certificate + reward_crate.update_appearance() + + spark_at_location(reward_crate) + return TRUE + +/// Returns the markdown text containing domain completion information +/obj/machinery/quantum_server/proc/get_completion_certificate() + var/base_points = generated_domain.reward_points + if(domain_randomized) + base_points -= 1 + + var/bonuses = calculate_rewards() + + var/time_difference = world.time - generated_domain.start_time + + var/completion_time = "### Completion Time: [DisplayTimeText(time_difference)]\n" + + var/grade = "\n---\n\n# Rating: [grade_completion(generated_domain.difficulty, domain_threats, base_points, domain_randomized, time_difference)]" + + var/text = "# Certificate of Domain Completion\n\n---\n\n" + + text += "### [generated_domain.name][domain_randomized ? " (Randomized)" : ""]\n" + text += "- **Difficulty:** [generated_domain.difficulty]\n" + text += "- **Threats:** [domain_threats]\n" + text += "- **Base Points:** [base_points][domain_randomized ? " +1" : ""]\n\n" + text += "- **Total Bonus:** [bonuses]x\n\n" + + if(bonuses <= 1) + text += completion_time + text += grade + return text + + text += "### Bonuses\n" + if(domain_randomized) + text += "- **Randomized:** + 0.2\n" + + if(length(avatar_connection_refs) > 1) + text += "- **Multiplayer:** + [(length(avatar_connection_refs) - 1) * multiplayer_bonus]\n" + + if(domain_threats > 0) + text += "- **Threats:** + [domain_threats * 2]\n" + + var/servo_rating = servo_bonus + + if(servo_rating > 0.2) + text += "- **Components:** + [servo_rating]\n" + + text += completion_time + text += grade + + return text + +/// Grades the player's run based on several factors +/obj/machinery/quantum_server/proc/grade_completion(difficulty, threats, points, randomized, completion_time) + var/score = threats * 5 + score += points + score += randomized ? 1 : 0 + + var/base = difficulty + 1 + var/time_score = 1 + + if(completion_time <= 1 MINUTES) + time_score = 10 + else if(completion_time <= 2 MINUTES) + time_score = 5 + else if(completion_time <= 5 MINUTES) + time_score = 3 + else if(completion_time <= 10 MINUTES) + time_score = 2 + else + time_score = 1 + + score += time_score * base + + switch(score) + if(1 to 4) + return "D" + if(5 to 7) + return "C" + if(8 to 10) + return "B" + if(11 to 13) + return "A" + else + return "S" diff --git a/code/modules/bitrunning/server/map_handling.dm b/code/modules/bitrunning/server/map_handling.dm new file mode 100644 index 000000000000..2a3c0bdc9e0b --- /dev/null +++ b/code/modules/bitrunning/server/map_handling.dm @@ -0,0 +1,183 @@ + +/// Gives all current occupants a notification that the server is going down +/obj/machinery/quantum_server/proc/begin_shutdown(mob/user) + if(isnull(generated_domain)) + return + + if(!length(avatar_connection_refs)) + balloon_alert(user, "powering down domain...") + playsound(src, 'sound/machines/terminal_off.ogg', 40, 2) + reset() + return + + balloon_alert(user, "notifying clients...") + playsound(src, 'sound/machines/terminal_alert.ogg', 100, TRUE) + user.visible_message( + span_danger("[user] begins depowering the server!"), + span_notice("You start disconnecting clients..."), + span_danger("You hear frantic keying on a keyboard."), + ) + + SEND_SIGNAL(src, COMSIG_BITRUNNER_SHUTDOWN_ALERT, user) + + if(!do_after(user, 20 SECONDS, src)) + return + + reset() + +/** + * ### Quantum Server Cold Boot + * Procedurally links the 3 booting processes together. + * + * This is the starting point if you have an id. Does validation and feedback on steps + */ +/obj/machinery/quantum_server/proc/cold_boot_map(mob/user, map_key) + if(!is_ready) + return FALSE + + if(isnull(map_key)) + balloon_alert(user, "no domain specified.") + return FALSE + + if(generated_domain) + balloon_alert(user, "stop the current domain first.") + return FALSE + + if(length(avatar_connection_refs)) + balloon_alert(user, "all clients must disconnect!") + return FALSE + + is_ready = FALSE + playsound(src, 'sound/machines/terminal_processing.ogg', 30, 2) + + if(!initialize_domain(map_key) || !initialize_safehouse() || !initialize_map_items()) + balloon_alert(user, "initialization failed.") + scrub_vdom() + is_ready = TRUE + return FALSE + + is_ready = TRUE + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 30, 2) + balloon_alert(user, "domain loaded.") + generated_domain.start_time = world.time + points -= generated_domain.cost + update_use_power(ACTIVE_POWER_USE) + update_appearance() + + return TRUE + +/// Initializes a new domain if the given key is valid and the user has enough points +/obj/machinery/quantum_server/proc/initialize_domain(map_key) + var/datum/lazy_template/virtual_domain/to_load + + for(var/datum/lazy_template/virtual_domain/available as anything in subtypesof(/datum/lazy_template/virtual_domain)) + if(map_key != initial(available.key) || points < initial(available.cost)) + continue + to_load = available + break + + if(isnull(to_load)) + return FALSE + + generated_domain = new to_load() + RegisterSignal(generated_domain, COMSIG_LAZY_TEMPLATE_LOADED, PROC_REF(on_template_loaded)) + generated_domain.lazy_load() + + return TRUE + +/// Loads in necessary map items, sets mutation targets, etc +/obj/machinery/quantum_server/proc/initialize_map_items() + var/turf/goal_turfs = list() + var/turf/crate_turfs = list() + + for(var/thing in GLOB.landmarks_list) + if(istype(thing, /obj/effect/landmark/bitrunning/hololadder_spawn)) + exit_turfs += get_turf(thing) + qdel(thing) // i'm worried about multiple servers getting confused so lets clean em up + continue + + if(istype(thing, /obj/effect/landmark/bitrunning/cache_goal_turf)) + var/turf/tile = get_turf(thing) + goal_turfs += tile + RegisterSignal(tile, COMSIG_ATOM_ENTERED, PROC_REF(on_goal_turf_entered)) + RegisterSignal(tile, COMSIG_ATOM_EXAMINE, PROC_REF(on_goal_turf_examined)) + qdel(thing) + continue + + if(istype(thing, /obj/effect/landmark/bitrunning/cache_spawn)) + crate_turfs += get_turf(thing) + qdel(thing) + continue + + if(!length(exit_turfs)) + CRASH("Failed to find exit turfs on generated domain.") + if(!length(goal_turfs)) + CRASH("Failed to find send turfs on generated domain.") + + if(length(crate_turfs)) + shuffle_inplace(crate_turfs) + new /obj/structure/closet/crate/secure/bitrunning/encrypted(pick(crate_turfs)) + + return TRUE +#define ONLY_TURF 1 // There should only ever be one turf at the bottom left of the map. + +/// Loads the safehouse +/obj/machinery/quantum_server/proc/initialize_safehouse() + var/turf/safehouse_load_turf = list() + for(var/obj/effect/landmark/bitrunning/safehouse_spawn/spawner in GLOB.landmarks_list) + safehouse_load_turf += get_turf(spawner) + qdel(spawner) + break + + if(!length(safehouse_load_turf)) + CRASH("Failed to find safehouse load landmark on map.") + + var/datum/map_template/safehouse/safehouse = new generated_domain.safehouse_path() + safehouse.load(safehouse_load_turf[ONLY_TURF]) + generated_safehouse = safehouse + + return TRUE + +/// Stops the current virtual domain and disconnects all users +/obj/machinery/quantum_server/proc/reset(fast = FALSE) + is_ready = FALSE + + SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR) + + if(!fast) + notify_spawned_threats() + addtimer(CALLBACK(src, PROC_REF(scrub_vdom)), 15 SECONDS, TIMER_UNIQUE|TIMER_STOPPABLE) + else + scrub_vdom() // used in unit testing, no need to wait for callbacks + + addtimer(CALLBACK(src, PROC_REF(cool_off)), min(server_cooldown_time * capacitor_coefficient), TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_DELETE_ME) + update_appearance() + + update_use_power(IDLE_POWER_USE) + domain_randomized = FALSE + domain_threats = 0 + retries_spent = 0 + +/// Deletes all the tile contents +/obj/machinery/quantum_server/proc/scrub_vdom() + SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR) // just in case + + if(length(generated_domain.reservations)) + var/datum/turf_reservation/res = generated_domain.reservations[1] + res.Release() + + var/list/datum/weakref/creatures = spawned_threat_refs + mutation_candidate_refs + for(var/datum/weakref/creature_ref as anything in creatures) + var/mob/living/creature = creature_ref?.resolve() + if(isnull(creature)) + continue + + creature.dust() // sometimes mobs just don't die + + exit_turfs = list() + generated_domain = null + generated_safehouse = null + mutation_candidate_refs.Cut() + spawned_threat_refs.Cut() + +#undef ONLY_TURF diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm new file mode 100644 index 000000000000..00b205cfa9b7 --- /dev/null +++ b/code/modules/bitrunning/server/obj_generation.dm @@ -0,0 +1,87 @@ +/// Generates a new avatar for the bitrunner. +/obj/machinery/quantum_server/proc/generate_avatar(obj/structure/hololadder/wayout, datum/outfit/netsuit) + var/mob/living/carbon/human/avatar = new(wayout.loc) + + var/outfit_path = generated_domain.forced_outfit || netsuit + var/datum/outfit/to_wear = new outfit_path() + + to_wear.suit_store = null + to_wear.belt = /obj/item/bitrunning_host_monitor + to_wear.glasses = null + to_wear.suit = null + to_wear.gloves = null + + avatar.equipOutfit(to_wear, visualsOnly = TRUE) + + var/obj/item/storage/backpack/bag = avatar.back + if(istype(bag)) + bag.contents += list( + new /obj/item/storage/box/survival, + new /obj/item/storage/medkit/regular, + new /obj/item/flashlight, + ) + + var/obj/item/card/id/outfit_id = avatar.wear_id + if(outfit_id) + outfit_id.assignment = "Bit Avatar" + outfit_id.registered_name = avatar.real_name + + outfit_id.registered_account = new() + outfit_id.registered_account.replaceable = FALSE + + SSid_access.apply_trim_to_card(outfit_id, /datum/id_trim/bit_avatar) + + return avatar + +/// Generates a new hololadder for the bitrunner. Effectively a respawn attempt. +/obj/machinery/quantum_server/proc/generate_hololadder() + if(!length(exit_turfs)) + return + + if(retries_spent >= length(exit_turfs)) + return + + var/turf/destination + for(var/turf/dest_turf in exit_turfs) + if(!locate(/obj/structure/hololadder) in dest_turf) + destination = dest_turf + break + + if(isnull(destination)) + return + + var/obj/structure/hololadder/wayout = new(destination) + if(isnull(wayout)) + return + + retries_spent += 1 + + return wayout + +/// Scans over neo's contents for bitrunning tech disks. Loads the items or abilities onto the avatar. +/obj/machinery/quantum_server/proc/stock_gear(mob/living/carbon/human/avatar, mob/living/carbon/human/neo) + var/failed = FALSE + + for(var/obj/item/bitrunning_disk/disk in neo.get_contents()) + if(istype(disk, /obj/item/bitrunning_disk/ability)) + var/obj/item/bitrunning_disk/ability/ability_disk = disk + + if(isnull(ability_disk.granted_action)) + failed = TRUE + continue + + var/datum/action/our_action = new ability_disk.granted_action() + our_action.Grant(avatar) + continue + + if(istype(disk, /obj/item/bitrunning_disk/item)) + var/obj/item/bitrunning_disk/item/item_disk = disk + + if(isnull(item_disk.granted_item)) + failed = TRUE + continue + + avatar.put_in_hands(new item_disk.granted_item()) + + if(failed) + to_chat(neo, span_warning("One of your disks failed to load. You must activate them to make a selection.")) diff --git a/code/modules/bitrunning/server/quantum_server.dm b/code/modules/bitrunning/server/quantum_server.dm new file mode 100644 index 000000000000..66223746de15 --- /dev/null +++ b/code/modules/bitrunning/server/quantum_server.dm @@ -0,0 +1,143 @@ +/** + * The base object for the quantum server + */ +/obj/machinery/quantum_server + name = "quantum server" + + circuit = /obj/item/circuitboard/machine/quantum_server + density = TRUE + desc = "A hulking computational machine designed to fabricate virtual domains." + icon = 'icons/obj/machines/bitrunning.dmi' + base_icon_state = "qserver" + icon_state = "qserver" + /// Affects server cooldown efficiency + var/capacitor_coefficient = 1 + /// The loaded map template, map_template/virtual_domain + var/datum/lazy_template/virtual_domain/generated_domain + /// The loaded safehouse, map_template/safehouse + var/datum/map_template/safehouse/generated_safehouse + /// The connected console + var/datum/weakref/console_ref + /// If the current domain was a random selection + var/domain_randomized = FALSE + /// If any threats were spawned, adds to rewards + var/domain_threats = 0 + /// Prevents multiple user actions. Handled by loading domains and cooldowns + var/is_ready = TRUE + /// List of available domains + var/list/available_domains = list() + /// Current plugged in users + var/list/datum/weakref/avatar_connection_refs = list() + /// Cached list of mutable mobs in zone for cybercops + var/list/datum/weakref/mutation_candidate_refs = list() + /// Any ghosts that have spawned in + var/list/datum/weakref/spawned_threat_refs = list() + /// Scales loot with extra players + var/multiplayer_bonus = 1.1 + /// The amount of points in the system, used to purchase maps + var/points = 0 + /// Keeps track of the number of times someone has built a hololadder + var/retries_spent = 0 + /// Changes how much info is available on the domain + var/scanner_tier = 1 + /// Length of time it takes for the server to cool down after resetting. Here to give runners downtime so their faces don't get stuck like that + var/server_cooldown_time = 3 MINUTES + /// Applies bonuses to rewards etc + var/servo_bonus = 0 + /// The turfs we can place a hololadder on. + var/turf/exit_turfs = list() + /// The turfs on station where we generate loot. + var/turf/receive_turfs = list() + +/obj/machinery/quantum_server/Initialize(mapload) + . = ..() + + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/quantum_server/LateInitialize() + . = ..() + + if(isnull(console_ref)) + find_console() + + RegisterSignals(src, list(COMSIG_MACHINERY_BROKEN, COMSIG_MACHINERY_POWER_LOST), PROC_REF(on_broken)) + RegisterSignal(src, COMSIG_QDELETING, PROC_REF(on_delete)) + RegisterSignal(src, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(src, COMSIG_BITRUNNER_SPAWN_GLITCH, PROC_REF(on_threat_created)) + + // This further gets sorted in the client by cost so it's random and grouped + available_domains = shuffle(subtypesof(/datum/lazy_template/virtual_domain)) + +/obj/machinery/quantum_server/Destroy(force) + . = ..() + + available_domains.Cut() + mutation_candidate_refs.Cut() + avatar_connection_refs.Cut() + spawned_threat_refs.Cut() + QDEL_NULL(exit_turfs) + QDEL_NULL(receive_turfs) + QDEL_NULL(generated_domain) + QDEL_NULL(generated_safehouse) + +/obj/machinery/quantum_server/update_appearance(updates) + if(isnull(generated_domain) || !is_operational) + set_light(0) + return ..() + + set_light_color(is_ready ? LIGHT_COLOR_BABY_BLUE : LIGHT_COLOR_FIRE) + set_light(2, 1.5) + + return ..() + +/obj/machinery/quantum_server/update_icon_state() + if(isnull(generated_domain) || !is_operational) + icon_state = base_icon_state + return ..() + + icon_state = "[base_icon_state]_[is_ready ? "on" : "off"]" + return ..() + +/obj/machinery/quantum_server/crowbar_act(mob/living/user, obj/item/crowbar) + . = ..() + + if(!is_ready) + balloon_alert(user, "it's scalding hot!") + return TRUE + if(length(avatar_connection_refs)) + balloon_alert(user, "all clients must disconnect!") + return TRUE + if(default_deconstruction_crowbar(crowbar)) + return TRUE + return FALSE + +/obj/machinery/quantum_server/screwdriver_act(mob/living/user, obj/item/screwdriver) + . = ..() + + if(!is_ready) + balloon_alert(user, "it's scalding hot!") + return TRUE + if(default_deconstruction_screwdriver(user, "[base_icon_state]_panel", icon_state, screwdriver)) + return TRUE + return FALSE + +/obj/machinery/quantum_server/RefreshParts() + . = ..() + + var/capacitor_rating = 1.15 + var/datum/stock_part/capacitor/cap = locate() in component_parts + capacitor_rating -= cap.tier * 0.15 + + capacitor_coefficient = capacitor_rating + + var/datum/stock_part/scanning_module/scanner = locate() in component_parts + if(scanner) + scanner_tier = scanner.tier + + var/servo_rating = 0 + for(var/datum/stock_part/servo/servo in component_parts) + servo_rating += servo.tier * 0.1 + + servo_bonus = servo_rating + + SEND_SIGNAL(src, COMSIG_BITRUNNER_SERVER_UPGRADED, scanner_tier) diff --git a/code/modules/bitrunning/server/signal_handlers.dm b/code/modules/bitrunning/server/signal_handlers.dm new file mode 100644 index 000000000000..b6a79c7c3bf6 --- /dev/null +++ b/code/modules/bitrunning/server/signal_handlers.dm @@ -0,0 +1,105 @@ +/// If broken via signal, disconnects all users +/obj/machinery/quantum_server/proc/on_broken(datum/source) + SIGNAL_HANDLER + + if(isnull(generated_domain)) + return + + SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR) + +/// Whenever a corpse spawner makes a new corpse, add it to the list of potential mutations +/obj/machinery/quantum_server/proc/on_corpse_spawned(datum/source, mob/living/corpse) + SIGNAL_HANDLER + + mutation_candidate_refs.Add(WEAKREF(corpse)) + +/// Being qdeleted - make sure the circuit and connected mobs go with it +/obj/machinery/quantum_server/proc/on_delete(datum/source) + SIGNAL_HANDLER + + if(generated_domain) + SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR) + scrub_vdom() + + if(is_ready) + return + // in case they're trying to cheese cooldown + var/obj/item/circuitboard/machine/quantum_server/circuit = locate(/obj/item/circuitboard/machine/quantum_server) in contents + if(circuit) + qdel(circuit) + +/// Handles examining the server. Shows cooldown time and efficiency. +/obj/machinery/quantum_server/proc/on_examine(datum/source, mob/examiner, list/examine_text) + SIGNAL_HANDLER + + if(capacitor_coefficient < 1) + examine_text += span_infoplain("Its coolant capacity reduces cooldown time by [(1 - capacitor_coefficient) * 100]%.") + + if(servo_bonus > 0.2) + examine_text += span_infoplain("Its manipulation potential is increasing rewards by [servo_bonus]x.") + examine_text += span_infoplain("Injury from unsafe ejection reduced [servo_bonus * 100]%.") + + if(!is_ready) + examine_text += span_notice("It is currently cooling down. Give it a few moments.") + return + +/// Whenever something enters the send tiles, check if it's a loot crate. If so, alert players. +/obj/machinery/quantum_server/proc/on_goal_turf_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) + SIGNAL_HANDLER + + if(!istype(arrived, /obj/structure/closet/crate/secure/bitrunning/encrypted)) + return + + var/obj/structure/closet/crate/secure/bitrunning/encrypted/loot_crate = arrived + if(!istype(loot_crate)) + return + + for(var/mob/person in loot_crate.contents) + if(isnull(person.mind)) + person.forceMove(get_turf(loot_crate)) + + var/datum/component/avatar_connection/connection = person.GetComponent(/datum/component/avatar_connection) + connection?.full_avatar_disconnect() + + spark_at_location(loot_crate) + qdel(loot_crate) + SEND_SIGNAL(src, COMSIG_BITRUNNER_DOMAIN_COMPLETE, arrived, generated_domain.reward_points) + generate_loot() + +/// Handles examining the server. Shows cooldown time and efficiency. +/obj/machinery/quantum_server/proc/on_goal_turf_examined(datum/source, mob/examiner, list/examine_text) + SIGNAL_HANDLER + + examine_text += span_info("Beneath your gaze, the floor pulses subtly with streams of encoded data.") + examine_text += span_info("It seems to be part of the location designated for retrieving encrypted payloads.") + +/// Scans over the inbound created_atoms from lazy templates +/obj/machinery/quantum_server/proc/on_template_loaded(datum/lazy_template/source, list/created_atoms) + SIGNAL_HANDLER + + for(var/thing in created_atoms) + if(isliving(thing)) // so we can mutate them + var/mob/living/creature = thing + + if(creature.can_be_cybercop) + mutation_candidate_refs.Add(WEAKREF(creature)) + continue + + if(istype(thing, /obj/effect/mob_spawn/ghost_role)) // so we get threat alerts + RegisterSignal(thing, COMSIG_GHOSTROLE_SPAWNED, PROC_REF(on_threat_created)) + continue + + if(istype(thing, /obj/effect/mob_spawn/corpse)) // corpses are valid targets too + var/obj/effect/mob_spawn/corpse/spawner = thing + + mutation_candidate_refs.Add(spawner.spawned_mob_ref) + + UnregisterSignal(source, COMSIG_LAZY_TEMPLATE_LOADED) + +/// Handles when cybercops are summoned into the area or ghosts click a ghost role spawner +/obj/machinery/quantum_server/proc/on_threat_created(datum/source, mob/living/threat) + SIGNAL_HANDLER + + domain_threats += 1 + spawned_threat_refs.Add(WEAKREF(threat)) + SEND_SIGNAL(src, COMSIG_BITRUNNER_THREAT_CREATED) // notify players diff --git a/code/modules/bitrunning/server/util.dm b/code/modules/bitrunning/server/util.dm new file mode 100644 index 000000000000..298679bde5bd --- /dev/null +++ b/code/modules/bitrunning/server/util.dm @@ -0,0 +1,141 @@ +#define REDACTED "???" +#define MAX_DISTANCE 4 // How far crates can spawn from the server + +/// Resets the cooldown state and updates icons +/obj/machinery/quantum_server/proc/cool_off() + is_ready = TRUE + update_appearance() + +/// Attempts to connect to a quantum console +/obj/machinery/quantum_server/proc/find_console() + var/obj/machinery/computer/quantum_console/console = console_ref?.resolve() + if(console) + return console + + for(var/direction in GLOB.cardinals) + var/obj/machinery/computer/quantum_console/nearby_console = locate(/obj/machinery/computer/quantum_console, get_step(src, direction)) + if(nearby_console) + console_ref = WEAKREF(nearby_console) + nearby_console.server_ref = WEAKREF(src) + return nearby_console + +/// Compiles a list of available domains. +/obj/machinery/quantum_server/proc/get_available_domains() + var/list/levels = list() + + for(var/datum/lazy_template/virtual_domain/domain as anything in available_domains) + if(initial(domain.test_only)) + continue + var/can_view = initial(domain.difficulty) < scanner_tier && initial(domain.cost) <= points + 5 + var/can_view_reward = initial(domain.difficulty) < (scanner_tier + 1) && initial(domain.cost) <= points + 3 + + levels += list(list( + "cost" = initial(domain.cost), + "desc" = can_view ? initial(domain.desc) : "Limited scanning capabilities. Cannot infer domain details.", + "difficulty" = initial(domain.difficulty), + "id" = initial(domain.key), + "name" = can_view ? initial(domain.name) : REDACTED, + "reward" = can_view_reward ? initial(domain.reward_points) : REDACTED, + )) + + return levels + +/// If there are hosted minds, attempts to get a list of their current virtual bodies w/ vitals +/obj/machinery/quantum_server/proc/get_avatar_data() + var/list/hosted_avatars = list() + + for(var/datum/weakref/avatar_ref in avatar_connection_refs) + var/datum/component/avatar_connection/connection = avatar_ref.resolve() + if(isnull(connection)) + avatar_connection_refs.Remove(connection) + continue + + var/mob/living/creature = connection.parent + var/mob/living/pilot = connection.old_body_ref?.resolve() + + hosted_avatars += list(list( + "health" = creature.health, + "name" = creature.name, + "pilot" = pilot, + "brute" = creature.get_damage_amount(BRUTE), + "burn" = creature.get_damage_amount(BURN), + "tox" = creature.get_damage_amount(TOX), + "oxy" = creature.get_damage_amount(OXY), + )) + + return hosted_avatars + +/// Gets a random available domain given the current points. Weighted towards higher cost domains. +/obj/machinery/quantum_server/proc/get_random_domain_id() + if(points < 1) + return + + var/list/random_domains = list() + var/total_cost = 0 + + for(var/datum/lazy_template/virtual_domain/available as anything in subtypesof(/datum/lazy_template/virtual_domain)) + var/init_cost = initial(available.cost) + if(!initial(available.test_only) && init_cost > 0 && init_cost < 4 && init_cost <= points) + random_domains += list(list( + cost = init_cost, + id = initial(available.key), + )) + + var/random_value = rand(0, total_cost) + var/accumulated_cost = 0 + + for(var/available as anything in random_domains) + accumulated_cost += available["cost"] + if(accumulated_cost >= random_value) + domain_randomized = TRUE + return available["id"] + +/// Gets all mobs originally generated by the loaded domain and returns a list that are capable of being antagged +/obj/machinery/quantum_server/proc/get_valid_domain_targets() + // A: No one is playing + // B: The domain is not loaded + // C: The domain is shutting down + // D: There are no mobs + if(!length(avatar_connection_refs) || isnull(generated_domain) || !is_ready || !is_operational || !length(mutation_candidate_refs)) + return list() + + for(var/datum/weakref/creature_ref as anything in mutation_candidate_refs) + var/mob/living/creature = creature_ref.resolve() + if(isnull(creature) || creature.mind) + mutation_candidate_refs.Remove(creature_ref) + + return shuffle(mutation_candidate_refs) + +/// Locates any turfs with crate out landmarks +/obj/machinery/quantum_server/proc/locate_receive_turfs() + for(var/obj/effect/landmark/bitrunning/station_reward_spawn/spawner in GLOB.landmarks_list) + if(IN_GIVEN_RANGE(src, spawner, MAX_DISTANCE)) + receive_turfs += get_turf(spawner) + qdel(spawner) + + return length(receive_turfs) > 0 + +/// Finds any mobs with minds in the zones and gives them the bad news +/obj/machinery/quantum_server/proc/notify_spawned_threats() + for(var/datum/weakref/baddie_ref as anything in spawned_threat_refs) + var/mob/living/baddie = baddie_ref.resolve() + if(isnull(baddie) || baddie.stat >= UNCONSCIOUS || isnull(baddie.mind)) + continue + + baddie.throw_alert( + ALERT_BITRUNNER_RESET, + /atom/movable/screen/alert/bitrunning/qserver_threat_deletion, + new_master = src, + ) + + to_chat(baddie, span_userdanger("You have been flagged for deletion! Thank you for your service.")) + +/// Do some magic teleport sparks +/obj/machinery/quantum_server/proc/spark_at_location(obj/crate) + playsound(crate, 'sound/magic/blink.ogg', 50, TRUE) + var/datum/effect_system/spark_spread/quantum/sparks = new() + sparks.set_up(5, 1, get_turf(crate)) + sparks.start() + +#undef REDACTED +#undef MAX_DISTANCE diff --git a/code/modules/bitrunning/turfs.dm b/code/modules/bitrunning/turfs.dm new file mode 100644 index 000000000000..4c35153311e5 --- /dev/null +++ b/code/modules/bitrunning/turfs.dm @@ -0,0 +1,13 @@ +/turf/open/floor/bitrunning_transport + name = "circuit floor" + desc = "Looks complex. You can see the circuits running through the floor." + icon_state = "bitrunning" + +/turf/closed/indestructible/binary + name = "tear in the fabric of reality" + icon = 'icons/turf/floors.dmi' + icon_state = "binary" + +/obj/effect/baseturf_helper/virtual_domain + name = "virtual domain baseturf editor" + baseturf = /turf/open/indestructible/binary diff --git a/code/modules/bitrunning/virtual_domain/domains/ash_drake.dm b/code/modules/bitrunning/virtual_domain/domains/ash_drake.dm new file mode 100644 index 000000000000..3b846c858872 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/ash_drake.dm @@ -0,0 +1,18 @@ +/datum/lazy_template/virtual_domain/ash_drake + name = "Ashen Inferno" + cost = BITRUNNER_COST_MEDIUM + desc = "Home of the ash drake, a powerful dragon that scours the surface of Lavaland." + difficulty = BITRUNNER_DIFFICULTY_MEDIUM + forced_outfit = /datum/outfit/job/miner + key = "ash_drake" + map_name = "ash_drake" + reward_points = BITRUNNER_REWARD_MEDIUM + safehouse_path = /datum/map_template/safehouse/lavaland_boss + +/mob/living/simple_animal/hostile/megafauna/dragon/virtual_domain + can_be_cybercop = FALSE + crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + health = 1400 + loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + maxHealth = 1400 + true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/beach_bar.dm b/code/modules/bitrunning/virtual_domain/domains/beach_bar.dm new file mode 100644 index 000000000000..871c2cb1338e --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/beach_bar.dm @@ -0,0 +1,22 @@ +/datum/lazy_template/virtual_domain/beach_bar + name = "Beach Bar" + desc = "A cheerful seaside haven where friendly skeletons serve up drinks. Say, how'd you guys get so dead?" + extra_loot = list(/obj/item/toy/beach_ball = 1) + help_text = "This place is running on a skeleton crew, and they don't seem to be too keen to share details. \ + Maybe a few drinks of liquid charm will get the spirits up. As the saying goes, if you can't beat 'em, join 'em." + key = "beach_bar" + map_name = "beach_bar" + safehouse_path = /datum/map_template/safehouse/mine + +/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain + name = "pina colada" + desc = "Whose drink is this? Not yours, that's for sure. Well, it's not like they're going to miss it." + list_reagents = list(/datum/reagent/consumable/ethanol/pina_colada = 30) + +/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain/Initialize(mapload, vol) + . = ..() + + AddComponent(/datum/component/bitrunning_points, \ + signal_type = COMSIG_GLASS_DRANK, \ + points_per_signal = 0.5, \ + ) diff --git a/code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm b/code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm new file mode 100644 index 000000000000..dcec15fe5c07 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/blood_drunk_miner.dm @@ -0,0 +1,18 @@ +/datum/lazy_template/virtual_domain/blood_drunk_miner + name = "Sanguine Excavation" + cost = BITRUNNER_COST_MEDIUM + desc = "Few escape the surface of Lavaland without a few scars. Some remain, maddened by the hunt." + difficulty = BITRUNNER_DIFFICULTY_MEDIUM + forced_outfit = /datum/outfit/job/miner + key = "blood_drunk_miner" + map_name = "blood_drunk_miner" + reward_points = BITRUNNER_REWARD_MEDIUM + safehouse_path = /datum/map_template/safehouse/lavaland_boss + +/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/virtual_domain + can_be_cybercop = FALSE + crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + health = 1500 + loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + maxHealth = 1500 + true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/bubblegum.dm b/code/modules/bitrunning/virtual_domain/domains/bubblegum.dm new file mode 100644 index 000000000000..fb2b8f746194 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/bubblegum.dm @@ -0,0 +1,19 @@ +/datum/lazy_template/virtual_domain/bubblegum + name = "Blood-Soaked Lair" + cost = BITRUNNER_COST_HIGH + desc = "King of the slaughter demons. Bubblegum is a massive, hulking beast with a penchant for violence." + difficulty = BITRUNNER_DIFFICULTY_HIGH + extra_loot = list(/obj/item/toy/plush/bubbleplush = 1) + forced_outfit = /datum/outfit/job/miner + key = "bubblegum" + map_name = "bubblegum" + reward_points = BITRUNNER_REWARD_HIGH + safehouse_path = /datum/map_template/safehouse/lavaland_boss + +/mob/living/simple_animal/hostile/megafauna/bubblegum/virtual_domain + can_be_cybercop = FALSE + crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + health = 1100 + loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + maxHealth = 1100 + true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/clown_planet.dm b/code/modules/bitrunning/virtual_domain/domains/clown_planet.dm new file mode 100644 index 000000000000..92f000c9cf34 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/clown_planet.dm @@ -0,0 +1,13 @@ +/datum/lazy_template/virtual_domain/clown_planet + name = "Clown Planet" + cost = BITRUNNER_COST_LOW + desc = "In the deep, dark reaches of space, there is only Honk." + difficulty = BITRUNNER_DIFFICULTY_LOW + extra_loot = list(/obj/item/bikehorn = 1) + forced_outfit = /datum/outfit/job/clown + help_text = "The trials of the Honkitude have begun. The sound of bike horns wailing in the distance. \ + this realm- some sort of puzzle, has existed in legend as the final test of just how silly you are." + key = "clown_planet" + map_name = "clown_planet" + reward_points = BITRUNNER_REWARD_LOW + safehouse_path = /datum/map_template/safehouse/mine diff --git a/code/modules/bitrunning/virtual_domain/domains/colossus.dm b/code/modules/bitrunning/virtual_domain/domains/colossus.dm new file mode 100644 index 000000000000..3843311904eb --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/colossus.dm @@ -0,0 +1,18 @@ +/datum/lazy_template/virtual_domain/colossus + name = "Celestial Trial" + cost = BITRUNNER_COST_HIGH + desc = "A massive, ancient beast named the Colossus. Judgment comes." + difficulty = BITRUNNER_DIFFICULTY_HIGH + forced_outfit = /datum/outfit/job/miner + key = "colossus" + map_name = "colossus" + reward_points = BITRUNNER_REWARD_HIGH + safehouse_path = /datum/map_template/safehouse/lavaland_boss + +/mob/living/simple_animal/hostile/megafauna/colossus/virtual_domain + can_be_cybercop = FALSE + crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + health = 1200 + maxHealth = 1200 + true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm b/code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm new file mode 100644 index 000000000000..4deacb4f9c59 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm @@ -0,0 +1,39 @@ +/datum/lazy_template/virtual_domain/gondola_asteroid + name = "Gondola Asteroid" + desc = "An asteroid home to a bountiful forest of gondolas. Peaceful." + map_name = "gondola_asteroid" + help_text = "What a lovely forest. There's a loot crate here in the middle of the map. \ + Hmm... It doesn't budge. The gondolas don't seem to have any trouble moving it, though. \ + I bet there's a way to move it myself." + key = "gondola_asteroid" + map_name = "gondola_asteroid" + safehouse_path = /datum/map_template/safehouse/shuttle_space + +/// Very pushy gondolas, great for moving loot crates. +/obj/structure/closet/crate/secure/bitrunning/encrypted/gondola + move_resist = MOVE_FORCE_STRONG + +/mob/living/simple_animal/pet/gondola/virtual_domain + health = 50 + loot = list(/obj/effect/decal/cleanable/blood/gibs, /obj/item/stack/sheet/animalhide/gondola = 1, /obj/item/food/meat/slab/gondola/virtual_domain = 1) + maxHealth = 50 + move_force = MOVE_FORCE_VERY_STRONG + move_resist = MOVE_FORCE_STRONG + +/obj/item/food/meat/slab/gondola/virtual_domain + food_reagents = list( + /datum/reagent/consumable/nutriment/protein = 4, + /datum/reagent/gondola_mutation_toxin/virtual_domain = 5, + ) + +/datum/reagent/gondola_mutation_toxin/virtual_domain + name = "Advanced Tranquility" + +/datum/reagent/gondola_mutation_toxin/virtual_domain/expose_mob(mob/living/exposed_mob, methods = TOUCH, reac_volume, show_message = TRUE, touch_protection = 0) + . = ..() + if((methods & (PATCH|INGEST|INJECT)) || ((methods & VAPOR) && prob(min(reac_volume,100)*(1 - touch_protection)))) + exposed_mob.ForceContractDisease(new /datum/disease/transformation/gondola/virtual_domain(), FALSE, TRUE) + +/datum/disease/transformation/gondola/virtual_domain + stage_prob = 9 + new_form = /mob/living/simple_animal/pet/gondola/virtual_domain diff --git a/code/modules/bitrunning/virtual_domain/domains/hierophant.dm b/code/modules/bitrunning/virtual_domain/domains/hierophant.dm new file mode 100644 index 000000000000..352a68fca9ab --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/hierophant.dm @@ -0,0 +1,18 @@ +/datum/lazy_template/virtual_domain/hierophant + name = "Zealot Arena" + cost = BITRUNNER_COST_HIGH + desc = "Dance, puppets, dance!" + difficulty = BITRUNNER_DIFFICULTY_HIGH + forced_outfit = /datum/outfit/job/miner + key = "hierophant" + map_name = "hierophant" + reward_points = BITRUNNER_REWARD_HIGH + safehouse_path = /datum/map_template/safehouse/lavaland_boss + +/mob/living/simple_animal/hostile/megafauna/hierophant/virtual_domain + can_be_cybercop = FALSE + crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + health = 1600 + loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + maxHealth = 1600 + true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/legion.dm b/code/modules/bitrunning/virtual_domain/domains/legion.dm new file mode 100644 index 000000000000..07fa6ef5894d --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/legion.dm @@ -0,0 +1,20 @@ +/datum/lazy_template/virtual_domain/legion + name = "Chamber of Echoes" + cost = BITRUNNER_COST_MEDIUM + desc = "A chilling realm that houses Legion's necropolis. Those who succumb to it are forever damned." + difficulty = BITRUNNER_DIFFICULTY_MEDIUM + forced_outfit = /datum/outfit/job/miner + key = "legion" + map_name = "legion" + reward_points = BITRUNNER_REWARD_MEDIUM + safehouse_path = /datum/map_template/safehouse/lavaland_boss + +/mob/living/simple_animal/hostile/megafauna/legion/virtual_domain + can_be_cybercop = FALSE + crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + health = 1100 + loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + maxHealth = 1100 + true_spawn = FALSE + +// You may be thinking, well, what about those mini-legions? They're not part of the created_atoms list diff --git a/code/modules/bitrunning/virtual_domain/domains/pipedream.dm b/code/modules/bitrunning/virtual_domain/domains/pipedream.dm new file mode 100644 index 000000000000..fd54ef6ca484 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/pipedream.dm @@ -0,0 +1,101 @@ +/datum/lazy_template/virtual_domain/pipedream + name = "Disposal Pipe Factory" + cost = BITRUNNER_COST_LOW + desc = "An abandoned and infested factory manufacturing disposal pipes." + difficulty = BITRUNNER_DIFFICULTY_MEDIUM + extra_loot = list(/obj/item/stack/pipe_cleaner_coil/random/five = 1) + help_text = "Not long ago, this place was thriving with activity. The workers \ + seemed to have left in a hurry, and now productivity is in the bin. Something \ + must have trashed the place, but what?" + key = "pipedream" + map_name = "pipedream" + reward_points = BITRUNNER_REWARD_LOW + safehouse_path = /datum/map_template/safehouse/shuttle + +// ID Trims +/datum/id_trim/factory + assignment = "Factory Worker" + trim_state = "trim_cargotechnician" + department_color = COLOR_CARGO_BROWN + subdepartment_color = COLOR_CARGO_BROWN + sechud_icon_state = SECHUD_CARGO_TECHNICIAN + access = list( + ACCESS_AWAY_SUPPLY + ) + +/datum/id_trim/factory/qm + assignment = "Factory Quartermaster" + trim_state = "trim_quartermaster" + department_color = COLOR_COMMAND_BLUE + subdepartment_color = COLOR_CARGO_BROWN + department_state = "departmenthead" + sechud_icon_state = SECHUD_QUARTERMASTER + access = list( + ACCESS_AWAY_SUPPLY, + ACCESS_AWAY_COMMAND + ) + +// ID Cards +/obj/item/card/id/advanced/factory + name = "factory worker ID" + trim = /datum/id_trim/factory + +/obj/item/card/id/advanced/factory/qm + name = "factory quartermaster ID" + trim = /datum/id_trim/factory/qm + +//Outfits +/datum/outfit/factory + name = "Factory Worker" + + id_trim = /datum/id_trim/factory + id = /obj/item/card/id/advanced/ + uniform = /obj/item/clothing/under/rank/cargo/tech + suit = /obj/item/clothing/suit/hazardvest + belt = /obj/item/radio + gloves = /obj/item/clothing/gloves/color/black + head = /obj/item/clothing/head/soft/yellow + shoes = /obj/item/clothing/shoes/workboots + l_pocket = /obj/item/flashlight/seclite + +/datum/outfit/factory/guard + name = "Factory Guard" + + uniform = /obj/item/clothing/under/rank/security/officer/grey + suit = /obj/item/clothing/suit/armor/vest/alt + belt = /obj/item/radio + gloves = /obj/item/clothing/gloves/color/black + head = /obj/item/clothing/head/soft/sec + shoes = /obj/item/clothing/shoes/jackboots/sec + l_pocket = /obj/item/restraints/handcuffs + r_pocket = /obj/item/assembly/flash/handheld + +/datum/outfit/factory/qm + name = "Factory Quatermaster" + + id_trim = /datum/id_trim/factory/qm + id = /obj/item/card/id/advanced/silver + uniform = /obj/item/clothing/under/rank/cargo/qm + belt = /obj/item/radio + gloves = /obj/item/clothing/gloves/color/black + head = /obj/item/clothing/head/soft/yellow + shoes = /obj/item/clothing/shoes/jackboots/sec + l_pocket = /obj/item/melee/baton/telescopic + r_pocket = /obj/item/stamp/head/qm + +// Corpses +/obj/effect/mob_spawn/corpse/human/factory + name = "Factory Worker" + outfit = /datum/outfit/factory + icon_state = "corpsecargotech" + +/obj/effect/mob_spawn/corpse/human/factory/guard + name = "Factory Guard" + outfit = /datum/outfit/factory/guard + icon_state = "corpsecargotech" + +/obj/effect/mob_spawn/corpse/human/factory/qm + name = "Factory Quartermaster" + outfit = /datum/outfit/factory/qm + icon_state = "corpsecargotech" + diff --git a/code/modules/bitrunning/virtual_domain/domains/pirates.dm b/code/modules/bitrunning/virtual_domain/domains/pirates.dm new file mode 100644 index 000000000000..52d86a712118 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/pirates.dm @@ -0,0 +1,10 @@ +/datum/lazy_template/virtual_domain/pirates + name = "Corsair Cove" + cost = BITRUNNER_COST_MEDIUM + desc = "Battle your way to the hidden treasure, seize the booty, and make a swift escape before the pirates turn the tide." + difficulty = BITRUNNER_DIFFICULTY_MEDIUM + help_text = "Put on the provided outfits to blend in, then battle your way through the hostile pirates. \ + Grab the treasure and get out before you're overwhelmed!" + key = "pirates" + map_name = "pirates" + reward_points = BITRUNNER_REWARD_MEDIUM diff --git a/code/modules/bitrunning/virtual_domain/domains/stairs_and_cliffs.dm b/code/modules/bitrunning/virtual_domain/domains/stairs_and_cliffs.dm new file mode 100644 index 000000000000..2d9bcca36455 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/stairs_and_cliffs.dm @@ -0,0 +1,29 @@ +/datum/lazy_template/virtual_domain/stairs_and_cliffs + name = "Glacier Grind" + cost = BITRUNNER_COST_LOW + desc = "A treacherous climb few calves can survive. Great cardio though." + help_text = "Ever heard of 'Snakes and Ladders'? It's like that, but with \ + instead of ladders its stairs and instead of snakes its a steep drop down a \ + cliff into rough rocks or liquid plasma." + extra_loot = list(/obj/item/clothing/suit/costume/snowman = 2) + difficulty = BITRUNNER_DIFFICULTY_LOW + forced_outfit = /datum/outfit/job/virtual_domain_iceclimber + key = "stairs_and_cliffs" + map_name = "stairs_and_cliffs" + reward_points = BITRUNNER_REWARD_MEDIUM + safehouse_path = /datum/map_template/safehouse/ice + +/turf/open/cliff/snowrock/virtual_domain + name = "icy cliff" + initial_gas_mix = "o2=22;n2=82;TEMP=180" + +/turf/open/lava/plasma/virtual_domain + name = "plasma lake" + initial_gas_mix = "o2=22;n2=82;TEMP=180" + +/datum/outfit/job/virtual_domain_iceclimber + name = "Ice Climber" + + uniform = /obj/item/clothing/under/color/grey + backpack = /obj/item/storage/backpack/duffelbag + shoes = /obj/item/clothing/shoes/winterboots diff --git a/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm b/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm new file mode 100644 index 000000000000..bae0da6874db --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm @@ -0,0 +1,13 @@ +/datum/lazy_template/virtual_domain/syndicate_assault + name = "Syndicate Assault" + cost = BITRUNNER_COST_MEDIUM + desc = "Board the enemy ship and recover the stolen cargo." + difficulty = BITRUNNER_DIFFICULTY_MEDIUM + extra_loot = list(/obj/item/toy/plush/nukeplushie = 1) + help_text = "A group of Syndicate operatives have stolen valuable cargo from the station. \ + They have boarded their ship and are attempting to escape. Infiltrate their ship and recover \ + the crate. Be careful, they are extremely armed." + key = "syndicate_assault" + map_name = "syndicate_assault" + reward_points = BITRUNNER_REWARD_MEDIUM + safehouse_path = /datum/map_template/safehouse/shuttle diff --git a/code/modules/bitrunning/virtual_domain/domains/test_only.dm b/code/modules/bitrunning/virtual_domain/domains/test_only.dm new file mode 100644 index 000000000000..6e5e852fb5c8 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/test_only.dm @@ -0,0 +1,11 @@ +/// Used for unit tests only. Skipped in UI. +/datum/lazy_template/virtual_domain/test_only + name = "Test Only" + key = "test_only" + map_name = "test_only" + test_only = TRUE + safehouse_path = /datum/map_template/safehouse/test_only + +/datum/lazy_template/virtual_domain/test_only/expensive + key = "test_only_expensive" + cost = 3 diff --git a/code/modules/bitrunning/virtual_domain/domains/vaporwave.dm b/code/modules/bitrunning/virtual_domain/domains/vaporwave.dm new file mode 100644 index 000000000000..45d4abec9830 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/vaporwave.dm @@ -0,0 +1,10 @@ +/datum/lazy_template/virtual_domain/vaporwave + name = "Cosmic Vestige" + cost = BITRUNNER_COST_EXTREME + desc = "Suspended in the silent void of space, the Neon Relic is a haunting echo of a retro-futuristic era." + difficulty = BITRUNNER_DIFFICULTY_NONE + extra_loot = list(/obj/item/stack/spacecash/c500 = 3) + key = "vaporwave" + map_name = "vaporwave" + reward_points = BITRUNNER_REWARD_EXTREME + safehouse_path = /datum/map_template/safehouse/shuttle_space diff --git a/code/modules/bitrunning/virtual_domain/domains/wendigo.dm b/code/modules/bitrunning/virtual_domain/domains/wendigo.dm new file mode 100644 index 000000000000..f9a1c12fa86e --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/wendigo.dm @@ -0,0 +1,19 @@ +/datum/lazy_template/virtual_domain/wendigo + name = "Glacial Devourer" + cost = BITRUNNER_COST_HIGH + desc = "Legends speak of the ravenous Wendigo hidden deep within the caves of Icemoon." + difficulty = BITRUNNER_DIFFICULTY_HIGH + forced_outfit = /datum/outfit/job/miner + key = "wendigo" + map_name = "wendigo" + reward_points = BITRUNNER_REWARD_HIGH + safehouse_path = /datum/map_template/safehouse/lavaland_boss + +/mob/living/simple_animal/hostile/megafauna/wendigo/virtual_domain + can_be_cybercop = FALSE + crusher_loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + guaranteed_butcher_results = list(/obj/item/wendigo_skull = 1) + health = 1500 + loot = list(/obj/structure/closet/crate/secure/bitrunning/encrypted) + maxHealth = 1500 + true_spawn = FALSE diff --git a/code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm b/code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm new file mode 100644 index 000000000000..2bd4105e13c2 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm @@ -0,0 +1,12 @@ +/datum/lazy_template/virtual_domain/xeno_nest + name = "Xeno Infestation" + cost = BITRUNNER_COST_LOW + desc = "Our ship scanners have detected lifeforms of unknown origin. Friendly attempts to contact them have failed." + difficulty = BITRUNNER_DIFFICULTY_LOW + extra_loot = list(/obj/item/toy/plush/rouny = 1) + help_text = "You are on a barren planet filled with hostile creatures. There is a crate here, not hidden, \ + simply protected. Expect resistance." + key = "xeno_nest" + map_name = "xeno_nest" + reward_points = BITRUNNER_REWARD_LOW + safehouse_path = /datum/map_template/safehouse/shuttle diff --git a/code/modules/bitrunning/virtual_domain/safehouses.dm b/code/modules/bitrunning/virtual_domain/safehouses.dm new file mode 100644 index 000000000000..bb42f690ac7e --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/safehouses.dm @@ -0,0 +1,53 @@ +/** + * # Safe Houses + * The starting point for virtual domains. + * Create your own: Read the readme file in the '_maps/safehouses' folder. + */ +/datum/map_template/safehouse + name = "virtual domain: safehouse" + + returns_created_atoms = TRUE + /// The map file to load + var/filename = "den.dmm" + +/datum/map_template/safehouse/New() + mappath = "_maps/safehouses/" + filename + ..(path = mappath) + +/datum/map_template/safehouse/test_only + filename = "test_only_safehouse.dmm" + + +/// The default safehouse map template. +/datum/map_template/safehouse/wood + filename = "wood.dmm" + +/datum/map_template/safehouse/den + filename = "den.dmm" + +/datum/map_template/safehouse/dig + filename = "dig.dmm" + +/datum/map_template/safehouse/shuttle + filename = "shuttle.dmm" + +// Has space tiles on the four corners. +/datum/map_template/safehouse/shuttle_space + filename = "shuttle_space.dmm" + +/datum/map_template/safehouse/mine + filename = "mine.dmm" + +// Comes preloaded with mining combat gear. +/datum/map_template/safehouse/lavaland_boss + filename = "lavaland_boss.dmm" + +// Chill out +/datum/map_template/safehouse/ice + filename = "ice.dmm" + +/** + * Your safehouse here + * /datum/map_template/safehouse/your_type + * filename = "your_map.dmm" + */ diff --git a/code/modules/bitrunning/virtual_domain/virtual_domain.dm b/code/modules/bitrunning/virtual_domain/virtual_domain.dm new file mode 100644 index 000000000000..c2bd193f4e98 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/virtual_domain.dm @@ -0,0 +1,34 @@ +/** + * # Virtual Domains + * This loads a base level, then users can select the preset upon it. + * Create your own: Read the readme file in the '_maps/virtual_domains' folder. + */ +/datum/lazy_template/virtual_domain + map_dir = "_maps/virtual_domains" + map_name = "None" + key = "Virtual Domain" + + /// Cost of this map to load + var/cost = BITRUNNER_COST_NONE + /// The description of the map + var/desc = "A map." + /// The 'difficulty' of the map, which affects the ui and ability to scan info. + var/difficulty = BITRUNNER_DIFFICULTY_NONE + /// An assoc list of typepath/amount to spawn on completion. Not weighted - the value is the amount + var/list/extra_loot + /// The map file to load + var/filename = "virtual_domain.dmm" + /// Any outfit that you wish to force on avatars. Overrides preferences + var/datum/outfit/forced_outfit + /// Information given to connected clients via ability + var/help_text + // Name to show in the UI + var/name = "Virtual Domain" + /// Points to reward for completion. Used to purchase new domains and calculate ore rewards. + var/reward_points = BITRUNNER_REWARD_MIN + /// The start time of the map. Used to calculate time taken + var/start_time + /// This map is specifically for unit tests. Shouldn't display in game + var/test_only = FALSE + /// The safehouse to load into the map + var/datum/map_template/safehouse/safehouse_path = /datum/map_template/safehouse/den diff --git a/code/modules/cargo/packs/_packs.dm b/code/modules/cargo/packs/_packs.dm index 479d2595c021..4d7e5066a4ab 100644 --- a/code/modules/cargo/packs/_packs.dm +++ b/code/modules/cargo/packs/_packs.dm @@ -79,6 +79,21 @@ /datum/supply_pack/proc/generate_supply_packs() return +///Easily send a supplypod to an area +/proc/send_supply_pod_to_area(contents, area_type, pod_type = /obj/structure/closet/supplypod) + var/list/areas = get_areas(area_type) + if(!LAZYLEN(areas)) + return FALSE + var/list/open_turfs = list() + for(var/turf/open/floor/found_turf in get_area_turfs(pick(areas), subtypes = TRUE)) + open_turfs += found_turf + + if(!length(open_turfs)) + return FALSE + + new /obj/effect/pod_landingzone (pick(open_turfs), new pod_type (), contents) + return TRUE + /** * Custom supply pack * The contents are given on New rather than being static diff --git a/code/modules/client/preferences/middleware/antags.dm b/code/modules/client/preferences/middleware/antags.dm index d04b9c0c0fd7..e13167ba7347 100644 --- a/code/modules/client/preferences/middleware/antags.dm +++ b/code/modules/client/preferences/middleware/antags.dm @@ -116,6 +116,7 @@ /datum/asset/spritesheet/antagonists/create_spritesheets() // Antagonists that don't have a dynamic ruleset, but do have a preference var/static/list/non_ruleset_antagonists = list( + ROLE_CYBER_POLICE = /datum/antagonist/cyber_police, ROLE_FUGITIVE = /datum/antagonist/fugitive, ROLE_LONE_OPERATIVE = /datum/antagonist/nukeop/lone, ROLE_SENTIENCE = /datum/antagonist/sentient_creature, diff --git a/code/modules/clothing/outfits/plasmaman.dm b/code/modules/clothing/outfits/plasmaman.dm index beed4f1b0b35..01739a7c1e96 100644 --- a/code/modules/clothing/outfits/plasmaman.dm +++ b/code/modules/clothing/outfits/plasmaman.dm @@ -280,3 +280,10 @@ gloves = /obj/item/clothing/gloves/color/plasmaman/clown head = /obj/item/clothing/head/helmet/space/plasmaman/clown mask = /obj/item/clothing/mask/gas/clown_hat/plasmaman + +/datum/outfit/plasmaman/bitrunner + name = "Bitrunner Plasmaman" + + uniform = /obj/item/clothing/under/plasmaman/bitrunner + gloves = /obj/item/clothing/gloves/color/plasmaman/black + head = /obj/item/clothing/head/helmet/space/plasmaman/bitrunner diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 8379c817144e..b34f979d3fbf 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -379,3 +379,15 @@ desc = "A special containment helmet designed for CentCom Staff. You know, so any coffee spills don't kill the poor sod." icon_state = "intern_envirohelm" inhand_icon_state = null + +/obj/item/clothing/head/helmet/space/plasmaman/syndie + name = "tacticool envirosuit helmet" + desc = "There's no doubt about it, this helmet puts you above ALL of the other plasmamen. If you see another plasmaman wearing a helmet like this, it's either because they're a fellow badass, \ + or they've murdered one of your fellow badasses and have taken it from them as a trophy. Either way, anyone wearing this deserves at least a cursory nod of respect." + icon_state = "syndie_envirohelm" + inhand_icon_state = null + +/obj/item/clothing/head/helmet/space/plasmaman/bitrunner + name = "bitrunner's plasma envirosuit helmet" + desc = "An envirohelmet with extended blue light filters for bitrunning plasmamen." + icon_state = "bitrunner_envirohelm" diff --git a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm index 52a85cf31cf0..9b2faf65a9c8 100644 --- a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm +++ b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm @@ -115,6 +115,15 @@ icon_state = "clown_envirosuit" inhand_icon_state = null +/obj/item/clothing/under/plasmaman/clown/Initialize(mapload) + . = ..() + AddElement(/datum/element/swabable, CELL_LINE_TABLE_CLOWN, CELL_VIRUS_TABLE_GENERIC, rand(2,3), 0) + +/obj/item/clothing/under/plasmaman/bitrunner + name = "bitrunner envirosuit" + desc = "An envirosuit specially designed for plasmamen with bad posture." + icon_state = "bitrunner_envirosuit" + inhand_icon_state = null /obj/item/clothing/under/plasmaman/prisoner name = "prisoner envirosuit" desc = "An orange envirosuit identifying and protecting a criminal plasmaman. Its suit sensors are stuck in the \"Fully On\" position." diff --git a/code/modules/clothing/under/jobs/cargo.dm b/code/modules/clothing/under/jobs/cargo.dm index d4c9ca4268c9..6e4f0f32285d 100644 --- a/code/modules/clothing/under/jobs/cargo.dm +++ b/code/modules/clothing/under/jobs/cargo.dm @@ -54,3 +54,9 @@ name = "shaft miner's jumpsuit" icon_state = "explorer" inhand_icon_state = null + +/obj/item/clothing/under/rank/cargo/bitrunner + name = "bitrunner's jumpsuit" + desc = "It's a leathery jumpsuit worn by a bitrunner. Tacky, but comfortable to wear if sitting for prolonged periods of time." + icon_state = "bitrunner" + inhand_icon_state = "w_suit" diff --git a/code/modules/economy/account.dm b/code/modules/economy/account.dm index 7f578bb1b393..59d5c81a69b1 100644 --- a/code/modules/economy/account.dm +++ b/code/modules/economy/account.dm @@ -7,6 +7,10 @@ var/account_balance = 0 ///How many mining points (shaft miner credits) is held in the bank account, used for mining vendors. var/mining_points = 0 + /// Points for bit runner's vendor. Awarded for completing virtual domains. + var/bitrunning_points = 0 + ///Debt. If higher than 0, A portion of the credits is earned (or the whole debt, whichever is lower) will go toward paying it off. + var/account_debt = 0 ///If there are things effecting how much income a player will get, it's reflected here 1 is standard for humans. var/payday_modifier ///The job datum of the account owner. diff --git a/code/modules/experisci/experiment/experiments.dm b/code/modules/experisci/experiment/experiments.dm index f56ee6164473..b2e2ef909ff3 100644 --- a/code/modules/experisci/experiment/experiments.dm +++ b/code/modules/experisci/experiment/experiments.dm @@ -276,7 +276,6 @@ /obj/machinery/rnd/experimentor = 1, /obj/machinery/medical_kiosk = 2, /obj/machinery/piratepad/civilian = 2, - /obj/machinery/rnd/bepis = 3 ) required_stock_part = /obj/item/stock_parts/scanning_module/adv diff --git a/code/modules/mapping/access_helpers.dm b/code/modules/mapping/access_helpers.dm index b1fd3571e51b..633c6aac387f 100644 --- a/code/modules/mapping/access_helpers.dm +++ b/code/modules/mapping/access_helpers.dm @@ -381,6 +381,11 @@ access_list += list(ACCESS_CARGO, ACCESS_MAINT_TUNNELS) return access_list +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den/get_access() + var/list/access_list = ..() + access_list += ACCESS_BIT_DEN + return access_list + // -------------------- Syndicate access helpers /obj/effect/mapping_helpers/airlock/access/any/syndicate icon_state = "access_helper_syn" diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 471dec0a9d2d..5b7ee004c039 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -224,3 +224,6 @@ var/datum/stamina_container/stamina /// What our current gravity state is. Used to avoid duplicate animates and such var/gravity_state = null + + /// Whether this mob can be mutated into a cybercop via quantum server get_valid_domain_targets(). Specifically dodges megafauna + var/can_be_cybercop = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm index ced8c60af6ed..0bdf2f18bb07 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm @@ -267,6 +267,10 @@ Difficulty: Hard /mob/living/simple_animal/hostile/megafauna/wendigo/death(gibbed, list/force_grant) if(health > 0) return + + if(!true_spawn) + return ..() + var/obj/effect/portal/permanent/one_way/exit = new /obj/effect/portal/permanent/one_way(starting) exit.id = "wendigo arena exit" exit.add_atom_colour(COLOR_RED_LIGHT, ADMIN_COLOUR_PRIORITY) diff --git a/code/modules/mob_spawn/mob_spawn.dm b/code/modules/mob_spawn/mob_spawn.dm index 8b72669769fb..0548f0ee937b 100644 --- a/code/modules/mob_spawn/mob_spawn.dm +++ b/code/modules/mob_spawn/mob_spawn.dm @@ -32,6 +32,8 @@ var/facial_haircolor ///sets a human's skin tone var/skin_tone + /// Weakref to the mob this spawner created - just if you needed to do something with it. + var/datum/weakref/spawned_mob_ref /obj/effect/mob_spawn/Initialize(mapload) . = ..() @@ -44,6 +46,7 @@ name_mob(spawned_mob, newname) special(spawned_mob, mob_possessor) equip(spawned_mob) + spawned_mob_ref = WEAKREF(spawned_mob) return spawned_mob /obj/effect/mob_spawn/proc/special(mob/living/spawned_mob) @@ -223,6 +226,7 @@ if(isnull(created)) // If we explicitly return FALSE instead of just not returning a mob, we don't want to spam the admins CRASH("An instance of [type] didn't return anything when creating a mob, this might be broken!") + SEND_SIGNAL(src, COMSIG_GHOSTROLE_SPAWNED, created) check_uses() // Now we check if the spawner should delete itself or not /obj/effect/mob_spawn/ghost_role/create(mob/mob_possessor, newname) diff --git a/code/modules/modular_computers/computers/item/role_tablet_presets.dm b/code/modules/modular_computers/computers/item/role_tablet_presets.dm index 64fa163a5e46..3dd8df819a57 100644 --- a/code/modules/modular_computers/computers/item/role_tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/role_tablet_presets.dm @@ -253,6 +253,14 @@ /datum/computer_file/program/skill_tracker, ) +/obj/item/modular_computer/pda/bitrunner + name = "bit runner PDA" + greyscale_colors = "#D6B328#6BC906" + starting_programs = list( + /datum/computer_file/program/arcade, + /datum/computer_file/program/skill_tracker, + ) + /** * Service */ diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 66e02a7c468f..a4040dba92d8 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -348,16 +348,6 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SCIENCE -/datum/design/board/bepis - name = "B.E.P.I.S. Board" - desc = "The circuit board for a B.E.P.I.S." - id = "bepis" - build_path = /obj/item/circuitboard/machine/bepis - category = list( - RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH - ) - departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_CARGO - /datum/design/board/protolathe name = "Protolathe Board" desc = "The circuit board for a protolathe." diff --git a/code/modules/research/techweb/_techweb_node.dm b/code/modules/research/techweb/_techweb_node.dm index 6ab7d68beba9..abdeae77affd 100644 --- a/code/modules/research/techweb/_techweb_node.dm +++ b/code/modules/research/techweb/_techweb_node.dm @@ -16,7 +16,7 @@ var/description = "Why are you seeing this?" /// Whether it starts off hidden var/hidden = FALSE - /// If the tech can be randomly generated by the BEPIS as a reward. MEant to be fully given in tech disks, not researched + /// If the tech can be randomly generated by BEPIS tech as a reward. Meant to be fully given in tech disks, not researched var/experimental = FALSE /// Whether it's available without any research var/starting_node = FALSE diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index fc756ff67def..0bb2247cb05a 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -14,7 +14,6 @@ "basic_matter_bin", "basic_micro_laser", "basic_scanning", - "bepis", "blast", "bounced_radio", "bowl", diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_cyberpolice.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_cyberpolice.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8a6347bbd71ffa772df99c026a1fb85e1973d8 GIT binary patch literal 677 zcmV;W0$TlvP)2K>(eCcV=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6# zaxBfbI5Sc+(=$pSoZ^zil2jm5Nr{UyC9|j)$TZ~QOe;#vO@*+P6K;c1-Yj06_MNmc2hW9Fw0KU^H^x<7Dd4;7i3)d zJ8&PtRjL}eU>1o(&I2gR@)58rwZ@nW))!z)6;)L|0R%q-c5$=9mN8 zW}PJ61!wXC%vpr1gy9!1Xg~-6@bgU+Kho>!Ed8Sa9mm@g9}h~G57OT8+A`D)|B)3^M;j&%f|4-L}bED`gA00000 LNkvXXu0mjfdGjO? literal 0 HcmV?d00001 diff --git a/icons/area/areas_station.dmi b/icons/area/areas_station.dmi index d80ab040354e1114356257f9d7b98e7c71a22f23..7de4ca5ab1480992972b26b84e83c481e7bd353b 100644 GIT binary patch delta 39703 zcmZU)cT^MI_dOhnf}+w?P)fjtNE1as2nh;OMMPAP76hgDUIGIMA|2_{g3?5K?@gN0 zLNB374J||n1VTvi#^?9>{`Ib`$-3pty>l}&XYYIV$?rb;(JA^^F5>{^(;yJ&+`#Ya zAP}>J&r5wb<@c`UF4j(N){YJ!kXL$Q`as;uEsg-xsP^#N1sM4NP!-9a-2?y$FbvYflMXxYO^vJg{S4|q z8u~Ebk$>JDdW%S*EEpzvIEoa;fk(S6bava94M< z#-+Hk4_aCX*_-giSrOsDy z2WeM0-lN;Npf|SC{iU<>tgmyxfZ5ck*L=DY0}Y~W27u@Zw?TBt{pTuQUwLvT0bG#B z-&TKK6N_jplrLS`zUo)f7!wheQJ97sd~aC^n|!r`sf_$tNc!f{-6^d6XCw3d^Q)$1 z8Q1Sv*|~8>sQZ9#-j1ziPU?SEuVt`RIDBCcD)y+x>AJ-aXtQTinznnTPmgwqL&?tH z^#I@2#ozqE=2L^@WBz)uU4^O>=T_cCNkyU1Ze$?$kc^x8gk{ywPJED<;C*n%8I>N# z<6+Lq{o0blgZAjW^E!OPBc{57oSWAwpl1u-m-aP55$6c%?u>*3d-lIkcjP+^?+3}+ zY4C2Y2N{1dlT}Wfn?G#bUkX~mau)n%G&%b`0nPt@=0OGKaJarTrT=L~ zHg@ryrDnjAn{jNJbiLQZdtohX>F1f!dzCWd*m;Ty7 z)g60&Zuotp-N=@&%8Tp+Jb6$sTcUCNdPpLc~v(ee)z- zQ?X#S{aG=$j=I4-A3e_fM6dg_Oxz|t(>$>%SQ&Vs1>-bqF_#*jd+TEI=6U*dlEV=` z@LAvdde)UYVjsEQC>aT@?=NcDKHOpJ*S1=yl7nvA=CZvkzVZ1AgEML?a`>6Zp8I&e zV2OWsubO}7{jiTFQ{q!TO^-NtC&qfnE0uf!qax{b3*{xQHAB?9hW$);u3I>}$5)yU z<;1K3^iN%J`=)gc4k`;O3`L%c>+>y3LSfV}*CQU3G9 zslOuyD&~jg1!Wtm3Ydf6x5r%I&9Y;<%x2DTN0e6whkyEGF{huZ%l+ZT9rw}Pkf3Kt zw;@3yz-)p+tON z_?;41tn+38u$b~>CPkkY=))acT-NX}mN#kUb!8)e$!;oi|C*Mx$@zWCGOr(H`tXJb zDZHU5qr@_Rr71pvds4|;AwlR&%QniTq&t;2NL%Mx-3QjYeinZ`9Ktq6F7@MnwAY!u zRseDo=d_s&3JC;%jX<_D6V+~w$oMdFB^xRe2DtC zA?22mDpmK{D21XBc`K>mfs=~k-v++soJhs0LbeMq`%3h7iMAU^Nrkt!8$+eZ;rwU^7T z0`3c@Ha*4tK2_7ZDph4ZGS_cG?H!Z83QbF9T~FG2aEa}Hgv1FNRIU|LK+c zuxX@G!tk5<#I23ZklW&7-3@d`%3AdApF4@94=9XF{vh9I78ufLsN?O_hzpe+&}92w zz{NBAV9at~ai=cg1G|v<;)C0kj!Y)|m#YCtVAE9sMp=x+F_qZUWPILQT9peyMyRN& zF4b&_jdTnBrW^XYaFEVyd+cEq7)f079+p4P6Q-mP@_S(WaGgT%C7`>QZfrAf64=j> zeg*qI{t0cb)pT&2Yl6`Ovh+X^7vsB!6Ufq+^`{w`UFgw$s>U~;=26&Uv}^=qY4 zNYvdvU};lHVP*lcMJQPtm?S5*5UBW@403z+wb|!=_H?A^K)UY>Jx^Jzp=~d(jb$rz z!X*~Z(AW{^t~K416650&x_=dVr^naWmRSE4*#chjid`nTW#$p@Wjc;R7HS8Q{;w~9 zxvk5r90sHf3_cH38I=a4(=tBq*{5P=s;c}o*_n5l{*BPan03h-g5|VpIq-XL@JaC# z>|ZPB3CN|qM*(57c&i9$Q2yfo#%vP=O?Gnbf(#^o_3Z0>##~+I61k=Me`f`_*Aytm z=NWaX;{~nl-+X6|yyU_L0RIihPp9@lG3U<(!|uG?y;&aa7bPE=gO6scK8DX^W_zdc zvsQT`mjgUt{#aP}GPP9ugrSqQon|F%uu@=zc_~bRkP^tF?OG=jm?VH zr!B&>$+040k!T?ap|0(|9Pzk9lyMLvKz(WzxC;z^k$x@AhK=tTj9z65Y{G zOy(io?=I4shM=2&y8m7Eq=?{YUxllWq1q!Il9jF3T1<9F!P2Ei8>~EX)NmxFOgG)W zihO<7-Dx%aVVz6Yl((Gmml$^246GxDxk}&Bq*qo^ozaF~LiL2ajiT6%rmYpi$(!Df zv^CXHz*A4wSv$&^O72WY3%qtwt~Wml<1O9#7q)#1`#j5JnySo2T^z6=)XuLA946YX z5ZA{CwW9k5L*Tmj3xln*+eSy#t8NT4t!ul#S}wGl3iiDc6j`s|q?Ltu`*W&o)Ma@fr zHyix8B0|0lSXfA>z1eNJS517~X1!XqcVV}7Nxj_U;^v!S{vrrUFB4OUB{ASk>c5Qa zZ!^s|-&-ZpChqO`|1)Pxl;Yc@8yf+JF`8Lk3Fru)YAdwNc(is=vgm4)T6uO&Mp>~& zCNzJN*5e_5k~-SA+UMy#wCyvNo%DjW#s7DW+JH6z+H~Ck>|sK(wZK%bZav0bCqT33 z@^eVfcSD6Z4U4<<97zh00P_lX$LJ)Qa`|v#xM2T%%+OwowJ^KBOF#G!_@hpI;|}Er zt&R;=9Px;D$TX01;~7DOGd80JU zq}K$)WG~BPUklbGcdq0G;4h}5-$y}nD+({k+(P=W6zKPd(L2x`%+~j=gtyHyDfrcq zMjleD3f7l560o^GTi?rES8e;u8lrOv+pEMo!pxcuntN^<_y;pT5{3FP?JNbV!Q6ai zhhe_gr|(S?!c~NKnh2Axl}&|l$dyIcRn5cnb9Az5*CJ8)f(i-%IXtpNvqC9?ffvV? zyPF*gbQ&b-cnb(hn~P_&vX*)WHT%Y}b>CbW=w&LfEC-(`mz~yYgEW0lCMa`!-jr}Z z$(3KECZ8eEBsHa!PUF5KM57x zokR%Y-8s`~*I`%i*F!-=>0Rxudz%wx7=~=86mgGB79$3oiAd zyGU-ms`w3!Lpbt?=>w`zXgYE8>I=tLH{z^jR_hTf?%9A&ZHbg|O;TxC1*-z2uIB4M zi7EV`q_@nTOgVj+t4P}Qxf|p;;o}hcVPK^|L z;*xt`-YSqnlhYV|d~s-KKXN^E$m)cF2pqcnDFY4sqfS98n3S9$n~ z_>mX%@MQb~{cx~JH1kE1-y^BzO?B=G60zrjzk7UrWPZ(N10P;_EcG_}3sZV_aGP2&7q7}o6dy;OfJ?_j} zIe%`Ko3>6P#;Z<6YKT(s?QzQIxyiJ9uU($zD2wAAwoG(>_FO_{#eH*f4U%%H#c%?i z1xr$g&AyWSikZ=8cK%MQM_qn)u-=uFynUo>9LXmP_hZc>h{5&TO1FI5Uc7Wx-(_N# zHAcW$=~lZ0ur536f)MGcUGG%2h^XVlZmGP;sPsDqwT_OGHu=KF{en83EhVonfFtxo zH1sMtw*>dcuS=&U#dO7gb2lDtY(E5;x}Ft<#!i}BL=rEUpDgU0|6;Q=ynF@WAiSGg zG5F7eTM`<+<7n6ooa`a%j-OA;&s83`bo@rl!JSu=yaEdwwF*T# zG&&nW!@C{bAZytWN-!Gfa$hC7&Hk-S4u2PH@s{8d`r5L>G4sY0%d8QAyKT(b?7-zpgT3h&{vWcV@;q0lQ?#dBjYy3%<0h=ZBS6%m;wW$}D(f3@jQLcW4)uKhnm zb*6vL;gTBaXt%_AjqP7c+jY>*7?UC|7UE?mH7@6k62ni5|5-i)xwLcbiNWCsrI*!b zUz|K*q^Gs(fn*s?9c`HG75}S(BGo`O;Zq^ZjQ`GI{1e;>Ru=eIY-46LE%iM3e-9)oC$ z18(2>nP&&S=7c81uuGbQ%x4Q994|GZfezFHryUiEpst!*F6_s)=2!O+NLJdB#iIvQwo# z@o)J0D&!={_{4^moP*WKJ!rQV9+JV|aN}WOlZTvW98+|cq?nySvyZK=C7eG>*ZnFL5*WMf31mI^}@ZgTF12; zcV_N!lnRwCVA4G^vc`WbtBycy)$2! zreo&(t%!eJov&ixDWA9}7@ud5OnpfXi_&flhZ_e@8Pvkb$FXzvzu69ohMhepw$?O8 z-GdSK0c(nri!(!;?acw~2bZ_rKH)wrdQ&txkeCN-{Y6w(-d9_SP$6p2ECjvjls1dU zJHqd7>SP-iH*LN8H^RvyjzH-Ky_t`%S@}=cb#Py&M9jbEi;=<8v%<1U68`>5jpd?R z2z7JT+_b3DKHOSLx_1)!xvw=Lv|4(9&eSjPq4mL)pc;{=Q{&18z0S-Bbs?t(JH6DZ z0D=6W;{*;~!5-Mj$y0eMViM`rteJ^AI$l4lH_04?5-^*)yBVyx3~zgp%iY{xSyIl5 z+{v=i6VbvK7{f(yKX2Zx=Yu!r?g<`b{R}^Q8(pn2im;iS>}_;9^VFe7&#?fZrtrP& z8-2J(`G^z}eNeq8ZbTnHvpa5h2W$`nWU=V*1e>JBit}%D!@ogW%Job3>c8o4{!HQz zN837?VeyjE1}%=FS4+*q2v!eIYy0@ciooSgBd(H$;__Z4!O3 zhfy`Y&E2ol3t6?JO7^+EI=pQUcR)$QbFM^6fK+fC;HL%J?YrxSaH$eUKRw{#oguTH zqY&jY`2x+35|)0*qp^{Cj~Ca2z1yDHfmE!#p-B=Rc1YB-z_!ocZKbGIbG<63k|Vci zx2Wnn3ew%R#Uljc;o`54o0R>~QSFW17i@7b7V`BfiqMUfWBt~oS)FEzPhu0)51Z;+ z(nE1(xw4faV`2CAtiO6$as<%L*A&!R;&-@PuocDIX?tfU6<_lx7PN9rRQm6=s-|~B zDplj*9BZ`d(EqB$?VQt}oY*gKJz)`(m=0sNhsrB3y!!FNcE~pzb8F1?l_qm?6&Oz` zW)sX@rYm{_?c|(9GZa-De(I^5Ai`av8K9x>kY3DG@*TW{+tdM(OWtJxl|LPJz;?XJPI~cP zWay|4hPCA@u<|fd2v&f@N1v{bd4WyW^-EvK%qQ@8NBdC(gl~50)^IIZM}|G_--UFi zvsOdenqdmS>&=sM5A)Fe-70Asj|C18=ZMR?hP;PWU>Af9((>!K`xViUvvp5y#6gbg z6>Qklw5kMRC**Nw=?lUxGmiLBlMg;c&^u_6Z%fg(mQoEnwmY7YWSv<+ZXTH2Vn6Qs z@K@qS4%786{p4uKb}gJ@iSrojwVS$N9V|MqQ4&Dsu5S9jd2Z& zUPD*M*Mi$}gC0tq)6O-GbWaa_(zWe?p4Y5ox-GoaN7&20vFt(LsWsW1AhnU;WVqT| zdrYas*+W@AWV-F0KMk?-49snA+_g+)a|3*!O+W4)B{xyrTltnFNPyo=s~+nw=f=|? z6aql(AW+_U$T!n-SeWX}p2Zx@X-5qcb9{S3drB_&lE5=6z1w57a* zVJr;xkVhZD3(Gfziv1dpHMGZw2I4=veu zc(CDWSh7FhSrr0}?ARXhY^{f$>TYB<-&~x3=H=TteK2`FN5LVf(u|*-j!rt>4Qxoa z7e564sQ5N>=Fs8z=S)K?bx0LPzdG}IYYjET%(?bzO+?kOmIGNKDrlm+sk1M?-80p4 z3q+T~$QJPL1EObp`dLgWUQ$v-Ea0=GVG3sH!Cg>*^$76+jj)1MN!oSf1$#dK$6>~^do&6w3AJ2OA766+0dI~Isy!yDWWgOyZ((tWpVbWj1j6jmD?RYr@Jnf;j z$53339vuC2?5SsJlYC408{a-j`J0q)*Iy0Zzsl{)>A&))joZAR$I~MTFFk{O5Enz)1=$6)azp*t~j<9SHO~{}jF(HQDAy zW~e$-8c1tjLoZxp=ia76to$*p&qnlApTxEK!%59qtjDnk@e6GhwbYbo>dVsh9YFb7 z*Wm|wc?L+C?CClJ%UMPLzrNd2+lSRKi_d0Y3Xiwz!1~%#hsvPL;d$)B2(;u8B*6Jx zp7*)vHs z0sFq7L;ersnKjpT0^BC^AyW!?*$3;G&+pX|*$`|ib#A-17H)cOBG&i5TUgq} zJQDr*Ba4*QMVH;|#Nps~PYn+osFJ)u0ZC-#D&lW;YdSD{{`H86kr}TA4i=yQZYwu0 z1J6!h(b#Fc1hAVAeY|?DY*O+Q-v^lmT4O}pJc?@Y{Sgg)6w4N>hB5}yUKOJ%@^d=wtBfzU zxPuu3`@#PAe5ksoOe6CpFY9I4pxwvK<@bMLqD1GMa(G_%!mdr>Y+=XkucuhdLxdLc zZUh)*mb}PR+XyV03pS|o3}awbKFWxAX8O|^%&c@NK>qr1jQPtM;|i6dBv5hPex?SH;!^@WadyQ?vML09#n!AwH)9B zHc*LMR}&ouZ*G(LnZ@Z0J4&|RW?Xxm4Ep%M zsb2gglBK4P?AqA0$&3-RtHje{kBzr*j{7C99hih)#Q0eksyX%V(e}q3$6j#p5KP@b zq1KQkJe`MsyY@qL``#)3I{r?Yf4}J&8ZB1V;eJ1%fjKB7+IuIxrdAs8*WPncH<7^U z|7=?xZY1|`Pi2P*Vhsj1K1L}d+nj&wIS%J|FV^*Tz2iQC`>*8p;W^~K&xNLWqt7kn z1V5b)Gh{xleQ{Crsf7RnKQwPQ1kr4Z*owWhE<@^txaZlkK z7oyvj<|5)SF`mXF8zb_7zNupCW$)RogX<%^zjg^zp}}*i>TMxj$2pQtBKRw2O_rp? z3LME3cQroQ*I&m`{Zp;>9i#!5?|??86x7}QNwrT;uJnaFT?|$|CmKIPkX(XuLxT3E z3<_2Dbr3mmi5Th9Go6{wnB*@H*208IC%@VseO6?_a*x+B)n&?@iR;mo(?g*0vGE+Y zfh@y`mma;B*iO)cwG(b^K#|0dLG#9oZ*IOsVyP~aQDc$6-z*Qtv%tg-3GHLX^*M^J zC1D@qR!!Blq!{XvkVi}BgdVB-;|^i+8)RxG1~FHKgK^30{b|)E9nZ{d*@CtI3%3V^ z(a|x-E6U!9XS>4+1bEotPf7SpOg!(KQl|2j!Y&ZVRo!n=gs;&Dc$ifr1X>hz$Pm3B$4dj=BS-I}N z1n@l+vca*Q|4C!gKQozM{+iCRjxS3u##lpzRwb~r-@k2a zoYGv_Q2QRYY4*fvcke}NL^sEQi~VF0s=N<)GB8Nwq%kD)8ZI67)d7`^LzkdRZoRzO z*o4sVt0L1bfrDRhb9WRHEFSYV7PRjzbo6qoW74j11-kC z88E%t)jYc3MlF#G#z7L3&`W*~O`u$rRD?evR%6S05j*SXM z;j^vdrT=u~eS^^8h3knb;DNAY_kK4FL0!K`~RXGF|!-R{povzzEIr({BPeK950m_<5BIx-i=r4 z%@1!&!LEIRiI^NsJ%mGzcQi=bHXbkXUMQH&JVN)x-g_aR`?%+1S2AEEr7dM=$sWlT z%ikub6ZU{VxP18Y%`SbKwo}1r5HmFS>1Z%!LOm#S>rRmu_>t8CSYC)%tw+ zMy}=)V1XvARYA)Mb>AcB0KG3$guhYMu1^*;i1pv@x;N6T_8bST6D4b9CJ5kHevg~I zg&9u;b}HYTKnPeHziqZ&WVd^-x|i8iCf2{SDRFE(cgu-+1ES0rSVHFk^6lR*)}n^te}ur7a;eX@&Ux;LoxLQTDsR&xl&> zV)5>m@-K)9HGgz+1wFi`(LG29o&_ABPG}NyS~&n_%8Q7$(NWv3W|;6kGADWsIhMh z2#u)xQZH*r7Uk5MK{Sfq7|6fTy4t~S_bVPHDK5F{^nP(#Bvho&t6}J&?3DdTL7#Nm zg=qq7bd72rp(j~l%hk1I>Y%mpZZ{?JbADq)y!gGV%x7x!8Uj4ISmK}G;|BU+L$3Lj z7Pudz*{Q|`{iOI_&5c;>an_b5A=k}XsxkM_y`$-=SZTythLXlR2eQ7aLlBS2uxepc z=_xLxn7t;XrqU)RqP554nP~paUF)=nN*?;6q|+5MV3x7#QzQJg}aS3iuq6}Q=^nmP#wJ(C%zfj z;I&g#PdjLucJEsJwuT85sWt|2Z9+sVx{Ry;NG?T0Ge;Kab(fbMxcYt(=S{8T`qhz; zgKZMg%FjG7N1+}SrkRyaxeIwsATniA#c%!KgaiyQzP0nGkry+w=(A9DwuvC<PpqtG48_|oi~Kpu-16Xp1aAr_#RFK=@tQ#(Zeg3uuD`%J~b zHzLIN2Y*6FkH_mgkIb`=Q^g55+^ltFqv!bcj&UO6!oB#O`+WaDsv!Qzh4AyM_x8yd z{1lPXELEEpC~%eR#(T>doJ)t5n{~We_{N`qy_Dy$J7g{S2SbKuuI+ZK2v!7nQ#wqw zwEB;$H>h}O>04Q%pE~cvKHEpHTAxqlnb)d18p=3UXD#8~{TFnJ_Xc>*)uo5OG{`99sw7&!tH6OC*1{o;z>T>^G5@;P4h1zVLcpRpe|vS8RC4)w$N!@1hD= zYIKZG-|;$vWZc`;L#U~1vm5jg0K&irVP9&Mq(9X0t0Ors^PzZyQD&pQJhbrzx zKeVW)w3@kp_o&OKw#wPDV6{3eveX1E&9_XgvPYRayr%Owy0;+xp(pf>4p*u~n9}6& z%cd^o@A{60C7y#mpa+ic&U`NLt}?oYN=B0YR?n>J+Q8K@b61p7}W_e!SU}O z2r-%zc3h5+eQ=RZD?azZOFBgS@dF4Qwo*p=5*?j-yq1g{hs@2hSD&&@roiCDkpnC8 z2jjrx$4sb^u&Z7_jT@-kSaiS3tgQe*z{*+bpc!OC>JO9i3zXuqY0x&eFW z-0ovPR$b^%E!B_lZYSV~Vk_qM)Ulm%2*!LSZ-%@e1S({pW2R$1rmzC~k^1a@ zEmGe*%;kmpX~&Ir%RzqLRNA{=B+39%qzO@q&N|GS;R+&~w5~o7XesOp!xZ3q?i?-b z0L)rX8(;KCh+B-=%4|Z`o2koo0Mo?sq#9#Q3nf&tO6Fkw%~z)O+VaEphublIl-K?0 z&c{mwsI~MKS=Zdqt3o%oJu6{hY4g)8p=;YA*^*CG@sQ>{Co>{qbIN3D_aO(+7{LRR zN99W)*PeXp`G?DdA;JPsNx6HE^rX||iKHwo7K44a;Lz%{u7NS3GQcKtYtBDhu$_%r z=T?kfkz`!#@$=Y|i6mb!pP;?Y;+~0?M22nOZDgaxHj2Aax*G3RUkK@gSAw_cAb!pk zB|G9ty5^BG#vHV$SF8I)lVrfuQiAr23@#w7ARd%p*DEMPPG7e2dxBe^o;8I?a`7QW znq>{e;^A^vfLge$6c`GaJ$%sZHTvXwP)``)Ts=q@jVtFW?yebU*D|$rQ^-R z!1|-F#E7khhMLHv{L*AZxOcrZnvV;SBHQ{$i^|6Bz$_yJYpPTi!pP@t6bMMKrf%yrae{ zhTXHaQ+UjHPJ;7JmMN^wKOkWF{o_;bbm*)Uo;3%Mj|r%Zv@gxgA=5LB!cyMoaF`hE zBkF<2MKgccc@_ZqEwzgal`s!tQa-fA7Nq5T$(C%&3* zKb}z)S(xz`uV#4sxWQA?m(kic#G`%kbr zqY`X;%k#|0jrdMp97o>h6n232fbj2)S#p@SsZ>$5uy9xEG#8tm^RFS* zN^qy}lD$#W?kak$JR|Y=q`LKfq2J(Y29N!>0ACy+Lt5aD&wyM9JWIo=38%NLmosJT zHTwP%KW#Oq7#F1L$K?CjZjsuW@P1a%Am2X&awo^h4LhwU23fV?JjCX&7=8weS`4}+ z0h}WK8Z1UHGn!dTw&u~?=qJEC!sT`rUA>72qToDCe5p#@NNfLz2XRmV#>sK%cdu9N zmFr74SOsEEjD-Qt!?WDZfHA2j8_EF5Dj}mB9E-&R3E9?CYmQ~cO^_wMRIU-7NucBQ zwjHYgm0m4s9WGb%Y_DRs#ZkO*8Fh{!*;lShQIAQ=GpU$Wu>Ig7yuKkx$Kc+rB~eaGBn*m$9iF- zDM7D6B*|e^Mr@c8$DFYCZ$G?fTy2mVvl}4{rx(6cp*&_@CVugopC;3%BZ77~y11Gu zh&BGz;^j(sLO$CU`mVH;LHKIjJCe=DGo7hE>9KDBU*E@cY0TVrG&c!};W?1vkUj5j- zza6R8g$u0YJI$&!sZ>N~}w?Zxf;m zg&C3_RW`FCa+e}YxAgWn9RB!Oy*z|%RmTC0k%VJTy#^Jsl&|noA7-`hP3w1A1rEf` zpeI2=iin^RH>u6>xe(pw8pPD2_}=92@M8O9tA)(cye}Np+5CQgb$|MRGWDf)eA7XzcHdt+;0Eo4YHlk=6LgP#x>WqR_`5v zJbYGsrj=JPWrc2=xXEd=uuA8atBEefl9#ayd#j@YgGw)Emfy3Mdl1J7pf#UJ7qsEt zI&tLYldK5tKz)WS_Nt$;`MQJlck(tM_U4njm@Q1Ygwgh+lLPh-P}ZbA^A!5Id3{K< z8`Z0!=Ffw?qC*rnaM3C3dqTNiOcmhn=Q4Xdj)lvQA9nww(SFy9r;L_m6SfA`!x-nW z{_{~-r~ukhr_I*5twkKJr&m@5Ee#bqTSqxq*l7`&?BhGtbeUYJRUrG$xNVTE_bnj5 zW3Ry1YOpRLWz?I6rD&yoT>BKsw%DijMn=QkVVm@*XH)*&p8NcY%?P zRe*a=YbUyudegOMff`qiNA%*c2t`W3t2d!6DMBf ztdEyM^$v%g3GiBhn_dVIFqbKNmH#a`g&{5p0yI2O0ib?(&yVvn?n)TaT zPp4AJPah<^`z>Vr5&qt=%wiN+%XLdq-**;TS!sq`VKs*V)UMlqx?(a7=7euitSGd* zS}c~mnu{gsZ%dM%o(!LK%@BE!HTyjb?g(n)P*<9`| zaLREy_50G#ehkgFG>7fLo8Mc{{TIxbqTP5fAdNw~M>XuF{lLLJ+DjCNm(9Tq5BQs| z{|$J;$AzAl@Ytxqy+!&?81XA2^Go)*9{(yM4ndmS{=4dl39WIG69wQ1FA2#I&YTM2V8O;!K zbz>go;sGqT-7b9#v*|!KMxzpY^z7WRA^wl|H^j{tWSv%lb6tM_s&)J~$NFTgnWUl9 zA1-5gY!|Ab>Z~J_#_kDc?bMa=_z~gZHa>;eKG$Gh09#eHa{eXcLkS+WrCzl(@Ia+3 z0aM-y!*ZDE>?w|jTMB2Gqt0GMV>dV)%T4%0xv$molQS+!1wz{=as5KP-Q_3jJod&1b$N7`Z+Yu+V9N(A%BQP~v zazi_SWHk1?Ex#iFfXEs7&5g=cKix@>CRV!3i<(`?l~W15p#o1v_LvRte9u`oY0szhxT?DBo3A3W5fti9*+@z|{rgbn)`Qtwc5 zN{o}4m(3s52XGGNx8I~!b)lR(BdHZUelf5fuv4PG>)gLnM>+X>uj%A6mo+-2B`!$3 zmln3u;KK;z=I#~$x@7gBE4$Rc{Bs2${&npRjx#=$DaPmWO%eotoadw=b@!6{3pA#y zaQqZYG?(z_v=OBRJ%7&IViOwnsA@i8Gsr3{NP#uymjP6}Pt&A*=+~?kglZ6dCeM-g zyZ3xgX5mSCL=>;d7QIIpwAxwUvvl8O{oOdR~`0-Xtj4j(mVkbd0hjb1D0Z z#W)sOSiikuRyzScrOwvS&HRxUSB?bYJWE4VpH+6j1H0fcua2AYG5+hsJnzARsQ)N~ zTf!tplM&^a#1oF@I2yy&vRB#x%#Gx9bTrz(&S`-d0nD9BZSq z4Vu3fc5DYHQ4baln<=e}jVkW4Du*|dB7Fv~N4H9@D%Y^W7`ux|av!s~V@E z`5vSi0Jp5Y12c|pC;S3G$D3O)5iWKA3FK|oXXv?++CWalX9&7XZ<^d(Q%X6uEKC-&RU#XgU8k1T{Z>2ue9T z^k-iz5Qc-`2O@{Gw4VHVnGK#H%TnNs=VJ89Z$02j)X--~uZhtHG?j}=Cdx8%p5|AK zAHH%i{*N6~JlTgCm;%-Cc`H4VKN@;K6DL7!YEv#@t(LPsuI=|7nu*!oP3J-qz(ZsI z`asK<1J?eBwHMvtNBx^GIe@ArtEd;D36pBDJ@b!K?ZP-aJLF48JbB2T(&#@Z{V(N8{bGaix0iW0;(DSYL`>FX zr;{NjMzeqKm9>86uQUC8E3D%6#TuB@Nz^#Qcpxy&@voXzz@}r9=n83$JKMq zZoC3~4Eh`kEp>aERi|jtD%7GG%IC+F#`mdUdx>I2X(EFh^&|ls(mV+R>Y8II*hTa@=QTd;?_y^uJ^a z&Yq>t_fUB<52VbaAps}aoJh|zPg+_^n~G7bM>rIG+HtEq+q@@-IE46m(u99__ch6Q zkZQ`Bg-g7f3xQVoP7d0#w?JYrp?2Dwwy(>qm-&r#4Kf}2I$GXo?p0`DpJA%)%TD}I zXDaUb>&|G~(*)39sF&Yx>lJ_mQ8p3~ai9F=PlUWls-Vi$3VF>N>C_o8I=th;W=-of z#053}c-)YA8%0b895V3|R3oh!nqc@W*WJt^b|U-o)iB%9pvgfIS;Wl9HGgkt#@ZxIFvfj`ZnZfV0T0YITLB=GCj$6bX4z3PFhygGT)~P)c;o|H_ zk(Z-(8L_0lM#NJw?&qeHJScdqE$Iffbj%_eD~6(Cxi4*o)4vX0V9O3B>O-L|G0n@4 z#gWp+?4D;PvnBpNzTN~JsyF`swuV$xwr}<}A*5spGug7mglftjE%qf#2IE)~Su1PA zlr<$o#%{)vrL097491e(7z{HQW1i#t{XN(7`#;xnJ;oX5I>$NZK4;F{pZk37_xp8! zN{#>e?!s+cS^siZblo>mo3q#MYD$`TIuH!;i0=(ycC(dUt-8Ox&DFe1rTh)1Ocvh+ zVz_{p-R`d`lgb^LL}mzKPJ_A8-%Dm3KZ7`{i3Nk9ATHnQ?S*Usc>VOU^xe z+DhN}%SKs%&FHa_z#sKq*4akr;MZ*rWL`nK+8X{=s4{R$0G`oa=W3fi(B&N zIG>bkovFspwzq4ApS`PMGNEdi;SZ{H7sZlG$S|w#D7pR4i&L=S8`yH|V1}`oGO$3f z_bNc!K{0)0_$H%A1-sr25~*3w&i&RCTuz*F*yYxtaPNBj4XRf`+wmk@CBVNF)yO}B znudtj1)4}S3Ghjo(ehq!U7DQ|Xb6)Vn-R9eso)&r-{=U}5xTZms-MSU#Q1XD83KIo zl}INdj$5>BTN>pVdR>&b?go8A0F;;A>5^7V1>@Uo`WyB3eew!^o`j_SL4E5Ld55#g zB9{+c`g8Kn;f(F{Bvdc?4)FwCB>18&-S*Sb;Gk`nn#BH-aNWK3I3viPTX7OeFV7d% zw%Nyu^oX!$UTn3U0W+YU=#GRo_lWxbg*06?4**z8r!BU~IESh!!ZO_0l( zPZGp9dyHLUCWyo%pE6Exj(IUV1v$qW8EF?L2Lk?~*Elwe(Gx84!)*pVnWBFV)*Th% z)DjAA;(WhFK@)bGPP6D)bZ$l;*8OosPh0yY3w2#xgTs+`*xfPMr|V|sb=G@)_gTyj z#jtQ36?w_>?jnEqdl`9#jAc!>65HU_fL`{4@D;w##?Nl?ule?TvrraG%9_*}Fm`fl zea|G3a)Y^hFWK2|HZqSUUV0F=ie++we^>X4&^l-QAJV3W%BZmHc%P?Z(E{iIjuo zC$DAaTpk5)=L1FbC~Ud z>WxOG{Di)%U2=@YrcwH;c?YAWmNB(9`4ddv+;}$-nk6%9`sl~kd%nuH8tU$4V(;wk z8x39rGc_4X4yxd%D_KmHDO|ja%dLjIP1^TlfhY9|<2Mg$6bEIc2aw2jQ%Y`M0p8tv z>-NZFf2!q!Mune~>_)+sE5rdB-4G~Y6W1uu^#nek1G~3OSt&byBkh866ReNXo-m4TzpC{J0SVb^!)R5!|Kg99q)!C1s!+gT<#E$og z=H-bGm^-@=zWl#BH$Bgc0rZh#U|Qj@U5bZZc{<^|7hDY`{IXU0jsm1+S zo)6x(Y(!Ysd=U&O^Rfdya$^loGF)9X`@4TPpQGxwzo*$Wo19I#f^vBOff>GC?UDsU z2F!FL>92J?kXGCyNocI;$`x_v^DmD%ge8a=uWPy48-DGX2N0()o`M*dA;G@O-Drl#r3ZTJ~A(&?+!B<71RM!G9iZJ+3cH!LWgX-q68OO1L zBMydRk|mAb6w$@7guar@UmmWcZ~Bhq_?B}MPTE$Mh|b+8>aKtUhcq_WU=(*d*8_<4 z%-~07->u0E9ONi=Zz>2J7*(E!3~Q=?n~e}90Dfl%_JWe7bA8U-U-2(0koIZlXCga6$V} zS?aCXyh{&(g3WtAiP$6KaI>Jc!-7k%HxO?_2{f#J-E*$XkFX-(<9Jd<XjFbAyRt|UA8}4Aai50K^qjyTvutB#_8Su%v zCBG%1YkcHI0=!4CMV4S(t{F#3O7@PIm0XJ0^Z@*wUprCb`-D%#Qe=rSJ=>jgtYXZI z+cn`WZH`2?RWr1A3w2xNXQM@kI;q^7RdRj?$D>A@AhI1wlm^%9f_3z=&nGmpzb5?i z%(jrv$!cF7w!N8CBq&xRNt34!l(c?q`Cnld0K;yMwLg+?a&@8#r?9p?W7mtqZSpmY zGC$Znu_G}jp9q2PTf#JL#{S?*$+w$F7hX5f^UA11%Hp6MiToBvjtCiLmn6F}@8HAo zKQl5Kx6h^E_95FJ_(0c#uqL291MCG8DdeP(KL0Ad18o5KRNMxJ*@KxB&JbZIkMjf< zHkNSZ$1X1JNppu-!g0;)+$hF>J>Qxgx+LFq%c015);_C0Jck#BF4Nr?Wnu z(sqyMlZ!;01xIjAyGcV-#?Uh{ML?yOvUANEGM?lUdPDh8G9jgUFyWVJ^Mz6Y&*O2?tCR8*MQD+Q2E*~vrHd#p6nb6SaG#qLX>Ok^6A4lAt95jl|gg@ zb_eq=wX8QyK4z}00Te%-VHm1-KP(Qy;z(68J!ss_&rpIp>|-}r?Nxa`KaJ?Ol~9Ka zRZo4*cylbrgy6IOLQO0S*npXr7VbPf43aRSxg0ko-j_*~n<@cygJZN7nr8P}sI2(c z9OcpC#_fUpg93LP%yg>=g4dzj>php3*$Q&d1_}ltwL@5`G=5~7)I^- zpkdl*GN6?+u%QLUvw^5V_Gi18w>h}=*MX3C#GW)Hm|-Qt z2Zf)wrwG|WxMusjuTX0mQ*7)`0gG&52|;iA>@`%9#{+Z){i{n=)Beo6T6p9@JcZ!s ztoEVLeW7wI1(@ov!(;iNM$zC=Khg3hqxExOk5Z%ClXGSUQoR`ivMXXF!m*LgoCfpK z*lSsk+NTRWN)dv-Wth*Qint3lKTL(?YD?8IgjadNdQ0#`2=T^npRH{Fk&EC!fw=H$p*v$I@)@ny&smvT~3j z+M%ajR>H`*=e~|iz~Wq-Hj4i@$2-Aj>1Au3dnb*@jP1W!-UBR*2DO?vab+E1{i$0x z-~PkMSGxms_Bpv!B&n}+FHIm~1g}UrToklf>NqoAqe?pAkK6m{3~SHU=JObx|L2%C zU$x!z#WrW*sB!yJ?j!5l>l=kyVWGAtRfUD4V!CZPU?TdFra|6UP$STfW)=3eww5PT zRtpRCiU(9{0ouiLcJ4>)BFA*lI`{LPdNNe!p^w>+)>w zK};ttD}RqH!SjLlKd~fil?iU*j;5{f$?jEXv4W* zlUPyM`t!~o0;iaK-*#s6fRj>Zd~qUg!uq5ySv+wG2q>)UgmuyE_O$9Vg7-sRS7jgW z{Bo8m9gbgLYELhg&{Vza?I}hy7gw4en-D8hv@ujcFUkJ>_3bQBHXa+2)WUl_1ZVV6 z_Ob>oXl=p%2W39)SYXw&*kRr+p$$din3uzHRpofo?Y26tV9RI9g!zw*Q^z5iT*QY)H{lrM)P+3K$mO^5CkDy<*Xl5|2z&FDB z+ElGl^4q_?euaqJ<(OU(I%hxh*S@N-XXu35&>xy-zYN<>qqlXJ=tqN{dadV}QUL?8 z8P3$akgH@=PVu9{kCS6%4o|kdH6rWt-1*M5QlB zq%=mqkx_2fdpjLbkgFxZS!#AJB6E6uhJq`ZV+?k+2Q7mP4Oy7HRV%%-lWAj*X%@~3p_z&qhrL&MvCetn&JL?RIF_%r4x%Ty_kJpe zSklnTLyB2yKWW!8l@nSh*e91BGT!ZpC>upVP6czb@@p$z&G&V#fmcGTCwl?klSqj2 z_x#9^U~a!8ng{v!^oQJ|^$pLykdGtxe6!rvuf_?g(H2da<)0an^#OmXc7U}j@nuxz zZoCzfH{=2#b8c`tEM#)V zj?}a?>J3_F-Uv4pEbqWuob7KT{|)ft%%<(e`2g*G<_sRlU*0GB_P;Ho)~quXcAT`6 zsJ?r?V+Jk)6{Idu{&b@>YMJ%sVpzEH`(b7gRT>m9w2=S#{b${P@h2?eAX$DO2;5%; z!?;hl6#xH9s`KA*$7w5g;#ym-YWp8o@ z?G6-zYc?bB=JgC{5CLq2fWDBrGAgZSq9B>6;nx?QG*4WWIQ8MoT1wNUi-3seLF0pk z<-NR~o(<*rC>QAM40qnX)Ou8srGG1MYBCbcwox?aGeCewu@G}t{edXSW3Th)%cD$v5rMcq)=Lx}ETD=Cs!nU_#jdeYHs5+9>qI-0{Eslh7 zPVL(hVTpln)xKJN_0pRMW*`YGjmsVJO4{}354%pptb!h^f9&n$t^_Le#FC-e!-|yS zVktY^eK7^sE}`GTZ>?|CO@FRoO!N~++V5BRIaV}e)|A3NYJ+MAMeN_cD&5eL!i=#x z+w*1!$bAPw#MCp%J!Mc*Cvx)5oK+SqgJ*G=T{CpkyK&;+4G8C^lEXCqEi^5xVN@+srf;4w=$8G_kHb9{e)7$!;!=G3 zbkWCaCZ^phTBuQnvP{g@uj>Bg6K?&Qht>|-V>IL%!`(_)3+j*c4qi@1_b^wZpw+e= zgKr$C5M};{mG-u3-X`xS;JfINy4TiIMw}h* zo1#D0^>V+N{qZ`rCWPXuA)6EWA)p$1o=?9tNPd!aWiI;Ql-q~emzrFp71B~RbgS_@ z$vSHqzE1PcHMG)#GK>z!(jS!_j=M@BGon9r?RZ>Dr#f9I6PF$UJ-tBk{)#otDyJebj!WN?3t{s`J ze;kx&hC=upOW(&whwy{>TrlriBZW_ae=@Ve_a7gBW2m5-gFLzLkO}05tlp2S1+x%O z9+|XDD!?dw z6xICIzGmQFvJ)RcHuqBkHCMiA1$wB=Gx>Yi@Yc-nkivG!t&i=gXyZkax2uG<{BRKM zi&+CljuNzkB5+2c08oy?ELZ5OU7~SY>$tQ(@I=4=jioQf5bHKi%mp%c8w+qVuL&L1 znpZpHixRsD9P|pd*RAanv)vi^E`7+WKVXzh&iW>w5&BIjLg4#pgzOhua-7QQ@zgdc z(ng_GHad~#$hvxa9M9@_{xT{%=SoPtwx3s^qD|`1X1(zQ&?G`WV>W+S4^rlRWHYHO z=c&JvWR$S{F?W1tUuSHa=a1}pn;V0-Me4gc5}1Qpu(5m@Gv{jI@7J-&fo*8}nR|cj z4DWuo&?)Yn4?a?*N~!X7!Og25dBc^M{CTkG_=GyCcC*^SmfxDsF^}8!@P%th$-yI~ zYKh5|?uA3g%7EnbW5=T`clgPY4rRSDb961EIzH>pU5go}ZTG@(!>!~8u7nSZVq^yo zVV5|ria(N3M{A(B$P%b)jlc-)zI?&3cVroaZ80( z_(lw_bEbUme7crp8D>(W$5)5%4ZJ_Cno^h-QSvOg2mm_=bIs3aLlg)A$)G?h`0hqQ zU89?&^@s#iF-i!#oMl45FQuF~db3?rl2V)oBW)zM$kbY%0ls8b5|WReUQeqb2yF~e zQbMS<6w6V86}FVqW_20p7s5#)gP5HY_G*fjyu&D&QN?jiYukkCynIH)jhzz@&h+sv z{+%ZSPS2EUT7L+7c4K|tJW2AB9~#VXCPoi)hJpd7X>N8fQp?4^{E!2*{fa?!w7ddO zs_nusRFpff@La^bR$e2{aeUJ(SGqlfFmB`b&M}@^6CscllX!z@Nj@d$Xqgp4v7MoW z?$}NmADqT?@6623!e!T`E+ta*=fx?%MBs|QnO@iYpYcHYTmq-R_Cr0cUlfcW5GaQz zFyYoe#W@x=LG2voT%tSsyjvM`nY`iUXfZe+%K5{X$3ApKd zbrgAQZ9{N9FflF89+y~7tmIYso2+9-wgt_6_Bh40ioh?OZ0TRo!7P3QIMQs;d)@Ag z=OLh(3*RQQTHARkLx@DC;G(%N6L;%&a2pj{BP??r&k;jU^MFqCHu_%DxpSR=Jo6a2 zcIA7~gSO#r6E(W00}AP*j||HJn~U3@4KUuA3y&n!h(V1Nqr_vf`e!1ox;o1wPv5Xr ziYJ&c!q*haiItUQ^7k_?(b6z>L&7-CqJ;+4A5fSu zYTCGtnBKsB_So{)fo%2JfIa-EruC^ZYSV^1?!#vW%meym2r>T&u0}6bvRevf-yY<$ z*IX2x= zLBb7s!Y*rK{bgzVaz00Dm0{g2eb|io#=|FY^XwLm@S1&z~ zz%nWLpNAPigD3kT(RVWy585tgf#yTu-mC}RDvmdgaMoNUJ6@?W*E7wwVDky|6|${s zU(FllDsWy&FEvaW&mw_|lg?B|9079W7h|Fz5R~#y^*-B+K!E#H^><59_70vN=@7{; zB3(|0a>O=Ac;laZQ=|+@=b5vQ=XMvRCsqA3#;MhyE-Dn?epFenhzb}Eo@+l@)gWLM zXD6Fu&F7vmIv2PNX&5ao$m9TJqZjs%9XobcNK8!ZA`tpEb#C_l2%}=Prdkpg_;W)I zBmSvCktljJ0wWjbywR9h~e^^C&5F4pt(S`oP}kHh#YXyPtkZSzJe`rNoF?&kjt)*d#f zEOiExOyQ#%`05YdUNLgD&n*(X@r%=Rd5OS>$~5(esmKM~fz#*D=E$*CdAg`NEs5F4 ztoG)g?jOwma5a{)I#k+mq zB5U?)P5;s>Hy~(^7vi z-ZgA}hFsYXEZrKzjjN*dJ~L<|=sG3@EhK!^a`a64Z^e6Ab5`&S1!0$q-cbLhI>r(q>!Ge3+Q_9eG=I26pu9EOyyJ`Iy4wVvRq;$;k#@bFJF#7eL zQa%PE>>Mgyp8#`iw>N5Nt9C9E@k4ww2_ihjA}y~~L*CT%&N2r77=N)UVH~Sk6b%2( z9rah#xh5TAoucP+kB7mp1b552NK{KH@G%Eg6tjX^{x#n1tSC{1?r4Rh=)<1&>m3y2 zq6pvQ^ir$*L=Y&qZ)HFCGACU^-HUmZygOP(RSRVr5;#TWCvEMjr6VhU?Zel*?l|>n zzxs{)W~vs0gzB*U6ehW2VQ;wQWCN`UHF*m7FrM}KU`CHf`3%!7zPZAwlbHtaNBE1O za^}Yy#+HTavA6i%Z!L`=Ca~Suunz>yvf*{_DuZF)apo%*dt+NyiE9$)MCB%I(b+%R ztFROFCZ4t%ldU+^U*&L1;fJP051Zh^+sCU#iAGkZpB8S-wXcLUA|uyEjp))7nyb>O zMduoUELu_sccCjQnJ9%oZ3Dlj7^k+I7G@lwD##-%$$7kgWNI;?4#KM?{~-_ zRx$>AZdRK8+OZK5%^LJCL2McHk3FWYuG!Kg^L(3pUF-UREL&YbfT7Bv9 zZ0mCEXt4!OI`3C{vbdp0BlGN1jjFBB@CA79NyBdU+-t*<#f%BNa%;q@ogX%61aHvb zN>{@2k8BO`{?JUD0t!!kR~lm1$ZUke#6##dNn8vm0~XWBHqA$b!vd#LswJldJ^pZ# zs2f+0+m&tl){ym1JR1#Rvob(+cH=n~wL?=!XUL8q_v_kRZ(l>brE`O0;j=>>hd;iN zXfPuH#LUV_yF9G+tCWhS*^~d++ScL{m+5zX;=aHAibTQ7f&0Q3pwZ!uwIMyJH|%JH zNEI_JFBpkQdK%5}qN?TbR=3eNRb82y28^V3b`2i-grcKjkS(!ecGfhM_t_Fvjdg>Q zUwOP$uQ>Fz^BK~ha>!m`A0#>Vx1E?M=eucXf8^1EBDJphv`9v874a*tYL(a3e2>mX z=9`#Lg;Ga=}9se2%y4Y?>&Yf>v+IE%4OroZK-Ob~-bZ9T4s)}c_8X@8 zF$%+HZCBu*H~wqfqiTla9+kk5_@;4bXog7NB_sEz_A7a&$su76wL2B*xso4t^!(_b z11@+Iy|VEihW6Ek3*Oly=rBHL7Byu#<(|B(V%~~@gC2-P=BI|&Md1hDTnV7 zKavlf2FBk#_1LYRC*W>FX3u|Q$UiGI9Tsme;?{uFk+fgiq9$Pwe)hgPv7g zn~OCpt}#0yuAm>=kNbPBZ69AjwBCdBH%YVkeBXY=oH5^t$*m7tp@xFy6rOoZ6r%9FKEvCO4)GLk`qFnyT7>lz&_s%&o>2o7~BF62rg)J&l4sm0aIEbhTiDJCauP9P2_Pv3b$$MgBu`@~x*0pzB***uwKOe$e zNAeB_vUWnE?)I7C)vq%^y+pD5F%S#)mhoPSpD2>V=A1AG;k%v3bs4iBLV$DXIMWT1 zfEJ20p8cOnrXPS`_jV*A_C!Zu8%4hx_pkEZes1WNdk>{E%H*I+2Z(g<_ZtrE-=}?K zn`qM6l(XoM{~JBEqlQl;@qi>1Zzt#l?z0a|jTc$*qg3P!6cej8++Qi_x96UKeWPWr zNH3%TpQw7(cPP8_Gj#Rxk(@m-pVdG6LArQ@KiM=6nQMOCS5~W+XCgp zj`w9_kEw`v?->O%-b`f5 zWuP}1AT9L29F|n!b9{Jv;Z*}!8x0-yegZukj88*r$J5Wtp|@-;iVuNPOoRmF!(7lOmoos;PPtvLX%Ia69aT@ZzI} z5{WDUG9P$K26StIwfEQnhj{AN(Yt`!y7L2m&foozBbP#wC3GYgW5I~-gX93oZZ1&WgnUexSSzAe>V9NV-US)gIy*_|CN zCiTmnf-Mrc^MDU5bUWx%K8g*fDc-z)7LNJ+H~M=C1 z_9|+P4~YNaB@j0lbdVqYgBJEt?4XPu|92TfMv3ZfNM0fE6M2K|WmlJ^SN-|MZmBFy zSKmK)l|!xRcO-MGg^9?*lwLnbI@nIU0w^mpi$H@!+7YHQgqaP*Fah$d}q880o zOd;(R*zf&&oKj$St#h9dhZIZ7Lte8KsJgtO&L zx3^lr$ApFLHBFsb_&x|c{WApl-!Al!jTko7xz2(wFZ$?5=!2Ee7t7uYp(MT>8njBH zYBfYprh#SiAvAC09~HQW&4g$#ZSQ-cWDe+OfMtZlChF~t@8>LQ1dfo1#*~;jDt!6Y z#Q)Q>#xmb1Ag>8j{UF@)@~cB`EM3;e)ZOm94En&ym*@dNa?|oKrk<~=g7-RnowiHx zG7>xhGMV$o^M}h3DQ7zNvQhQx|N6@g0Q57hB%*6i4DbV)zcq`;cvGNzrdy-UHH<7e zxzZtosh0#OWCx~ucd2IA#~|^*OD2srm8~Ux4VI?3rCIzfso`0 zfV!@fU4z`~mUp#3R69aVFLz3cgBYLvvs+{H;_~?EH!{yBf)Mo`y~HO?bKjb4niQzu z9Ce?rZ+UcTYP5LNQ^G0#nYeXM3~m{{$v8i&#o?$M`RefXTh=Vr59T)(?k79kKdv6j z2Mzv~=7j@Chp5+ko&EJM&(zLU-;sGbVAqXXp29mZuhPFziSrQ(vJhQrN%~rXMj3Xw znS}oo1Nu63>|p-AtCd$0mjWK2CH?v=@#Gpx_)f>9FQ3D?b+r--k;u7n@|hN@$ge&U zL4&&pyO37P!KO5;S(W_9&V4+jMwj|ymhs7=NyteFzn|LCW;}EHio|6Q9}Tb52?%w$qMkL5t$_Id1l20t_VrFDh)KYL-5~ z`po#asI_na6lwKEoWr8tGUH(N!4W|_x|6})FHHGG7gWtVHA&encou%cyJ*Jyu`Iw| zSE%>{19U_!82_BB+S~ki55$UrUou51yT0vD)q)+dP=f5En3Gb~Z2@k-qeAwAEq~1j zue|)cg0P}xhn%wWwD^=$%T>-1+#AGEZstB-Zy9E;e~G+5&=^*g?-dfD1EQ_K-)H6C z+OF2u9)+A+^DIskPukjcT@-pZ3?TNi7B*l09Ps&NrOBeVG*Q)E>bZ)X2>|7&-Z{fA zGbc!!AZEl}qN$$k)&|S&YR10R+#@ydoy1bEHHNR2dP@12sDK}LWlwG!*}a_bDVx& zy>SUoe_}A{JP#`c>Dhy~HZM%3UO(2$E~3cBwO%D`xrttuL<@+Ao`GteQhy|cbU`}) zcSIKyubkY9?at`eBN5dorjPGZ5P8w59P|Ro=bayWU z?BC@mpJP3ec(}--Sphl{ILKQADtTkc`zias+`NG{ngLgXcDUXk(%T`1pDc6mS;5-( z-2~RMSSszSUb#4~COX?;lm?aNy<({HbgtlD3zI-T6-=j~{8d+kq`natTGwatd+(Oqe^x?$lX zbin?E=nR8*hboJ5Bg!T+iy^nGq0Rr^F~yUjo$wGXdv7{!J)kP;axlSL{g8LN&3UYM z`I~vqi*%)FQDVl4vtO%D{|vQg3JsOa8AZr(+aQJS(WSIkfIqt-V z$19JJ#RD{}K028B8x!}w9A{_()r|SbGNizzPT?Ml=@g$VTL0DAU(J@+?%r}6|86Oc zoWQ2KK>qtmNKnr-`c_R~)dE5HE>?B~t#U}|$4R_tCUq2W9>@>VAQ-r(G3_Sn{$a0B zN~H$q#EcdEcl=IA;=->coXe!{@#b-o`!AgJCK{vF>5L};IH9fOc(y=;w)DK{$z?2a zGeD`V`k1ub}Urq zQ?_j2fCNSC98w%onWZdat z4OsGr(=#M$fB&DM)i8BD`9jDcGv0#(^LIK`s9(+QeGy5>?tffa6-&FtH;Gg3c=vzQ zoD-eW|EjxUzr{7B$iNgcaCqk7ul35FKn>zmb%b;96&<~MR z&5>xv-tN0ae_V2*{gZ1BH0Qci%O&O87-$S~jOhsY34A1NR=IaOgszq}?s`QNISP(%^q(He z9ILyeQ#3+ifW5`e5PzckU7-P${u+wOTSf}vxfEcy$V&Z&{)Q(8Qr5S33DtK8EFmCW zrGSo7ov;t;`-i0Q7UYdi&QbaJj=}$1cb3it_wr&+c1@XBcgBJ3{NXC~0TE4xG9QXaVX#aZM9{&~+6G$VRTg}y;%)CiANT13m#lfyX>xmp#8oBSrpsON+VNMU z4ItFMU&MX~jC{1ld2RW~IZ#xde4r>lGv}xCuzN&yC1xGGDm?_q{;c3@!$C`kaI6;e z(4xi-a2A-G)#3uLOYh5^lk%sNiwZ*(`4M49xZuZn`|M=y>PwiJ?$}Cg?1_NdGN;vR z06y+}zN;*XS3eij?ao-q%@u?K@EsA>TJm}+Lff}6FOp>2C6n?BZLQ35TTi$CIAwU)r?sw< zn7_(B$MeS6=el8nHs#*8`6LCAiY@RHKW6Y78W#|I<}2@f4&&Y!Ni^jE4d&{c4!`Kw z$@PZiJv;Lj_$i4U(NkO9-9%$@`J`s16r9vS=lq5 zLDvhGIUee5uGz_x z4pJK}jI^KJ)sK$5w#+a+9`W1nJ82YS`g1l&!t+_tc{dLL*Ds%brn<<3$Vp>KSCm{j zQgUa4>tL1~6~bbgL7QN{B#0wk$o$_juB7`QaVl@X zDC53`V;pkk?;pM~kOwS=>Ti;}s=qa=x04K~;y1PoI4OJgTzt439?zG=+{)?*;@{aZ zjM7eLEa-|l2v>&}{THM%}+9XSLK4XWtCbMz(tHE;XU})E};upzy0nXCG z!fM%QflZwTAjmH-OfNTDu&J%e+ktQz+t+Ts^VzWg-*y2VF|}jMO)_Pb+`OZ>clDAq zI@-7K{0%{;YQmqu@!h-#(6n&x>|Kr*`t*&jDmfdcM7B_d1@j7{6hS#|ySyqPh_^NA zeZmA4Ing+vBdMr!!QyEn3dV2pTS9UHY{F<7<<}qqlo~qlCn#vat|2C!@G!wb=lt|x zKW(NPGPWgY$S-k36Euvx?RQ{5^F@g>@p%#t#+kMtf*Z!S{>2@-anc7@fsD?J!Z+4f zrYeEyxY58!t?*GO-xA~VEMkzuZkc?r>#<0`oO?$8NQ?KH1<%(mbFNh zce|s>tyrZ~!*Cpn>H2x(KW*!->gXATMWvf08ejYG5BQpwdU-%{CDJv)(X>E0QsH$6 zceVEZbOz+Sv%{(UXSOR8Be=uEi-w}2fQYl^P`W^&&1JU?yizsp+|cEjhWpL#3m?aE z7Wc3;NsDGQNVqXzg{|(1f(T7N`o+V;nK)uANu1L*A7UP20y20g(hH$hc|dsf2sDn( zK5W-)X?h69ty^5NOxP7SU?tO^=a|{NHf#vhEAkf~g&eRsZCJ!W7|(pTQWyN*sy0_O zlCz+hH+MC(5*$JRd^mzCQs+-rY0vH6oDTgvLn|mrmu!F-ZcIe~D;~WO^bTv3*Pj{G z?@-S2R~IIl0l&N}EOyWW;je9uJqcm3P_(Q6Gq_J+;ysItLfQ7$U_Cy9kv}%_o@JNOP@m)59adeL@=uUxCQ7xz zA*!-mvf=Tw0XopNiQM~^LcT5msH=kXyxUY>FJ9tpQ1yPe@p~pVS;X&{0_$~Y*4ld) z&3hkLen|b$?xc+BeT-Kvu%jj_&;9+8GPk?6+|eiMobD>i1ZU-~EW;#0jE;|(hW3>j zd%Mj3%@Y7G#rDb-R3tZt)QKwI;W()L!xb$s42HVRo5uYR@{xYhE(VON<@OU^%!8?N zU%?1%l2VUfZ+ybYx7RH1!&#nlU(OqzmAH;WgF|K-OyR9LtjPzXSh)suvJ}O>pPAko zXhV+!LE9`WR&z_Op)cZ_?~b=fD$kAegu0n=2(27b{N)bzNLSvrYyQpYXn0)3|Jpju z&PlzayR*w#Y_ir>1JHjk@zI`QPP!sFRgvjEyiUxN!pvM`qY0^r#mzsSf9KlZ;ayR4 z*-V36aukRBatw6w8jrO2t|o5n<7f7-6w$r!(0`#LehBDTXd-tuW@jV2GnCN(HGMuL z*21C{Q3H%u8+NnuW50D;;`c;}0gkwJJFad{>rurSE5OyhOEc?O#n!+|?b5BaBFOU< z$@{9Q>O$5wraP9|`k3}+{CZWxW2?`459uqS&OI$H5gO{X6_A`7utRwNf*k|*jnkof zb@I&d+OMS#pOv3&tL4sjN=`RB{thhu-D<-@EflZz4@f`0kIBm=+!Gze`{DqaXEH0R z(!22jNTv6axN4My$HIK*8!`p)ApG!K)VH)~(3If0>+%-AU)@g! zg+KbY zHJkjxJP$f?{puK#ft0BnKBeN0%vlh%)cEG7r`y)gr8|))LBu2Iz*7ficeIo`*@Is2 zo>3Uqi{F1__wCm>|C`R_I1S^qv~Y4ZY}mL}!|DiMhln3YKR=k9=QaHQQF?;cHYtvi zuaL0BUM3~AvY+8;%#5ji*i<00lIYHKBbb!Ldy9f&B>wSbNOQ0C9eR0vX?EsxatI4@ zxzi{3v6tD7F~RsaaPS?;XRL(%LS#dpf zS2Iq@Xa`-;#!$63GSyn?j}47fys_5K-CXEWdD>_r*f{THyi|(%p=jP~%fI9mww*wo zJ-6GUtzxdGXCSRCYa9#O5sW#kZI|bNM-`h67v`Q_Qg{t$T^chzGfN?jY$$?Iv^1x# z&eA4V%vjT_YK8m4#JZ`Cz8AsUPSs77l`~rl;J}Ros!olFy^PUn>CNKa1ci=Pu8WBer$fADH+f=cRaBZCNjP z#(USK+R-l^Mc#T5>{uJyvu?CSosRau(pf!|iA@}Z)Na&W;?;Nz38|2o0u*;7QedUrpfF#29B9!?puw^Z{q+;|`w%Y?hhdQ~J zy;PGQ3#v~wtiW9IFgAi$3PxS!aPtuMwqO;JfAjSH%)W}Z<97_#09-Gar&WSrR$*#j zT_$3(-s~cA9I3j`3#_;p(cZJgKsn2os;?AE%lEg+OUOVme z0DXOZ;9-+N_<3*J1f&@o@nQOT@_i6pgb`qvc5mlJg%IXjZ;JALOq<#nRf&j*lf|oR zR`&?5znf*uIP)R51d=;KH4aa!j7&;e=UqQ^$}itkvl zjLL4zf+G&{){S{=q4z0qc4)Bvd2|{1FFARnY<)lR%OF${q| z4s1Mq>Bfari70ORj2QcpX!?6ZwkdDR@7M|JJOzFAB9BhomDePiP_|?762-Y>^i_< zc2r{{iV?rRU~*0016$Q7`I{wQ{`|seEmc1jSQR1JB)=DYp=Ec6< zCxdZ&wiTM`E)K6?WaZd$=%)*|XmQXwk+m?BJ3+4E=abbMU8b*f;$2W~x?IC9`GIo`u_rpe4!jAT}hOK0c81(%jtfc{wZ)I?gI}1%SpCrzLeM3g@FUgA^6jrI*bG1y28hq zY2I{Zy=pU32Ecx15QDqp>qmi=n%osPrh$VWVnBE@1)vl+;JAa9C7B5PGC=*-G*-oc z*{$qJP_5t%cP9mq$0-EjJ}#|?OCo5*q+WMlW8?HB7CWA{=QpodR_btuIZXr9>^32P zw3Gnn#p#^}DAQX82~w05b)&Z$nFnKWI!^oZ16A#IH^cb;ud=Q@9;)u)4@SmP_Cy)m zV=2o}_Uub!N$4qw#?pe4C1Dt@eJ!IbBZ??Xzsgc}1{Fq0mSi`!gcyuvEMs}k=<|Eu zKi)h4%-qkJbLO5i_ulV4=etm1Q-Iqc5D6YoxW6lHovG{Bfes=@{a4wqHU)7S4~8Kkoy_qj!Pv+5_Rc~EzEaa_}k@d8h%O4%eX z+txojJJNp;Bv=`WajTzrrmc7uM?R)m(Y5y7Rjq{Sn(7Ma2aN$vQFCUa1pHV3k>Z@8 z04Cm=yB?db1@+{xE9{i-2whZ?k)Qg}wYo>=>;pzT zh?|h&Ju2;u(?4J^}JUy6!WN-KdaJ?wTXqLPsxgH2R|5sA$J~qnC1CXM#Wopd| zb}p0ZSXsTC{MBqY#mN2LZf6BLXg`15W1-O&mOY>`!5>h6ry5=kp6|(K;>o}7<3y~$ z)B_q?L!mwwNV_{1X2Mxd9(yL8O z;Jhm?zpRrCt_M2zAe$kD)wF==+u2AQl!7+ZOaxjW0!b%($-KWj=g-rJWmkju?=Q?O zHdg9p#>rOfUju%}c%bi8b~HQYOZhFtE|b>z2v*>_>$Zln?2p@-Mhf6#QMq;fbIh+8 zFRUPd{m_a=FIR9Ti{ek$jQ0&zaCO!`vn|iM6lb+v+&X$5Ud1|36 z@XXKV0t+e@+*tkW?-Gw^%q<sL~qxbuYF& z;L+|F6|>>cen6CzI0o5Yx7Ym_zMTh!OdF0{H)d8vTU9&=)Tj+X>&2}PT;&pq z)>Y2%1t!U$&%=kdrppadOMiV_%})%Hh+e$ze!|I<^F=4^O1nfGk#-(ad|HE~)gf!z zk|(u>-RdSc89hty`+6J0;24oKL;GqH$n0u#0)=jxm&Pz)YN5C`4hm_r-l9j@f0vJ@ zU}a}Y@a=m;*cYR!VfGyvz3)8~d~1RWroO_Q^yE3TON>(?KZi046^Tqm#{1h}W8-v@ zKj#xyrf)h}Kh@G68}vEHObl889Fn*FR*5V5E}i&-`L{E%#;oQBNeWY2_CpmH5(I!} zfWopF3)T$@=>>(J*Ee~JoVB0oIW$d@3YyE7PM;!w8cM;pjQprS(eVdZ0ik6EBI8 z;b2ua;|phk2#HF!$o!~!*^J=rSH&)MI_9e~4(o^HFqG;mUHpenY_nvr*LC^LUK%== zZld^)t_@;k(J@wa0c==);{(roEU`J$AZtqoG5a zI@u)z1u15-3d&+OZ5eiWgjWU(WOiynwoxDdiGWAuQ@gMH3N~ls3w2e(IRAl4)J+9e-xp_s_jWt6ciWB2YZ)D(Xh7o6+ewefBkkAWa&xTP?E| zxR}`h&zz|WWi4O+-b6yhAEgims#HrMEZHk<00CWju{0W ztsEEh(j;#{4N@;N>156+xC&5gu(!3dJlHkZd1SK_9Tc~DcFx{}>+{~Np^YHeoPdr4 z0B!>BWcwxmXd#+j9m^|krkUQGG8 zSV_QR9f}kNp5NINJrKtqp#WTymAxyuk{&KTLe8^L)a)sR#sMDP+4;o$k9(BLCEl>n z)~GFUjNx^%%_$-EO7ngJ$!{7*#^&Vp7Xz^R!fYY^{qnx4P=B3Uy9=5nWeT{RfMx6S z90_Vf)VmcOy}&(H(rP~~6hR}7>{SY$EF0Tg50R+m89~MsUGOl{N?plO^w~ z6Wd}pnYf^^u=|HBVKDW+1Gsel{Q-82)1|*)3}-={k|;vIq{gcvN+_c!H1j_dw@=&17*+J0wNqp!$qhKy6o zbbJScSwI~1EC=!MfOXU0w?QmE-|mIkVJ;xROYcB;4=JZfv zVIzv%rqNb+y3ahI!NRuP@)RUMGK9U!Q;wO^3q+?)Tg* z<%DIhjjReh$q|PaBH_6YKK4xeH^c-KSM8oW0iA-yw)QIpv~UW0;+*%NdoKx~&kZKsIWZ-VcI&?1i!GTz78|qe}PhEEiqr-&AuKbkvm;b@@YO$jI9a z29k;f3+$q6m7wdxvUUe|^x(^z`mW0|mk}OFEp%v7#xoDDD0Af~M5aUckKw)4q z+05kk7zKuN_!@Yslz2Yby%IZL{fDoXkh%ipQ|bA$`m2HNj=8G13;5y0hY8PXciFO& z`54&fjJ*baFNcvDy6oXdOM<$NWe5K2tH9g>KKMt1>1%NXB5&XD-le4dqw6l#-7a`{ zmuURVd~M~+v4PHM_lcb_o+^&j!j()^%V1qA87io_obN)3Ifq<(BSYTeo zo-Iig1nd^I7M=B>L1pxB*-m4ZheRu(Mrq8>s|O2OR(QU14$n;6J=i`BQQb=!cCD2r zfr{QP%LOtcLWx1Is|TjC<+6!{>nF1{@F6*P%m0+fl8611c1L#cagTiEwW*$esA%k5 zcNz zB2=;YuT`8LfZAkPW<{h>ltOymXOQ!oTC%`2e~`Sz1-K%FS-zly_(c4)w##wtB+XW1 zZ&+vPYFo7mURv(f*<#PFKF%^;O{!vF=$GAqcrkYlhc^KemZJ^rhOQ!|y%Mf?$~`(i zQE8ZyLh|9vRkmE;+tP~2oz7o3G!~5zy-c|Hq$rtWYcgXV--M(V`t7`f^&Vp7v{`$j zS`t`ga0n8$8Vya}NL2Wd=i+$NNq6+~Cy`3A`QJeh7>wh?=wKE6FT#C#{6pRnq~v0` zddSQ`vFQ%aI&;hu^sUXFQITMAZ^BuF_U%gEsd!&j1y2Hx<4f%Y{3efy8Mv=C;gj#9 zwvD?Q`pbH6u~9>~-`J$y{c`2`-6tW}VtY!0pvTB(eu5#2bp?PrlI4~YObIM6IlA7? zq{k@eKswvst5T9G@=w{Dkem86M#D#_Gb7+ylkM{DkS#x4(_SnLzXAE-bnJ8b5oki&u-&p9~ z=u2|awUuz&D&5OLP-0aftXQK`w$~79eyJBckR#Od=BhoCC3NK40FK*N%=)tew+yQR z=sVV0o9?EyiK}P+{E+5&r-sAqFOCCSwWqS3A94!gs^WrD`qBX=BLBGYm^|{c;S&Dh z(N<+$U4y$GH0xj2nv~FoUw`Z+TUqZ2{^(~Pvc;av&iN8Qj-=*Kk!q1oSl&bYHfkka z7EUrc;YW{mWbqtcU{~n+TGN*(*w|Wk7Z)`qjIO1*TG?@%wxHily=9F#rk~2o(LEg6 zmc!7Gc_I|`BnX*5w8o|K<~VK6eZ1rN@xu$y{H^jlgFp6f2bu5Ig}mGR@B=lvTPE!hr-!T`H>0H! z5oOu>>a3o>I&kaoR{#6>(mCERLSwGx1KO!T6DKsSp1t_CaL|BA{r*A#E-b;QS9INF=VoRp-k`PTm@UUD$w%I2|yD(G7Cbi#3 zRUxv9qMz_t^r@aJlzL_s(`G;OBr$}^*?aO47a3bAl7oI^7I5P}{!1`?x0u>3;q!1q z_MB095^S$$v_Gf!D-;t);L~?APVeC-?QE8pKi!s0dM29MyDCE+`4)6Q6Y_pm#O=UU z({a`#)$*iOOQaN|A(M*>!HW>-jU~Rj%w_gEENy^%Fku7J;|o_P25gG*=LVTi&@7v{ z#*ZAL?>JTl)8e`7z^A%J6`_9y6Fny7Ui;Q%g~lu`*ho6=0Onnc-pvEW4nzD4K@9)Y zh8|3gse;oMYkPo8U`B|hGPtvwV^hT(2&ARUU0`8H7`xaM6k1!kqH?i_ZF~2}-5_xG z-a#9}a8by61M#V=Hf+xKEZXqK8VO|B0>^Ba9t%TJ+bbT;S{{xg z4siuY;t5VUP$>)yeVwvwiMqm3Gi17A;4yDb`aBSn@Ap?5%*6b{%8iwj zeA&S>s+xye-duVvuYAIwPI8AIGI-!T2}u6~)(`$rfa%%#F$;~8vCy^CnL82tn6 z?hBYj2&XVW|MX4uBFrpLUUK$;PACt1d-`Df*)tjZ__qH$$}9U!g1QgGqpBUk>0dc- Me8H&Lz$xN?0OzZE&j0`b delta 37945 zcmY(q2Ut^2&^H>26cIsCK#(R)L_m}#B>@p>A_^!hJQx^I3qWpDzd$l9ie@khrMI6Nw%*8#dgE%SLR7d@*vnt|R?e zl1uE~Syv_b*po(6GteV>;{dF%<9&p}`KI04TWOC_g@g|QVgLjj5fY-N4hZ6@20x`W z4-ZU5SF(`Mkcq?erR{yL?IREACLp5d_o3%$_~YfDtkBkkeWB%szjgf zjf39b?Q7Xwp%UeLc~^NdEyI%46gRbmA3qU+3_qbDl+~`H3Run3{XFCzhRg`7>)K zC-0ZtG|%hV2!mwYIGkQ;kiutx+dGgzK@f=ST~n%vrhuhxS%-TX~!m|gc73DwB?vGz9{)sy}&s)N+TNsw6pUNEl zII%RhcG&ca%o;4EP=|DJ@|xAMs^@rcfp8YgIx78{gs(Bs5!{|>)@swSC{xl_uBoNL zJ?j_pB}N)Z{;l8if!r+}#;kTfxFP6Vd5+{YmIa-;p@heX;nT@KIPTn>4L>E5E{ytQ zU^YE6S3J8BCu}O@%zn!x+U|AxJ^l~-viEj3TYqhQ?{!4HON_LeQ)N)ItUcv7z=kia z9ku{7V3o8KD@PJ9APmEj31W? zA$_P^B3A>bk%_dT8njq?%3Hm;dI2W=WvRy8Z1Kk|Pg{Om$c_yf`a1Mxvy#eUYCQ1Q z-PtBc%mf3B(P54+ik}__tGt;>uFEe05*>%#v9id`&w(t(0o|S@fmiZ6 z^7!lqT$8J?@hP`kf81niJe$zHYeOEnpPuv>^)w)%LY*6PC9@YDv~7au!kqvtKs zJ3?4LmfOoPW%t?Gj_C91rrH?Pp8A1)IPY=IL)_RrM=#>BEz|zP)pwT%mfS;Cua#V| zikrXk;VlqM!81P{PsoqMIz4B<6x1N?BNSI%9iQK?sqgQ5H}_c9{c6|RcARG6%!E(q zwbo)2^mgunYiekALqah44J2!T_4e`Jp_<`{|5;wMJn^-WyVuaIbuq<5-JqboLHn-0 zQ%!f1;d?pI7Jy8--ef#IgJAi-dO)IyIp-S?3 zUAKY!(C42L;O?B9`Lt%8UZg)kbk8dp7)M<(p}~8 z1LN7jXgi->*wrlZb0bencBdP>(IP1Hf(@+SH-8%3x%cTMwneIV!}2PsoMmzO%ewdp zJirjR65a_89E3+#FkM~^$-W_4gU%x0#T#`$Ht2nZs6VyY`>GVU%xZw^hp1o5s46^d zk<6m@kz*7UGu(w~V)^=)vx+<%b|GX{?LcWQw7H`s$y6WF=j_%uCB`ylt9#^_i#cf? z+o}sQxe_EsRjytbrJm$GoEs)#Nn8!YLfeZtMv>b}8?7KD!N$;`0nSCBE zwR`Jl-^z!_xnYQN!X|*|j1QKz#v=Fg-;wF!HYVlr&z8TrFix^R?)>~4(brR_@O|(b z57oOub~J5$sN~kstw82Y*9RHGBlT`u-!@xW>`PiWbqwsQm2vlHZx2ahe3&R*WQKiq86z7lN9h=>3BKT#(-&DVwu|aC53N

^T1sqV7GS@|XCM876g02zcfX$(_+j>)npNuVz}SXQZz>lb;QJdjfp-77Za5p% zp^rI`Q~_!1wdL?Sna-V-e}8@MqT-S1_uC7W)tyUjq_6;htWBQkW|iDz;w7D7C;xZ_ zyZH_L)d4;o5lEo29sglFzVFBOBWMiaaEbEuwX@kVb4DHy@h3wxxW&p6;e^8i?>L6_ zXcwGYBJjXhKT+U#IR;N-JrEt`k@dVI1s;1qTC= z2PGu?u*wcZ!vvM6jkZS5UU&J`l#zI4pzQl6=%z}xH{=LbO)V$blOt%9ecIoCU=yRK zjh)llNUT~Ju%e|RNwf`DCJp>Ra4u&k{=PB;$ilTG_=MX^?F79Mz#!}`%KjTKUC04B zjxg55u)R89`j=pye|1Z&OY~n<3{<9Wt-!UWWlC_>nk$AP{W9hC|2GeGCbEAS|4cPA zJC8A;*oW$^swuIIRYo^?dQ#FZaxZZGYao(cM{XnpBQqJkLH=3K{gNB_M+LnDEja^8 zVF&HsOdmlSoQwXS{v!22zHem~80wwhC#@A+M62{DKD?9m|5nS~G=C{=+VVDeMQ;T2 z<=zJRcZ$Ql;w>y+z-os#g@g8r;jfL$J;HV^XR@s5FZiVIuwKfiQYYm%s zBP3v58wY8{Fq?T4(kl|UO*2l>9RB`F*O z?=qUyX)o%6|5!a7mG`D)^h%Kbhu^8gSya=9;(lnWWCza1p3Y%9Kx5jN+g@4A*!zNN z4jtc|f$jHP%TY`fs)Mwrw2HixgMO^A7heZ=|2=sYMsEi!_>A5Vt;5U%$ z+;M5FE?@f*G^bh%ZH3(ro9hU=UbHr~j|}tqNq}#Mr+$KMx2fShHO81qi+}<&Txa)E z13&TUaJ}DWVZ5R^&%_`u+$BR&tQh z*J))AE)DtoSJ(oVQt#9OU|J*tX}|g2s%Sf9uqt*X%Gu?IrG;LQ3*7%4H7LXF`RUPD zffrotMkX7*vthQ*aYX*zJ7x>@$wi)xihSR?I8lziZ!T;Dd)Hruw30CEkkTHU_V=?KZxydrPx9;ehSJPC0>a}F=i>6Pbqn85z87TL&}&-d z2@Cf=t*AJYB0-HsPni)9j0on|7`KXj6B84AHF?N`tR{6p(HWzIF_=j2vKG?<*EIh>exzj3-vT7SmabL#^~>F14}BP{96}xHYxN#Z~3wK`+5Fo;l_+A@Q``g{sWuI3B~ZK{ACsu3usp zOWRe7s5%@X>UGF}be9TTC$nCn^rsaoY>SA}to9}~^I;|-t;$?!lFha=IbgHL?25LA z9VQK&Nu=>&l`h26+DX$@%&@mtP(xX@Z@VTu7}zzwk5sNS^~b&mBQ^)4;fO^FN6U8C zG~D@pzBlYpIh*H0W}UXZXj!h}CGFPC;P?Kf7b#eVsyzhgp zzyjAI-^n50$9+|%qM-hIcwN2!Hz#9&54q6*%h}KcggG(^Jw)#@BQT~@K7vy;6Hdu`tfG7LJ#`x3= zys{tq+p(=yDLc=*Wl9S#O=pQEOydrLF1yd_1F&uTc-HqNE>W7{LFNUoEwn>xm!&kp z_xW86ep<~jmBRWb&dqEbiPW5ZU~7J?%Y2uAZbDB7s$|%fr5VbW#2FNxBR%3=5K*L* zAnPJg^6obdYZH(0H0Jj=JX>2`p8CCaVf@|5_-0oq8;tlip?KM4x6s4RYR`8Epy<}} zZip`t)6csg#|3CjVS2?GA$uV#2pi+$q6)&g73%0yhr&8}8$~m4pt?+mtcR9_J)8?x z|5QzttD5Ffd=?liLz(Cg!4SP^en_Uu>D5smwZwjd;e&+4-td%O#67ZwZ_kf2&GMUX z#tIH(rX>pv=lOzCLpS*drz`RXO%e@}y-CXoy@qZcEzZa+WHt~R*wCMddV z>UpEr1qa4I&WTB9QhH7q=ODB8sjdd3d`*FWxGQ!SWPI~3VJE?qJ}r#@C?U+bOT%&J z{KV%NPp@56mosP6$lgq+BC)Ga{iYDMV?{r ze0Zjf`{lnXk)W*i2hnWI|Kb8KL7T)X@c)#$llti}M~*A+eCHD=1z{FO+dfduVglVs zm5E^3N3qvM%O&3pypY^!&Ia_L6*B16b;P12{J;!kb*ehm#nVr8mK4d#O(!3Ge~Z*u zigjov_J=+4iH2POTz)%bzvyk6Icm_LQZ}3Xwuyu=N>+&{STsai2Sgtt+akUAZcPK1 zAo;2<5!^6KDoOMS!_IC*EgoREhi3zx?q`>%=&~`;hn)+QvSogOz3ueGLT-1(GsHiy z{{1&@`zehR5@uFI0gkk-60>3b!Qu14W1+`wZOE!4f%sXH+{hQQvwc~Pg#gnlrF+wh zLwcaSx}-%j?PncSP<@?4;3@m<4T&)(^((WxFI?i4f-Vmv2du?Bwj%o-OohEM;N$p5 z{JH9L1bpbeXk0-b*kxn{Rj*nVLd&zNP8+T_$r5HIKk&P@;qv(RY7u}mpMcjRvqU~_ z^l4um6=Zs&^lapN`o!7+rgs5i}x4NZ~M=1F9QUBP&*)$flM6q zTVvP|avX%O&3+XBdvtQYCY_Uu(;*l}Vd#YrkTS6enEkI*QkaqhZyj>OSsU;*MzQqB zR6Pxw4aEjSC+Wkonqiv2BD+JULx;yB`Y$Q3%@vn>_Zzn7bVeZjX9E*kwFZ=OR#Pq+ z7zw11!p$hhgh1`zTkp03AJqQtt{s1@-Jibuo$_rqy&j0*HtTI0xii19VAmHSUzKj> z4R7Vf3*G#p<}B#aS?mdEjH?Z>3&$pFMdSfl&yE+jm9%MZ_v%G2-trRN=$h#8`1Nbw z7W!7cd<`7fB582u#ACV0Zvw#qzNT$T#M1MIf8LGwobRlCm^49y0>3^-Yw-Ea5JgOq z6yjP|r8SgWw|bp{EB7Zmwoq!`UW<3_7L0{TF8jHQJb?s}^OnD(yFIf2r;E;$+&Y0< z(KuY&YwXb4Y{|s;Kx(xEhi*`?l-^j~?cSNk)tPdp6KC)Z3>i#zF@AdGtow|&$80KM z&N)rjxz*aMS!Gmx2M7bRvtqG|g3EF~dgU=oCr*_$J>-)6R%(zC)PS$DlKs~Ls}VEi zuf30uwRXsk!L5!M=j!;poW?!iiGRubsg8p~PF&9ymjy6dX-Fu~Inh&W5Q{=CkDWlBnr8_QgFOnQ5uoIZJlu%~pAh-QZ>S~Ly10CYTiMik2oxFtUHXaRsIx+FH?HT(W-(D-f zvTzUWCG7g*2OHZr6#x|gPCp`|4wI1z>Qka5e z0j)KnZdLf2z>eppp2?T(jGh#;7E)o5=?#d>AOy$3jd?yk$TUGbvj`h$6(w%ur5MyT z!CJJj;UCQy-9(&Mq_NSe$$(iyF5fs zHJ0t)H!3=4SN4*IRuJ#sZ@3VwUl45hVUP=1%@BW8K={eI{%wosY@0V`= zf?vMA{fW%&`oqn=QWyIhU+B>i2O0}Jz~Vu{?OaG2@! zJc~tGWS&ch@l1$?@6rv@VRT^%x7n2a+Y%+|lS;h=0e|oq9<)#0dsGGxt}mrOC7&1a zxy=4@jG(lXWajgHdNkt4ZW%1+^}E3z8u&}|d>;()^Q)v%T``s6C>`tVb~&~}X=`r7 z4T{6Kgu=;Y6=K2AQfBwi-`47uIVF<8bJ|)6ZKlHDFF)5e)cf}$@n?BmZGUcA4nms5 zE{r{oL3Wm38}1C{&NA5ndM3GeP4t$@c2i!@ESNtBPRZM@@o~iz=l@m5a-MPTo!a8N zI==B7TuTwQ(cWXNK#vMg@5x&vX>2=XE;e&qG~%_75dXvqK_V|rF9w9as49!xxEabN z1{!sm7U>L93kH?$J6+%!u5FLO9V`$)Bp;f+wpcGt@D%AESn{Q-?!1jss;6D>aexbF zE&hXY&?sZ_j=Jzac)rpY`ALaon}Ipm)iVd%#HiTZQGVD9IXaWYEZpKtJ(Y0P$=(%t zHUZSiz$KRKrz8P*Gqf?dzKO@d4|0_@zekvnL7=OiBFczUNG{a4R`6*u)@g2);leLo zl;cB4T*?YTtypg*;yZYAzn-p-;0Aiq>F7wHW7Xew(@|F?=My9{W+n+;*a+$3ZlDZXK1BC20QfL}nZC zF~lYN2?;P2A8sbU6Ov%U`HUsk2#KXa|c zGB8ftCZ83t;|v~;soL{ZS@XB4+N(^C5D{fat;-QP!@$s(TqA13KuA6%_C|;PBKCcc zqOfflz;S`-OFZsJAi>?^6+7WFp{StJCf4k68h5oU@zRkn$;I1&HxhJ*kxl2{55&M$ z{Nr@Sf1=k_YaTiI0smb=0Z^y%+OePrVK^y|A~Q|hRs}}Jspa-NR&5v>flTGy(iMKm zn!Kz2KjK-j=6=JRO?Z1?OZ$hM zfnPT8{)Vy?lr^9l%{IM2@^gmls7O9M*0+lm2QG3~zg&|;?h2+?0g;V=RIWZe?zSak zFEU1JM{jY* zaJUD;N6)#GIH9U3N^xh&J99rXy>6?yzsNkd7f7Qi8{u2%{JFF|9zZj zWxTYc3+8h$IqA=V$&7>e#C)_Ur5jlCt@&vGhiCC>7>!}`5R@n!O_`saz4v0S@*qwi zT6K*3Wk;g!ra=24ooLNWil9#18;GOR`^2h80W>c48V->^DzaDmQY zESC&#+7NbL7fvK*mLw+MprwkvN@v*qN_^jy%l&F6_i)KkTQ1+jcB-<0}PVz7r zaT(;Il~CKfZaG?2F4C6A5B7Vq_C{i+#+-WQYlH)Nn5*%dy?~t7p{f+a5L zYUX+)O4&SzDZQebmP^mXKQF_P=S_NL8amb@dMbFW!A;~Q19B38J1_yNY$r+s{1u$$ z_H~}IPYMRvac!JEbFoqmC*%_hUOp^`xX0$$tzmq%S=x(Xn63KC2Iy>+b(;w`1)+kDcFO7@NsrRViDUc)dBZ zNgOa=b-ct1%$bT0ypB^{L0io>QB~_{lZn8)AD7pPcCgGnLDk) z($60b+D-gj7kkpHoxQoYgMpEa8#|%?`bRyOeSJvcv@|8s|V}1C2`L zwgJbN3>537=hYKQhP@KKSQk;AAW{)M&Vp3cev_qV$_xVe7h_FRY89s8|A{SGPd zS#VkSQ@c$SIq1m2*!a2ebzwM0z4Rzs>Dhn09II zFb(0&N9uFb!cBrioc;$L4xGSvGi!5>8vDmy3k|DqbjeJznY0FjYVtd2TZZ7|RcU)h z`sr>U&tp^2MzzbGxr$! zGOOs2nX-kGhsC5G#3N>CK~xJnxt(wB#PM9w!)V33N6dd`s21*|z14sQ8n1gqQ#mCG zaC(!RD}f?}AwKOIL&Tr`&loOl`1cLe zMt6^Z%il4o2j<&ofE_aXJwQT*Y}G6E2xv4wG8%W3?cjc_Bnk;wGeFJ=xSYzyh??4j zWK{Jx)tw+Q2&5jgsb`)iU+?k0({Pw+v3-b?lRvI&((2ZtcRPUSSe6y?%rRK?%z(!- zkeozG2A# zQwLz3o#4&y)R0XR5r_j+;phu>_oRp-Jr?Q+5$;=DkwfcGG)_T+L)}hS$q#&0nZdqz z=F=kG90HXc(07RqZE5uCU!7bA^4+$NV;fwReF*!5hMiA{4Z>z|g` zL@}}Gp1f{fs~^Dt=0@=I84+SdYSz&p%*Z>nUhYb8PE1B~L4U)cKp2^IYti8_G&x$Q zB3M_@Lt)v-b1Q*u&$v|09U+{jFwCTQ;<<)L^tv6{tUm^MBsGy}nbQREtp55y@u}SC z;O!2HB-%VSqVvWLv*t&ZZAz=!SU*4Q3iZ0-P9<{XRMQ&JY1OITeTKMaw0P`+DdY^d zZ$K@L=l53_{7Q9OoNNCU?W-qbU{Iokz`)l{@GK8St6_6guN+<1u;>wya#E9s+Q#G2 zk?`{fnf@p=D^mDrFMK7C6DQa>tEteaTf*hrZ`p}cV-XTTIl;g-mV}_xr?bZ zwm!?J1q0+QMOdQ|W1LrtigLO6HAlW966NsPlMTwEUG|J{Vf$_CSM>&5n&!~iAn}{O zCKAD#BfDrHQDoId^Mn?cGn)Ky^#mj$90D7)^$1Wr7plyYe%EA?*WO&im29cATQB)D z1bT!?O+R`@4qwLtIig=6;G4{F$%7Z~8})EIfHDF@Y``o0kxW=Eu&cCvwR`*?Uv}}T zTicBV^gDiV&>-9l-Zlbm%g9bCvrL){dQVa+j32vOHlzfEpUPF1zFOQCG9klU$okCC z(m8?E$vfbQk<#yc`^wE%za{omE+Pp90op~lwswCNTu-5wXbHw}n_PZ_q-d#Zv}QgG zG-Y&hRGL+2D_nNjpL-zPs2%QtvmI_SkEptIXU13Ouofv68u1I4&_FSGfVk&pe^OUh zOzD2Cim0Kr)gwRa5N4aH5AE)?xC>#(LT~hPU^$f9UF?;`+OTgSp{miWDy1EXA^C6c z*7^E`)nd7DF9M7FwWGv?oF`ZvGv`GBM{49w4yS83$VfiMPSrSFIlOZZ*(hHAaC7Ce3 z6Vv6Cwi&?pHiH=---%P!9Ib=*JG~fdSYI;M6mw_nu}`*9N)jbOHawR=<#}v6Lu~q> zyDV%vwoDRyk>g)S|1&lxU(*#!&T`>bxBG-sgxfhV!=CwK6r-}U*S!GR*q3sOMKenq z{&mT|Hr0%_8;fE)Qp$?;BZz2qe!d3G&dc@S0-7+pb6slt`kMzl(VHC7-&cphWcW z`7>2+;ME_}I&?#Q(r2WsUp4de6p3H0$)K3j3$I@H_d-q*Q7GjeYW#;1a(}YdH9|p0Bk?ybUM;pi z-`n~djdN{%_GHjrjLYIvRqbJ| zb5a~|hf>25Esi4Vb(svS{qHm}HMyP4UhB2rH5KvkX2t<2!|C*IZl zv1?k0leHJ_X3beNxo+qapskkLm%`wr-^D>WCvRpbkhZs{J?nsH1Dm3@$;@+?5ejj{ zFRw#EdRl?v%XA@LocMY9H36z+!j?!!X&^2^sb{E+GF<<Dz~v0P3rM zPx^|5rrD@%{BC$oA|KPLS;f?|@ut$=wc?3{u*I7Mlkt~>Z6hkAxl~drnkTcXV8VK* zMJw{5_w)OcKarBBy+Yaa+HJJE9+{o7{zkfc)OQuTb7Zv0=GFQ70cW1RzI~}3V2?ca zaL?!ZZ!-V7QF2!{I{K0Et3$0=`Sts}3V&xw1eE8$pe3!?)#HdbM_foao{y0yl)g?` zWt1-tH>N0m{bWuPNP?S;)o-yh%!0ivjGJoAy8Yy~3(mcs<}mDbO4xFc`_eOZ0$ZxU zbWSTg=kBKiIdEZN30tLW*go+4YYN>`EC4|?4K+m=p)c^;DWL5tgb{YKJ`-{exI}+1 zPFORqgd96}*kGEQ#_$-^9xFwk%*0&))3~anRu0k(|KykXb@6*eDaQc3E6)pddDfZP zvZ6_TLepJ4GDGdls~=-p)(Rh1`_Zri3=S{bP+eG8pag3?yk^xR$wXFrom`+IbAGn; z`{~DGlz2sr^pX?k+*X`G?JAEs^4KSNQN@xWG+A9$i(#fNQ1u)GgK2V{ng&mk)JefR zTodUKhrCpMR@Ur zgxc9d_R`iM;OAeDCQH4nC{%}95keGhj$ren7eg(hxIhPc8%>+YC^OJQRz_|{?meb| zA&#qchPFS)`6_My~8vn;stl7_~prL&*-5#j2G*4FB1#(gl*MqlAG-+!KCN zy5Ma8=Is}MWh;14?{knCBmLL{iRrv*-2A77n2h9C_d$ikUqv0fUj1|(S0o5@&-QFo zt26qYhSAQ{HBe-Ta}S6Fh%hmcVK~uX>mdHuqKLTjL`;$fSLilP9Xt1uc%Z`bva*`y zbP8vx9s2OE?v4)*_Utry@e7LA-#iN$vQc-VL~+n|Ew9IjojkK?won{Q-%dBe{;Z_u zXA-nJNY9)P!`CP6CwE(9sU)~sL{N^ICwL%^J1M$8NgS7lLjmp-rzfPiw;k`CpIz-q z*ZhH;dH&}|>R<2S zy%yr~t7mL*bh!$D1^6CO!@Bd|VUDt;+o5Iyj2uy!l;8J5?5HoZJDxpJ$VL%|n(5o! z|2!JY8^T?CO?>0+-S#3Seqn@Mhq{eoa<;~KAeb(7n`J?2GX!1Q*Yfk_=G);I&E>4s zsJj_Y4^L>n>d?yV(7xveg;B_zw#P%q%S1oSquc!^*l1W1CE8+x^y#4Bus_;DsNVzX z873>DQ*vqT#HLjfM8M@&i~n{1t!YjbC;DZ=%!vBldD|g;-E07LFoqD+K#%gZYUKjq zzXw$IogPM=ea>G8d|d5)0KV;b*f@hlatKZ9mMG)lW;XXsHj5fjDTD3yD-Y|RRf{IE zH1-z;CTlsBB+w^BwInD)wnaL5t>bKD2o`BQi?e=sLZ~u7wE!EDxZMWcC+~8<9IQ6%mD?H7t z%%Gz8^BzgsZ|+a6$rp!jOadbvk47a<(3hXZ2N`y7rT1sHl=g62$=2UVvVfWB!zv}$ zDtvo|ALU*}ui{=!aVQ%OxudW#q!g5gD@fh;fxs~g;^H%HMcPsI9XH$Ny{NiRwHwXo z$H=ujs0t2`uO;TXU?i2kx7~u-D@>3a9WI&m>=`*H2D6WPZj#(4NN_Ib`t?{PM+pqA zm?Y{?n-ZvCeQ#Da>Ax&XUf&U-J(1liKj&lHzPpSWtIcjWIwqnt%VC4d*+M?~kzw0_ z8rgwA8LK71v|k;Y%%Cj*SZt6x+X*laa8%fQrN;5PXz&bxV14#J-}G?ogQzykFJE*6 zOcrw0t^#b$>|3nuM;=v88~KDoy*w8<{e2aWKg8>`1GZhBcFh@o<2LcxVG+`jmp`WN z`d+`?Wh9~_a@h7zdh6WP1-ktt$pFR@qGLx!%*_(D&6 zmCC9opZck}`eb85Re)m{XBk?2YnWFn@;*8{_mZQ-z62UA4DZ1i4p&)2%TC{z$sa+E zLS?H1tgg%y`vKPZ6sa?p21b<;#oyYV(ys`M{1!-NbIT{OrM-@Jmu`{MPIK?#5N8`~ zyl8ruw)e2zmCd-Lb7@?C_71G(%Fp^p<0IMmHC8^Q`ZSF+&Ko|1ZTB0LB9QowP2&yy ziP!p##%HRnp_xIcNj%+AFo)Lqj!K^Z!RksPxri7!lHj5@u}VSho`^2?KOZ%MSSw4UKmBurOqXoAFp;=-yW|_6>$BEkFQJ z7=R}2j8`*{s6`fCYY*>pWlkS%y@ji}ll4nfE(Y67^cPvQhxU zdCJ!6%;XkRK3)26A3m|Ufe#EkVX{F84atw(aG>F~+Fo=_-|rL}MqyIk>HR*jISoji z4AIcSWlF;+nX{|3Q2ON}D7JNbJ8k-rdu_mljk*Ue3yDgwr0>+Fs_#{#H36^{l9|ZD z_m?HdY$?S3tHbGmQP2cU=>{!sLe`&uRfFypa=%{c7EJ?n{?x({^28=t^(qL&NO$Z= z%#;E3GJ)O?{9k*-EqUPYn4X>2&M}g6XTuEUJtEU-L0jsV?w~0mH`+>Itm=W!N7`sH zh&3-7iWY+;p-9+W?kxQ7b_96}L89&>X`RWKc#&kZ4jX{&qx+S_$LB3H?mmZtI-jEy z7r?Ahbf=Q|E$RJ_z)tUq6m32!A$!##$8VJh&#J5haunK*D?!g#JFce6Zu!&M^cGb- zWCgsz2WZr<@Eyd)w#*V#^mx^wQJV4aNQ-_YYK$FSjc*C6QD9`C>)LwFnO{_kpy9U) z(zpN+s8^Ty>7(Z%I1rBc+Xp(ni$tFw^EUduzOeuIbs?@*VfznXJp@!V*n44+|u!)NT(BNG3oyYwJ=SUUxV6in`nVLr3OMkOSxA6 zJ_bdmDbepbQ&|{j>+}O4XE|vWsr)99CNx82yq2!^u!gfU0avJ;Ak$>d;Bi+CAYv(d=KsFRjIT%{!g_G!Xw-VTuBUdfh;z-NrPc z@5YAKYtXusBE=aK=_vhPmsR_JK>FG%ZiepuS0|f&YD6#2+b(X}GF}@Cv+83yA4EOD zrfx57sS||Psv5}THaqqvAb^H#L{t6U{PcUcw)K=Xc7aKh8&R}z4{b|^57JWM+z-KM zGY0g~B`wFBSp8~5UBWDha~IT>Sp8kkc8|*xt@QR7Q+zRQ4sQK+B3IB-xRieMSN7u|va#Lz6tZBnZ5JTS42~AMc{gjX`>fu$B3k z?^JI5L^o)&kZogK)TN+EC^UBqqa4(i;Rp9V}h7Ki6F!Wal=*?1I+|=x(*88X?Z#~QB zPAdd@Su69mM_Nhkky|DK-Fn;Z&~$uXvCYvc_wQ~k*Nh<7?3s|x{6r2P zFR!)$?0yYe+e?8f7j0p6q~$G7y4gR`ZuWZb7En(zF3thkz<$}Lgy#Sqd^!NtfnLh% zw4@y>=f|dB#fQzB18qJ19J6XZ-aVH#$vyKeD@FLI5JIBq+S|_E2aIV2!#jU8>~(zD6AhRSB1@vc9y7Y@mBeeN6LD0M-EZX zPX&cAI55|&4Eq;N1%=D7P<%pmwC*E6_L@x>kEu^vtl;a7hMT7Qi+xNyqIKg)2@TuU zh(cCRnw`r=vy3Tz-DoYvV?I&j$M_B4TSt(!HJ;^ij_$l+w@2=N$(WrbaH_{`Ki4q!o755vL;HTMm(S*&udx=Asw$j z9pV-dAth01pZj*`YELM&aw9U*!*&7M?;8w>tFKh;-}bz^+UVMg z?>V&LhI^@Iuai)O*dHSYo4xOBjhI>3R30cB+p8Mgda4F~ia`B+jNz*W${&h4h3Q_r z7upf0h_jv}nEBuNCF6l2E6vY@*5-)!ZAfT$_0IBPqK6*b#@~LEQn}1vdJZt3s4{uA zTbpa!$-X)|&+}5^1}*AUy7afF?>eU;jd{Q|=g@PuKt#xS`-qr0WuH3^M!NjV?CR=8 ziG<`4^TUTrC+jm7hOJPOfZ=2KJ^$4GSfhbx1MRqvupC90g}Rhr`a2C-9ARO6J?cbn zT*?pAwY+UP6lV&bS5f0CCh@FN4xTkKht>RvJfdV-s@l=x$(CvkAm7V8s&;xzYug3= zAY!ol_G!NWhPGP>jCw_zRp^a?FYBjwR)(*Y%|b3GR#ESS?^iZz18XM+#Ibu*B`&nW zYqi9ED6QUi=H7Dw=Yj%Ob8xkmh?d+|C`)MM;!8A{hn%Cb_EmJ_&)VyLj{J_aUbTmH z^);tzZ8nmkB-!j-nDr9(C()3;wux^NB~uI4oeR~ymtnJ`{*b-!QLWXn9&b9hh_rs1 zST$ir2d4?W!|)sc#1ioD(7B?}z&hF(hCJX?fd3TEiUp^LM3I#o8xhULwzr6Iu>O+}Gq3k-LG`YUM6kv+a6qaX9~{ zC_nN(n7TwAT^86(JZ4aVxCJ>nIGqytF&wAz%=YV{>ek~R4|7GZFM2hwU%0MGe|7F` zPLdtzLnw$$7jFzm#jMZ1Oz(m2{z0HZzRHSpu7S85t=_Vha!3$BcTcY~WaSTmRd$E3 zcWgu2nwc4>f9MV^TQ420H*?vObuY`A#>Y>sLVQ}0tUGeZRzIe2>h)lvHfV*Z!{JuQ z)1UmEaN0-*Om3%d-|UEG@6!el-}cOax+I5ud;9N?3Gjxe9gfyd+YP_)ik<2I`t2mP z=j95A{}rUGKtPU?o6TKw*L~X>=Fii8ZHKk&-`xDkuPdqV%^f`&w`_;=nIDDo+Y@b>MB+S&w{+z zuZQ>i6uEfy2Dwc^*PsN`t_axVxd`GO-B$2uP? zo-Q77V@1)saP39LX<05Zc9DU6#9>0fuDX|d8iGyR ze$TLwc}bm>v2c^sZB=(gz*Yr5IG3G*COATVF{#Ty`U(~Z&FW1Snaf|Y*nZhT+=Xi9 zCXkXR?JnNGY{ApF*wcMZ(LalBVpLS{4LLtKXUt_=W0-vFvD`_ls35gxoq^*U-LXF0 zT6A)sLuXtdl_A9678q1LqO%TKHGWD+EvqaVeIOkRFk+e5M)|j7MNXb^#t6uH+VUBNwMC#7%CRR^dX5Q*7O%SdCvStQ zUzPE&Yh4!&iI?OO+Gae-%|^eh#caQzvW9_R)vsiick^c2g6!jVmZ4gZCt(?n>Y_}A_Wx##-~((# zPD|N*gg8ut@9Rb!bpV)L6<=U{T;9e<>|gEsl0rc> zXn!TFy!$qO@tH)M2kSuMNb1??2j@nJx1fWlBY#2`KwN!_QCK7dT(0ExkFFPK7&5fY z&v36j|AGVWjrWNb^k%MW`6mdMYQFrtKp5fE-@&q)aur zJy^ld-Wxdl5YqW@-`G>w)iy7~ZR6E+%<50YkP4R{jr9bCp95CL6DU&k_x1~OqFS1QpzLkd$gxOmu{1Tp>yf|EoIlT9j zi~+X}>dg{2E+YbY`SK(DTcIu|^5jlh8N=%fv;jj~`?xIDB&D9?*||9t^r02t`+ul< z6F{ii@NHZoMP(^V*`g$blr4s7Aw{ToQssfezs1nkt9Sk|ZH zF1<-*c(m|qyQHP5C*Qcd2HEb*d+uTL1>VViKDE5oPzNc#V~`63Qd}p*&F}qi(^S6otj8noNb)(yp+rSD{Z1 z0N<+?BL@4HEL~%O%Ov`XlSs;TmXB{E+gSPJATYe~X`n$ROXkZx#6eD<$^JBxo~I`} z`tt%Prv4uvHn?gvIw&#k6I$lKS*>m6`E$9{iEBYZl>`e$Hms&(aBtS~R(b7`4%Yn` zzgxmrs$iWv>pyS5RN&8rbV=PG7scP6dPT(Gh0`k69p*(MkZ>PPU z1pSbuZfa_@DbTO9I<`wRJrbTfUY$B!*559*R!BcTpMoj;xxtQzD!e7E7_IIy z1~Zj*paZtolx6+qCA29K9VOmN+esr;RgL$8-bp02AL=_Zd0E6qP0(>MiA_7^boB3+ z=ln){ncSDIAN~6vk_C18bH>raRDYe#esZfZ>CB`r6I!yH#l#rxNiFFb!SNDjC!WR~ z=N(J)WRgk^!Ph)X&rFu}FjcvV(ZKj`j@BNDTYCBG)8Mx~FdSUH5nI*f6xV%7RA;AA$!^42W@vM_fag0wTK(JpX zaut9sML2Xbyo8S4s74Pah6X7C8OzxRntn(qdj=f_c`hShh+sDyu{_1-QPIV5l=o)hoSTQ@XtiZS=n+vjlW%>ZJ8 zGi391wuN1jH9hOY$g~Hya|VJi>BHkeFH~ijyTIB|M?hdT`j`?rMt+3k8T{~CXF>M< z-B;EmF2yy6fmqsZCTTmSB<%4tyB9_pu|HaE?GvFF=A-5|#PL>;wCBmrYUJ%R7!Q2@Q!s`v{~ zG+d1yyy5{nqrW}VjpK#%9AWfr)!QhZ%Rv1s2-x#Qf-XsXO5&EuU485;bxi!Y+?J;L zBaY-pTB)Vu|GOC>NdR1#cr0%m6XC@CW7nkG_WjFY5H}{n4^D-~w#A;MvKYYv{@`H^ zA7nBb$i)X5$bbPgK+;N;G%S{Y*dwUA5^%$bYxID0lBIf_y(0(#jdALkqd!XSRDrei z>;yE$yDZYfKkM%ESlPO0@H~qsvC75-9Le)Bkh#`-@_wEEF$QUx9+}hj7L26C>E>-| zT6U&(zI$9Y{jjD^*R4eDcZq7QONwkGOU0%Hgu7;0$uJZ9ypO>x?a(((ING5_I(YHn zb>)i%{%I*b6skqyjP(T|<6gS!V|RA%^pB4t`eh;kecPH~MDY7~Q0iTI>f-dWZ5o;U z0&l?3EwCxE*Io<^x;LFUx-mtKjA-UC${%TPFp{2&PuRp{}GiGVV#frg0Oyp6(1S~BB-v8;Lh znp0V}+Eb*B-eY2w{&2!le;snG=29AZY$B|tp14YGO;s-|Vlk)s2X>+W>#HZ3;m^H! zea1MqN66IV8E$!PT&~G&+A|j-1H3rrHabWu9T8XEvA5a-SR47x?56=dRy<|r#e^9+ zVFFoZmu>4c>$Vi>FYW~9a{su3kbB>3f9_@kH=d}&B zE(>P$mZYWLSi5p#K?I)rdEvHHi$sG2D&y2);6ghqdPc#4afHO`Y>jVTCk(InBrqLP zSfR{1>XwcBL1o$D;XszXAUsCLa;d8FA%3uUsY~!>5M%kgss}mX!||F{*k_6L5P^Hq zk6z5t1T@!Wg-Bu`Ck5jfT#JC-i7H0$%Mn*A{i2ciPQOm|PIaM#Pby`abT3^`*@6I; z;Z?<9^o6T(KaSY-gjA5PACa^bKZQ^2%c986j6dwUT6IBi+|mV?tKpvqd6p$((%m94 z{q|-p=hcLX**HU!N$~o#&a$Y-r($tlC~5R?gCF5Nu4lul0k~tEp6^f1EwsL7${h0Z z&;e0J#vIe$CWThCsHb(43r%h|5#V+F%{x=~#z~D1<9W4iLUlsX)&9ZkbL!cLO&FS8 z;18Vq-k%b{v4dwtH@!@nT8d(xO!ga@-B^$Ay(oGiO|=;Le*ZzbUQMgr*Qch+)O$b= z4E;U)M6M0yIx)2~ks??|5t;VsUli;2Oq=wkqz+iv>d%ew1@S$tfjn~x0z8cfvP^++ zvK^M?uI~7=WL%@N%gZTNe^;)<`FG}PzClIAe_<`xcRUXApl-o5*|1AGF}ZPe18!zY43oq3hoxrsB(im zskaTPClF>2-E@hZaGEqd@Q)h*Rl12Oig$RVs|Pvw%H->d$H<$t=mt|Af_0 ztZ=OoMM6c_i72PIzimR_9%Q|&{R1#PsUJPtMu z5VPD2a?89bRIHEh1qu#S-l57RwL1RrZ?hNv_$`B{K1Y|jxmopoElcJ)o^GNert}0i zA1wD$7rlo35eK--G_B&p00D`c2kEMl6YJYz?kLN>-IA4&{fC)if1ew!5TAKbS*ngb z5^JiHYDU2VHHSgl2oBCQdf+gu^FTcHL=&{6m)#GtS!VX{@NtD6|DQ=N08Vn73m*?N zxK?B#L)E+!3~b4qC7f;IKmj-&#nQpOcX0r6%dASvujUkpsE=mjraInh4wUTx69ioDa(DmK_Spug?E81F%xaQo zGEdaCliA~uXk(`c1a3Gx$vHeBBP=x9mA@f@E$Jl+vx};0%W_U5(|js|>!hbP;~pNA zsaEtTf6Ipev-CO*Q$HG}4pkFwr4?9ZTBb||a`lo)v*P2A)o}A_PGlu*)STHuD>DSa zEZUI4QMKk)nXqzO$Ns+aasaWUeyUn_XDU7-coYHM1X_wfP%Alc14+^NJF~1u*Hqtt zj7VqkWfyUy4gQAS$Fe9B!L}Br!*h#+C%qWsig)|pvQL6Q6RQRoX@_uRE|v8B5q7Im zao{lswLN#;Pbf$@9l;U&>)Q==w4}^dWlSNNTQ&Fq9jq5 z1X@+s5?D>(Qr$zE94Ink-Y65=FaA_A@wS5@uu+20rdQYHk3hN$0&ER$*a)ZEkKK@I zIl7v<{Zwuaa&L(nYXrHmdva!e=v%xQszv5`8v(XQ?Z8u;t#o@5KuNoR=GRv$E=F@R z=0Ql}?NM5_h&Pn+#en98A=sILf=;wNZ~h=1h6ieSW@21%$Vl28Ji&`JGe=|KqY6bC z9jo4XcdajiUrpsOMLYNN#GCEf?ALBijUo4eFKYH$erOzV49Q-p)D#T>8(=8@rtBkD z_X3z4y(aQH?NUP(P7_=&dJK_n`I)HLy|FaByV!JnL14vo+C1F8(T{%$%++DtW+@c9t84g* z&vc!}?@hyy@@VbYd5(dV@TnWU+K>q+uWh$|O$Vl5CbfPP^}dtpSu#R9aM`@+ z{%whGC8Dpi-nM4^(K;I;8ll-uvzuIU{k3}YK2?(OwTG`zJ!5Hb!G$!u68sB(L-;+C zavtLtV}j?`oN>&}-In&Xx z;nE*A(FDjDjg3}l|5IgkO4)3UYi;NFGvR`~$~8kO%v8@?*&{p%f2XgqeKODgFE~Pf zah@Ho)hwQ^?K~Bva1@0;z3eK072($4TiR10U;3J%-hRQjBme$`hpBn|P4}p_m#M^C zKiO|yaL6<4nx4d0aD>MD8A@WEs{%>}O}0{n(t!q=w4L%nhsTW$O=Z(@r~_wJ=`R}m z2{la;f-;PW-p??bw4j~bU{V`CC#aB&Po2xWk^&+izQ;65U|{Y6i)Btu8`|xwl)=>( zzbW0f7r*%!(Y|C}kukWrMkd79kR=*~%E+-sDe{S4C_dCmG6X1@ceDwLjB31vkfW{v z-4uEyOrOXyGyd3>qv#{vPsxihNVP$cQ$=3As}T?t|BzWYc=4q1lq+q3c_pReBXIS) zH{u%db&}KM@z|gJefNIZYdo!gS?FhZT>Nt$$lzIge`5k-lV-weMvNh&(b^meNT?2=NQ4UIh-V0$-)|2O6M+zd0FC!olQYZd1e8i3#(wC3QNS3^+AL*bjRMpluPAd7#gB`5T1r>x?`9DlRewzLjO?ps1` z8Z!FqHbJEr-P8QK^x5Cb0w;<#Dm7j<2}+kM`f%!Cl%l$ z9IiQ^lNBk%)jM0T1r53*mC?}wIY)Kgnz=eHH!2*NHd z6SyoJm%8c*95{|{WW$7SE5M0^><&M)_JY9Q_1P}a30c^S$?#?Zn{?`uD`#xM%Yh>M zKKzC($7}B69%(#|wO8|s3FvbC507WR^EvJR$U~QGUcauIJ6QoTefMy6{C)6B(vT~2 ziSm6qOr!lhEr@JG15Gf5^xMw;z9G;*5o|=itk}bQkZWXe*8$ib)kLoaD~&hTb2SY; z;1vLx^czh7yYuVZ(_zH86YE7c3dbzle)Xh-Pft9opIv=7p9qb?W(R| zo{mR`VKlkI!@u0-M6DZwOEwolEd`pN@AJFMQukKW$*N07Tv0(>kzML_ZaG45-z{Um z;*=YplQJ~y>$pkb14c&B8tt#ZxZqs><12dfro*zVbd1jKAGm6%i_86HAid*nVI;{V zPNUtzf%g5I+}w1whcPh@&rEn(#QN#ov#1d?x#t47IFT2u(^C8T0{2jQiR{mx!YoDn zv1`QB>?Z|JpZEqonTJ?n5-!|VOJ=wu?0$z&IX{1tAZFqw;F3lru6IAax}uRqd`i6Q zAujZyC8CYj39$avql5Z}8aq#8r@-=}U@q`li&UUKt&t_=!l zmD{T!qQ9iOxO@P?B+M?+#41AqJ;31#C7^=~7Sii5hZO`IofgB$ktK``1nX_(7AfR! zq)nH&0ya(!$_KqOy6LtoiV?l_0Jk2=2DS`f0^?qnfKe6j5@W zCiOhu{jk^XmGy5rOJe&X3{@5L64fhy(>wmWj1oogLPEzIo|X4sC~v5;=ZLH3=DoNB z`$5;^XzVvsv{=qKXA*nzc_%FZb~sqSugbyaXM})+hy6#l`!W96Gjpc=O2hO(qM*>F zC$%74Qxua5T!1bFoJ$`UdR9J4Xb`pcov8NIu#^`@_tBj^#E$L#(U$Q?V?7!t^n6kz zu5a5AWqsEE&uuE)qjy*U9<*hoB_1xfbUnK(H9tF+{FKB)Aj+25*FFT7Z=eV2`$2Pd z>k;eJ%jWh~QFZm`6WBv8u=MTDatfj%dT!P$x)u0Ln_vIMe3sO3Js4&xdsc8LzacIO zt=#&M=4Je8a?tHzdUcs)&8^i``F#uT_4V-`gy+pa$qrVA`3QIVRijU*_$$4YnrDw# zjh(D9KPntL)Iz3lwe#2AtKsWS{=Lf8=PmHUARv#R>BExhRSg(;*gvZC(t=K{C1)l_ z)sunDprL&0o!&J~bP0NzRSsPo?{D9UND>r&<1MLOd;oG|thSRz@uJ#)<~z3qi4j88 zhR>TF{?0gXcF9L2e&YsJ zt)Qm_X1w1Pol5xN)6HZO~>oeftwjB>JK~_7`)k{ zzD%u$d%cxcgEOI~0feNe2r1bwJJh~-oOAQfUYC=gDg1n~;l)p#9g*uV&%R6T3*>yh zJ|lDa#=$-{xL)NJ;XUZYSbcpzIbl%8t{uJTRSG#renS3ceBT_C{)ZL2YS`ypat`=2 zv)z7)I!{nCVXSHRmra-YBA0{Xu8$=*1YjR)nnz?6x&PXPcGFr70{b+d1id^sKvaz9 zSV6*!Cwv}7NQrtAf=fDXxm|!uM$QE#w44a&*{sp?I6f8MpJ0Yyw((|daGj26N)FAQ z+5DW^9oWCAi;MG|oZNO^0L7w`1%XvI2=@$j#^S@1n4f&U%4)Ikm2nA;0vi%3Rnlp{ zSJ`d8FZ2C{+*leTFPM8bR#ppJn5jr~<&_vqE!0PAwP7cd@QcA4qt{9H!=l0sIRRAr z+l}6fX{kdDe<|&;)^{eI$zqVmi)!40W0S|m^$$kW%a>Vp`4o1| zmv{vm81e$2=>{`R4|8z5ldHs78~pqIIU-FP{(Y(4*mVz+W<<=ZzZ4tWd)K=H+H(dj z@7@|9m$9?s0FIt_b!)Q$k6ImzwO_p+d4bz6mg|M;L#g2WNV_4}_6=YB;h{+|2ax}{ z^jV(5%Xb3O%%^)VS5%x5GV|Y4_=%ZT9Zc=)dRiakmT<(qm#zKg3azwv-fqz$hx?|f z7b4RwI8z-h0Qt8W4FSOrS%=f+4qJJR&$JAJOP;?jak;)VRtFG0NgvBXOCsIpPXuOG zP2(*TP}T=tUe5^)>LIcv>MtRIg9(YqqnQ95^-^>Pu;M$b&Q zMmDatMlJF7YQ2T+b0A(lW6ZM6GHHXw4z~@s0%!&b=YH|7)a#L+#Uxwu*qW2b%cke{ zH~wIf3|H=RyZ#&&L{f1%L+ELKjU%oq`kina20w0eu=s6CyySY z`yB**8Ln%V*KL+0;Espdf2t)C-LGqlowHj}m%VZ!)bnE+eFa!~tXNOre1X zgCoODuL9QDc!Sq>=R493HOxUV7pmTbXqb4z6%#I($3?ik-fGFK5LBau(iA zM-v>PmD);@EQ%v5%{;vHgV7EYt2;NjK`7`^AhzwHNAtt7d#ug#O5I)M-y)sH5gyQB z%BNX`i@xsj15)Yv)6ryR>2z1+p)^di6*j~oLo?l0Z|KRo#3kjBC!jeT`0dqvH+Otyohzz*)FSVKfUK4axGAT0_E|X>_-K09K59s2<}s!n#pV*hhCcUAj=U2DUIZSG zMjoRkI2Y64JDbeqazO8BHKMwEsmGOrq`R%)@I`IL@k#V3g-U^x{H=k($6dU~yYvr^ zBUbi!Qwoa4xrxmIY%`c*eOz9w6lbL5&dLEZ(I5qn+<~97Q{^=4%^R@JTj}>@E-CB! zS34iFloGuM8Ry30itFl~cuR|IepY>O`1oO#{X%PSt*DCA4D_W#^>t_|MGtVf<9PNE z#f@9-lzFPz!ei$D6_HJ*;-Z?O!)^A zie?oP8>i#R%svg7rrF9on}*e3c-<>LQxSbtgJ)xGw~38^94Lq_HmXWM`)*Tho%>au zr#URlbaGMa$Dk91$jDUB!_1H{o=@t8;Xw2$Ve31~6;%jhyAqbjG=5|IgN9=VXHe{= zQ(FQ@1(4%j&^6S@*Zb8Dt9u7!$y{0*ET=UDr3SICRQuVN&5&GUOK0jha=i`jYWg7F z5L0dIhFX|TVys(GBLk3(if@WQLVr4O<*EHhx%o2$qxLs_#54G$dGwFup>*+b>MH%f zcQ+MEq(8ML@>W{PU$)DH{)${uK5qjM{s%b?SVc12COO%ta8}Q{MkzE#?H+ovZw={C z<1_{guQK8zkEA@71zeaV&cg&L6Xs76_nZu7$l;yUH&U5ENa@VBf5k4PBGR3Csxvi^ zm>VG1=tEbq%s9GQ1jbt#C-wz$k(aCI4%kz2&a3C;dAzRBkN3=jonCo9J?n4n4m`A0 z2E}I3r_#>XIpRx6*HVi#W&4d)MkRXL2r1yWk8;4r+%t}bs?wqdJIljQOF$dzCu^HP z2Dk%Z`iYK;IILsPFn;ZjaC}wpvhMdumf~$(PeNW`ngc9-Yr=Ir} zEFp|zxteozDkggVMINdiDf_Obf8xk{7^|ekW0w4Piic-6z%z>r0;= z!OxxUw!if=3v+aEDaR*CW!bMBC+bkDFi}u#&Lk-<`kj^eabtwxyT_|}W?NfL9X@SW zV^xhi^hP~2YC%j!Z#GuS&IO$?I-~AG4_MD#nI1Vac~mfK$?b$z<84FC(PadNmEurZ z=u>p;vHlz@6=JQ*`v8b?1h1do+f9auyA+Jm&A|{0aql6vaxYG}x5>BxfmKq+71OWg zgap{CSamYV>1%6w4VKu#yN1I~yX+(;&)c~&6@?!Ua{`eL6~rnI;eGi4=3y>4SN}dk zxY>;5n4P#{7eY%I}-OoDN@ELTKO# zJ3n(-MP~UddreMbX4?IeLna|f;3Qj`P`R~V^VfAj5&>6te zhnjt-f8{WM6^#e0S#)!U1>O!qwclva>Tmbk<(fo}4)X7)Q^Ve2e~({Mbe-pcTu${8 zW`Ka-;;CK5s+hPk0Wl`&p#P*~7Jt*k#Fs)MnD&T%v5zTu3HevvInmKW5@a~;KRLqv zWY-FUMi{iE&fV$IbtVTf%pcrlxdYebcl^?{cYop=r;|c)`${4rPD>naQ12&S|rUvgixjedkq4R#3{P!+nO%K5zS?eNFtz z2NS9>htAW34w9R!Q2=!b$JmMlr}|Mi>P~aFRQ<9(@Mcc1n}Qk6YCzU|z#{K5spaq> zj)L8`_ZcjSjf7e94LNDbH0>U*I~@Rhg38AbbA;Y*6Lf~Mx;8Zj4IM0KTlC89nkw;_ zM>_fAcPI&m7W|z%6d&U{0uSGu+GJqaL1>_cqq_{ultWX3VaRy~LjA>G9E~r2s~Y;; zO?j#dq)k=z)+1mvb$C76T3LNM=G zFve2}%$9f`sCN=SAlIQ--PrN$@Xd`)M$LambC1CZQA_T2NUhGVSKY|YiP*n7n%eMc zgri5di{lkqzK89Nc#*{ccR>P?AOazkvo%-lo%Ar?!->7dy0oQ}>j!}C*?zJ*t zH)1#wWZ4w}x~Bb^(Vq<8u|!!eSFATZXAUv@yVwJC_>l)%JkFoVT6^H)e_d}z(ebI| z^4J&WUhb7&;Qi`RpJZ~G0Q+ICTxAGqeL0Y8P?s&28EH!~sPb~W*#R$? zy@xIa`SQEHwYhY3X1w@zF7Ys5UwBw1-f; zaGdWmAmBgm-Q8@stWz#~lxJG9<+fv7?-==|>H4MD+F*9+%L!+9+>cdtf5Sh4C!FX2 zu%gF4w5*Q;PBL#yB&7}G=3d79z21Ff>B4m;+7X(2*lCorb)5iRlKH2JsS^cLSPXdE za1O#5sw*>)1C`p$m-%>KzKYXQGMKa_Vi7x$VsH7F0d%JXAim7zUB}PIxOKMWV91Xu zR~RQ4lIk78B%Cx!5-Ww0`dA28jyXWuTt?l1{><0(NwD&Ew~M&;PhZ6lMRArKcOV=& zf^dZD@z->yC>-}c@c=iunwq_4>i_8>M zdih4dsrP&}>ZV%8JfNV9O$Bbo>#FOXBf%4^?83#~P*upABNb@x9SRO{2gu)A#YnR* z3Nyp!_Qb{UOTS<=k~jF6l;ubxYTa7p)3;rAh3`cEQ8sSN4-9pbrAv+s^Gu##b*(i9 zOspb2&IDXt+=7)ykB}B;;Do&wFEev4vKtNFfXYxIKlFK>s>xr9hMDq>?mB~46Q@}( zks}yqcr3R}MfHkXFBaPjES?TIdoVk6d$eP9_Yuijq93Z&`YoIyWI@n-D3mdTHQb`}_ZP1^2`}AZ>k{E1L}ZG{hED z1BC=1F!iwj2kWQ4H6fUM6+FkJ|2;=brkzPKqWL@cjeNrdaFLyGLxKKQCr&?-?fCaW zH*v!)w)Fe9&H8&+d^S(#W0pd>nc(%!$nL0id;q?O{(R>FE(;0XEJa=?`TZA3*^#Vh zf@~3(vgLaA>sT}wkK?=l$x5rl#eD!rqF#p9Idy-T1W-b8ebS>IWgfsth1NqCS~xSZ zOb7eD(gE8jd?Nae5&&k9E!nr4+IQYp4E6+|9{_>$j%Tbx85mX;ja@L5GlWFUKN1hk zl)9E=5I)E6)De`k^;@=KHHQZAm|A!tSoS;$r;qix(4kg8Lv&{MjIjfyJBiiAIUnar zjv=#>0sod~8JVpeAlc=iR&5D$cpaskx_EC+_c~Mh32p^g^^;D&%gEC9-7~Muh5^h& zg;xsbCjAE<3Ul9@)dzas1I!~jA?@xKV7eL!LE6{M5aR--#m97P;UVTsZB8`&^YA__ zWq1rgvj|Mt7dvjF70lLxJL$upPmbpg9M)7FEc;W&7!|x|X(kPj%3PkyRDBb;^fapJ zLc0X53P2%y8z@e2do$YkrtXsJSE63l>o?@fhH&HOlNQ9@Lgd!lyZW^}*@jFl*?m}+ zN7=uPA}PLe-7h$7IOs_el5AY+S%j=R0C`j$C9)jX5s_EcTw#6OJ^cEqCiuXe&X}gl z!JEC3CEm2zt?D7^n6V@U%l&vvbeAEC3fR&e1aV?a%qRlvE{FVvV_Q(gg+E(Cy!9__Yem0Vs!?s?w=0E$YUu@Ej^V*llD@T+$v{=d!;S<2c#=?tp|I_7wLn)s$LkV;E)Pr(c<6NSM8@lElRX7IFPvqXo(bzlVH)3L0}dSjy!lDVt*PE7rM(MRm-hbK zQP3+)`&+jkkUNJ{9`CPcIjaBYm;>kL7i9NRd%s5fwW z$+$ngiSnVKs-Uy=xp;2Rt)EqPu$m1J!W+y$ucPh;odmGzdLxuQQfVteOubkB(0@Bo znLeBos>Abs<4c6mUN3~yQg-|*w^lg_;gvOYVh8u)#*TEfstVmdsU+c5Vb-j~r=C>r3M8MOCmc9`Fgr=HwxTo#FUXh^X3XB*aW zgaN!8k)XnVR9kLYGc89Yc@O<}F?V6*Kil%y z$NdbUekK+gvs|;yw&xJ>^Q1C>0u}eBueza6YzUrtd51h&> zzyv)vuUxxxtePu#ys}C~*W{PW?G|mSZWeFJ4|Fc*^?+A`Y&q*fzIrLtgXtz8gWLH~ z(92!`XKq<7788Hz;BPovPEoy)hb*YWq08{)vzPSHtOARS6<5yM z-qiZUPj}9MrgS{&Tcq$~{3n-PfnToadupi#U@-31vmhE6i4$IxS=A}GwsdHwt`*BS{ld3c!U36*`eJJ<`TmH4+v)1 zNXFc3%l^dL&Z9kmv$5>Pu4pm{=F*eDB@&_5EPnN`#HGb8x0@DzYaiO_rbFb?M28VP z2LHi=%)GbglTY)3rYx!D$y_yNdX03j1nJe}t(*X^;vO0pVKVaBL-d5J?B9}T0>uh$ z5kLs*2b4inWO;u(m>Nw76_8TvJIi-k#sdH9@eC~i=Vt!^`?hY5fwZiRoPdUd5lNQc zI7v*BTPDbNu@TsUmSHi2Z&!DqNBk4s*4iZ@%4L*z&|H`XWJcS`kh5Tyy+T97(5BOv~SpAcf;gXBA!p(Pm zgzZ`%ufg!>Zg&uMHlOw;+a*&y8V3T;T*2qgccp8_h2K!tf?;?G*jA@a8VD*ka7!db zhy#AVh=%kwt+yuqcMQd&Akcja7q5Y|X_={0BDPBQmfa)Cc*Gb!ex5(yNV;gSi2xWO##3qLysiMWN~QGCQ-QL-(6hs7gz|^KlF`Zy zFBatj4tl*h!wB74vuYDtmK?#+bLIsyn8e@(qYKmPIB2>&pEd7JB7j%sJq@-Ho2p98yXHt6l4$7{J zd_w%+b^D$hGRMr*sS?6J+nQHPw)Tz zJWOHfzSYq?_z$ADv$B7K6^e{bY)HMR*QSVgU(7TiW)wyrPp8siW}}LghXZ^p-jvu3OLy95i#=4oq3ex)L&Pd-R9 znp&pfT}R_e%w_|ld^vxsK;ep=)D?;=M}dL+wzTC34u=|rW&J_yv5DDsIPxi&d8qwFW?6i$F{f`UYMxZ-5gG72hKTwu4%T_$pW7$)pDln7umxsD4Qe8oiS9 z+=++_W4!@Qbs{iw-Nx{rhDVn%m#3=ctAbr%ekKkTtODqB2OHZc`H7JytpTNaPe81e z$cBpN$tj4vozAqGy%N2M*JGb2u9`K7j4|1%%YIo|aa2^Q9-)Nse+vdY*X5ll0n2o>6nHTED9fzgejzCpAOBrC9BGq;QCGg#30R80^v(385lS2gZC&-D0U>AY z|MqHxRH@t(;D5U|gTl%9xYffdCk2%N;Cwu|p9B zTS>zXwoox8{(EL-9#;HH^Wna$b4IM!5CN5t=%pTPm2qH3Y{r^R^L0%0ZP?xxTCI>? z61U+zP-MU9=6D4rFyn6?r`+mZT}-J1&9$40O(|HP?qD>1_OXlJtk$_jDC#=iu7a#$ zEmUXZrW!m^LAZRZ5e&)(^>!ugLMkUrwvvC^v%T!xAGi98f{ zdNSCF$#2Yu@JHmGf!D=ZR#JEZxGDje0j5nCE&o8>5b4-lnCqzS{%_StwRu+o2>Mfz z>fhk7lBy=!fiFY1YZ@tLy%kp9!26)K&*@vTozBWsk%#5g7=F))b(sl54Q%IZ9+0=; zfQgSb2BqDXD$i+>Vw#ga3Bff>F~NK8PMdF^kDBR!2J5ivgTE(GWn&7jVh~3njW{w- znSBz?Dc7BN?BwHx-Gg@8)R8yav6|PYH6!G=CDT@QA~=kb^vKejbUXd`q4XeBV!zyt+~yT6xB?D{Fo2 zhLXd%?cw(+w{J0#Ii-PAXm%)kbkH!CJ9BJH=Nm{bqu)PTs)58s5cT=@;<7s-211yXJf80D7IPUW=30pO(R?~-JZ-Pf>or9vVHg1tv-#20|V5cvp@;H zp)ty>_UG$+Acxsb3n2at=Hk*VkuNP^-3L9@$ z2rQnHc2D^t@V<^~`Apbr3q^L8*})F~t$P7+d!=+#fygtzBnRCl3XyXsA!0ODeYV|^ zSH2&OC!5z^UtJwr{&>M7ReBeZq(nBTY_7%(zQp${De3F}ZY-PN1daji-kf4r=(g6m z5AtVR3oyHor)RUB$^SV#&{UyXLks;o>>ue@PocQ9BQUhk$|sb^G$2fO~Pm_Yfx zv3uy>cDb7Bzy${uwuKkowKAD5|IFk5&lSfTQO||1waKWa%j@F1e;0e8@&gRT13_U3 zOa@0>O#BxJd%LiRiKkaPH2-Z;`KYba*y@OyNoGQoili~(8kl?HAs59 zXe(6=^4l^I{W_@u6zX;Z(5HEgC-22Gam*!r5^{(iTqyz+RI@Yg%9Fc}5Rd}9vb zJY@W*z&n~{?jZEj3g;3)W*g9asJ8D(wEzOFjCtzvq%Bkwd&tw|8(_DW#7-{ROFArW z1A$hnZt7uuhu!NIg{%tN9zLMchq|Z~N^y#t6%4DOVDM6D+T)3#i>p6(t&Vzced?@F zT$wniURqOH=Kw{FcK>Ep_FGr6^6Wi>63GDfSbYutS>ZP=}HU_Ae>U@=TV zx6JRmlxjjNi2Wl6T$E|LU@zg)EMvQ_zH~fc<@Fm#i1n`Rk>4L4`hygV zSh7VrxJc^bv%35*)~|GXf2k2!k{bjyBF{k1y=#gMa5kfx#WYXU&@olTNp+i5avm3+ zNDs?~aZ%mh?9YW6s;$-Vff}F(cW;m+bOo5qtkwkZS_J%xct-U?PFsf!l(?@p^O71i zm^(IE_TdU{jHx(^;APBjy^<0S3TBDO_av7@;17#u=7A!!-Wp-**SJcI(nT-78#WU$ zx99oLs&U4?=ROMN(ky;*f33+aGxCeo|J7>snlqE{nYM)%$Uq#vt8JXRjfnp95}1M= zS3)E3DSijUx{Hol89rfo!#>Zd)>B3{mFY&5`_;K@^oRl+mfGq{1O zL&7iBHRqbxUv*F%Psp;Nr^T`X>ElQc+nn054eCOAch5Vj@Mv9@Sc=xaCle)OVyO0} zz(HPP(COGxZMh6?V8aRWTnpj>WclU=D{s5{gYvPjl#GxEj28J1DcQx0tc;DUrA4Z1 z3gsIO`yGCF;+JS>U)83s*=VI;e-Gc|&wQ_Ae@LOM5$dq(I$rMj38Tc%lyDWaK=~V| zxpMKP=42k1U(d@j>u>D=5$6kf8pO{APw<1%zu@F|RE@38G_DHyo?dAP(CW|0b-83% zt&zGM>Cdr$9K3O|YA(&c{Cj+XS-?>wDTa@qLNdXTLhlXX-uZtlUf6&&kkfDZ@GOdUGnew~=nF=9Ce9j1Szd!Ztn zLVA|nuJjH6&Y}n_wd0p507d$>KWF}h$HdKL%HAz6oeuT*BUi8xnWIvO}$48}dl4QzDNYK^&|RF?__GIPrS-w$HazlIg9D5O1&_hsrD0&P=Edp0t5sOf&?um8|oTu`zk zPo?@sgL92JmmUE2w`;OsPjBpO%m)t3zqC>sRgjXGDb%I;9Pq+qcFln9(pK}d`lVmG zQ!}jjZ8@inK%(VFQk7B6_l$Q)C4SvVp*{ZXF2=Tjwj!4$zrNf za!z^kqMm-)lI(L{K;$h|+_YiCvwvA-jUGLoua zFhc&W(N0t3)%audO>YQ|>J3qSVB0BR)77Qz%dCYNif5^Z8MYV;nd{3t=J4Ed?RkCr zFMq@7_WJ+;MsHUKQL5Q~N6##yRQUbkDnc-D!BrDu$6x9;I}!YH6Re+&?ph0vNsN#t z!g>r_Iu^OIpd!lk@a8q4{i2r}f^;{u&M2vSrVQbQf^V-MUgMgbm*(YX&VXVRRkN}C z5L=7r6q)9fX?3x}E?uyY&OVL5ny9+uA+G}!69C;SLaB04kC19IJ{0#|ItRHVT=D%) zK@oqGt$b8SpSj2j>t&ZKU_nw9-wqLqz}kYrK4H3vXv9)w&MbN4MRQJw0>V*UaH=X6 z+7ImS9E(e`e~=a{_PEG+JVnf*kwQBI_vq}3JYOHe+OFQ0VsKMp?>uE+BNfZE_)vx3 z1K8EitHH55?-95o)v^P;J9G|`S*Rp{k=-miHlX;gClm0sfaTUT3tv%UW4%*CSgAq) z)P;@{dHMiK?`G#RI7ti4P1G8fD~KXl;6aT9w|4Az+T!B6bo5O%mP72LJ^fYeD6GP5 zhT7UYS##thm)tARzlyq2T7Zm_f^toRYQy03k!!0@;qr%8`Thm`haT9o%9nUfP8`_P z@dbYzO_wJ^zENYNIGs8iz(H~nn}{O}vJnll5e^jic03511Ey?XAJ%y{|B$wSmZ)=2 zZ1qB^fh>H;q|-zs=){f<{5P(#rI| z>m33sb9cz`fgJ*FI_J|qx99(~b>`tv?SC8}B1#Od;wFO@S;{osQfcgzty~mtnHiZ} zp|}+>42O^{M)9Mo7{!pEWhjhm8Cxj(nl)ozLk2U(Fn-^;zvZvr%=64Y=RD7uIp;j* zyw7Le@7McC&_Y%JfAjwk9{`Y5hJL;YHu_1C{|<&d4~eGnp#u*Nzy6zEfc0JZQnD?x z>g)6Ht0U$O=C*0iDaE6butJQIl8}J1lg)QeJOu|@>sY^`v=L?UEGRJ5+3b(0hd%gQhk2K9LetQr_A3#Y|kP0l1W~HwX{UE#HD_L z#%;sx2Qi!ShY_m;SFVjh;jY5{l`YRo;Fkx}uam6nc{7BqPow+lTRtouXGG4w()|(& z&9)%bRL+ygN#tWZ#BZls<=L#SNj)y0g{o2RqurGjvflR8A4iPS4?=)4s+s4Pe8IKMx^xqR8=;6kLZL~-NcIMf1@4=aD1MT%e-y2h1#Yo5)UYi%eC?BghAsDm2xaUG|A9IK|boTWOM|m1R75kH> z{e=RtbelB2`3_;(pj$!W@8uGcR^8?Z(0`O2C~z@#!?(Ks8)Oh6<*$FY_UlCmC))i! z1zOdE+Cj;}(sr^r+>KXA^slc`in*RFjU^Hb$tBGQp2*5`Ht;U{{ZAx)y-WI z7vxJx0*`nUC40E5rHVK*c{2Z)iLk3544&gliq=~YPRt_i*ud{Fj4r9*CMp=>7jR#iJloFO+ zf6)9+^4Hv=-RlB=&MRT|BdZ1D(w&~Shf6e~^iw)?g3zhzf`MI7b>#tak}^zRrPqXTwgel8< z6%+;Aa7IL(w7-(B>~?#{e#R|7d`Q@oE)Ph>>Z^|(Cnw7KzQl)n-wqB-Ic51#-jp^u?UwJUJ zn0Uqu;Y4=UQ1s5#})!Xef=I*8LN_s zYh=E>KO~})I^+Mte~_IoJJ~0;5!uHoYaFl|+>K`y6zx{%uB3VV+`*<;_z6KqEf$N} z(fYV`DwQaTUa(&){gG2DfxJpv5fd#!T-F#mM^fy_b^~flutRDZ9J|ZaDRz<4NoYU1 zx3yPh=QoYmJ$Xw4>x5l*f)K|~Pp#voO4I9Xf^d#QZ&(^gA1l0y>;e1!6f)hS6Bsl( zqEx5nk(1M6emlpJN>-4p)St?u^5kT*l*R(GGh=$6SdM+WKR5uNcv>sf7O?hMROrUs z!;Z9bNXoUk^j*24tg1DuHJKSdSjij?$B|rZ0+u#wdgXHs^@Qx%fPnV*V-BQLU>(`m zaBTaB9`#nN{m=@buI6`r9Ch3h3JYB4RN$$tWp@=KA;F6835z ziru^4bS*mho&>j$4-knLx?^UT5mcheh<`uk2v0xG`c5oJK5?%3f|mL(>*J>gD~4Hb z7rF88hy;j+WW&s<;a$xERS%@7_uS0#KIba$Hxi7KHW{nItvEj)^lK1X**}w}o0B_G z(9w%u?guIxRIso7?Pk|*h+rm%A!jmfUQVEnLTAeV3 zF^h;`R94n+&7A6TlGK>lL?86;o}I9%eBlW7nsw0&=EfY57VWv`9TA3YxpJFUnHrA0 zW=E0W$>sRh9{c)VYK)mdK%3Z4{wL7-d)PweSpBq8OsIW%@M>a-_vZ;V1tanW*3t(GitLXn(b7+O-4S%i}4STKd|V^9yKW z$!B9RLf6G5x?%$FPxShSk&Duaj1hg$$YDASws>bkM6&Y5zboRn zmrrQbF%HfJ_&TX>D+JN?B{dIQK#)L~7+UR`34T6;+N;ybX!*Sd?QR=AaU^#jW_4f? z6+|3SRNyxC46AOIl_k(6-kI!AUWYLsW}olK9_X*w{DdhGiO<3}XYU8`X-=aclWBmd zmV`27ptp#lyzAv(r9Kr_r?RRL`di`felUVHS#0)+(k6+V`ST@XQyfI#O~C;`L3Gu& zA~C%-{OlUf%&@D3r?uMPRnBg8SdfVL-vX*mrdP|0^wD_CT zVaGB8GMcswwqxzK-MUh56}!$qbSs1^f#K7MhPp#H9gVlINQ~Yax7591vhQ(Ry|2GT zJXZntYlIAl1b-*p)X z*+7B&pS2UXm?H8NxnSQCssvCDZGqI7&D>MVN14hz7$l@L_J*$(n|vAtcqQCamxb=1+>{wf;ukhb-eTp0!oC3@-at%s4Aj5< ztxE9x{_hl;TgvVjsE4!>y7o;Mmj1I*!-L5*{%Wk%&(1~C+K!v|IE8T7fXXVH51;}P z&dezL5Fk@AARb1u6td}%O^pZynTp^TZAd$|jb<1RSQkn#S~O^6 zy`%#yUa(h!x~P-Ww$`GsGJz#Q#NpwYg3Y%XOQ`SFKWX!>-MZ4$&?kAtmIkjep5u3F zE(yXG_ScNpP1L!MbE?)FvpQB%FEqZ2Jr_P>az7%jNlx>WW?r+$@LSt_3A(>%>BlA6 zfn9OGUXMtK9iy4Cm@Q;%34WHX4AimxjFd0Ux7P#7I^a@JO#R;G(uMz#Cz*-ga%L*4 z2>cMM5f7;gCnaWex@ZbeqDeH;8 z{`M@+Sx^%vjYkKK;G06VGhMv@O56*(C^QE4jl44{;DaB6?N9NWabyKTSgjm-L9y5H zCDvm$?kKBIh0;X7_KgQZyqJJO@CR=)g6@kA>K!3)tiiX>|6tWH>~dV<(C%pM0bANiz3yEMXCwxgS3nba@1*N2f$jO+9$AWx zh`E4Egs4*n#uv`OBn0m1+# zsBeZ+yiYzD?ZY(~MV4E}MEm?BWXBsG6FBe;(!H@1dg&_PnR%hKdevPM(dY5}@`Am? zp}<{m4K$mGBXagw`N58~f`>z+IO6JtYC-?IL}`87BFL%0*xo$)T0fK?k7PS?T zcwv|CTQExujKzDl(7Tj7rVtXiw5C~><}-H(I#4IpR8_v?$<`w~Od_L`n(-rwFi)a& zP5N0i@NvXkrjYb@tzMeN9e_vKrFtaR pRrpsqSa5=!x&i?8iOQWh%Y&Bdqoo^0)XVrw%uKEu7Z^G{{TB}9k7ED; diff --git a/icons/effects/bitrunning.dmi b/icons/effects/bitrunning.dmi new file mode 100644 index 0000000000000000000000000000000000000000..bfdc7c63436c2f20dbd6ae62d511783f11a78475 GIT binary patch literal 1568 zcmW-hdsvfo6vxj-#N{Qq4nybxnOeCNL<$Ury*h*m0)cV~T`+|n5=3Ki5n|&-ZZdF6 z0wZUjf-@9RVBTuXSTY|+zT)DRT*@1u#KZxzXYy^=KpPHB(1Yp>Xk)dvfa?aEK zE;#tXIAqE|Rt2&xO-5FNYBOlT6RO7{O$yRdkor#|C$SX9JK*y*M#T>yfD7DOsLh31 z-=ju)870<2yby#3LFmmlG7W@lK??3F_z1Y+z+Dk%ya)xMMt8&LD1{dp76r^_14fVG z#Ni#WJXTW1o^MkQ@KVzE17x2n68TwndD@unoBH_3aEW2a`}V5qt<$ZneIfPPJ=@AI zPp>TI;loy;uQ_ScQ)iu1A7*KnvkSh?ZR_u{RWI8$x4LHi`{9W*IW^y}tK!Z&6j=(f z6PoaZt+$s>8Jbt!i4|@PsvLJ=uiK8bWZZ}(*F0SkG-C+kXK7>~)J<=4{va@Fw9#(x zJb+0*n}zR)Et;x%5pRb(lw>*WDh|0&U=dyHB&O9Jtqv^Ot+pEfX2`V5>sHD>mPB zT;5jhr^uI{&$oW*m2rB*v|8MD&*h$;vDZ0kZalzoO#NqB=|Dw@&)Fr(evb3@?P1

!#IM{+|6y=Pn9N8|jMUEgd%NvV?+_cDZwIJX86xcLppeRrSYL$@0K9&t5RFGW8&} zY4LHah1kyhh%T5d_>j-4_hs6BWL0G~0~_yCQsVtH&Ic7d!!SQQ@kE2Ao9VVfFR|J- zCI~MqEG*9ayR?PUyg;X1XlQ6iB(J1?_QSmjp^I5XW#uz0IdihKcx#U-5{Qa=j<@o~DWoYGNH%hFlKYfvS=Yq=2S;e+!tUSIJw4m+KU_F@6#MPl zq(0^EQ7N|c{u>xhimEl*-rimsxwCfEFf%jrDLE@H60bHnGC)(fS1lFE@$S)gZfoOn zBBl=KG(=vySUa%ru8APM7!!Hi)J^$i;q%Pq=J}Y{`xeYzbd)?j-1tRW-9VgSmZpk1 zq<^r7v?rs;^#@wzoLtVO7$1)J_Lr%AMUd&R- z(_?b#LdoFBqrn`r!`4H?!#(|9UW$Ia<*dB>PRU?g{v<;*I5c8-W1(}>nd)fmot>k; z1N*+*nz>l_FviV1?X;^mVmjBSo8{%zO5W1m%rR|-M)3e<0N%-D)F(%!Ce%tK5qWVA z2dXD_J`q06T|$KI`Ne+ovC6l0LO&GumNJW%KDkoH|AUJ61b17Edjo0WYWGz~enbdm z{^#c}ys2*Is2V+fDo@Pc9O0J>+4oy|#a)^X)J6GKLf2eEHb8IHisEY)X<$jUp;`yf zdGkNn$0^%_OrW6nPNvJNHVnyU@XM~s_TlEM?>8(?n*0^OzUDhY*TuPdqAR}P?$r^! z{2ym2xq>utldO@dZ?QI4Ty+V&SYA1O%fJ4zZ}$TW7aRP$vDe||T+=T!W;gkV%IQ*T z!#^~Z!)(Fh>(AFr)X99^2tDjt^>;b1cfYLH(To-0D!8|opghWc@PBbVBh0eqXIkQS zV-=sL2gbT)zuqc8;ofXbP;C3mN?PjqgI5w1NUsR(q=X!=;oUtqwCukJ&khV@wQNox F{sru0)n5Pr literal 0 HcmV?d00001 diff --git a/icons/hud/screen_alert.dmi b/icons/hud/screen_alert.dmi index 1c76d0eabc5cdf5977ae4518b63765d374046fc1..dea5f15c738f509d834c4591fc34c1f57949d2be 100755 GIT binary patch literal 132749 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