diff --git a/_maps/map_files/triumph/triumph-04-deck4.dmm b/_maps/map_files/triumph/triumph-04-deck4.dmm index 14b296bf077..53df2629e8f 100644 --- a/_maps/map_files/triumph/triumph-04-deck4.dmm +++ b/_maps/map_files/triumph/triumph-04-deck4.dmm @@ -1967,7 +1967,8 @@ dir = 1 }, /obj/structure/flora/ausbushes/fernybush, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "buj" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -3955,7 +3956,8 @@ /obj/effect/floor_decal/spline/fancy{ dir = 10 }, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "cKZ" = ( /obj/machinery/door/airlock/maintenance/command, @@ -8766,7 +8768,8 @@ dir = 8 }, /obj/structure/flora/ausbushes/fernybush, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "glA" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -12612,7 +12615,8 @@ /turf/simulated/floor/tiled, /area/security/brig) "iNL" = ( -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "iNN" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -12803,7 +12807,8 @@ /obj/structure/railing{ dir = 4 }, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "iSV" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on, @@ -20715,7 +20720,8 @@ /obj/effect/floor_decal/spline/fancy, /obj/structure/railing, /obj/structure/flora/ausbushes/stalkybush, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "oxJ" = ( /obj/effect/floor_decal/spline/plain, @@ -22142,7 +22148,8 @@ /obj/structure/railing{ dir = 4 }, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "prp" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -24151,7 +24158,8 @@ /obj/effect/floor_decal/spline/fancy{ dir = 1 }, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "qEc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -26387,7 +26395,8 @@ /area/bridge) "rZq" = ( /obj/structure/flora/ausbushes/stalkybush, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "rZF" = ( /obj/structure/window/reinforced/tinted/frosted{ @@ -32351,7 +32360,8 @@ "vWU" = ( /obj/structure/railing, /obj/effect/floor_decal/spline/fancy, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "vXc" = ( /obj/structure/cable/green{ @@ -32753,7 +32763,8 @@ /obj/structure/railing{ dir = 4 }, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "wkW" = ( /obj/machinery/camera/network/security{ @@ -34255,7 +34266,8 @@ /obj/effect/floor_decal/spline/fancy{ dir = 9 }, -/turf/simulated/floor/outdoors/water/indoors, +/obj/machinery/shield_diffuser, +/turf/simulated/floor/outdoors/water, /area/hydroponics/garden) "xqV" = ( /obj/structure/closet/crate/bin{ diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 4a57381f8ae..784ddcb0fb0 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -189,6 +189,9 @@ /mob/living/UnarmedAttack(var/atom/A, var/proximity_flag) + if(is_incorporeal()) + return 0 + if(!SSticker) to_chat(src, "You cannot attack people before the game has started.") return 0 diff --git a/code/datums/beam.dm b/code/datums/beam.dm index 5a4032d27dd..7f569057167 100644 --- a/code/datums/beam.dm +++ b/code/datums/beam.dm @@ -138,6 +138,8 @@ return /obj/effect/ebeam/deadly/Crossed(atom/A) + if(A.is_incorporeal()) + return ..() A.ex_act(1) @@ -157,6 +159,8 @@ on_contact(A) /obj/effect/ebeam/reactive/Crossed(atom/A) + if(A.is_incorporeal()) + return ..() on_contact(A) diff --git a/code/datums/browser/color_matrix_picker.dm b/code/datums/browser/color_matrix_picker.dm new file mode 100644 index 00000000000..573c47d3a10 --- /dev/null +++ b/code/datums/browser/color_matrix_picker.dm @@ -0,0 +1,84 @@ +/datum/browser/modal/color_matrix_picker + var/color_matrix + +/datum/browser/modal/color_matrix_picker/New(mob/user, message, title, button1 = "Ok", button2, button3, stealfocus = TRUE, timeout = 0, list/values) + if(!user) + return + if(!values) + values = list(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0) + if(values.len < 12) + values.len = 12 + var/list/output = list() + output += "
" + output += "[message]" +#define MATRIX_FIELD(field, default) " " + output += "

" + output += MATRIX_FIELD("rr", values[1]) + output += MATRIX_FIELD("gr", values[4]) + output += MATRIX_FIELD("br", values[7]) + output += "

" + output += MATRIX_FIELD("rg", values[2]) + output += MATRIX_FIELD("gg", values[5]) + output += MATRIX_FIELD("bg", values[8]) + output += "

" + output += MATRIX_FIELD("rb", values[3]) + output += MATRIX_FIELD("gb", values[6]) + output += MATRIX_FIELD("bb", values[9]) + output += "

" + output += MATRIX_FIELD("cr", values[10]) + output += MATRIX_FIELD("cg", values[11]) + output += MATRIX_FIELD("cb", values[12]) + output += "

" +#undef MATRIX_FIELD + + output += {"
+ "} + + if (button2) + output += {""} + + if (button3) + output += {""} + output += {"
"} + + ..(user, ckey("[user]-[message]-[title]-[world.time]-[rand(1,10000)]"), title, 800, 400, src, stealfocus, timeout) + set_content(output.Join("")) + +/datum/browser/modal/color_matrix_picker/Topic(href, list/href_list) + if(href_list["close"] || !user) + opentime = 0 + return + if(href_list["button"]) + var/button = text2num(href_list["button"]) + if(ISINRANGE(button, 1, 3)) + selectedbutton = button + var/list/cm = rgb_construct_color_matrix( + text2num(href_list["rr"]), + text2num(href_list["rg"]), + text2num(href_list["rb"]), + text2num(href_list["gr"]), + text2num(href_list["gg"]), + text2num(href_list["gb"]), + text2num(href_list["br"]), + text2num(href_list["bg"]), + text2num(href_list["bb"]), + text2num(href_list["cr"]), + text2num(href_list["cg"]), + text2num(href_list["cb"]) + ) + if(cm) + color_matrix = cm + opentime = 0 + close() + +/proc/color_matrix_picker(mob/user, message, title, button1 = "Ok", button2, button3, stealfocus, timeout = 10 MINUTES, list/values) + if(!istype(user)) + if(istype(user, /client)) + var/client/C = user + user = C.mob + else + return + var/datum/browser/modal/color_matrix_picker/B = new(user, message, title, button1, button2, button3, stealfocus, timeout, values) + B.open() + B.wait() + return list("button" = B.selectedbutton, "matrix" = B.color_matrix) diff --git a/code/datums/underwear/undershirts.dm b/code/datums/underwear/undershirts.dm index 742361b0620..c3ee09fa009 100644 --- a/code/datums/underwear/undershirts.dm +++ b/code/datums/underwear/undershirts.dm @@ -33,7 +33,6 @@ icon_state = "shirt_long_female_s" has_color = TRUE - /datum/category_item/underwear/undershirt/tank_top name = "Tank top" icon_state = "tanktop" @@ -188,3 +187,8 @@ name = "Shibari Rope with sleeves" icon_state = "shibari_sleeve" has_color = TRUE + +/datum/category_item/underwear/undershirt/one_arm + name = "Off the Shoulder Shirt" + icon_state = "one_arm" + has_color = TRUE diff --git a/code/game/atoms.dm b/code/game/atoms.dm index c4fc1cbd0d6..d363e54f4ec 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -671,3 +671,6 @@ if(!T) return TRUE return T.has_gravity() + +/atom/proc/is_incorporeal() + return FALSE \ No newline at end of file diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 5b7fb4419c3..658cfbe30e0 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -84,7 +84,7 @@ var/old_level = security_level if(!tmp_alertlevel) tmp_alertlevel = SEC_LEVEL_GREEN if(tmp_alertlevel < SEC_LEVEL_GREEN) tmp_alertlevel = SEC_LEVEL_GREEN - if(tmp_alertlevel > SEC_LEVEL_BLUE) tmp_alertlevel = SEC_LEVEL_BLUE //Cannot engage delta with this + if(tmp_alertlevel > SEC_LEVEL_RED) tmp_alertlevel = SEC_LEVEL_BLUE //Cannot engage delta with this set_security_level(tmp_alertlevel) if(security_level != old_level) //Only notify the admins if an actual change happened @@ -93,14 +93,14 @@ switch(security_level) if(SEC_LEVEL_GREEN) feedback_inc("alert_comms_green",1) + if(SEC_LEVEL_BLUE) + feedback_inc("alert_comms_blue",1) if(SEC_LEVEL_YELLOW) feedback_inc("alert_comms_yellow",1) if(SEC_LEVEL_VIOLET) feedback_inc("alert_comms_violet",1) if(SEC_LEVEL_ORANGE) feedback_inc("alert_comms_orange",1) - if(SEC_LEVEL_BLUE) - feedback_inc("alert_comms_blue",1) tmp_alertlevel = 0 state = STATE_DEFAULT diff --git a/code/game/objects/effects/chem/foam.dm b/code/game/objects/effects/chem/foam.dm index 97e8b2407c4..517c9efe8d6 100644 --- a/code/game/objects/effects/chem/foam.dm +++ b/code/game/objects/effects/chem/foam.dm @@ -74,6 +74,8 @@ /obj/effect/effect/foam/Crossed(var/atom/movable/AM) . = ..() + if(AM.is_incorporeal()) + return if(metal) return if(istype(AM, /mob/living)) diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm index 677b4f6cc52..2df4d08ac19 100644 --- a/code/game/objects/effects/decals/Cleanable/humans.dm +++ b/code/game/objects/effects/decals/Cleanable/humans.dm @@ -67,6 +67,8 @@ var/global/list/image/splatter_cache=list() /obj/effect/decal/cleanable/blood/Crossed(mob/living/carbon/human/perp) . = ..() + if(perp.is_incorporeal()) + return if (!istype(perp)) return if(amount < 1) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index bc4146033ec..3fda70575f4 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -180,6 +180,8 @@ steam.start() -- spawns the effect QDEL_IN(src, time_to_live) /obj/effect/effect/smoke/Crossed(mob/living/carbon/M as mob ) + if(M.is_incorporeal()) + return ..() if(istype(M)) affect(M) diff --git a/code/game/objects/effects/map_effects/portal.dm b/code/game/objects/effects/map_effects/portal.dm new file mode 100644 index 00000000000..9622f17f0db --- /dev/null +++ b/code/game/objects/effects/map_effects/portal.dm @@ -0,0 +1,349 @@ +GLOBAL_LIST_EMPTY(all_portal_masters) + +/* + +Portal map effects allow a mapper to join two distant places together, while looking somewhat seamlessly connected. +This can allow for very strange PoIs that twist and turn in what appear to be physically impossible ways. + +Portals do have some specific requirements when mapping them in; + - There must by one, and only one `/obj/effect/map_effect/portal/master` for each side of a portal. + - Both sides need to have matching `portal_id`s in order to link to each other. + - Each side must face opposite directions, e.g. if side A faces SOUTH, side B must face NORTH. + - Clarification on the above - you will be moved in the direction that the portal faces. + If Side A faces south, you will be moved south. Dirs are 1/2/4/8, 1: NORTH, 2: SOUTH, 4: EAST, 8: WEST. + To further explain: If your cave entrance is on the NORTH side of the map on ENTRY side, and SOUTH side on EXIT side: + You will need to set the ENTRY side's dir to 2, IE SOUTH, as that's the direction you will moving coming FROM the EXIT side. + IE: Directions should be set based on the direction of travel. + - Each side must have the same orientation, e.g. horizontal on both sides, or vertical on both sides. + - Portals can be made to be longer than 1x1 with `/obj/effect/map_effect/portal/line`s, + but both sides must have the same length. + - If portal lines are added, they must form a straight line and be next to a portal master or another portal line. + - If portal lines are used, both portal masters should be in the same relative position among the lines. + E.g. both being on the left most side on a horizontal row. + +Portals also have some limitations to be aware of when mapping. Some of these are not an issue if you're trying to make an 'obvious' portal; + - The objects seen through portals are purely visual, which has many implications, + such as simple_mob AIs being blind to mobs on the other side of portals. + - Objects on the other side of a portal can be interacted with if the interaction has no range limitation, + or the distance between the two portal sides happens to be less than the interaction max range. Examine will probably work, + while picking up an item that appears to be next to you will fail. + - Sounds currently are not carried across portals. + - Mismatched lighting between each portal end can make the portal look obvious. + - Portals look weird when observing as a ghost, or otherwise when able to see through walls. Meson vision will also spoil the illusion. + - Walls that change icons based on neightboring walls can give away that a portal is nearby if both sides don't have a similar transition. + - Projectiles that pass through portals will generally work as intended, however aiming and firing upon someone on the other side of a portal + will likely be weird due to the click targeting the real position of the thing clicked instead of the apparent position. + Thrown objects suffer a similar fate. + - The tiles that are visually shown across a portal are determined based on visibility at the time of portal initialization, + and currently don't update, meaning that opacity changes are not reflected, e.g. a wall is deconstructed, or an airlock is opened. + - There is currently a small but somewhat noticable pause in mob movement when moving across a portal, + as a result of the mob's glide animation being inturrupted by a teleport. + - Gas is not transferred through portals, and ZAS is oblivious to them. + +A lot of those limitations can potentially be solved with some more work. Otherwise, portals work best in static environments like Points of Interest, +when portals are shortly lived, or when portals are made to be obvious with special effects. +*/ + +/obj/effect/map_effect/portal + name = "portal subtype" + invisibility = 0 + opacity = TRUE + plane = TURF_PLANE + layer = ABOVE_TURF_LAYER + appearance_flags = PIXEL_SCALE|KEEP_TOGETHER // Removed TILE_BOUND so things not visible on the other side stay hidden from the viewer. + + var/obj/effect/map_effect/portal/counterpart = null // The portal line or master that this is connected to, on the 'other side'. + + // Information used to apply `pixel_[x|y]` offsets so that the visuals line up. + // Set automatically by `calculate_dimensions()`. + var/total_height = 0 // Measured in tiles. + var/total_width = 0 + + var/portal_distance_x = 0 // How far the portal is from the left edge, in tiles. + var/portal_distance_y = 0 // How far the portal is from the top edge. + +/obj/effect/map_effect/portal/Destroy() + vis_contents = null + if(counterpart) + counterpart.counterpart = null // Disconnect our counterpart from us + counterpart = null // Now disconnect us from them. + return ..() + +// Called when something touches the portal, and usually teleports them to the other side. +/obj/effect/map_effect/portal/Crossed(atom/movable/AM) + if(AM.is_incorporeal()) + return + ..() + if(!AM) + return + if(!counterpart) + return + + go_through_portal(AM) + + +/obj/effect/map_effect/portal/proc/go_through_portal(atom/movable/AM) + // TODO: Find a way to fake the glide or something. + if(isliving(AM)) + var/mob/living/L = AM + if(L.pulling) + var/atom/movable/pulled = L.pulling + L.stop_pulling() + // For some reason, trying to put the pulled object behind the person makes the drag stop and it doesn't even move to the other side. + // pulled.forceMove(get_turf(counterpart)) + pulled.forceMove(counterpart.get_focused_turf()) + L.forceMove(counterpart.get_focused_turf()) + L.start_pulling(pulled) + else + L.forceMove(counterpart.get_focused_turf()) + else + AM.forceMove(counterpart.get_focused_turf()) + +// 'Focused turf' is the turf directly in front of a portal, +// and it is used both as the destination when crossing, as well as the PoV for visuals. +/obj/effect/map_effect/portal/proc/get_focused_turf() + return get_step(get_turf(src), dir) + +// Determines the size of the block of turfs inside `vis_contents`, and where the portal is in relation to that. +/obj/effect/map_effect/portal/proc/calculate_dimensions() + var/highest_x = 0 + var/lowest_x = 0 + + var/highest_y = 0 + var/lowest_y = 0 + + // First pass is for finding the top right corner. + for(var/thing in vis_contents) + var/turf/T = thing + if(T.x > highest_x) + highest_x = T.x + if(T.y > highest_y) + highest_y = T.y + + lowest_x = highest_x + lowest_y = highest_y + + // Second one is for the bottom left corner. + for(var/thing in vis_contents) + var/turf/T = thing + if(T.x < lowest_x) + lowest_x = T.x + if(T.y < lowest_y) + lowest_y = T.y + + // Now calculate the dimensions. + total_width = (highest_x - lowest_x) + 1 + total_height = (highest_y - lowest_y) + 1 + + // Find how far the portal is from the edges. + var/turf/focused_T = counterpart.get_focused_turf() + portal_distance_x = lowest_x - focused_T.x + portal_distance_y = lowest_y - focused_T.y + + +// Portal masters manage everything else involving portals. +// This is the base type. Use `/side_a` or `/side_b` with matching IDs for actual portals. +/obj/effect/map_effect/portal/master + name = "portal master" + show_messages = TRUE // So portals can hear and see, and relay to the other side. + var/portal_id = "test" // For a portal to be made, both the A and B sides need to share the same ID value. + var/list/portal_lines = list() + +/obj/effect/map_effect/portal/master/Initialize() + GLOB.all_portal_masters += src + find_lines() + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/effect/map_effect/portal/master/LateInitialize() + find_counterparts() + make_visuals() + apply_offset() + +/obj/effect/map_effect/portal/master/Destroy() + GLOB.all_portal_masters -= src + for(var/thing in portal_lines) + qdel(thing) + return ..() + +/obj/effect/map_effect/portal/master/proc/find_lines() + var/list/dirs_to_search = list( turn(dir, 90), turn(dir, -90) ) + + for(var/dir_to_search in dirs_to_search) + var/turf/current_T = get_turf(src) + while(current_T) + current_T = get_step(current_T, dir_to_search) + var/obj/effect/map_effect/portal/line/line = locate() in current_T + if(line) + portal_lines += line + line.my_master = src + else + break + +// Connects both sides of a portal together. +/obj/effect/map_effect/portal/master/proc/find_counterparts() + for(var/thing in GLOB.all_portal_masters) + var/obj/effect/map_effect/portal/master/M = thing + if(M == src) + continue + if(M.counterpart) + continue + + if(M.portal_id == src.portal_id) + counterpart = M + M.counterpart = src + if(portal_lines.len) + for(var/i = 1 to portal_lines.len) + var/obj/effect/map_effect/portal/line/our_line = portal_lines[i] + var/obj/effect/map_effect/portal/line/their_line = M.portal_lines[i] + our_line.counterpart = their_line + their_line.counterpart = our_line + break + + if(!counterpart) + crash_with("Portal master [type] ([x],[y],[z]) could not find another portal master with a matching portal_id ([portal_id]).") + +/obj/effect/map_effect/portal/master/proc/make_visuals() + var/list/observed_turfs = list() + for(var/thing in portal_lines + src) + var/obj/effect/map_effect/portal/P = thing + P.name = null + P.icon_state = null + + if(!P.counterpart) + return + + var/turf/T = P.counterpart.get_focused_turf() + P.vis_contents += T + + var/list/things = dview(world.view, T) + for(var/turf/turf in things) + if(get_dir(turf, T) & P.dir) + if(turf in observed_turfs) // Avoid showing the same turf twice or more for improved performance. + continue + + P.vis_contents += turf + observed_turfs += turf + + P.calculate_dimensions() + +// Shifts the portal's pixels in order to line up properly, as BYOND offsets the sprite when it holds multiple turfs inside `vis_contents`. +// This undos the shift that BYOND did. +/obj/effect/map_effect/portal/master/proc/apply_offset() + for(var/thing in portal_lines + src) + var/obj/effect/map_effect/portal/P = thing + + P.pixel_x = WORLD_ICON_SIZE * P.portal_distance_x + P.pixel_y = WORLD_ICON_SIZE * P.portal_distance_y + +// Allows portals to transfer emotes. +// Only portal masters do this to avoid flooding the other side with duplicate messages. +/obj/effect/map_effect/portal/master/see_emote(mob/M, text) + if(!counterpart) + return + var/turf/T = counterpart.get_focused_turf() + var/list/in_range = get_mobs_and_objs_in_view_fast(T, world.view, 0) + var/list/mobs_to_relay = in_range["mobs"] + + for(var/thing in mobs_to_relay) + var/mob/mob = thing + var/rendered = "[text]" + mob.show_message(rendered) + + ..() + +// Allows portals to transfer visible messages. +/obj/effect/map_effect/portal/master/show_message(msg, type, alt, alt_type) + if(!counterpart) + return + var/rendered = "[msg]" + var/turf/T = counterpart.get_focused_turf() + var/list/in_range = get_mobs_and_objs_in_view_fast(T, world.view, 0) + var/list/mobs_to_relay = in_range["mobs"] + + for(var/thing in mobs_to_relay) + var/mob/mob = thing + mob.show_message(rendered) + + ..() + +// Allows portals to transfer speech. +/obj/effect/map_effect/portal/master/hear_talk(mob/living/M, list/message_pieces, verb) + if(!counterpart) + return + var/turf/T = counterpart.get_focused_turf() + var/list/in_range = get_mobs_and_objs_in_view_fast(T, world.view, 0) + var/list/mobs_to_relay = in_range["mobs"] + + for(var/thing in mobs_to_relay) + var/mob/mob = thing + var/message = "" + var/name_used = M.GetVoice() + var/rendered = null + rendered = "[name_used] [message]" + mob.show_message(rendered, 2) + + ..() + +// Returns the position that an atom that's hopefully on the other side of the portal would be if it were really there. +// Z levels not taken into account. +/obj/effect/map_effect/portal/master/proc/get_apparent_position(atom/A) + if(!counterpart) + return null + + var/turf/true_turf = get_turf(A) + var/obj/effect/map_effect/portal/master/other_master = counterpart + + var/in_vis_contents = FALSE + for(var/thing in other_master.portal_lines + other_master) + var/obj/effect/map_effect/portal/P = thing + if(P in true_turf.vis_locs) + in_vis_contents = TRUE + break + + if(!in_vis_contents) + return null // Not in vision of the other portal. + + var/turf/their_focus = counterpart.get_focused_turf() + var/turf/our_focus = get_focused_turf() + + var/relative_x = (true_turf.x - our_focus.x) + relative_x += SIGN(relative_x) + var/relative_y = (true_turf.y - our_focus.y) + relative_y += SIGN(relative_y) + + return new /datum/position(their_focus.x + relative_x, their_focus.y + relative_y, our_focus.z) + + +/obj/effect/map_effect/portal/master/side_a + name = "portal master A" + icon_state = "portal_side_a" +// color = "#00FF00" + +/obj/effect/map_effect/portal/master/side_b + name = "portal master B" + icon_state = "portal_side_b" +// color = "#FF0000" + + + +// Portal lines extend out from the sides of portal masters, +// They let portals be longer than 1x1. +// Both sides MUST be the same length, meaning if side A is 1x3, side B must also be 1x3. +/obj/effect/map_effect/portal/line + name = "portal line" + var/obj/effect/map_effect/portal/master/my_master = null + +/obj/effect/map_effect/portal/line/Destroy() + if(my_master) + my_master.portal_lines -= src + my_master = null + return ..() + +/obj/effect/map_effect/portal/line/side_a + name = "portal line A" + icon_state = "portal_line_side_a" + +/obj/effect/map_effect/portal/line/side_b + name = "portal line B" + icon_state = "portal_line_side_b" \ No newline at end of file diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 88fa92e71c6..43ea6e4f71c 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -36,8 +36,10 @@ explode() ..() -/obj/effect/mine/Crossed(AM as mob|obj) +/obj/effect/mine/Crossed(atom/movable/AM as mob|obj) . = ..() + if(AM.is_incorporeal()) + return Bumped(AM) /obj/effect/mine/Bumped(mob/M as mob|obj) diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index da2ec1960b6..c262ed69ded 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -12,7 +12,9 @@ /obj/effect/step_trigger/proc/Trigger(var/atom/movable/A) return 0 -/obj/effect/step_trigger/Crossed(H as mob|obj) +/obj/effect/step_trigger/Crossed(atom/movable/H as mob|obj) + if(H.is_incorporeal()) + return ..() if(!H) return diff --git a/code/game/objects/items/contraband.dm b/code/game/objects/items/contraband.dm index 36eab392b8e..08669c76a52 100644 --- a/code/game/objects/items/contraband.dm +++ b/code/game/objects/items/contraband.dm @@ -209,3 +209,12 @@ new loot(usr.drop_location()) to_chat(user, "You unwrap the package.") qdel(src) + +//Ported from Main. + +/obj/item/skub + name = "skub" + desc = "A standard jar of skub." + icon = 'icons/obj/items.dmi' + icon_state = "skub" + attack_verb = list("skubbed") diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 45787e0cbf4..753d8d9bcfe 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -1483,8 +1483,10 @@ GLOBAL_LIST_EMPTY(PDAs) QDEL_NULL(src.pai) return ..() -/obj/item/pda/clown/Crossed(AM as mob|obj) //Clown PDA is slippery. +/obj/item/pda/clown/Crossed(atom/movable/AM as mob|obj) //Clown PDA is slippery. . = ..() + if(AM.is_incorporeal()) + return if (istype(AM, /mob/living)) var/mob/living/M = AM diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index c5fbbf60a61..1ce65d17107 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -320,8 +320,10 @@ playsound(src, 'sound/effects/snap.ogg', 50, 1) qdel(src) -/obj/item/toy/snappop/Crossed(H as mob|obj) +/obj/item/toy/snappop/Crossed(atom/movable/H as mob|obj) . = ..() + if(H.is_incorporeal()) + return if((ishuman(H))) //i guess carp and shit shouldn't set them off var/mob/living/carbon/M = H if(M.m_intent == "run") diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm index 27aff2ff709..697cf6720c3 100644 --- a/code/game/objects/items/weapons/clown_items.dm +++ b/code/game/objects/items/weapons/clown_items.dm @@ -8,8 +8,10 @@ /* * Banana Peals */ -/obj/item/bananapeel/Crossed(AM as mob|obj) +/obj/item/bananapeel/Crossed(atom/movable/AM as mob|obj) . = ..() + if(AM.is_incorporeal()) + return if (istype(AM, /mob/living)) var/mob/living/M = AM M.slip("the [src.name]",4) @@ -24,10 +26,12 @@ /obj/item/soap/proc/wet() reagents.add_reagent("cleaner", 5) -/obj/item/soap/Crossed(AM as mob|obj) +/obj/item/soap/Crossed(atom/movable/AM as mob|obj) . = ..() - if (istype(AM, /mob/living)) - var/mob/living/M = AM + if(AM.is_incorporeal()) + return + if(istype(AM, /mob/living)) + var/mob/living/M = AM M.slip("the [src.name]",3) /obj/item/soap/pre_attack(atom/target, mob/user as mob) diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm index d3e8167e166..ad76f432442 100644 --- a/code/game/objects/items/weapons/material/shards.dm +++ b/code/game/objects/items/weapons/material/shards.dm @@ -106,8 +106,10 @@ qdel(src) return -/obj/item/material/shard/Crossed(AM as mob|obj) +/obj/item/material/shard/Crossed(atom/movable/AM as mob|obj) ..() + if(AM.is_incorporeal()) + return if(isliving(AM)) var/mob/M = AM diff --git a/code/game/objects/items/weapons/traps.dm b/code/game/objects/items/weapons/traps.dm index c70be19f05f..47087acbb4e 100644 --- a/code/game/objects/items/weapons/traps.dm +++ b/code/game/objects/items/weapons/traps.dm @@ -128,7 +128,9 @@ deployed = 0 can_buckle = initial(can_buckle) -/obj/item/beartrap/Crossed(AM as mob|obj) +/obj/item/beartrap/Crossed(atom/movable/AM as mob|obj) + if(AM.is_incorporeal()) + return if(deployed && isliving(AM)) var/mob/living/L = AM if(L.m_intent == "run") diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm index ddb5000cd30..e6d838703ec 100644 --- a/code/game/objects/structures/catwalk.dm +++ b/code/game/objects/structures/catwalk.dm @@ -88,7 +88,7 @@ /obj/structure/catwalk/Crossed() . = ..() - if(isliving(usr)) + if(isliving(usr) && !usr.is_incorporeal()) playsound(src, pick('sound/effects/footstep/catwalk1.ogg', 'sound/effects/footstep/catwalk2.ogg', 'sound/effects/footstep/catwalk3.ogg', 'sound/effects/footstep/catwalk4.ogg', 'sound/effects/footstep/catwalk5.ogg'), 25, 1) /obj/structure/catwalk/CheckExit(atom/movable/O, turf/target) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index c77bacd84eb..273b0b98993 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -1130,3 +1130,10 @@ var/list/admin_verbs_event_manager = list( var/datum/browser/popup = new(src, "event_volunteers", "Event Volunteers (In game)", 800, 1200) popup.set_content(dat.Join("")) popup.open() + +/client/verb/stop_client_sounds() + set name = "Stop Sounds" + set category = "Preferences" + set desc = "Stop Current Sounds" + usr << sound(null) + usr.client?.tgui_panel?.stop_music() diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 181a5bea11c..5465b0fd191 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -62,10 +62,6 @@ "SELECT /mob WHERE client MAP client WHERE holder MAP holder" - You can also generate a new list on the fly using a selector array. @[] will generate a list of objects based off the selector provided. - - "SELECT /mob/living IN (@[/area/crew_quarters/bar MAP contents])[1]" - What if some dumbass admin spawned a bajillion spiders and you need to kill them all? Oh yeah you'd rather not delete all the spiders in maintenace. Only that one room the spiders were spawned in. @@ -100,6 +96,10 @@ Don't crash the server, OK? + "UPDATE /mob/living/carbon/monkey SET #null = forceMove(usr.loc)" + + Writing "#null" in front of the "=" will call the proc and discard the return value. + A quick recommendation: before you run something like a DELETE or another query.. Run it through SELECT first. You'd rather not gib every player on accident. @@ -159,7 +159,6 @@ SELECT = FORCE_NULLS, (D)SKIP_NULLS PRIORITY = HIGH, (D) NORMAL AUTOGC = (D) AUTOGC, KEEP_ALIVE - SEQUENTIAL = TRUE - The queries in this batch will be executed sequentially one by one not in parallel Example: USING PROCCALL = BLOCKING, SELECT = FORCE_NULLS, PRIORITY = HIGH SELECT /mob FROM world WHERE z == 1 @@ -174,14 +173,13 @@ #define SDQL2_STATE_SWITCHING 5 #define SDQL2_STATE_HALTING 6 -#define SDQL2_VALID_OPTION_TYPES list("proccall", "select", "priority", "autogc" , "sequential") -#define SDQL2_VALID_OPTION_VALUES list("async", "blocking", "force_nulls", "skip_nulls", "high", "normal", "keep_alive" , "true") +#define SDQL2_VALID_OPTION_TYPES list("proccall", "select", "priority", "autogc") +#define SDQL2_VALID_OPTION_VALUES list("async", "blocking", "force_nulls", "skip_nulls", "high", "normal", "keep_alive") #define SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS (1<<0) #define SDQL2_OPTION_BLOCKING_CALLS (1<<1) #define SDQL2_OPTION_HIGH_PRIORITY (1<<2) //High priority SDQL query, allow using almost all of the tick. #define SDQL2_OPTION_DO_NOT_AUTOGC (1<<3) -#define SDQL2_OPTION_SEQUENTIAL (1<<4) #define SDQL2_OPTIONS_DEFAULT (SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS) @@ -217,7 +215,6 @@ NOTICE(query_log) var/start_time_total = REALTIMEOFDAY - var/sequential = FALSE if(!length(query_text)) return @@ -228,35 +225,18 @@ if(!length(querys)) return var/list/datum/SDQL2_query/running = list() - var/list/datum/SDQL2_query/waiting_queue = list() //Sequential queries queue. - for(var/list/query_tree in querys) var/datum/SDQL2_query/query = new /datum/SDQL2_query(query_tree) if(QDELETED(query)) continue if(usr) query.show_next_to_key = usr.ckey - waiting_queue += query - if(query.options & SDQL2_OPTION_SEQUENTIAL) - sequential = TRUE - - if(sequential) //Start first one - var/datum/SDQL2_query/query = popleft(waiting_queue) running += query var/msg = "Starting query #[query.id] - [query.get_query_text()]." if(usr) to_chat(usr, "[msg]") log_admin(msg) query.ARun() - else //Start all - for(var/datum/SDQL2_query/query in waiting_queue) - running += query - var/msg = "Starting query #[query.id] - [query.get_query_text()]." - if(usr) - to_chat(usr, "[msg]") - log_admin(msg) - query.ARun() - var/finished = FALSE var/objs_all = 0 var/objs_eligible = 0 @@ -272,10 +252,10 @@ continue else if(query.state != SDQL2_STATE_IDLE) finished = FALSE - if(query.state == SDQL2_STATE_ERROR) - if(usr) - to_chat(usr, "SDQL query [query.get_query_text()] errored. It will NOT be automatically garbage collected. Please remove manually.") - running -= query + else if(query.state == SDQL2_STATE_ERROR) + if(usr) + to_chat(usr, "SDQL query [query.get_query_text()] errored. It will NOT be automatically garbage collected. Please remove manually.") + running -= query else if(query.finished) objs_all += islist(query.obj_count_all)? length(query.obj_count_all) : query.obj_count_all @@ -285,15 +265,6 @@ running -= query if(!CHECK_BITFIELD(query.options, SDQL2_OPTION_DO_NOT_AUTOGC)) QDEL_IN(query, 50) - if(sequential && waiting_queue.len) - finished = FALSE - var/datum/SDQL2_query/next_query = popleft(waiting_queue) - running += next_query - var/msg = "Starting query #[next_query.id] - [next_query.get_query_text()]." - if(usr) - to_chat(usr, "[msg]") - log_admin(msg) - next_query.ARun() else if(usr) to_chat(usr, "SDQL query [query.get_query_text()] was halted. It will NOT be automatically garbage collected. Please remove manually.") @@ -331,8 +302,8 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null var/list/select_text //Runtime tracked //These three are weird. For best performance, they are only a number when they're not being changed by the SDQL searching/execution code. They only become numbers when they finish changing. - var/obj_count_all - var/obj_count_eligible + var/list/obj_count_all + var/list/obj_count_eligible var/obj_count_finished //Statclick @@ -483,10 +454,6 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null switch(value) if("keep_alive") ENABLE_BITFIELD(options, SDQL2_OPTION_DO_NOT_AUTOGC) - if("sequential") - switch(value) - if("true") - ENABLE_BITFIELD(options,SDQL2_OPTION_SEQUENTIAL) /datum/SDQL2_query/proc/ARun() INVOKE_ASYNC(src, .proc/Run) @@ -532,7 +499,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null if(length(select_text)) var/text = islist(select_text)? select_text.Join() : select_text var/static/result_offset = 0 - showmob << browse(text, "window=SDQL-result-[result_offset++]") + showmob << browse(text, "window=SDQL-result-[result_offset++];size=800x1200") show_next_to_key = null if(qdel_on_finish) qdel(src) @@ -698,7 +665,10 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null var/list/text_list = list() var/print_nulls = !(options & SDQL2_OPTION_SELECT_OUTPUT_SKIP_NULLS) obj_count_finished = select_refs + var/n = 0 for(var/i in found) + if(++n == 2500) + text_list += "
TRUNCATED - 2500 OBJECT LIMIT HIT" SDQL_print(i, text_list, print_nulls) select_refs[REF(i)] = TRUE SDQL2_TICK_CHECK @@ -719,7 +689,6 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null obj_count_finished = length(obj_count_finished) state = SDQL2_STATE_SWITCHING - /** * Recursively prints out an object to text list for SDQL2 output to admins, with VV links and all. * Recursion limit: 50 @@ -804,12 +773,15 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null var/datum/temp = d var/i = 0 for(var/v in sets) + if(v == "#null") + SDQL_expression(d, set_list[sets]) + break if(++i == sets.len) if(superuser) if(temp.vars.Find(v)) temp.vars[v] = SDQL_expression(d, set_list[sets]) else - temp.vv_edit_var(v, SDQL_expression(d, set_list[sets])) + temp.vv_edit_var(v, SDQL_expression(d, set_list[sets]), TRUE) break if(temp.vars.Find(v) && (istype(temp.vars[v], /datum) || istype(temp.vars[v], /client))) temp = temp.vars[v] @@ -925,8 +897,8 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null else if(ispath(expression[i])) val = expression[i] - else if(copytext(expression[i], 1, 2) in list("'", "\"")) - val = copytext(expression[i], 2, length(expression[i])) + else if(expression[i][1] in list("'", "\"")) + val = copytext_char(expression[i], 2, -1) else if(expression[i] == "\[") var/list/expressions_list = expression[++i] @@ -937,25 +909,10 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null if(expressions_list[expression_list] != null) assoc = SDQL_expression(object, expressions_list[expression_list]) if(assoc != null) + // Need to insert the key like this to prevent duplicate keys fucking up. val[result] = assoc else - val += list(assoc) // += list(list()) byond memes - - else if(expression[i] == "@\[") - var/list/search_tree = expression[++i] - var/already_searching = (state == SDQL2_STATE_SEARCHING) //In case we nest, don't want to break out of the searching state until we're all done. - - if(!already_searching) - state = SDQL2_STATE_SEARCHING - - val = Search(search_tree) - SDQL2_STAGE_SWITCH_CHECK - - if(!already_searching) - state = SDQL2_STATE_EXECUTING - else - state = SDQL2_STATE_SEARCHING - + val += list(result) else val = world.SDQL_var(object, expression, i, object, superuser, src) i = expression.len @@ -1031,11 +988,11 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null if(is_object_datatype(object)) D = object - if (object == world && (!long || expression[start + 1] == ".") && !(expression[start] in exclude)) + if (object == world && (!long || expression[start + 1] == ".") && !(expression[start] in exclude)) //3 == length("SS") + 1 to_chat(usr, "World variables are not allowed to be accessed. Use global.") return null - else if(expression [start] == "{" && long) + else if(expression [start] == "{" && long) //3 == length("0x") + 1 if(lowertext(copytext(expression[start + 1], 1, 3)) != "0x") to_chat(usr, "Invalid pointer syntax: [expression[start + 1]]") return null @@ -1045,10 +1002,6 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null return null start++ long = start < expression.len - else if(expression[start] == "(" && long) - v = query.SDQL_expression(source, expression[start + 1]) - start++ - long = start < expression.len else if(D != null && (!long || expression[start + 1] == ".") && (expression[start] in D.vars)) if(D.can_vv_get(expression[start]) || superuser) v = D.vars[expression[start]] @@ -1091,8 +1044,8 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null v = SSprojectiles if("SSfastprocess") v = SSfastprocess - if("SSSSticker") - v = SSSSticker + if("SSticker") + v = SSticker if("SStimer") v = SStimer if("SSradiation") @@ -1101,8 +1054,6 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null v = SSnpcpool if("SSmobs") v = SSmobs - if("SSmood") - v = SSmood if("SSquirks") v = SSquirks if("SSwet_floors") @@ -1113,8 +1064,6 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null v = SSmapping if("SSevents") v = SSevents - if("SSeconomy") - v = SSeconomy //End */ else @@ -1143,15 +1092,15 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null "=" = list("", "="), "<" = list("", "=", ">"), ">" = list("", "="), - "!" = list("", "="), - "@" = list("\[")) + "!" = list("", "=")) var/word = "" var/list/query_list = list() var/len = length(query_text) + var/char = "" - for(var/i = 1, i <= len, i++) - var/char = copytext(query_text, i, i + 1) + for(var/i = 1, i <= len, i += length(char)) + char = query_text[i] if(char in whitespace) if(word != "") @@ -1170,7 +1119,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null query_list += word word = "" - var/char2 = copytext(query_text, i + 1, i + 2) + var/char2 = query_text[i + length(char)] if(char2 in multi[char]) query_list += "[char][char2]" @@ -1186,13 +1135,13 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null word = "'" - for(i++, i <= len, i++) - char = copytext(query_text, i, i + 1) + for(i += length(char), i <= len, i += length(char)) + char = query_text[i] if(char == "'") - if(copytext(query_text, i + 1, i + 2) == "'") + if(query_text[i + length(char)] == "'") word += "'" - i++ + i += length(query_text[i + length(char)]) else break @@ -1214,13 +1163,13 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null word = "\"" - for(i++, i <= len, i++) - char = copytext(query_text, i, i + 1) + for(i += length(char), i <= len, i += length(char)) + char = query_text[i] if(char == "\"") - if(copytext(query_text, i + 1, i + 2) == "'") + if(query_text[i + length(char)] == "'") word += "\"" - i++ + i += length(query_text[i + length(char)]) else break @@ -1243,15 +1192,27 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null return query_list /obj/effect/statclick/SDQL2_delete/Click() + if(!usr.client?.holder) + message_admins("[key_name_admin(usr)] non-holder clicked on a statclick! ([src])") + log_game("[key_name(usr)] non-holder clicked on a statclick! ([src])") + return var/datum/SDQL2_query/Q = target Q.delete_click() /obj/effect/statclick/SDQL2_action/Click() + if(!usr.client?.holder) + message_admins("[key_name_admin(usr)] non-holder clicked on a statclick! ([src])") + log_game("[key_name(usr)] non-holder clicked on a statclick! ([src])") + return var/datum/SDQL2_query/Q = target Q.action_click() /obj/effect/statclick/SDQL2_VV_all name = "VIEW VARIABLES" -/obj/effect/statclick/SDQL2_VV_all/Click() +/obj/effect/statclick/sdql2_vv_all/Click() + if(!usr.client?.holder) + message_admins("[key_name_admin(usr)] non-holder clicked on a statclick! ([src])") + log_game("[key_name(usr)] non-holder clicked on a statclick! ([src])") + return usr.client.debug_variables(GLOB.sdql2_queries) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm index 4c48bbccde0..64d0c00010f 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_parser.dm @@ -19,28 +19,24 @@ // // from_item : 'world' | expression // -// call_function : '(' [expression_list] ')' +// call_function : '(' [arguments] ')' +// arguments : expression [',' arguments] // // object_type : // // assignments : assignment [',' assignments] // assignment : '=' expression -// variable : | variable '.' variable | variable '[' ']' | '{' '}' | '(' expression ')' | call_function +// variable : | '.' variable | '[' ']' | '[' ']' '.' variable // // bool_expression : expression comparitor expression [bool_operator bool_expression] // expression : ( unary_expression | '(' expression ')' | value ) [binary_operator expression] -// expression_list : expression [',' expression_list] -// unary_expression : unary_operator ( unary_expression | value ) -// +// unary_expression : unary_operator ( unary_expression | value | '(' expression ')' ) // comparitor : '=' | '==' | '!=' | '<>' | '<' | '<=' | '>' | '>=' -// value : variable | string | number | 'null' | object_type | array | selectors_array +// value : variable | string | number | 'null' | object_type // unary_operator : '!' | '-' | '~' // binary_operator : comparitor | '+' | '-' | '/' | '*' | '&' | '|' | '^' | '%' // bool_operator : 'AND' | '&&' | 'OR' | '||' // -// array : '[' expression_list ']' -// selectors_array : '@[' object_selectors ']' -// // string : ''' ''' | '"' '"' // number : // @@ -260,7 +256,7 @@ node += "*" i++ - else if (copytext(token(i), 1, 2) == "/") + else if(token(i)[1] == "/") i = object_type(i, node) else @@ -340,7 +336,7 @@ return i -//variable: | variable '.' variable | variable '[' ']' | '{' '}' | '(' expression ')' | call_function +//variable: | '.' variable | '[' ']' | '[' ']' '.' variable /datum/SDQL_parser/proc/variable(i, list/node) var/list/L = list(token(i)) node[++node.len] = L @@ -352,16 +348,6 @@ if(token(i) != "}") parse_error("Missing } at end of pointer.") - else if(token(i) == "(") // not a proc but an expression - var/list/sub_expression = list() - - i = expression(i + 1, sub_expression) - - if(token(i) != ")") - parse_error("Missing ) at end of expression.") - - L[++L.len] = sub_expression - if(token(i + 1) == ".") L += "." i = variable(i + 2, L) @@ -391,7 +377,7 @@ //object_type: /datum/SDQL_parser/proc/object_type(i, list/node) - if (copytext(token(i), 1, 2) != "/") + if(token(i)[1] != "/") return parse_error("Expected type, but it didn't begin with /") var/path = text2path(token(i)) @@ -430,7 +416,7 @@ //string: ''' ''' | '"' '"' /datum/SDQL_parser/proc/string(i, list/node) - if(copytext(token(i), 1, 2) in list("'", "\"")) + if(token(i)[1] in list("'", "\"")) node += token(i) else @@ -438,10 +424,10 @@ return i + 1 -//array: '[' expression_list ']' +//array: '[' expression, expression, ... ']' /datum/SDQL_parser/proc/array(var/i, var/list/node) // Arrays get turned into this: list("[", list(exp_1a = exp_1b, ...), ...), "[" is to mark the next node as an array. - if(copytext(token(i), 1, 2) != "\[") + if(token(i)[1] != "\[") parse_error("Expected an array but found '[token(i)]'") return i + 1 @@ -482,13 +468,18 @@ temp_expression_list = list() i = expression(i, temp_expression_list) -#if MIN_COMPILER_VERSION > 512 -#warn Remove this outdated workaround -#elif DM_BUILD < 1467 - // http://www.byond.com/forum/post/2445083 - var/dummy = src.type - dummy = dummy -#endif + // Ok, what the fuck BYOND? + // Not having these lines here causes the parser to die + // on an error saying that list/token() doesn't exist as a proc. + // These lines prevent that. + // I assume the compiler/VM is shitting itself and swapping out some variables internally? + // While throwing in debug logging it disappeared + // And these 3 lines prevent it from happening while being quiet. + // So.. it works. + // Don't touch it. + var/whatthefuck = i + whatthefuck = src.type + whatthefuck = whatthefuck while(token(i) && token(i) != "]") @@ -499,23 +490,6 @@ return i + 1 -//selectors_array: '@[' object_selectors ']' -/datum/SDQL_parser/proc/selectors_array(var/i, var/list/node) - if(token(i) == "@\[") - node += token(i++) - if(token(i) != "]") - var/list/select = list() - i = object_selectors(i, select) - node[++node.len] = select - if(token(i) != "]") - parse_error("Expected ']' to close selector array, but found '[token(i)]'") - else - parse_error("Selector array expected a selector, but found nothing") - else - parse_error("Expected '@\[' but found '[token(i)]'") - - return i + 1 - //call_function: ['(' [arguments] ')'] /datum/SDQL_parser/proc/call_function(i, list/node, list/arguments) if(length(tokenl(i))) @@ -546,12 +520,25 @@ return i + 1 -//expression: ( unary_expression | value ) [binary_operator expression] +//expression: ( unary_expression | '(' expression ')' | value ) [binary_operator expression] /datum/SDQL_parser/proc/expression(i, list/node) if(token(i) in unary_operators) i = unary_expression(i, node) + else if(token(i) == "(") + var/list/expr = list() + + i = expression(i + 1, expr) + + if(token(i) != ")") + parse_error("Missing ) at end of expression.") + + else + i++ + + node[++node.len] = expr + else i = value(i, node) @@ -571,7 +558,7 @@ return i -//unary_expression: unary_operator ( unary_expression | value ) +//unary_expression: unary_operator ( unary_expression | value | '(' expression ')' ) /datum/SDQL_parser/proc/unary_expression(i, list/node) if(token(i) in unary_operators) @@ -583,6 +570,19 @@ if(token(i) in unary_operators) i = unary_expression(i, unary_exp) + else if(token(i) == "(") + var/list/expr = list() + + i = expression(i + 1, expr) + + if(token(i) != ")") + parse_error("Missing ) at end of expression.") + + else + i++ + + unary_exp[++unary_exp.len] = expr + else i = value(i, unary_exp) @@ -607,13 +607,13 @@ return i + 1 -//value: variable | string | number | 'null' | object_type | array | selectors_array +//value: variable | string | number | 'null' | object_type /datum/SDQL_parser/proc/value(i, list/node) if(token(i) == "null") node += "null" i++ - else if(lowertext(copytext(token(i), 1, 3)) == "0x" && isnum(hex2num(copytext(token(i), 3)))) + else if(lowertext(copytext(token(i), 1, 3)) == "0x" && isnum(hex2num(copytext(token(i), 3))))//3 == length("0x") + 1 node += hex2num(copytext(token(i), 3)) i++ @@ -621,18 +621,13 @@ node += text2num(token(i)) i++ - else if(copytext(token(i), 1, 2) in list("'", "\"")) + else if(token(i)[1] in list("'", "\"")) i = string(i, node) - else if(copytext(token(i), 1, 2) == "\[") // Start a list. + else if(token(i)[1] == "\[") // Start a list. i = array(i, node) - - else if(copytext(token(i), 1, 3) == "@\[") - i = selectors_array(i, node) - - else if(copytext(token(i), 1, 2) == "/") + else if(token(i)[1] == "/") i = object_type(i, node) - else i = variable(i, node) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm index 31b6fa0183d..c6a15f63cec 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2_wrappers.dm @@ -184,6 +184,9 @@ /proc/_list_swap(list/L, Index1, Index2) L.Swap(Index1, Index2) +/proc/_list_get(list/L, index) + return L[index] + /proc/_walk(ref, dir, lag) walk(ref, dir, lag) @@ -216,10 +219,28 @@ /proc/_has_trait(datum/thing,trait) return HAS_TRAIT(thing,trait) +/proc/_instantiate_at(thing, location) + new thing(location) + +/// Locating turfs +/proc/_turf_in_offset(s = usr, x = 0, y = 0, z = 0) + var/turf/T = get_turf(s) + return locate(clamp(T.x + x, 1, world.maxx), clamp(T.y + y, 1, world.maxy), clamp(T.z + z, 1, world.maxz)) /proc/_add_trait(datum/thing,trait,source) ADD_TRAIT(thing,trait,source) +/proc/_random_turf_in_range(s = usr, r = 7) + return _turf_in_offset(s, rand(-r, r), rand(-r, r)) /proc/_remove_trait(datum/thing,trait,source) REMOVE_TRAIT(thing,trait,source) +/proc/_random_turf_in_view(s = usr, r = 7) + var/list/v = view(s, r) + . = list() + for(var/turf/T in v) + . += T + return pick(.) +/proc/__nan() + var/list/L = json_decode("{\"value\":NaN}") + return L["value"] diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 545579aecd2..93f17a78ad9 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -605,15 +605,14 @@ Traitors and the like can also be revived with the previous role mostly intact. message_admins("[key_name_admin(src)] has created a command report", 1) feedback_add_details("admin_verb","CCR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/proc/cmd_admin_delete(atom/O as obj|mob|turf in view()) +/client/proc/cmd_admin_delete(atom/A as obj|mob|turf in world) set category = "Admin" set name = "Delete" - if (!holder) - to_chat(src, "Only administrators may use this command.") + if(!check_rights(R_SPAWN|R_DEBUG|R_ADMIN)) return - admin_delete(O) + admin_delete(A) /client/proc/cmd_admin_list_open_jobs() set category = "Admin" diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 0f50ffe1677..be3af9123a1 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -105,6 +105,8 @@ /obj/item/assembly_holder/Crossed(atom/movable/AM) . = ..() + if(AM.is_incorporeal()) + return if(a_left) a_left.Crossed(AM) if(a_right) diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm index a1235b6d69d..747a01606a8 100644 --- a/code/modules/assembly/infrared.dm +++ b/code/modules/assembly/infrared.dm @@ -242,7 +242,8 @@ return /obj/effect/beam/i_beam/Crossed(atom/movable/AM) - . = ..() + if(AM.is_incorporeal()) + return if(istype(AM, /obj/effect/beam)) return hit() diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm index 18126afa9b9..3dc63fd2b43 100644 --- a/code/modules/assembly/mousetrap.dm +++ b/code/modules/assembly/mousetrap.dm @@ -82,7 +82,9 @@ ..() -/obj/item/assembly/mousetrap/Crossed(AM as mob|obj) +/obj/item/assembly/mousetrap/Crossed(atom/movable/AM as mob|obj) + if(AM.is_incorporeal()) + return if(armed) if(ishuman(AM)) var/mob/living/carbon/H = AM diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm index 370cfd10e17..77f96ac24f7 100644 --- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm +++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm @@ -38,7 +38,48 @@ /datum/gear_tweak/color/tweak_item(var/obj/item/I, var/metadata) if(valid_colors && !(metadata in valid_colors)) return - I.color = metadata + if(!metadata || (metadata == "#ffffff")) + return + if(istype(I)) + I.add_atom_colour(metadata, FIXED_COLOUR_PRIORITY) + else + I.color = metadata // fuck off underwear + +GLOBAL_DATUM_INIT(gear_tweak_free_matrix_recolor, /datum/gear_tweak/matrix_recolor, new) + +/datum/gear_tweak/matrix_recolor + +/datum/gear_tweak/matrix_recolor/get_contents(var/metadata) + if(islist(metadata) && length(metadata)) + return "Matrix Recolor: [english_list(metadata)]" + return "Matrix Recolor" + +/datum/gear_tweak/matrix_recolor/get_default() + return null + +/datum/gear_tweak/matrix_recolor/get_metadata(user, metadata) + var/list/returned = color_matrix_picker(user, "Pick a color matrix for this item", "Matrix Recolor", "Ok", "Erase", "Cancel", TRUE, 10 MINUTES, islist(metadata) && metadata) + var/list/L = returned["matrix"] + if(returned["button"] == 3) + return metadata + if((returned["button"] == 2) || !islist(L) || !ISINRANGE(L.len, 9, 20)) + return list() + var/identity = TRUE + var/static/list/ones = list(1, 5, 9) + for(var/i in 1 to L.len) + if(L[i] != ((i in ones)? 1 : 0)) + identity = FALSE + break + return identity? list() : L + +/datum/gear_tweak/matrix_recolor/tweak_item(obj/item/I, metadata) + . = ..() + if(!islist(metadata) || (length(metadata) < 12)) + return + if(istype(I)) + I.add_atom_colour(metadata, FIXED_COLOUR_PRIORITY) + else + I.color = metadata // fuck off underwear /* * Path adjustment @@ -522,4 +563,4 @@ var/datum/gear_tweak/custom_desc/gear_tweak_free_desc = new() if(metadata == "") return ..() else - C.initialize_tag(metadata) \ No newline at end of file + C.initialize_tag(metadata) diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm index 8f56afd595d..4adec66286a 100644 --- a/code/modules/client/preference_setup/loadout/loadout.dm +++ b/code/modules/client/preference_setup/loadout/loadout.dm @@ -26,7 +26,7 @@ var/list/gear_datums = list() if(!description) var/obj/O = path description = initial(O.desc) - gear_tweaks = list(gear_tweak_free_name, gear_tweak_free_desc) + gear_tweaks = list(gear_tweak_free_name, gear_tweak_free_desc, GLOB.gear_tweak_free_matrix_recolor) /datum/gear_data var/path diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes.dm b/code/modules/client/preference_setup/loadout/loadout_eyes.dm index 63ac024d5a5..3b79b9b9bfc 100644 --- a/code/modules/client/preference_setup/loadout/loadout_eyes.dm +++ b/code/modules/client/preference_setup/loadout/loadout_eyes.dm @@ -51,18 +51,22 @@ /datum/gear/eyes/security/prescriptionsec display_name = "Security - Security HUD - Prescription" path = /obj/item/clothing/glasses/hud/security/prescription + allowed_roles = list("Security Officer","Head of Security","Warden", "Detective") /datum/gear/eyes/security/sunglasshud display_name = "Security - Security HUD - Sunglasses" path = /obj/item/clothing/glasses/sunglasses/sechud + allowed_roles = list("Security Officer","Head of Security","Warden", "Detective") /datum/gear/eyes/security/aviator display_name = "Security - Security HUD - Aviators" path = /obj/item/clothing/glasses/sunglasses/sechud/aviator + allowed_roles = list("Security Officer","Head of Security","Warden", "Detective") /datum/gear/eyes/security/aviator/prescription display_name = "Security - Security HUD - Aviators - Prescription" path = /obj/item/clothing/glasses/sunglasses/sechud/aviator/prescription + allowed_roles = list("Security Officer","Head of Security","Warden", "Detective") /datum/gear/eyes/medical display_name = "Medical - Medical HUD" @@ -72,14 +76,17 @@ /datum/gear/eyes/medical/prescriptionmed display_name = "Medical - Medical HUD - Prescription" path = /obj/item/clothing/glasses/hud/health/prescription + allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist", "Field Medic") /datum/gear/eyes/medical/aviator display_name = "Medical - Medical HUD - Aviators" path = /obj/item/clothing/glasses/hud/health/aviator + allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist", "Field Medic") /datum/gear/eyes/medical/aviator/prescription display_name = "Medical - Medical HUD - Aviators - Prescription" path = /obj/item/clothing/glasses/hud/health/aviator/prescription + allowed_roles = list("Medical Doctor","Chief Medical Officer","Chemist","Paramedic","Geneticist", "Psychiatrist", "Field Medic") /datum/gear/eyes/meson display_name = "EngSci and Mining - Optical Meson Scanners" @@ -89,23 +96,27 @@ /datum/gear/eyes/meson/prescription display_name = "EngSci and Mining - Optical Meson Scanners - Prescription" path = /obj/item/clothing/glasses/meson/prescription + allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director", "Shaft Miner") /datum/gear/eyes/meson/aviator display_name = "EngSci and Mining - Optical Meson Scanners - Aviators" path = /obj/item/clothing/glasses/meson/aviator + allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director", "Shaft Miner") /datum/gear/eyes/meson/aviator/prescription display_name = "EngSci and Mining - Optical Meson Scanners - Aviators - Prescription" path = /obj/item/clothing/glasses/meson/aviator/prescription + allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director", "Shaft Miner") /datum/gear/eyes/material display_name = "Mining Optical Material Scanners" path = /obj/item/clothing/glasses/material - allowed_roles = list("Shaft Miner") + allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director", "Shaft Miner") /datum/gear/eyes/material/prescription display_name = "Mining Optical Material Scanners - Prescription" path = /obj/item/clothing/glasses/material/prescription + allowed_roles = list("Station Engineer","Chief Engineer","Atmospheric Technician", "Scientist", "Research Director", "Shaft Miner") /datum/gear/eyes/glasses/fakesun display_name = "Civilian - Sunglasses - Stylish" @@ -123,14 +134,17 @@ /datum/gear/eyes/sun/shades display_name = "SecCom - Sunglasses - Fat" path = /obj/item/clothing/glasses/sunglasses/big + allowed_roles = list("Security Officer","Head of Security","Warden","Facility Director","Head of Personnel","Quartermaster","Internal Affairs Agent","Detective") /datum/gear/eyes/sun/aviators display_name = "SecCom - Sunglasses - Aviators" path = /obj/item/clothing/glasses/sunglasses/aviator + allowed_roles = list("Security Officer","Head of Security","Warden","Facility Director","Head of Personnel","Quartermaster","Internal Affairs Agent","Detective") /datum/gear/eyes/sun/prescriptionsun display_name = "SecCom - Sunglasses - Presciption" path = /obj/item/clothing/glasses/sunglasses/prescription + allowed_roles = list("Security Officer","Head of Security","Warden","Facility Director","Head of Personnel","Quartermaster","Internal Affairs Agent","Detective") /datum/gear/eyes/circuitry display_name = "goggles, circuitry (empty)" diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 5c23ca4473a..b8caac56876 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -661,6 +661,12 @@ obj/item/clothing/suit/kamishimo icon_state = "yellow_hoodie" item_state_slots = list(slot_r_hand_str = "suit_yellow", slot_l_hand_str = "suit_yellow") +/obj/item/clothing/suit/storage/toggle/hoodie/white + name = "white hoodie" + desc = "A warm, white sweatshirt." + icon_state = "white_hoodie" + item_state_slots = list(slot_r_hand_str = "suit_white", slot_l_hand_str = "suit_white") + /obj/item/clothing/suit/storage/toggle/hoodie/cti name = "CTI hoodie" desc = "A warm, black sweatshirt. It bears the letters ‘CTI’ on the back, a lettering to the prestigious university in Tau Ceti, Ceti Technical Institute. There is a blue supernova embroidered on the front, the emblem of CTI." diff --git a/code/modules/detectivework/tools/swabs.dm b/code/modules/detectivework/tools/swabs.dm index b173483df6c..91bf343c5a7 100644 --- a/code/modules/detectivework/tools/swabs.dm +++ b/code/modules/detectivework/tools/swabs.dm @@ -22,14 +22,6 @@ var/mob/living/carbon/human/H = M var/sample_type - if(H.wear_mask) - to_chat(user, "\The [H] is wearing a mask.") - return - - if(!H.dna || !H.dna.unique_enzymes) - to_chat(user, "They don't seem to have DNA!") - return - if(user != H && H.a_intent != "help" && !H.lying) user.visible_message("\The [user] tries to take a swab sample from \the [H], but they move away.") return @@ -38,6 +30,15 @@ if(!H.organs_by_name[BP_HEAD]) to_chat(user, "They don't have a head.") return + + if(H.wear_mask) + to_chat(user, "Something is blocking \the [H]'s mouth.") + return + + if(!H.dna || !H.dna.unique_enzymes) + to_chat(user, "They don't seem to have DNA!") + return + if(!H.check_has_mouth()) to_chat(user, "They don't have a mouth.") return @@ -58,7 +59,7 @@ to_chat(user, "They don't have any hands.") return user.visible_message("[user] swabs [H]'s palm for a sample.") - sample_type = "GSR" + sample_type = "residue" gsr = H.gunshot_residue else return diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm index c7a7f13c10e..049ab23cc56 100644 --- a/code/modules/hydroponics/grown.dm +++ b/code/modules/hydroponics/grown.dm @@ -160,6 +160,8 @@ /obj/item/reagent_containers/food/snacks/grown/Crossed(var/mob/living/M) . = ..() + if(M.is_incorporeal()) + return if(seed && seed.get_trait(TRAIT_JUICY) == 2) if(istype(M)) diff --git a/code/modules/hydroponics/spreading/spreading_response.dm b/code/modules/hydroponics/spreading/spreading_response.dm index e0a8d96312e..d22d1b67663 100644 --- a/code/modules/hydroponics/spreading/spreading_response.dm +++ b/code/modules/hydroponics/spreading/spreading_response.dm @@ -42,6 +42,8 @@ /obj/effect/plant/Crossed(atom/movable/O) . = ..() + if(O.is_incorporeal()) + return if(isliving(O)) trodden_on(O) diff --git a/code/modules/maps/atmospheres/lavaland.dm b/code/modules/maps/atmospheres/lavaland.dm index 0560f51ff77..b27d4abee71 100644 --- a/code/modules/maps/atmospheres/lavaland.dm +++ b/code/modules/maps/atmospheres/lavaland.dm @@ -1,12 +1,13 @@ /datum/atmosphere/planet/lavaland base_gases = list( - /datum/gas/oxygen = 0.22, - /datum/gas/nitrogen = 0.78 + /datum/gas/oxygen = 0.14, + /datum/gas/nitrogen = 0.20, + /datum/gas/carbon_dioxide = 0.66 ) - base_target_pressure = 59.9 - minimum_pressure = 59.9 - maximum_pressure = 59.9 - minimum_temp = 293.3 + base_target_pressure = 35.1 + minimum_pressure = 32.1 + maximum_pressure = 37.1 + minimum_temp = 310.3 maximum_temp = 350.1 #define LAVALAND_SET_ATMOS initial_gas_mix=ATMOSPHERE_ID_LAVALAND @@ -24,6 +25,7 @@ LAVALAND_TURF_CREATE(/turf/simulated/floor/outdoors/beach/sand/desert) LAVALAND_TURF_CREATE(/turf/simulated/floor/outdoors/grass) LAVALAND_TURF_CREATE(/turf/simulated/floor/outdoors/water) LAVALAND_TURF_CREATE(/turf/simulated/floor/outdoors/lava) +LAVALAND_TURF_CREATE(/turf/simulated/floor/outdoors/lavaland) LAVALAND_TURF_CREATE(/turf/simulated/floor/outdoors/water/deep) LAVALAND_TURF_CREATE(/turf/simulated/floor/outdoors/water/shoreline) LAVALAND_TURF_CREATE(/turf/simulated/floor/outdoors/water/shoreline/corner) @@ -49,7 +51,7 @@ LAVALAND_TURF_CREATE(/turf/simulated/mineral/floor/lavaland) LAVALAND_TURF_CREATE(/turf/simulated/mineral/floor/cave/lavaland) LAVALAND_TURF_CREATE(/turf/simulated/mineral/floor/ignore_mapgen/lavaland) LAVALAND_TURF_CREATE(/turf/simulated/mineral/triumph) -LAVALAND_TURF_CREATE(/turf/simulated/mineral/triumph/rich) +LAVALAND_TURF_CREATE(/turf/simulated/mineral/rich/triumph) LAVALAND_TURF_CREATE(/turf/simulated/floor/bluegrid) LAVALAND_TURF_CREATE(/turf/simulated/floor/greengrid) LAVALAND_TURF_CREATE(/turf/unsimulated/mineral/triumph) diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index 46e49891400..070182c5f3d 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -243,7 +243,7 @@ var/list/global/map_templates = list() var/specific_sanity = 100 // A hundred chances to place the chosen submap. while(specific_sanity > 0) specific_sanity-- - var/orientation = pick(cardinal) + var/orientation = SOUTH chosen_template.preload_size(chosen_template.mappath, orientation) var/width_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(((orientation & NORTH|SOUTH) ? chosen_template.width : chosen_template.height) / 2) var/height_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(((orientation & NORTH|SOUTH) ? chosen_template.height : chosen_template.width) / 2) diff --git a/code/modules/mining/ore_redemption_machine/survey_vendor.dm b/code/modules/mining/ore_redemption_machine/survey_vendor.dm index 70fc23032f3..eefb027f8e2 100644 --- a/code/modules/mining/ore_redemption_machine/survey_vendor.dm +++ b/code/modules/mining/ore_redemption_machine/survey_vendor.dm @@ -39,12 +39,12 @@ new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 310), new /datum/data/mining_equipment("Industrial Equipment - Phoron Bore", /obj/item/gun/magnetic/matfed, 300), new /datum/data/mining_equipment("Colonial Recce Pack", /obj/item/storage/lockbox/colonial, 350), - new /datum/data/mining_equipment("Gateway Guardian Pack", /obj/item/storage/lockbox/gateway, 1000), - new /datum/data/mining_equipment("Cyan Posse Pack", /obj/item/storage/lockbox/cowboy, 1000), + new /datum/data/mining_equipment("Gateway Guardian Pack", /obj/item/storage/lockbox/gateway, 800), + new /datum/data/mining_equipment("Cyan Posse Pack", /obj/item/storage/lockbox/cowboy, 800), new /datum/data/mining_equipment("Conscript Pack", /obj/item/storage/lockbox/russian, 250), new /datum/data/mining_equipment("Holy Crusade Pack", /obj/item/storage/lockbox/crusade, 200), new /datum/data/mining_equipment("Maniple Pack", /obj/item/storage/lockbox/maniple, 200), - new /datum/data/mining_equipment("Away Team Pack", /obj/item/storage/lockbox/away, 1000), + new /datum/data/mining_equipment("Away Team Pack", /obj/item/storage/lockbox/away, 550), new /datum/data/mining_equipment("Survey Tools - Shovel", /obj/item/shovel, 40), new /datum/data/mining_equipment("Survey Tools - Mechanical Trap", /obj/item/beartrap, 50), new /datum/data/mining_equipment("Defense Equipment - Smoke Bomb",/obj/item/grenade/smokebomb, 10), diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 9a1fa0d37bf..606f28cfd3c 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -245,6 +245,8 @@ // and now mobs on fire /mob/living/carbon/human/Crossed(var/atom/movable/AM) . = ..() + if(AM.is_incorporeal()) + return if(istype(AM, /mob/living/bot/mulebot)) var/mob/living/bot/mulebot/MB = AM MB.runOver(src) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 6f98396e530..0ad219e30e3 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -225,6 +225,8 @@ // Handle footstep sounds /mob/living/carbon/human/handle_footstep(var/turf/T) + if(is_incorporeal()) + return if(!config_legacy.footstep_volume || !T.footstep_sounds || !T.footstep_sounds.len) return // Future Upgrades - Multi species support diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index bd967802039..e1a667d6643 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -612,26 +612,35 @@ var/last_message = 0 return //Stuff like the xenomorph's plasma regen happens here. species.handle_environment_special(src) + + if(is_incorporeal()) + return + if(isSynthetic()) // synth specific temperature values in the absence of a synthetic species - species.heat_level_1 = 400 - species.heat_level_2 = 420 // haha nice - species.heat_level_3 = 1000 - species.cold_level_1 = 275 - species.cold_level_2 = 250 - species.cold_level_3 = 200 - species.cold_discomfort_level = 290 - species.heat_discomfort_level = 380 - species.heat_discomfort_strings = list( - "You feel heat within your wiring.", - "You feel uncomfortably warm.", - "Your internal sensors chime at the increase in temperature." - ) - species.cold_discomfort_strings = list( - "A small heating element begins warming your system.", - "Your focus is briefly stolen by the chill of the air.", - "You feel uncomfortably cold.", - "You feel a chill within your wiring." - ) + var/mob/living/carbon/human/H = src + if(H.species.name == "Protean") + return // dont modify protean heat levels + + else + species.heat_level_1 = 400 + species.heat_level_2 = 420 // haha nice + species.heat_level_3 = 1000 + species.cold_level_1 = 275 + species.cold_level_2 = 250 + species.cold_level_3 = 200 + species.cold_discomfort_level = 290 + species.heat_discomfort_level = 380 + species.heat_discomfort_strings = list( + "You feel heat within your wiring.", + "You feel uncomfortably warm.", + "Your internal sensors chime at the increase in temperature." + ) + species.cold_discomfort_strings = list( + "A small heating element begins warming your system.", + "Your focus is briefly stolen by the chill of the air.", + "You feel uncomfortably cold.", + "You feel a chill within your wiring." + ) //Moved pressure calculations here for use in skip-processing check. var/pressure = environment.return_pressure() var/adjusted_pressure = calculate_affecting_pressure(pressure) diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm index 76a6180dfd5..1045ede38d4 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm @@ -1,5 +1,10 @@ /datum/power/shadekin +/mob/living/carbon/human/is_incorporeal() + if(ability_flags & AB_PHASE_SHIFTED) //Shadekin + return TRUE + return ..() + ///////////////////// /// PHASE SHIFT /// ///////////////////// diff --git a/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm b/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm index af2b0f517c6..cdd2f0700b0 100644 --- a/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm +++ b/code/modules/mob/living/carbon/human/species/station/protean/protean_blob.dm @@ -257,7 +257,7 @@ ..() /mob/living/simple_mob/protean_blob/MouseDrop(var/atom/over_object) - if(ishuman(over_object) && usr == src) + if(ishuman(over_object) && usr == src && src.Adjacent(over_object)) var/mob/living/carbon/human/H = over_object get_scooped(H, TRUE) else diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm index 7f4cee12e5c..dd9ca4720a4 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm @@ -59,13 +59,9 @@ icon_rest = "mouse_[body_color]_sleep" desc = "A small [body_color] rodent, often seen hiding in maintenance areas and making a nuisance of itself." -/mob/living/simple_mob/animal/passive/mouse/Crossed(AM as mob|obj) - //VOREStation Edit begin: SHADEKIN - var/mob/SK = AM - if(istype(SK)) - if(SK.shadekin_phasing_check()) - return - //VOREStation Edit end: SHADEKIN +/mob/living/simple_mob/animal/passive/mouse/Crossed(atom/movable/AM as mob|obj) + if(AM.is_incorporeal()) + return if( ishuman(AM) ) if(!stat) var/mob/M = AM diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm index b70fada307b..29013ad8cc6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm @@ -244,6 +244,11 @@ if((. = ..())) handle_shade() +/mob/living/simple_mob/shadekin/is_incorporeal() + if(ability_flags & AB_PHASE_SHIFTED) + return TRUE + return FALSE + /mob/living/simple_mob/shadekin/handle_atmos() if(ability_flags & AB_PHASE_SHIFTED) return diff --git a/code/modules/modular_computers/hardware/battery_module.dm b/code/modules/modular_computers/hardware/battery_module.dm index eff3196b584..73421c7a9cc 100644 --- a/code/modules/modular_computers/hardware/battery_module.dm +++ b/code/modules/modular_computers/hardware/battery_module.dm @@ -74,6 +74,5 @@ return ..() /obj/item/computer_hardware/battery_module/proc/charge_to_full() - if(ispath(battery)) - battery = new battery + if(battery)//nolonger checks for a valid path, instead checks if battery is set. battery.charge = battery.maxcharge diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index a583b85609d..80014e39e53 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -15,6 +15,7 @@ /mob/proc/zMove(direction) if(eyeobj) return eyeobj.zMove(direction) + if(!can_ztravel()) to_chat(src, "You lack means of travel in that direction.") return @@ -29,6 +30,10 @@ to_chat(src, "There is nothing of interest in this direction.") return 0 + if(is_incorporeal()) + forceMove(destination) + return 1 + if(!start.CanZPass(src, direction)) to_chat(src, "\The [start] is in the way.") return 0 @@ -124,13 +129,13 @@ /mob/living/can_ztravel() if(incapacitated()) return FALSE - return hovering + return (hovering || is_incorporeal()) /mob/living/carbon/human/can_ztravel() if(incapacitated()) return FALSE - if(hovering) + if(hovering || is_incorporeal()) return TRUE if(flying) //VOREStation Edit. Allows movement up/down with wings. @@ -273,6 +278,8 @@ return FALSE /mob/living/can_fall() + if(is_incorporeal()) + return FALSE if(hovering) return FALSE return ..() diff --git a/code/modules/overmap/ships/ship.dm b/code/modules/overmap/ships/ship.dm index fd9a9c55b56..14a6c47c099 100644 --- a/code/modules/overmap/ships/ship.dm +++ b/code/modules/overmap/ships/ship.dm @@ -160,9 +160,9 @@ if(direction & SOUTH) adjust_speed(0, -acceleration) -/obj/effect/overmap/visitable/ship/process(wait) - var/new_position_x = position_x + (speed[1] * WORLD_ICON_SIZE * wait) - var/new_position_y = position_y + (speed[2] * WORLD_ICON_SIZE * wait) +/obj/effect/overmap/visitable/ship/process(delta_time) + var/new_position_x = position_x + (speed[1] * WORLD_ICON_SIZE * delta_time * 10) + var/new_position_y = position_y + (speed[2] * WORLD_ICON_SIZE * delta_time * 10) // For simplicity we assume that you can't travel more than one turf per tick. That would be hella-fast. var/new_turf_x = CEILING(new_position_x / WORLD_ICON_SIZE, 1) @@ -178,12 +178,12 @@ if(new_loc != loc) var/turf/old_loc = loc - Move(new_loc, NORTH, wait) + Move(new_loc, NORTH, delta_time * 10) if(get_dist(old_loc, loc) > 1) pixel_x = new_pixel_x pixel_y = new_pixel_y return - animate(src, pixel_x = new_pixel_x, pixel_y = new_pixel_y, time = wait, flags = ANIMATION_END_NOW) + animate(src, pixel_x = new_pixel_x, pixel_y = new_pixel_y, time = delta_time * 10, flags = ANIMATION_END_NOW) // If we get moved, update our internal tracking to account for it /obj/effect/overmap/visitable/ship/Moved(atom/old_loc, direction, forced = FALSE) diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index c7acf9b149c..7061562a70f 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -1,12 +1,19 @@ /obj/item/gun/energy/taser name = "taser gun" - desc = "The NT Mk30 NL is a small gun used for non-lethal takedowns. Produced by NT, it's actually a licensed version of a W-T design." + desc = "The NT Mk31 NL is a small gun used for non-lethal takedowns. An NT exclusive iteration of the Mk30 WT design, the Mk31 features a variable output mechanism which draws from a singular power source, allowing for versatile firing solutions without increased weight." icon_state = "taser" item_state = null //so the human update icon uses the icon_state instead. - projectile_type = /obj/item/projectile/beam/stun - charge_cost = 240 + fire_delay = 4 + projectile_type = /obj/item/projectile/energy/electrode + modifystate = "taser" + + firemodes = list( + list(mode_name="stun", projectile_type=/obj/item/projectile/energy/electrode, modifystate="taser", charge_cost = 240), + list(mode_name="disable", projectile_type=/obj/item/projectile/beam/disabler/weak, modifystate="taserblue", charge_cost = 160), + ) + /obj/item/gun/energy/taser/mounted name = "mounted taser gun" self_recharge = 1 diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 6d5c79fec71..1978787a51f 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -220,12 +220,8 @@ Range() /obj/item/projectile/Crossed(atom/movable/AM) //A mob moving on a tile with a projectile is hit by it. - //VOREStation Edit begin: SHADEKIN - var/mob/SK = AM - if(istype(SK)) - if(SK.shadekin_phasing_check()) - return - //VOREStation Edit end: SHADEKIN + if(AM.is_incorporeal()) + return ..() if(isliving(AM) && !(pass_flags & PASSMOB)) var/mob/living/L = AM diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 038c0f11358..3e4d0332377 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -228,6 +228,33 @@ icon_state = "stun" agony = 30 +//Disabler Beams - It didn't feel right just to recolor Stun beams. We have uses for them still. +/obj/item/projectile/beam/disabler + name = "disabler beam" + icon_state = "lightning" + fire_sound = 'sound/weapons/Taser.ogg' + nodamage = 1 + taser_effect = 1 + agony = 30 + damage_type = HALLOSS + light_color = "#FFFFFF" + + combustion = FALSE + + muzzle_type = /obj/effect/projectile/muzzle/lightning + tracer_type = /obj/effect/projectile/tracer/lightning + impact_type = /obj/effect/projectile/impact/lightning + +/obj/item/projectile/beam/disabler/weak + name = "weak disabler beam" + icon_state = "lightning" + agony = 25 + +/obj/item/projectile/beam/disabler/strong + name = "strong disabler beam" + icon_state = "lightning" + agony = 40 + /obj/item/projectile/beam/stun/disabler muzzle_type = /obj/effect/projectile/muzzle/laser_omni tracer_type = /obj/effect/projectile/tracer/laser_omni diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 90a3bd387a7..62996a65ea4 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -137,15 +137,7 @@ result = "inaprovaline" required_reagents = list("oxygen" = 1, "carbon" = 1, "sugar" = 1) result_amount = 3 -/* -/datum/chemical_reaction/inaprovaline/topical - //Goes onto the patient - name = "Inaprovalaze" - id = "inaprovalaze" - result = "inaprovalaze" - required_reagents = list("inaprovaline" = 2, "sterilizine" = 1, "foaming_agent" = 1) //Main way to obtain is destiller - result_amount = 2 -*/ + /datum/chemical_reaction/tricordrazine //Heals the four standards slowly name = "Tricordrazine" @@ -154,13 +146,6 @@ required_reagents = list("inaprovaline" = 1, "anti_toxin" = 1) result_amount = 2 -/datum/chemical_reaction/tricorlidaze - //Apply onto Patient - name = "Tricorlidaze" - id = "tricorlidaze" - result = "tricorlidaze" - required_reagents = list("tricordrazine" = 2, "sterilizine" = 1, "foaming_agent" = 1)//Main way to obtain is destiller - result_amount = 2 /datum/chemical_reaction/dylovene //Heals toxin name = "Dylovene" @@ -186,15 +171,7 @@ required_reagents = list("inaprovaline" = 1, "carbon" = 1) inhibitors = list("sugar" = 1) // Messes up with inaprovaline result_amount = 2 -/* -/datum/chemical_reaction/bicaridine/topical - //Apply onto patient - name = "Bicaridaze" - id = "bicaridaze" - result = "bicaridaze" - required_reagents = list("bicaridine" = 2, "sterilizine" = 1, "foaming_agent" = 1)//Main way to obtain is destiller - result_amount = 2 -*/ + /datum/chemical_reaction/vermicetol //heals brute name = "Vermicetol" @@ -219,15 +196,7 @@ result = "dermaline" required_reagents = list("oxygen" = 1, "phosphorus" = 1, "kelotane" = 1) result_amount = 3 -/* -/datum/chemical_reaction/dermaline/topical - //Apply onto Patient NOT into - name = "Dermalaze" - id = "dermalaze" - result = "dermalaze" - required_reagents = list("dermaline" = 2, "sterilizine" = 1, "foaming_agent" = 1)//Main way to obtain is destiller - result_amount = 2 -*/ + /datum/chemical_reaction/dexalin //fixes oxyloss name = "Dexalin" diff --git a/code/modules/reagents/distilling/Distilling-Recipes.dm b/code/modules/reagents/distilling/Distilling-Recipes.dm index d3918c46f7b..c715c89a123 100644 --- a/code/modules/reagents/distilling/Distilling-Recipes.dm +++ b/code/modules/reagents/distilling/Distilling-Recipes.dm @@ -71,40 +71,6 @@ temp_shift = -2 // Medicinal -/* -/datum/chemical_reaction/distilling/inaprovalaze - name = "Distilling Inaprovalaze" - id = "distill_inaprovalaze" - result = "inaprovalaze" - required_reagents = list("inaprovaline" = 2, "foaming_agent" = 1) - result_amount = 2 - - reaction_rate = HALF_LIFE(10) - - temp_range = list(T0C + 100, T0C + 120) - -/datum/chemical_reaction/distilling/bicaridaze - name = "Distilling Bicaridaze" - id = "distill_bicaridaze" - result = "bicaridaze" - required_reagents = list("bicaridine" = 2, "foaming_agent" = 1) - result_amount = 2 - - reaction_rate = HALF_LIFE(10) - - temp_range = list(T0C + 110, T0C + 130) - -/datum/chemical_reaction/distilling/dermalaze - name = "Distilling Dermalaze" - id = "distill_dermalaze" - result = "dermalaze" - required_reagents = list("dermaline" = 2, "foaming_agent" = 1) - result_amount = 2 - - reaction_rate = HALF_LIFE(10) - - temp_range = list(T0C + 115, T0C + 130) -*/ /datum/chemical_reaction/distilling/spacomycaze name = "Distilling Spacomycaze" id = "distill_spacomycaze" @@ -115,18 +81,7 @@ reaction_rate = HALF_LIFE(10) temp_range = list(T0C + 100, T0C + 120) -/* -/datum/chemical_reaction/distilling/tricorlidaze - name = "Distilling Tricorlidaze" - id = "distill_tricorlidaze" - result = "tricorlidaze" - required_reagents = list("tricordrazine" = 1, "sterilizine" = 1, "foaming_agent" = 1) - result_amount = 2 - reaction_rate = HALF_LIFE(10) - - temp_range = list(T0C + 100, T0C + 120) -*/ // Alcohol /datum/chemical_reaction/distilling/beer name = "Distilling Beer" diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index b245af0eec7..a5bbe109c83 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -159,6 +159,21 @@ do_colouration = 1 color_blend_mode = ICON_MULTIPLY +/datum/sprite_accessory/ears/demon_horns3 + name = "demon horns, colorable(upward)" + desc = "" + icon_state = "demon-horns3" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/demon_horns4 + name = "demon horns, colorable ring(upward)" + desc = "" + icon_state = "demon-horns4" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + extra_overlay = "demon-horns4-ring" + /datum/sprite_accessory/ears/dragon_horns name = "dragon horns, colorable" desc = "" diff --git a/html/changelog.html b/html/changelog.html index ce5b5aa52c7..603a800ae5c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -53,6 +53,28 @@ -->
+

25 February 2021

+

silicons updated:

+
    +
  • matrix recolors are now possible in loadout
  • +
+ +

23 February 2021

+

Delams-The-SM updated:

+
    +
  • Added 2 new horns to ear Species Customization
  • +
+

TheLordME updated:

+
    +
  • Tablets now spawn with their proper Battery modules.
  • +
  • Removed code that was no longer needed/Breaking stuff
  • +
+

lolman360 updated:

+
    +
  • emote slanting
  • +
  • protean blobs climbing up onto people while they're nto adjacent
  • +
+

21 February 2021

Enzo-Leon updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 1936ee0d508..dbc347d2a5b 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -5054,3 +5054,15 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - tweak: Adjustments to Bar, Cafe, and Pool silicons: - rscadd: event prefs +2021-02-23: + Delams-The-SM: + - rscadd: Added 2 new horns to ear Species Customization + TheLordME: + - bugfix: Tablets now spawn with their proper Battery modules. + - code_imp: Removed code that was no longer needed/Breaking stuff + lolman360: + - bugfix: emote slanting + - bugfix: protean blobs climbing up onto people while they're nto adjacent +2021-02-25: + silicons: + - rscadd: matrix recolors are now possible in loadout diff --git a/html/changelogs/AutoChangeLog-pr-2766.yml b/html/changelogs/AutoChangeLog-pr-2766.yml new file mode 100644 index 00000000000..2475c98bd80 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2766.yml @@ -0,0 +1,5 @@ +author: "rpilcrow" +delete-after: True +changes: + - bugfix: "Masks no longer block your ability to use swab kits on hands." + - tweak: "Slightly altered swab kit text" diff --git a/icons/effects/map_effects.dmi b/icons/effects/map_effects.dmi index 4f5bff755dd..0f28f9d2da8 100644 Binary files a/icons/effects/map_effects.dmi and b/icons/effects/map_effects.dmi differ diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi index f9f95728b86..180b4188983 100644 Binary files a/icons/mob/human.dmi and b/icons/mob/human.dmi differ diff --git a/icons/mob/items/lefthand_guns.dmi b/icons/mob/items/lefthand_guns.dmi index 49ec052c46b..181bec8adab 100644 Binary files a/icons/mob/items/lefthand_guns.dmi and b/icons/mob/items/lefthand_guns.dmi differ diff --git a/icons/mob/items/righthand_guns.dmi b/icons/mob/items/righthand_guns.dmi index fa3460e40e6..ca36d2f733a 100644 Binary files a/icons/mob/items/righthand_guns.dmi and b/icons/mob/items/righthand_guns.dmi differ diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi index 87b84fd7e36..762f0f9b1ec 100644 Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ diff --git a/icons/mob/vore/ears_vr.dmi b/icons/mob/vore/ears_vr.dmi index 997e44ec00e..27c70b4d5fe 100644 Binary files a/icons/mob/vore/ears_vr.dmi and b/icons/mob/vore/ears_vr.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index d691ecfff72..d8858cd663b 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/items.dmi b/icons/obj/items.dmi index 26ca347bfad..df4219b1286 100644 Binary files a/icons/obj/items.dmi and b/icons/obj/items.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 1b753e9c872..3a720c4e13d 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/maps/nsv_triumph/submaps/lavaland/_lavaland.dm b/maps/nsv_triumph/submaps/lavaland/_lavaland.dm index 70c807c9c1c..bda5e19bfc8 100644 --- a/maps/nsv_triumph/submaps/lavaland/_lavaland.dm +++ b/maps/nsv_triumph/submaps/lavaland/_lavaland.dm @@ -111,8 +111,8 @@ // It will generate more rich ores because of the lower numbers than the normal one /datum/random_map/noise/ore/lavaland descriptor = "lava land mine ore distribution map" - deep_val = 0.7 //More riches, normal is 0.7 and 0.8 - rare_val = 0.8 + deep_val = 0.6 //More riches, normal is 0.7 and 0.8 + rare_val = 0.4 // The check_map_sanity proc is sometimes unsatisfied with how AMAZING our ores are /datum/random_map/noise/ore/lavaland/check_map_sanity() diff --git a/maps/nsv_triumph/submaps/lavaland/boss1.dmm b/maps/nsv_triumph/submaps/lavaland/boss1.dmm index 628be77f363..a15afae3900 100644 --- a/maps/nsv_triumph/submaps/lavaland/boss1.dmm +++ b/maps/nsv_triumph/submaps/lavaland/boss1.dmm @@ -27,10 +27,6 @@ /obj/effect/decal/cleanable/blood/gibs, /turf/simulated/floor/greengrid, /area/lavaland/bosses) -"n" = ( -/obj/item/digestion_remains/ribcage, -/turf/simulated/floor/greengrid, -/area/lavaland/bosses) "r" = ( /turf/simulated/floor/bluegrid, /area/lavaland/bosses) @@ -485,7 +481,7 @@ a a a c -n +c r v E diff --git a/maps/nsv_triumph/submaps/lavaland/lavaland.dmm b/maps/nsv_triumph/submaps/lavaland/lavaland.dmm index 995315de269..f2b1ea55ee6 100644 --- a/maps/nsv_triumph/submaps/lavaland/lavaland.dmm +++ b/maps/nsv_triumph/submaps/lavaland/lavaland.dmm @@ -1,97 +1,614 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aN" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 +"ax" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 4 }, -/turf/simulated/floor/tiled, -/area/lavaland/base) +/obj/machinery/atmospherics/binary/pump/on{ + dir = 8; + name = "Waste" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"aN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/lavaland/base/common) "aO" = ( /turf/simulated/floor/outdoors/lava, /area/lavaland/unexplored) -"bb" = ( -/obj/structure/bed/double/padded, -/obj/item/bedsheet/browndouble, -/turf/simulated/floor/carpet/bcarpet, -/area/lavaland/base) -"cZ" = ( -/obj/machinery/door/airlock{ - name = "Recovery" +"bp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 }, -/turf/simulated/floor/carpet/blucarpet, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 1; + pixel_y = -23; + req_one_access = list(48) + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"bs" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"bx" = ( +/turf/simulated/floor/outdoors/lavaland, +/area/lavaland/base) +"bG" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/canister/phoron{ + start_pressure = 12000 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"bJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 6 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"ch" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/old_tile, +/area/lavaland/base/common) +"cY" = ( +/obj/structure/table/standard, +/obj/item/towel/random, +/obj/item/towel/random, +/obj/item/towel/random, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 4; + pixel_x = -27; + req_one_access = list(48) + }, +/turf/simulated/floor/tiled/old_tile, /area/lavaland/base/common) "db" = ( /turf/simulated/wall, /area/lavaland/base/common) -"do" = ( -/obj/machinery/media/jukebox{ - icon_state = "superjuke-nopower"; - state_base = "superjuke" - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/tiled, +"dx" = ( +/obj/structure/curtain/open/shower/engineering, +/turf/simulated/floor/tiled/old_tile, /area/lavaland/base/common) -"er" = ( -/obj/structure/table/marble, -/obj/machinery/reagentgrinder, -/obj/item/reagent_containers/glass/rag, -/turf/simulated/floor/tiled/dark, +"dX" = ( +/obj/machinery/shower{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/turf/simulated/floor/tiled/old_tile, /area/lavaland/base/common) "ew" = ( /turf/simulated/floor/tiled, /area/lavaland/base/common) -"eF" = ( -/obj/structure/table/marble, -/obj/machinery/chemical_dispenser/bar_alc/full{ - dir = 4 - }, -/turf/simulated/floor/tiled/dark, -/area/lavaland/base/common) "eT" = ( -/obj/structure/table/rack/shelf, -/turf/simulated/floor/tiled/steel_grid, -/area/lavaland/base) -"eU" = ( -/obj/structure/flora/pottedplant/subterranean, -/obj/machinery/light{ +/obj/machinery/atmospherics/binary/pump/on{ dir = 4 }, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"eU" = ( +/obj/structure/table/rack, +/obj/item/storage/bag/ore, +/obj/structure/sign/warning{ + desc = "Warning: The PMD has confirmed multiple Memetic Hazards in this area. Please wear the appropriate protection."; + name = "\improper MEMETIC HAZARD"; + pixel_x = 32 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/gun/energy/kinetic_accelerator, /turf/simulated/floor/tiled, /area/lavaland/base/common) "fg" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 4 + }, +/obj/structure/grille, +/obj/structure/window/phoronreinforced/full, +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"fh" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_alc/full, +/obj/effect/decal/cleanable/cobweb, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"fm" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"fo" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 1; + pixel_y = -23; + req_one_access = list(48) + }, +/turf/simulated/floor/carpet/purcarpet, +/area/lavaland/base/common) +"fw" = ( +/mob/living/simple_mob/construct/shade/surt, +/turf/simulated/floor/outdoors/lavaland, +/area/lavaland/explored) +"fX" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"gd" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"gf" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/structure/ore_box, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"gn" = ( /obj/machinery/light{ dir = 1 }, -/turf/simulated/floor/tiled/steel_grid, -/area/lavaland/base) -"fw" = ( -/mob/living/simple_mob/construct/shade, -/turf/simulated/floor/outdoors/lavaland, -/area/lavaland/explored) -"fE" = ( -/obj/structure/table/marble, -/obj/machinery/chemical_dispenser/bar_coffee/full, -/turf/simulated/floor/tiled/dark, +/obj/machinery/sleeper{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals5{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"gv" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 1 + }, +/turf/simulated/floor/plating, /area/lavaland/base/common) "gy" = ( /obj/away_mission_init/lavaland, /turf/simulated/floor/outdoors/lavaland, /area/lavaland/explored) +"gA" = ( +/turf/simulated/floor/outdoors/lava/lavaland, +/area/lavaland/base) "gE" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 }, /turf/simulated/floor/tiled/monotile, /area/lavaland/base/common) -"gH" = ( -/obj/machinery/door/airlock/multi_tile/glass, -/turf/simulated/floor/tiled, -/area/lavaland/base) -"hQ" = ( +"gF" = ( +/obj/machinery/door/airlock{ + name = "Showers"; + req_one_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/old_tile, +/area/lavaland/base/common) +"gH" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Mining Engine Room"; + req_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"gR" = ( +/obj/machinery/power/generator{ + anchored = 1 + }, +/obj/structure/cable/green{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"hf" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"hi" = ( +/obj/machinery/sleep_console, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"hp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/mineral/triumph/lavaland, /area/lavaland/base) +"hr" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"hN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 4; + pixel_x = -27; + req_one_access = list(48) + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"hQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/old_tile, +/area/lavaland/base/common) "hU" = ( +/obj/structure/table/marble, +/obj/effect/floor_decal/spline/fancy/wood{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"ia" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"ib" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"ig" = ( +/obj/machinery/atmospherics/pipe/simple/visible/universal{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"ip" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"ix" = ( +/mob/living/simple_mob/animal/space/bats/surt, +/turf/simulated/floor/outdoors/lavaland, +/area/lavaland/unexplored) +"iz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"jk" = ( +/obj/machinery/vending/coffee, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"jE" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 1; + pixel_y = -23; + req_one_access = list(48) + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/structure/ore_box, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"ki" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/firealarm{ + dir = 4; + layer = 3.3; + pixel_x = 26 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"km" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/manifold/visible/yellow, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"kq" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_soft/full, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"kr" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/table/marble, +/obj/item/reagent_containers/food/drinks/shaker, +/obj/item/reagent_containers/glass/rag, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"kH" = ( +/obj/machinery/atmospherics/unary/freezer{ + dir = 8; + icon_state = "freezer_1"; + set_temperature = 65; + use_power = 1 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"lb" = ( +/turf/simulated/floor/outdoors/lavaland, +/area/lavaland/explored) +"lm" = ( +/obj/machinery/atmospherics/binary/pump/high_power/on{ + dir = 8; + target_pressure = 15000 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"ls" = ( +/obj/machinery/atmospherics/pipe/manifold4w/visible/cyan, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"lA" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"lD" = ( +/obj/structure/table/marble, +/obj/machinery/microwave, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"lF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"lX" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"mm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"mq" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"mr" = ( +/obj/structure/catwalk, +/turf/simulated/floor/outdoors/lava, +/area/lavaland/unexplored) +"mt" = ( +/obj/structure/table/standard, +/obj/item/storage/toolbox/electrical, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"mz" = ( +/obj/machinery/door/airlock{ + id_tag = "mine_blue"; + name = "Dormitory"; + req_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/blucarpet, +/area/lavaland/base/common) +"mJ" = ( +/obj/machinery/light/small, +/obj/structure/ore_box, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"mN" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/structure/grille, +/obj/structure/window/phoronreinforced{ + dir = 1 + }, +/obj/structure/window/phoronreinforced/full, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"nr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"nx" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/access_button{ + name = "interior access button"; + pixel_x = -10; + pixel_y = 25; + req_one_access = list(48) + }, +/obj/effect/map_helper/airlock/button/int_button, +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(48) + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"nz" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/carpet/blucarpet, +/area/lavaland/base/common) +"nC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"nE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"nG" = ( +/obj/structure/bed/double/padded, +/obj/item/bedsheet/purpledouble, +/turf/simulated/floor/carpet/oracarpet, +/area/lavaland/base/common) +"nK" = ( +/turf/simulated/floor/carpet/purcarpet, +/area/lavaland/base/common) +"nZ" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"oj" = ( /obj/structure/bed/chair/sofa/left{ dir = 1; icon_state = "sofaend_left" @@ -100,92 +617,261 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/lavaland/base) -"ix" = ( -/mob/living/simple_mob/animal/space/bats/roguemines, -/turf/simulated/floor/outdoors/lavaland, -/area/lavaland/unexplored) -"iz" = ( -/obj/structure/table/standard, -/obj/item/towel/random, -/turf/simulated/floor/tiled/old_tile, -/area/lavaland/base) -"iE" = ( -/obj/structure/ore_box, -/turf/simulated/floor/tiled, /area/lavaland/base/common) -"kq" = ( -/turf/simulated/floor/tiled, -/area/lavaland/base) -"kr" = ( -/obj/structure/bed/chair/sofa/right{ - icon_state = "sofaend_right" - }, -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 9 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/random/mob/mouse, -/turf/simulated/floor/wood, -/area/lavaland/base) -"lb" = ( -/turf/simulated/floor/outdoors/lavaland, -/area/lavaland/explored) -"ml" = ( -/obj/structure/table/marble, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/tiled/dark, -/area/lavaland/base/common) -"mr" = ( -/obj/structure/catwalk, -/turf/simulated/floor/outdoors/lava, -/area/lavaland/unexplored) -"mZ" = ( -/obj/structure/closet, -/turf/simulated/floor/carpet/purcarpet, -/area/lavaland/base) -"nr" = ( -/obj/structure/table/marble, -/turf/simulated/floor/tiled/dark, -/area/lavaland/base/common) -"nz" = ( -/turf/simulated/floor/carpet/blucarpet, -/area/lavaland/base) -"oG" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/turf/simulated/floor/carpet/blucarpet, -/area/lavaland/base) -"pJ" = ( -/obj/structure/table/marble, -/obj/effect/floor_decal/spline/fancy/wood{ +"or" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"oC" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/carpet/oracarpet, +/area/lavaland/base/common) +"oK" = ( +/obj/machinery/atmospherics/binary/pump/high_power/on{ + target_pressure = 15000 + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"oM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"pi" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"pn" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"pz" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"pJ" = ( +/obj/structure/bed/chair/sofa/left{ + icon_state = "sofaend_left" + }, +/obj/effect/floor_decal/spline/fancy/wood{ + dir = 5 + }, /turf/simulated/floor/wood, -/area/lavaland/base) +/area/lavaland/base/common) +"pQ" = ( +/obj/machinery/atmospherics/unary/heater{ + icon_state = "heater" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"pW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"qb" = ( +/obj/machinery/atmospherics/unary/outlet_injector{ + dir = 4 + }, +/turf/simulated/floor/outdoors/lavaland, +/area/lavaland/base/common) +"qc" = ( +/obj/machinery/atmospherics/binary/circulator{ + anchored = 1; + dir = 8 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"qp" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) "qz" = ( /obj/effect/floor_decal/industrial/warning{ dir = 5 }, /turf/simulated/floor/tiled/monotile, /area/lavaland/base/common) +"qA" = ( +/turf/simulated/floor/tiled/old_tile, +/area/lavaland/base/common) "qE" = ( -/obj/structure/bed/double/padded, -/obj/item/bedsheet/hosdouble, +/obj/machinery/button/remote/airlock{ + id = "mine_purp"; + name = "Door Lock"; + pixel_x = -25; + pixel_y = 26; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, /turf/simulated/floor/carpet/purcarpet, -/area/lavaland/base) -"qJ" = ( -/obj/machinery/light{ +/area/lavaland/base/common) +"qF" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"qU" = ( +/obj/machinery/button/remote/airlock{ + id = "mine_blue"; + name = "Door Lock"; + pixel_x = 25; + pixel_y = -26; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/blucarpet, +/area/lavaland/base/common) +"ra" = ( +/obj/machinery/atmospherics/portables_connector, +/obj/machinery/portable_atmospherics/canister/phoron{ + start_pressure = 12000 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"re" = ( +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/airlock/maintenance{ + name = "SMES Access"; + req_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"rE" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 1; + pixel_y = -23; + req_one_access = list(48) + }, +/turf/simulated/floor/carpet/oracarpet, +/area/lavaland/base/common) +"rK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"rM" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/firealarm{ + dir = 4; + layer = 3.3; + pixel_x = 26 + }, +/turf/simulated/floor/tiled/old_tile, +/area/lavaland/base/common) +"so" = ( +/obj/machinery/atmospherics/portables_connector{ dir = 1 }, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/old_tile, -/area/lavaland/base) -"sG" = ( -/obj/machinery/light{ - dir = 1 +/obj/machinery/portable_atmospherics/canister/phoron{ + start_pressure = 12000 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"sN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"sP" = ( +/obj/machinery/airlock_sensor{ + dir = 6; + pixel_y = -25 + }, +/obj/effect/map_helper/airlock/sensor/chamber_sensor, +/obj/machinery/light/small, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"sQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 }, /turf/simulated/floor/tiled, /area/lavaland/base/common) @@ -193,28 +879,244 @@ /turf/simulated/floor/outdoors/lava, /area/lavaland/base) "tv" = ( -/turf/simulated/floor/tiled/monotile, -/area/lavaland/base) -"uE" = ( -/turf/simulated/floor/carpet/purcarpet, -/area/lavaland/base) -"vA" = ( -/obj/structure/table/rack/shelf, -/obj/random/multiple/miningdrills, -/turf/simulated/floor/tiled/steel_grid, -/area/lavaland/base) -"xd" = ( -/turf/simulated/mineral/triumph/rich, -/area/lavaland/unexplored) -"yX" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, +/obj/structure/table/woodentable, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/lavaland/base/common) -"yY" = ( +"tE" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/button/windowtint{ + id = "wind_orange"; + pixel_y = -25 + }, +/turf/simulated/floor/carpet/oracarpet, +/area/lavaland/base/common) +"tU" = ( +/obj/machinery/atmospherics/binary/pump/high_power/on{ + dir = 4; + target_pressure = 15000 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"ub" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning{ + desc = "Warning: The PMD has confirmed multiple Memetic Hazards in this area. Please wear the appropriate protection."; + name = "\improper MEMETIC HAZARD"; + pixel_x = -32 + }, +/turf/simulated/floor/outdoors/lavaland, +/area/lavaland/base/common) +"ui" = ( +/obj/machinery/door/airlock{ + name = "Custodial Supplies"; + req_one_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"uA" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"uE" = ( +/obj/machinery/door/airlock{ + id_tag = "mine_purp"; + name = "Dormitory"; + req_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/purcarpet, +/area/lavaland/base/common) +"uS" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 4; + pixel_x = -27; + req_one_access = list(48) + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"vz" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"vA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/power/apc{ + name = "south bump"; + pixel_y = -28 + }, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"vE" = ( +/obj/structure/table/woodentable, +/obj/machinery/recharger, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/carpet/blucarpet, +/area/lavaland/base/common) +"vW" = ( +/obj/structure/table/standard, +/obj/machinery/light/small, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/storage/firstaid/regular{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/storage/firstaid/regular{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"ws" = ( +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 22; + req_one_access = list(48) + }, +/turf/simulated/floor/carpet/bcarpet, +/area/lavaland/base/common) +"wC" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"wN" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"wY" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"xd" = ( +/turf/simulated/mineral/rich/triumph/lavaland, +/area/lavaland/unexplored) +"xF" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/structure/grille, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"xJ" = ( +/obj/machinery/vending/boozeomat{ + req_access = null; + req_log_access = null + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"yp" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/polarized{ + dir = 8; + id = "wind_blue" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"yI" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"yX" = ( +/obj/machinery/button/remote/airlock{ + id = "mine_black"; + name = "Door Lock"; + pixel_x = -25; + pixel_y = -26; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/carpet/bcarpet, +/area/lavaland/base/common) +"zd" = ( +/obj/machinery/atmospherics/pipe/simple/visible/yellow{ + dir = 6 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"zk" = ( +/obj/structure/closet/emcloset, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"zm" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, /obj/structure/grille, /obj/structure/window/reinforced/full, -/obj/structure/curtain/black, /turf/simulated/floor/plating, /area/lavaland/base/common) "zs" = ( @@ -224,108 +1126,227 @@ }, /turf/simulated/floor/tiled, /area/lavaland/base/common) +"zv" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/firealarm{ + dir = 4; + layer = 3.3; + pixel_x = 26 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Al" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 22; + req_one_access = list(48) + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Au" = ( +/obj/machinery/vending/cola, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"AA" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/mining/drill, +/turf/simulated/floor/tiled/dark, +/area/lavaland/base/common) "AG" = ( -/obj/effect/floor_decal/industrial/outline/yellow, -/obj/structure/table/rack/shelf, -/obj/random/multiple/miningdrills, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/tiled/steel_grid, -/area/lavaland/base) +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 0; + external_pressure_bound_default = 0; + frequency = null; + icon_state = "map_vent_in"; + initialize_directions = 1; + internal_pressure_bound = 4000; + internal_pressure_bound_default = 4000; + pressure_checks = 2; + pressure_checks_default = 2; + pump_direction = 0; + use_power = 1 + }, +/turf/simulated/floor/reinforced/airmix, +/area/lavaland/base/common) +"AI" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/lavaland/base/common) "AJ" = ( -/turf/simulated/floor/carpet/bcarpet, -/area/lavaland/base) +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"AO" = ( +/turf/simulated/wall/r_wall, +/area/lavaland/base/common) +"Bf" = ( +/obj/machinery/vending/cigarette, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"Bp" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) "Bs" = ( -/obj/machinery/door/airlock{ - name = "Recovery" +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Bx" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 }, /turf/simulated/floor/carpet/bcarpet, /area/lavaland/base/common) +"BM" = ( +/obj/machinery/mineral/equipment_vendor, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Ce" = ( +/obj/structure/cable/green{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) "Ch" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/monotile, /area/lavaland/base/common) -"CL" = ( -/obj/structure/table/marble, -/obj/item/reagent_containers/glass/rag, -/obj/item/reagent_containers/food/drinks/shaker, -/turf/simulated/floor/tiled/dark, -/area/lavaland/base/common) -"EB" = ( -/obj/machinery/door/airlock/external, -/obj/structure/fans/tiny, +"Cl" = ( +/obj/structure/closet/emcloset, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb2, +/obj/machinery/airlock_sensor/airlock_interior{ + pixel_y = 25 + }, +/obj/effect/map_helper/airlock/sensor/int_sensor, /turf/simulated/floor/tiled, /area/lavaland/base/common) -"Fj" = ( -/mob/living/simple_mob/animal/space/bats/roguemines, -/turf/simulated/mineral/triumph, -/area/lavaland/explored) -"Ft" = ( -/turf/simulated/floor/outdoors/lavaland, -/area/lavaland/unexplored) -"GT" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/turf/simulated/floor/wood, -/area/lavaland/base/common) -"GZ" = ( -/turf/simulated/floor/wood, -/area/lavaland/base) -"Hr" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/full, -/obj/structure/curtain/black, -/turf/simulated/floor/plating, -/area/lavaland/base) -"Hz" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 1 - }, -/turf/simulated/floor/tiled/monotile, -/area/lavaland/base/common) -"HM" = ( -/obj/machinery/shower{ - dir = 4 - }, -/turf/simulated/floor/tiled/old_tile, -/area/lavaland/base) -"Js" = ( -/obj/effect/floor_decal/industrial/warning{ +"Cq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, -/turf/simulated/floor/tiled/monotile, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, /area/lavaland/base/common) -"Lj" = ( +"Cr" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/effect/map_helper/airlock/door/int_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(48) + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"CB" = ( +/obj/machinery/power/smes/buildable/main{ + charge = 4e+007 + }, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"CL" = ( /obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/turf/simulated/floor/tiled/monotile, -/area/lavaland/base/common) -"LN" = ( -/obj/structure/table/marble, -/obj/machinery/chemical_dispenser/bar_soft/full{ - dir = 4 - }, -/obj/machinery/light{ dir = 8 }, -/turf/simulated/floor/tiled/dark, +/obj/machinery/alarm/alarms_hidden{ + dir = 1; + pixel_y = -23; + req_one_access = list(48) + }, +/turf/simulated/floor/tiled, /area/lavaland/base/common) -"LX" = ( -/obj/structure/closet, +"CO" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/machinery/door/airlock/glass{ + name = "Transit"; + req_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"CP" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, /turf/simulated/floor/carpet/bcarpet, -/area/lavaland/base) -"Mv" = ( -/obj/structure/table/standard, -/obj/machinery/recharger, -/turf/simulated/floor/carpet/blucarpet, -/area/lavaland/base) -"MQ" = ( -/turf/simulated/mineral/triumph/rich, -/area/lavaland/base) -"MX" = ( -/turf/simulated/mineral/triumph, -/area/lavaland/explored) -"NH" = ( +/area/lavaland/base/common) +"CU" = ( +/obj/machinery/button/remote/airlock{ + id = "mine_orange"; + name = "Door Lock"; + pixel_x = 25; + pixel_y = 26; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/oracarpet, +/area/lavaland/base/common) +"CX" = ( +/obj/machinery/atmospherics/binary/circulator{ + anchored = 1; + dir = 4 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Dm" = ( /obj/structure/bed/chair/sofa/right{ dir = 1; icon_state = "sofaend_right" @@ -334,49 +1355,519 @@ dir = 8 }, /turf/simulated/floor/wood, -/area/lavaland/base) -"Oo" = ( -/obj/structure/bed/chair/sofa/left{ - icon_state = "sofaend_left" +/area/lavaland/base/common) +"Du" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, -/obj/effect/floor_decal/spline/fancy/wood{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"DG" = ( +/turf/simulated/floor/outdoors/lava/lavaland, +/area/lavaland/explored) +"DH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"EE" = ( +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"EX" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/simulated/floor/tiled/old_tile, +/area/lavaland/base/common) +"Fq" = ( +/obj/machinery/vending/snack, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Ft" = ( +/turf/simulated/floor/outdoors/lavaland, +/area/lavaland/unexplored) +"FF" = ( +/obj/machinery/door/firedoor/multi_tile{ + dir = 1; + req_one_access = list(48) + }, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2; + name = "Dorms"; + req_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"FI" = ( +/obj/structure/bed/chair, +/turf/simulated/floor/carpet/bcarpet, +/area/lavaland/base/common) +"FQ" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"FW" = ( +/obj/machinery/atmospherics/portables_connector{ + dir = 1 + }, +/obj/machinery/portable_atmospherics/canister/phoron{ + start_pressure = 12000 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 4; + pixel_x = -27; + req_one_access = list(48) + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Ga" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Gj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1384; + id_tag = "lava_lock"; + pixel_y = 25; + req_one_access = list(48) + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Gt" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/bed/chair{ + dir = 1 + }, +/obj/machinery/button/windowtint{ + id = "wind_blue"; + pixel_y = -25 + }, +/turf/simulated/floor/carpet/blucarpet, +/area/lavaland/base/common) +"Gu" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"GE" = ( +/obj/machinery/door/airlock{ + id_tag = "mine_black"; + name = "Dormitory"; + req_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/bcarpet, +/area/lavaland/base/common) +"GT" = ( +/obj/machinery/door/firedoor/multi_tile{ + dir = 1; + req_one_access = list(48) + }, +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 2; + name = "Lounge"; + req_access = list(48) }, /turf/simulated/floor/wood, -/area/lavaland/base) -"Pr" = ( -/obj/effect/floor_decal/industrial/warning{ +/area/lavaland/base/common) +"Hr" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 }, -/turf/simulated/floor/tiled/monotile, -/area/lavaland/base/common) -"Pt" = ( -/obj/machinery/vending/boozeomat{ - req_access = null; - req_log_access = null +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 22; + req_one_access = list(48) }, -/turf/simulated/floor/tiled/dark, +/turf/simulated/floor/carpet/blucarpet, /area/lavaland/base/common) -"Qs" = ( -/obj/structure/catwalk, -/turf/simulated/floor/outdoors/lava, -/area/lavaland/explored) -"Qy" = ( -/obj/machinery/mech_recharger, +"Hz" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 1 + }, /turf/simulated/floor/tiled/monotile, +/area/lavaland/base/common) +"HA" = ( +/obj/machinery/door/airlock/maintenance{ + name = "SMES Access"; + req_access = list(48) + }, +/obj/structure/cable/green{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"HB" = ( +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"HU" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/machinery/door/airlock/glass{ + name = "Storage"; + req_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Iq" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"IR" = ( +/obj/structure/bed, +/obj/item/bedsheet/red, +/turf/simulated/floor/carpet/blucarpet, +/area/lavaland/base/common) +"Jl" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Js" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 6 + }, +/turf/simulated/floor/tiled/monotile, +/area/lavaland/base/common) +"Jx" = ( +/obj/structure/urinal{ + pixel_y = 31 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/tiled/old_tile, +/area/lavaland/base/common) +"JG" = ( +/obj/machinery/door/airlock{ + id_tag = "mine_orange"; + name = "Dormitory"; + req_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/oracarpet, +/area/lavaland/base/common) +"JM" = ( +/obj/structure/table/standard, +/obj/item/storage/box/mousetraps, +/obj/item/reagent_containers/glass/bucket, +/obj/item/mop, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 22; + req_one_access = list(48) + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"JR" = ( +/obj/structure/sink/kitchen{ + dir = 4; + pixel_x = -11 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Kq" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/carpet/purcarpet, +/area/lavaland/base/common) +"KB" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 1 + }, +/obj/effect/map_helper/airlock/atmos/chamber_pump, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"KC" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"KX" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/machinery/access_button{ + dir = 1; + name = "exterior access button"; + pixel_x = 10; + pixel_y = -25; + req_one_access = list(48) + }, +/obj/effect/map_helper/airlock/button/ext_button, +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(48) + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Lg" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/alarm/alarms_hidden{ + dir = 8; + pixel_x = 23; + req_one_access = list(48) + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Lj" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 4 + }, +/turf/simulated/floor/tiled/monotile, +/area/lavaland/base/common) +"Ll" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Ln" = ( +/obj/structure/bed/double/padded, +/obj/item/bedsheet/greendouble, +/turf/simulated/floor/carpet/purcarpet, +/area/lavaland/base/common) +"Lr" = ( +/obj/structure/table/standard, +/obj/item/storage/toolbox/mechanical, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Mc" = ( +/obj/structure/table/rack, +/obj/item/storage/bag/ore, +/obj/item/gun/energy/kinetic_accelerator, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Mw" = ( +/obj/machinery/atmospherics/pipe/manifold/visible/yellow{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"MQ" = ( +/turf/simulated/mineral/rich/triumph/lavaland, /area/lavaland/base) -"QN" = ( +"MX" = ( +/turf/simulated/mineral/triumph/lavaland, +/area/lavaland/explored) +"ND" = ( +/obj/structure/flora/pottedplant/subterranean, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"NH" = ( /obj/structure/table/marble, /obj/effect/floor_decal/spline/fancy/wood{ dir = 8 }, /obj/structure/flora/pottedplant/small, /turf/simulated/floor/wood, -/area/lavaland/base) -"QQ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/glass{ - name = "Study" +/area/lavaland/base/common) +"NN" = ( +/obj/machinery/door/firedoor/multi_tile{ + req_one_access = list(48) + }, +/obj/machinery/door/airlock/multi_tile/glass{ + name = "Lounge"; + req_one_access = list(48) + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"NV" = ( +/obj/machinery/mech_recharger, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"NW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"Oo" = ( +/obj/structure/table/marble, +/obj/machinery/reagentgrinder, +/obj/item/reagent_containers/glass/rag, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"OB" = ( +/obj/structure/undies_wardrobe, +/turf/simulated/floor/tiled/old_tile, +/area/lavaland/base/common) +"OV" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/obj/machinery/light/small, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Pb" = ( +/obj/structure/bed/double/padded, +/obj/item/bedsheet/double, +/turf/simulated/floor/carpet/bcarpet, +/area/lavaland/base/common) +"Pk" = ( +/obj/machinery/door/firedoor/multi_tile{ + req_one_access = list(48) + }, +/obj/machinery/door/airlock/multi_tile/glass{ + name = "Logistics"; + req_one_access = list(48) + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Pr" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/tiled/monotile, +/area/lavaland/base/common) +"Ps" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced/full, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Pu" = ( +/obj/machinery/atmospherics/binary/pump/high_power/on{ + dir = 1; + target_pressure = 15000 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Qo" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Qs" = ( +/obj/structure/catwalk, +/turf/simulated/floor/outdoors/lava, +/area/lavaland/explored) +"QC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"QN" = ( +/obj/structure/bed/chair/sofa/right{ + icon_state = "sofaend_right" + }, +/obj/effect/floor_decal/spline/fancy/wood{ + dir = 9 + }, +/mob/living/simple_mob/animal/passive/mouse/gray{ + name = "Jerry" }, /turf/simulated/floor/wood, /area/lavaland/base/common) @@ -387,61 +1878,272 @@ "Ru" = ( /turf/unsimulated/mineral/triumph, /area/lavaland/explored) -"RA" = ( -/obj/effect/decal/cleanable/cobweb2, -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/large, -/turf/simulated/floor/tiled, +"RE" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/outdoors/lavaland, +/area/lavaland/base/common) +"RJ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/black{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/plating, /area/lavaland/base/common) "RK" = ( -/obj/structure/undies_wardrobe, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/old_tile, -/area/lavaland/base) +/area/lavaland/base/common) "RL" = ( -/turf/simulated/mineral/triumph/rich, +/turf/simulated/mineral/rich/triumph/lavaland, /area/lavaland/explored) "RX" = ( -/turf/simulated/mineral/triumph, +/turf/simulated/mineral/triumph/lavaland, /area/lavaland/unexplored) +"Sa" = ( +/obj/machinery/atmospherics/pipe/tank/air{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) "Sm" = ( /obj/effect/floor_decal/industrial/warning{ dir = 9 }, /turf/simulated/floor/tiled/monotile, /area/lavaland/base/common) -"So" = ( -/obj/structure/closet/crate/freezer/rations, +"Ss" = ( +/obj/structure/table/woodentable, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/lavaland/base/common) -"TW" = ( -/obj/machinery/door/airlock{ - name = "Showers" - }, -/turf/simulated/floor/tiled/old_tile, -/area/lavaland/base) -"UT" = ( -/obj/machinery/shower{ +"SG" = ( +/obj/structure/bed/chair{ dir = 8 }, -/turf/simulated/floor/tiled/old_tile, -/area/lavaland/base) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/carpet/oracarpet, +/area/lavaland/base/common) +"SH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"SJ" = ( +/turf/simulated/floor/reinforced/airmix, +/area/lavaland/base/common) +"SZ" = ( +/obj/structure/table/standard, +/obj/item/roller, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Ty" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"TA" = ( +/obj/structure/grille, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"TJ" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/firecloset, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"TQ" = ( +/obj/structure/closet/secure_closet/personal, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/carpet/purcarpet, +/area/lavaland/base/common) +"TW" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Ui" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 4 + }, +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/structure/grille, +/obj/structure/window/phoronreinforced{ + dir = 8 + }, +/obj/structure/window/phoronreinforced/full, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"UG" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/polarized{ + dir = 8; + id = "wind_orange" + }, +/obj/structure/window/reinforced/full, +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"UU" = ( +/obj/machinery/light/small, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"UV" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 8 + }, +/obj/machinery/meter, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Vw" = ( +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) "VA" = ( -/obj/structure/closet/crate/large, +/obj/machinery/vending/fitness, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"VD" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"VT" = ( +/obj/machinery/media/jukebox{ + icon_state = "superjuke-nopower"; + state_base = "superjuke" + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"VX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"VY" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/alarm/alarms_hidden{ + pixel_y = 22; + req_one_access = list(48) + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"Wb" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 4 + }, /turf/simulated/floor/tiled, /area/lavaland/base/common) "Wf" = ( -/obj/structure/closet/crate, -/turf/simulated/floor/tiled, -/area/lavaland/base) -"Wv" = ( -/obj/machinery/door/airlock{ - name = "Recovery" +/obj/machinery/air_sensor{ + frequency = 1443; + id_tag = "air_sensor"; + output = 7 }, -/turf/simulated/floor/tiled/monotile, +/turf/simulated/floor/reinforced/airmix, +/area/lavaland/base/common) +"Wh" = ( +/obj/machinery/mining/brace{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/lavaland/base/common) +"Wj" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Wv" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, /area/lavaland/base/common) "Wy" = ( -/turf/simulated/wall, -/area/lavaland/base) +/obj/machinery/portable_atmospherics/canister/air, +/turf/simulated/floor/reinforced/airmix, +/area/lavaland/base/common) +"WG" = ( +/obj/structure/table/marble, +/obj/item/storage/box/donkpockets, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) "WK" = ( /obj/machinery/hyperpad/centre{ map_pad_id = "lavaland_away"; @@ -450,33 +2152,166 @@ }, /turf/simulated/floor/tiled/monotile, /area/lavaland/base/common) -"WW" = ( -/obj/machinery/door/airlock{ - name = "Recovery" +"WR" = ( +/obj/machinery/atmospherics/pipe/simple/visible/cyan{ + dir = 8 }, -/turf/simulated/floor/carpet/purcarpet, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 1 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"WV" = ( +/obj/machinery/door/firedoor{ + req_one_access = list(48) + }, +/obj/effect/map_helper/airlock/door/ext_door, +/obj/machinery/door/airlock/glass_external{ + req_one_access = list(48) + }, +/obj/machinery/airlock_sensor/airlock_exterior{ + dir = 4; + pixel_x = 10; + pixel_y = 25 + }, +/obj/effect/map_helper/airlock/sensor/ext_sensor, +/turf/simulated/floor/plating, /area/lavaland/base/common) "WX" = ( /turf/simulated/floor/outdoors/lava, /area/lavaland/explored) +"WZ" = ( +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 9 + }, +/obj/structure/cable/green{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Xi" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) "Xq" = ( -/turf/simulated/mineral/triumph, +/turf/simulated/mineral/triumph/lavaland, /area/lavaland/base) "XG" = ( /obj/structure/closet/crate/medical, /turf/simulated/floor/tiled, /area/lavaland/base/common) -"Yw" = ( -/obj/machinery/recharge_station, -/obj/machinery/light{ +"XQ" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/turf/simulated/floor/wood, +/area/lavaland/base/common) +"Yb" = ( +/obj/machinery/door/airlock/glass_medical{ + name = "Triage"; + req_one_access = list(48) + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"Yn" = ( +/obj/machinery/atmospherics/portables_connector{ dir = 4 }, -/turf/simulated/floor/tiled/monotile, -/area/lavaland/base) -"ZJ" = ( -/obj/structure/curtain/open/shower/engineering, +/obj/machinery/portable_atmospherics/canister/air/airlock, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"YJ" = ( +/obj/machinery/meter, +/obj/machinery/atmospherics/pipe/simple/visible/red{ + dir = 10 + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Zg" = ( +/obj/machinery/shower{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals10, /turf/simulated/floor/tiled/old_tile, -/area/lavaland/base) +/area/lavaland/base/common) +"Zh" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable/green{ + d2 = 8; + icon_state = "0-8" + }, +/turf/simulated/floor/plating, +/area/lavaland/base/common) +"Zw" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/mining/brace{ + dir = 8 + }, +/turf/simulated/floor/tiled/dark, +/area/lavaland/base/common) +"ZG" = ( +/obj/structure/table/standard, +/obj/structure/bedsheetbin, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/old_tile, +/area/lavaland/base/common) +"ZI" = ( +/obj/structure/dispenser/oxygen, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"ZJ" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -28 + }, +/turf/simulated/floor/tiled/old_tile, +/area/lavaland/base/common) +"ZO" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) +"ZZ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/lavaland/base/common) (1,1,1) = {" Ru @@ -757,8 +2592,8 @@ MX MX MX MX -WX -WX +DG +DG gy Ru "} @@ -898,10 +2733,10 @@ RX RX RX RX -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (4,1,1) = {" @@ -1040,10 +2875,10 @@ xd RX RX RX -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (5,1,1) = {" @@ -1182,10 +3017,10 @@ xd xd xd xd -WX +DG MX -WX -WX +DG +DG Ru "} (6,1,1) = {" @@ -1324,10 +3159,10 @@ xd xd xd xd -WX +DG MX -WX -WX +DG +DG Ru "} (7,1,1) = {" @@ -1466,10 +3301,10 @@ xd xd xd xd -WX +DG MX -WX -WX +DG +DG Ru "} (8,1,1) = {" @@ -1608,10 +3443,10 @@ xd xd xd xd -WX +DG MX -WX -WX +DG +DG Ru "} (9,1,1) = {" @@ -1750,10 +3585,10 @@ xd xd xd xd -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (10,1,1) = {" @@ -1892,10 +3727,10 @@ xd xd xd xd -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (11,1,1) = {" @@ -2034,10 +3869,10 @@ xd xd xd xd -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (12,1,1) = {" @@ -2176,10 +4011,10 @@ RL RL RL RL -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (13,1,1) = {" @@ -2318,10 +4153,10 @@ RL RL RL RL -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (14,1,1) = {" @@ -2437,9 +4272,9 @@ MX MX MX MX -WX -WX -WX +DG +DG +DG MX MX MX @@ -2460,10 +4295,10 @@ RL RL RL RL -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (15,1,1) = {" @@ -2577,17 +4412,17 @@ MX MX WX WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG MX MX MX @@ -2602,10 +4437,10 @@ RL RL RL RL -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (16,1,1) = {" @@ -2719,19 +4554,19 @@ WX WX WX WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG MX MX MX @@ -2744,10 +4579,10 @@ RL RL RL RL -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (17,1,1) = {" @@ -2861,21 +4696,21 @@ WX WX WX WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG MX MX MX @@ -2886,10 +4721,10 @@ RL RL RL RL -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (18,1,1) = {" @@ -3004,9 +4839,9 @@ MX MX MX MX -WX +DG MX -WX +DG MX MX MX @@ -3014,12 +4849,12 @@ MX MX MX MX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG MX MX MX @@ -3028,10 +4863,10 @@ RL RL RL RL -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (19,1,1) = {" @@ -3158,22 +4993,22 @@ MX MX MX MX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG MX MX RL RL RL RL -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (20,1,1) = {" @@ -3302,20 +5137,20 @@ MX MX MX MX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG MX RL RL RL RL -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (21,1,1) = {" @@ -3445,19 +5280,19 @@ MX MX MX MX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG RL RL RL RL -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (22,1,1) = {" @@ -3589,17 +5424,17 @@ MX MX MX MX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG MX -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (23,1,1) = {" @@ -3733,15 +5568,15 @@ MX MX MX MX -WX -WX -WX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG +DG +DG +DG Ru "} (24,1,1) = {" @@ -3855,35 +5690,35 @@ lb lb MX MX -WX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG +DG MX MX MX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG Ru "} (25,1,1) = {" @@ -3998,34 +5833,34 @@ MX MX MX MX -WX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG +DG MX -WX -WX -WX -WX +DG +DG +DG +DG MX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG MX -WX -WX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG +DG +DG Ru "} (26,1,1) = {" @@ -4145,29 +5980,29 @@ MX MX MX MX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG MX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG MX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG MX -WX -WX -WX +DG +DG +DG Ru "} (27,1,1) = {" @@ -4286,30 +6121,30 @@ MX MX MX MX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX -WX +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG +DG MX -WX -WX +DG +DG Ru "} (28,1,1) = {" @@ -4436,22 +6271,22 @@ Xq Xq Xq Xq -tg -tg -tg +gA +gA +gA +bx +bx +bx +bx +bx +bx +bx Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -tg -WX -WX -WX -WX +gA +DG +DG +DG +DG Ru "} (29,1,1) = {" @@ -4577,23 +6412,23 @@ Xq Xq Xq Xq -tg -tg -tg +gA +gA +gA +bx +bx +bx +bx +bx +bx +bx Xq Xq Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -WX +DG MX -WX -WX +DG +DG Ru "} (30,1,1) = {" @@ -4719,23 +6554,23 @@ Xq Xq Xq Xq -tg -tg +gA +gA +bx +bx +bx +bx +bx +bx +bx Xq Xq Xq Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -WX -WX -WX -WX +DG +DG +DG +DG Ru "} (31,1,1) = {" @@ -4863,13 +6698,13 @@ Xq tg tg tg -Xq -Xq -Xq -Xq -Xq -Xq -Xq +bx +bx +bx +bx +bx +bx +bx Xq Xq Xq @@ -4999,20 +6834,20 @@ Xq Xq Xq Xq -Xq -Xq +bx +bx tg tg tg -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq +bx +bx +AO +TA +TA +AO +AO +UG +AO Xq Xq Xq @@ -5134,27 +6969,27 @@ MQ MQ Xq Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq +bx +bx +bx +bx +bx +bx +bx +bx +bx +bx +bx +AO +yp +AO +AO +zs +QR +db +oC +tE +AO Xq Xq Xq @@ -5275,8 +7110,8 @@ Xq MQ MQ MQ -MQ -MQ +qb +bx MQ MQ Xq @@ -5284,19 +7119,19 @@ Xq Xq Xq Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq +bx +bx +bx +AO +vE +Gt +db +fX +sQ +JG +CU +SG +AO Xq Xq Xq @@ -5416,29 +7251,29 @@ MX Xq MQ MQ -MQ -MQ -MQ -MQ -Wy -Wy -Wy -Wy -Wy -Wy +AO +Ui +AO +AO +AO +AO +AO +AO +AO +AO +AO +TA +AO +AO Hr -Wy -Wy -Wy -Hr -Wy -Hr -Hr -Wy -Xq -Xq -Xq -Xq +qU +mz +nE +rK +db +nG +rE +AO Xq Xq Xq @@ -5554,33 +7389,33 @@ MX MX MX MX -MX -Xq -MQ -MQ -MQ -MQ -MQ -MQ +AO +AO +AO +AO +AO +ax +AO +AO Wy Wf -Wf -Wf -Wy +AO +fh +hf kr QN NH -Wy -Mv +Dm +db nz -Wy -zs -QR -Wy -Xq -Xq -Xq -Xq +IR +db +ew +qF +db +AO +AO +AO Xq Xq Xq @@ -5696,32 +7531,32 @@ RL WX WX WX -MX -Xq -MQ -MQ -MQ -MQ -MQ -MQ -Wy +mN +pQ +Mw +Pu +FW +ig +AO +AO +SJ AG -aN +AO kq -Wy +Cq Oo pJ hU -Wy -oG -nz -cZ +oj +db +db +db +db ew -ew -Wy -Wy -Wy -Wy +SH +Fq +xF +Xq Xq Xq Xq @@ -5838,32 +7673,32 @@ RL WX WX WX -MX -Xq -MQ -MQ -MQ -MQ -MQ -MQ -Wy +mN +EE +gv +Pu +so +FQ +AO +AO +AO fg -aN -kq -Wy -GZ -GZ -GZ -Wy -Wy -Wy -Wy -sG +AO +xJ +wN +HB +HB +HB +HB +NN ew -Wy +ew +ew +ew +DH tv -Qy -Wy +xF +Xq Xq Xq Xq @@ -5980,32 +7815,32 @@ RL WX WX WX -MX -Xq -MQ -MQ -MQ -MQ -MQ -MQ -Wy +mN +zd +km +EE +bJ +RJ +Yn +Sa +uA eT -aN -kq -Wy -GZ -GZ -GZ -Wy -LX +AO +VY +NW +XQ +HB +HB +HB +HB AJ Bs ew ew Wv -tv -Yw -Wy +Ss +xF +Xq Xq Xq Xq @@ -6122,32 +7957,32 @@ RL WX WX WX -MX +mN +lm +CX +gR +qc +tU +vz +lX +Iq +ig +AO +lD +WG +Xi +HB +VT +Bf +db +db +db +db +ew +SH +jk +xF Xq -MQ -MQ -MQ -MQ -MQ -MQ -Wy -Wf -aN -kq -Wy -GZ -GZ -GZ -Wy -bb -AJ -Wy -ew -ew -Wy -Wy -Wy -Wy Xq Xq Xq @@ -6264,33 +8099,33 @@ RL WX WX WX -MX -Xq -MQ -MQ -MQ -MQ -MQ -MQ -Wy +mN +YJ +WZ +Ce +UV +WR +pW +pi +ig vA -aN -kq -Wy -QQ +AO +AO +AO +wN GT -QQ -Wy -Wy -Wy -Wy -sG +db +db +db +FI +Bx +db ew -Wy -uE -mZ -Wy -Xq +bp +db +AO +AO +AO Xq Xq Xq @@ -6406,33 +8241,33 @@ RL WX WX WX -MX -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Wy -fg +mN +bG +oK +wC +ls +fm +ki +VX +mm +ia +aN aN -kq gH -ew -ew -ew +ZZ +nC +ui +JR db -fE -ew +ws yX -ew -ew -WW -uE -uE -Wy -Xq +GE +nE +rK +db +Kq +fo +AO Xq Xq Xq @@ -6548,33 +8383,33 @@ RL WX WX WX -MX -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Wy -eT -aN -kq -kq -ew -QR +mN +ra +oK +Gu +kH +AO +AO +AO +AO +AO +AO +AO +AO +Bp ew db -eF -ew +JM db -ew -ew -Wy +Pb +CP +db +fX +Jl uE qE -Wy -Xq +nK +AO Xq Xq Xq @@ -6690,33 +8525,33 @@ RL WX WX WX -MX -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Wy -Wy -Wy -Wy -Wy +AO +AO +HA +re +AO +AO +Zg +Zg +db +cY +ZG +OB +db +Wb ew +db +db +db +db +db +db ew -ew -LN -Pt -ew -ml -ew -ew -Wy -Wy -Wy -Wy -Xq +or +db +TQ +Ln +AO Xq Xq Xq @@ -6832,33 +8667,33 @@ RL WX WX WX -MX -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Wy +AO +CB +Zh +nZ +Lr +AO +ch +qA +dx +rM RK hQ -Wy +gF +Ga +VD +db +BM +Zw +AA +Wh +AO ew -ew -ew -ew -ew -ew -nr -ew -ew -ew -Wy -Wy -Xq -Xq +FF +AO +AO +AO +AO Xq Xq Xq @@ -6974,33 +8809,33 @@ RL WX WX WX -MX -Xq -Xq -Xq -Xq -Xq -Xq -Wy -Wy -Wy -Wy -hQ -Wy -Wy -ew -ew +AO +TJ +zv +Lg +mt +AO +dX +dX +db +db +db +dx +db +qp +gd +db nr -nr -er +lA +lA CL -ew -ew -ew -ew -Wy -Wy -Xq +AO +Du +Wj +sN +uS +UU +AO Xq Xq Xq @@ -7116,36 +8951,36 @@ RL WX WX WX -MX -Xq -Xq -Xq -Xq -Xq -Xq -Wy -HM -HM +AO +AO +AO +AO +AO +AO +AO +AO +AO +AO ZJ -hQ -hQ -Wy -ew +qA +db +Al ew +Pk ew +lF +gd ew +zm +or Sm gE Pr ew -ew -ew -yY -Xq -Xq -Xq +Ps Xq Xq +bx WX WX WX @@ -7264,30 +9099,30 @@ Xq Xq Xq Xq +hp Xq -Wy -qJ -hQ -Wy -Wy -hQ +Xq +AO +Jx +EX +db TW -ew -ew -ew -ew +ib +ib +ib +pn +nE +nE +CO +rK Hz WK Ch ew -ew -ew -EB -Xq -Xq -Xq -Xq +xF Xq +bx +bx lb WX WX @@ -7407,28 +9242,28 @@ Xq Xq Xq Xq -Wy -UT -UT -ZJ -hQ -hQ -Wy -ew -ew +Xq +AO +AO +db +db +db +Ll ew +db +ZO +Ty +VD ew +zm +or qz Lj Js ew -ew -ew -yY -Xq -Xq -Xq -Xq +Ps +bx +bx Xq WX WX @@ -7549,28 +9384,28 @@ Xq Xq Xq Xq -Wy -Wy -Wy -Wy -hQ -Wy -Wy -ew -ew -ew -ew -ew -ew -ew -ew -ew -ew -Wy -Wy -Xq -Xq Xq +AO +gn +hN +oM +Yb +bs +ew +db +ZI +Qo +ew +ND +AO +pz +nE +KC +VD +OV +AO +bx +bx Xq lb WX @@ -7692,28 +9527,28 @@ Xq Xq Xq Xq -Xq -Wy +AO +hi iz -hQ -Wy +vW +db VA +Au +db +zk +Qo ew -XG -Wy -ew -ew -ew -Wy -iE -ew -ew -Wy -Xq -Xq -Xq -Xq -Xq +Mc +AO +AO +AO +HU +AO +AO +AO +bx +bx +bx WX WX WX @@ -7834,24 +9669,24 @@ Xq Xq Xq Xq -Xq -Wy -Wy -Wy -Wy -RA -ew -So -Wy -do +AO +XG +yI +SZ +AO +AO +AO +AO +Cl +Qo ew eU -Wy -iE -ew -Wy -Wy -Xq +AO +AO +NV +iz +jE +AO Xq tg tg @@ -7976,24 +9811,24 @@ Xq Xq Xq Xq -Xq -Xq -Xq -Xq -Wy -Hr -Hr -Hr -Wy -Wy -Hr -Wy -Wy -Hr -Hr -Wy -Xq -Xq +AO +AI +AI +mq +AO +bx +bx +AO +AO +nx +Cr +AO +AO +AO +NV +wY +mJ +AO Xq tg tg @@ -8120,24 +9955,24 @@ Xq Xq Xq Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq +bx +bx +bx +bx +bx +bx +ip +hr +KB +xF +bx +ip +Vw +yI +gf +xF +bx +bx Xq Xq WX @@ -8260,26 +10095,26 @@ tg Xq Xq Xq +bx +bx +bx +bx Xq Xq +bx +bx +AO +Gj +sP +AO +bx +AO +AI +AI +mq +AO Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq +bx Xq Xq WX @@ -8409,16 +10244,16 @@ Xq Xq Xq Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq +bx +ip +QC +KB +xF +bx +bx +bx +bx +bx Xq Xq Xq @@ -8551,15 +10386,15 @@ Xq Xq Xq Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq +bx +AO +WV +KX +AO +bx +bx +bx +bx Xq Xq Xq @@ -8689,18 +10524,18 @@ MQ MQ Xq Xq +bx +bx +bx Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq +bx +ub +bx +bx +RE +bx +bx +bx Xq Xq Xq @@ -8833,14 +10668,14 @@ Xq Xq Xq Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq -Xq +bx +bx +bx +bx +bx +bx +bx +bx Xq Xq Xq @@ -8976,14 +10811,14 @@ Xq Xq Xq Xq +bx +bx Xq Xq Xq -Xq -Xq -Xq -Xq -Xq +bx +bx +bx Xq Xq Xq @@ -9124,9 +10959,9 @@ MX MX MX MX -MX -MX -MX +lb +lb +lb MX MX MX @@ -9266,8 +11101,8 @@ WX MX MX MX -RL -MX +lb +lb lb lb lb @@ -9854,7 +11689,7 @@ Ru Ru MX MX -WX +MX WX WX WX @@ -11262,7 +13097,7 @@ WX WX WX WX -RL +MX MX MX WX @@ -11403,7 +13238,7 @@ WX WX WX WX -RL +MX MX MX WX @@ -11545,7 +13380,7 @@ WX WX WX MX -RL +MX MX MX WX @@ -11686,7 +13521,7 @@ WX WX WX MX -RL +MX MX MX MX @@ -11828,7 +13663,7 @@ WX WX WX MX -RL +MX MX MX MX @@ -11969,7 +13804,7 @@ WX WX WX WX -RL +MX MX MX MX @@ -13074,7 +14909,7 @@ MX MX MX MX -Fj +MX RX RX xd @@ -18566,7 +20401,7 @@ RX RX RX MX -Fj +MX MX MX MX @@ -18855,7 +20690,7 @@ MX MX MX MX -Fj +MX MX MX MX @@ -19141,7 +20976,7 @@ RX RX RX RX -Fj +MX MX RX RX diff --git a/maps/nsv_triumph/submaps/lavaland/shelter.dmm b/maps/nsv_triumph/submaps/lavaland/shelter.dmm index fba5faac3d0..b560030232d 100644 --- a/maps/nsv_triumph/submaps/lavaland/shelter.dmm +++ b/maps/nsv_triumph/submaps/lavaland/shelter.dmm @@ -13,6 +13,9 @@ /obj/effect/decal/remains/human, /turf/simulated/floor/wood, /area/lavaland/idleruins) +"i" = ( +/turf/simulated/wall, +/area/template_noop) "n" = ( /turf/simulated/wall, /area/lavaland/idleruins) @@ -28,6 +31,10 @@ /obj/structure/table/woodentable, /turf/simulated/floor/wood, /area/lavaland/idleruins) +"x" = ( +/obj/structure/boulder, +/turf/simulated/floor/outdoors/lavaland, +/area/template_noop) "y" = ( /obj/structure/boulder, /turf/simulated/floor/wood, @@ -69,9 +76,9 @@ }, /turf/simulated/floor/wood, /area/lavaland/idleruins) -"V" = ( -/obj/structure/boulder, -/turf/simulated/floor/outdoors/lavaland, +"W" = ( +/obj/structure/bed/double, +/turf/simulated/floor/wood/broken, /area/lavaland/idleruins) "X" = ( /turf/simulated/floor/outdoors/lavaland, @@ -91,24 +98,24 @@ a "} (2,1,1) = {" a -a -a -a -a -a -a -a +x +i +i +i +i +i +i a a "} (3,1,1) = {" a -V -n -n -n -n n +d +d +W +d +B n a a diff --git a/maps/nsv_triumph/submaps/mining_planet/mining_planet.dmm b/maps/nsv_triumph/submaps/mining_planet/mining_planet.dmm index 6bf8aa5dead..4dca314190c 100644 --- a/maps/nsv_triumph/submaps/mining_planet/mining_planet.dmm +++ b/maps/nsv_triumph/submaps/mining_planet/mining_planet.dmm @@ -15,7 +15,7 @@ /turf/simulated/mineral/floor/ignore_cavegen, /area/mining_planet/explored) "w" = ( -/turf/simulated/mineral/triumph/rich, +/turf/simulated/mineral/rich/triumph, /area/mining_planet/unexplored) "A" = ( /turf/simulated/mineral/triumph, diff --git a/maps/nsv_triumph/triumph_turfs.dm b/maps/nsv_triumph/triumph_turfs.dm index 2a7838db71f..ea6510f57f9 100644 --- a/maps/nsv_triumph/triumph_turfs.dm +++ b/maps/nsv_triumph/triumph_turfs.dm @@ -34,7 +34,7 @@ initial_gas_mix = GAS_STRING_VACUUM //This proc is responsible for ore generation on surface turfs -/turf/simulated/mineral/triumph/make_ore(var/rare_ore) +/turf/simulated/mineral/make_ore(var/rare_ore) if(mineral || ignore_mapgen) return var/mineral_name @@ -68,7 +68,7 @@ UpdateMineral() update_icon() -/turf/simulated/mineral/triumph/rich/make_ore(var/rare_ore) +/turf/simulated/mineral/rich/make_ore(var/rare_ore) if(mineral || ignore_mapgen) return var/mineral_name diff --git a/tgui/public/tgui-panel.bundle.css b/tgui/public/tgui-panel.bundle.css index 96887e32fd0..19cb59430dd 100644 --- a/tgui/public/tgui-panel.bundle.css +++ b/tgui/public/tgui-panel.bundle.css @@ -1,2 +1 @@ -body,html{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.debug-layout,.debug-layout :not(g):not(path){color:hsla(0,0%,100%,.9)!important;background:transparent!important;outline:1px solid hsla(0,0%,100%,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout :not(g):not(path):hover{outline-color:hsla(0,0%,100%,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .far,.Button .fas{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .far,.Button--hasContent .fas{margin-right:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.Button--color--black:hover{transition:color 0ms,background-color 0ms}.Button--color--black:focus{transition:color .1s,background-color .1s}.Button--color--black:focus,.Button--color--black:hover{background-color:#0a0a0a;color:#fff}.Button--color--white{transition:color 50ms,background-color 50ms;background-color:#d9d9d9;color:#000}.Button--color--white:hover{transition:color 0ms,background-color 0ms}.Button--color--white:focus{transition:color .1s,background-color .1s}.Button--color--white:focus,.Button--color--white:hover{background-color:#f3f3f3;color:#000}.Button--color--red{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--red:hover{transition:color 0ms,background-color 0ms}.Button--color--red:focus{transition:color .1s,background-color .1s}.Button--color--red:focus,.Button--color--red:hover{background-color:#d52b2b;color:#fff}.Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#d95e0c;color:#fff}.Button--color--orange:hover{transition:color 0ms,background-color 0ms}.Button--color--orange:focus{transition:color .1s,background-color .1s}.Button--color--orange:focus,.Button--color--orange:hover{background-color:#ed6f1d;color:#fff}.Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.Button--color--yellow:focus{transition:color .1s,background-color .1s}.Button--color--yellow:focus,.Button--color--yellow:hover{background-color:#f3d00e;color:#000}.Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#9aad14;color:#fff}.Button--color--olive:hover{transition:color 0ms,background-color 0ms}.Button--color--olive:focus{transition:color .1s,background-color .1s}.Button--color--olive:focus,.Button--color--olive:hover{background-color:#afc41f;color:#fff}.Button--color--green{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--color--green:hover{transition:color 0ms,background-color 0ms}.Button--color--green:focus{transition:color .1s,background-color .1s}.Button--color--green:focus,.Button--color--green:hover{background-color:#27ab46;color:#fff}.Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#009a93;color:#fff}.Button--color--teal:hover{transition:color 0ms,background-color 0ms}.Button--color--teal:focus{transition:color .1s,background-color .1s}.Button--color--teal:focus,.Button--color--teal:hover{background-color:#0aafa8;color:#fff}.Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#1c71b1;color:#fff}.Button--color--blue:hover{transition:color 0ms,background-color 0ms}.Button--color--blue:focus{transition:color .1s,background-color .1s}.Button--color--blue:focus,.Button--color--blue:hover{background-color:#2883c8;color:#fff}.Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#552dab;color:#fff}.Button--color--violet:hover{transition:color 0ms,background-color 0ms}.Button--color--violet:focus{transition:color .1s,background-color .1s}.Button--color--violet:focus,.Button--color--violet:hover{background-color:#653ac1;color:#fff}.Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#8b2baa;color:#fff}.Button--color--purple:hover{transition:color 0ms,background-color 0ms}.Button--color--purple:focus{transition:color .1s,background-color .1s}.Button--color--purple:focus,.Button--color--purple:hover{background-color:#9e38c1;color:#fff}.Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#cf2082;color:#fff}.Button--color--pink:hover{transition:color 0ms,background-color 0ms}.Button--color--pink:focus{transition:color .1s,background-color .1s}.Button--color--pink:focus,.Button--color--pink:hover{background-color:#dd3794;color:#fff}.Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#8c5836;color:#fff}.Button--color--brown:hover{transition:color 0ms,background-color 0ms}.Button--color--brown:focus{transition:color .1s,background-color .1s}.Button--color--brown:focus,.Button--color--brown:hover{background-color:#a06844;color:#fff}.Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#646464;color:#fff}.Button--color--grey:hover{transition:color 0ms,background-color 0ms}.Button--color--grey:focus{transition:color .1s,background-color .1s}.Button--color--grey:focus,.Button--color--grey:hover{background-color:#757575;color:#fff}.Button--color--good{transition:color 50ms,background-color 50ms;background-color:#4d9121;color:#fff}.Button--color--good:hover{transition:color 0ms,background-color 0ms}.Button--color--good:focus{transition:color .1s,background-color .1s}.Button--color--good:focus,.Button--color--good:hover{background-color:#5da52d;color:#fff}.Button--color--average{transition:color 50ms,background-color 50ms;background-color:#cd7a0d;color:#fff}.Button--color--average:hover{transition:color 0ms,background-color 0ms}.Button--color--average:focus{transition:color .1s,background-color .1s}.Button--color--average:focus,.Button--color--average:hover{background-color:#e68d18;color:#fff}.Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--bad:hover{transition:color 0ms,background-color 0ms}.Button--color--bad:focus{transition:color .1s,background-color .1s}.Button--color--bad:focus,.Button--color--bad:hover{background-color:#d52b2b;color:#fff}.Button--color--label{transition:color 50ms,background-color 50ms;background-color:#657a94;color:#fff}.Button--color--label:hover{transition:color 0ms,background-color 0ms}.Button--color--label:focus{transition:color .1s,background-color .1s}.Button--color--label:focus,.Button--color--label:hover{background-color:#7b8da4;color:#fff}.Button--color--default{transition:color 50ms,background-color 50ms;background-color:#3e6189;color:#fff}.Button--color--default:hover{transition:color 0ms,background-color 0ms}.Button--color--default:focus{transition:color .1s,background-color .1s}.Button--color--default:focus,.Button--color--default:hover{background-color:#4c729d;color:#fff}.Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--caution:hover{transition:color 0ms,background-color 0ms}.Button--color--caution:focus{transition:color .1s,background-color .1s}.Button--color--caution:focus,.Button--color--caution:hover{background-color:#f3d00e;color:#000}.Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--danger:hover{transition:color 0ms,background-color 0ms}.Button--color--danger:focus{transition:color .1s,background-color .1s}.Button--color--danger:focus,.Button--color--danger:hover{background-color:#d52b2b;color:#fff}.Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#202020;color:#fff;background-color:rgba(32,32,32,0);color:hsla(0,0%,100%,.5)}.Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.Button--color--transparent:focus{transition:color .1s,background-color .1s}.Button--color--transparent:focus,.Button--color--transparent:hover{background-color:#2c2c2c;color:#fff}.Button--disabled{background-color:#999!important}.Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--selected:hover{transition:color 0ms,background-color 0ms}.Button--selected:focus{transition:color .1s,background-color .1s}.Button--selected:focus,.Button--selected:hover{background-color:#27ab46;color:#fff}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid hsla(0,0%,100%,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid hsla(0,0%,100%,.1)}.Dropdown{position:relative}.Dropdown__control{position:relative;display:inline-block;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.4166666667em;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.5em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;overflow-y:scroll}.Dropdown__menu,.Dropdown__menu-noscroll{position:absolute;z-index:5;width:8.3333333333em;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-noscroll{overflow-y:auto}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s}.Dropdown__menuentry:hover{background-color:hsla(0,0%,100%,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.FatalError{display:block!important;position:absolute;top:0;left:0;right:0;bottom:0;padding:12px;font-size:12px;font-family:Consolas,monospace;color:#fff;background-color:#00d;z-index:1000;overflow:hidden;text-align:center}.FatalError__logo{display:inline-block;text-align:left;font-size:10px;line-height:8px;position:relative;margin-top:12px;top:0;left:0;animation:FatalError__rainbow 2s linear infinite alternate,FatalError__shadow 4s linear infinite alternate,FatalError__tfmX 3s infinite alternate,FatalError__tfmY 4s infinite alternate;white-space:pre-wrap;word-break:break-all}.FatalError__header{margin-top:12px}.FatalError__stack{text-align:left;white-space:pre-wrap;word-break:break-all;margin-top:24px;margin-bottom:24px}.FatalError__footer{margin-bottom:24px}@keyframes FatalError__rainbow{0%{color:#ff0}50%{color:#0ff}to{color:#f0f}}@keyframes FatalError__shadow{0%{left:-2px;text-shadow:4px 0 #f0f}50%{left:0;text-shadow:0 0 #0ff}to{left:2px;text-shadow:-4px 0 #ff0}}@keyframes FatalError__tfmX{0%{left:15px}to{left:-15px}}@keyframes FatalError__tfmY{to{top:-15px}}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:table!important;width:105%;border-collapse:collapse;border-spacing:0}.Flex--iefix:after{content:"";display:table-cell;width:5%}.Flex--iefix--column{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Flex--iefix--column>.Flex__item--iefix{display:table-row!important}.Flex--iefix--column>.Flex__item--iefix--grow{height:100%!important}.Flex__item--iefix{display:table-cell!important;width:1%!important;min-width:99%}.Flex__item--iefix--grow{width:auto!important}.Flex--spacing--1{margin:0 -.25em}.Flex--spacing--1>.Flex__item{margin:0 .25em}.Flex--spacing--2{margin:0 -.5em}.Flex--spacing--2>.Flex__item{margin:0 .5em}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:transparent;line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(180deg,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,0));border-radius:50%;box-shadow:0 .05em .5em 0 rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:hsla(0,0%,100%,.9)}.Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:transparent;stroke:hsla(0,0%,100%,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:transparent;stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:transparent;transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__content{padding:.66em .5em}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--scrollable .Section__content{overflow-y:scroll;overflow-x:hidden}.Section--fill .Section__content{flex-grow:1}.Section--iefix.Section--fill{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--iefix.Section--fill .Section__content{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--level--1 .Section__titleText{font-size:1.1666666667em}.Section--level--2 .Section__titleText{font-size:1.0833333333em}.Section--level--3 .Section__titleText{font-size:1em}.Section--level--2,.Section--level--3{background-color:transparent;box-shadow:none;margin-left:-.5em;margin-right:-.5em}.Slider{cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid transparent;border-right:.4166666667em solid transparent;border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__cell--header,.Table__row--header .Table__cell{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden}.Tabs--vertical{flex-direction:column}.Tabs--horizontal{margin-bottom:.5em}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;color:hsla(0,0%,100%,.5);min-height:2.25em;min-width:4em}.Tab--selected{color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{margin-left:.25em}.Tab__left,.Tab__right{min-width:1.5em;text-align:center}.Tab__right{margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid transparent;border-bottom:.1666666667em solid transparent}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid transparent;border-right:.1666666667em solid transparent}.Tabs--vertical .Tab--selected{border-right:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#8b9bb0}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:transparent}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:transparent;color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.Tooltip{position:absolute;top:0;left:0;right:0;bottom:0;font-style:normal;font-weight:400}.Tooltip:after{position:absolute;display:block;white-space:pre;z-index:2;padding:.5em .75em;transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;text-align:left;content:attr(data-tooltip);transition:all .15s;background-color:#000;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em}.Tooltip:hover:after{transition:all 70ms;pointer-events:none;visibility:visible;opacity:1}.Tooltip--long:after{width:20.8333333333em;white-space:normal}.Tooltip--top:after{bottom:100%;left:50%;transform:translateX(-50%) translateY(.5em)}.Tooltip--top:hover:after{transform:translateX(-50%) translateY(-.5em)}.Tooltip--top-left:after{bottom:100%;right:50%;transform:translateX(12px) translateY(8px)}.Tooltip--top-left:hover:after{transform:translateX(12px) translateY(-8px)}.Tooltip--top-right:after{top:0;right:0;transform:translateX(100%) translateY(-50%)}.Tooltip--top-right:hover:after{transform:translateX(100%) translateY(-100%)}.Tooltip--bottom:after{top:100%;left:50%;transform:translateX(-50%) translateY(-.5em)}.Tooltip--bottom:hover:after{transform:translateX(-50%) translateY(.5em)}.Tooltip--bottom-left:after{top:100%;right:50%;transform:translateX(12px) translateY(-.5em)}.Tooltip--bottom-left:hover:after{transform:translateX(12px) translateY(.5em)}.Tooltip--bottom-right:after{top:100%;left:50%;transform:translateX(-12px) translateY(-.5em)}.Tooltip--bottom-right:hover:after{transform:translateX(-12px) translateY(.5em)}.Tooltip--left:after{top:50%;right:100%;transform:translateX(.5em) translateY(-50%)}.Tooltip--left:hover:after,.Tooltip--right:after{transform:translateX(-.5em) translateY(-50%)}.Tooltip--right:after{top:50%;left:100%}.Tooltip--right:hover:after{transform:translateX(.5em) translateY(-50%)}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid hsla(0,0%,54.9%,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;bottom:1em;left:1em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.Window{bottom:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(180deg,#202020 0,#202020)}.Window,.Window__titleBar{position:fixed;top:0;left:0}.Window__titleBar{z-index:1;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}a{color:#397ea5}a.visited,a:visited{color:#7c00e6}a.popt{text-decoration:none}.popup{position:fixed;top:50%;left:50%;background:#ddd}.popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.popup .close:hover,.popup .head{background:#999}.popup .head{color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.popup input[type=text]:active,.popup input[type=text]:focus,.popup input[type=text]:hover{border-color:green}.popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.popup input[type=submit]:active,.popup input[type=submit]:focus,.popup input[type=submit]:hover{background:#aaa;cursor:pointer}.changeFont{padding:10px}.changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.changeFont a:hover{background:#ccc}.highlightPopup{padding:10px;text-align:center}.highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.highlightPopup input.highlightColor{background-color:#ff0}.highlightPopup input.highlightTermSubmit{margin-top:5px}.contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.contextMenu a:hover{background-color:#ccc}.filterMessages{padding:5px}.filterMessages div{padding:2px 0}.icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:active,.motd a:hover,.motd a:link,.motd a:visited{color:#a4bad6}.admin,.adminooc,.bold,.looc,.medal,.name,.ooc,.prefix,.yell{font-weight:700}.emote,.italic,.italics{font-style:italic}.highlight{background:#ff0}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}h1.alert,h2.alert{color:#a4bad6}em{font-style:normal}.ooc,em{font-weight:700}.ooc{color:#cca300}.looc{color:#69c}.aooc,.looc{font-weight:700}.aooc{color:#b8002e}.event_manager{color:#603;font-weight:700}.adminobserverooc{color:#09c;font-weight:700}.adminooc{color:#3d5bc3;font-weight:700}.adminsay{color:#ff4500;font-weight:700}.adminobserver{color:#960;font-weight:700}.admin{color:#5975da;font-weight:700}.log_message{color:#386aff;font-weight:700}.debug_error{color:red;font-weight:700}.debug_warning{color:red}.debug_debug{color:#00f}.debug_trace{color:#888}.mentorsay{color:#e236d8;font-weight:700}.mentorsay_admin{color:#8a2be2;font-weight:700}.mod_channel{color:#735638}.mod_channel,.name{font-weight:700}.deadsay{color:#e2c1ff}.binarysay{color:#1e90ff}.binarysay a{color:#0f0}.binarysay a:active,.binarysay a:visited{color:#8f8}.radio{color:#1ecc43}.sciradio{color:#c68cfa}.comradio{color:#5064d3}.secradio{color:#dd3535}.medradio{color:#57b8f0}.engradio{color:#f37746}.supradio{color:#966c28}.servradio{color:#6ca729}.expradio{color:#666}.syndradio{color:#8f4a4b}.centcomradio{color:#2681a5}.aiprivradio{color:#d65d95}.redteamradio{color:#f44}.blueteamradio{color:#3434fd}.yell{font-weight:700}.alert{color:#d82020}.emote{font-style:italic}.userdanger{font-weight:700;font-size:185%}.danger,.userdanger,.warning{color:#c51e1e}.warning{font-style:italic}.alertwarning{color:red;font-weight:700}.boldwarning{font-style:italic}.announce,.boldannounce,.boldwarning{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.rose{color:#ff5050}.info{color:#9ab0ff}.notice{color:#6685f5}.tinynotice{font-size:85%}.smallnotice,.tinynotice{color:#6685f5;font-style:italic}.smallnotice{font-size:90%}.boldnotice{color:#6685f5;font-weight:700}.hear{font-style:italic}.adminnotice,.hear{color:#6685f5}.adminhelp{color:red;font-weight:700}.unconscious{color:#a4bad6;font-weight:700}.suicide{color:#ff5050;font-style:italic}.green{color:#059223}.red{color:red}.blue{color:#215cff}.nicegreen{color:#059223}.userlove{color:#ff42a6;font-weight:700;text-shadow:0 0 6px #82365e}.love,.userlove{font-style:italic}.love{color:#ff4591;text-shadow:0 0 6px #994449}.cult{color:#aa1c1c}.cultbold,.cultitalic{color:#aa1c1c;font-style:italic}.cultbold{font-weight:700}.cultboldtalic,.cultlarge{color:#aa1c1c;font-weight:700;font-size:185%}.narsie{font-size:925%}.narsie,.narsiesmall{color:#aa1c1c;font-weight:700}.narsiesmall{font-size:370%}.colossus{color:#7f282a;font-size:310%}.hierophant{color:#b441ee;font-weight:700;font-style:italic}.hierophant_warning{color:#c56bf1;font-style:italic}.purple{color:#9956d3}.holoparasite{color:#88809c}.revennotice{color:#c099e2}.revenbignotice,.revenboldnotice{color:#c099e2;font-weight:700}.revenbignotice{font-size:185%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:185%}.umbra{color:#5000a0}.umbra_emphasis,.umbra_large{color:#5000a0;font-weight:700;font-style:italic}.umbra_large{font-size:3}.deconversion_message{color:#5000a0;font-size:185%;font-style:italic}.brass,.heavy_brass{color:#be8700}.heavy_brass{font-weight:700;font-style:italic}.large_brass{color:#be8700;font-size:185%}.big_brass{font-size:185%}.big_brass,.ratvar{color:#be8700;font-weight:700;font-style:italic}.ratvar{font-size:6}.alloy{color:#42474d}.heavy_alloy,.nezbere_large{color:#42474d;font-weight:700;font-style:italic}.nezbere_large{font-size:185%}.nezbere{font-weight:700;font-style:italic}.nezbere,.nezbere_small{color:#42474d}.sevtug_large{font-size:185%}.sevtug,.sevtug_large{color:#af0aaf;font-weight:700;font-style:italic}.sevtug_small{color:#af0aaf}.inathneq_large{font-size:185%}.inathneq,.inathneq_large{color:#1e8ce1;font-weight:700;font-style:italic}.inathneq_small{color:#1e8ce1}.nzcrentr_large{font-size:185%}.nzcrentr,.nzcrentr_large{color:#daaa18;font-weight:700;font-style:italic}.nzcrentr_small{color:#daaa18}.neovgre_large{font-size:185%}.neovgre,.neovgre_large{color:#6e001a;font-weight:700;font-style:italic}.neovgre_small{color:#6e001a}.ghostalert{color:#60f;font-style:italic;font-weight:700}.alien{color:#855d85}.alertalien,.noticealien{color:#059223}.alertalien{font-weight:700}.changeling{color:#059223;font-style:italic}.alertsyndie{color:red}.alertsyndie,.spider{font-size:185%;font-weight:700}.spider{color:#80f}.interface{color:#750e75}.sans{font-family:Comic Sans MS,cursive,sans-serif}.papyrus{font-family:Papyrus,cursive,sans-serif}.robot{font-family:Courier New,cursive,sans-serif}.command_headset{font-weight:700;font-size:160%}.small{font-size:60%}.big{font-size:185%}.reallybig{font-size:245%}.extremelybig{font-size:310%}.greentext{color:#059223;font-size:185%}.redtext{color:#c51e1e;font-size:185%}.yellowtext{color:#fc0;font-size:185%}.clown{color:#ff70c1;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.spooky{color:#ff9100}.hypnophrase{color:#202020;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}.velvet{color:#660015;font-weight:700;animation:velvet 5s infinite;animation-direction:alternate}.phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}.icon{height:1em;width:auto}.memo{color:#638500}.memo,.memoedit{text-align:center}.memoedit{font-size:125%}.abductor{color:#c204c2;font-style:italic}.mind_control{color:#df3da9;font-size:100%;font-weight:700;font-style:italic}.slime{color:#00ced1}.drone{color:#848482}.monkey{color:#975032}.swarmer{color:#2c75ff}.resonate{color:#298f85}.monkeyhive{color:#a56408}.monkeylead{color:#af6805;font-size:80%}.connectionClosed,.fatalError{background:red;color:#fff;padding:5px}.connectionClosed.restored{background:green}.internal.boldnshit{color:#3d5bc3;font-weight:700}.text-normal{font-weight:400;font-style:normal}.hidden{display:none;visibility:hidden}.ml-1{margin-left:1em}.ml-2{margin-left:2em}.ml-3{margin-left:3em}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden}.theme-light .Tabs--vertical{flex-direction:column}.theme-light .Tabs--horizontal{margin-bottom:.5em}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em}.theme-light .Tab--selected{color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid transparent;border-bottom:.1666666667em solid transparent}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid transparent;border-right:.1666666667em solid transparent}.theme-light .Tabs--vertical .Tab--selected{border-right:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#353535}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--scrollable .Section__content{overflow-y:scroll;overflow-x:hidden}.theme-light .Section--fill .Section__content{flex-grow:1}.theme-light .Section--iefix.Section--fill{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--iefix.Section--fill .Section__content{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--level--1 .Section__titleText{font-size:1.1666666667em}.theme-light .Section--level--2 .Section__titleText{font-size:1.0833333333em}.theme-light .Section--level--3 .Section__titleText{font-size:1em}.theme-light .Section--level--2,.theme-light .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-.5em;margin-right:-.5em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .far,.theme-light .Button .fas{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .far,.theme-light .Button--hasContent .fas{margin-right:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.theme-light .Button--color--black:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--black:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--black:focus,.theme-light .Button--color--black:hover{background-color:#0a0a0a;color:#fff}.theme-light .Button--color--white{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-light .Button--color--white:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--white:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--white:focus,.theme-light .Button--color--white:hover{background-color:#d7d7d7;color:#000}.theme-light .Button--color--red{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-light .Button--color--red:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--red:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--red:focus,.theme-light .Button--color--red:hover{background-color:#bc2828;color:#fff}.theme-light .Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#c0530b;color:#fff}.theme-light .Button--color--orange:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--orange:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--orange:focus,.theme-light .Button--color--orange:hover{background-color:#d76316;color:#fff}.theme-light .Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#bfa303;color:#fff}.theme-light .Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--yellow:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--yellow:focus,.theme-light .Button--color--yellow:hover{background-color:#d7b90d;color:#fff}.theme-light .Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#889912;color:#fff}.theme-light .Button--color--olive:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--olive:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--olive:focus,.theme-light .Button--color--olive:hover{background-color:#9cae1d;color:#fff}.theme-light .Button--color--green{transition:color 50ms,background-color 50ms;background-color:#188532;color:#fff}.theme-light .Button--color--green:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--green:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--green:focus,.theme-light .Button--color--green:hover{background-color:#24993f;color:#fff}.theme-light .Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#008882;color:#fff}.theme-light .Button--color--teal:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--teal:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--teal:focus,.theme-light .Button--color--teal:hover{background-color:#0a9c95;color:#fff}.theme-light .Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#19649c;color:#fff}.theme-light .Button--color--blue:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--blue:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--blue:focus,.theme-light .Button--color--blue:hover{background-color:#2475b1;color:#fff}.theme-light .Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#4b2897;color:#fff}.theme-light .Button--color--violet:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--violet:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--violet:focus,.theme-light .Button--color--violet:hover{background-color:#5a35ac;color:#fff}.theme-light .Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#7a2696;color:#fff}.theme-light .Button--color--purple:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--purple:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--purple:focus,.theme-light .Button--color--purple:hover{background-color:#8d33ab;color:#fff}.theme-light .Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#b61d73;color:#fff}.theme-light .Button--color--pink:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--pink:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--pink:focus,.theme-light .Button--color--pink:hover{background-color:#ce2985;color:#fff}.theme-light .Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#7c4d2f;color:#fff}.theme-light .Button--color--brown:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--brown:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--brown:focus,.theme-light .Button--color--brown:hover{background-color:#8f5d3c;color:#fff}.theme-light .Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-light .Button--color--grey:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--grey:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--grey:focus,.theme-light .Button--color--grey:hover{background-color:#d7d7d7;color:#000}.theme-light .Button--color--good{transition:color 50ms,background-color 50ms;background-color:#44801d;color:#fff}.theme-light .Button--color--good:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--good:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--good:focus,.theme-light .Button--color--good:hover{background-color:#539329;color:#fff}.theme-light .Button--color--average{transition:color 50ms,background-color 50ms;background-color:#b56b0b;color:#fff}.theme-light .Button--color--average:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--average:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--average:focus,.theme-light .Button--color--average:hover{background-color:#cd7d16;color:#fff}.theme-light .Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-light .Button--color--bad:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--bad:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--bad:focus,.theme-light .Button--color--bad:hover{background-color:#bc2828;color:#fff}.theme-light .Button--color--label{transition:color 50ms,background-color 50ms;background-color:#2c2c2c;color:#fff}.theme-light .Button--color--label:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--label:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--label:focus,.theme-light .Button--color--label:hover{background-color:#393939;color:#fff}.theme-light .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#bbb;color:#000}.theme-light .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--default:focus,.theme-light .Button--color--default:hover{background-color:#d3d3d3;color:#000}.theme-light .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-light .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--caution:focus,.theme-light .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-light .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-light .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--danger:focus,.theme-light .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-light .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#eee;color:#000;background-color:hsla(0,0%,93.3%,0);color:rgba(0,0,0,.5)}.theme-light .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--transparent:focus,.theme-light .Button--color--transparent:hover{background-color:#fcfcfc;color:#000}.theme-light .Button--disabled{background-color:#363636!important}.theme-light .Button--selected{transition:color 50ms,background-color 50ms;background-color:#0668b8;color:#fff}.theme-light .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--selected:focus{transition:color .1s,background-color .1s}.theme-light .Button--selected:focus,.theme-light .Button--selected:hover{background-color:#107ad0;color:#fff}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#fff;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;text-align:right}.theme-light .Input,.theme-light .NumberInput__input{line-height:1.4166666667em;background-color:#fff;color:#000}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;padding:0 .3333333333em;margin-right:.1666666667em;overflow:visible}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:transparent}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:transparent;color:#000;color:inherit}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#fff;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:transparent;color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:transparent;line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(180deg,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,0));border-radius:50%;box-shadow:0 .05em .5em 0 rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:hsla(0,0%,100%,.9)}.theme-light .Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:transparent;stroke:hsla(0,0%,100%,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:transparent;stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Slider{cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid transparent;border-right:.4166666667em solid transparent;border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:transparent;transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-light .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(180deg,#eee 0,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,98.8%,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light body,.theme-light html{padding:0;margin:0;height:100%;color:#000}.theme-light body{background:#e0e0e0;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-light img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-light img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-light a{color:#00f}.theme-light a.visited,.theme-light a:visited{color:#f0f}.theme-light a.popt{text-decoration:none}.theme-light .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-light .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-light .popup .close:hover{background:#999}.theme-light .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-light .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-light .popup input[type=text]:active,.theme-light .popup input[type=text]:focus,.theme-light .popup input[type=text]:hover{border-color:green}.theme-light .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-light .popup input[type=submit]:active,.theme-light .popup input[type=submit]:focus,.theme-light .popup input[type=submit]:hover{background:#aaa;cursor:pointer}.theme-light .changeFont{padding:10px}.theme-light .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-light .changeFont a:hover{background:#ccc}.theme-light .highlightPopup{padding:10px;text-align:center}.theme-light .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-light .highlightPopup input.highlightColor{background-color:#ff0}.theme-light .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-light .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-light .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-light .contextMenu a:hover{background-color:#ccc}.theme-light .filterMessages{padding:5px}.theme-light .filterMessages div{padding:2px 0}.theme-light .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-light .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6{color:#638500;text-decoration:underline}.theme-light .motd a,.theme-light .motd a:active,.theme-light .motd a:hover,.theme-light .motd a:link,.theme-light .motd a:visited{color:#638500}.theme-light .admin,.theme-light .adminooc,.theme-light .bold,.theme-light .looc,.theme-light .medal,.theme-light .name,.theme-light .ooc,.theme-light .prefix,.theme-light .yell{font-weight:700}.theme-light .emote,.theme-light .italic,.theme-light .italics{font-style:italic}.theme-light .highlight{background:#ff0}.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-light em{font-style:normal;font-weight:700}.theme-light .ooc{color:#002eb8;font-weight:700}.theme-light .looc{color:#69c;font-weight:700}.theme-light .aooc{color:#b8002e;font-weight:700}.theme-light .event_manager{color:#603;font-weight:700}.theme-light .adminobserverooc{color:#09c;font-weight:700}.theme-light .adminooc{color:#700038;font-weight:700}.theme-light .adminsay{color:#ff4500;font-weight:700}.theme-light .adminobserver{color:#960;font-weight:700}.theme-light .admin{color:#4473ff;font-weight:700}.theme-light .log_message{color:#386aff;font-weight:700}.theme-light .debug_error{color:red;font-weight:700}.theme-light .debug_warning{color:red}.theme-light .debug_debug{color:#00f}.theme-light .debug_trace{color:#888}.theme-light .mentorsay{color:#e236d8;font-weight:700}.theme-light .mentorsay_admin{color:#8a2be2;font-weight:700}.theme-light .mod_channel{color:#735638;font-weight:700}.theme-light .name{font-weight:700}.theme-light .deadsay{color:#5c00e6}.theme-light .binarysay{color:#20c20e;background-color:#000;display:block}.theme-light .binarysay a{color:#0f0}.theme-light .binarysay a:active,.theme-light .binarysay a:visited{color:#8f8}.theme-light .radio{color:green}.theme-light .sciradio{color:#939}.theme-light .comradio{color:#193a7a}.theme-light .secradio{color:#a30000}.theme-light .medradio{color:#337296}.theme-light .engradio{color:#fb5613}.theme-light .supradio{color:#5f4519}.theme-light .servradio{color:#6eaa2c}.theme-light .syndradio{color:#6d3f40}.theme-light .centcomradio{color:#686868}.theme-light .aiprivradio{color:#f0f}.theme-light .redteamradio{color:red}.theme-light .blueteamradio{color:#00f}.theme-light .yell{font-weight:700}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .emote{font-style:italic}.theme-light .userdanger{font-size:185%}.theme-light .bolddanger,.theme-light .userdanger{color:red;font-weight:700}.theme-light .danger{color:red}.theme-light .tinydanger{color:red;font-size:85%}.theme-light .smalldanger{color:red;font-size:90%}.theme-light .warning{color:red;font-style:italic}.theme-light .alertwarning{color:red;font-weight:700}.theme-light .boldwarning{color:red;font-style:italic;font-weight:700}.theme-light .announce{color:#228b22;font-weight:700}.theme-light .boldannounce{color:red;font-weight:700}.theme-light .greenannounce{color:#0f0;font-weight:700}.theme-light .rose{color:#ff5050}.theme-light .info{color:#00c}.theme-light .notice{color:#009}.theme-light .tinynotice{color:#009;font-style:italic;font-size:85%}.theme-light .smallnotice{color:#009;font-size:90%}.theme-light .smallnoticeital{color:#009;font-style:italic;font-size:90%}.theme-light .boldnotice{color:#009;font-weight:700}.theme-light .hear{color:#009;font-style:italic}.theme-light .adminnotice{color:#00f}.theme-light .adminhelp{color:red;font-weight:700}.theme-light .unconscious{color:#00f;font-weight:700}.theme-light .suicide{color:#ff5050;font-style:italic}.theme-light .green{color:#03ff39}.theme-light .red{color:red}.theme-light .blue{color:#00f}.theme-light .nicegreen{color:#14a833}.theme-light .userlove{color:#ff1493;font-style:italic;font-weight:700;text-shadow:0 0 6px #ff6dbc}.theme-light .love{color:#ff006a;font-style:italic;text-shadow:0 0 6px #ff6d6d}.theme-light .cult{color:#960000}.theme-light .cultbold,.theme-light .cultitalic{color:#960000;font-style:italic}.theme-light .cultbold{font-weight:700}.theme-light .cultboldtalic,.theme-light .cultlarge{color:#960000;font-weight:700;font-size:185%}.theme-light .narsie{color:#960000;font-weight:700;font-size:925%}.theme-light .narsiesmall{color:#960000;font-weight:700;font-size:370%}.theme-light .colossus{color:#7f282a;font-size:310%}.theme-light .hierophant{font-weight:700}.theme-light .hierophant,.theme-light .hierophant_warning{color:#609;font-style:italic}.theme-light .purple{color:#5e2d79}.theme-light .holoparasite{color:#35333a}.theme-light .revennotice{color:#1d2953}.theme-light .revenbignotice,.theme-light .revenboldnotice{color:#1d2953;font-weight:700}.theme-light .revenbignotice{font-size:185%}.theme-light .revenminor{color:#823abb}.theme-light .revenwarning{color:#760fbb;font-style:italic}.theme-light .revendanger{color:#760fbb;font-weight:700;font-size:185%}.theme-light .umbra{color:#5000a0}.theme-light .umbra_emphasis,.theme-light .umbra_large{color:#5000a0;font-weight:700;font-style:italic}.theme-light .umbra_large{font-size:3}.theme-light .deconversion_message{color:#5000a0;font-size:185%;font-style:italic}.theme-light .brass{color:#be8700}.theme-light .heavy_brass{color:#be8700;font-weight:700;font-style:italic}.theme-light .big_brass,.theme-light .large_brass{color:#be8700;font-size:185%}.theme-light .big_brass,.theme-light .ratvar{font-weight:700;font-style:italic}.theme-light .ratvar{color:#be8700;font-size:6}.theme-light .alloy{color:#42474d}.theme-light .heavy_alloy,.theme-light .nezbere_large{color:#42474d;font-weight:700;font-style:italic}.theme-light .nezbere_large{font-size:185%}.theme-light .nezbere{color:#42474d;font-weight:700;font-style:italic}.theme-light .nezbere_small{color:#42474d}.theme-light .sevtug_large{font-size:185%}.theme-light .sevtug,.theme-light .sevtug_large{color:#af0aaf;font-weight:700;font-style:italic}.theme-light .sevtug_small{color:#af0aaf}.theme-light .inathneq_large{font-size:185%}.theme-light .inathneq,.theme-light .inathneq_large{color:#1e8ce1;font-weight:700;font-style:italic}.theme-light .inathneq_small{color:#1e8ce1}.theme-light .nzcrentr_large{font-size:185%}.theme-light .nzcrentr,.theme-light .nzcrentr_large{color:#daaa18;font-weight:700;font-style:italic}.theme-light .nzcrentr_small{color:#daaa18}.theme-light .neovgre_large{font-size:185%}.theme-light .neovgre,.theme-light .neovgre_large{color:#6e001a;font-weight:700;font-style:italic}.theme-light .neovgre_small{color:#6e001a}.theme-light .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-light .alien{color:#543354}.theme-light .noticealien{color:#00c000}.theme-light .alertalien{color:#00c000;font-weight:700}.theme-light .changeling{color:purple;font-style:italic}.theme-light .alertsyndie{color:red;font-size:185%;font-weight:700}.theme-light .spider{color:#4d004d;font-weight:700;font-size:185%}.theme-light .interface{color:#303}.theme-light .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-light .papyrus{font-family:Papyrus,cursive,sans-serif}.theme-light .robot{font-family:Courier New,cursive,sans-serif}.theme-light .command_headset{font-weight:700;font-size:160%}.theme-light .small{font-size:60%}.theme-light .big{font-size:185%}.theme-light .reallybig{font-size:245%}.theme-light .extremelybig{font-size:310%}.theme-light .greentext{color:#0f0;font-size:185%}.theme-light .redtext{color:red;font-size:185%}.theme-light .yellowtext{color:#fc0;font-size:185%}.theme-light .clown{color:#ff69bf;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.theme-light .singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.theme-light .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-light .spooky{color:#ff9100}.theme-light .hypnophrase{color:#0d0d0d;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}@keyframes hypnocolor{0%{color:#0d0d0d}25%{color:#410194}50%{color:#7f17d8}75%{color:#410194}to{color:#3bb5d3}}.theme-light .velvet{color:#660015;font-weight:700;animation:velvet 5s infinite;animation-direction:alternate}@keyframes velvet{0%{color:#400020}40%{color:red}50%{color:#f88}60%{color:red}to{color:#400020}}.theme-light .phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}@keyframes phobia{0%{color:#0d0d0d}50%{color:#d00}to{color:#0d0d0d}}.theme-light .icon{height:1em;width:auto}.theme-light .memo{color:#638500;text-align:center}.theme-light .memoedit{text-align:center;font-size:125%}.theme-light .abductor{color:purple;font-style:italic}.theme-light .mind_control{color:#a00d6f;font-size:100%;font-weight:700;font-style:italic}.theme-light .slime{color:#00ced1}.theme-light .drone{color:#848482}.theme-light .monkey{color:#975032}.theme-light .swarmer{color:#2c75ff}.theme-light .resonate{color:#298f85}.theme-light .monkeyhive{color:#774704}.theme-light .monkeylead{color:#774704;font-size:80%}.theme-light .connectionClosed,.theme-light .fatalError{background:red;color:#fff;padding:5px}.theme-light .connectionClosed.restored{background:green}.theme-light .internal.boldnshit{color:#00f;font-weight:700}.theme-light .text-normal{font-weight:400;font-style:normal}.theme-light .hidden{display:none;visibility:hidden}.theme-light .ml-1{margin-left:1em}.theme-light .ml-2{margin-left:2em}.theme-light .ml-3{margin-left:3em} - +body,html{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,:after,:before{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.debug-layout,.debug-layout :not(g):not(path){color:hsla(0,0%,100%,.9)!important;background:transparent!important;outline:1px solid hsla(0,0%,100%,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout :not(g):not(path):hover{outline-color:hsla(0,0%,100%,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .far,.Button .fas{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--hasContent .fa,.Button--hasContent .far,.Button--hasContent .fas{margin-right:.25em}.Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.Button--color--black:hover{transition:color 0ms,background-color 0ms}.Button--color--black:focus{transition:color .1s,background-color .1s}.Button--color--black:focus,.Button--color--black:hover{background-color:#0a0a0a;color:#fff}.Button--color--white{transition:color 50ms,background-color 50ms;background-color:#d9d9d9;color:#000}.Button--color--white:hover{transition:color 0ms,background-color 0ms}.Button--color--white:focus{transition:color .1s,background-color .1s}.Button--color--white:focus,.Button--color--white:hover{background-color:#f3f3f3;color:#000}.Button--color--red{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--red:hover{transition:color 0ms,background-color 0ms}.Button--color--red:focus{transition:color .1s,background-color .1s}.Button--color--red:focus,.Button--color--red:hover{background-color:#d52b2b;color:#fff}.Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#d95e0c;color:#fff}.Button--color--orange:hover{transition:color 0ms,background-color 0ms}.Button--color--orange:focus{transition:color .1s,background-color .1s}.Button--color--orange:focus,.Button--color--orange:hover{background-color:#ed6f1d;color:#fff}.Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.Button--color--yellow:focus{transition:color .1s,background-color .1s}.Button--color--yellow:focus,.Button--color--yellow:hover{background-color:#f3d00e;color:#000}.Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#9aad14;color:#fff}.Button--color--olive:hover{transition:color 0ms,background-color 0ms}.Button--color--olive:focus{transition:color .1s,background-color .1s}.Button--color--olive:focus,.Button--color--olive:hover{background-color:#afc41f;color:#fff}.Button--color--green{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--color--green:hover{transition:color 0ms,background-color 0ms}.Button--color--green:focus{transition:color .1s,background-color .1s}.Button--color--green:focus,.Button--color--green:hover{background-color:#27ab46;color:#fff}.Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#009a93;color:#fff}.Button--color--teal:hover{transition:color 0ms,background-color 0ms}.Button--color--teal:focus{transition:color .1s,background-color .1s}.Button--color--teal:focus,.Button--color--teal:hover{background-color:#0aafa8;color:#fff}.Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#1c71b1;color:#fff}.Button--color--blue:hover{transition:color 0ms,background-color 0ms}.Button--color--blue:focus{transition:color .1s,background-color .1s}.Button--color--blue:focus,.Button--color--blue:hover{background-color:#2883c8;color:#fff}.Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#552dab;color:#fff}.Button--color--violet:hover{transition:color 0ms,background-color 0ms}.Button--color--violet:focus{transition:color .1s,background-color .1s}.Button--color--violet:focus,.Button--color--violet:hover{background-color:#653ac1;color:#fff}.Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#8b2baa;color:#fff}.Button--color--purple:hover{transition:color 0ms,background-color 0ms}.Button--color--purple:focus{transition:color .1s,background-color .1s}.Button--color--purple:focus,.Button--color--purple:hover{background-color:#9e38c1;color:#fff}.Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#cf2082;color:#fff}.Button--color--pink:hover{transition:color 0ms,background-color 0ms}.Button--color--pink:focus{transition:color .1s,background-color .1s}.Button--color--pink:focus,.Button--color--pink:hover{background-color:#dd3794;color:#fff}.Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#8c5836;color:#fff}.Button--color--brown:hover{transition:color 0ms,background-color 0ms}.Button--color--brown:focus{transition:color .1s,background-color .1s}.Button--color--brown:focus,.Button--color--brown:hover{background-color:#a06844;color:#fff}.Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#646464;color:#fff}.Button--color--grey:hover{transition:color 0ms,background-color 0ms}.Button--color--grey:focus{transition:color .1s,background-color .1s}.Button--color--grey:focus,.Button--color--grey:hover{background-color:#757575;color:#fff}.Button--color--good{transition:color 50ms,background-color 50ms;background-color:#4d9121;color:#fff}.Button--color--good:hover{transition:color 0ms,background-color 0ms}.Button--color--good:focus{transition:color .1s,background-color .1s}.Button--color--good:focus,.Button--color--good:hover{background-color:#5da52d;color:#fff}.Button--color--average{transition:color 50ms,background-color 50ms;background-color:#cd7a0d;color:#fff}.Button--color--average:hover{transition:color 0ms,background-color 0ms}.Button--color--average:focus{transition:color .1s,background-color .1s}.Button--color--average:focus,.Button--color--average:hover{background-color:#e68d18;color:#fff}.Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--bad:hover{transition:color 0ms,background-color 0ms}.Button--color--bad:focus{transition:color .1s,background-color .1s}.Button--color--bad:focus,.Button--color--bad:hover{background-color:#d52b2b;color:#fff}.Button--color--label{transition:color 50ms,background-color 50ms;background-color:#657a94;color:#fff}.Button--color--label:hover{transition:color 0ms,background-color 0ms}.Button--color--label:focus{transition:color .1s,background-color .1s}.Button--color--label:focus,.Button--color--label:hover{background-color:#7b8da4;color:#fff}.Button--color--default{transition:color 50ms,background-color 50ms;background-color:#3e6189;color:#fff}.Button--color--default:hover{transition:color 0ms,background-color 0ms}.Button--color--default:focus{transition:color .1s,background-color .1s}.Button--color--default:focus,.Button--color--default:hover{background-color:#4c729d;color:#fff}.Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--caution:hover{transition:color 0ms,background-color 0ms}.Button--color--caution:focus{transition:color .1s,background-color .1s}.Button--color--caution:focus,.Button--color--caution:hover{background-color:#f3d00e;color:#000}.Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--danger:hover{transition:color 0ms,background-color 0ms}.Button--color--danger:focus{transition:color .1s,background-color .1s}.Button--color--danger:focus,.Button--color--danger:hover{background-color:#d52b2b;color:#fff}.Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#202020;color:#fff;background-color:rgba(32,32,32,0);color:hsla(0,0%,100%,.5)}.Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.Button--color--transparent:focus{transition:color .1s,background-color .1s}.Button--color--transparent:focus,.Button--color--transparent:hover{background-color:#2c2c2c;color:#fff}.Button--disabled{background-color:#999!important}.Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--selected:hover{transition:color 0ms,background-color 0ms}.Button--selected:focus{transition:color .1s,background-color .1s}.Button--selected:focus,.Button--selected:hover{background-color:#27ab46;color:#fff}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid hsla(0,0%,100%,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid hsla(0,0%,100%,.1)}.Dropdown{position:relative}.Dropdown__control{position:relative;display:inline-block;font-family:Verdana,sans-serif;font-size:1em;width:8.3333333333em;line-height:1.4166666667em;user-select:none}.Dropdown__arrow-button{float:right;padding-left:.5em;border-left:.0833333333em solid #000;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;overflow-y:scroll}.Dropdown__menu,.Dropdown__menu-noscroll{position:absolute;z-index:5;width:8.3333333333em;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-noscroll{overflow-y:auto}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s}.Dropdown__menuentry:hover{background-color:hsla(0,0%,100%,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.FatalError{display:block!important;position:absolute;top:0;left:0;right:0;bottom:0;padding:12px;font-size:12px;font-family:Consolas,monospace;color:#fff;background-color:#00d;z-index:1000;overflow:hidden;text-align:center}.FatalError__logo{display:inline-block;text-align:left;font-size:10px;line-height:8px;position:relative;margin-top:12px;top:0;left:0;animation:FatalError__rainbow 2s linear infinite alternate,FatalError__shadow 4s linear infinite alternate,FatalError__tfmX 3s infinite alternate,FatalError__tfmY 4s infinite alternate;white-space:pre-wrap;word-break:break-all}.FatalError__header{margin-top:12px}.FatalError__stack{text-align:left;white-space:pre-wrap;word-break:break-all;margin-top:24px;margin-bottom:24px}.FatalError__footer{margin-bottom:24px}@keyframes FatalError__rainbow{0%{color:#ff0}50%{color:#0ff}to{color:#f0f}}@keyframes FatalError__shadow{0%{left:-2px;text-shadow:4px 0 #f0f}50%{left:0;text-shadow:0 0 #0ff}to{left:2px;text-shadow:-4px 0 #ff0}}@keyframes FatalError__tfmX{0%{left:15px}to{left:-15px}}@keyframes FatalError__tfmY{to{top:-15px}}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:table!important;width:105%;border-collapse:collapse;border-spacing:0}.Flex--iefix:after{content:"";display:table-cell;width:5%}.Flex--iefix--column{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Flex--iefix--column>.Flex__item--iefix{display:table-row!important}.Flex--iefix--column>.Flex__item--iefix--grow{height:100%!important}.Flex__item--iefix{display:table-cell!important;width:1%!important;min-width:99%}.Flex__item--iefix--grow{width:auto!important}.Flex--spacing--1{margin:0 -.25em}.Flex--spacing--1>.Flex__item{margin:0 .25em}.Flex--spacing--2{margin:0 -.5em}.Flex--spacing--2>.Flex__item{margin:0 .5em}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:transparent;line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(180deg,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,0));border-radius:50%;box-shadow:0 .05em .5em 0 rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:hsla(0,0%,100%,.9)}.Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:transparent;stroke:hsla(0,0%,100%,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:transparent;stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left;vertical-align:baseline}.LabeledList__label{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:transparent;transition:border-color .5s}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .5s,width .5s}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--black{border:.0833333333em solid #000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border:.0833333333em solid #d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border:.0833333333em solid #bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border:.0833333333em solid #d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border:.0833333333em solid #d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border:.0833333333em solid #9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border:.0833333333em solid #1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border:.0833333333em solid #009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border:.0833333333em solid #1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border:.0833333333em solid #552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border:.0833333333em solid #8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border:.0833333333em solid #cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border:.0833333333em solid #8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border:.0833333333em solid #646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--good{border:.0833333333em solid #4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border:.0833333333em solid #cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border:.0833333333em solid #bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border:.0833333333em solid #657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__content{padding:.66em .5em}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--scrollable .Section__content{overflow-y:scroll;overflow-x:hidden}.Section--fill .Section__content{flex-grow:1}.Section--iefix.Section--fill{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--iefix.Section--fill .Section__content{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--level--1 .Section__titleText{font-size:1.1666666667em}.Section--level--2 .Section__titleText{font-size:1.0833333333em}.Section--level--3 .Section__titleText{font-size:1em}.Section--level--2,.Section--level--3{background-color:transparent;box-shadow:none;margin-left:-.5em;margin-right:-.5em}.Slider{cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid transparent;border-right:.4166666667em solid transparent;border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__cell--header,.Table__row--header .Table__cell{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden}.Tabs--vertical{flex-direction:column}.Tabs--horizontal{margin-bottom:.5em}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;color:hsla(0,0%,100%,.5);min-height:2.25em;min-width:4em}.Tab--selected{color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{margin-left:.25em}.Tab__left,.Tab__right{min-width:1.5em;text-align:center}.Tab__right{margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid transparent;border-bottom:.1666666667em solid transparent}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid transparent;border-right:.1666666667em solid transparent}.Tabs--vertical .Tab--selected{border-right:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#848484}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#8b9bb0}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:transparent}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:transparent;color:#fff;color:inherit}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:transparent;color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.Tooltip{position:absolute;top:0;left:0;right:0;bottom:0;font-style:normal;font-weight:400}.Tooltip:after{position:absolute;display:block;white-space:pre;z-index:2;padding:.5em .75em;transform:translateX(-50%);pointer-events:none;visibility:hidden;opacity:0;text-align:left;content:attr(data-tooltip);transition:all .15s;background-color:#000;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em}.Tooltip:hover:after{transition:all 70ms;pointer-events:none;visibility:visible;opacity:1}.Tooltip--long:after{width:20.8333333333em;white-space:normal}.Tooltip--top:after{bottom:100%;left:50%;transform:translateX(-50%) translateY(.5em)}.Tooltip--top:hover:after{transform:translateX(-50%) translateY(-.5em)}.Tooltip--top-left:after{bottom:100%;right:50%;transform:translateX(12px) translateY(8px)}.Tooltip--top-left:hover:after{transform:translateX(12px) translateY(-8px)}.Tooltip--top-right:after{top:0;right:0;transform:translateX(100%) translateY(-50%)}.Tooltip--top-right:hover:after{transform:translateX(100%) translateY(-100%)}.Tooltip--bottom:after{top:100%;left:50%;transform:translateX(-50%) translateY(-.5em)}.Tooltip--bottom:hover:after{transform:translateX(-50%) translateY(.5em)}.Tooltip--bottom-left:after{top:100%;right:50%;transform:translateX(12px) translateY(-.5em)}.Tooltip--bottom-left:hover:after{transform:translateX(12px) translateY(.5em)}.Tooltip--bottom-right:after{top:100%;left:50%;transform:translateX(-12px) translateY(-.5em)}.Tooltip--bottom-right:hover:after{transform:translateX(-12px) translateY(.5em)}.Tooltip--left:after{top:50%;right:100%;transform:translateX(.5em) translateY(-50%)}.Tooltip--left:hover:after,.Tooltip--right:after{transform:translateX(-.5em) translateY(-50%)}.Tooltip--right:after{top:50%;left:100%}.Tooltip--right:hover:after{transform:translateX(.5em) translateY(-50%)}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid hsla(0,0%,54.9%,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;bottom:1em;left:1em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.Window{bottom:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(180deg,#202020 0,#202020)}.Window,.Window__titleBar{position:fixed;top:0;left:0}.Window__titleBar{z-index:1;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}a{color:#397ea5}a.visited,a:visited{color:#7c00e6}a.popt{text-decoration:none}.popup{position:fixed;top:50%;left:50%;background:#ddd}.popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.popup .close:hover,.popup .head{background:#999}.popup .head{color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.popup input[type=text]:active,.popup input[type=text]:focus,.popup input[type=text]:hover{border-color:green}.popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.popup input[type=submit]:active,.popup input[type=submit]:focus,.popup input[type=submit]:hover{background:#aaa;cursor:pointer}.changeFont{padding:10px}.changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.changeFont a:hover{background:#ccc}.highlightPopup{padding:10px;text-align:center}.highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.highlightPopup input.highlightColor{background-color:#ff0}.highlightPopup input.highlightTermSubmit{margin-top:5px}.contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.contextMenu a:hover{background-color:#ccc}.filterMessages{padding:5px}.filterMessages div{padding:2px 0}.icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:active,.motd a:hover,.motd a:link,.motd a:visited{color:#a4bad6}.admin,.adminooc,.bold,.looc,.medal,.name,.ooc,.prefix,.yell{font-weight:700}.italic,.italics{font-style:italic}.highlight{background:#ff0}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}h1.alert,h2.alert{color:#a4bad6}em{font-style:normal}.ooc,em{font-weight:700}.ooc{color:#cca300}.looc{color:#69c}.aooc,.looc{font-weight:700}.aooc{color:#b8002e}.event_manager{color:#603;font-weight:700}.adminobserverooc{color:#09c;font-weight:700}.adminooc{color:#3d5bc3;font-weight:700}.adminsay{color:#ff4500;font-weight:700}.adminobserver{color:#960;font-weight:700}.admin{color:#5975da;font-weight:700}.log_message{color:#386aff;font-weight:700}.debug_error{color:red;font-weight:700}.debug_warning{color:red}.debug_debug{color:#00f}.debug_trace{color:#888}.mentorsay{color:#e236d8;font-weight:700}.mentorsay_admin{color:#8a2be2;font-weight:700}.mod_channel{color:#735638}.mod_channel,.name{font-weight:700}.deadsay{color:#e2c1ff}.binarysay{color:#1e90ff}.binarysay a{color:#0f0}.binarysay a:active,.binarysay a:visited{color:#8f8}.radio{color:#1ecc43}.sciradio{color:#c68cfa}.comradio{color:#5064d3}.secradio{color:#dd3535}.medradio{color:#57b8f0}.engradio{color:#f37746}.supradio{color:#966c28}.servradio{color:#6ca729}.expradio{color:#666}.syndradio{color:#8f4a4b}.centcomradio{color:#2681a5}.aiprivradio{color:#d65d95}.redteamradio{color:#f44}.blueteamradio{color:#3434fd}.yell{font-weight:700}.alert{color:#d82020}.userdanger{font-weight:700;font-size:185%}.danger,.userdanger,.warning{color:#c51e1e}.warning{font-style:italic}.alertwarning{color:red;font-weight:700}.boldwarning{font-style:italic}.announce,.boldannounce,.boldwarning{color:#c51e1e;font-weight:700}.greenannounce{color:#059223;font-weight:700}.rose{color:#ff5050}.info{color:#9ab0ff}.notice{color:#6685f5}.tinynotice{font-size:85%}.smallnotice,.tinynotice{color:#6685f5;font-style:italic}.smallnotice{font-size:90%}.boldnotice{color:#6685f5;font-weight:700}.hear{font-style:italic}.adminnotice,.hear{color:#6685f5}.adminhelp{color:red;font-weight:700}.unconscious{color:#a4bad6;font-weight:700}.suicide{color:#ff5050;font-style:italic}.green{color:#059223}.red{color:red}.blue{color:#215cff}.nicegreen{color:#059223}.userlove{color:#ff42a6;font-weight:700;text-shadow:0 0 6px #82365e}.love,.userlove{font-style:italic}.love{color:#ff4591;text-shadow:0 0 6px #994449}.cult{color:#aa1c1c}.cultbold,.cultitalic{color:#aa1c1c;font-style:italic}.cultbold{font-weight:700}.cultboldtalic,.cultlarge{color:#aa1c1c;font-weight:700;font-size:185%}.narsie{font-size:925%}.narsie,.narsiesmall{color:#aa1c1c;font-weight:700}.narsiesmall{font-size:370%}.colossus{color:#7f282a;font-size:310%}.hierophant{color:#b441ee;font-weight:700;font-style:italic}.hierophant_warning{color:#c56bf1;font-style:italic}.purple{color:#9956d3}.holoparasite{color:#88809c}.revennotice{color:#c099e2}.revenbignotice,.revenboldnotice{color:#c099e2;font-weight:700}.revenbignotice{font-size:185%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:185%}.umbra{color:#5000a0}.umbra_emphasis,.umbra_large{color:#5000a0;font-weight:700;font-style:italic}.umbra_large{font-size:3}.deconversion_message{color:#5000a0;font-size:185%;font-style:italic}.brass,.heavy_brass{color:#be8700}.heavy_brass{font-weight:700;font-style:italic}.large_brass{color:#be8700;font-size:185%}.big_brass{font-size:185%}.big_brass,.ratvar{color:#be8700;font-weight:700;font-style:italic}.ratvar{font-size:6}.alloy{color:#42474d}.heavy_alloy,.nezbere_large{color:#42474d;font-weight:700;font-style:italic}.nezbere_large{font-size:185%}.nezbere{font-weight:700;font-style:italic}.nezbere,.nezbere_small{color:#42474d}.sevtug_large{font-size:185%}.sevtug,.sevtug_large{color:#af0aaf;font-weight:700;font-style:italic}.sevtug_small{color:#af0aaf}.inathneq_large{font-size:185%}.inathneq,.inathneq_large{color:#1e8ce1;font-weight:700;font-style:italic}.inathneq_small{color:#1e8ce1}.nzcrentr_large{font-size:185%}.nzcrentr,.nzcrentr_large{color:#daaa18;font-weight:700;font-style:italic}.nzcrentr_small{color:#daaa18}.neovgre_large{font-size:185%}.neovgre,.neovgre_large{color:#6e001a;font-weight:700;font-style:italic}.neovgre_small{color:#6e001a}.ghostalert{color:#60f;font-style:italic;font-weight:700}.alien{color:#855d85}.alertalien,.noticealien{color:#059223}.alertalien{font-weight:700}.changeling{color:#059223;font-style:italic}.alertsyndie{color:red}.alertsyndie,.spider{font-size:185%;font-weight:700}.spider{color:#80f}.interface{color:#750e75}.sans{font-family:Comic Sans MS,cursive,sans-serif}.papyrus{font-family:Papyrus,cursive,sans-serif}.robot{font-family:Courier New,cursive,sans-serif}.alien{color:#543354}.tajaran{color:#803b56}.tajaran_signlang{color:#941c1c}.akhani{color:#ac398c}.skrell{color:#00b0b3}.skrellfar{color:#70fcff}.soghun{color:#228b22}.solcom{color:#22228b}.changeling{color:purple}.sergal{color:#07f}.birdsongc{color:#c90}.vulpkanin{color:#b97a57}.enochian{color:#848a33;word-spacing:4pt;font-family:Lucida Sans Unicode,Lucida Grande,sans-serif}.daemon,.enochian{letter-spacing:-1pt}.daemon{color:#5e339e;word-spacing:0;font-family:Courier New,Courier,monospace}.bug{color:#9e9e39}.vox{color:#a0a}.zaddat{color:#941c1c}.rough{font-family:Trebuchet MS,cursive,sans-serif}.say_quote{font-family:Georgia,Verdana,sans-serif}.terminus{font-family:Times New Roman,Times,serif,sans-serif}.interface{color:#303}.command_headset{font-weight:700;font-size:160%}.small{font-size:60%}.big{font-size:185%}.reallybig{font-size:245%}.extremelybig{font-size:310%}.greentext{color:#059223;font-size:185%}.redtext{color:#c51e1e;font-size:185%}.yellowtext{color:#fc0;font-size:185%}.clown{color:#ff70c1;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.spooky{color:#ff9100}.hypnophrase{color:#202020;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}.velvet{color:#660015;font-weight:700;animation:velvet 5s infinite;animation-direction:alternate}.phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}.icon{height:1em;width:auto}.memo{color:#638500}.memo,.memoedit{text-align:center}.memoedit{font-size:125%}.abductor{color:#c204c2;font-style:italic}.mind_control{color:#df3da9;font-size:100%;font-weight:700;font-style:italic}.slime{color:#00ced1}.drone{color:#848482}.monkey{color:#975032}.swarmer{color:#2c75ff}.resonate{color:#298f85}.monkeyhive{color:#a56408}.monkeylead{color:#af6805;font-size:80%}.connectionClosed,.fatalError{background:red;color:#fff;padding:5px}.connectionClosed.restored{background:green}.internal.boldnshit{color:#3d5bc3;font-weight:700}.text-normal{font-weight:400;font-style:normal}.hidden{display:none;visibility:hidden}.ml-1{margin-left:1em}.ml-2{margin-left:2em}.ml-3{margin-left:3em}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden}.theme-light .Tabs--vertical{flex-direction:column}.theme-light .Tabs--horizontal{margin-bottom:.5em}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em}.theme-light .Tab--selected{color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid transparent;border-bottom:.1666666667em solid transparent}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid transparent;border-right:.1666666667em solid transparent}.theme-light .Tabs--vertical .Tab--selected{border-right:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#353535}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--scrollable .Section__content{overflow-y:scroll;overflow-x:hidden}.theme-light .Section--fill .Section__content{flex-grow:1}.theme-light .Section--iefix.Section--fill{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--iefix.Section--fill .Section__content{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--level--1 .Section__titleText{font-size:1.1666666667em}.theme-light .Section--level--2 .Section__titleText{font-size:1.0833333333em}.theme-light .Section--level--3 .Section__titleText{font-size:1em}.theme-light .Section--level--2,.theme-light .Section--level--3{background-color:transparent;box-shadow:none;margin-left:-.5em;margin-right:-.5em}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .far,.theme-light .Button .fas{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .far,.theme-light .Button--hasContent .fas{margin-right:.25em}.theme-light .Button--ellipsis{overflow:hidden;text-overflow:ellipsis}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.theme-light .Button--color--black:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--black:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--black:focus,.theme-light .Button--color--black:hover{background-color:#0a0a0a;color:#fff}.theme-light .Button--color--white{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-light .Button--color--white:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--white:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--white:focus,.theme-light .Button--color--white:hover{background-color:#d7d7d7;color:#000}.theme-light .Button--color--red{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-light .Button--color--red:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--red:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--red:focus,.theme-light .Button--color--red:hover{background-color:#bc2828;color:#fff}.theme-light .Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#c0530b;color:#fff}.theme-light .Button--color--orange:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--orange:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--orange:focus,.theme-light .Button--color--orange:hover{background-color:#d76316;color:#fff}.theme-light .Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#bfa303;color:#fff}.theme-light .Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--yellow:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--yellow:focus,.theme-light .Button--color--yellow:hover{background-color:#d7b90d;color:#fff}.theme-light .Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#889912;color:#fff}.theme-light .Button--color--olive:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--olive:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--olive:focus,.theme-light .Button--color--olive:hover{background-color:#9cae1d;color:#fff}.theme-light .Button--color--green{transition:color 50ms,background-color 50ms;background-color:#188532;color:#fff}.theme-light .Button--color--green:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--green:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--green:focus,.theme-light .Button--color--green:hover{background-color:#24993f;color:#fff}.theme-light .Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#008882;color:#fff}.theme-light .Button--color--teal:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--teal:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--teal:focus,.theme-light .Button--color--teal:hover{background-color:#0a9c95;color:#fff}.theme-light .Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#19649c;color:#fff}.theme-light .Button--color--blue:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--blue:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--blue:focus,.theme-light .Button--color--blue:hover{background-color:#2475b1;color:#fff}.theme-light .Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#4b2897;color:#fff}.theme-light .Button--color--violet:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--violet:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--violet:focus,.theme-light .Button--color--violet:hover{background-color:#5a35ac;color:#fff}.theme-light .Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#7a2696;color:#fff}.theme-light .Button--color--purple:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--purple:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--purple:focus,.theme-light .Button--color--purple:hover{background-color:#8d33ab;color:#fff}.theme-light .Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#b61d73;color:#fff}.theme-light .Button--color--pink:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--pink:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--pink:focus,.theme-light .Button--color--pink:hover{background-color:#ce2985;color:#fff}.theme-light .Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#7c4d2f;color:#fff}.theme-light .Button--color--brown:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--brown:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--brown:focus,.theme-light .Button--color--brown:hover{background-color:#8f5d3c;color:#fff}.theme-light .Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-light .Button--color--grey:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--grey:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--grey:focus,.theme-light .Button--color--grey:hover{background-color:#d7d7d7;color:#000}.theme-light .Button--color--good{transition:color 50ms,background-color 50ms;background-color:#44801d;color:#fff}.theme-light .Button--color--good:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--good:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--good:focus,.theme-light .Button--color--good:hover{background-color:#539329;color:#fff}.theme-light .Button--color--average{transition:color 50ms,background-color 50ms;background-color:#b56b0b;color:#fff}.theme-light .Button--color--average:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--average:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--average:focus,.theme-light .Button--color--average:hover{background-color:#cd7d16;color:#fff}.theme-light .Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-light .Button--color--bad:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--bad:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--bad:focus,.theme-light .Button--color--bad:hover{background-color:#bc2828;color:#fff}.theme-light .Button--color--label{transition:color 50ms,background-color 50ms;background-color:#2c2c2c;color:#fff}.theme-light .Button--color--label:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--label:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--label:focus,.theme-light .Button--color--label:hover{background-color:#393939;color:#fff}.theme-light .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#bbb;color:#000}.theme-light .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--default:focus,.theme-light .Button--color--default:hover{background-color:#d3d3d3;color:#000}.theme-light .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-light .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--caution:focus,.theme-light .Button--color--caution:hover{background-color:#d67313;color:#fff}.theme-light .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-light .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--danger:focus,.theme-light .Button--color--danger:hover{background-color:#afb30a;color:#fff}.theme-light .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#eee;color:#000;background-color:hsla(0,0%,93.3%,0);color:rgba(0,0,0,.5)}.theme-light .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--transparent:focus,.theme-light .Button--color--transparent:hover{background-color:#fcfcfc;color:#000}.theme-light .Button--disabled{background-color:#363636!important}.theme-light .Button--selected{transition:color 50ms,background-color 50ms;background-color:#0668b8;color:#fff}.theme-light .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--selected:focus{transition:color .1s,background-color .1s}.theme-light .Button--selected:focus,.theme-light .Button--selected:hover{background-color:#107ad0;color:#fff}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#fff;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;text-align:right}.theme-light .Input,.theme-light .NumberInput__input{line-height:1.4166666667em;background-color:#fff;color:#000}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;padding:0 .3333333333em;margin-right:.1666666667em;overflow:visible}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:transparent}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:transparent;color:#000;color:inherit}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#fff;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:transparent;color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:hsla(0,0%,100%,.45)}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:transparent;line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(180deg,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,0));border-radius:50%;box-shadow:0 .05em .5em 0 rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:hsla(0,0%,100%,.9)}.theme-light .Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:transparent;stroke:hsla(0,0%,100%,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:transparent;stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Slider{cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid transparent;border-right:.4166666667em solid transparent;border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translateX(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-radius:.16em;background-color:transparent;transition:border-color .5s}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .5s,width .5s}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--black{border:.0833333333em solid #000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border:.0833333333em solid #c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border:.0833333333em solid #bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border:.0833333333em solid #889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border:.0833333333em solid #188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border:.0833333333em solid #008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border:.0833333333em solid #19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border:.0833333333em solid #4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border:.0833333333em solid #7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border:.0833333333em solid #b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border:.0833333333em solid #7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border:.0833333333em solid #bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--good{border:.0833333333em solid #44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border:.0833333333em solid #b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border:.0833333333em solid #a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border:.0833333333em solid #2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-light .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(180deg,#eee 0,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:hsla(0,0%,98.8%,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s,background-color .25s}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light body,.theme-light html{padding:0;margin:0;height:100%;color:#000}.theme-light body{background:#e0e0e0;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-light img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-light img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-light a{color:#00f}.theme-light a.visited,.theme-light a:visited{color:#f0f}.theme-light a.popt{text-decoration:none}.theme-light .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-light .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-light .popup .close:hover{background:#999}.theme-light .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-light .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-light .popup input[type=text]:active,.theme-light .popup input[type=text]:focus,.theme-light .popup input[type=text]:hover{border-color:green}.theme-light .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-light .popup input[type=submit]:active,.theme-light .popup input[type=submit]:focus,.theme-light .popup input[type=submit]:hover{background:#aaa;cursor:pointer}.theme-light .changeFont{padding:10px}.theme-light .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-light .changeFont a:hover{background:#ccc}.theme-light .highlightPopup{padding:10px;text-align:center}.theme-light .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-light .highlightPopup input.highlightColor{background-color:#ff0}.theme-light .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-light .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-light .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-light .contextMenu a:hover{background-color:#ccc}.theme-light .filterMessages{padding:5px}.theme-light .filterMessages div{padding:2px 0}.theme-light .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-light .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6{color:#638500;text-decoration:underline}.theme-light .motd a,.theme-light .motd a:active,.theme-light .motd a:hover,.theme-light .motd a:link,.theme-light .motd a:visited{color:#638500}.theme-light .admin,.theme-light .adminooc,.theme-light .bold,.theme-light .looc,.theme-light .medal,.theme-light .name,.theme-light .ooc,.theme-light .prefix,.theme-light .yell{font-weight:700}.theme-light .highlight,.theme-light .italic,.theme-light .italics{background:#ff0}.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-light em{font-style:normal;font-weight:700}.theme-light .ooc{color:#002eb8;font-weight:700}.theme-light .looc{color:#69c;font-weight:700}.theme-light .aooc{color:#b8002e;font-weight:700}.theme-light .event_manager{color:#603;font-weight:700}.theme-light .adminobserverooc{color:#09c;font-weight:700}.theme-light .adminooc{color:#700038;font-weight:700}.theme-light .adminsay{color:#ff4500;font-weight:700}.theme-light .adminobserver{color:#960;font-weight:700}.theme-light .admin{color:#4473ff;font-weight:700}.theme-light .log_message{color:#386aff;font-weight:700}.theme-light .debug_error{color:red;font-weight:700}.theme-light .debug_warning{color:red}.theme-light .debug_debug{color:#00f}.theme-light .debug_trace{color:#888}.theme-light .mentorsay{color:#e236d8;font-weight:700}.theme-light .mentorsay_admin{color:#8a2be2;font-weight:700}.theme-light .mod_channel{color:#735638;font-weight:700}.theme-light .name{font-weight:700}.theme-light .deadsay{color:#5c00e6}.theme-light .binarysay{color:#20c20e;background-color:#000;display:block}.theme-light .binarysay a{color:#0f0}.theme-light .binarysay a:active,.theme-light .binarysay a:visited{color:#8f8}.theme-light .radio{color:green}.theme-light .sciradio{color:#939}.theme-light .comradio{color:#193a7a}.theme-light .secradio{color:#a30000}.theme-light .medradio{color:#337296}.theme-light .engradio{color:#fb5613}.theme-light .supradio{color:#5f4519}.theme-light .servradio{color:#6eaa2c}.theme-light .syndradio{color:#6d3f40}.theme-light .centcomradio{color:#686868}.theme-light .aiprivradio{color:#f0f}.theme-light .redteamradio{color:red}.theme-light .blueteamradio{color:#00f}.theme-light .yell{font-weight:700}.theme-light .alert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .userdanger{font-size:185%}.theme-light .bolddanger,.theme-light .userdanger{color:red;font-weight:700}.theme-light .danger{color:red}.theme-light .tinydanger{color:red;font-size:85%}.theme-light .smalldanger{color:red;font-size:90%}.theme-light .warning{color:red;font-style:italic}.theme-light .alertwarning{color:red;font-weight:700}.theme-light .boldwarning{color:red;font-style:italic;font-weight:700}.theme-light .announce{color:#228b22;font-weight:700}.theme-light .boldannounce{color:red;font-weight:700}.theme-light .greenannounce{color:#0f0;font-weight:700}.theme-light .rose{color:#ff5050}.theme-light .info{color:#00c}.theme-light .notice{color:#009}.theme-light .tinynotice{color:#009;font-style:italic;font-size:85%}.theme-light .smallnotice{color:#009;font-size:90%}.theme-light .smallnoticeital{color:#009;font-style:italic;font-size:90%}.theme-light .boldnotice{color:#009;font-weight:700}.theme-light .hear{color:#009;font-style:italic}.theme-light .adminnotice{color:#00f}.theme-light .adminhelp{color:red;font-weight:700}.theme-light .unconscious{color:#00f;font-weight:700}.theme-light .suicide{color:#ff5050;font-style:italic}.theme-light .green{color:#03ff39}.theme-light .red{color:red}.theme-light .blue{color:#00f}.theme-light .nicegreen{color:#14a833}.theme-light .userlove{color:#ff1493;font-style:italic;font-weight:700;text-shadow:0 0 6px #ff6dbc}.theme-light .love{color:#ff006a;font-style:italic;text-shadow:0 0 6px #ff6d6d}.theme-light .cult{color:#960000}.theme-light .cultbold,.theme-light .cultitalic{color:#960000;font-style:italic}.theme-light .cultbold{font-weight:700}.theme-light .cultboldtalic,.theme-light .cultlarge{color:#960000;font-weight:700;font-size:185%}.theme-light .narsie{color:#960000;font-weight:700;font-size:925%}.theme-light .narsiesmall{color:#960000;font-weight:700;font-size:370%}.theme-light .colossus{color:#7f282a;font-size:310%}.theme-light .hierophant{font-weight:700}.theme-light .hierophant,.theme-light .hierophant_warning{color:#609;font-style:italic}.theme-light .purple{color:#5e2d79}.theme-light .holoparasite{color:#35333a}.theme-light .revennotice{color:#1d2953}.theme-light .revenbignotice,.theme-light .revenboldnotice{color:#1d2953;font-weight:700}.theme-light .revenbignotice{font-size:185%}.theme-light .revenminor{color:#823abb}.theme-light .revenwarning{color:#760fbb;font-style:italic}.theme-light .revendanger{color:#760fbb;font-weight:700;font-size:185%}.theme-light .umbra{color:#5000a0}.theme-light .umbra_emphasis,.theme-light .umbra_large{color:#5000a0;font-weight:700;font-style:italic}.theme-light .umbra_large{font-size:3}.theme-light .deconversion_message{color:#5000a0;font-size:185%;font-style:italic}.theme-light .brass{color:#be8700}.theme-light .heavy_brass{color:#be8700;font-weight:700;font-style:italic}.theme-light .big_brass,.theme-light .large_brass{color:#be8700;font-size:185%}.theme-light .big_brass,.theme-light .ratvar{font-weight:700;font-style:italic}.theme-light .ratvar{color:#be8700;font-size:6}.theme-light .alloy{color:#42474d}.theme-light .heavy_alloy,.theme-light .nezbere_large{color:#42474d;font-weight:700;font-style:italic}.theme-light .nezbere_large{font-size:185%}.theme-light .nezbere{color:#42474d;font-weight:700;font-style:italic}.theme-light .nezbere_small{color:#42474d}.theme-light .sevtug_large{font-size:185%}.theme-light .sevtug,.theme-light .sevtug_large{color:#af0aaf;font-weight:700;font-style:italic}.theme-light .sevtug_small{color:#af0aaf}.theme-light .inathneq_large{font-size:185%}.theme-light .inathneq,.theme-light .inathneq_large{color:#1e8ce1;font-weight:700;font-style:italic}.theme-light .inathneq_small{color:#1e8ce1}.theme-light .nzcrentr_large{font-size:185%}.theme-light .nzcrentr,.theme-light .nzcrentr_large{color:#daaa18;font-weight:700;font-style:italic}.theme-light .nzcrentr_small{color:#daaa18}.theme-light .neovgre_large{font-size:185%}.theme-light .neovgre,.theme-light .neovgre_large{color:#6e001a;font-weight:700;font-style:italic}.theme-light .neovgre_small{color:#6e001a}.theme-light .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-light .noticealien{color:#00c000}.theme-light .alertalien{color:#00c000;font-weight:700}.theme-light .changeling{font-style:italic}.theme-light .alertsyndie{color:red;font-size:185%;font-weight:700}.theme-light .spider{color:#4d004d;font-weight:700;font-size:185%}.theme-light .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-light .papyrus{font-family:Papyrus,cursive,sans-serif}.theme-light .robot{font-family:Courier New,cursive,sans-serif}.theme-light .alien{color:#543354}.theme-light .tajaran{color:#803b56}.theme-light .tajaran_signlang{color:#941c1c}.theme-light .akhani{color:#ac398c}.theme-light .skrell{color:#00b0b3}.theme-light .skrellfar{color:#70fcff}.theme-light .soghun{color:#228b22}.theme-light .solcom{color:#22228b}.theme-light .changeling{color:purple}.theme-light .sergal{color:#07f}.theme-light .birdsongc{color:#c90}.theme-light .vulpkanin{color:#b97a57}.theme-light .enochian{color:#848a33;letter-spacing:-1pt;word-spacing:4pt;font-family:Lucida Sans Unicode,Lucida Grande,sans-serif}.theme-light .daemon{color:#5e339e;letter-spacing:-1pt;word-spacing:0;font-family:Courier New,Courier,monospace}.theme-light .bug{color:#9e9e39}.theme-light .vox{color:#a0a}.theme-light .zaddat{color:#941c1c}.theme-light .rough{font-family:Trebuchet MS,cursive,sans-serif}.theme-light .say_quote{font-family:Georgia,Verdana,sans-serif}.theme-light .terminus{font-family:Times New Roman,Times,serif,sans-serif}.theme-light .interface{color:#303}.theme-light .command_headset{font-weight:700;font-size:160%}.theme-light .small{font-size:60%}.theme-light .big{font-size:185%}.theme-light .reallybig{font-size:245%}.theme-light .extremelybig{font-size:310%}.theme-light .greentext{color:#0f0;font-size:185%}.theme-light .redtext{color:red;font-size:185%}.theme-light .yellowtext{color:#fc0;font-size:185%}.theme-light .clown{color:#ff69bf;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.theme-light .singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.theme-light .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-light .spooky{color:#ff9100}.theme-light .hypnophrase{color:#0d0d0d;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}@keyframes hypnocolor{0%{color:#0d0d0d}25%{color:#410194}50%{color:#7f17d8}75%{color:#410194}to{color:#3bb5d3}}.theme-light .velvet{color:#660015;font-weight:700;animation:velvet 5s infinite;animation-direction:alternate}@keyframes velvet{0%{color:#400020}40%{color:red}50%{color:#f88}60%{color:red}to{color:#400020}}.theme-light .phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}@keyframes phobia{0%{color:#0d0d0d}50%{color:#d00}to{color:#0d0d0d}}.theme-light .icon{height:1em;width:auto}.theme-light .memo{color:#638500;text-align:center}.theme-light .memoedit{text-align:center;font-size:125%}.theme-light .abductor{color:purple;font-style:italic}.theme-light .mind_control{color:#a00d6f;font-size:100%;font-weight:700;font-style:italic}.theme-light .slime{color:#00ced1}.theme-light .drone{color:#848482}.theme-light .monkey{color:#975032}.theme-light .swarmer{color:#2c75ff}.theme-light .resonate{color:#298f85}.theme-light .monkeyhive{color:#774704}.theme-light .monkeylead{color:#774704;font-size:80%}.theme-light .connectionClosed,.theme-light .fatalError{background:red;color:#fff;padding:5px}.theme-light .connectionClosed.restored{background:green}.theme-light .internal.boldnshit{color:#00f;font-weight:700}.theme-light .text-normal{font-weight:400;font-style:normal}.theme-light .hidden{display:none;visibility:hidden}.theme-light .ml-1{margin-left:1em}.theme-light .ml-2{margin-left:2em}.theme-light .ml-3{margin-left:3em} \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index a0395b3ff69..2d49a5f3d24 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -329,6 +329,7 @@ #include "code\datums\browser\_modal.dm" #include "code\datums\browser\_onclose.dm" #include "code\datums\browser\alert.dm" +#include "code\datums\browser\color_matrix_picker.dm" #include "code\datums\browser\listpicker.dm" #include "code\datums\browser\preflikepicker.dm" #include "code\datums\components\_component.dm" @@ -962,6 +963,7 @@ #include "code\game\objects\effects\map_effects\effect_emitter.dm" #include "code\game\objects\effects\map_effects\map_effects.dm" #include "code\game\objects\effects\map_effects\perma_light.dm" +#include "code\game\objects\effects\map_effects\portal.dm" #include "code\game\objects\effects\map_effects\radiation_emitter.dm" #include "code\game\objects\effects\map_effects\screen_shaker.dm" #include "code\game\objects\effects\map_effects\sound_emitter.dm"