Merge pull request #8121 from VOREStation/Arokha/morefloor

Further Eris floor blending tweaks
This commit is contained in:
Aronai Sieyes
2020-05-29 16:05:52 -04:00
committed by GitHub
11 changed files with 375 additions and 102 deletions
+7
View File
@@ -9,5 +9,12 @@
#define TURF_IS_FRAGILE 256
#define TURF_ACID_IMMUNE 512
//Used for floor/wall smoothing
#define SMOOTH_NONE 0 //Smooth only with itself
#define SMOOTH_ALL 1 //Smooth with all of type
#define SMOOTH_WHITELIST 2 //Smooth with a whitelist of subtypes
#define SMOOTH_BLACKLIST 3 //Smooth with all but a blacklist of subtypes
#define SMOOTH_GREYLIST 4 // Use a whitelist and a blacklist at the same time. atom smoothing only
#define isCardinal(x) (x == NORTH || x == SOUTH || x == EAST || x == WEST)
#define isDiagonal(x) (x == NORTHEAST || x == SOUTHEAST || x == NORTHWEST || x == SOUTHWEST)
+8
View File
@@ -169,3 +169,11 @@
T.ChangeTurf(get_base_turf_by_area(T))
return TRUE
//Used for border objects. This returns true if this atom is on the border between the two specified turfs
//This assumes that the atom is located inside the target turf
/atom/proc/is_between_turfs(var/turf/origin, var/turf/target)
if (flags & ON_BORDER)
var/testdir = get_dir(target, origin)
return (dir & testdir)
return TRUE
+1 -4
View File
@@ -364,10 +364,7 @@
return ..()
/obj/item/stack/proc/combine_in_loc()
for(var/obj/item/stack/S in loc)
if(S == src)
continue
S.transfer_to(src) // them to us, so if we're being pulled, we can keep being pulled
return //STUBBED for now, as it seems to randomly delete stacks
/obj/item/stack/dropped(atom/old_loc)
. = ..()
+5
View File
@@ -424,6 +424,11 @@
/obj/structure/window/proc/is_fulltile()
return fulltile
/obj/structure/window/is_between_turfs(var/turf/origin, var/turf/target)
if(fulltile)
return TRUE
return ..()
//This proc is used to update the icons of nearby windows. It should not be confused with update_nearby_tiles(), which is an atmos proc!
/obj/structure/window/proc/update_nearby_icons()
update_icon()
+69
View File
@@ -48,6 +48,75 @@ var/list/flooring_types
var/is_plating = FALSE
var/list/flooring_cache = list() // Cached overlays for our edges and corners and junk
//Plating types, can be overridden
var/plating_type = null
//Resistance is subtracted from all incoming damage
//var/resistance = RESISTANCE_FRAGILE
//Damage the floor can take before being destroyed
//var/health = 50
//var/removal_time = WORKTIME_FAST * 0.75
//Flooring Icon vars
var/smooth_nothing = FALSE //True/false only, optimisation
//If true, all smoothing logic is entirely skipped
//The rest of these x_smooth vars use one of the following options
//SMOOTH_NONE: Ignore all of type
//SMOOTH_ALL: Smooth with all of type
//SMOOTH_WHITELIST: Ignore all except types on this list
//SMOOTH_BLACKLIST: Smooth with all except types on this list
//SMOOTH_GREYLIST: Objects only: Use both lists
//How we smooth with other flooring
var/floor_smooth = SMOOTH_NONE
var/list/flooring_whitelist = list() //Smooth with nothing except the contents of this list
var/list/flooring_blacklist = list() //Smooth with everything except the contents of this list
//How we smooth with walls
var/wall_smooth = SMOOTH_NONE
//There are no lists for walls at this time
//How we smooth with space and openspace tiles
var/space_smooth = SMOOTH_NONE
//There are no lists for spaces
/*
How we smooth with movable atoms
These are checked after the above turf based smoothing has been handled
SMOOTH_ALL or SMOOTH_NONE are treated the same here. Both of those will just ignore atoms
Using the white/blacklists will override what the turfs concluded, to force or deny smoothing
Movable atom lists are much more complex, to account for many possibilities
Each entry in a list, is itself a list consisting of three items:
Type: The typepath to allow/deny. This will be checked against istype, so all subtypes are included
Priority: Used when items in two opposite lists conflict. The one with the highest priority wins out.
Vars: An associative list of variables (varnames in text) and desired values
Code will look for the desired vars on the target item and only call it a match if all desired values match
This can be used, for example, to check that objects are dense and anchored
there are no safety checks on this, it will probably throw runtimes if you make typos
Common example:
Don't smooth with dense anchored objects except airlocks
smooth_movable_atom = SMOOTH_GREYLIST
movable_atom_blacklist = list(
list(/obj, list("density" = TRUE, "anchored" = TRUE), 1)
)
movable_atom_whitelist = list(
list(/obj/machinery/door/airlock, list(), 2)
)
*/
var/smooth_movable_atom = SMOOTH_NONE
var/list/movable_atom_whitelist = list()
var/list/movable_atom_blacklist = list()
/decl/flooring/proc/get_plating_type(var/turf/T)
return plating_type
/decl/flooring/proc/get_flooring_overlay(var/cache_key, var/icon_base, var/icon_dir = 0, var/layer = ABOVE_TURF_LAYER)
if(!flooring_cache[cache_key])
var/image/I = image(icon = icon, icon_state = icon_base, dir = icon_dir)
+8 -4
View File
@@ -61,8 +61,8 @@
old_decals = current_decals
/turf/simulated/floor/proc/set_flooring(var/decl/flooring/newflooring, var/initializing)
make_plating(defer_icon_update = 1)
if(!flooring && !initializing) // Plating -> Flooring
//make_plating(defer_icon_update = 1)
if(is_plating() && !initializing) // Plating -> Flooring
swap_decals()
flooring = newflooring
footstep_sounds = newflooring.footstep_sounds
@@ -81,11 +81,15 @@
icon_state = base_icon_state
footstep_sounds = base_footstep_sounds
if(flooring) // Flooring -> Plating
if(!is_plating()) // Flooring -> Plating
swap_decals()
if(flooring.build_type && place_product)
new flooring.build_type(src)
flooring = null
var/newtype = flooring.get_plating_type()
if(newtype) // Has a custom plating type to become
set_flooring(get_flooring_data(newtype))
else
flooring = null
set_light(0)
broken = null
+2 -3
View File
@@ -53,7 +53,7 @@
break
return
if(flooring && !flooring.is_plating)
if(!is_plating())
if(istype(C, /obj/item/weapon))
try_deconstruct_tile(C, user)
return
@@ -64,7 +64,6 @@
try_replace_tile(C, user)
return
else
if(istype(C, /obj/item/stack/cable_coil))
if(broken || burnt)
to_chat(user, "<span class='warning'>This section is too damaged to support anything. Use a welder to fix the damage.</span>")
@@ -94,7 +93,7 @@
// Stay still and focus...
if(use_flooring.build_time && !do_after(user, use_flooring.build_time))
return
if(flooring || !S || !user || !use_flooring)
if(!is_plating() || !S || !user || !use_flooring)
return
if(S.use(use_flooring.build_cost))
set_flooring(use_flooring)
+159 -7
View File
@@ -36,7 +36,7 @@ var/image/no_ceiling_image = null
if(flooring.flags & TURF_HAS_EDGES)
for(var/step_dir in cardinal)
var/turf/simulated/floor/T = get_step(src, step_dir)
if(!test_link(T))
if(!flooring.test_link(src, T))
has_border |= step_dir
add_overlay(flooring.get_flooring_overlay("[flooring.icon_base]-edge-[step_dir]", "[flooring.icon_base]_edges", step_dir))
@@ -55,19 +55,19 @@ var/image/no_ceiling_image = null
//Like above but checking for NO similar bits rather than both similar bits.
if((has_border & NORTHEAST) == 0) //Are connected NORTH and EAST
var/turf/simulated/floor/T = get_step(src, NORTHEAST)
if(!test_link(T)) //But not NORTHEAST
if(!flooring.test_link(src, T)) //But not NORTHEAST
add_overlay(flooring.get_flooring_overlay("[flooring.icon_base]-corner-[NORTHEAST]", "[flooring.icon_base]_corners", NORTHEAST))
if((has_border & NORTHWEST) == 0)
var/turf/simulated/floor/T = get_step(src, NORTHWEST)
if(!test_link(T))
if(!flooring.test_link(src, T))
add_overlay(flooring.get_flooring_overlay("[flooring.icon_base]-corner-[NORTHWEST]", "[flooring.icon_base]_corners", NORTHWEST))
if((has_border & SOUTHEAST) == 0)
var/turf/simulated/floor/T = get_step(src, SOUTHEAST)
if(!test_link(T))
if(!flooring.test_link(src, T))
add_overlay(flooring.get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHEAST]", "[flooring.icon_base]_corners", SOUTHEAST))
if((has_border & SOUTHWEST) == 0)
var/turf/simulated/floor/T = get_step(src, SOUTHWEST)
if(!test_link(T))
if(!flooring.test_link(src, T))
add_overlay(flooring.get_flooring_overlay("[flooring.icon_base]-corner-[SOUTHWEST]", "[flooring.icon_base]_corners", SOUTHWEST))
// Re-apply floor decals
@@ -129,6 +129,158 @@ var/image/no_ceiling_image = null
return S
return null
//Tests whether this flooring will smooth with the specified turf
//You can override this if you want a flooring to have super special snowflake smoothing behaviour
/decl/flooring/proc/test_link(var/turf/origin, var/turf/T, var/countercheck = FALSE)
var/is_linked = FALSE
if (countercheck)
//If this is a countercheck, we skip all of the above, start off with true, and go straight to the atom lists
is_linked = TRUE
else if(T)
//If it's a wall, use the wall_smooth setting
if(istype(T, /turf/simulated/wall))
if(wall_smooth == SMOOTH_ALL)
is_linked = TRUE
//If it's space or openspace, use the space_smooth setting
else if(isspace(T) || isopenspace(T))
if(space_smooth == SMOOTH_ALL)
is_linked = TRUE
//If we get here then its a normal floor
else if (istype(T, /turf/simulated/floor))
var/turf/simulated/floor/t = T
//If the floor is the same as us,then we're linked,
if (t.flooring?.type == type)
is_linked = TRUE
/*
But there's a caveat. To make atom black/whitelists work correctly, we also need to check that
they smooth with us. Ill call this counterchecking for simplicity.
This is needed to make both turfs have the correct borders
To prevent infinite loops we have a countercheck var, which we'll set true
*/
if (smooth_movable_atom != SMOOTH_NONE)
//We do the countercheck, passing countercheck as true
is_linked = test_link(T, origin, countercheck = TRUE)
else if (floor_smooth == SMOOTH_ALL)
is_linked = TRUE
else if (floor_smooth != SMOOTH_NONE)
//If we get here it must be using a whitelist or blacklist
if (floor_smooth == SMOOTH_WHITELIST)
for (var/v in flooring_whitelist)
if (istype(t.flooring, v))
//Found a match on the list
is_linked = TRUE
break
else if(floor_smooth == SMOOTH_BLACKLIST)
is_linked = TRUE //Default to true for the blacklist, then make it false if a match comes up
for (var/v in flooring_whitelist)
if (istype(t.flooring, v))
//Found a match on the list
is_linked = FALSE
break
//Alright now we have a preliminary answer about smoothing, however that answer may change with the following
//Atom lists!
var/best_priority = -1
//A white or blacklist entry will only override smoothing if its priority is higher than this
//And then this value becomes its priority
if (smooth_movable_atom != SMOOTH_NONE)
if (smooth_movable_atom == SMOOTH_WHITELIST || smooth_movable_atom == SMOOTH_GREYLIST)
for (var/list/v in movable_atom_whitelist)
var/d_type = v[1]
var/list/d_vars = v[2]
var/d_priority = v[3]
//Priority is the quickest thing to check first
if (d_priority <= best_priority)
continue
//Ok, now we start testing all the atoms in the target turf
for (var/a in T) //No implicit typecasting here, faster
if (istype(a, d_type))
//It's the right type, so we're sure it will have the vars we want.
var/atom/movable/AM = a
//Typecast it to a movable atom
//Lets make sure its in the way before we consider it
if (!AM.is_between_turfs(origin, T))
continue
//From here on out, we do dangerous stuff that may runtime if the coder screwed up
var/match = TRUE
for (var/d_var in d_vars)
//For each variable we want to check
if (AM.vars[d_var] != d_vars[d_var])
//We get a var of the same name from the atom's vars list.
//And check if it equals our desired value
match = FALSE
break //If any var doesn't match the desired value, then this atom is not a match, move on
if (match)
//If we've successfully found an atom which matches a list entry
best_priority = d_priority //This one is king until a higher priority overrides it
//And this is a whitelist, so this match forces is_linked to true
is_linked = TRUE
if (smooth_movable_atom == SMOOTH_BLACKLIST || smooth_movable_atom == SMOOTH_GREYLIST)
//All of this blacklist code is copypasted from above, with only minor name changes
for (var/list/v in movable_atom_blacklist)
var/d_type = v[1]
var/list/d_vars = v[2]
var/d_priority = v[3]
//Priority is the quickest thing to check first
if (d_priority <= best_priority)
continue
//Ok, now we start testing all the atoms in the target turf
for (var/a in T) //No implicit typecasting here, faster
if (istype(a, d_type))
//It's the right type, so we're sure it will have the vars we want.
var/atom/movable/AM = a
//Typecast it to a movable atom
//Lets make sure its in the way before we consider it
if (!AM.is_between_turfs(origin, T))
continue
//From here on out, we do dangerous stuff that may runtime if the coder screwed up
var/match = TRUE
for (var/d_var in d_vars)
//For each variable we want to check
if (AM.vars[d_var] != d_vars[d_var])
//We get a var of the same name from the atom's vars list.
//And check if it equals our desired value
match = FALSE
break //If any var doesn't match the desired value, then this atom is not a match, move on
if (match)
//If we've successfully found an atom which matches a list entry
best_priority = d_priority //This one is king until a higher priority overrides it
//And this is a blacklist, so this match forces is_linked to false
is_linked = FALSE
return is_linked
/turf/simulated/floor/proc/get_flooring_overlay(var/cache_key, var/icon_base, var/icon_dir = 0)
if(!flooring_cache[cache_key])
var/image/I = image(icon = flooring.icon, icon_state = icon_base, dir = icon_dir)
I.layer = layer
flooring_cache[cache_key] = I
return flooring_cache[cache_key]
/turf/simulated/floor/proc/test_link(var/turf/simulated/floor/them)
return (istype(them) && them.flooring?.name == src.flooring.name)
+41 -11
View File
@@ -14,13 +14,28 @@
build_type = /obj/item/stack/tile/floor/eris
can_paint = 1
plating_type = /decl/flooring/reinforced/plating/under
floor_smooth = SMOOTH_WHITELIST
flooring_whitelist = list(
/decl/flooring/reinforced/plating/under
)
smooth_movable_atom = SMOOTH_GREYLIST
movable_atom_whitelist = list(
list(/obj/machinery/door/airlock, list(), 1) // Smooth Eris floors with airlocks
)
movable_atom_blacklist = list(
list(/obj/machinery/door/airlock/maintenance, list(), 2), // But not maintenance airlocks
list(/obj/structure/window, list("anchored" = TRUE, "fulltile" = TRUE), 2) // Don't blend under full windows
)
/decl/flooring/tiling/eris/steel
name = "steel floor"
icon_base = "tiles"
icon = 'icons/turf/flooring/eris/tiles_steel.dmi'
build_type = /obj/item/stack/tile/floor/eris/steel
//footstep_sound = "floor"
/decl/flooring/tiling/eris/steel/panels
icon_base = "panels"
build_type = /obj/item/stack/tile/floor/eris/steel/panels
@@ -86,16 +101,22 @@
name = "flat bar floor"
icon_base = "bar_flat"
build_type = /obj/item/stack/tile/floor/eris/steel/bar_flat
floor_smooth = SMOOTH_NONE
smooth_movable_atom = SMOOTH_NONE
/decl/flooring/tiling/eris/steel/bar_dance
name = "dancefloor"
icon_base = "bar_dance"
build_type = /obj/item/stack/tile/floor/eris/steel/bar_dance
floor_smooth = SMOOTH_NONE
smooth_movable_atom = SMOOTH_NONE
/decl/flooring/tiling/eris/steel/bar_light
name = "lit bar floor"
icon_base = "bar_light"
build_type = /obj/item/stack/tile/floor/eris/steel/bar_light
floor_smooth = SMOOTH_NONE
smooth_movable_atom = SMOOTH_NONE
/decl/flooring/tiling/eris/white
name = "white floor"
@@ -169,7 +190,6 @@
icon_base = "tiles"
icon = 'icons/turf/flooring/eris/tiles_dark.dmi'
build_type = /obj/item/stack/tile/floor/eris/dark
//footstep_sound = "floor"
/decl/flooring/tiling/eris/dark/panels
icon_base = "panels"
@@ -237,36 +257,40 @@
icon_base = "cafe"
icon = 'icons/turf/flooring/eris/tiles.dmi'
build_type = /obj/item/stack/tile/floor/eris/cafe
//footstep_sound = "floor"
floor_smooth = SMOOTH_NONE
smooth_movable_atom = SMOOTH_NONE
/decl/flooring/tiling/eris/techmaint
name = "techmaint floor"
icon_base = "techmaint"
icon = 'icons/turf/flooring/eris/tiles_maint.dmi'
build_type = /obj/item/stack/tile/floor/eris/techmaint
//footstep_sound = "floor"
floor_smooth = SMOOTH_NONE
smooth_movable_atom = SMOOTH_NONE
/decl/flooring/tiling/eris/techmaint_perforated
name = "techmaint floor"
icon_base = "techmaint_perforated"
icon = 'icons/turf/flooring/eris/tiles_maint.dmi'
build_type = /obj/item/stack/tile/floor/eris/techmaint/perforated
//footstep_sound = "floor"
floor_smooth = SMOOTH_NONE
smooth_movable_atom = SMOOTH_NONE
/decl/flooring/tiling/eris/techmaint_panels
name = "techmaint floor"
icon_base = "techmaint_panels"
icon = 'icons/turf/flooring/eris/tiles_maint.dmi'
build_type = /obj/item/stack/tile/floor/eris/techmaint/panels
//footstep_sound = "floor"
floor_smooth = SMOOTH_NONE
smooth_movable_atom = SMOOTH_NONE
/decl/flooring/tiling/eris/techmaint_cargo
name = "techmaint floor"
icon_base = "techmaint_cargo"
icon = 'icons/turf/flooring/eris/tiles_maint.dmi'
build_type = /obj/item/stack/tile/floor/eris/techmaint/cargo
//footstep_sound = "floor"
floor_smooth = SMOOTH_NONE
smooth_movable_atom = SMOOTH_NONE
///////////////////////
/// TILE OBJS ///////
@@ -875,8 +899,8 @@
is_plating = TRUE
//build_type = /obj/item/stack/material/steel
/* Eris features we lack on flooring decls
plating_type = /decl/flooring/reinforced/plating/under
/*
footstep_sound = "plating"
space_smooth = FALSE
removal_time = 150
@@ -910,10 +934,16 @@
has_base_range = 0
is_plating = TRUE
floor_smooth = SMOOTH_WHITELIST
flooring_whitelist = list(
/decl/flooring/tiling/eris
)
plating_type = null
//build_type = /obj/item/stack/material/underplating
/* Eris features we lack on flooring decls
plating_type = /decl/flooring/reinforced/plating/hull
removal_time = 250
health = 200
resistance = RESISTANCE_ARMOURED
+62 -60
View File
@@ -213,7 +213,7 @@
/obj/machinery/door/firedoor/glass{
dir = 2
},
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/central_hallway)
"bT" = (
/obj/structure/grille,
@@ -266,7 +266,7 @@
pixel_y = 32
},
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled/steel,
/turf/simulated/floor/tiled/eris/steel,
/area/talon/deckone/bridge_hallway)
"cl" = (
/turf/simulated/wall,
@@ -297,7 +297,7 @@
/obj/machinery/door/airlock/glass,
/obj/machinery/door/firedoor/glass/talon,
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/bridge_hallway)
"cC" = (
/obj/structure/disposalpipe/segment{
@@ -363,7 +363,7 @@
/obj/machinery/door/airlock/maintenance/engi{
req_one_access = list(301)
},
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/port_solar)
"cQ" = (
/obj/structure/table/rack/shelf/steel,
@@ -398,7 +398,7 @@
/obj/machinery/door/airlock/maintenance/engi{
req_one_access = list(301)
},
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/starboard_solar)
"da" = (
/obj/structure/table/standard,
@@ -453,7 +453,7 @@
/obj/machinery/door/airlock/glass_security{
req_one_access = list(301)
},
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/brig)
"dL" = (
/turf/simulated/wall,
@@ -561,7 +561,7 @@
/obj/machinery/door/window/brigdoor/eastleft{
req_access = list(301)
},
/turf/simulated/floor/tiled/dark,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/brig)
"eq" = (
/obj/structure/cable/green{
@@ -617,7 +617,7 @@
dir = 4;
icon_state = "pipe-s"
},
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/brig)
"ey" = (
/obj/structure/grille,
@@ -637,7 +637,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/effect/floor_decal/emblem/talon_big/center,
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/steel_grid,
/area/talon/deckone/central_hallway)
"eI" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -648,14 +648,14 @@
icon_state = "1-2"
},
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled/steel,
/turf/simulated/floor/tiled/eris/steel,
/area/talon/deckone/bridge_hallway)
"eS" = (
/obj/effect/floor_decal/industrial/hatch/yellow,
/obj/machinery/door/blast/regular{
id = "talon_brigblast1"
},
/turf/simulated/floor/tiled/dark,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/brig)
"eV" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
@@ -776,7 +776,7 @@
/area/talon/maintenance/deckone_port)
"gc" = (
/obj/machinery/door/firedoor/glass/talon,
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/workroom)
"gg" = (
/obj/machinery/atmospherics/pipe/simple/hidden/aux{
@@ -813,7 +813,7 @@
dir = 4;
icon_state = "pipe-s"
},
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/workroom)
"gs" = (
/obj/machinery/door/airlock/maintenance/common,
@@ -963,7 +963,7 @@
/obj/machinery/door/airlock/maintenance/engi{
req_one_access = list(301)
},
/turf/simulated/floor/plating/eris/under,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/port_solar)
"in" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -978,7 +978,7 @@
pixel_x = 0
},
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled/steel,
/turf/simulated/floor/tiled/eris/steel,
/area/talon/deckone/bridge_hallway)
"iq" = (
/obj/machinery/light/small{
@@ -1149,7 +1149,7 @@
dir = 8;
icon_state = "talon_big"
},
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/steel_grid,
/area/talon/deckone/central_hallway)
"jE" = (
/obj/effect/floor_decal/industrial/outline/yellow,
@@ -1567,7 +1567,7 @@
},
/obj/machinery/door/firedoor/glass/talon,
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/starboard_eng)
"mF" = (
/obj/machinery/atmospherics/pipe/simple/hidden/aux{
@@ -1661,7 +1661,7 @@
dir = 5;
icon_state = "talon_big"
},
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/steel_grid,
/area/talon/deckone/central_hallway)
"nv" = (
/obj/machinery/door/blast/regular/open{
@@ -1790,7 +1790,7 @@
dir = 4;
icon_state = "talon_big"
},
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/steel_grid,
/area/talon/deckone/central_hallway)
"pc" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
@@ -2177,7 +2177,7 @@
/obj/machinery/door/firedoor/glass{
dir = 2
},
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/central_hallway)
"tg" = (
/obj/effect/floor_decal/industrial/warning/dust/corner,
@@ -2362,7 +2362,7 @@
icon_state = "2-4"
},
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled/steel,
/turf/simulated/floor/tiled/eris/steel,
/area/talon/deckone/bridge_hallway)
"uL" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -2411,7 +2411,7 @@
req_access = list(301)
},
/obj/machinery/door/firedoor/glass/talon,
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/medical)
"vb" = (
/obj/structure/bed/chair/bay/chair{
@@ -2453,7 +2453,7 @@
pixel_y = -24
},
/obj/effect/floor_decal/emblem/talon_big,
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/steel_grid,
/area/talon/deckone/central_hallway)
"vw" = (
/turf/simulated/floor/tiled/eris/steel,
@@ -2976,7 +2976,7 @@
/obj/machinery/door/airlock/maintenance/engi{
req_one_access = list(301)
},
/turf/simulated/floor/plating/eris/under,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/starboard_solar)
"AI" = (
/obj/machinery/atmospherics/pipe/simple/hidden/aux,
@@ -3045,7 +3045,7 @@
/obj/machinery/door/airlock/glass_medical{
req_one_access = list(301)
},
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/medical)
"Bq" = (
/obj/structure/cable/green{
@@ -3319,7 +3319,7 @@
req_one_access = list(301)
},
/obj/machinery/door/firedoor/glass/talon,
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/port_eng)
"Ea" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -3335,7 +3335,7 @@
req_one_access = list(301)
},
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled/eris/white/gray_platform,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/bridge_hallway)
"Ec" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
@@ -3424,6 +3424,7 @@
/obj/structure/sign/department/bridge{
pixel_y = 31
},
/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/tiled/eris/white/gray_platform,
/area/talon/deckone/bridge_hallway)
"ES" = (
@@ -3483,7 +3484,7 @@
dir = 4;
icon_state = "pipe-s"
},
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/medical)
"FA" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -3622,7 +3623,7 @@
/area/talon/deckone/starboard_eng)
"GJ" = (
/obj/machinery/door/firedoor/glass/talon,
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/medical)
"GK" = (
/obj/structure/table/standard,
@@ -3706,15 +3707,13 @@
/area/talon/deckone/brig)
"HQ" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
/obj/structure/cable/green{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/tiled/eris/white/gray_platform,
/area/talon/deckone/bridge_hallway)
"HW" = (
@@ -3766,7 +3765,7 @@
icon_state = "1-2"
},
/obj/structure/disposalpipe/segment,
/obj/effect/catwalk_plated/dark,
/obj/effect/catwalk_plated,
/turf/simulated/floor/plating/eris/under,
/area/talon/deckone/bridge_hallway)
"Ij" = (
@@ -3810,7 +3809,7 @@
dir = 1;
icon_state = "talon_big"
},
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/steel_grid,
/area/talon/deckone/central_hallway)
"II" = (
/obj/structure/cable/green{
@@ -4011,7 +4010,7 @@
/obj/machinery/door/firedoor/glass{
dir = 2
},
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/central_hallway)
"JY" = (
/obj/machinery/atmospherics/pipe/simple/hidden/aux,
@@ -4111,7 +4110,7 @@
/obj/machinery/door/firedoor/glass{
dir = 2
},
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/central_hallway)
"KI" = (
/obj/structure/cable/green{
@@ -4153,6 +4152,7 @@
/area/space)
"KP" = (
/obj/structure/closet/emcloset,
/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/tiled/eris/white/gray_platform,
/area/talon/deckone/bridge_hallway)
"La" = (
@@ -4216,7 +4216,7 @@
/obj/machinery/door/window/brigdoor/eastleft{
req_access = list(301)
},
/turf/simulated/floor/tiled/dark,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/brig)
"Lz" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
@@ -4490,12 +4490,6 @@
},
/turf/simulated/floor/plating/eris/under,
/area/shuttle/talonboat)
"Np" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
/turf/simulated/floor/tiled/eris/white/gray_platform,
/area/talon/deckone/bridge_hallway)
"Ns" = (
/obj/structure/cable/green,
/obj/machinery/power/apc/talon{
@@ -4580,7 +4574,7 @@
req_one_access = list(301)
},
/obj/machinery/door/firedoor/glass/talon,
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/port_eng_store)
"Of" = (
/obj/structure/barricade,
@@ -4624,7 +4618,6 @@
/turf/simulated/floor/tiled/eris/dark/brown_perforated,
/area/talon/deckone/port_eng)
"OQ" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
@@ -4634,6 +4627,9 @@
icon_state = "1-2"
},
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 8
},
/turf/simulated/floor/tiled/eris/white/gray_platform,
/area/talon/deckone/bridge_hallway)
"OS" = (
@@ -4682,7 +4678,7 @@
/obj/machinery/door/firedoor/glass{
dir = 2
},
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/central_hallway)
"PF" = (
/obj/machinery/atmospherics/pipe/simple/hidden/aux{
@@ -4767,7 +4763,7 @@
/obj/machinery/door/firedoor/glass{
dir = 2
},
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/central_hallway)
"QC" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
@@ -4920,7 +4916,7 @@
dir = 9;
icon_state = "talon_big"
},
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/steel_grid,
/area/talon/deckone/central_hallway)
"SE" = (
/obj/machinery/recharger/wallcharger{
@@ -4954,7 +4950,7 @@
/obj/machinery/door/firedoor/glass{
dir = 2
},
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/central_hallway)
"SO" = (
/obj/machinery/light/small,
@@ -5026,7 +5022,7 @@
req_one_access = list(301)
},
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled/eris/white/gray_platform,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/bridge)
"Ts" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -5208,7 +5204,7 @@
dir = 6;
icon_state = "talon_big"
},
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/steel_grid,
/area/talon/deckone/central_hallway)
"UG" = (
/obj/machinery/door/airlock/maintenance/medical{
@@ -5265,7 +5261,7 @@
/obj/machinery/door/blast/regular{
id = "talon_brigblast2"
},
/turf/simulated/floor/tiled/dark,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/brig)
"UU" = (
/obj/machinery/power/pointdefense{
@@ -5323,7 +5319,7 @@
dir = 10;
icon_state = "talon_big"
},
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/steel_grid,
/area/talon/deckone/central_hallway)
"Vf" = (
/obj/machinery/atmospherics/pipe/simple/heat_exchanging{
@@ -5333,8 +5329,8 @@
/turf/simulated/floor/hull/airless,
/area/talon/maintenance/deckone_port_fore_wing)
"Vj" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
dir = 4
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
},
/turf/simulated/floor/tiled/eris/white/gray_platform,
/area/talon/deckone/bridge_hallway)
@@ -5648,7 +5644,7 @@
req_one_access = list(301)
},
/obj/machinery/door/firedoor/glass/talon,
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/deckone/starboard_eng_store)
"Ym" = (
/obj/machinery/light/small{
@@ -5746,6 +5742,12 @@
},
/turf/simulated/floor/tiled/eris/dark/cyancorner,
/area/talon/deckone/starboard_solar)
"Zi" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
},
/turf/simulated/floor/tiled/eris/white/gray_platform,
/area/talon/deckone/bridge_hallway)
"Zj" = (
/obj/machinery/atmospherics/pipe/simple/hidden/universal,
/turf/simulated/floor/tiled/eris/dark/brown_perforated,
@@ -15839,9 +15841,9 @@ cC
zy
ac
ER
iP
Zi
UV
Np
iP
JP
bQ
bV
@@ -18416,7 +18418,7 @@ rm
Ru
Ru
Ru
we
Ru
Ru
Ru
Ru
@@ -18558,7 +18560,7 @@ Ru
Ru
Ru
Ru
Ru
we
Ru
Ru
Ru
+13 -13
View File
@@ -587,7 +587,7 @@
/obj/machinery/door/firedoor/glass{
dir = 2
},
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/central_hallway)
"cE" = (
/obj/structure/railing,
@@ -1295,7 +1295,7 @@
name = "Talon Secure Airlock";
req_one_access = list(301)
},
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/cap_room)
"fZ" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on{
@@ -1848,7 +1848,7 @@
/obj/machinery/door/firedoor/glass{
dir = 2
},
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/central_hallway)
"mh" = (
/obj/structure/disposalpipe/segment,
@@ -2092,7 +2092,7 @@
dir = 2
},
/obj/machinery/door/firedoor/glass/talon,
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/bar)
"oX" = (
/obj/structure/cable/heavyduty{
@@ -2177,7 +2177,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/firedoor/glass,
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/central_hallway)
"qb" = (
/obj/machinery/atmospherics/pipe/simple/visible/supply{
@@ -2521,13 +2521,13 @@
"uA" = (
/obj/machinery/door/firedoor/glass/talon,
/obj/machinery/door/airlock,
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/central_hallway)
"uJ" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/door/firedoor/glass,
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/central_hallway)
"uL" = (
/obj/structure/cable/green{
@@ -3652,7 +3652,7 @@
name = "Talon Secure Airlock";
req_one_access = list(301)
},
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/cap_room)
"Lo" = (
/obj/structure/catwalk,
@@ -3760,7 +3760,7 @@
dir = 4;
icon_state = "pipe-s"
},
/turf/simulated/floor/tiled/steel_grid,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/bar)
"Np" = (
/obj/machinery/atmospherics/unary/vent_pump/on{
@@ -4109,7 +4109,7 @@
/obj/machinery/door/firedoor/glass{
dir = 2
},
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/central_hallway)
"Sb" = (
/obj/machinery/power/pointdefense{
@@ -4356,7 +4356,7 @@
icon_state = "1-2"
},
/obj/machinery/door/firedoor/glass,
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/central_hallway)
"Vu" = (
/obj/structure/grille,
@@ -4392,7 +4392,7 @@
/obj/machinery/door/airlock/glass,
/obj/machinery/door/firedoor/glass/talon,
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled/eris/steel,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/central_hallway)
"VV" = (
/obj/structure/disposalpipe/segment{
@@ -4516,7 +4516,7 @@
"XU" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/door/firedoor/glass,
/turf/simulated/floor/tiled/eris/dark/monofloor,
/turf/simulated/floor/tiled/eris/techmaint_panels,
/area/talon/decktwo/central_hallway)
"XY" = (
/obj/structure/cable/green{