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