diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm
index 1959cf37a87..7be56fb54af 100644
--- a/code/__DEFINES/icon_smoothing.dm
+++ b/code/__DEFINES/icon_smoothing.dm
@@ -1,15 +1,21 @@
/* 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_BLOB (1<<1) //Smoothing system in where adjacencies are calculated and used to select a pre-baked icon_state, encoded by the blob tileset pattern.
-#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 the blob tileset pattern.
+#define SMOOTH_BLOB (1<<1)
+/// Atom has diagonal corners, with underlays under them.
+#define SMOOTH_DIAGONAL (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)
/*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_BLOB)) {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)}
@@ -75,6 +81,7 @@
#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
diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm
index 2d4cc8f82e1..5870700eed3 100644
--- a/code/__HELPERS/icon_smoothing.dm
+++ b/code/__HELPERS/icon_smoothing.dm
@@ -25,14 +25,14 @@
*/
//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 NO_ADJ_FOUND 0
#define ADJ_FOUND 1
@@ -42,6 +42,27 @@
#define DEFAULT_UNDERLAY_ICON_STATE "plating"
+DEFINE_BITFIELD(smoothing_flags, list(
+ "SMOOTH_CORNERS" = SMOOTH_CORNERS,
+ "SMOOTH_BLOB" = SMOOTH_BLOB,
+ "SMOOTH_DIAGONAL" = SMOOTH_DIAGONAL,
+ "SMOOTH_BORDER" = SMOOTH_BORDER,
+ "SMOOTH_QUEUED" = SMOOTH_QUEUED,
+ "SMOOTH_OBJ" = SMOOTH_OBJ,
+))
+
+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 SET_ADJ_IN_DIR(source, junction, direction, direction_flag) \
do { \
var/turf/neighbor = get_step(source, direction); \
@@ -96,39 +117,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()
@@ -155,22 +176,22 @@
/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
@@ -181,93 +202,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
@@ -332,46 +317,70 @@
return NO_ADJ_FOUND
+///Basic smoothing proc. The atom checks for adjacent directions to smooth with and changes the icon_state based on that.
/atom/proc/blob_smooth()
. = NONE //junction
for(var/direction in GLOB.cardinals) //Cardinal case first.
SET_ADJ_IN_DIR(src, ., direction, direction)
- if(!(smoothing_flags & SMOOTH_DIAGONAL) || !(. & (NORTH|SOUTH)) || !(. & (EAST|WEST)))
+ if(!(. & (NORTH|SOUTH)) || !(. & (EAST|WEST)))
+ smoothing_junction = .
icon_state = "[base_icon_state]-[.]"
return
- if(. & N_NORTH)
- if(. & N_WEST)
- SET_ADJ_IN_DIR(src, ., NORTHWEST, N_NORTHWEST)
+ if(. & NORTH_JUNCTION)
+ if(. & WEST_JUNCTION)
+ SET_ADJ_IN_DIR(src, ., NORTHWEST, NORTHWEST_JUNCTION)
- if(. & N_EAST)
- SET_ADJ_IN_DIR(src, ., NORTHEAST, N_NORTHEAST)
+ if(. & EAST_JUNCTION)
+ SET_ADJ_IN_DIR(src, ., NORTHEAST, NORTHEAST_JUNCTION)
- if(. & N_SOUTH)
- if(. & N_WEST)
- SET_ADJ_IN_DIR(src, ., SOUTHWEST, N_SOUTHWEST)
+ if(. & SOUTH_JUNCTION)
+ if(. & WEST_JUNCTION)
+ SET_ADJ_IN_DIR(src, ., SOUTHWEST, SOUTHWEST_JUNCTION)
- if(. & N_EAST)
- SET_ADJ_IN_DIR(src, ., SOUTHEAST, N_SOUTHEAST)
+ if(. & EAST_JUNCTION)
+ SET_ADJ_IN_DIR(src, ., SOUTHEAST, SOUTHEAST_JUNCTION)
+ smoothing_junction = .
icon_state = "[base_icon_state]-[.]"
+/turf/closed/blob_smooth()
+ . = ..()
+ if(!(smoothing_flags & SMOOTH_DIAGONAL) || fixed_underlay)
+ return
+ 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)
+ 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)
+
+
//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_BLOB))
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_BLOB))
if(now)
A.smooth_icon()
else
@@ -405,37 +414,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
@@ -450,14 +459,14 @@
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
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 6824adcb297..ee9490de404 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/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm
index 55e2fef54cb..4d08f05ee0e 100644
--- a/code/game/objects/effects/decals/cleanable/misc.dm
+++ b/code/game/objects/effects/decals/cleanable/misc.dm
@@ -67,10 +67,12 @@
icon = 'icons/effects/dirt.dmi'
icon_state = ""
QUEUE_SMOOTH(src)
- QUEUE_SMOOTH_NEIGHBORS(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BLOB))
+ QUEUE_SMOOTH_NEIGHBORS(src)
/obj/effect/decal/cleanable/dirt/Destroy()
- QUEUE_SMOOTH_NEIGHBORS(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BLOB))
+ QUEUE_SMOOTH_NEIGHBORS(src)
return ..()
/obj/effect/decal/cleanable/dirt/dust
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 96b7e905c63..4d2e73e351c 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_BLOB))
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_BLOB))
QUEUE_SMOOTH_NEIGHBORS(src)
return ..()
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 3716bd9416f..8563ea21e88 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_BLOB
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_BLOB
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_BLOB
/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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
@@ -280,41 +299,48 @@
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_BLOB
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS)
canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS)
/obj/structure/falsewall/abductor
name = "alien wall"
desc = "A wall with alien alloy plating."
- icon = 'icons/turf/walls/abductor_wall.dmi'
- icon_state = "abductor"
+ icon = 'icons/turf/walls/abductor_nodiag_wall.dmi'
+ icon_state = "abductor_nodiag_wall-0"
+ base_icon_state = "abductor_nodiag_wall"
mineral = /obj/item/stack/sheet/mineral/abductor
walltype = /turf/closed/wall/mineral/abductor
+ smoothing_flags = SMOOTH_BLOB
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS)
/obj/structure/falsewall/titanium
name = "wall"
desc = "A light-weight titanium wall used in shuttles."
- icon = 'icons/turf/walls/shuttle_wall.dmi'
- icon_state = "shuttle"
+ icon = 'icons/turf/walls/shuttle_nodiag_wall.dmi'
+ icon_state = "shuttle_nodiag_wall-0"
+ base_icon_state = "shuttle_nodiag_wall"
mineral = /obj/item/stack/sheet/mineral/titanium
walltype = /turf/closed/wall/mineral/titanium
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BLOB
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
/obj/structure/falsewall/plastitanium
name = "wall"
desc = "An evil wall of plasma and titanium."
- icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "shuttle"
+ icon = 'icons/turf/walls/plastitanium_nodiag_wall.dmi'
+ icon_state = "plastitanium_nodiag_wall-0"
+ base_icon_state = "plastitanium_nodiag_wall"
mineral = /obj/item/stack/sheet/mineral/plastitanium
walltype = /turf/closed/wall/mineral/plastitanium
- smoothing_flags = SMOOTH_CORNERS
+ smoothing_flags = SMOOTH_BLOB | SMOOTH_DIAGONAL
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/grille.dm b/code/game/objects/structures/grille.dm
index b3fc1d503b6..1fce6eff1b9 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_BLOB))
QUEUE_SMOOTH(src)
if(ratio > 50)
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index a399427fe10..59b9411b04c 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_BLOB))
+ 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_BLOB))
+ 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..f3490b19c32 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -44,7 +44,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_BLOB))
QUEUE_SMOOTH(src)
QUEUE_SMOOTH_NEIGHBORS(src)
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 3774a9c33d4..36acfda9419 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_BLOB))
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_BLOB))
QUEUE_SMOOTH(src)
cut_overlay(crack_overlay)
@@ -791,7 +791,8 @@
cut_overlay(torn)
add_overlay(paper)
set_opacity(TRUE)
- QUEUE_SMOOTH(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BLOB))
+ QUEUE_SMOOTH(src)
/obj/structure/window/paperframe/attackby(obj/item/W, mob/user)
diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm
index 3cf5b936584..86fd2fb340c 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_BLOB))
+ QUEUE_SMOOTH_NEIGHBORS(src)
HandleTurfChange(src)
diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm
index bb3a77d64d1..51fad47f56e 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_BLOB
/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_BLOB
+ 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_BLOB | SMOOTH_DIAGONAL
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_BLOB
/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_BLOB | SMOOTH_DIAGONAL
/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_BLOB
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
@@ -166,8 +176,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_BLOB | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
pixel_x = -4
pixel_y = -4
@@ -196,7 +207,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_BLOB
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_BOSS_WALLS)
canSmoothWith = list(SMOOTH_GROUP_BOSS_WALLS)
explosion_block = 50
@@ -215,3 +228,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..449f9b2e5ad 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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_BLOB | 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..099fcd1c8e3 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_BLOB
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..73447eb0ecd 100644
--- a/code/game/turfs/closed/wall/mineral_walls.dm
+++ b/code/game/turfs/closed/wall/mineral_walls.dm
@@ -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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB | SMOOTH_DIAGONAL
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_BLOB | SMOOTH_DIAGONAL
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_nodiag_wall.dmi'
icon_state = "map-shuttle_nd"
+ base_icon_state = "shuttle_nodiag_wall"
+ smoothing_flags = SMOOTH_BLOB
/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_BLOB | SMOOTH_DIAGONAL
+ 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_BLOB | SMOOTH_DIAGONAL
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_nodiag_walls.dmi'
+ icon_state = "survival_pod_nodiag_walls-0"
+ base_icon_state = "survival_pod_nodiag_walls"
+ smoothing_flags = SMOOTH_BLOB
/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_BLOB | SMOOTH_DIAGONAL
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_nodiag_wall.dmi'
icon_state = "map-shuttle_nd"
+ base_icon_state = "plastitanium_nodiag_wall"
+ smoothing_flags = SMOOTH_BLOB
/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_BLOB | SMOOTH_DIAGONAL
+ 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..dcf2b96e6a4 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_BLOB
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_BLOB
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_BLOB
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_BLOB
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_BLOB
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..8a7a726ec12 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_BLOB
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_BLOB
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_BLOB | SMOOTH_DIAGONAL
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_nodiag_wall.dmi'
icon_state = "map-shuttle_nd"
+ base_icon_state = "plastitanium_nodiag_wall"
+ smoothing_flags = SMOOTH_BLOB
/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_BLOB | SMOOTH_DIAGONAL
+ fixed_underlay = list("space" = TRUE)
diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm
index 736b6fb2bb8..023f40a709f 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_BLOB
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 && 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/floor/fancy_floor.dm b/code/game/turfs/open/floor/fancy_floor.dm
index 71e60586287..ffca8873426 100644
--- a/code/game/turfs/open/floor/fancy_floor.dm
+++ b/code/game/turfs/open/floor/fancy_floor.dm
@@ -206,11 +206,11 @@
if(!.)
return
if(!broken && !burnt)
- if(smoothing_flags)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BLOB))
QUEUE_SMOOTH(src)
else
make_plating()
- if(smoothing_flags)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BLOB))
QUEUE_SMOOTH_NEIGHBORS(src)
/turf/open/floor/carpet/black
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 3056729477d..239e1a8a32a 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_BLOB))
QUEUE_SMOOTH(src)
visibilityChanged()
diff --git a/code/modules/holodeck/turfs.dm b/code/modules/holodeck/turfs.dm
index dd57d6d85a1..7be72084c32 100644
--- a/code/modules/holodeck/turfs.dm
+++ b/code/modules/holodeck/turfs.dm
@@ -120,7 +120,7 @@
/turf/open/floor/holofloor/carpet/update_icon()
. = ..()
- if(intact)
+ if(intact && smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BLOB))
QUEUE_SMOOTH(src)
/turf/open/floor/holofloor/wood
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..893a11c02c1 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_BLOB
+ 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_BLOB))
+ QUEUE_SMOOTH_NEIGHBORS(src)
+ QUEUE_SMOOTH(src)
/obj/effect/temp_visual/hierophant/wall/Destroy()
- QUEUE_SMOOTH_NEIGHBORS(src)
+ if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BLOB))
+ 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/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..da4e6ece78a 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_BLOB
+ 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_BLOB))
+ 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_BLOB))
+ 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..1fb85977a14 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_BLOB | 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..46c2a387049 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_BLOB))
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/code/modules/visual_objects/visual_objects.dm b/code/modules/visual_objects/visual_objects.dm
new file mode 100644
index 00000000000..849dc3c444c
--- /dev/null
+++ b/code/modules/visual_objects/visual_objects.dm
@@ -0,0 +1,4 @@
+/atom/movable/vis_obj
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ move_resist = INFINITY
+ vis_flags = VIS_INHERIT_PLANE
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_nodiag_wall.dmi b/icons/turf/walls/abductor_nodiag_wall.dmi
new file mode 100644
index 00000000000..52420cb8312
Binary files /dev/null and b/icons/turf/walls/abductor_nodiag_wall.dmi differ
diff --git a/icons/turf/walls/abductor_wall.dmi b/icons/turf/walls/abductor_wall.dmi
index d1d8954bfb9..23c1af201ae 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..a340d6c6845 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_nodiag_wall.dmi b/icons/turf/walls/plastitanium_nodiag_wall.dmi
new file mode 100644
index 00000000000..03488a25302
Binary files /dev/null and b/icons/turf/walls/plastitanium_nodiag_wall.dmi differ
diff --git a/icons/turf/walls/plastitanium_wall.dmi b/icons/turf/walls/plastitanium_wall.dmi
index 01dfdd1234d..41515e5787e 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_nodiag_wall.dmi b/icons/turf/walls/shuttle_nodiag_wall.dmi
new file mode 100644
index 00000000000..e4cc8cdc338
Binary files /dev/null and b/icons/turf/walls/shuttle_nodiag_wall.dmi differ
diff --git a/icons/turf/walls/shuttle_wall.dmi b/icons/turf/walls/shuttle_wall.dmi
index d9c904c3366..e51dc52ed83 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_nodiag_walls.dmi b/icons/turf/walls/survival_pod_nodiag_walls.dmi
new file mode 100644
index 00000000000..6034cbfe06b
Binary files /dev/null and b/icons/turf/walls/survival_pod_nodiag_walls.dmi differ
diff --git a/icons/turf/walls/survival_pod_walls.dmi b/icons/turf/walls/survival_pod_walls.dmi
index 83fadb92f28..8c518b2fc60 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