diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
index df450b9803c..c140f4d827f 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_greed.dmm
@@ -14,15 +14,11 @@
/obj/machinery/light/small{
dir = 1
},
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/ruin/powered/greed)
"f" = (
/obj/structure/cursed_slot_machine,
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/ruin/powered/greed)
"g" = (
/obj/structure/table/wood/poker,
@@ -30,28 +26,20 @@
/obj/machinery/light/small{
dir = 1
},
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/ruin/powered/greed)
"h" = (
/obj/structure/table/wood/poker,
/obj/item/coin/diamond,
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/ruin/powered/greed)
"i" = (
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/ruin/powered/greed)
"j" = (
/obj/structure/table/wood/poker,
/obj/item/coin/adamantine,
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/ruin/powered/greed)
"k" = (
/obj/machinery/computer/arcade/battle{
diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm
index e1591c74277..67cd6eb95d8 100644
--- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm
+++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm
@@ -1828,9 +1828,7 @@
/turf/open/floor/carpet,
/area/ruin/space/has_grav/hotel/dock)
"gg" = (
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/ruin/space/has_grav/hotel/dock)
"gh" = (
/obj/item/kirbyplants{
diff --git a/_maps/RandomZLevels/Academy.dmm b/_maps/RandomZLevels/Academy.dmm
index 6043b0ea763..e8bc0fa0bce 100644
--- a/_maps/RandomZLevels/Academy.dmm
+++ b/_maps/RandomZLevels/Academy.dmm
@@ -560,9 +560,7 @@
/turf/open/floor/plasteel,
/area/awaymission/academy/headmaster)
"cu" = (
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/awaymission/academy/headmaster)
"cv" = (
/obj/machinery/door/window{
@@ -2669,9 +2667,7 @@
},
/area/awaymission/academy/headmaster)
"kx" = (
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/awaymission/academy/academygate)
"ky" = (
/obj/machinery/door/poddoor/shutters{
diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
index 090eaae844b..56adeb3baa1 100644
--- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm
+++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm
@@ -22767,9 +22767,7 @@
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"baA" = (
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/chapel/main)
"baB" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index 5dbe6e08a02..b6e12653db1 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -19878,27 +19878,21 @@
/obj/item/radio/intercom{
pixel_y = 26
},
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bap" = (
/obj/machinery/computer/slot_machine,
/obj/machinery/airalarm{
pixel_y = 24
},
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"baq" = (
/obj/effect/spawner/randomarcade,
/obj/structure/noticeboard{
pixel_y = 32
},
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bar" = (
/obj/structure/extinguisher_cabinet{
@@ -20284,17 +20278,13 @@
/area/crew_quarters/bar)
"bbo" = (
/obj/structure/table/wood/fancy,
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bbp" = (
/obj/structure/chair/wood{
dir = 8
},
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bbq" = (
/obj/effect/turf_decal/tile/neutral{
@@ -20314,17 +20304,13 @@
/obj/structure/chair/wood{
dir = 4
},
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bbs" = (
/obj/item/cane,
/obj/item/clothing/head/that,
/obj/structure/table/wood/fancy,
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bbt" = (
/obj/structure/disposalpipe/segment,
@@ -20342,22 +20328,16 @@
"bbv" = (
/obj/structure/chair/stool,
/obj/item/trash/can,
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bbw" = (
/obj/effect/landmark/start/assistant,
/obj/structure/chair/stool,
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bbx" = (
/obj/structure/chair/stool,
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bby" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{
@@ -20621,17 +20601,13 @@
pixel_x = -3;
pixel_y = 5
},
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bcq" = (
/obj/item/clothing/glasses/monocle,
/obj/item/instrument/recorder,
/obj/structure/table/wood/fancy,
-/turf/open/floor/carpet{
- icon_state = "carpetsymbol"
- },
+/turf/open/floor/carpet/lone,
/area/crew_quarters/bar)
"bcr" = (
/obj/structure/disposalpipe/segment,
diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm
index 5e903e50669..aceea54b704 100644
--- a/code/__DEFINES/icon_smoothing.dm
+++ b/code/__DEFINES/icon_smoothing.dm
@@ -1,14 +1,30 @@
/* smoothing_flags */
-#define SMOOTH_CORNERS (1<<0) //Smoothing system in where adjacencies are calculated and used to build an image by mounting each corner at runtime.
-#define SMOOTH_DIAGONAL (1<<2) //if atom should smooth diagonally, this should be present in 'smoothing_flags' var
-#define SMOOTH_BORDER (1<<3) //atom will smooth with the borders of the map
-#define SMOOTH_QUEUED (1<<4) //atom is currently queued to smooth.
-#define SMOOTH_OBJ (1<<5) //smooths with objects, and will thus need to scan turfs for contents.
+/// Smoothing system in where adjacencies are calculated and used to build an image by mounting each corner at runtime.
+#define SMOOTH_CORNERS (1<<0)
+/// Smoothing system in where adjacencies are calculated and used to select a pre-baked icon_state, encoded by bitmasking.
+#define SMOOTH_BITMASK (1<<1)
+/// Atom has diagonal corners, with underlays under them.
+#define SMOOTH_DIAGONAL_CORNERS (1<<2)
+/// Atom will smooth with the borders of the map.
+#define SMOOTH_BORDER (1<<3)
+/// Atom is currently queued to smooth.
+#define SMOOTH_QUEUED (1<<4)
+/// Smooths with objects, and will thus need to scan turfs for contents.
+#define SMOOTH_OBJ (1<<5)
+
+DEFINE_BITFIELD(smoothing_flags, list(
+ "SMOOTH_CORNERS" = SMOOTH_CORNERS,
+ "SMOOTH_BITMASK" = SMOOTH_BITMASK,
+ "SMOOTH_DIAGONAL_CORNERS" = SMOOTH_DIAGONAL_CORNERS,
+ "SMOOTH_BORDER" = SMOOTH_BORDER,
+ "SMOOTH_QUEUED" = SMOOTH_QUEUED,
+ "SMOOTH_OBJ" = SMOOTH_OBJ,
+))
/*smoothing macros*/
-#define QUEUE_SMOOTH(thing_to_queue) if(thing_to_queue.smoothing_flags) {SSicon_smooth.add_to_queue(thing_to_queue)}
+#define QUEUE_SMOOTH(thing_to_queue) if(thing_to_queue.smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) {SSicon_smooth.add_to_queue(thing_to_queue)}
#define QUEUE_SMOOTH_NEIGHBORS(thing_to_queue) for(var/neighbor in orange(1, thing_to_queue)) {var/atom/atom_neighbor = neighbor; QUEUE_SMOOTH(atom_neighbor)}
@@ -74,10 +90,14 @@
#define SMOOTH_GROUP_TITANIUM_WALLS S_OBJ(11) ///turf/closed/wall/mineral/titanium, /obj/structure/falsewall/titanium
#define SMOOTH_GROUP_PLASTITANIUM_WALLS S_OBJ(13) ///turf/closed/wall/mineral/plastitanium, /obj/structure/falsewall/plastitanium
#define SMOOTH_GROUP_SURVIVAL_TIANIUM_POD S_OBJ(14) ///turf/closed/wall/mineral/titanium/survival/pod, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod
+#define SMOOTH_GROUP_HIERO_WALL S_OBJ(15) ///obj/effect/temp_visual/elite_tumor_wall, /obj/effect/temp_visual/hierophant/wall
#define SMOOTH_GROUP_PAPERFRAME S_OBJ(20) ///obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe
-#define SMOOTH_GROUP_WINDOW_FULLTILE S_OBJ(21) ///obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile
+#define SMOOTH_GROUP_WINDOW_FULLTILE S_OBJ(21) ///turf/closed/indestructible/fakeglass, /obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile
+#define SMOOTH_GROUP_WINDOW_FULLTILE_BRONZE S_OBJ(22) ///obj/structure/window/bronze/fulltile
+#define SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM S_OBJ(23) ///turf/closed/indestructible/opsglass, /obj/structure/window/plasma/reinforced/plastitanium
+#define SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE S_OBJ(24) ///obj/structure/window/shuttle
#define SMOOTH_GROUP_LATTICE S_OBJ(30) ///obj/structure/lattice
@@ -87,7 +107,10 @@
#define SMOOTH_GROUP_WOOD_TABLES S_OBJ(51) ///obj/structure/table/wood
#define SMOOTH_GROUP_FANCY_WOOD_TABLES S_OBJ(52) ///obj/structure/table/wood/fancy
#define SMOOTH_GROUP_BRONZE_TABLES S_OBJ(53) ///obj/structure/table/bronze
+#define SMOOTH_GROUP_ABDUCTOR_TABLES S_OBJ(54) ///obj/structure/table/abductor
+#define SMOOTH_GROUP_GLASS_TABLES S_OBJ(55) ///obj/structure/table/glass
+#define SMOOTH_GROUP_ALIEN_NEST S_OBJ(59) ///obj/structure/bed/nest
#define SMOOTH_GROUP_ALIEN_RESIN S_OBJ(60) ///obj/structure/alien/resin
#define SMOOTH_GROUP_ALIEN_WALLS S_OBJ(61) ///obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane
#define SMOOTH_GROUP_ALIEN_WEEDS S_OBJ(62) ///obj/structure/alien/weeds
diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm
index 776f069a3e1..b4b9e8e8f42 100644
--- a/code/__HELPERS/icon_smoothing.dm
+++ b/code/__HELPERS/icon_smoothing.dm
@@ -11,7 +11,7 @@
DIAGONAL SMOOTHING INSTRUCTIONS
To make your atom smooth diagonally you need all the proper icon states (see 'smooth_wall.dmi' for a template) and
- to add the 'SMOOTH_DIAGONAL' flag to the atom's smoothing_flags var (in addition to either SMOOTH_TRUE or SMOOTH_MORE).
+ to add the 'SMOOTH_DIAGONAL_CORNERS' flag to the atom's smoothing_flags var (in addition to either SMOOTH_TRUE or SMOOTH_MORE).
For turfs, what appears under the diagonal corners depends on the turf that was in the same position previously: if you make a wall on
a plating floor, you will see plating under the diagonal wall corner, if it was space, you will see space.
@@ -25,14 +25,26 @@
*/
//Redefinitions of the diagonal directions so they can be stored in one var without conflicts
-#define N_NORTH NORTH //(1<<0)
-#define N_SOUTH SOUTH //(1<<1)
-#define N_EAST EAST //(1<<2)
-#define N_WEST WEST //(1<<3)
-#define N_NORTHEAST (1<<4)
-#define N_NORTHWEST (1<<5)
-#define N_SOUTHEAST (1<<6)
-#define N_SOUTHWEST (1<<7)
+#define NORTH_JUNCTION NORTH //(1<<0)
+#define SOUTH_JUNCTION SOUTH //(1<<1)
+#define EAST_JUNCTION EAST //(1<<2)
+#define WEST_JUNCTION WEST //(1<<3)
+#define NORTHEAST_JUNCTION (1<<4)
+#define SOUTHEAST_JUNCTION (1<<5)
+#define SOUTHWEST_JUNCTION (1<<6)
+#define NORTHWEST_JUNCTION (1<<7)
+
+DEFINE_BITFIELD(smoothing_junction, list(
+ "NORTH_JUNCTION" = NORTH_JUNCTION,
+ "SOUTH_JUNCTION" = SOUTH_JUNCTION,
+ "EAST_JUNCTION" = EAST_JUNCTION,
+ "WEST_JUNCTION" = WEST_JUNCTION,
+ "NORTHEAST_JUNCTION" = NORTHEAST_JUNCTION,
+ "SOUTHEAST_JUNCTION" = SOUTHEAST_JUNCTION,
+ "SOUTHWEST_JUNCTION" = SOUTHWEST_JUNCTION,
+ "NORTHWEST_JUNCTION" = NORTHWEST_JUNCTION,
+))
+
#define NO_ADJ_FOUND 0
#define ADJ_FOUND 1
@@ -42,6 +54,45 @@
#define DEFAULT_UNDERLAY_ICON_STATE "plating"
+#define SET_ADJ_IN_DIR(source, junction, direction, direction_flag) \
+ do { \
+ var/turf/neighbor = get_step(source, direction); \
+ if(!neighbor) { \
+ if(source.smoothing_flags & SMOOTH_BORDER) { \
+ junction |= direction_flag; \
+ }; \
+ }; \
+ else { \
+ if(!isnull(neighbor.smoothing_groups)) { \
+ for(var/target in source.canSmoothWith) { \
+ if(!(source.canSmoothWith[target] & neighbor.smoothing_groups[target])) { \
+ continue; \
+ }; \
+ junction |= direction_flag; \
+ break; \
+ }; \
+ }; \
+ if(!(junction & direction_flag) && source.smoothing_flags & SMOOTH_OBJ) { \
+ for(var/obj/thing in neighbor) { \
+ if(!thing.anchored || isnull(thing.smoothing_groups)) { \
+ continue; \
+ }; \
+ for(var/target in source.canSmoothWith) { \
+ if(!(source.canSmoothWith[target] & thing.smoothing_groups[target])) { \
+ continue; \
+ }; \
+ junction |= direction_flag; \
+ break; \
+ }; \
+ if(junction & direction_flag) { \
+ break; \
+ }; \
+ }; \
+ }; \
+ }; \
+ } while(FALSE)
+
+
///Scans all adjacent turfs to find targets to smooth with.
/atom/proc/calculate_adjacencies()
. = NONE
@@ -57,39 +108,39 @@
if(ADJ_FOUND)
. |= direction //BYOND and smooth dirs are the same for cardinals
- if(. & N_NORTH)
- if(. & N_WEST)
+ if(. & NORTH_JUNCTION)
+ if(. & WEST_JUNCTION)
switch(find_type_in_direction(NORTHWEST))
if(NULLTURF_BORDER)
if((smoothing_flags & SMOOTH_BORDER))
- . |= N_NORTHWEST
+ . |= NORTHWEST_JUNCTION
if(ADJ_FOUND)
- . |= N_NORTHWEST
+ . |= NORTHWEST_JUNCTION
- if(. & N_EAST)
+ if(. & EAST_JUNCTION)
switch(find_type_in_direction(NORTHEAST))
if(NULLTURF_BORDER)
if((smoothing_flags & SMOOTH_BORDER))
- . |= N_NORTHEAST
+ . |= NORTHEAST_JUNCTION
if(ADJ_FOUND)
- . |= N_NORTHEAST
+ . |= NORTHEAST_JUNCTION
- if(. & N_SOUTH)
- if(. & N_WEST)
+ if(. & SOUTH_JUNCTION)
+ if(. & WEST_JUNCTION)
switch(find_type_in_direction(SOUTHWEST))
if(NULLTURF_BORDER)
if((smoothing_flags & SMOOTH_BORDER))
- . |= N_SOUTHWEST
+ . |= SOUTHWEST_JUNCTION
if(ADJ_FOUND)
- . |= N_SOUTHWEST
+ . |= SOUTHWEST_JUNCTION
- if(. & N_EAST)
+ if(. & EAST_JUNCTION)
switch(find_type_in_direction(SOUTHEAST))
if(NULLTURF_BORDER)
if((smoothing_flags & SMOOTH_BORDER))
- . |= N_SOUTHEAST
+ . |= SOUTHEAST_JUNCTION
if(ADJ_FOUND)
- . |= N_SOUTHEAST
+ . |= SOUTHEAST_JUNCTION
/atom/movable/calculate_adjacencies()
@@ -104,30 +155,34 @@
if (!z)
CRASH("[type] called smooth_icon() without being on a z-level")
if(smoothing_flags & SMOOTH_CORNERS)
- if(smoothing_flags & SMOOTH_DIAGONAL)
+ if(smoothing_flags & SMOOTH_DIAGONAL_CORNERS)
corners_diagonal_smooth(calculate_adjacencies())
else
corners_cardinal_smooth(calculate_adjacencies())
+ else if(smoothing_flags & SMOOTH_BITMASK)
+ bitmask_smooth()
+ else
+ CRASH("smooth_icon called for [src] with smoothing_flags == [smoothing_flags]")
/atom/proc/corners_diagonal_smooth(adjacencies)
switch(adjacencies)
- if(N_NORTH|N_WEST)
+ if(NORTH_JUNCTION|WEST_JUNCTION)
replace_smooth_overlays("d-se","d-se-0")
- if(N_NORTH|N_EAST)
+ if(NORTH_JUNCTION|EAST_JUNCTION)
replace_smooth_overlays("d-sw","d-sw-0")
- if(N_SOUTH|N_WEST)
+ if(SOUTH_JUNCTION|WEST_JUNCTION)
replace_smooth_overlays("d-ne","d-ne-0")
- if(N_SOUTH|N_EAST)
+ if(SOUTH_JUNCTION|EAST_JUNCTION)
replace_smooth_overlays("d-nw","d-nw-0")
- if(N_NORTH|N_WEST|N_NORTHWEST)
+ if(NORTH_JUNCTION|WEST_JUNCTION|NORTHWEST_JUNCTION)
replace_smooth_overlays("d-se","d-se-1")
- if(N_NORTH|N_EAST|N_NORTHEAST)
+ if(NORTH_JUNCTION|EAST_JUNCTION|NORTHEAST_JUNCTION)
replace_smooth_overlays("d-sw","d-sw-1")
- if(N_SOUTH|N_WEST|N_SOUTHWEST)
+ if(SOUTH_JUNCTION|WEST_JUNCTION|SOUTHWEST_JUNCTION)
replace_smooth_overlays("d-ne","d-ne-1")
- if(N_SOUTH|N_EAST|N_SOUTHEAST)
+ if(SOUTH_JUNCTION|EAST_JUNCTION|SOUTHEAST_JUNCTION)
replace_smooth_overlays("d-nw","d-nw-1")
else
@@ -138,93 +193,57 @@
return TRUE
-//only walls should have a need to handle underlays
-/turf/closed/wall/corners_diagonal_smooth(adjacencies)
- . = ..()
- if(!.)
- return
- adjacencies = reverse_ndir(adjacencies)
- if(adjacencies == NONE)
- return
- var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER, plane = FLOOR_PLANE)
- var/list/U = list(underlay_appearance)
- if(fixed_underlay)
- if(fixed_underlay["space"])
- underlay_appearance.icon = 'icons/turf/space.dmi'
- underlay_appearance.icon_state = SPACE_ICON_STATE
- underlay_appearance.plane = PLANE_SPACE
- else
- underlay_appearance.icon = fixed_underlay["icon"]
- underlay_appearance.icon_state = fixed_underlay["icon_state"]
- else
- var/turned_adjacency = turn(adjacencies, 180)
- var/turf/neighbor_turf = get_step(src, turned_adjacency)
- if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
- neighbor_turf = get_step(src, turn(adjacencies, 135))
- if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
- neighbor_turf = get_step(src, turn(adjacencies, 225))
- //if all else fails, ask our own turf
- if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency) && !get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
- underlay_appearance.icon = DEFAULT_UNDERLAY_ICON
- underlay_appearance.icon_state = DEFAULT_UNDERLAY_ICON_STATE
- underlays = U
-
- // Drop posters which were previously placed on this wall.
- for(var/obj/structure/sign/poster/wall_poster in src)
- wall_poster.roll_and_drop(src)
-
-
/atom/proc/corners_cardinal_smooth(adjacencies)
//NW CORNER
var/nw = "1-i"
- if((adjacencies & N_NORTH) && (adjacencies & N_WEST))
- if(adjacencies & N_NORTHWEST)
+ if((adjacencies & NORTH_JUNCTION) && (adjacencies & WEST_JUNCTION))
+ if(adjacencies & NORTHWEST_JUNCTION)
nw = "1-f"
else
nw = "1-nw"
else
- if(adjacencies & N_NORTH)
+ if(adjacencies & NORTH_JUNCTION)
nw = "1-n"
- else if(adjacencies & N_WEST)
+ else if(adjacencies & WEST_JUNCTION)
nw = "1-w"
//NE CORNER
var/ne = "2-i"
- if((adjacencies & N_NORTH) && (adjacencies & N_EAST))
- if(adjacencies & N_NORTHEAST)
+ if((adjacencies & NORTH_JUNCTION) && (adjacencies & EAST_JUNCTION))
+ if(adjacencies & NORTHEAST_JUNCTION)
ne = "2-f"
else
ne = "2-ne"
else
- if(adjacencies & N_NORTH)
+ if(adjacencies & NORTH_JUNCTION)
ne = "2-n"
- else if(adjacencies & N_EAST)
+ else if(adjacencies & EAST_JUNCTION)
ne = "2-e"
//SW CORNER
var/sw = "3-i"
- if((adjacencies & N_SOUTH) && (adjacencies & N_WEST))
- if(adjacencies & N_SOUTHWEST)
+ if((adjacencies & SOUTH_JUNCTION) && (adjacencies & WEST_JUNCTION))
+ if(adjacencies & SOUTHWEST_JUNCTION)
sw = "3-f"
else
sw = "3-sw"
else
- if(adjacencies & N_SOUTH)
+ if(adjacencies & SOUTH_JUNCTION)
sw = "3-s"
- else if(adjacencies & N_WEST)
+ else if(adjacencies & WEST_JUNCTION)
sw = "3-w"
//SE CORNER
var/se = "4-i"
- if((adjacencies & N_SOUTH) && (adjacencies & N_EAST))
- if(adjacencies & N_SOUTHEAST)
+ if((adjacencies & SOUTH_JUNCTION) && (adjacencies & EAST_JUNCTION))
+ if(adjacencies & SOUTHEAST_JUNCTION)
se = "4-f"
else
se = "4-se"
else
- if(adjacencies & N_SOUTH)
+ if(adjacencies & SOUTH_JUNCTION)
se = "4-s"
- else if(adjacencies & N_EAST)
+ else if(adjacencies & EAST_JUNCTION)
se = "4-e"
var/list/new_overlays
@@ -289,19 +308,95 @@
return NO_ADJ_FOUND
+/**
+ * Basic smoothing proc. The atom checks for adjacent directions to smooth with and changes the icon_state based on that.
+ *
+ * Returns the previous smoothing_junction state so the previous state can be compared with the new one after the proc ends, and see the changes, if any.
+ *
+*/
+/atom/proc/bitmask_smooth()
+ var/new_junction = NONE
+
+ for(var/direction in GLOB.cardinals) //Cardinal case first.
+ SET_ADJ_IN_DIR(src, new_junction, direction, direction)
+
+ if(!(new_junction & (NORTH|SOUTH)) || !(new_junction & (EAST|WEST)))
+ set_smoothed_icon_state(new_junction)
+ return
+
+ if(new_junction & NORTH_JUNCTION)
+ if(new_junction & WEST_JUNCTION)
+ SET_ADJ_IN_DIR(src, new_junction, NORTHWEST, NORTHWEST_JUNCTION)
+
+ if(new_junction & EAST_JUNCTION)
+ SET_ADJ_IN_DIR(src, new_junction, NORTHEAST, NORTHEAST_JUNCTION)
+
+ if(new_junction & SOUTH_JUNCTION)
+ if(new_junction & WEST_JUNCTION)
+ SET_ADJ_IN_DIR(src, new_junction, SOUTHWEST, SOUTHWEST_JUNCTION)
+
+ if(new_junction & EAST_JUNCTION)
+ SET_ADJ_IN_DIR(src, new_junction, SOUTHEAST, SOUTHEAST_JUNCTION)
+
+ set_smoothed_icon_state(new_junction)
+
+
+///Changes the icon state based on the new junction bitmask.
+/atom/proc/set_smoothed_icon_state(new_junction)
+ smoothing_junction = new_junction
+ icon_state = "[base_icon_state]-[smoothing_junction]"
+
+
+/turf/closed/set_smoothed_icon_state(new_junction)
+ if(smoothing_flags & SMOOTH_DIAGONAL_CORNERS && new_junction != smoothing_junction)
+ switch(smoothing_junction)
+ if(
+ NORTH_JUNCTION|WEST_JUNCTION,
+ NORTH_JUNCTION|EAST_JUNCTION,
+ SOUTH_JUNCTION|WEST_JUNCTION,
+ SOUTH_JUNCTION|EAST_JUNCTION,
+ NORTH_JUNCTION|WEST_JUNCTION|NORTHWEST_JUNCTION,
+ NORTH_JUNCTION|EAST_JUNCTION|NORTHEAST_JUNCTION,
+ SOUTH_JUNCTION|WEST_JUNCTION|SOUTHWEST_JUNCTION,
+ SOUTH_JUNCTION|EAST_JUNCTION|SOUTHEAST_JUNCTION
+ )
+ icon_state = "[base_icon_state]-[smoothing_junction]-d"
+ if(!fixed_underlay) // Mutable underlays?
+ var/junction_dir = reverse_ndir(smoothing_junction)
+ var/turned_adjacency = REVERSE_DIR(junction_dir)
+ var/turf/neighbor_turf = get_step(src, turned_adjacency & (NORTH|SOUTH))
+ var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER, plane = FLOOR_PLANE)
+ if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
+ neighbor_turf = get_step(src, turned_adjacency & (EAST|WEST))
+ if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
+ neighbor_turf = get_step(src, turned_adjacency)
+ if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
+ if(!get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) //if all else fails, ask our own turf
+ underlay_appearance.icon = DEFAULT_UNDERLAY_ICON
+ underlay_appearance.icon_state = DEFAULT_UNDERLAY_ICON_STATE
+ underlays = list(underlay_appearance)
+ return ..()
+
+
+/turf/open/floor/set_smoothed_icon_state(new_junction)
+ if(broken || burnt)
+ return
+ return ..()
+
+
//Icon smoothing helpers
/proc/smooth_zlevel(zlevel, now = FALSE)
var/list/away_turfs = block(locate(1, 1, zlevel), locate(world.maxx, world.maxy, zlevel))
for(var/V in away_turfs)
var/turf/T = V
- if(T.smoothing_flags)
+ if(T.smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
if(now)
T.smooth_icon()
else
QUEUE_SMOOTH(T)
for(var/R in T)
var/atom/A = R
- if(A.smoothing_flags)
+ if(A.smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
if(now)
A.smooth_icon()
else
@@ -335,37 +430,37 @@
/proc/reverse_ndir(ndir)
switch(ndir)
- if(N_NORTH)
+ if(NORTH_JUNCTION)
return NORTH
- if(N_SOUTH)
+ if(SOUTH_JUNCTION)
return SOUTH
- if(N_WEST)
+ if(WEST_JUNCTION)
return WEST
- if(N_EAST)
+ if(EAST_JUNCTION)
return EAST
- if(N_NORTHWEST)
+ if(NORTHWEST_JUNCTION)
return NORTHWEST
- if(N_NORTHEAST)
+ if(NORTHEAST_JUNCTION)
return NORTHEAST
- if(N_SOUTHEAST)
+ if(SOUTHEAST_JUNCTION)
return SOUTHEAST
- if(N_SOUTHWEST)
+ if(SOUTHWEST_JUNCTION)
return SOUTHWEST
- if(N_NORTH|N_WEST)
+ if(NORTH_JUNCTION | WEST_JUNCTION)
return NORTHWEST
- if(N_NORTH|N_EAST)
+ if(NORTH_JUNCTION | EAST_JUNCTION)
return NORTHEAST
- if(N_SOUTH|N_WEST)
+ if(SOUTH_JUNCTION | WEST_JUNCTION)
return SOUTHWEST
- if(N_SOUTH|N_EAST)
+ if(SOUTH_JUNCTION | EAST_JUNCTION)
return SOUTHEAST
- if(N_NORTH|N_WEST|N_NORTHWEST)
+ if(NORTH_JUNCTION | WEST_JUNCTION | NORTHWEST_JUNCTION)
return NORTHWEST
- if(N_NORTH|N_EAST|N_NORTHEAST)
+ if(NORTH_JUNCTION | EAST_JUNCTION | NORTHEAST_JUNCTION)
return NORTHEAST
- if(N_SOUTH|N_WEST|N_SOUTHWEST)
+ if(SOUTH_JUNCTION | WEST_JUNCTION | SOUTHWEST_JUNCTION)
return SOUTHWEST
- if(N_SOUTH|N_EAST|N_SOUTHEAST)
+ if(SOUTH_JUNCTION | EAST_JUNCTION | SOUTHEAST_JUNCTION)
return SOUTHEAST
else
return NONE
@@ -376,18 +471,18 @@
name = "smooth wall"
icon = 'icons/turf/smooth_wall.dmi'
icon_state = "smooth"
- smoothing_flags = SMOOTH_CORNERS|SMOOTH_DIAGONAL|SMOOTH_BORDER
+ smoothing_flags = SMOOTH_CORNERS|SMOOTH_DIAGONAL_CORNERS|SMOOTH_BORDER
smoothing_groups = null
canSmoothWith = null
-#undef N_NORTH
-#undef N_SOUTH
-#undef N_EAST
-#undef N_WEST
-#undef N_NORTHEAST
-#undef N_NORTHWEST
-#undef N_SOUTHEAST
-#undef N_SOUTHWEST
+#undef NORTH_JUNCTION
+#undef SOUTH_JUNCTION
+#undef EAST_JUNCTION
+#undef WEST_JUNCTION
+#undef NORTHEAST_JUNCTION
+#undef NORTHWEST_JUNCTION
+#undef SOUTHEAST_JUNCTION
+#undef SOUTHWEST_JUNCTION
#undef NO_ADJ_FOUND
#undef ADJ_FOUND
@@ -395,3 +490,5 @@
#undef DEFAULT_UNDERLAY_ICON
#undef DEFAULT_UNDERLAY_ICON_STATE
+
+#undef SET_ADJ_IN_DIR
diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm
index e98f2f73f13..6be57f7c127 100644
--- a/code/_globalvars/bitfields.dm
+++ b/code/_globalvars/bitfields.dm
@@ -260,13 +260,6 @@ DEFINE_BITFIELD(sight, list(
"SEE_TURFS" = SEE_TURFS,
))
-DEFINE_BITFIELD(smooth, list(
- "SMOOTH_CORNERS" = SMOOTH_CORNERS,
- "SMOOTH_DIAGONAL" = SMOOTH_DIAGONAL,
- "SMOOTH_BORDER" = SMOOTH_BORDER,
- "SMOOTH_QUEUED" = SMOOTH_QUEUED,
-))
-
DEFINE_BITFIELD(vis_flags, list(
"VIS_HIDE" = VIS_HIDE,
"VIS_INHERIT_DIR" = VIS_INHERIT_DIR,
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 83a6cd03704..1d29e89dafb 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -124,6 +124,8 @@
///Icon-smoothing behavior.
var/smoothing_flags = NONE
+ ///What directions this is currently smoothing with. IMPORTANT: This uses the smoothing direction flags as defined in icon_smoothing.dm, instead of the BYOND flags.
+ var/smoothing_junction = NONE
///Smoothing variable
var/top_left_corner
///Smoothing variable
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 23213318ce0..8b4a36cf52f 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -101,13 +101,14 @@
name = "sandbags"
desc = "Bags of sand. Self explanatory."
icon = 'icons/obj/smooth_structures/sandbags.dmi'
- icon_state = "sandbags"
+ icon_state = "sandbags-0"
+ base_icon_state = "sandbags"
max_integrity = 280
proj_pass_rate = 20
pass_flags = LETPASSTHROW
bar_material = SAND
climbable = TRUE
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_SANDBAGS)
canSmoothWith = list(SMOOTH_GROUP_SANDBAGS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SECURITY_BARRICADE)
diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm
index 77d3ce0fb43..85e77345134 100644
--- a/code/game/objects/effects/contraband.dm
+++ b/code/game/objects/effects/contraband.dm
@@ -129,7 +129,7 @@
return
// Deny placing posters on currently-diagonal walls, although the wall may change in the future.
- if (smoothing_flags & SMOOTH_DIAGONAL)
+ if (smoothing_flags & SMOOTH_DIAGONAL_CORNERS)
for (var/O in overlays)
var/image/I = O
if(copytext(I.icon_state, 1, 3) == "d-") //3 == length("d-") + 1
diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm
index 55e2fef54cb..6cdbf09145e 100644
--- a/code/game/objects/effects/decals/cleanable/misc.dm
+++ b/code/game/objects/effects/decals/cleanable/misc.dm
@@ -52,7 +52,9 @@
/obj/effect/decal/cleanable/dirt
name = "dirt"
desc = "Someone should clean that up."
+ icon = 'icons/effects/dirt.dmi'
icon_state = "dirt"
+ base_icon_state = "dirt"
smoothing_flags = NONE
smoothing_groups = list(SMOOTH_GROUP_CLEANABLE_DIRT)
canSmoothWith = list(SMOOTH_GROUP_CLEANABLE_DIRT, SMOOTH_GROUP_WALLS)
@@ -63,14 +65,14 @@
. = ..()
var/turf/T = get_turf(src)
if(T.tiled_dirt)
- smoothing_flags = SMOOTH_CORNERS
- icon = 'icons/effects/dirt.dmi'
- icon_state = ""
+ smoothing_flags = SMOOTH_BITMASK
QUEUE_SMOOTH(src)
- QUEUE_SMOOTH_NEIGHBORS(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
+ QUEUE_SMOOTH_NEIGHBORS(src)
/obj/effect/decal/cleanable/dirt/Destroy()
- QUEUE_SMOOTH_NEIGHBORS(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
+ QUEUE_SMOOTH_NEIGHBORS(src)
return ..()
/obj/effect/decal/cleanable/dirt/dust
diff --git a/code/game/objects/effects/decals/misc.dm b/code/game/objects/effects/decals/misc.dm
index 8f46d5cc463..1f262f2b466 100644
--- a/code/game/objects/effects/decals/misc.dm
+++ b/code/game/objects/effects/decals/misc.dm
@@ -27,5 +27,5 @@
name = "lattice"
desc = "A lightweight support lattice."
icon = 'icons/obj/smooth_structures/lattice.dmi'
- icon_state = "lattice"
+ icon_state = "lattice-255"
density = TRUE
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 6011a426d6b..c7c33d9f242 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -18,15 +18,16 @@
if (!armor)
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50)
. = ..()
- if(smoothing_flags)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH(src)
QUEUE_SMOOTH_NEIGHBORS(src)
- icon_state = ""
+ if(smoothing_flags & SMOOTH_CORNERS)
+ icon_state = ""
GLOB.cameranet.updateVisibility(src)
/obj/structure/Destroy()
GLOB.cameranet.updateVisibility(src)
- if(smoothing_flags)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH_NEIGHBORS(src)
return ..()
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index 90ce3eac648..2512ea324ec 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -53,11 +53,12 @@
name = "resin"
desc = "Looks like some kind of thick resin."
icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi'
- icon_state = "smooth"
+ icon_state = "resin_wall-0"
+ base_icon_state = "resin_wall"
density = TRUE
opacity = TRUE
anchored = TRUE
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN)
canSmoothWith = list(SMOOTH_GROUP_ALIEN_RESIN)
max_integrity = 200
@@ -78,7 +79,8 @@
name = "resin wall"
desc = "Thick resin solidified into a wall."
icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi'
- icon_state = "smooth" //same as resin, but consistency ho!
+ icon_state = "resin_wall-0"
+ base_icon_state = "resin_wall"
resintype = "wall"
smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN, SMOOTH_GROUP_ALIEN_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ALIEN_WALLS)
@@ -90,7 +92,8 @@
name = "resin membrane"
desc = "Resin just thin enough to let light pass through."
icon = 'icons/obj/smooth_structures/alien/resin_membrane.dmi'
- icon_state = "smooth"
+ icon_state = "resin_membrane-0"
+ base_icon_state = "resin_membrane"
opacity = FALSE
max_integrity = 160
resintype = "membrane"
@@ -114,9 +117,11 @@
density = FALSE
layer = TURF_LAYER
plane = FLOOR_PLANE
- icon_state = "weeds"
+ icon = 'icons/obj/smooth_structures/alien/weeds1.dmi'
+ icon_state = "weeds1-0"
+ base_icon_state = "weeds1"
max_integrity = 15
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN, SMOOTH_GROUP_ALIEN_WEEDS)
canSmoothWith = list(SMOOTH_GROUP_ALIEN_WEEDS, SMOOTH_GROUP_WALLS)
var/last_expand = 0 //last world.time this weed expanded
@@ -124,9 +129,11 @@
var/growth_cooldown_high = 200
var/static/list/blacklisted_turfs
+
/obj/structure/alien/weeds/Initialize()
pixel_x = -4
pixel_y = -4 //so the sprites line up right in the map editor
+
. = ..()
if(!blacklisted_turfs)
@@ -135,16 +142,26 @@
/turf/open/chasm,
/turf/open/lava))
+ set_base_icon()
last_expand = world.time + rand(growth_cooldown_low, growth_cooldown_high)
- if(icon == initial(icon))
- switch(rand(1,3))
- if(1)
- icon = 'icons/obj/smooth_structures/alien/weeds1.dmi'
- if(2)
- icon = 'icons/obj/smooth_structures/alien/weeds2.dmi'
- if(3)
- icon = 'icons/obj/smooth_structures/alien/weeds3.dmi'
+
+
+///Randomizes the weeds' starting icon, gets redefined by children for them not to share the behavior.
+/obj/structure/alien/weeds/proc/set_base_icon()
+ . = base_icon_state
+ switch(rand(1,3))
+ if(1)
+ icon = 'icons/obj/smooth_structures/alien/weeds1.dmi'
+ base_icon_state = "weeds1"
+ if(2)
+ icon = 'icons/obj/smooth_structures/alien/weeds2.dmi'
+ base_icon_state = "weeds2"
+ if(3)
+ icon = 'icons/obj/smooth_structures/alien/weeds3.dmi'
+ base_icon_state = "weeds3"
+ set_smoothed_icon_state(smoothing_junction)
+
/obj/structure/alien/weeds/proc/expand()
var/turf/U = get_turf(src)
@@ -170,14 +187,16 @@
/obj/structure/alien/weeds/node
name = "glowing resin"
desc = "Blue bioluminescence shines from beneath the surface."
- icon_state = "weednode"
+ icon = 'icons/obj/smooth_structures/alien/weednode.dmi'
+ icon_state = "weednode-0"
+ base_icon_state = "weednode"
light_color = LIGHT_COLOR_BLUE
light_power = 0.5
var/lon_range = 4
var/node_range = NODERANGE
+
/obj/structure/alien/weeds/node/Initialize()
- icon = 'icons/obj/smooth_structures/alien/weednode.dmi'
. = ..()
set_light(lon_range)
var/obj/structure/alien/weeds/W = locate(/obj/structure/alien/weeds) in loc
@@ -185,16 +204,23 @@
qdel(W)
START_PROCESSING(SSobj, src)
+
/obj/structure/alien/weeds/node/Destroy()
STOP_PROCESSING(SSobj, src)
return ..()
+
/obj/structure/alien/weeds/node/process()
for(var/obj/structure/alien/weeds/W in range(node_range, src))
if(W.last_expand <= world.time)
if(W.expand())
W.last_expand = world.time + rand(growth_cooldown_low, growth_cooldown_high)
+
+/obj/structure/alien/weeds/node/set_base_icon()
+ return //No icon randomization at init. The node's icon is already well defined.
+
+
#undef NODERANGE
diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm
index 5389ab9de00..80cd0f3f25b 100644
--- a/code/game/objects/structures/beds_chairs/alien_nest.dm
+++ b/code/game/objects/structures/beds_chairs/alien_nest.dm
@@ -4,11 +4,13 @@
name = "alien nest"
desc = "It's a gruesome pile of thick, sticky resin shaped like a nest."
icon = 'icons/obj/smooth_structures/alien/nest.dmi'
- icon_state = "nest"
+ icon_state = "nest-0"
+ base_icon_state = "nest"
max_integrity = 120
can_be_unanchored = FALSE
- smoothing_flags = SMOOTH_CORNERS
- canSmoothWith = null
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_ALIEN_NEST)
+ canSmoothWith = list(SMOOTH_GROUP_ALIEN_NEST)
buildstacktype = null
flags_1 = NODECONSTRUCT_1
bolts = FALSE
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 3716bd9416f..891b0ba31d5 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -6,12 +6,13 @@
desc = "A huge chunk of metal used to separate rooms."
anchored = TRUE
icon = 'icons/turf/walls/wall.dmi'
- icon_state = "wall"
+ icon_state = "wall-0"
+ base_icon_state = "wall"
layer = LOW_OBJ_LAYER
density = TRUE
opacity = TRUE
max_integrity = 100
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WALLS)
can_be_unanchored = FALSE
@@ -63,8 +64,8 @@
icon_state = "fwall_closing"
else
if(density)
- icon_state = initial(icon_state)
- smoothing_flags = SMOOTH_CORNERS
+ icon_state = "[base_icon_state]-[smoothing_junction]"
+ smoothing_flags = SMOOTH_BITMASK
QUEUE_SMOOTH(src)
else
icon_state = "fwall_open"
@@ -133,9 +134,11 @@
name = "reinforced wall"
desc = "A huge chunk of reinforced metal used to separate rooms."
icon = 'icons/turf/walls/reinforced_wall.dmi'
- icon_state = "r_wall"
+ icon_state = "reinforced_wall-0"
+ base_icon_state = "reinforced_wall"
walltype = /turf/closed/wall/r_wall
mineral = /obj/item/stack/sheet/plasteel
+ smoothing_flags = SMOOTH_BITMASK
/obj/structure/falsewall/reinforced/examine_status(mob/user)
to_chat(user, "The outer grille is fully intact.")
@@ -154,9 +157,11 @@
name = "uranium wall"
desc = "A wall with uranium plating. This is probably a bad idea."
icon = 'icons/turf/walls/uranium_wall.dmi'
- icon_state = "uranium"
+ icon_state = "uranium_wall-0"
+ base_icon_state = "uranium_wall"
mineral = /obj/item/stack/sheet/mineral/uranium
walltype = /turf/closed/wall/mineral/uranium
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS)
var/active = null
@@ -189,9 +194,11 @@
name = "gold wall"
desc = "A wall with gold plating. Swag!"
icon = 'icons/turf/walls/gold_wall.dmi'
- icon_state = "gold"
+ icon_state = "gold_wall-0"
+ base_icon_state = "gold_wall"
mineral = /obj/item/stack/sheet/mineral/gold
walltype = /turf/closed/wall/mineral/gold
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_GOLD_WALLS)
@@ -199,9 +206,11 @@
name = "silver wall"
desc = "A wall with silver plating. Shiny."
icon = 'icons/turf/walls/silver_wall.dmi'
- icon_state = "silver"
+ icon_state = "silver_wall-0"
+ base_icon_state = "silver_wall"
mineral = /obj/item/stack/sheet/mineral/silver
walltype = /turf/closed/wall/mineral/silver
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SILVER_WALLS)
@@ -209,9 +218,11 @@
name = "diamond wall"
desc = "A wall with diamond plating. You monster."
icon = 'icons/turf/walls/diamond_wall.dmi'
- icon_state = "diamond"
+ icon_state = "diamond_wall-0"
+ base_icon_state = "diamond_wall"
mineral = /obj/item/stack/sheet/mineral/diamond
walltype = /turf/closed/wall/mineral/diamond
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS)
canSmoothWith = list(SMOOTH_GROUP_DIAMOND_WALLS)
max_integrity = 800
@@ -220,9 +231,11 @@
name = "plasma wall"
desc = "A wall with plasma plating. This is definitely a bad idea."
icon = 'icons/turf/walls/plasma_wall.dmi'
- icon_state = "plasma"
+ icon_state = "plasma_wall-0"
+ base_icon_state = "plasma_wall"
mineral = /obj/item/stack/sheet/mineral/plasma
walltype = /turf/closed/wall/mineral/plasma
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASMA_WALLS)
@@ -249,9 +262,11 @@
name = "bananium wall"
desc = "A wall with bananium plating. Honk!"
icon = 'icons/turf/walls/bananium_wall.dmi'
- icon_state = "bananium"
+ icon_state = "bananium_wall-0"
+ base_icon_state = "bananium_wall"
mineral = /obj/item/stack/sheet/mineral/bananium
walltype = /turf/closed/wall/mineral/bananium
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS)
@@ -260,9 +275,11 @@
name = "sandstone wall"
desc = "A wall with sandstone plating. Rough."
icon = 'icons/turf/walls/sandstone_wall.dmi'
- icon_state = "sandstone"
+ icon_state = "sandstone_wall-0"
+ base_icon_state = "sandstone_wall"
mineral = /obj/item/stack/sheet/mineral/sandstone
walltype = /turf/closed/wall/mineral/sandstone
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SANDSTONE_WALLS)
@@ -270,9 +287,11 @@
name = "wooden wall"
desc = "A wall with wooden plating. Stiff."
icon = 'icons/turf/walls/wood_wall.dmi'
- icon_state = "wood"
+ icon_state = "wood_wall-0"
+ base_icon_state = "wood_wall"
mineral = /obj/item/stack/sheet/mineral/wood
walltype = /turf/closed/wall/mineral/wood
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
@@ -280,10 +299,13 @@
name = "rough metal wall"
desc = "A wall with rough metal plating."
icon = 'icons/turf/walls/iron_wall.dmi'
- icon_state = "iron"
+ icon_state = "iron_wall-0"
+ base_icon_state = "iron_wall"
mineral = /obj/item/stack/rods
mineral_amount = 5
walltype = /turf/closed/wall/mineral/iron
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS)
canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS)
@@ -291,9 +313,11 @@
name = "alien wall"
desc = "A wall with alien alloy plating."
icon = 'icons/turf/walls/abductor_wall.dmi'
- icon_state = "abductor"
+ icon_state = "abductor_wall-0"
+ base_icon_state = "abductor_wall"
mineral = /obj/item/stack/sheet/mineral/abductor
walltype = /turf/closed/wall/mineral/abductor
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS)
@@ -301,10 +325,11 @@
name = "wall"
desc = "A light-weight titanium wall used in shuttles."
icon = 'icons/turf/walls/shuttle_wall.dmi'
- icon_state = "shuttle"
+ icon_state = "shuttle_wall-0"
+ base_icon_state = "shuttle_wall"
mineral = /obj/item/stack/sheet/mineral/titanium
walltype = /turf/closed/wall/mineral/titanium
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
@@ -312,9 +337,10 @@
name = "wall"
desc = "An evil wall of plasma and titanium."
icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "shuttle"
+ icon_state = "plastitanium_wall-0"
+ base_icon_state = "plastitanium_wall"
mineral = /obj/item/stack/sheet/mineral/plastitanium
walltype = /turf/closed/wall/mineral/plastitanium
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
diff --git a/code/game/objects/structures/fluff.dm b/code/game/objects/structures/fluff.dm
index 4ea4c5a35fb..f4849995a8b 100644
--- a/code/game/objects/structures/fluff.dm
+++ b/code/game/objects/structures/fluff.dm
@@ -252,8 +252,9 @@
name = "hedge"
desc = "A large bushy hedge."
icon = 'icons/obj/smooth_structures/hedge.dmi'
- icon_state = "hedge"
- smoothing_flags = SMOOTH_CORNERS
+ icon_state = "hedge-0"
+ base_icon_state = "hedge"
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_HEDGE_FLUFF)
canSmoothWith = list(SMOOTH_GROUP_HEDGE_FLUFF)
density = TRUE
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index b3fc1d503b6..fc5b4818163 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -31,7 +31,7 @@
var/ratio = obj_integrity / max_integrity
ratio = CEILING(ratio*4, 1) * 25
- if(smoothing_flags)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH(src)
if(ratio > 50)
diff --git a/code/game/objects/structures/industrial_lift.dm b/code/game/objects/structures/industrial_lift.dm
index 5727bf7237d..adcc13270fd 100644
--- a/code/game/objects/structures/industrial_lift.dm
+++ b/code/game/objects/structures/industrial_lift.dm
@@ -135,16 +135,17 @@ GLOBAL_LIST_EMPTY(lifts)
name = "lift platform"
desc = "A lightweight lift platform. It moves up and down."
icon = 'icons/obj/smooth_structures/catwalk.dmi'
- icon_state = "catwalk"
+ icon_state = "catwalk-0"
+ base_icon_state = "catwalk"
density = FALSE
anchored = TRUE
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 50)
max_integrity = 50
layer = LATTICE_LAYER //under pipes
plane = FLOOR_PLANE
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_INDUSTRIAL_LIFT)
- canSmoothWith = null
+ canSmoothWith = list(SMOOTH_GROUP_INDUSTRIAL_LIFT)
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN
var/id = null //ONLY SET THIS TO ONE OF THE LIFT'S PARTS. THEY'RE CONNECTED! ONLY ONE NEEDS THE SIGNAL!
diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm
index b0f731e4df9..eacfe6142e7 100644
--- a/code/game/objects/structures/lattice.dm
+++ b/code/game/objects/structures/lattice.dm
@@ -2,7 +2,8 @@
name = "lattice"
desc = "A lightweight support lattice. These hold our station together."
icon = 'icons/obj/smooth_structures/lattice.dmi'
- icon_state = "lattice"
+ icon_state = "lattice-255"
+ base_icon_state = "lattice"
density = FALSE
anchored = TRUE
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 50)
@@ -10,7 +11,7 @@
layer = LATTICE_LAYER //under pipes
plane = FLOOR_PLANE
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_LATTICE)
canSmoothWith = list(SMOOTH_GROUP_LATTICE, SMOOTH_GROUP_OPEN_FLOOR, SMOOTH_GROUP_WALLS)
var/number_of_mats = 1
@@ -72,11 +73,12 @@
name = "catwalk"
desc = "A catwalk for easier EVA maneuvering and cable placement."
icon = 'icons/obj/smooth_structures/catwalk.dmi'
- icon_state = "catwalk"
+ icon_state = "catwalk-0"
+ base_icon_state = "catwalk"
number_of_mats = 2
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_LATTICE, SMOOTH_GROUP_OPEN_FLOOR)
- canSmoothWith = null
+ canSmoothWith = list(SMOOTH_GROUP_LATTICE)
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP
/obj/structure/lattice/catwalk/deconstruction_hints(mob/user)
@@ -98,12 +100,13 @@
name = "heatproof support lattice"
desc = "A specialized support beam for building across lava. Watch your step."
icon = 'icons/obj/smooth_structures/catwalk.dmi'
- icon_state = "catwalk"
+ icon_state = "catwalk-0"
+ base_icon_state = "catwalk"
number_of_mats = 1
color = "#5286b9ff"
- smoothing_flags = SMOOTH_CORNERS
- smoothing_groups = null
- canSmoothWith = null
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_LATTICE, SMOOTH_GROUP_OPEN_FLOOR)
+ canSmoothWith = list(SMOOTH_GROUP_LATTICE)
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP
resistance_flags = FIRE_PROOF | LAVA_PROOF
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index a399427fe10..4d629b85d5e 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -311,7 +311,8 @@
/obj/structure/mineral_door/paperframe/Initialize()
. = ..()
- QUEUE_SMOOTH_NEIGHBORS(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
+ QUEUE_SMOOTH_NEIGHBORS(src)
/obj/structure/mineral_door/paperframe/examine(mob/user)
. = ..()
@@ -346,5 +347,6 @@
return
/obj/structure/mineral_door/paperframe/Destroy()
- QUEUE_SMOOTH_NEIGHBORS(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
+ QUEUE_SMOOTH_NEIGHBORS(src)
return ..()
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index c69100442d2..e2aa6ad4242 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -16,7 +16,8 @@
name = "table"
desc = "A square piece of metal standing on four metal legs. It can not move."
icon = 'icons/obj/smooth_structures/table.dmi'
- icon_state = "table"
+ icon_state = "table-0"
+ base_icon_state = "table"
density = TRUE
anchored = TRUE
layer = TABLE_LAYER
@@ -32,7 +33,7 @@
custom_materials = list(/datum/material/iron = 2000)
max_integrity = 100
integrity_failure = 0.33
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_TABLES)
canSmoothWith = list(SMOOTH_GROUP_TABLES)
@@ -44,7 +45,7 @@
return "The top is screwed on, but the main bolts are also visible."
/obj/structure/table/update_icon()
- if(smoothing_flags)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH(src)
QUEUE_SMOOTH_NEIGHBORS(src)
@@ -257,7 +258,8 @@
/obj/structure/table/greyscale
icon = 'icons/obj/smooth_structures/table_greyscale.dmi'
- icon_state = "table"
+ icon_state = "table_greyscale-0"
+ base_icon_state = "table_greyscale"
material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
buildstack = null //No buildstack, so generate from mat datums
@@ -302,10 +304,11 @@
name = "glass table"
desc = "What did I say about leaning on the glass tables? Now you need surgery."
icon = 'icons/obj/smooth_structures/glass_table.dmi'
- icon_state = "glass_table"
+ icon_state = "glass_table-0"
+ base_icon_state = "glass_table"
buildstack = /obj/item/stack/sheet/glass
- smoothing_groups = null
- canSmoothWith = null
+ smoothing_groups = list(SMOOTH_GROUP_GLASS_TABLES)
+ canSmoothWith = list(SMOOTH_GROUP_GLASS_TABLES)
max_integrity = 70
resistance_flags = ACID_PROOF
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100)
@@ -381,7 +384,8 @@
name = "wooden table"
desc = "Do not apply fire to this. Rumour says it burns easily."
icon = 'icons/obj/smooth_structures/wood_table.dmi'
- icon_state = "wood_table"
+ icon_state = "wood_table-0"
+ base_icon_state = "wood_table"
frame = /obj/structure/table_frame/wood
framestack = /obj/item/stack/sheet/mineral/wood
buildstack = /obj/item/stack/sheet/mineral/wood
@@ -398,7 +402,8 @@
name = "gambling table"
desc = "A seedy table for seedy dealings in seedy places."
icon = 'icons/obj/smooth_structures/poker_table.dmi'
- icon_state = "poker_table"
+ icon_state = "poker_table-0"
+ base_icon_state = "poker_table"
buildstack = /obj/item/stack/tile/carpet
/obj/structure/table/wood/poker/narsie_act()
@@ -409,6 +414,7 @@
desc = "A standard metal table frame covered with an amazingly fancy, patterned cloth."
icon = 'icons/obj/structures.dmi'
icon_state = "fancy_table"
+ base_icon_state = "fancy_table"
frame = /obj/structure/table_frame
framestack = /obj/item/stack/rods
buildstack = /obj/item/stack/tile/carpet
@@ -426,46 +432,55 @@
/obj/structure/table/wood/fancy/black
icon_state = "fancy_table_black"
+ base_icon_state = "fancy_table_black"
buildstack = /obj/item/stack/tile/carpet/black
smooth_icon = 'icons/obj/smooth_structures/fancy_table_black.dmi'
/obj/structure/table/wood/fancy/blue
icon_state = "fancy_table_blue"
+ base_icon_state = "fancy_table_blue"
buildstack = /obj/item/stack/tile/carpet/blue
smooth_icon = 'icons/obj/smooth_structures/fancy_table_blue.dmi'
/obj/structure/table/wood/fancy/cyan
icon_state = "fancy_table_cyan"
+ base_icon_state = "fancy_table_cyan"
buildstack = /obj/item/stack/tile/carpet/cyan
smooth_icon = 'icons/obj/smooth_structures/fancy_table_cyan.dmi'
/obj/structure/table/wood/fancy/green
icon_state = "fancy_table_green"
+ base_icon_state = "fancy_table_green"
buildstack = /obj/item/stack/tile/carpet/green
smooth_icon = 'icons/obj/smooth_structures/fancy_table_green.dmi'
/obj/structure/table/wood/fancy/orange
icon_state = "fancy_table_orange"
+ base_icon_state = "fancy_table_orange"
buildstack = /obj/item/stack/tile/carpet/orange
smooth_icon = 'icons/obj/smooth_structures/fancy_table_orange.dmi'
/obj/structure/table/wood/fancy/purple
icon_state = "fancy_table_purple"
+ base_icon_state = "fancy_table_purple"
buildstack = /obj/item/stack/tile/carpet/purple
smooth_icon = 'icons/obj/smooth_structures/fancy_table_purple.dmi'
/obj/structure/table/wood/fancy/red
icon_state = "fancy_table_red"
+ base_icon_state = "fancy_table_red"
buildstack = /obj/item/stack/tile/carpet/red
smooth_icon = 'icons/obj/smooth_structures/fancy_table_red.dmi'
/obj/structure/table/wood/fancy/royalblack
icon_state = "fancy_table_royalblack"
+ base_icon_state = "fancy_table_royalblack"
buildstack = /obj/item/stack/tile/carpet/royalblack
smooth_icon = 'icons/obj/smooth_structures/fancy_table_royalblack.dmi'
/obj/structure/table/wood/fancy/royalblue
icon_state = "fancy_table_royalblue"
+ base_icon_state = "fancy_table_royalblue"
buildstack = /obj/item/stack/tile/carpet/royalblue
smooth_icon = 'icons/obj/smooth_structures/fancy_table_royalblue.dmi'
@@ -476,7 +491,8 @@
name = "reinforced table"
desc = "A reinforced version of the four legged table."
icon = 'icons/obj/smooth_structures/reinforced_table.dmi'
- icon_state = "r_table"
+ icon_state = "reinforced_table-0"
+ base_icon_state = "reinforced_table"
deconstruction_ready = 0
buildstack = /obj/item/stack/sheet/plasteel
max_integrity = 200
@@ -511,7 +527,8 @@
name = "bronze table"
desc = "A solid table made out of bronze."
icon = 'icons/obj/smooth_structures/brass_table.dmi'
- icon_state = "brass_table"
+ icon_state = "brass_table-0"
+ base_icon_state = "brass_table"
resistance_flags = FIRE_PROOF | ACID_PROOF
buildstack = /obj/item/stack/tile/bronze
smoothing_groups = list(SMOOTH_GROUP_BRONZE_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 3774a9c33d4..d66f3b97c45 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -317,7 +317,7 @@
//This proc is used to update the icons of nearby windows.
/obj/structure/window/proc/update_nearby_icons()
update_icon()
- if(smoothing_flags)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH_NEIGHBORS(src)
//merges adjacent full-tile windows into one
@@ -330,7 +330,7 @@
var/ratio = obj_integrity / max_integrity
ratio = CEILING(ratio*4, 1) * 25
- if(smoothing_flags)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH(src)
cut_overlay(crack_overlay)
@@ -598,12 +598,13 @@
/obj/structure/window/fulltile
icon = 'icons/obj/smooth_structures/window.dmi'
- icon_state = "window"
+ icon_state = "window-0"
+ base_icon_state = "window"
dir = FULLTILE_WINDOW_DIR
max_integrity = 50
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
glass_amount = 2
@@ -613,12 +614,13 @@
/obj/structure/window/plasma/fulltile
icon = 'icons/obj/smooth_structures/plasma_window.dmi'
- icon_state = "plasmawindow"
+ icon_state = "plasma_window-0"
+ base_icon_state = "plasma_window"
dir = FULLTILE_WINDOW_DIR
max_integrity = 300
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
glass_amount = 2
@@ -628,13 +630,14 @@
/obj/structure/window/plasma/reinforced/fulltile
icon = 'icons/obj/smooth_structures/rplasma_window.dmi'
- icon_state = "rplasmawindow"
+ icon_state = "rplasma_window-0"
+ base_icon_state = "rplasma_window"
dir = FULLTILE_WINDOW_DIR
state = RWINDOW_SECURE
max_integrity = 1000
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
glass_amount = 2
@@ -645,13 +648,14 @@
/obj/structure/window/reinforced/fulltile
icon = 'icons/obj/smooth_structures/reinforced_window.dmi'
- icon_state = "r_window"
+ icon_state = "reinforced_window-0"
+ base_icon_state = "reinforced_window"
dir = FULLTILE_WINDOW_DIR
max_integrity = 150
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
state = RWINDOW_SECURE
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
glass_amount = 2
@@ -662,18 +666,20 @@
/obj/structure/window/reinforced/tinted/fulltile
icon = 'icons/obj/smooth_structures/tinted_window.dmi'
- icon_state = "tinted_window"
+ icon_state = "tinted_window-0"
+ base_icon_state = "tinted_window"
dir = FULLTILE_WINDOW_DIR
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
glass_amount = 2
/obj/structure/window/reinforced/fulltile/ice
icon = 'icons/obj/smooth_structures/rice_window.dmi'
- icon_state = "ice_window"
+ icon_state = "rice_window-0"
+ base_icon_state = "rice_window"
max_integrity = 150
glass_amount = 2
@@ -681,7 +687,8 @@
name = "shuttle window"
desc = "A reinforced, air-locked pod window."
icon = 'icons/obj/smooth_structures/shuttle_window.dmi'
- icon_state = "shuttle_window"
+ icon_state = "shuttle_window-0"
+ base_icon_state = "shuttle_window"
dir = FULLTILE_WINDOW_DIR
max_integrity = 150
wtype = "shuttle"
@@ -690,9 +697,9 @@
reinf = TRUE
heat_resistance = 1600
armor = list(MELEE = 90, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, RAD = 100, FIRE = 80, ACID = 100)
- smoothing_flags = SMOOTH_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS)
- canSmoothWith = null
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE)
explosion_block = 3
glass_type = /obj/item/stack/sheet/titaniumglass
glass_amount = 2
@@ -711,7 +718,8 @@
name = "plastitanium window"
desc = "A durable looking window made of an alloy of of plasma and titanium."
icon = 'icons/obj/smooth_structures/plastitanium_window.dmi'
- icon_state = "plastitanium_window"
+ icon_state = "plastitanium_window-0"
+ base_icon_state = "plastitanium_window"
dir = FULLTILE_WINDOW_DIR
max_integrity = 1200
wtype = "shuttle"
@@ -719,9 +727,9 @@
flags_1 = PREVENT_CLICK_UNDER_1
heat_resistance = 1600
armor = list(MELEE = 95, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, RAD = 100, FIRE = 80, ACID = 100)
- smoothing_flags = SMOOTH_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS)
- canSmoothWith = null
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM)
explosion_block = 3
damage_deflection = 21 //The same as reinforced plasma windows.3
glass_type = /obj/item/stack/sheet/plastitaniumglass
@@ -736,13 +744,14 @@
name = "paper frame"
desc = "A fragile separator made of thin wood and paper."
icon = 'icons/obj/smooth_structures/paperframes.dmi'
- icon_state = "frame"
+ icon_state = "paperframes-0"
+ base_icon_state = "paperframes"
dir = FULLTILE_WINDOW_DIR
opacity = TRUE
max_integrity = 15
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_PAPERFRAME)
canSmoothWith = list(SMOOTH_GROUP_PAPERFRAME)
glass_amount = 2
@@ -791,7 +800,8 @@
cut_overlay(torn)
add_overlay(paper)
set_opacity(TRUE)
- QUEUE_SMOOTH(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
+ QUEUE_SMOOTH(src)
/obj/structure/window/paperframe/attackby(obj/item/W, mob/user)
@@ -823,10 +833,11 @@
anchored = FALSE
/obj/structure/window/bronze/fulltile
- icon_state = "clockwork_window"
- smoothing_flags = SMOOTH_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
- canSmoothWith = null
+ icon_state = "clockwork_window-0"
+ base_icon_state = "clockwork_window"
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WINDOW_FULLTILE_BRONZE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_BRONZE)
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
dir = FULLTILE_WINDOW_DIR
diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm
index 3cf5b936584..b7776acb47c 100644
--- a/code/game/turfs/change_turf.dm
+++ b/code/game/turfs/change_turf.dm
@@ -285,7 +285,8 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list(
for(var/obj/machinery/door/firedoor/FD in T)
FD.CalculateAffectingAreas()
- QUEUE_SMOOTH_NEIGHBORS(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
+ QUEUE_SMOOTH_NEIGHBORS(src)
HandleTurfChange(src)
diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm
index bb3a77d64d1..a6d2dda993a 100644
--- a/code/game/turfs/closed/_closed.dm
+++ b/code/game/turfs/closed/_closed.dm
@@ -48,9 +48,10 @@
name = "sandstone wall"
desc = "A wall with sandstone plating. Rough."
icon = 'icons/turf/walls/sandstone_wall.dmi'
- icon_state = "sandstone"
+ icon_state = "sandstone_wall-0"
+ base_icon_state = "sandstone_wall"
baseturfs = /turf/closed/indestructible/sandstone
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
/turf/closed/indestructible/oldshuttle/corner
icon_state = "corner"
@@ -78,30 +79,39 @@
/turf/closed/indestructible/riveted
icon = 'icons/turf/walls/riveted.dmi'
- icon_state = "riveted"
- smoothing_flags = SMOOTH_CORNERS
+ icon_state = "riveted-0"
+ base_icon_state = "riveted"
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS)
+ canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
/turf/closed/indestructible/syndicate
icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "map-shuttle"
- smoothing_flags = SMOOTH_CORNERS
+ icon_state = "plastitanium_wall-0"
+ base_icon_state = "plastitanium_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
/turf/closed/indestructible/riveted/uranium
icon = 'icons/turf/walls/uranium_wall.dmi'
- icon_state = "uranium"
+ icon_state = "uranium_wall-0"
+ base_icon_state = "uranium_wall"
+ smoothing_flags = SMOOTH_BITMASK
/turf/closed/indestructible/riveted/plastinum
name = "plastinum wall"
desc = "A luxurious wall made out of a plasma-platinum alloy. Effectively impervious to conventional methods of destruction."
icon = 'icons/turf/walls/plastinum_wall.dmi'
- icon_state = "shuttle"
+ icon_state = "plastinum_wall-0"
+ base_icon_state = "plastinum_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
/turf/closed/indestructible/wood
icon = 'icons/turf/walls/wood_wall.dmi'
- icon_state = "wood"
- smoothing_flags = SMOOTH_CORNERS
+ icon_state = "wood_wall-0"
+ base_icon_state = "wood_wall"
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
@@ -111,27 +121,32 @@
/turf/closed/indestructible/opshuttle
icon_state = "wall3"
+
/turf/closed/indestructible/fakeglass
name = "window"
- icon_state = "fake_window"
- opacity = FALSE
- smoothing_flags = SMOOTH_CORNERS
icon = 'icons/obj/smooth_structures/reinforced_window.dmi'
+ icon_state = "fake_window"
+ base_icon_state = "reinforced_window"
+ opacity = FALSE
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
/turf/closed/indestructible/fakeglass/Initialize()
. = ..()
- icon_state = null //set the icon state to null, so our base state isn't visible
underlays += mutable_appearance('icons/obj/structures.dmi', "grille") //add a grille underlay
underlays += mutable_appearance('icons/turf/floors.dmi', "plating") //add the plating underlay, below the grille
+
/turf/closed/indestructible/opsglass
name = "window"
- icon_state = "plastitanium_window"
- opacity = FALSE
- smoothing_flags = SMOOTH_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS)
- canSmoothWith = null
icon = 'icons/obj/smooth_structures/plastitanium_window.dmi'
+ icon_state = "plastitanium_window-0"
+ base_icon_state = "plastitanium_window"
+ opacity = FALSE
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM)
/turf/closed/indestructible/opsglass/Initialize()
. = ..()
@@ -166,8 +181,9 @@
/turf/closed/indestructible/rock/snow/ice/ore
icon = 'icons/turf/walls/icerock_wall.dmi'
- icon_state = "icerock"
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ icon_state = "icerock_wall-0"
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
pixel_x = -4
pixel_y = -4
@@ -196,7 +212,9 @@
name = "necropolis wall"
desc = "A thick, seemingly indestructible stone wall."
icon = 'icons/turf/walls/boss_wall.dmi'
- icon_state = "wall"
+ icon_state = "boss_wall-0"
+ base_icon_state = "boss_wall"
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_BOSS_WALLS)
canSmoothWith = list(SMOOTH_GROUP_BOSS_WALLS)
explosion_block = 50
@@ -215,3 +233,4 @@
desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern."
icon = 'icons/turf/walls/hierophant_wall.dmi'
icon_state = "wall"
+ smoothing_flags = SMOOTH_CORNERS
diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm
index ed4577363a6..c36fbcbf4a3 100644
--- a/code/game/turfs/closed/minerals.dm
+++ b/code/game/turfs/closed/minerals.dm
@@ -4,8 +4,7 @@
name = "rock"
icon = 'icons/turf/mining.dmi'
icon_state = "rock"
- var/smooth_icon = 'icons/turf/smoothrocks.dmi'
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_MINERAL_WALLS)
canSmoothWith = list(SMOOTH_GROUP_MINERAL_WALLS)
baseturfs = /turf/open/floor/plating/asteroid/airless
@@ -14,6 +13,8 @@
density = TRUE
layer = EDGED_TURF_LAYER
temperature = TCMB
+ base_icon_state = "smoothrocks"
+ var/smooth_icon = 'icons/turf/smoothrocks.dmi'
var/environment_type = "asteroid"
var/turf/open/floor/plating/turf_type = /turf/open/floor/plating/asteroid/airless
var/obj/item/stack/ore/mineralType = null
@@ -254,7 +255,8 @@
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/mountain_wall.dmi'
icon_state = "mountainrock"
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ base_icon_state = "mountain_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
defer_change = TRUE
environment_type = "snow_cavern"
@@ -273,6 +275,9 @@
if(mineralType)
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
icon = 'icons/turf/walls/icerock_wall.dmi'
+ icon_state = "icerock_wall-0"
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
/turf/closed/mineral/random/snow/more_caves
mineralSpawnChanceList = list(
@@ -324,7 +329,8 @@
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/mountain_wall.dmi'
icon_state = "mountainrock"
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ base_icon_state = "mountain_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
defer_change = TRUE
environment_type = "snow"
@@ -353,6 +359,8 @@
environment_type = "snow_cavern"
icon_state = "icerock_iron"
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = FROZEN_ATMOS
@@ -378,6 +386,8 @@
environment_type = "snow_cavern"
icon_state = "icerock_Uranium"
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = FROZEN_ATMOS
@@ -403,6 +413,8 @@
environment_type = "snow_cavern"
icon_state = "icerock_diamond"
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = FROZEN_ATMOS
@@ -428,6 +440,8 @@
environment_type = "snow_cavern"
icon_state = "icerock_gold"
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = FROZEN_ATMOS
@@ -453,6 +467,8 @@
environment_type = "snow_cavern"
icon_state = "icerock_silver"
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = FROZEN_ATMOS
@@ -478,6 +494,8 @@
environment_type = "snow_cavern"
icon_state = "icerock_titanium"
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = FROZEN_ATMOS
@@ -503,6 +521,8 @@
environment_type = "snow_cavern"
icon_state = "icerock_plasma"
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = FROZEN_ATMOS
@@ -522,6 +542,8 @@
environment_type = "snow_cavern"
icon_state = "icerock_Bananium"
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = FROZEN_ATMOS
@@ -548,6 +570,8 @@
environment_type = "snow_cavern"
icon_state = "icerock_BScrystal"
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = FROZEN_ATMOS
@@ -575,7 +599,8 @@
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/rock_wall.dmi'
icon_state = "rock2"
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ base_icon_state = "rock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
baseturfs = /turf/open/floor/plating/ashplanet/wateryrock
initial_gas_mix = OPENTURF_LOW_PRESSURE
@@ -588,7 +613,8 @@
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/mountain_wall.dmi'
icon_state = "mountainrock"
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ base_icon_state = "mountain_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
baseturfs = /turf/open/floor/plating/asteroid/snow
initial_gas_mix = FROZEN_ATMOS
@@ -606,7 +632,8 @@
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
icon_state = "icerock"
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
environment_type = "snow_cavern"
turf_type = /turf/open/floor/plating/asteroid/snow/ice
@@ -716,6 +743,8 @@
environment_type = "snow_cavern"
icon_state = "icerock_Gibtonite"
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ base_icon_state = "icerock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/floor/plating/asteroid/snow/ice
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
initial_gas_mix = FROZEN_ATMOS
@@ -735,6 +764,8 @@
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
defer_change = 1
smooth_icon = 'icons/turf/walls/rock_wall.dmi'
+ base_icon_state = "rock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
/turf/closed/mineral/strong/attackby(obj/item/I, mob/user, params)
if(!ishuman(user))
diff --git a/code/game/turfs/closed/wall/material_walls.dm b/code/game/turfs/closed/wall/material_walls.dm
index bb98ab34cf5..6dcfd6d221a 100644
--- a/code/game/turfs/closed/wall/material_walls.dm
+++ b/code/game/turfs/closed/wall/material_walls.dm
@@ -2,8 +2,9 @@
name = "wall"
desc = "A huge chunk of material used to separate rooms."
icon = 'icons/turf/walls/materialwall.dmi'
- icon_state = "wall"
- smoothing_flags = SMOOTH_CORNERS
+ icon_state = "materialwall-0"
+ base_icon_state = "materialwall"
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_MATERIAL_WALLS)
canSmoothWith = list(SMOOTH_GROUP_MATERIAL_WALLS)
material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm
index b306dad9397..a668d48d0ac 100644
--- a/code/game/turfs/closed/wall/mineral_walls.dm
+++ b/code/game/turfs/closed/wall/mineral_walls.dm
@@ -2,7 +2,7 @@
name = "mineral wall"
desc = "This shouldn't exist"
icon_state = ""
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
canSmoothWith = null
var/last_event = 0
var/active = null
@@ -21,8 +21,10 @@
name = "silver wall"
desc = "A wall with silver plating. Shiny!"
icon = 'icons/turf/walls/silver_wall.dmi'
- icon_state = "silver"
+ icon_state = "silver_wall-0"
+ base_icon_state = "silver_wall"
sheet_type = /obj/item/stack/sheet/mineral/silver
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SILVER_WALLS)
@@ -30,10 +32,12 @@
name = "diamond wall"
desc = "A wall with diamond plating. You monster."
icon = 'icons/turf/walls/diamond_wall.dmi'
- icon_state = "diamond"
+ icon_state = "diamond_wall-0"
+ base_icon_state = "diamond_wall"
sheet_type = /obj/item/stack/sheet/mineral/diamond
slicing_duration = 200 //diamond wall takes twice as much time to slice
explosion_block = 3
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS)
canSmoothWith = list(SMOOTH_GROUP_DIAMOND_WALLS)
@@ -44,8 +48,10 @@
name = "bananium wall"
desc = "A wall with bananium plating. Honk!"
icon = 'icons/turf/walls/bananium_wall.dmi'
- icon_state = "bananium"
+ icon_state = "bananium_wall-0"
+ base_icon_state = "bananium_wall"
sheet_type = /obj/item/stack/sheet/mineral/bananium
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS)
@@ -53,9 +59,11 @@
name = "sandstone wall"
desc = "A wall with sandstone plating. Rough."
icon = 'icons/turf/walls/sandstone_wall.dmi'
- icon_state = "sandstone"
+ icon_state = "sandstone_wall-0"
+ base_icon_state = "sandstone_wall"
sheet_type = /obj/item/stack/sheet/mineral/sandstone
explosion_block = 0
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SANDSTONE_WALLS)
@@ -64,8 +72,10 @@
name = "uranium wall"
desc = "A wall with uranium plating. This is probably a bad idea."
icon = 'icons/turf/walls/uranium_wall.dmi'
- icon_state = "uranium"
+ icon_state = "uranium_wall-0"
+ base_icon_state = "uranium_wall"
sheet_type = /obj/item/stack/sheet/mineral/uranium
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS)
@@ -100,9 +110,11 @@
name = "plasma wall"
desc = "A wall with plasma plating. This is definitely a bad idea."
icon = 'icons/turf/walls/plasma_wall.dmi'
- icon_state = "plasma"
+ icon_state = "plasma_wall-0"
+ base_icon_state = "plasma_wall"
sheet_type = /obj/item/stack/sheet/mineral/plasma
thermal_conductivity = 0.04
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASMA_WALLS)
@@ -139,10 +151,12 @@
name = "wooden wall"
desc = "A wall with wooden plating. Stiff."
icon = 'icons/turf/walls/wood_wall.dmi'
- icon_state = "wood"
+ icon_state = "wood_wall-0"
+ base_icon_state = "wood_wall"
sheet_type = /obj/item/stack/sheet/mineral/wood
hardness = 70
explosion_block = 0
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
@@ -168,8 +182,10 @@
name = "rough metal wall"
desc = "A wall with rough metal plating."
icon = 'icons/turf/walls/iron_wall.dmi'
- icon_state = "iron"
+ icon_state = "iron_wall-0"
+ base_icon_state = "iron_wall"
sheet_type = /obj/item/stack/rods
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS)
canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS)
@@ -177,7 +193,9 @@
name = "packed snow wall"
desc = "A wall made of densely packed snow blocks."
icon = 'icons/turf/walls/snow_wall.dmi'
- icon_state = "snow"
+ icon_state = "snow_wall-0"
+ base_icon_state = "snow_wall"
+ smoothing_flags = SMOOTH_BITMASK
hardness = 80
explosion_block = 0
slicing_duration = 30
@@ -194,11 +212,12 @@
name = "alien wall"
desc = "A wall with alien alloy plating."
icon = 'icons/turf/walls/abductor_wall.dmi'
- icon_state = "abductor"
+ icon_state = "abductor_wall-0"
+ base_icon_state = "abductor_wall"
sheet_type = /obj/item/stack/sheet/mineral/abductor
slicing_duration = 200 //alien wall takes twice as much time to slice
explosion_block = 3
- smoothing_flags = SMOOTH_CORNERS|SMOOTH_DIAGONAL
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS)
@@ -208,12 +227,13 @@
name = "wall"
desc = "A light-weight titanium wall used in shuttles."
icon = 'icons/turf/walls/shuttle_wall.dmi'
- icon_state = "map-shuttle"
+ icon_state = "shuttle_wall-0"
+ base_icon_state = "shuttle_wall"
explosion_block = 3
flags_1 = CAN_BE_DIRTY_1
flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD
sheet_type = /obj/item/stack/sheet/mineral/titanium
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_DIAGONAL
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
@@ -221,8 +241,10 @@
return // titanium does not rust
/turf/closed/wall/mineral/titanium/nodiagonal
- smoothing_flags = SMOOTH_CORNERS
+ icon = 'icons/turf/walls/shuttle_wall.dmi'
icon_state = "map-shuttle_nd"
+ base_icon_state = "shuttle_wall"
+ smoothing_flags = SMOOTH_BITMASK
/turf/closed/wall/mineral/titanium/nosmooth
icon = 'icons/turf/shuttle.dmi'
@@ -231,7 +253,8 @@
/turf/closed/wall/mineral/titanium/overspace
icon_state = "map-overspace"
- fixed_underlay = list("space"=1)
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
+ fixed_underlay = list("space" = TRUE)
//sub-type to be used for interior shuttle walls
//won't get an underlay of the destination turf on shuttle move
@@ -260,12 +283,16 @@
name = "pod wall"
desc = "An easily-compressable wall used for temporary shelter."
icon = 'icons/turf/walls/survival_pod_walls.dmi'
- icon_state = "smooth"
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_DIAGONAL
+ icon_state = "survival_pod_walls-0"
+ base_icon_state = "survival_pod_walls"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_SHUTTLE_PARTS)
/turf/closed/wall/mineral/titanium/survival/nodiagonal
- smoothing_flags = SMOOTH_CORNERS
+ icon = 'icons/turf/walls/survival_pod_walls.dmi'
+ icon_state = "survival_pod_walls-0"
+ base_icon_state = "survival_pod_walls"
+ smoothing_flags = SMOOTH_BITMASK
/turf/closed/wall/mineral/titanium/survival/pod
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_SURVIVAL_TIANIUM_POD)
@@ -277,10 +304,11 @@
name = "wall"
desc = "A durable wall made of an alloy of plasma and titanium."
icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "map-shuttle"
+ icon_state = "plastitanium_wall-0"
+ base_icon_state = "plastitanium_wall"
explosion_block = 4
sheet_type = /obj/item/stack/sheet/mineral/plastitanium
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_DIAGONAL
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
@@ -288,8 +316,10 @@
return // plastitanium does not rust
/turf/closed/wall/mineral/plastitanium/nodiagonal
- smoothing_flags = SMOOTH_CORNERS
+ icon = 'icons/turf/walls/plastitanium_wall.dmi'
icon_state = "map-shuttle_nd"
+ base_icon_state = "plastitanium_wall"
+ smoothing_flags = SMOOTH_BITMASK
/turf/closed/wall/mineral/plastitanium/nosmooth
icon = 'icons/turf/shuttle.dmi'
@@ -298,7 +328,9 @@
/turf/closed/wall/mineral/plastitanium/overspace
icon_state = "map-overspace"
- fixed_underlay = list("space"=1)
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
+ fixed_underlay = list("space" = TRUE)
+
/turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity)
var/obj/item/bombcore/large/bombcore = new(get_turf(src))
diff --git a/code/game/turfs/closed/wall/misc_walls.dm b/code/game/turfs/closed/wall/misc_walls.dm
index 22f8b8df858..f1d78e1ed03 100644
--- a/code/game/turfs/closed/wall/misc_walls.dm
+++ b/code/game/turfs/closed/wall/misc_walls.dm
@@ -2,8 +2,9 @@
name = "runed metal wall"
desc = "A cold metal wall engraved with indecipherable symbols. Studying them causes your head to pound."
icon = 'icons/turf/walls/cult_wall.dmi'
- icon_state = "cult"
- smoothing_flags = SMOOTH_CORNERS
+ icon_state = "cult_wall-0"
+ base_icon_state = "cult_wall"
+ smoothing_flags = SMOOTH_BITMASK
canSmoothWith = null
sheet_type = /obj/item/stack/sheet/runed_metal
sheet_amount = 1
@@ -43,8 +44,10 @@
/turf/closed/wall/ice
icon = 'icons/turf/walls/icedmetal_wall.dmi'
- icon_state = "iced"
+ icon_state = "icedmetal_wall-0"
+ base_icon_state = "icedmetal_wall"
desc = "A wall covered in a thick sheet of ice."
+ smoothing_flags = SMOOTH_BITMASK
canSmoothWith = null
hardness = 35
slicing_duration = 150 //welding through the ice+metal
@@ -54,6 +57,9 @@
name = "rusted wall"
desc = "A rusted metal wall."
icon = 'icons/turf/walls/rusty_wall.dmi'
+ icon_state = "rusty_wall-0"
+ base_icon_state = "rusty_wall"
+ smoothing_flags = SMOOTH_BITMASK
hardness = 45
/turf/closed/wall/rust/rust_heretic_act()
@@ -63,6 +69,9 @@
name = "rusted reinforced wall"
desc = "A huge chunk of rusted reinforced metal."
icon = 'icons/turf/walls/rusty_reinforced_wall.dmi'
+ icon_state = "rusty_reinforced_wall-0"
+ base_icon_state = "rusty_reinforced_wall"
+ smoothing_flags = SMOOTH_BITMASK
hardness = 15
/turf/closed/wall/r_wall/rust/rust_heretic_act()
@@ -74,7 +83,9 @@
name = "clockwork wall"
desc = "A huge chunk of bronze, decorated like gears and cogs."
icon = 'icons/turf/walls/clockwork_wall.dmi'
- icon_state = "clockwork_wall"
+ icon_state = "clockwork_wall-0"
+ base_icon_state = "clockwork_wall"
+ smoothing_flags = SMOOTH_BITMASK
sheet_type = /obj/item/stack/tile/bronze
sheet_amount = 2
girder_type = /obj/structure/girder/bronze
diff --git a/code/game/turfs/closed/wall/reinf_walls.dm b/code/game/turfs/closed/wall/reinf_walls.dm
index 0c48b1a5379..f1567fb2912 100644
--- a/code/game/turfs/closed/wall/reinf_walls.dm
+++ b/code/game/turfs/closed/wall/reinf_walls.dm
@@ -2,17 +2,20 @@
name = "reinforced wall"
desc = "A huge chunk of reinforced metal used to separate rooms."
icon = 'icons/turf/walls/reinforced_wall.dmi'
- icon_state = "r_wall"
+ icon_state = "reinforced_wall-0"
+ base_icon_state = "reinforced_wall"
opacity = TRUE
density = TRUE
-
- var/d_state = INTACT
+ smoothing_flags = SMOOTH_BITMASK
hardness = 10
sheet_type = /obj/item/stack/sheet/plasteel
sheet_amount = 1
girder_type = /obj/structure/girder/reinforced
explosion_block = 2
rad_insulation = RAD_HEAVY_INSULATION
+ ///Dismantled state, related to deconstruction.
+ var/d_state = INTACT
+
/turf/closed/wall/r_wall/deconstruction_hints(mob/user)
switch(d_state)
@@ -197,9 +200,8 @@
. = ..()
if(d_state != INTACT)
smoothing_flags = NONE
- clear_smooth_overlays()
else
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
QUEUE_SMOOTH_NEIGHBORS(src)
QUEUE_SMOOTH(src)
@@ -207,7 +209,7 @@
if(d_state != INTACT)
icon_state = "r_wall-[d_state]"
else
- icon_state = "r_wall"
+ icon_state = "[base_icon_state]-[smoothing_junction]"
/turf/closed/wall/r_wall/wall_singularity_pull(current_size)
if(current_size >= STAGE_FIVE)
@@ -234,10 +236,11 @@
name = "hull"
desc = "The armored hull of an ominous looking ship."
icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "map-shuttle"
+ icon_state = "plastitanium_wall-0"
+ base_icon_state = "plastitanium_wall"
explosion_block = 20
sheet_type = /obj/item/stack/sheet/mineral/plastitanium
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_DIAGONAL
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
@@ -245,8 +248,10 @@
return FALSE
/turf/closed/wall/r_wall/syndicate/nodiagonal
- smoothing_flags = SMOOTH_CORNERS
+ icon = 'icons/turf/walls/plastitanium_wall.dmi'
icon_state = "map-shuttle_nd"
+ base_icon_state = "plastitanium_wall"
+ smoothing_flags = SMOOTH_BITMASK
/turf/closed/wall/r_wall/syndicate/nosmooth
icon = 'icons/turf/shuttle.dmi'
@@ -255,6 +260,5 @@
/turf/closed/wall/r_wall/syndicate/overspace
icon_state = "map-overspace"
- fixed_underlay = list("space"=1)
-
-
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
+ fixed_underlay = list("space" = TRUE)
diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm
index 736b6fb2bb8..12af8b80852 100644
--- a/code/game/turfs/closed/walls.dm
+++ b/code/game/turfs/closed/walls.dm
@@ -4,7 +4,8 @@
name = "wall"
desc = "A huge chunk of metal used to separate rooms."
icon = 'icons/turf/walls/wall.dmi'
- icon_state = "wall"
+ icon_state = "wall-0"
+ base_icon_state = "wall"
explosion_block = 1
thermal_conductivity = WALL_HEAT_TRANSFER_COEFFICIENT
@@ -14,7 +15,7 @@
flags_ricochet = RICOCHET_HARD
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WALLS)
@@ -27,16 +28,30 @@
var/list/dent_decals
+
/turf/closed/wall/Initialize(mapload)
. = ..()
if(is_station_level(z))
GLOB.station_turfs += src
+ if(smoothing_flags & SMOOTH_DIAGONAL_CORNERS && fixed_underlay) //Set underlays for the diagonal walls.
+ var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER, plane = FLOOR_PLANE)
+ if(fixed_underlay["space"])
+ underlay_appearance.icon = 'icons/turf/space.dmi'
+ underlay_appearance.icon_state = SPACE_ICON_STATE
+ underlay_appearance.plane = PLANE_SPACE
+ else
+ underlay_appearance.icon = fixed_underlay["icon"]
+ underlay_appearance.icon_state = fixed_underlay["icon_state"]
+ fixed_underlay = string_assoc_list(fixed_underlay)
+ underlays += underlay_appearance
+
/turf/closed/wall/Destroy()
if(is_station_level(z))
GLOB.station_turfs -= src
return ..()
+
/turf/closed/wall/examine(mob/user)
. += ..()
. += deconstruction_hints(user)
diff --git a/code/game/turfs/open/chasm.dm b/code/game/turfs/open/chasm.dm
index 7775da838b7..453a329c860 100644
--- a/code/game/turfs/open/chasm.dm
+++ b/code/game/turfs/open/chasm.dm
@@ -4,8 +4,9 @@
desc = "Watch your step."
baseturfs = /turf/open/chasm
icon = 'icons/turf/floors/chasms.dmi'
- icon_state = "smooth"
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ icon_state = "chasms-255"
+ base_icon_state = "chasms"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_TURF_CHASM)
canSmoothWith = list(SMOOTH_GROUP_TURF_CHASM)
density = TRUE //This will prevent hostile mobs from pathing into chasms, while the canpass override will still let it function like an open turf
@@ -94,6 +95,8 @@
// Chasms for Ice moon, with planetary atmos and glow
/turf/open/chasm/icemoon
icon = 'icons/turf/floors/icechasms.dmi'
+ icon_state = "icechasms-255"
+ base_icon_state = "icechasms"
initial_gas_mix = ICEMOON_DEFAULT_ATMOS
planetary_atmos = TRUE
baseturfs = /turf/open/chasm/icemoon
@@ -104,6 +107,8 @@
// Chasms for the jungle, with planetary atmos and a different icon
/turf/open/chasm/jungle
icon = 'icons/turf/floors/junglechasm.dmi'
+ icon_state = "junglechasm-255"
+ base_icon_state = "junglechasm"
initial_gas_mix = OPENTURF_LOW_PRESSURE
planetary_atmos = TRUE
baseturfs = /turf/open/chasm/jungle
diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm
index dc325c53f3d..e8e4ebdd954 100644
--- a/code/game/turfs/open/floor.dm
+++ b/code/game/turfs/open/floor.dm
@@ -30,10 +30,11 @@
/turf/open/floor/Initialize(mapload)
if (!broken_states)
- broken_states = typelist("broken_states", list("damaged1", "damaged2", "damaged3", "damaged4", "damaged5"))
+ broken_states = string_list(list("damaged1", "damaged2", "damaged3", "damaged4", "damaged5"))
else
- broken_states = typelist("broken_states", broken_states)
- burnt_states = typelist("burnt_states", burnt_states)
+ broken_states = string_list(broken_states)
+ if(burnt_states)
+ burnt_states = string_list(burnt_states)
if(!broken && broken_states && (icon_state in broken_states))
broken = TRUE
if(!burnt && burnt_states && (icon_state in burnt_states))
@@ -52,7 +53,7 @@
"snow","snow_dug","ice",
"snow0","snow1","snow2","snow3","snow4",
"snow5","snow6","snow7","snow8","snow9","snow10","snow11","snow12",
- "oldburning","light-on-r","light-on-y","light-on-g","light-on-b", "wood", "carpetsymbol", "carpetstar",
+ "oldburning","light-on-r","light-on-y","light-on-g","light-on-b", "wood",
"carpetcorner", "carpetside", "carpet", "ironsand1", "ironsand2", "ironsand3", "ironsand4", "ironsand5",
"ironsand6", "ironsand7", "ironsand8", "ironsand9", "ironsand10", "ironsand11",
"ironsand12", "ironsand13", "ironsand14", "ironsand15")
@@ -139,7 +140,7 @@
/turf/open/floor/burn_tile()
if(broken || burnt)
return
- if(burnt_states.len)
+ if(LAZYLEN(burnt_states))
icon_state = pick(burnt_states)
else
icon_state = pick(broken_states)
diff --git a/code/game/turfs/open/floor/fancy_floor.dm b/code/game/turfs/open/floor/fancy_floor.dm
index 71e60586287..9484be34503 100644
--- a/code/game/turfs/open/floor/fancy_floor.dm
+++ b/code/game/turfs/open/floor/fancy_floor.dm
@@ -179,10 +179,11 @@
name = "carpet"
desc = "Soft velvet carpeting. Feels good between your toes."
icon = 'icons/turf/floors/carpet.dmi'
- icon_state = "carpet"
+ icon_state = "carpet-255"
+ base_icon_state = "carpet"
floor_tile = /obj/item/stack/tile/carpet
broken_states = list("damaged")
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET)
canSmoothWith = list(SMOOTH_GROUP_CARPET)
flags_1 = NONE
@@ -206,63 +207,85 @@
if(!.)
return
if(!broken && !burnt)
- if(smoothing_flags)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH(src)
else
make_plating()
- if(smoothing_flags)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH_NEIGHBORS(src)
+///Carpet variant for mapping aid, functionally the same as parent after smoothing.
+/turf/open/floor/carpet/lone
+ icon_state = "carpet-0"
+
/turf/open/floor/carpet/black
icon = 'icons/turf/floors/carpet_black.dmi'
+ icon_state = "carpet_black-255"
+ base_icon_state = "carpet_black"
floor_tile = /obj/item/stack/tile/carpet/black
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_BLACK)
canSmoothWith = list(SMOOTH_GROUP_CARPET_BLACK)
/turf/open/floor/carpet/blue
icon = 'icons/turf/floors/carpet_blue.dmi'
+ icon_state = "carpet_blue-255"
+ base_icon_state = "carpet_blue"
floor_tile = /obj/item/stack/tile/carpet/blue
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_BLUE)
canSmoothWith = list(SMOOTH_GROUP_CARPET_BLUE)
/turf/open/floor/carpet/cyan
icon = 'icons/turf/floors/carpet_cyan.dmi'
+ icon_state = "carpet_cyan-255"
+ base_icon_state = "carpet_cyan"
floor_tile = /obj/item/stack/tile/carpet/cyan
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_CYAN)
canSmoothWith = list(SMOOTH_GROUP_CARPET_CYAN)
/turf/open/floor/carpet/green
icon = 'icons/turf/floors/carpet_green.dmi'
+ icon_state = "carpet_green-255"
+ base_icon_state = "carpet_green"
floor_tile = /obj/item/stack/tile/carpet/green
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_GREEN)
canSmoothWith = list(SMOOTH_GROUP_CARPET_GREEN)
/turf/open/floor/carpet/orange
icon = 'icons/turf/floors/carpet_orange.dmi'
+ icon_state = "carpet_orange-255"
+ base_icon_state = "carpet_orange"
floor_tile = /obj/item/stack/tile/carpet/orange
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_ORANGE)
canSmoothWith = list(SMOOTH_GROUP_CARPET_ORANGE)
/turf/open/floor/carpet/purple
icon = 'icons/turf/floors/carpet_purple.dmi'
+ icon_state = "carpet_purple-255"
+ base_icon_state = "carpet_purple"
floor_tile = /obj/item/stack/tile/carpet/purple
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_PURPLE)
canSmoothWith = list(SMOOTH_GROUP_CARPET_PURPLE)
/turf/open/floor/carpet/red
icon = 'icons/turf/floors/carpet_red.dmi'
+ icon_state = "carpet_red-255"
+ base_icon_state = "carpet_red"
floor_tile = /obj/item/stack/tile/carpet/red
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_RED)
canSmoothWith = list(SMOOTH_GROUP_CARPET_RED)
/turf/open/floor/carpet/royalblack
icon = 'icons/turf/floors/carpet_royalblack.dmi'
+ icon_state = "carpet_royalblack-255"
+ base_icon_state = "carpet_royalblack"
floor_tile = /obj/item/stack/tile/carpet/royalblack
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_ROYAL_BLACK)
canSmoothWith = list(SMOOTH_GROUP_CARPET_ROYAL_BLACK)
/turf/open/floor/carpet/royalblue
icon = 'icons/turf/floors/carpet_royalblue.dmi'
+ icon_state = "carpet_royalblue-255"
+ base_icon_state = "carpet_royalblue"
floor_tile = /obj/item/stack/tile/carpet/royalblue
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_ROYAL_BLUE)
canSmoothWith = list(SMOOTH_GROUP_CARPET_ROYAL_BLUE)
@@ -321,11 +344,12 @@
/turf/open/floor/fakepit
desc = "A clever illusion designed to look like a bottomless pit."
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ icon = 'icons/turf/floors/chasms.dmi'
+ icon_state = "chasms-0"
+ base_icon_state = "chasms"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_TURF_CHASM)
canSmoothWith = list(SMOOTH_GROUP_TURF_CHASM)
- icon = 'icons/turf/floors/Chasms.dmi'
- icon_state = "smooth"
tiled_dirt = FALSE
/turf/open/floor/fakepit/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir)
diff --git a/code/game/turfs/open/floor/plating/misc_plating.dm b/code/game/turfs/open/floor/plating/misc_plating.dm
index 475685e2a85..86fdde73219 100644
--- a/code/game/turfs/open/floor/plating/misc_plating.dm
+++ b/code/game/turfs/open/floor/plating/misc_plating.dm
@@ -40,8 +40,8 @@
gender = PLURAL
name = "ash"
icon_state = "ash"
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
- var/smooth_icon = 'icons/turf/floors/ash.dmi'
+ base_icon_state = "ash"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
desc = "The ground is covered in volcanic ash."
baseturfs = /turf/open/floor/plating/ashplanet/wateryrock //I assume this will be a chasm eventually, once this becomes an actual surface
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
@@ -52,14 +52,18 @@
clawfootstep = FOOTSTEP_SAND
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
tiled_dirt = FALSE
+ var/smooth_icon = 'icons/turf/floors/ash.dmi'
+
/turf/open/floor/plating/ashplanet/Initialize()
- if(smoothing_flags)
+ . = ..()
+ if(smoothing_flags & SMOOTH_BITMASK)
var/matrix/M = new
M.Translate(-4, -4)
transform = M
icon = smooth_icon
- . = ..()
+ icon_state = "[icon_state]-[smoothing_junction]"
+
/turf/open/floor/plating/ashplanet/try_replace_tile(obj/item/stack/tile/T, mob/user, params)
return
@@ -80,6 +84,7 @@
gender = PLURAL
name = "rocky ground"
icon_state = "rockyash"
+ base_icon_state = "rocky_ash"
smooth_icon = 'icons/turf/floors/rocky_ash.dmi'
layer = MID_TURF_LAYER
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_ASH_ROCKY)
@@ -182,7 +187,7 @@
name = "ice sheet"
desc = "A sheet of solid ice. Looks slippery."
icon = 'icons/turf/floors/ice_turf.dmi'
- icon_state = "unsmooth"
+ icon_state = "ice_turf-0"
initial_gas_mix = FROZEN_ATMOS
temperature = 180
planetary_atmos = TRUE
@@ -203,8 +208,9 @@
return
/turf/open/floor/plating/ice/smooth
- icon_state = "smooth"
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ icon_state = "ice_turf-255"
+ base_icon_state = "ice_turf"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_ICE)
canSmoothWith = list(SMOOTH_GROUP_FLOOR_ICE)
@@ -245,12 +251,13 @@
initial_gas_mix = ICEMOON_DEFAULT_ATMOS
/turf/open/floor/plating/snowed/smoothed
- smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
+ icon = 'icons/turf/floors/snow_turf.dmi'
+ icon_state = "snow_turf-0"
+ base_icon_state = "snow_turf"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_SNOWED)
canSmoothWith = list(SMOOTH_GROUP_FLOOR_SNOWED)
planetary_atmos = TRUE
- icon = 'icons/turf/floors/snow_turf.dmi'
- icon_state = "smooth"
/turf/open/floor/plating/snowed/colder
temperature = 140
@@ -265,14 +272,15 @@
name = "grass"
desc = "A patch of grass."
icon_state = "grass0"
+ base_icon_state = "grass"
bullet_bounce_sound = null
footstep = FOOTSTEP_GRASS
barefootstep = FOOTSTEP_GRASS
clawfootstep = FOOTSTEP_GRASS
heavyfootstep = FOOTSTEP_GENERIC_HEAVY
- smoothing_flags = SMOOTH_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN,SMOOTH_GROUP_FLOOR_GRASS)
- canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS,SMOOTH_GROUP_FLOOR_GRASS)
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_GRASS)
+ canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_FLOOR_GRASS)
layer = HIGH_TURF_LAYER
var/smooth_icon = 'icons/turf/floors/grass.dmi'
diff --git a/code/game/turfs/open/floor/plating/planet.dm b/code/game/turfs/open/floor/plating/planet.dm
index e23f0979f47..c9b0bcfb855 100644
--- a/code/game/turfs/open/floor/plating/planet.dm
+++ b/code/game/turfs/open/floor/plating/planet.dm
@@ -46,6 +46,7 @@
planetary_atmos = TRUE
desc = "Greener on the other side."
icon_state = "junglegrass"
+ base_icon_state = "junglegrass"
smooth_icon = 'icons/turf/floors/junglegrass.dmi'
/turf/closed/mineral/random/jungle
diff --git a/code/game/turfs/open/transparent.dm b/code/game/turfs/open/transparent.dm
index d49bba40a8e..28936789847 100644
--- a/code/game/turfs/open/transparent.dm
+++ b/code/game/turfs/open/transparent.dm
@@ -55,8 +55,9 @@
name = "Glass floor"
desc = "Dont jump on it, or do, I'm not your mom."
icon = 'icons/turf/floors/glass.dmi'
- icon_state = "floor_glass"
- smoothing_flags = SMOOTH_CORNERS
+ icon_state = "glass-0"
+ base_icon_state = "glass"
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS)
canSmoothWith = list(SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS)
footstep = FOOTSTEP_PLATING
@@ -72,3 +73,5 @@
name = "Reinforced glass floor"
desc = "Do jump on it, it can take it."
icon = 'icons/turf/floors/reinf_glass.dmi'
+ icon_state = "reinf_glass-0"
+ base_icon_state = "reinf_glass"
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 3056729477d..d72618d9522 100755
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -89,7 +89,7 @@ GLOBAL_LIST_EMPTY(station_turfs)
if(canSmoothWith[length(canSmoothWith)] > MAX_S_TURF) //If the last element is higher than the maximum turf-only value, then it must scan turf contents for smoothing targets.
smoothing_flags |= SMOOTH_OBJ
SET_BITFLAG_LIST(canSmoothWith)
- if (smoothing_flags)
+ if (smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH(src)
visibilityChanged()
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 4d600d40cc9..d2994ab9c91 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -812,12 +812,14 @@ Congratulations! You are now trained for invasive xenobiology research!"}
name = "alien table"
desc = "Advanced flat surface technology at work!"
icon = 'icons/obj/smooth_structures/alien_table.dmi'
- icon_state = "alien_table"
+ icon_state = "alien_table-0"
+ base_icon_state = "alien_table"
buildstack = /obj/item/stack/sheet/mineral/abductor
framestack = /obj/item/stack/sheet/mineral/abductor
buildstackamount = 1
framestackamount = 1
- canSmoothWith = null
+ smoothing_groups = list(SMOOTH_GROUP_ABDUCTOR_TABLES)
+ canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_TABLES)
frame = /obj/structure/table_frame/abductor
/obj/structure/table/optable/abductor
diff --git a/code/modules/awaymissions/away_props.dm b/code/modules/awaymissions/away_props.dm
index b1d54686620..795798774e2 100644
--- a/code/modules/awaymissions/away_props.dm
+++ b/code/modules/awaymissions/away_props.dm
@@ -57,7 +57,7 @@
/obj/structure/pitgrate
name = "pit grate"
icon = 'icons/obj/smooth_structures/lattice.dmi'
- icon_state = "lattice"
+ icon_state = "lattice-255"
plane = FLOOR_PLANE
anchored = TRUE
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index cac1daeb8f2..7599000a31d 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -1108,7 +1108,8 @@ GLOBAL_LIST_INIT(hallucination_list, list(
name = "chasm"
/obj/effect/hallucination/danger/chasm/show_icon()
- image = image('icons/turf/floors/Chasms.dmi',src,"smooth",TURF_LAYER)
+ var/turf/target_loc = get_turf(target)
+ image = image('icons/turf/floors/chasms.dmi', src, "chasms-[target_loc.smoothing_junction]", TURF_LAYER)
if(target.client)
target.client.images += image
diff --git a/code/modules/holodeck/turfs.dm b/code/modules/holodeck/turfs.dm
index dd57d6d85a1..467292c7874 100644
--- a/code/modules/holodeck/turfs.dm
+++ b/code/modules/holodeck/turfs.dm
@@ -109,7 +109,7 @@
icon = 'icons/turf/floors/carpet.dmi'
icon_state = "carpet"
floor_tile = /obj/item/stack/tile/carpet
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BITMASK
canSmoothWith = null
bullet_bounce_sound = null
tiled_dirt = FALSE
@@ -120,7 +120,7 @@
/turf/open/floor/holofloor/carpet/update_icon()
. = ..()
- if(intact)
+ if(intact && smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH(src)
/turf/open/floor/holofloor/wood
diff --git a/code/modules/mining/equipment/survival_pod.dm b/code/modules/mining/equipment/survival_pod.dm
index 86d862a52b3..740049b47f6 100644
--- a/code/modules/mining/equipment/survival_pod.dm
+++ b/code/modules/mining/equipment/survival_pod.dm
@@ -86,8 +86,9 @@
/obj/structure/window/shuttle/survival_pod
name = "pod window"
icon = 'icons/obj/smooth_structures/pod_window.dmi'
- icon_state = "smooth"
- smoothing_flags = SMOOTH_CORNERS
+ icon_state = "pod_window-0"
+ base_icon_state = "pod_window"
+ smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_SURVIVAL_TIANIUM_POD)
canSmoothWith = list(SMOOTH_GROUP_SURVIVAL_TIANIUM_POD)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index a58103d97ac..041821d1088 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -93,7 +93,7 @@ Difficulty: Hard
/datum/action/innate/megafauna_attack/hallucination_surround
name = "Surround Target"
icon_icon = 'icons/turf/walls/wall.dmi'
- button_icon_state = "wall"
+ button_icon_state = "wall-0"
chosen_message = "You are now surrounding the target you click on with hallucinations."
chosen_attack_num = 3
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index 959c6de311a..d6d819edb2d 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -516,18 +516,23 @@ Difficulty: Hard
/obj/effect/temp_visual/hierophant/wall //smoothing and pooling were not friends, but pooling is dead.
name = "vortex wall"
icon = 'icons/turf/walls/hierophant_wall_temp.dmi'
- icon_state = "wall"
+ icon_state = "hierophant_wall_temp-0"
+ base_icon_state = "hierophant_wall_temp"
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_HIERO_WALL)
+ canSmoothWith = list(SMOOTH_GROUP_HIERO_WALL)
light_range = MINIMUM_USEFUL_LIGHT_RANGE
duration = 100
- smoothing_flags = SMOOTH_CORNERS
/obj/effect/temp_visual/hierophant/wall/Initialize(mapload, new_caster)
. = ..()
- QUEUE_SMOOTH_NEIGHBORS(src)
- QUEUE_SMOOTH(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
+ QUEUE_SMOOTH_NEIGHBORS(src)
+ QUEUE_SMOOTH(src)
/obj/effect/temp_visual/hierophant/wall/Destroy()
- QUEUE_SMOOTH_NEIGHBORS(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
+ QUEUE_SMOOTH_NEIGHBORS(src)
return ..()
/obj/effect/temp_visual/hierophant/wall/CanAllowThrough(atom/movable/mover, turf/target)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
index c0c9e3018d8..d05319814e9 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
@@ -285,4 +285,5 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa
name = "swarmer catwalk"
desc = "A catwalk-like mesh, produced by swarmers to allow them to navigate hostile terrain."
icon = 'icons/obj/smooth_structures/swarmer_catwalk.dmi'
- icon_state = "swarmer_catwalk"
+ icon_state = "swarmer_catwalk-0"
+ base_icon_state = "swarmer_catwalk"
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
index 22a934f11e0..07520712f57 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
@@ -73,7 +73,7 @@ Difficulty: Hard
/datum/action/innate/megafauna_attack/disorienting_scream
name = "Disorienting Scream"
icon_icon = 'icons/turf/walls/wall.dmi'
- button_icon_state = "wall"
+ button_icon_state = "wall-0"
chosen_message = "You are now screeching, disorienting targets around you."
chosen_attack_num = 3
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
index 36ca8608bc9..75eb7a945b8 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
@@ -302,9 +302,12 @@ While using this makes the system rely on OnFire, it still gives options for tim
/obj/effect/temp_visual/elite_tumor_wall
name = "magic wall"
icon = 'icons/turf/walls/hierophant_wall_temp.dmi'
- icon_state = "wall"
+ icon_state = "hierophant_wall_temp-0"
+ base_icon_state = "hierophant_wall_temp"
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_HIERO_WALL)
+ canSmoothWith = list(SMOOTH_GROUP_HIERO_WALL)
duration = 50
- smoothing_flags = SMOOTH_CORNERS
layer = BELOW_MOB_LAYER
color = rgb(255,0,0)
light_range = MINIMUM_USEFUL_LIGHT_RANGE
@@ -314,11 +317,13 @@ While using this makes the system rely on OnFire, it still gives options for tim
/obj/effect/temp_visual/elite_tumor_wall/Initialize(mapload, new_caster)
. = ..()
- QUEUE_SMOOTH_NEIGHBORS(src)
- QUEUE_SMOOTH(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
+ QUEUE_SMOOTH_NEIGHBORS(src)
+ QUEUE_SMOOTH(src)
/obj/effect/temp_visual/elite_tumor_wall/Destroy()
- QUEUE_SMOOTH_NEIGHBORS(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
+ QUEUE_SMOOTH_NEIGHBORS(src)
activator = null
ourelite = null
return ..()
diff --git a/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm b/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm
index 5b64d2ba115..74080b3644f 100644
--- a/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm
+++ b/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm
@@ -52,6 +52,8 @@
turf_type = /turf/open/floor/plating/asteroid/basalt/wasteland
baseturfs = /turf/open/floor/plating/asteroid/basalt/wasteland
smooth_icon = 'icons/turf/walls/rock_wall.dmi'
+ base_icon_state = "rock_wall"
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
/turf/closed/mineral/strong/wasteland/drop_ores()
if(prob(10))
diff --git a/code/modules/shuttle/shuttle_rotate.dm b/code/modules/shuttle/shuttle_rotate.dm
index 9c950148d24..2f50ba92d68 100644
--- a/code/modules/shuttle/shuttle_rotate.dm
+++ b/code/modules/shuttle/shuttle_rotate.dm
@@ -12,7 +12,7 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate
setDir(angle2dir(rotation+dir2angle(dir)))
//resmooth if need be.
- if(smoothing_flags && (params & ROTATE_SMOOTH))
+ if(params & ROTATE_SMOOTH && smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK))
QUEUE_SMOOTH(src)
//rotate the pixel offsets too.
@@ -30,7 +30,7 @@ If ever any of these procs are useful for non-shuttles, rename it to proc/rotate
/atom/movable/shuttleRotate(rotation, params)
. = ..()
//rotate the physical bounds and offsets for multitile atoms too. Owerride base "rotate the pixel offsets" for multitile atoms.
- //Owerride non zero bound_x, bound_y, pixel_x, pixel_y to zero.
+ //Owerride non zero bound_x, bound_y, pixel_x, pixel_y to zero.
//Dont take in account starting bound_x, bound_y, pixel_x, pixel_y.
//So it can unintentionally shift physical bounds of things that starts with non zero bound_x, bound_y.
if(((bound_height != world.icon_size) || (bound_width != world.icon_size)) && (bound_x==0) && (bound_y==0)) //Dont shift things that have non zero bound_x and bound_y, or it move somewhere. Now it BSA and Gateway.
diff --git a/icons/effects/dirt.dmi b/icons/effects/dirt.dmi
index cd673a949de..3d63c60e90d 100644
Binary files a/icons/effects/dirt.dmi and b/icons/effects/dirt.dmi differ
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index 706cad3f5c8..c32c136ef56 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ
diff --git a/icons/mob/alien.dmi b/icons/mob/alien.dmi
index c50351eef37..3029249e1c1 100644
Binary files a/icons/mob/alien.dmi and b/icons/mob/alien.dmi differ
diff --git a/icons/obj/smooth_structures/alien/nest.dmi b/icons/obj/smooth_structures/alien/nest.dmi
index 4a1c757bc64..f018efbb3df 100644
Binary files a/icons/obj/smooth_structures/alien/nest.dmi and b/icons/obj/smooth_structures/alien/nest.dmi differ
diff --git a/icons/obj/smooth_structures/alien/resin_membrane.dmi b/icons/obj/smooth_structures/alien/resin_membrane.dmi
index 517838a653a..caadcf8be7c 100644
Binary files a/icons/obj/smooth_structures/alien/resin_membrane.dmi and b/icons/obj/smooth_structures/alien/resin_membrane.dmi differ
diff --git a/icons/obj/smooth_structures/alien/resin_wall.dmi b/icons/obj/smooth_structures/alien/resin_wall.dmi
index eba082a8303..af34c6583a1 100644
Binary files a/icons/obj/smooth_structures/alien/resin_wall.dmi and b/icons/obj/smooth_structures/alien/resin_wall.dmi differ
diff --git a/icons/obj/smooth_structures/alien/weednode.dmi b/icons/obj/smooth_structures/alien/weednode.dmi
index 8d963d7c83e..3b2f6edbdd4 100644
Binary files a/icons/obj/smooth_structures/alien/weednode.dmi and b/icons/obj/smooth_structures/alien/weednode.dmi differ
diff --git a/icons/obj/smooth_structures/alien/weeds1.dmi b/icons/obj/smooth_structures/alien/weeds1.dmi
index b794b6853fc..0d9b50f4deb 100644
Binary files a/icons/obj/smooth_structures/alien/weeds1.dmi and b/icons/obj/smooth_structures/alien/weeds1.dmi differ
diff --git a/icons/obj/smooth_structures/alien/weeds2.dmi b/icons/obj/smooth_structures/alien/weeds2.dmi
index 8917bade585..318eb4694b8 100644
Binary files a/icons/obj/smooth_structures/alien/weeds2.dmi and b/icons/obj/smooth_structures/alien/weeds2.dmi differ
diff --git a/icons/obj/smooth_structures/alien/weeds3.dmi b/icons/obj/smooth_structures/alien/weeds3.dmi
index c7f0aa0ca97..d57d967ba72 100644
Binary files a/icons/obj/smooth_structures/alien/weeds3.dmi and b/icons/obj/smooth_structures/alien/weeds3.dmi differ
diff --git a/icons/obj/smooth_structures/alien_table.dmi b/icons/obj/smooth_structures/alien_table.dmi
index 1d60bcc82f6..d924012e975 100644
Binary files a/icons/obj/smooth_structures/alien_table.dmi and b/icons/obj/smooth_structures/alien_table.dmi differ
diff --git a/icons/obj/smooth_structures/brass_table.dmi b/icons/obj/smooth_structures/brass_table.dmi
index f3cc8bb9ee5..b54af9be65c 100644
Binary files a/icons/obj/smooth_structures/brass_table.dmi and b/icons/obj/smooth_structures/brass_table.dmi differ
diff --git a/icons/obj/smooth_structures/catwalk.dmi b/icons/obj/smooth_structures/catwalk.dmi
index 4b71fb50731..2fcb859cc7c 100644
Binary files a/icons/obj/smooth_structures/catwalk.dmi and b/icons/obj/smooth_structures/catwalk.dmi differ
diff --git a/icons/obj/smooth_structures/clockwork_window.dmi b/icons/obj/smooth_structures/clockwork_window.dmi
index 10d5bcf631c..674a16d43e0 100644
Binary files a/icons/obj/smooth_structures/clockwork_window.dmi and b/icons/obj/smooth_structures/clockwork_window.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table.dmi b/icons/obj/smooth_structures/fancy_table.dmi
index a57b165f4ac..7bb52fd6819 100644
Binary files a/icons/obj/smooth_structures/fancy_table.dmi and b/icons/obj/smooth_structures/fancy_table.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_black.dmi b/icons/obj/smooth_structures/fancy_table_black.dmi
index d4570e8a7c1..38f75a31708 100644
Binary files a/icons/obj/smooth_structures/fancy_table_black.dmi and b/icons/obj/smooth_structures/fancy_table_black.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_blue.dmi b/icons/obj/smooth_structures/fancy_table_blue.dmi
index 07e13e99e64..60b42760a35 100644
Binary files a/icons/obj/smooth_structures/fancy_table_blue.dmi and b/icons/obj/smooth_structures/fancy_table_blue.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_cyan.dmi b/icons/obj/smooth_structures/fancy_table_cyan.dmi
index 4f1a90e33b2..bf677d5cd9d 100644
Binary files a/icons/obj/smooth_structures/fancy_table_cyan.dmi and b/icons/obj/smooth_structures/fancy_table_cyan.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_green.dmi b/icons/obj/smooth_structures/fancy_table_green.dmi
index ea7f8daa99f..c4989097936 100644
Binary files a/icons/obj/smooth_structures/fancy_table_green.dmi and b/icons/obj/smooth_structures/fancy_table_green.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_orange.dmi b/icons/obj/smooth_structures/fancy_table_orange.dmi
index fe0375ddbb8..ba48e42f23a 100644
Binary files a/icons/obj/smooth_structures/fancy_table_orange.dmi and b/icons/obj/smooth_structures/fancy_table_orange.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_purple.dmi b/icons/obj/smooth_structures/fancy_table_purple.dmi
index c404a9eb5f4..2de50c610ca 100644
Binary files a/icons/obj/smooth_structures/fancy_table_purple.dmi and b/icons/obj/smooth_structures/fancy_table_purple.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_red.dmi b/icons/obj/smooth_structures/fancy_table_red.dmi
index 8bca0ca8c94..dae7f3a0365 100644
Binary files a/icons/obj/smooth_structures/fancy_table_red.dmi and b/icons/obj/smooth_structures/fancy_table_red.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_royalblack.dmi b/icons/obj/smooth_structures/fancy_table_royalblack.dmi
index 064b7c1945e..645d05eeecf 100644
Binary files a/icons/obj/smooth_structures/fancy_table_royalblack.dmi and b/icons/obj/smooth_structures/fancy_table_royalblack.dmi differ
diff --git a/icons/obj/smooth_structures/fancy_table_royalblue.dmi b/icons/obj/smooth_structures/fancy_table_royalblue.dmi
index 9d0eba7265e..af4a19754f6 100644
Binary files a/icons/obj/smooth_structures/fancy_table_royalblue.dmi and b/icons/obj/smooth_structures/fancy_table_royalblue.dmi differ
diff --git a/icons/obj/smooth_structures/glass_table.dmi b/icons/obj/smooth_structures/glass_table.dmi
index 5f886d74639..46ba6453ba2 100644
Binary files a/icons/obj/smooth_structures/glass_table.dmi and b/icons/obj/smooth_structures/glass_table.dmi differ
diff --git a/icons/obj/smooth_structures/hedge.dmi b/icons/obj/smooth_structures/hedge.dmi
index cf32ffa26d2..a2d489b577d 100644
Binary files a/icons/obj/smooth_structures/hedge.dmi and b/icons/obj/smooth_structures/hedge.dmi differ
diff --git a/icons/obj/smooth_structures/lattice.dmi b/icons/obj/smooth_structures/lattice.dmi
index 5adab0caf1b..fc3b316e415 100644
Binary files a/icons/obj/smooth_structures/lattice.dmi and b/icons/obj/smooth_structures/lattice.dmi differ
diff --git a/icons/obj/smooth_structures/paperframes.dmi b/icons/obj/smooth_structures/paperframes.dmi
index 5ac2c27dd51..9982db639cb 100644
Binary files a/icons/obj/smooth_structures/paperframes.dmi and b/icons/obj/smooth_structures/paperframes.dmi differ
diff --git a/icons/obj/smooth_structures/plasma_window.dmi b/icons/obj/smooth_structures/plasma_window.dmi
index 3d57d156f01..583972a24b2 100644
Binary files a/icons/obj/smooth_structures/plasma_window.dmi and b/icons/obj/smooth_structures/plasma_window.dmi differ
diff --git a/icons/obj/smooth_structures/plastitanium_window.dmi b/icons/obj/smooth_structures/plastitanium_window.dmi
index 82ac0306159..e5c4cf32baa 100644
Binary files a/icons/obj/smooth_structures/plastitanium_window.dmi and b/icons/obj/smooth_structures/plastitanium_window.dmi differ
diff --git a/icons/obj/smooth_structures/pod_window.dmi b/icons/obj/smooth_structures/pod_window.dmi
index 0fe7501225c..3c65a8d9f0b 100644
Binary files a/icons/obj/smooth_structures/pod_window.dmi and b/icons/obj/smooth_structures/pod_window.dmi differ
diff --git a/icons/obj/smooth_structures/poker_table.dmi b/icons/obj/smooth_structures/poker_table.dmi
index f453f7aba19..d438eb1aada 100644
Binary files a/icons/obj/smooth_structures/poker_table.dmi and b/icons/obj/smooth_structures/poker_table.dmi differ
diff --git a/icons/obj/smooth_structures/reinforced_table.dmi b/icons/obj/smooth_structures/reinforced_table.dmi
index 85de93594f9..44a4ce35a69 100644
Binary files a/icons/obj/smooth_structures/reinforced_table.dmi and b/icons/obj/smooth_structures/reinforced_table.dmi differ
diff --git a/icons/obj/smooth_structures/reinforced_window.dmi b/icons/obj/smooth_structures/reinforced_window.dmi
index a1f60f0677a..a66b648786d 100644
Binary files a/icons/obj/smooth_structures/reinforced_window.dmi and b/icons/obj/smooth_structures/reinforced_window.dmi differ
diff --git a/icons/obj/smooth_structures/rice_window.dmi b/icons/obj/smooth_structures/rice_window.dmi
index f5e7a6dd57a..309e106fb31 100644
Binary files a/icons/obj/smooth_structures/rice_window.dmi and b/icons/obj/smooth_structures/rice_window.dmi differ
diff --git a/icons/obj/smooth_structures/rplasma_window.dmi b/icons/obj/smooth_structures/rplasma_window.dmi
index c64f42c7f5a..3211978d17a 100644
Binary files a/icons/obj/smooth_structures/rplasma_window.dmi and b/icons/obj/smooth_structures/rplasma_window.dmi differ
diff --git a/icons/obj/smooth_structures/sandbags.dmi b/icons/obj/smooth_structures/sandbags.dmi
index 8ac099555a8..20fb25fd91b 100644
Binary files a/icons/obj/smooth_structures/sandbags.dmi and b/icons/obj/smooth_structures/sandbags.dmi differ
diff --git a/icons/obj/smooth_structures/shuttle_window.dmi b/icons/obj/smooth_structures/shuttle_window.dmi
index cb07225a762..b1b6d9e47d1 100644
Binary files a/icons/obj/smooth_structures/shuttle_window.dmi and b/icons/obj/smooth_structures/shuttle_window.dmi differ
diff --git a/icons/obj/smooth_structures/swarmer_catwalk.dmi b/icons/obj/smooth_structures/swarmer_catwalk.dmi
index b247132eacb..b69c67ea8de 100644
Binary files a/icons/obj/smooth_structures/swarmer_catwalk.dmi and b/icons/obj/smooth_structures/swarmer_catwalk.dmi differ
diff --git a/icons/obj/smooth_structures/table.dmi b/icons/obj/smooth_structures/table.dmi
index 0b5fa4636bf..c54555abf00 100644
Binary files a/icons/obj/smooth_structures/table.dmi and b/icons/obj/smooth_structures/table.dmi differ
diff --git a/icons/obj/smooth_structures/table_greyscale.dmi b/icons/obj/smooth_structures/table_greyscale.dmi
index 1acbea2de9b..3a632ad4b15 100644
Binary files a/icons/obj/smooth_structures/table_greyscale.dmi and b/icons/obj/smooth_structures/table_greyscale.dmi differ
diff --git a/icons/obj/smooth_structures/tinted_window.dmi b/icons/obj/smooth_structures/tinted_window.dmi
index 85e27e09a67..531255feb2d 100644
Binary files a/icons/obj/smooth_structures/tinted_window.dmi and b/icons/obj/smooth_structures/tinted_window.dmi differ
diff --git a/icons/obj/smooth_structures/window.dmi b/icons/obj/smooth_structures/window.dmi
index b680e44fa90..d45bfcea7ea 100644
Binary files a/icons/obj/smooth_structures/window.dmi and b/icons/obj/smooth_structures/window.dmi differ
diff --git a/icons/obj/smooth_structures/wood_table.dmi b/icons/obj/smooth_structures/wood_table.dmi
index 181114a7c84..f35cbb90a37 100644
Binary files a/icons/obj/smooth_structures/wood_table.dmi and b/icons/obj/smooth_structures/wood_table.dmi differ
diff --git a/icons/turf/floors/ash.dmi b/icons/turf/floors/ash.dmi
index 718cd120194..4749fc2d330 100644
Binary files a/icons/turf/floors/ash.dmi and b/icons/turf/floors/ash.dmi differ
diff --git a/icons/turf/floors/carpet.dmi b/icons/turf/floors/carpet.dmi
index 52208611a47..0d71cfbd1cc 100644
Binary files a/icons/turf/floors/carpet.dmi and b/icons/turf/floors/carpet.dmi differ
diff --git a/icons/turf/floors/carpet_black.dmi b/icons/turf/floors/carpet_black.dmi
index d8cbc1c4534..cb4dff53543 100644
Binary files a/icons/turf/floors/carpet_black.dmi and b/icons/turf/floors/carpet_black.dmi differ
diff --git a/icons/turf/floors/carpet_blue.dmi b/icons/turf/floors/carpet_blue.dmi
index f797be9745a..ea04cffc6ba 100644
Binary files a/icons/turf/floors/carpet_blue.dmi and b/icons/turf/floors/carpet_blue.dmi differ
diff --git a/icons/turf/floors/carpet_cyan.dmi b/icons/turf/floors/carpet_cyan.dmi
index feca351ca92..1dc9400f78b 100644
Binary files a/icons/turf/floors/carpet_cyan.dmi and b/icons/turf/floors/carpet_cyan.dmi differ
diff --git a/icons/turf/floors/carpet_green.dmi b/icons/turf/floors/carpet_green.dmi
index fdd1f071f70..182b1af39c4 100644
Binary files a/icons/turf/floors/carpet_green.dmi and b/icons/turf/floors/carpet_green.dmi differ
diff --git a/icons/turf/floors/carpet_orange.dmi b/icons/turf/floors/carpet_orange.dmi
index ddf239b63b2..d1a20dfac5c 100644
Binary files a/icons/turf/floors/carpet_orange.dmi and b/icons/turf/floors/carpet_orange.dmi differ
diff --git a/icons/turf/floors/carpet_purple.dmi b/icons/turf/floors/carpet_purple.dmi
index c1f40ec7fa8..bfe03c195a9 100644
Binary files a/icons/turf/floors/carpet_purple.dmi and b/icons/turf/floors/carpet_purple.dmi differ
diff --git a/icons/turf/floors/carpet_red.dmi b/icons/turf/floors/carpet_red.dmi
index 926655688ed..934d541e8fd 100644
Binary files a/icons/turf/floors/carpet_red.dmi and b/icons/turf/floors/carpet_red.dmi differ
diff --git a/icons/turf/floors/carpet_royalblack.dmi b/icons/turf/floors/carpet_royalblack.dmi
index bc5cef1cf0e..323f1806f36 100644
Binary files a/icons/turf/floors/carpet_royalblack.dmi and b/icons/turf/floors/carpet_royalblack.dmi differ
diff --git a/icons/turf/floors/carpet_royalblue.dmi b/icons/turf/floors/carpet_royalblue.dmi
index 841e49e957b..95f1b6400de 100644
Binary files a/icons/turf/floors/carpet_royalblue.dmi and b/icons/turf/floors/carpet_royalblue.dmi differ
diff --git a/icons/turf/floors/chasms.dmi b/icons/turf/floors/chasms.dmi
index cc4feb2e032..b725e54d134 100644
Binary files a/icons/turf/floors/chasms.dmi and b/icons/turf/floors/chasms.dmi differ
diff --git a/icons/turf/floors/glass.dmi b/icons/turf/floors/glass.dmi
index adf6f57aaa3..ad833bddcbd 100644
Binary files a/icons/turf/floors/glass.dmi and b/icons/turf/floors/glass.dmi differ
diff --git a/icons/turf/floors/grass.dmi b/icons/turf/floors/grass.dmi
index 994c4667e6f..f73259b618a 100644
Binary files a/icons/turf/floors/grass.dmi and b/icons/turf/floors/grass.dmi differ
diff --git a/icons/turf/floors/ice_turf.dmi b/icons/turf/floors/ice_turf.dmi
index 8751a372162..46d37cf2681 100644
Binary files a/icons/turf/floors/ice_turf.dmi and b/icons/turf/floors/ice_turf.dmi differ
diff --git a/icons/turf/floors/icechasms.dmi b/icons/turf/floors/icechasms.dmi
index 97dfc0a2da6..998981326aa 100644
Binary files a/icons/turf/floors/icechasms.dmi and b/icons/turf/floors/icechasms.dmi differ
diff --git a/icons/turf/floors/junglechasm.dmi b/icons/turf/floors/junglechasm.dmi
index 699a3b667cd..141f5d7485b 100644
Binary files a/icons/turf/floors/junglechasm.dmi and b/icons/turf/floors/junglechasm.dmi differ
diff --git a/icons/turf/floors/junglegrass.dmi b/icons/turf/floors/junglegrass.dmi
index e7d93403e1c..281eccaa287 100644
Binary files a/icons/turf/floors/junglegrass.dmi and b/icons/turf/floors/junglegrass.dmi differ
diff --git a/icons/turf/floors/reinf_glass.dmi b/icons/turf/floors/reinf_glass.dmi
index dda99cd07f8..5abe9815eb4 100644
Binary files a/icons/turf/floors/reinf_glass.dmi and b/icons/turf/floors/reinf_glass.dmi differ
diff --git a/icons/turf/floors/rocky_ash.dmi b/icons/turf/floors/rocky_ash.dmi
index 2a57edfc53a..e972b09bf9b 100644
Binary files a/icons/turf/floors/rocky_ash.dmi and b/icons/turf/floors/rocky_ash.dmi differ
diff --git a/icons/turf/floors/snow_turf.dmi b/icons/turf/floors/snow_turf.dmi
index e7fef38602b..8cae37308e1 100644
Binary files a/icons/turf/floors/snow_turf.dmi and b/icons/turf/floors/snow_turf.dmi differ
diff --git a/icons/turf/smoothrocks.dmi b/icons/turf/smoothrocks.dmi
index a65a0135248..0948aaaaa3b 100644
Binary files a/icons/turf/smoothrocks.dmi and b/icons/turf/smoothrocks.dmi differ
diff --git a/icons/turf/walls/abductor_wall.dmi b/icons/turf/walls/abductor_wall.dmi
index d1d8954bfb9..362d2f0228e 100644
Binary files a/icons/turf/walls/abductor_wall.dmi and b/icons/turf/walls/abductor_wall.dmi differ
diff --git a/icons/turf/walls/bananium_wall.dmi b/icons/turf/walls/bananium_wall.dmi
index 47e249c42e5..b0827de38b3 100644
Binary files a/icons/turf/walls/bananium_wall.dmi and b/icons/turf/walls/bananium_wall.dmi differ
diff --git a/icons/turf/walls/boss_wall.dmi b/icons/turf/walls/boss_wall.dmi
index a197aac8ce3..e27be26fc73 100644
Binary files a/icons/turf/walls/boss_wall.dmi and b/icons/turf/walls/boss_wall.dmi differ
diff --git a/icons/turf/walls/clockwork_wall.dmi b/icons/turf/walls/clockwork_wall.dmi
index 8263e901d00..d6f1872d7c0 100644
Binary files a/icons/turf/walls/clockwork_wall.dmi and b/icons/turf/walls/clockwork_wall.dmi differ
diff --git a/icons/turf/walls/cult_wall.dmi b/icons/turf/walls/cult_wall.dmi
index 5239f7b1e06..5defb4c503c 100644
Binary files a/icons/turf/walls/cult_wall.dmi and b/icons/turf/walls/cult_wall.dmi differ
diff --git a/icons/turf/walls/diamond_wall.dmi b/icons/turf/walls/diamond_wall.dmi
index 0645aa2e6fd..f3be964d463 100644
Binary files a/icons/turf/walls/diamond_wall.dmi and b/icons/turf/walls/diamond_wall.dmi differ
diff --git a/icons/turf/walls/gold_wall.dmi b/icons/turf/walls/gold_wall.dmi
index c6ba713c649..141ff879345 100644
Binary files a/icons/turf/walls/gold_wall.dmi and b/icons/turf/walls/gold_wall.dmi differ
diff --git a/icons/turf/walls/hierophant_wall_temp.dmi b/icons/turf/walls/hierophant_wall_temp.dmi
index 9f0d4b8d23c..bcde8ae814a 100644
Binary files a/icons/turf/walls/hierophant_wall_temp.dmi and b/icons/turf/walls/hierophant_wall_temp.dmi differ
diff --git a/icons/turf/walls/icedmetal_wall.dmi b/icons/turf/walls/icedmetal_wall.dmi
index 1782b9809b6..b2aac177d8b 100644
Binary files a/icons/turf/walls/icedmetal_wall.dmi and b/icons/turf/walls/icedmetal_wall.dmi differ
diff --git a/icons/turf/walls/icerock_wall.dmi b/icons/turf/walls/icerock_wall.dmi
index 4e2afc67d69..bd7a7f1bc27 100644
Binary files a/icons/turf/walls/icerock_wall.dmi and b/icons/turf/walls/icerock_wall.dmi differ
diff --git a/icons/turf/walls/iron_wall.dmi b/icons/turf/walls/iron_wall.dmi
index 86bed015f15..f78038a7cb7 100644
Binary files a/icons/turf/walls/iron_wall.dmi and b/icons/turf/walls/iron_wall.dmi differ
diff --git a/icons/turf/walls/materialwall.dmi b/icons/turf/walls/materialwall.dmi
index c497f76c2ee..1027effda94 100644
Binary files a/icons/turf/walls/materialwall.dmi and b/icons/turf/walls/materialwall.dmi differ
diff --git a/icons/turf/walls/mountain_wall.dmi b/icons/turf/walls/mountain_wall.dmi
index 8b90de86473..46ab374e8b4 100644
Binary files a/icons/turf/walls/mountain_wall.dmi and b/icons/turf/walls/mountain_wall.dmi differ
diff --git a/icons/turf/walls/plasma_wall.dmi b/icons/turf/walls/plasma_wall.dmi
index 4f2080d06ac..305e78f1856 100644
Binary files a/icons/turf/walls/plasma_wall.dmi and b/icons/turf/walls/plasma_wall.dmi differ
diff --git a/icons/turf/walls/plastinum_wall.dmi b/icons/turf/walls/plastinum_wall.dmi
index 79468c07fb1..1bc8071c1c5 100644
Binary files a/icons/turf/walls/plastinum_wall.dmi and b/icons/turf/walls/plastinum_wall.dmi differ
diff --git a/icons/turf/walls/plastitanium_wall.dmi b/icons/turf/walls/plastitanium_wall.dmi
index 01dfdd1234d..e3cfc435f51 100644
Binary files a/icons/turf/walls/plastitanium_wall.dmi and b/icons/turf/walls/plastitanium_wall.dmi differ
diff --git a/icons/turf/walls/reinforced_wall.dmi b/icons/turf/walls/reinforced_wall.dmi
index c6f59240480..7941eb9d1a7 100644
Binary files a/icons/turf/walls/reinforced_wall.dmi and b/icons/turf/walls/reinforced_wall.dmi differ
diff --git a/icons/turf/walls/riveted.dmi b/icons/turf/walls/riveted.dmi
index 90d1e96297b..4d25f15b851 100644
Binary files a/icons/turf/walls/riveted.dmi and b/icons/turf/walls/riveted.dmi differ
diff --git a/icons/turf/walls/rock_wall.dmi b/icons/turf/walls/rock_wall.dmi
index c07657149ac..d3dc61659ec 100644
Binary files a/icons/turf/walls/rock_wall.dmi and b/icons/turf/walls/rock_wall.dmi differ
diff --git a/icons/turf/walls/rusty_reinforced_wall.dmi b/icons/turf/walls/rusty_reinforced_wall.dmi
index 17081d38010..e2636950d27 100644
Binary files a/icons/turf/walls/rusty_reinforced_wall.dmi and b/icons/turf/walls/rusty_reinforced_wall.dmi differ
diff --git a/icons/turf/walls/rusty_wall.dmi b/icons/turf/walls/rusty_wall.dmi
index 9efaa0b49b0..063504e44b5 100644
Binary files a/icons/turf/walls/rusty_wall.dmi and b/icons/turf/walls/rusty_wall.dmi differ
diff --git a/icons/turf/walls/sandstone_wall.dmi b/icons/turf/walls/sandstone_wall.dmi
index 4118a3dbabf..64e22fe5407 100644
Binary files a/icons/turf/walls/sandstone_wall.dmi and b/icons/turf/walls/sandstone_wall.dmi differ
diff --git a/icons/turf/walls/shuttle_wall.dmi b/icons/turf/walls/shuttle_wall.dmi
index d9c904c3366..f8c03e3946b 100644
Binary files a/icons/turf/walls/shuttle_wall.dmi and b/icons/turf/walls/shuttle_wall.dmi differ
diff --git a/icons/turf/walls/silver_wall.dmi b/icons/turf/walls/silver_wall.dmi
index d8a93212199..0021acc34c0 100644
Binary files a/icons/turf/walls/silver_wall.dmi and b/icons/turf/walls/silver_wall.dmi differ
diff --git a/icons/turf/walls/snow_wall.dmi b/icons/turf/walls/snow_wall.dmi
index dfcf459f2a1..e5e51d4f4c8 100644
Binary files a/icons/turf/walls/snow_wall.dmi and b/icons/turf/walls/snow_wall.dmi differ
diff --git a/icons/turf/walls/survival_pod_walls.dmi b/icons/turf/walls/survival_pod_walls.dmi
index 83fadb92f28..01700f1ed6f 100644
Binary files a/icons/turf/walls/survival_pod_walls.dmi and b/icons/turf/walls/survival_pod_walls.dmi differ
diff --git a/icons/turf/walls/uranium_wall.dmi b/icons/turf/walls/uranium_wall.dmi
index 67bbc307dd8..47a98397617 100644
Binary files a/icons/turf/walls/uranium_wall.dmi and b/icons/turf/walls/uranium_wall.dmi differ
diff --git a/icons/turf/walls/wall.dmi b/icons/turf/walls/wall.dmi
index 46f878ca8cd..d1c3d94106e 100644
Binary files a/icons/turf/walls/wall.dmi and b/icons/turf/walls/wall.dmi differ
diff --git a/icons/turf/walls/wood_wall.dmi b/icons/turf/walls/wood_wall.dmi
index 84e1c083288..608edb20dfb 100644
Binary files a/icons/turf/walls/wood_wall.dmi and b/icons/turf/walls/wood_wall.dmi differ