Icon smooth refactor (#52864)

bitflag list construct added: an associative list of bitflags for cheap and quick element comparison between two lists using the same system.

    canSmoothWith list turned into a bitflag list.

    smoothing_groups list added to substitute the type path list.

    smoothing procs turned into atom procs, refactored and optimized a bit.

    smooth directions redefined in order to fit in 8 bits for a future smoothing system

    some variable names changed, foreseeing a second smoothing system

    SMOOTH_OBJ flag added, for things that need to scan turfs for smoothing. The old locate() optimization has the risk of returning false negatives by finding a child and returning null while there might be one of the wanted type as well, as it doesn't match the type exactly.

    SMOOTH_TRUE and SMOOTH_MORE condensed into SMOOTH_CORNERS. The old behavior can be replicated using smoothing groups without loss.

    Does very minor code cleanup.

    Processing-wise didn't find a noticeable difference. The system loses on init a bit by setting the bitflag_lists, and by scanning whole turf contents for object smoothing (increasing accuracy), and gains by making less checks per target to smooth, through the same bitflag_lists.

    Memory-wise there should be a small improvement, given that on the old system we had 63512 canSmoothWith lists (a few typelists, most unique), and on this new system canSmoothWith + smoothing_groups are both bitflag_lists from the same pool, totaling 46 in number.

Could be tested a bit to see if I missed any icons not properly smoothing.
This commit is contained in:
Rohesie
2020-08-13 14:03:49 +12:00
committed by GitHub
parent 951e41efa0
commit b0726e032b
37 changed files with 572 additions and 352 deletions
+101
View File
@@ -0,0 +1,101 @@
/* smoothing_flags */
#define SMOOTH_CORNERS (1<<0) //Smoothing system in where adjacencies are calculated and used to build an image by mounting each corner at runtime.
#define SMOOTH_DIAGONAL (1<<2) //if atom should smooth diagonally, this should be present in 'smoothing_flags' var
#define SMOOTH_BORDER (1<<3) //atom will smooth with the borders of the map
#define SMOOTH_QUEUED (1<<4) //atom is currently queued to smooth.
#define SMOOTH_OBJ (1<<5) //smooths with objects, and will thus need to scan turfs for contents.
/*smoothing macros*/
#define QUEUE_SMOOTH(thing_to_queue) if(thing_to_queue.smoothing_flags) {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)}
/**SMOOTHING GROUPS
* Groups of things to smooth with.
* * Contained in the `list/smoothing_groups` variable.
* * Matched with the `list/canSmoothWith` variable to check whether smoothing is possible or not.
*/
#define S_TURF(num) ((24 * 0) + num) //Not any different from the number itself, but kept this way in case someone wants to expand it by adding stuff before it.
/* /turf only */
#define SMOOTH_GROUP_TURF_OPEN S_TURF(0) ///turf/open
#define SMOOTH_GROUP_TURF_CHASM S_TURF(1) ///turf/open/chasm, /turf/open/floor/fakepit
#define SMOOTH_GROUP_FLOOR_LAVA S_TURF(2) ///turf/open/lava/smooth
#define SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS S_TURF(3) ///turf/open/transparent/glass
#define SMOOTH_GROUP_OPEN_FLOOR S_TURF(4) ///turf/open/floor
#define SMOOTH_GROUP_FLOOR_ASH S_TURF(5) ///turf/open/floor/plating/ashplanet/ash
#define SMOOTH_GROUP_FLOOR_ASH_ROCKY S_TURF(6) ///turf/open/floor/plating/ashplanet/rocky
#define SMOOTH_GROUP_FLOOR_ICE S_TURF(7) ///turf/open/floor/plating/ice
#define SMOOTH_GROUP_FLOOR_SNOWED S_TURF(8) ///turf/open/floor/plating/snowed
#define SMOOTH_GROUP_CARPET S_TURF(10) ///turf/open/floor/carpet
#define SMOOTH_GROUP_CARPET_BLACK S_TURF(11) ///turf/open/floor/carpet/black
#define SMOOTH_GROUP_CARPET_BLUE S_TURF(12) ///turf/open/floor/carpet/blue
#define SMOOTH_GROUP_CARPET_CYAN S_TURF(13) ///turf/open/floor/carpet/cyan
#define SMOOTH_GROUP_CARPET_GREEN S_TURF(14) ///turf/open/floor/carpet/green
#define SMOOTH_GROUP_CARPET_ORANGE S_TURF(15) ///turf/open/floor/carpet/orange
#define SMOOTH_GROUP_CARPET_PURPLE S_TURF(16) ///turf/open/floor/carpet/purple
#define SMOOTH_GROUP_CARPET_RED S_TURF(17) ///turf/open/floor/carpet/red
#define SMOOTH_GROUP_CARPET_ROYAL_BLACK S_TURF(18) ///turf/open/floor/carpet/royalblack
#define SMOOTH_GROUP_CARPET_ROYAL_BLUE S_TURF(19) ///turf/open/floor/carpet/royalblue
#define SMOOTH_GROUP_CLOSED_TURFS S_TURF(24) ///turf/closed
#define SMOOTH_GROUP_MATERIAL_WALLS S_TURF(25) ///turf/closed/wall/material
#define SMOOTH_GROUP_SYNDICATE_WALLS S_TURF(26) ///turf/closed/wall/r_wall/syndicate
#define SMOOTH_GROUP_HOTEL_WALLS S_TURF(27) ///turf/closed/indestructible/hotelwall
#define SMOOTH_GROUP_MINERAL_WALLS S_TURF(28) ///turf/closed/mineral, /turf/closed/indestructible
#define SMOOTH_GROUP_BOSS_WALLS S_TURF(29) ///turf/closed/indestructible/riveted/boss
#define SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS S_TURF(30) ///turf/closed/wall/mineral/titanium/survival
#define MAX_S_TURF SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS //Always match this value with the one above it.
#define S_OBJ(num) (MAX_S_TURF + 1 + num)
/* /obj included */
#define SMOOTH_GROUP_WALLS S_OBJ(0) ///turf/closed/wall, /obj/structure/falsewall
#define SMOOTH_GROUP_URANIUM_WALLS S_OBJ(1) ///turf/closed/wall/mineral/uranium, /obj/structure/falsewall/uranium
#define SMOOTH_GROUP_GOLD_WALLS S_OBJ(2) ///turf/closed/wall/mineral/gold, /obj/structure/falsewall/gold
#define SMOOTH_GROUP_SILVER_WALLS S_OBJ(3) ///turf/closed/wall/mineral/silver, /obj/structure/falsewall/silver
#define SMOOTH_GROUP_DIAMOND_WALLS S_OBJ(4) ///turf/closed/wall/mineral/diamond, /obj/structure/falsewall/diamond
#define SMOOTH_GROUP_PLASMA_WALLS S_OBJ(5) ///turf/closed/wall/mineral/plasma, /obj/structure/falsewall/plasma
#define SMOOTH_GROUP_BANANIUM_WALLS S_OBJ(6) ///turf/closed/wall/mineral/bananium, /obj/structure/falsewall/bananium
#define SMOOTH_GROUP_SANDSTONE_WALLS S_OBJ(7) ///turf/closed/wall/mineral/sandstone, /obj/structure/falsewall/sandstone
#define SMOOTH_GROUP_WOOD_WALLS S_OBJ(8) ///turf/closed/wall/mineral/wood, /obj/structure/falsewall/wood
#define SMOOTH_GROUP_IRON_WALLS S_OBJ(9) ///turf/closed/wall/mineral/iron, /obj/structure/falsewall/iron
#define SMOOTH_GROUP_ABDUCTOR_WALLS S_OBJ(10) ///turf/closed/wall/mineral/abductor, /obj/structure/falsewall/abductor
#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_PAPERFRAME S_OBJ(20) ///obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe
#define SMOOTH_GROUP_WINDOW_FULLTILE S_OBJ(21) ///obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile
#define SMOOTH_GROUP_LATTICE S_OBJ(30) ///obj/structure/lattice
#define SMOOTH_GROUP_AIRLOCK S_OBJ(40) ///obj/machinery/door/airlock
#define SMOOTH_GROUP_TABLES S_OBJ(50) ///obj/structure/table
#define SMOOTH_GROUP_WOOD_TABLES S_OBJ(51) ///obj/structure/table/wood
#define SMOOTH_GROUP_FANCY_WOOD_TABLES S_OBJ(52) ///obj/structure/table/wood/fancy
#define SMOOTH_GROUP_BRONZE_TABLES S_OBJ(53) ///obj/structure/table/bronze
#define SMOOTH_GROUP_ALIEN_RESIN S_OBJ(60) ///obj/structure/alien/resin
#define SMOOTH_GROUP_ALIEN_WALLS S_OBJ(61) ///obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane
#define SMOOTH_GROUP_ALIEN_WEEDS S_OBJ(62) ///obj/structure/alien/weeds
#define SMOOTH_GROUP_SECURITY_BARRICADE S_OBJ(63) ///obj/structure/barricade/security
#define SMOOTH_GROUP_SANDBAGS S_OBJ(64) ///obj/structure/barricade/sandbags
#define SMOOTH_GROUP_HEDGE_FLUFF S_OBJ(65) ///obj/structure/fluff/hedge
#define SMOOTH_GROUP_SHUTTLE_PARTS S_OBJ(66) ///obj/structure/window/shuttle, /obj/structure/shuttle/engine/heater
#define SMOOTH_GROUP_CLEANABLE_DIRT S_OBJ(67) ///obj/effect/decal/cleanable/dirt
+25
View File
@@ -0,0 +1,25 @@
GLOBAL_LIST_EMPTY(bitflag_lists)
/**
* System for storing bitflags past the 24 limit, making use of an associative list.
*
* Macro converts a list of integers into an associative list of bitflag entries for quicker comparison.
* Example: list(0, 4, 26, 32)) => list( "0" = ( (1<<0) | (1<<4) ), "1" = ( (1<<2) | (1<<8) ) )
* Lists are cached into a global list of lists to avoid identical duplicates.
* This system makes value comparisons faster than pairing every element of one list with every element of the other for evaluation.
*
* Arguments:
* * target - List of integers.
*/
#define SET_BITFLAG_LIST(target) \
do { \
var/txt_signature = target.Join("-"); \
if(!GLOB.bitflag_lists[txt_signature]) { \
var/list/new_bitflag_list = list(); \
for(var/value in target) { \
new_bitflag_list["[round(value / 24)]"] |= (1 << (value % 24)); \
}; \
GLOB.bitflag_lists[txt_signature] = new_bitflag_list; \
}; \
target = GLOB.bitflag_lists[txt_signature]; \
} while (FALSE)
+179 -162
View File
@@ -4,7 +4,8 @@
Each tile is divided in 4 corners, each corner has an appearance associated to it; the tile is then overlayed by these 4 appearances
To use this, just set your atom's 'smoothing_flags' var to 1. If your atom can be moved/unanchored, set its 'can_be_unanchored' var to 1.
If you don't want your atom's icon to smooth with anything but atoms of the same type, set the list 'canSmoothWith' to null;
Otherwise, put all types you want the atom icon to smooth with in 'canSmoothWith' INCLUDING THE TYPE OF THE ATOM ITSELF.
Otherwise, put all the smoothing groups you want the atom icon to smooth with in 'canSmoothWith', including the group of the atom itself.
Smoothing groups are just shared flags between objects. If one of the 'canSmoothWith' of A matches one of the `smoothing_groups` of B, then A will smooth with B.
Each atom has its own icon file with all the possible corner states. See 'smooth_wall.dmi' for a template.
@@ -24,104 +25,92 @@
*/
//Redefinitions of the diagonal directions so they can be stored in one var without conflicts
#define N_NORTH (1<<1)
#define N_SOUTH (1<<2)
#define N_EAST (1<<4)
#define N_WEST (1<<8)
#define N_NORTHEAST (1<<5)
#define N_NORTHWEST (1<<9)
#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<<10)
#define N_SOUTHWEST (1<<7)
#define SMOOTH_TRUE (1<<0) //smooths with exact specified types or just itself
#define SMOOTH_MORE (1<<1) //smooths with all subtypes of specified types or just itself (this value can replace SMOOTH_TRUE)
#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 NULLTURF_BORDER 123456789
#define NO_ADJ_FOUND 0
#define ADJ_FOUND 1
#define NULLTURF_BORDER 2
#define DEFAULT_UNDERLAY_ICON 'icons/turf/floors.dmi'
#define DEFAULT_UNDERLAY_ICON_STATE "plating"
#define QUEUE_SMOOTH(thing_to_queue) if(thing_to_queue.smoothing_flags) {SSicon_smooth.add_to_queue(thing_to_queue)}
///Scans all adjacent turfs to find targets to smooth with.
/atom/proc/calculate_adjacencies()
. = NONE
#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)}
/proc/calculate_adjacencies(atom/A)
if(!A.loc)
return 0
var/adjacencies = 0
var/atom/movable/AM
if(ismovable(A))
AM = A
if(AM.can_be_unanchored && !AM.anchored)
return 0
if(!loc)
return
for(var/direction in GLOB.cardinals)
AM = find_type_in_direction(A, direction)
if(AM == NULLTURF_BORDER)
if((A.smoothing_flags & SMOOTH_BORDER))
adjacencies |= 1 << direction
else if( (AM && !istype(AM)) || (istype(AM) && AM.anchored) )
adjacencies |= 1 << direction
switch(find_type_in_direction(direction))
if(NULLTURF_BORDER)
if((smoothing_flags & SMOOTH_BORDER))
. |= direction //BYOND and smooth dirs are the same for cardinals
if(ADJ_FOUND)
. |= direction //BYOND and smooth dirs are the same for cardinals
if(adjacencies & N_NORTH)
if(adjacencies & N_WEST)
AM = find_type_in_direction(A, NORTHWEST)
if(AM == NULLTURF_BORDER)
if((A.smoothing_flags & SMOOTH_BORDER))
adjacencies |= N_NORTHWEST
else if( (AM && !istype(AM)) || (istype(AM) && AM.anchored) )
adjacencies |= N_NORTHWEST
if(adjacencies & N_EAST)
AM = find_type_in_direction(A, NORTHEAST)
if(AM == NULLTURF_BORDER)
if((A.smoothing_flags & SMOOTH_BORDER))
adjacencies |= N_NORTHEAST
else if( (AM && !istype(AM)) || (istype(AM) && AM.anchored) )
adjacencies |= N_NORTHEAST
if(. & N_NORTH)
if(. & N_WEST)
switch(find_type_in_direction(NORTHWEST))
if(NULLTURF_BORDER)
if((smoothing_flags & SMOOTH_BORDER))
. |= N_NORTHWEST
if(ADJ_FOUND)
. |= N_NORTHWEST
if(adjacencies & N_SOUTH)
if(adjacencies & N_WEST)
AM = find_type_in_direction(A, SOUTHWEST)
if(AM == NULLTURF_BORDER)
if((A.smoothing_flags & SMOOTH_BORDER))
adjacencies |= N_SOUTHWEST
else if( (AM && !istype(AM)) || (istype(AM) && AM.anchored) )
adjacencies |= N_SOUTHWEST
if(adjacencies & N_EAST)
AM = find_type_in_direction(A, SOUTHEAST)
if(AM == NULLTURF_BORDER)
if((A.smoothing_flags & SMOOTH_BORDER))
adjacencies |= N_SOUTHEAST
else if( (AM && !istype(AM)) || (istype(AM) && AM.anchored) )
adjacencies |= N_SOUTHEAST
if(. & N_EAST)
switch(find_type_in_direction(NORTHEAST))
if(NULLTURF_BORDER)
if((smoothing_flags & SMOOTH_BORDER))
. |= N_NORTHEAST
if(ADJ_FOUND)
. |= N_NORTHEAST
if(. & N_SOUTH)
if(. & N_WEST)
switch(find_type_in_direction(SOUTHWEST))
if(NULLTURF_BORDER)
if((smoothing_flags & SMOOTH_BORDER))
. |= N_SOUTHWEST
if(ADJ_FOUND)
. |= N_SOUTHWEST
if(. & N_EAST)
switch(find_type_in_direction(SOUTHEAST))
if(NULLTURF_BORDER)
if((smoothing_flags & SMOOTH_BORDER))
. |= N_SOUTHEAST
if(ADJ_FOUND)
. |= N_SOUTHEAST
/atom/movable/calculate_adjacencies()
if(can_be_unanchored && !anchored)
return NONE
return ..()
return adjacencies
//do not use, use QUEUE_SMOOTH(atom)
/proc/smooth_icon(atom/A)
if(!A || !A.smoothing_flags)
return
A.smoothing_flags &= ~SMOOTH_QUEUED
if (!A.z)
return
if(QDELETED(A))
return
if(A.smoothing_flags & (SMOOTH_TRUE | SMOOTH_MORE))
var/adjacencies = calculate_adjacencies(A)
if(A.smoothing_flags & SMOOTH_DIAGONAL)
A.diagonal_smooth(adjacencies)
/atom/proc/smooth_icon()
smoothing_flags &= ~SMOOTH_QUEUED
if (!z)
CRASH("[type] called smooth_icon() without being on a z-level")
if(smoothing_flags & SMOOTH_CORNERS)
if(smoothing_flags & SMOOTH_DIAGONAL)
corners_diagonal_smooth(calculate_adjacencies())
else
cardinal_smooth(A, adjacencies)
corners_cardinal_smooth(calculate_adjacencies())
/atom/proc/diagonal_smooth(adjacencies)
/atom/proc/corners_diagonal_smooth(adjacencies)
switch(adjacencies)
if(N_NORTH|N_WEST)
replace_smooth_overlays("d-se","d-se-0")
@@ -142,45 +131,50 @@
replace_smooth_overlays("d-nw","d-nw-1")
else
cardinal_smooth(src, adjacencies)
return
corners_cardinal_smooth(adjacencies)
return FALSE
icon_state = ""
return adjacencies
return TRUE
//only walls should have a need to handle underlays
/turf/closed/wall/diagonal_smooth(adjacencies)
adjacencies = reverse_ndir(..())
if(adjacencies)
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"]
/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
var/turned_adjacency = turn(adjacencies, 180)
var/turf/T = get_step(src, turned_adjacency)
if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
T = get_step(src, turn(adjacencies, 135))
if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
T = get_step(src, turn(adjacencies, 225))
//if all else fails, ask our own turf
if(!T.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
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/P in src)
P.roll_and_drop(src)
// 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)
/proc/cardinal_smooth(atom/A, adjacencies)
/atom/proc/corners_cardinal_smooth(adjacencies)
//NW CORNER
var/nw = "1-i"
if((adjacencies & N_NORTH) && (adjacencies & N_WEST))
@@ -233,64 +227,67 @@
else if(adjacencies & N_EAST)
se = "4-e"
var/list/New
var/list/new_overlays
if(A.top_left_corner != nw)
A.cut_overlay(A.top_left_corner)
A.top_left_corner = nw
LAZYADD(New, nw)
if(top_left_corner != nw)
cut_overlay(top_left_corner)
top_left_corner = nw
LAZYADD(new_overlays, nw)
if(A.top_right_corner != ne)
A.cut_overlay(A.top_right_corner)
A.top_right_corner = ne
LAZYADD(New, ne)
if(top_right_corner != ne)
cut_overlay(top_right_corner)
top_right_corner = ne
LAZYADD(new_overlays, ne)
if(A.bottom_right_corner != sw)
A.cut_overlay(A.bottom_right_corner)
A.bottom_right_corner = sw
LAZYADD(New, sw)
if(bottom_right_corner != sw)
cut_overlay(bottom_right_corner)
bottom_right_corner = sw
LAZYADD(new_overlays, sw)
if(A.bottom_left_corner != se)
A.cut_overlay(A.bottom_left_corner)
A.bottom_left_corner = se
LAZYADD(New, se)
if(bottom_left_corner != se)
cut_overlay(bottom_left_corner)
bottom_left_corner = se
LAZYADD(new_overlays, se)
if(New)
A.add_overlay(New)
if(new_overlays)
add_overlay(new_overlays)
/proc/find_type_in_direction(atom/source, direction)
var/turf/target_turf = get_step(source, direction)
///Scans direction to find targets to smooth with.
/atom/proc/find_type_in_direction(direction)
var/turf/target_turf = get_step(src, direction)
if(!target_turf)
return NULLTURF_BORDER
var/area/target_area = get_area(target_turf)
var/area/source_area = get_area(source)
var/area/source_area = get_area(src)
if((source_area.area_limited_icon_smoothing || target_area.area_limited_icon_smoothing) && !istype(source_area, target_area.type) && !istype(target_area, source_area.type))
return null
return NO_ADJ_FOUND
if(source.canSmoothWith)
var/atom/A
if(source.smoothing_flags & SMOOTH_MORE)
for(var/a_type in source.canSmoothWith)
if( istype(target_turf, a_type) )
return target_turf
A = locate(a_type) in target_turf
if(A)
return A
return null
if(isnull(canSmoothWith)) //special case in which it will only smooth with itself
if(isturf(src))
return (type == target_turf.type) ? ADJ_FOUND : NO_ADJ_FOUND
var/atom/matching_obj = locate(type) in target_turf
return (matching_obj && matching_obj.type == type) ? ADJ_FOUND : NO_ADJ_FOUND
if(!isnull(target_turf.smoothing_groups))
for(var/target in canSmoothWith)
if(!(canSmoothWith[target] & target_turf.smoothing_groups[target]))
continue
return ADJ_FOUND
if(smoothing_flags & SMOOTH_OBJ)
for(var/am in target_turf)
var/atom/movable/thing = am
if(!thing.anchored || isnull(thing.smoothing_groups))
continue
for(var/target in canSmoothWith)
if(!(canSmoothWith[target] & thing.smoothing_groups[target]))
continue
return ADJ_FOUND
return NO_ADJ_FOUND
for(var/a_type in source.canSmoothWith)
if(a_type == target_turf.type)
return target_turf
A = locate(a_type) in target_turf
if(A && A.type == a_type)
return A
return null
else
if(isturf(source))
return source.type == target_turf.type ? target_turf : null
var/atom/A = locate(source.type) in target_turf
return A && A.type == source.type ? A : null
//Icon smoothing helpers
/proc/smooth_zlevel(zlevel, now = FALSE)
@@ -299,17 +296,18 @@
var/turf/T = V
if(T.smoothing_flags)
if(now)
smooth_icon(T)
T.smooth_icon()
else
QUEUE_SMOOTH(T)
for(var/R in T)
var/atom/A = R
if(A.smoothing_flags)
if(now)
smooth_icon(A)
A.smooth_icon()
else
QUEUE_SMOOTH(A)
/atom/proc/clear_smooth_overlays()
cut_overlay(top_left_corner)
top_left_corner = null
@@ -320,6 +318,7 @@
cut_overlay(bottom_left_corner)
bottom_left_corner = null
/atom/proc/replace_smooth_overlays(nw, ne, sw, se)
clear_smooth_overlays()
var/list/O = list()
@@ -333,6 +332,7 @@
O += se
add_overlay(O)
/proc/reverse_ndir(ndir)
switch(ndir)
if(N_NORTH)
@@ -368,7 +368,7 @@
if(N_SOUTH|N_EAST|N_SOUTHEAST)
return SOUTHEAST
else
return 0
return NONE
//Example smooth wall
@@ -376,5 +376,22 @@
name = "smooth wall"
icon = 'icons/turf/smooth_wall.dmi'
icon_state = "smooth"
smoothing_flags = SMOOTH_TRUE|SMOOTH_DIAGONAL|SMOOTH_BORDER
smoothing_flags = SMOOTH_CORNERS|SMOOTH_DIAGONAL|SMOOTH_BORDER
smoothing_groups = null
canSmoothWith = null
#undef N_NORTH
#undef N_SOUTH
#undef N_EAST
#undef N_WEST
#undef N_NORTHEAST
#undef N_NORTHWEST
#undef N_SOUTHEAST
#undef N_SOUTHWEST
#undef NO_ADJ_FOUND
#undef ADJ_FOUND
#undef NULLTURF_BORDER
#undef DEFAULT_UNDERLAY_ICON
#undef DEFAULT_UNDERLAY_ICON_STATE
+1 -2
View File
@@ -176,8 +176,7 @@ GLOBAL_LIST_INIT(bitfields, list(
"ZAP_MACHINE_EXPLOSIVE" = ZAP_MACHINE_EXPLOSIVE,
),
"smooth" = list(
"SMOOTH_TRUE" = SMOOTH_TRUE,
"SMOOTH_MORE" = SMOOTH_MORE,
"SMOOTH_CORNERS" = SMOOTH_CORNERS,
"SMOOTH_DIAGONAL" = SMOOTH_DIAGONAL,
"SMOOTH_BORDER" = SMOOTH_BORDER,
"SMOOTH_QUEUED" = SMOOTH_QUEUED,
+4 -4
View File
@@ -18,7 +18,7 @@ SUBSYSTEM_DEF(icon_smooth)
if(QDELETED(smoothing_atom) || !(smoothing_atom.smoothing_flags & SMOOTH_QUEUED))
continue
if(smoothing_atom.flags_1 & INITIALIZED_1)
smooth_icon(smoothing_atom)
smoothing_atom.smooth_icon()
else
deferred += smoothing_atom
if (MC_TICK_CHECK)
@@ -32,8 +32,8 @@ SUBSYSTEM_DEF(icon_smooth)
can_fire = FALSE
/datum/controller/subsystem/icon_smooth/Initialize()
smooth_zlevel(1,TRUE)
smooth_zlevel(2,TRUE)
smooth_zlevel(1, TRUE)
smooth_zlevel(2, TRUE)
var/list/queue = smooth_queue
smooth_queue = list()
@@ -43,7 +43,7 @@ SUBSYSTEM_DEF(icon_smooth)
queue.len--
if(QDELETED(smoothing_atom) || !(smoothing_atom.smoothing_flags & SMOOTH_QUEUED) || smoothing_atom.z <= 2)
continue
smooth_icon(smoothing_atom)
smoothing_atom.smooth_icon()
CHECK_TICK
queue = blueprint_queue
+11 -3
View File
@@ -122,7 +122,9 @@
var/bottom_left_corner
///Smoothing variable
var/bottom_right_corner
///Type path list this atom can smooth with. If this is null and atom is smooth, it smooths only with itself.
///What smoothing groups does this atom belongs to, to match canSmoothWith. If null, nobody can smooth with it.
var/list/smoothing_groups = null
///List of smoothing groups this atom can smooth with. If this is null and atom is smooth, it smooths only with itself.
var/list/canSmoothWith = null
@@ -206,8 +208,14 @@
var/turf/T = loc
T.has_opaque_atom = TRUE // No need to recalculate it in this case, it's guaranteed to be on afterwards anyways.
if (canSmoothWith)
canSmoothWith = typelist("canSmoothWith", canSmoothWith)
if (length(smoothing_groups))
sortTim(smoothing_groups) //In case it's not properly ordered, let's avoid duplicate entries with the same values.
SET_BITFLAG_LIST(smoothing_groups)
if (length(canSmoothWith))
sortTim(canSmoothWith)
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)
// apply materials properly from the default custom_materials value
set_custom_materials(custom_materials)
+3 -2
View File
@@ -107,8 +107,9 @@
pass_flags = LETPASSTHROW
bar_material = SAND
climbable = TRUE
smoothing_flags = SMOOTH_TRUE
canSmoothWith = list(/obj/structure/barricade/sandbags, /turf/closed/wall, /turf/closed/wall/r_wall, /obj/structure/falsewall, /obj/structure/falsewall/reinforced, /turf/closed/wall/rust, /turf/closed/wall/r_wall/rust, /obj/structure/barricade/security)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_SANDBAGS)
canSmoothWith = list(SMOOTH_GROUP_SANDBAGS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SECURITY_BARRICADE)
/obj/structure/barricade/security
@@ -53,8 +53,9 @@
name = "dirt"
desc = "Someone should clean that up."
icon_state = "dirt"
canSmoothWith = list(/obj/effect/decal/cleanable/dirt, /turf/closed/wall, /obj/structure/falsewall)
smoothing_flags = NONE
smoothing_groups = list(SMOOTH_GROUP_CLEANABLE_DIRT)
canSmoothWith = list(SMOOTH_GROUP_CLEANABLE_DIRT, SMOOTH_GROUP_WALLS)
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
beauty = -75
@@ -62,7 +63,7 @@
. = ..()
var/turf/T = get_turf(src)
if(T.tiled_dirt)
smoothing_flags = SMOOTH_MORE
smoothing_flags = SMOOTH_CORNERS
icon = 'icons/effects/dirt.dmi'
icon_state = ""
QUEUE_SMOOTH(src)
+10 -6
View File
@@ -57,9 +57,10 @@
density = TRUE
opacity = 1
anchored = TRUE
canSmoothWith = list(/obj/structure/alien/resin)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN)
canSmoothWith = list(SMOOTH_GROUP_ALIEN_RESIN)
max_integrity = 200
smoothing_flags = SMOOTH_TRUE
var/resintype = null
CanAtmosPass = ATMOS_PASS_DENSITY
@@ -79,7 +80,8 @@
icon = 'icons/obj/smooth_structures/alien/resin_wall.dmi'
icon_state = "smooth" //same as resin, but consistency ho!
resintype = "wall"
canSmoothWith = list(/obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane)
smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN, SMOOTH_GROUP_ALIEN_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ALIEN_WALLS)
/obj/structure/alien/resin/wall/BlockSuperconductivity()
return 1
@@ -92,7 +94,8 @@
opacity = 0
max_integrity = 160
resintype = "membrane"
canSmoothWith = list(/obj/structure/alien/resin/wall, /obj/structure/alien/resin/membrane)
smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN, SMOOTH_GROUP_ALIEN_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ALIEN_WALLS)
/obj/structure/alien/resin/attack_paw(mob/user)
return attack_hand(user)
@@ -113,8 +116,9 @@
plane = FLOOR_PLANE
icon_state = "weeds"
max_integrity = 15
canSmoothWith = list(/obj/structure/alien/weeds, /turf/closed/wall)
smoothing_flags = SMOOTH_MORE
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_ALIEN_RESIN, SMOOTH_GROUP_ALIEN_WEEDS)
canSmoothWith = list(SMOOTH_GROUP_ALIEN_WEEDS, SMOOTH_GROUP_WALLS)
var/last_expand = 0 //last world.time this weed expanded
var/growth_cooldown_low = 150
var/growth_cooldown_high = 200
@@ -6,8 +6,8 @@
icon = 'icons/obj/smooth_structures/alien/nest.dmi'
icon_state = "nest"
max_integrity = 120
smoothing_flags = SMOOTH_TRUE
can_be_unanchored = FALSE
smoothing_flags = SMOOTH_CORNERS
canSmoothWith = null
buildstacktype = null
flags_1 = NODECONSTRUCT_1
+30 -24
View File
@@ -11,15 +11,9 @@
density = TRUE
opacity = 1
max_integrity = 100
canSmoothWith = list(
/turf/closed/wall,
/turf/closed/wall/r_wall,
/obj/structure/falsewall,
/obj/structure/falsewall/reinforced,
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust)
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WALLS)
can_be_unanchored = FALSE
CanAtmosPass = ATMOS_PASS_DENSITY
flags_1 = RAD_PROTECT_CONTENTS_1 | RAD_NO_CONTAMINATE_1
@@ -70,7 +64,7 @@
else
if(density)
icon_state = initial(icon_state)
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
QUEUE_SMOOTH(src)
else
icon_state = "fwall_open"
@@ -163,9 +157,10 @@
icon_state = "uranium"
mineral = /obj/item/stack/sheet/mineral/uranium
walltype = /turf/closed/wall/mineral/uranium
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS)
var/active = null
var/last_event = 0
canSmoothWith = list(/obj/structure/falsewall/uranium, /turf/closed/wall/mineral/uranium)
/obj/structure/falsewall/uranium/attackby(obj/item/W, mob/user, params)
radiate()
@@ -197,7 +192,8 @@
icon_state = "gold"
mineral = /obj/item/stack/sheet/mineral/gold
walltype = /turf/closed/wall/mineral/gold
canSmoothWith = list(/obj/structure/falsewall/gold, /turf/closed/wall/mineral/gold)
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_GOLD_WALLS)
/obj/structure/falsewall/silver
name = "silver wall"
@@ -206,7 +202,8 @@
icon_state = "silver"
mineral = /obj/item/stack/sheet/mineral/silver
walltype = /turf/closed/wall/mineral/silver
canSmoothWith = list(/obj/structure/falsewall/silver, /turf/closed/wall/mineral/silver)
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SILVER_WALLS)
/obj/structure/falsewall/diamond
name = "diamond wall"
@@ -215,7 +212,8 @@
icon_state = "diamond"
mineral = /obj/item/stack/sheet/mineral/diamond
walltype = /turf/closed/wall/mineral/diamond
canSmoothWith = list(/obj/structure/falsewall/diamond, /turf/closed/wall/mineral/diamond)
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS)
canSmoothWith = list(SMOOTH_GROUP_DIAMOND_WALLS)
max_integrity = 800
/obj/structure/falsewall/plasma
@@ -225,7 +223,8 @@
icon_state = "plasma"
mineral = /obj/item/stack/sheet/mineral/plasma
walltype = /turf/closed/wall/mineral/plasma
canSmoothWith = list(/obj/structure/falsewall/plasma, /turf/closed/wall/mineral/plasma)
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASMA_WALLS)
/obj/structure/falsewall/plasma/attackby(obj/item/W, mob/user, params)
if(W.get_temperature() > 300)
@@ -253,7 +252,8 @@
icon_state = "bananium"
mineral = /obj/item/stack/sheet/mineral/bananium
walltype = /turf/closed/wall/mineral/bananium
canSmoothWith = list(/obj/structure/falsewall/bananium, /turf/closed/wall/mineral/bananium)
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS)
/obj/structure/falsewall/sandstone
@@ -263,7 +263,8 @@
icon_state = "sandstone"
mineral = /obj/item/stack/sheet/mineral/sandstone
walltype = /turf/closed/wall/mineral/sandstone
canSmoothWith = list(/obj/structure/falsewall/sandstone, /turf/closed/wall/mineral/sandstone)
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SANDSTONE_WALLS)
/obj/structure/falsewall/wood
name = "wooden wall"
@@ -272,7 +273,8 @@
icon_state = "wood"
mineral = /obj/item/stack/sheet/mineral/wood
walltype = /turf/closed/wall/mineral/wood
canSmoothWith = list(/obj/structure/falsewall/wood, /turf/closed/wall/mineral/wood)
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
/obj/structure/falsewall/iron
name = "rough metal wall"
@@ -282,7 +284,8 @@
mineral = /obj/item/stack/rods
mineral_amount = 5
walltype = /turf/closed/wall/mineral/iron
canSmoothWith = list(/obj/structure/falsewall/iron, /turf/closed/wall/mineral/iron)
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS)
canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS)
/obj/structure/falsewall/abductor
name = "alien wall"
@@ -291,7 +294,8 @@
icon_state = "abductor"
mineral = /obj/item/stack/sheet/mineral/abductor
walltype = /turf/closed/wall/mineral/abductor
canSmoothWith = list(/obj/structure/falsewall/abductor, /turf/closed/wall/mineral/abductor)
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS)
/obj/structure/falsewall/titanium
name = "wall"
@@ -300,8 +304,9 @@
icon_state = "shuttle"
mineral = /obj/item/stack/sheet/mineral/titanium
walltype = /turf/closed/wall/mineral/titanium
smoothing_flags = SMOOTH_MORE
canSmoothWith = list(/turf/closed/wall/mineral/titanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/shuttle, /obj/structure/shuttle/engine/heater)
smoothing_flags = SMOOTH_CORNERS
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"
@@ -310,5 +315,6 @@
icon_state = "shuttle"
mineral = /obj/item/stack/sheet/mineral/plastitanium
walltype = /turf/closed/wall/mineral/plastitanium
smoothing_flags = SMOOTH_MORE
canSmoothWith = list(/turf/closed/wall/mineral/plastitanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/shuttle, /obj/structure/shuttle/engine/heater)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
+3 -2
View File
@@ -253,8 +253,9 @@
desc = "A large bushy hedge."
icon = 'icons/obj/smooth_structures/hedge.dmi'
icon_state = "hedge"
smoothing_flags = SMOOTH_TRUE
canSmoothWith = list(/obj/structure/fluff/hedge, /obj/structure/fluff/hedge/opaque)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_HEDGE_FLUFF)
canSmoothWith = list(SMOOTH_GROUP_HEDGE_FLUFF)
density = TRUE
anchored = TRUE
deconstructible = FALSE
+9 -9
View File
@@ -9,15 +9,13 @@
max_integrity = 50
layer = LATTICE_LAYER //under pipes
plane = FLOOR_PLANE
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_LATTICE)
canSmoothWith = list(SMOOTH_GROUP_LATTICE, SMOOTH_GROUP_OPEN_FLOOR, SMOOTH_GROUP_WALLS)
var/number_of_mats = 1
var/build_material = /obj/item/stack/rods
canSmoothWith = list(/obj/structure/lattice,
/turf/open/floor,
/turf/closed/wall,
/obj/structure/falsewall)
smoothing_flags = SMOOTH_MORE
// flags = CONDUCT_1
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN
/obj/structure/lattice/examine(mob/user)
. = ..()
@@ -76,7 +74,8 @@
icon = 'icons/obj/smooth_structures/catwalk.dmi'
icon_state = "catwalk"
number_of_mats = 2
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = null
canSmoothWith = null
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP
@@ -102,7 +101,8 @@
icon_state = "catwalk"
number_of_mats = 1
color = "#5286b9ff"
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = null
canSmoothWith = null
obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP
resistance_flags = FIRE_PROOF | LAVA_PROOF
+12 -18
View File
@@ -32,8 +32,9 @@
custom_materials = list(/datum/material/iron = 2000)
max_integrity = 100
integrity_failure = 0.33
smoothing_flags = SMOOTH_TRUE
canSmoothWith = list(/obj/structure/table, /obj/structure/table/reinforced, /obj/structure/table/greyscale)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_TABLES)
canSmoothWith = list(SMOOTH_GROUP_TABLES)
/obj/structure/table/examine(mob/user)
. = ..()
@@ -266,7 +267,8 @@
desc = "An NT brand \"Rolly poly\" rolling table. It can and will move."
anchored = FALSE
smoothing_flags = NONE
canSmoothWith = list()
smoothing_groups = null
canSmoothWith = null
icon = 'icons/obj/smooth_structures/rollingtable.dmi'
icon_state = "rollingtable"
var/list/attached_items = list()
@@ -300,6 +302,7 @@
icon = 'icons/obj/smooth_structures/glass_table.dmi'
icon_state = "glass_table"
buildstack = /obj/item/stack/sheet/glass
smoothing_groups = null
canSmoothWith = null
max_integrity = 70
resistance_flags = ACID_PROOF
@@ -382,9 +385,8 @@
buildstack = /obj/item/stack/sheet/mineral/wood
resistance_flags = FLAMMABLE
max_integrity = 70
canSmoothWith = list(/obj/structure/table/wood,
/obj/structure/table/wood/poker,
/obj/structure/table/wood/bar)
smoothing_groups = list(SMOOTH_GROUP_WOOD_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES
canSmoothWith = list(SMOOTH_GROUP_WOOD_TABLES)
/obj/structure/table/wood/narsie_act(total_override = TRUE)
if(!total_override)
@@ -408,16 +410,8 @@
frame = /obj/structure/table_frame
framestack = /obj/item/stack/rods
buildstack = /obj/item/stack/tile/carpet
canSmoothWith = list(/obj/structure/table/wood/fancy,
/obj/structure/table/wood/fancy/black,
/obj/structure/table/wood/fancy/blue,
/obj/structure/table/wood/fancy/cyan,
/obj/structure/table/wood/fancy/green,
/obj/structure/table/wood/fancy/orange,
/obj/structure/table/wood/fancy/purple,
/obj/structure/table/wood/fancy/red,
/obj/structure/table/wood/fancy/royalblack,
/obj/structure/table/wood/fancy/royalblue)
smoothing_groups = list(SMOOTH_GROUP_FANCY_WOOD_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES or SMOOTH_GROUP_WOOD_TABLES
canSmoothWith = list(SMOOTH_GROUP_FANCY_WOOD_TABLES)
var/smooth_icon = 'icons/obj/smooth_structures/fancy_table.dmi' // see Initialize()
/obj/structure/table/wood/fancy/Initialize()
@@ -483,7 +477,6 @@
icon_state = "r_table"
deconstruction_ready = 0
buildstack = /obj/item/stack/sheet/plasteel
canSmoothWith = list(/obj/structure/table/reinforced, /obj/structure/table, /obj/structure/table/reinforced/ctf)
max_integrity = 200
integrity_failure = 0.25
armor = list("melee" = 10, "bullet" = 30, "laser" = 30, "energy" = 100, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
@@ -519,7 +512,8 @@
icon_state = "brass_table"
resistance_flags = FIRE_PROOF | ACID_PROOF
buildstack = /obj/item/stack/tile/bronze
canSmoothWith = list(/obj/structure/table/bronze)
smoothing_groups = list(SMOOTH_GROUP_BRONZE_TABLES) //Don't smooth with SMOOTH_GROUP_TABLES
canSmoothWith = list(SMOOTH_GROUP_BRONZE_TABLES)
/obj/structure/table/bronze/tablepush(mob/living/user, mob/living/pushed_mob)
..()
+24 -15
View File
@@ -590,8 +590,9 @@
max_integrity = 50
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smoothing_flags = SMOOTH_TRUE
canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
glass_amount = 2
/obj/structure/window/fulltile/unanchored
@@ -604,8 +605,9 @@
max_integrity = 300
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smoothing_flags = SMOOTH_TRUE
canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
glass_amount = 2
/obj/structure/window/plasma/fulltile/unanchored
@@ -619,7 +621,9 @@
max_integrity = 1000
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
glass_amount = 2
/obj/structure/window/plasma/reinforced/fulltile/unanchored
@@ -633,9 +637,10 @@
max_integrity = 150
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smoothing_flags = SMOOTH_TRUE
state = RWINDOW_SECURE
canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
glass_amount = 2
/obj/structure/window/reinforced/fulltile/unanchored
@@ -648,15 +653,15 @@
dir = FULLTILE_WINDOW_DIR
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smoothing_flags = SMOOTH_TRUE
canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
glass_amount = 2
/obj/structure/window/reinforced/fulltile/ice
icon = 'icons/obj/smooth_structures/rice_window.dmi'
icon_state = "ice_window"
max_integrity = 150
canSmoothWith = list(/obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/plasma/fulltile, /obj/structure/window/plasma/reinforced/fulltile)
glass_amount = 2
/obj/structure/window/shuttle
@@ -672,7 +677,8 @@
reinf = TRUE
heat_resistance = 1600
armor = list("melee" = 90, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS)
canSmoothWith = null
explosion_block = 3
glass_type = /obj/item/stack/sheet/titaniumglass
@@ -700,7 +706,8 @@
flags_1 = PREVENT_CLICK_UNDER_1
heat_resistance = 1600
armor = list("melee" = 95, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = null
explosion_block = 3
damage_deflection = 11 //The same as normal reinforced windows.3
@@ -722,8 +729,9 @@
max_integrity = 15
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smoothing_flags = SMOOTH_TRUE
canSmoothWith = list(/obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_PAPERFRAME)
canSmoothWith = list(SMOOTH_GROUP_PAPERFRAME)
glass_amount = 2
glass_type = /obj/item/stack/sheet/paperframes
heat_resistance = 233
@@ -808,7 +816,8 @@
/obj/structure/window/bronze/fulltile
icon_state = "clockwork_window"
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = null
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
+14 -9
View File
@@ -50,7 +50,7 @@
icon = 'icons/turf/walls/sandstone_wall.dmi'
icon_state = "sandstone"
baseturfs = /turf/closed/indestructible/sandstone
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
/turf/closed/indestructible/oldshuttle/corner
icon_state = "corner"
@@ -79,12 +79,14 @@
/turf/closed/indestructible/riveted
icon = 'icons/turf/walls/riveted.dmi'
icon_state = "riveted"
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
/turf/closed/indestructible/syndicate
icon = 'icons/turf/walls/plastitanium_wall.dmi'
icon_state = "map-shuttle"
smoothing_flags = SMOOTH_MORE
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
/turf/closed/indestructible/riveted/uranium
icon = 'icons/turf/walls/uranium_wall.dmi'
@@ -99,7 +101,9 @@
/turf/closed/indestructible/wood
icon = 'icons/turf/walls/wood_wall.dmi'
icon_state = "wood"
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
/turf/closed/indestructible/abductor
icon_state = "alien1"
@@ -111,7 +115,7 @@
name = "window"
icon_state = "fake_window"
opacity = 0
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
icon = 'icons/obj/smooth_structures/reinforced_window.dmi'
/turf/closed/indestructible/fakeglass/Initialize()
@@ -124,7 +128,7 @@
name = "window"
icon_state = "plastitanium_window"
opacity = 0
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
icon = 'icons/obj/smooth_structures/plastitanium_window.dmi'
/turf/closed/indestructible/opsglass/Initialize()
@@ -161,8 +165,8 @@
/turf/closed/indestructible/rock/snow/ice/ore
icon = 'icons/turf/walls/icerock_wall.dmi'
icon_state = "icerock"
smoothing_flags = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = list (/turf/closed)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
pixel_x = -4
pixel_y = -4
@@ -191,7 +195,8 @@
desc = "A thick, seemingly indestructible stone wall."
icon = 'icons/turf/walls/boss_wall.dmi'
icon_state = "wall"
canSmoothWith = list(/turf/closed/indestructible/riveted/boss, /turf/closed/indestructible/riveted/boss/see_through)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_BOSS_WALLS)
canSmoothWith = list(SMOOTH_GROUP_BOSS_WALLS)
explosion_block = 50
baseturfs = /turf/closed/indestructible/riveted/boss
+14 -15
View File
@@ -5,8 +5,9 @@
icon = 'icons/turf/mining.dmi'
icon_state = "rock"
var/smooth_icon = 'icons/turf/smoothrocks.dmi'
smoothing_flags = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = null
smoothing_flags = SMOOTH_CORNERS | 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
initial_gas_mix = AIRLESS_ATMOS
opacity = 1
@@ -22,13 +23,12 @@
var/defer_change = 0
/turf/closed/mineral/Initialize()
if (!canSmoothWith)
canSmoothWith = list(/turf/closed/mineral, /turf/closed/indestructible)
. = ..()
var/matrix/M = new
M.Translate(-4, -4)
transform = M
icon = smooth_icon
. = ..()
/turf/closed/mineral/proc/Spread_Vein()
var/spreadChance = initial(mineralType.spreadChance)
@@ -254,8 +254,8 @@
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/mountain_wall.dmi'
icon_state = "mountainrock"
smoothing_flags = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = list (/turf/closed)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
defer_change = TRUE
environment_type = "snow_cavern"
turf_type = /turf/open/floor/plating/asteroid/snow/icemoon
@@ -323,8 +323,8 @@
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/mountain_wall.dmi'
icon_state = "mountainrock"
smoothing_flags = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = list (/turf/closed)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
defer_change = TRUE
environment_type = "snow"
turf_type = /turf/open/floor/plating/asteroid/snow/icemoon
@@ -574,8 +574,8 @@
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/rock_wall.dmi'
icon_state = "rock2"
smoothing_flags = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = list (/turf/closed)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
baseturfs = /turf/open/floor/plating/ashplanet/wateryrock
initial_gas_mix = OPENTURF_LOW_PRESSURE
environment_type = "waste"
@@ -587,8 +587,8 @@
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/mountain_wall.dmi'
icon_state = "mountainrock"
smoothing_flags = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = list (/turf/closed)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
baseturfs = /turf/open/floor/plating/asteroid/snow
initial_gas_mix = FROZEN_ATMOS
environment_type = "snow"
@@ -605,8 +605,7 @@
icon = 'icons/turf/mining.dmi'
smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
icon_state = "icerock"
smoothing_flags = SMOOTH_MORE|SMOOTH_BORDER
canSmoothWith = list (/turf/closed)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
baseturfs = /turf/open/floor/plating/asteroid/snow/ice
environment_type = "snow_cavern"
turf_type = /turf/open/floor/plating/asteroid/snow/ice
@@ -3,8 +3,9 @@
desc = "A huge chunk of material used to separate rooms."
icon = 'icons/turf/walls/materialwall.dmi'
icon_state = "wall"
canSmoothWith = list(/turf/closed/wall/material)
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
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
/turf/closed/wall/material/break_wall()
+36 -24
View File
@@ -2,10 +2,10 @@
name = "mineral wall"
desc = "This shouldn't exist"
icon_state = ""
smoothing_flags = SMOOTH_CORNERS
canSmoothWith = null
var/last_event = 0
var/active = null
canSmoothWith = null
smoothing_flags = SMOOTH_TRUE
/turf/closed/wall/mineral/gold
name = "gold wall"
@@ -14,7 +14,8 @@
icon_state = "gold"
sheet_type = /obj/item/stack/sheet/mineral/gold
explosion_block = 0 //gold is a soft metal you dingus.
canSmoothWith = list(/turf/closed/wall/mineral/gold, /obj/structure/falsewall/gold)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_GOLD_WALLS)
/turf/closed/wall/mineral/silver
name = "silver wall"
@@ -22,7 +23,8 @@
icon = 'icons/turf/walls/silver_wall.dmi'
icon_state = "silver"
sheet_type = /obj/item/stack/sheet/mineral/silver
canSmoothWith = list(/turf/closed/wall/mineral/silver, /obj/structure/falsewall/silver)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SILVER_WALLS)
/turf/closed/wall/mineral/diamond
name = "diamond wall"
@@ -32,7 +34,8 @@
sheet_type = /obj/item/stack/sheet/mineral/diamond
slicing_duration = 200 //diamond wall takes twice as much time to slice
explosion_block = 3
canSmoothWith = list(/turf/closed/wall/mineral/diamond, /obj/structure/falsewall/diamond)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS)
canSmoothWith = list(SMOOTH_GROUP_DIAMOND_WALLS)
/turf/closed/wall/mineral/diamond/hulk_recoil(obj/item/bodypart/arm, mob/living/carbon/human/hulkman, damage = 41)
return ..()
@@ -43,7 +46,8 @@
icon = 'icons/turf/walls/bananium_wall.dmi'
icon_state = "bananium"
sheet_type = /obj/item/stack/sheet/mineral/bananium
canSmoothWith = list(/turf/closed/wall/mineral/bananium, /obj/structure/falsewall/bananium)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS)
/turf/closed/wall/mineral/sandstone
name = "sandstone wall"
@@ -52,7 +56,8 @@
icon_state = "sandstone"
sheet_type = /obj/item/stack/sheet/mineral/sandstone
explosion_block = 0
canSmoothWith = list(/turf/closed/wall/mineral/sandstone, /obj/structure/falsewall/sandstone)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS)
canSmoothWith = list(SMOOTH_GROUP_SANDSTONE_WALLS)
/turf/closed/wall/mineral/uranium
article = "a"
@@ -61,7 +66,8 @@
icon = 'icons/turf/walls/uranium_wall.dmi'
icon_state = "uranium"
sheet_type = /obj/item/stack/sheet/mineral/uranium
canSmoothWith = list(/turf/closed/wall/mineral/uranium, /obj/structure/falsewall/uranium)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS)
/turf/closed/wall/mineral/uranium/proc/radiate()
if(!active)
@@ -97,7 +103,8 @@
icon_state = "plasma"
sheet_type = /obj/item/stack/sheet/mineral/plasma
thermal_conductivity = 0.04
canSmoothWith = list(/turf/closed/wall/mineral/plasma, /obj/structure/falsewall/plasma)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASMA_WALLS)
/turf/closed/wall/mineral/plasma/attackby(obj/item/W, mob/user, params)
if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite
@@ -136,7 +143,8 @@
sheet_type = /obj/item/stack/sheet/mineral/wood
hardness = 70
explosion_block = 0
canSmoothWith = list(/turf/closed/wall/mineral/wood, /obj/structure/falsewall/wood, /turf/closed/wall/mineral/wood/nonmetal)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
/turf/closed/wall/mineral/wood/attackby(obj/item/W, mob/user)
if(W.get_sharpness() && W.force)
@@ -155,7 +163,6 @@
desc = "A solidly wooden wall. It's a bit weaker than a wall made with metal."
girder_type = /obj/structure/barricade/wooden
hardness = 50
canSmoothWith = list(/turf/closed/wall/mineral/wood, /obj/structure/falsewall/wood, /turf/closed/wall/mineral/wood/nonmetal)
/turf/closed/wall/mineral/iron
name = "rough metal wall"
@@ -163,7 +170,8 @@
icon = 'icons/turf/walls/iron_wall.dmi'
icon_state = "iron"
sheet_type = /obj/item/stack/rods
canSmoothWith = list(/turf/closed/wall/mineral/iron, /obj/structure/falsewall/iron)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS)
canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS)
/turf/closed/wall/mineral/snow
name = "packed snow wall"
@@ -187,11 +195,12 @@
desc = "A wall with alien alloy plating."
icon = 'icons/turf/walls/abductor_wall.dmi'
icon_state = "abductor"
smoothing_flags = SMOOTH_TRUE|SMOOTH_DIAGONAL
sheet_type = /obj/item/stack/sheet/mineral/abductor
slicing_duration = 200 //alien wall takes twice as much time to slice
explosion_block = 3
canSmoothWith = list(/turf/closed/wall/mineral/abductor, /obj/structure/falsewall/abductor)
smoothing_flags = SMOOTH_CORNERS|SMOOTH_DIAGONAL
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS)
canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS)
/////////////////////Titanium walls/////////////////////
@@ -204,14 +213,15 @@
flags_1 = CAN_BE_DIRTY_1
flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD
sheet_type = /obj/item/stack/sheet/mineral/titanium
smoothing_flags = SMOOTH_MORE|SMOOTH_DIAGONAL
canSmoothWith = list(/turf/closed/wall/mineral/titanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/shuttle, /obj/structure/shuttle/engine/heater, /obj/structure/falsewall/titanium)
smoothing_flags = SMOOTH_CORNERS | 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)
/turf/closed/wall/mineral/titanium/rust_heretic_act()
return // titanium does not rust
/turf/closed/wall/mineral/titanium/nodiagonal
smoothing_flags = SMOOTH_MORE
smoothing_flags = SMOOTH_CORNERS
icon_state = "map-shuttle_nd"
/turf/closed/wall/mineral/titanium/nosmooth
@@ -251,14 +261,15 @@
desc = "An easily-compressable wall used for temporary shelter."
icon = 'icons/turf/walls/survival_pod_walls.dmi'
icon_state = "smooth"
smoothing_flags = SMOOTH_MORE|SMOOTH_DIAGONAL
canSmoothWith = list(/turf/closed/wall/mineral/titanium/survival, /obj/machinery/door/airlock, /obj/structure/window/fulltile, /obj/structure/window/reinforced/fulltile, /obj/structure/window/reinforced/tinted/fulltile, /obj/structure/window/shuttle, /obj/structure/shuttle/engine)
smoothing_flags = SMOOTH_CORNERS | 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_MORE
smoothing_flags = SMOOTH_CORNERS
/turf/closed/wall/mineral/titanium/survival/pod
canSmoothWith = list(/turf/closed/wall/mineral/titanium/survival, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_SURVIVAL_TIANIUM_POD)
canSmoothWith = list(SMOOTH_GROUP_SURVIVAL_TIANIUM_POD)
/////////////////////Plastitanium walls/////////////////////
@@ -269,14 +280,15 @@
icon_state = "map-shuttle"
explosion_block = 4
sheet_type = /obj/item/stack/sheet/mineral/plastitanium
smoothing_flags = SMOOTH_MORE|SMOOTH_DIAGONAL
canSmoothWith = list(/turf/closed/wall/mineral/plastitanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/plasma/reinforced/plastitanium, /obj/structure/shuttle/engine, /obj/structure/falsewall/plastitanium)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_DIAGONAL
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS)
canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
/turf/closed/wall/mineral/plastitanium/rust_heretic_act()
return // plastitanium does not rust
/turf/closed/wall/mineral/plastitanium/nodiagonal
smoothing_flags = SMOOTH_MORE
smoothing_flags = SMOOTH_CORNERS
icon_state = "map-shuttle_nd"
/turf/closed/wall/mineral/plastitanium/nosmooth
+1 -1
View File
@@ -3,8 +3,8 @@
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
canSmoothWith = null
smoothing_flags = SMOOTH_MORE
sheet_type = /obj/item/stack/sheet/runed_metal
sheet_amount = 1
girder_type = /obj/structure/girder/cult
+5 -4
View File
@@ -199,7 +199,7 @@
smoothing_flags = NONE
clear_smooth_overlays()
else
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
QUEUE_SMOOTH_NEIGHBORS(src)
QUEUE_SMOOTH(src)
@@ -237,14 +237,15 @@
icon_state = "map-shuttle"
explosion_block = 20
sheet_type = /obj/item/stack/sheet/mineral/plastitanium
smoothing_flags = SMOOTH_MORE|SMOOTH_DIAGONAL
canSmoothWith = list(/turf/closed/wall/r_wall/syndicate, /turf/closed/wall/mineral/plastitanium, /obj/machinery/door/airlock/shuttle, /obj/machinery/door/airlock, /obj/structure/window/plasma/reinforced/plastitanium, /obj/structure/shuttle/engine, /obj/structure/falsewall/plastitanium)
smoothing_flags = SMOOTH_CORNERS | 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/wall/r_wall/syndicate/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
return FALSE
/turf/closed/wall/r_wall/syndicate/nodiagonal
smoothing_flags = SMOOTH_MORE
smoothing_flags = SMOOTH_CORNERS
icon_state = "map-shuttle_nd"
/turf/closed/wall/r_wall/syndicate/nosmooth
+4 -9
View File
@@ -14,6 +14,10 @@
flags_ricochet = RICOCHET_HARD
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WALLS)
///lower numbers are harder. Used to determine the probability of a hulk smashing through.
var/hardness = 40
var/slicing_duration = 100 //default time taken to slice the wall
@@ -21,15 +25,6 @@
var/sheet_amount = 2
var/girder_type = /obj/structure/girder
canSmoothWith = list(
/turf/closed/wall,
/turf/closed/wall/r_wall,
/obj/structure/falsewall,
/obj/structure/falsewall/reinforced,
/turf/closed/wall/rust,
/turf/closed/wall/r_wall/rust)
smoothing_flags = SMOOTH_TRUE
var/list/dent_decals
/turf/closed/wall/Initialize(mapload)
+1 -1
View File
@@ -122,7 +122,7 @@
icon = 'icons/turf/floors/hierophant_floor.dmi'
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
baseturfs = /turf/open/indestructible/hierophant
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
tiled_dirt = FALSE
/turf/open/indestructible/hierophant/two
+3 -2
View File
@@ -3,10 +3,11 @@
name = "chasm"
desc = "Watch your step."
baseturfs = /turf/open/chasm
smoothing_flags = SMOOTH_TRUE | SMOOTH_BORDER | SMOOTH_MORE
icon = 'icons/turf/floors/chasms.dmi'
icon_state = "smooth"
canSmoothWith = list(/turf/open/floor/fakepit, /turf/open/chasm)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_TURF_CHASM)
canSmoothWith = list(SMOOTH_GROUP_TURF_CHASM)
density = TRUE //This will prevent hostile mobs from pathing into chasms, while the canpass override will still let it function like an open turf
bullet_bounce_sound = null //abandon all hope ye who enter
+24 -13
View File
@@ -176,8 +176,9 @@
icon_state = "carpet"
floor_tile = /obj/item/stack/tile/carpet
broken_states = list("damaged")
smoothing_flags = SMOOTH_TRUE
canSmoothWith = list(/turf/open/floor/carpet, /turf/open/floor/carpet/airless)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET)
canSmoothWith = list(SMOOTH_GROUP_CARPET)
flags_1 = NONE
bullet_bounce_sound = null
footstep = FOOTSTEP_CARPET
@@ -208,47 +209,56 @@
/turf/open/floor/carpet/black
icon = 'icons/turf/floors/carpet_black.dmi'
floor_tile = /obj/item/stack/tile/carpet/black
canSmoothWith = list(/turf/open/floor/carpet/black, /turf/open/floor/carpet/airless)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_BLACK)
canSmoothWith = list(SMOOTH_GROUP_CARPET_BLACK)
/turf/open/floor/carpet/blue
icon = 'icons/turf/floors/carpet_blue.dmi'
floor_tile = /obj/item/stack/tile/carpet/blue
canSmoothWith = list(/turf/open/floor/carpet/blue, /turf/open/floor/carpet/blue/airless)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_BLUE)
canSmoothWith = list(SMOOTH_GROUP_CARPET_BLUE)
/turf/open/floor/carpet/cyan
icon = 'icons/turf/floors/carpet_cyan.dmi'
floor_tile = /obj/item/stack/tile/carpet/cyan
canSmoothWith = list(/turf/open/floor/carpet/cyan, /turf/open/floor/carpet/cyan/airless)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_CYAN)
canSmoothWith = list(SMOOTH_GROUP_CARPET_CYAN)
/turf/open/floor/carpet/green
icon = 'icons/turf/floors/carpet_green.dmi'
floor_tile = /obj/item/stack/tile/carpet/green
canSmoothWith = list(/turf/open/floor/carpet/green, /turf/open/floor/carpet/green/airless)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_GREEN)
canSmoothWith = list(SMOOTH_GROUP_CARPET_GREEN)
/turf/open/floor/carpet/orange
icon = 'icons/turf/floors/carpet_orange.dmi'
floor_tile = /obj/item/stack/tile/carpet/orange
canSmoothWith = list(/turf/open/floor/carpet/orange, /turf/open/floor/carpet/orange/airless)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_ORANGE)
canSmoothWith = list(SMOOTH_GROUP_CARPET_ORANGE)
/turf/open/floor/carpet/purple
icon = 'icons/turf/floors/carpet_purple.dmi'
floor_tile = /obj/item/stack/tile/carpet/purple
canSmoothWith = list(/turf/open/floor/carpet/purple, /turf/open/floor/carpet/purple/airless)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_PURPLE)
canSmoothWith = list(SMOOTH_GROUP_CARPET_PURPLE)
/turf/open/floor/carpet/red
icon = 'icons/turf/floors/carpet_red.dmi'
floor_tile = /obj/item/stack/tile/carpet/red
canSmoothWith = list(/turf/open/floor/carpet/red, /turf/open/floor/carpet/red/airless)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_RED)
canSmoothWith = list(SMOOTH_GROUP_CARPET_RED)
/turf/open/floor/carpet/royalblack
icon = 'icons/turf/floors/carpet_royalblack.dmi'
floor_tile = /obj/item/stack/tile/carpet/royalblack
canSmoothWith = list(/turf/open/floor/carpet/royalblack, /turf/open/floor/carpet/royalblack/airless)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_ROYAL_BLACK)
canSmoothWith = list(SMOOTH_GROUP_CARPET_ROYAL_BLACK)
/turf/open/floor/carpet/royalblue
icon = 'icons/turf/floors/carpet_royalblue.dmi'
floor_tile = /obj/item/stack/tile/carpet/royalblue
canSmoothWith = list(/turf/open/floor/carpet/royalblue, /turf/open/floor/carpet/royalblue/airless)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_CARPET_ROYAL_BLUE)
canSmoothWith = list(SMOOTH_GROUP_CARPET_ROYAL_BLUE)
//*****Airless versions of all of the above.*****
/turf/open/floor/carpet/airless
@@ -304,8 +314,9 @@
/turf/open/floor/fakepit
desc = "A clever illusion designed to look like a bottomless pit."
smoothing_flags = SMOOTH_TRUE | SMOOTH_BORDER | SMOOTH_MORE
canSmoothWith = list(/turf/open/floor/fakepit)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_TURF_CHASM)
canSmoothWith = list(SMOOTH_GROUP_TURF_CHASM)
icon = 'icons/turf/floors/Chasms.dmi'
icon_state = "smooth"
tiled_dirt = FALSE
@@ -47,7 +47,7 @@
gender = PLURAL
name = "ash"
icon_state = "ash"
smoothing_flags = SMOOTH_MORE|SMOOTH_BORDER
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
var/smooth_icon = 'icons/turf/floors/ash.dmi'
desc = "The ground is covered in volcanic ash."
baseturfs = /turf/open/floor/plating/ashplanet/wateryrock //I assume this will be a chasm eventually, once this becomes an actual surface
@@ -78,7 +78,8 @@
return
/turf/open/floor/plating/ashplanet/ash
canSmoothWith = list(/turf/open/floor/plating/ashplanet/ash, /turf/closed)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_ASH)
canSmoothWith = list(SMOOTH_GROUP_FLOOR_ASH, SMOOTH_GROUP_CLOSED_TURFS)
layer = HIGH_TURF_LAYER
slowdown = 1
@@ -88,7 +89,8 @@
icon_state = "rockyash"
smooth_icon = 'icons/turf/floors/rocky_ash.dmi'
layer = MID_TURF_LAYER
canSmoothWith = list(/turf/open/floor/plating/ashplanet/rocky, /turf/closed)
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_ASH_ROCKY)
canSmoothWith = list(SMOOTH_GROUP_FLOOR_ASH_ROCKY, SMOOTH_GROUP_CLOSED_TURFS)
footstep = FOOTSTEP_FLOOR
barefootstep = FOOTSTEP_HARD_BAREFOOT
clawfootstep = FOOTSTEP_HARD_CLAW
@@ -209,8 +211,9 @@
/turf/open/floor/plating/ice/smooth
icon_state = "smooth"
smoothing_flags = SMOOTH_MORE | SMOOTH_BORDER
canSmoothWith = list(/turf/open/floor/plating/ice/smooth, /turf/open/floor/plating/ice, /turf/open/floor/plating/ice/colder)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_ICE)
canSmoothWith = list(SMOOTH_GROUP_FLOOR_ICE)
/turf/open/floor/plating/ice/colder
temperature = 140
@@ -249,8 +252,9 @@
initial_gas_mix = ICEMOON_DEFAULT_ATMOS
/turf/open/floor/plating/snowed/smoothed
smoothing_flags = SMOOTH_MORE | SMOOTH_BORDER
canSmoothWith = list(/turf/open/floor/plating/snowed/smoothed, /turf/open/floor/plating/snowed)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_SNOWED)
canSmoothWith = list(SMOOTH_GROUP_FLOOR_SNOWED)
planetary_atmos = TRUE
icon = 'icons/turf/floors/snow_turf.dmi'
icon_state = "smooth"
+3 -2
View File
@@ -182,8 +182,9 @@
baseturfs = /turf/open/lava/smooth
icon = 'icons/turf/floors/lava.dmi'
icon_state = "unsmooth"
smoothing_flags = SMOOTH_MORE | SMOOTH_BORDER
canSmoothWith = list(/turf/open/lava/smooth)
smoothing_flags = SMOOTH_CORNERS | SMOOTH_BORDER
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_LAVA)
canSmoothWith = list(SMOOTH_GROUP_FLOOR_LAVA)
/turf/open/lava/smooth/lava_land_surface
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
+9
View File
@@ -41,6 +41,15 @@
stack_trace("Warning: [src]([type]) initialized multiple times!")
flags_1 |= INITIALIZED_1
if (length(smoothing_groups))
sortTim(smoothing_groups) //In case it's not properly ordered, let's avoid duplicate entries with the same values.
SET_BITFLAG_LIST(smoothing_groups)
if (length(canSmoothWith))
sortTim(canSmoothWith)
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)
var/area/A = loc
if(!IS_DYNAMIC_LIGHTING(src) && IS_DYNAMIC_LIGHTING(A))
add_overlay(/obj/effect/fullbright)
+3 -2
View File
@@ -56,8 +56,9 @@
desc = "Dont jump on it, or do, I'm not your mom."
icon = 'icons/turf/floors/glass.dmi'
icon_state = "floor_glass"
smoothing_flags = SMOOTH_MORE
canSmoothWith = list(/turf/open/transparent/glass, /turf/open/transparent/glass/reinforced)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS)
canSmoothWith = list(SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS)
footstep = FOOTSTEP_PLATING
barefootstep = FOOTSTEP_HARD_BAREFOOT
clawfootstep = FOOTSTEP_HARD_CLAW
+11 -1
View File
@@ -61,8 +61,18 @@ GLOBAL_LIST_EMPTY(station_turfs)
assemble_baseturfs()
levelupdate()
if(smoothing_flags)
if (length(smoothing_groups))
sortTim(smoothing_groups) //In case it's not properly ordered, let's avoid duplicate entries with the same values.
SET_BITFLAG_LIST(smoothing_groups)
if (length(canSmoothWith))
sortTim(canSmoothWith)
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)
QUEUE_SMOOTH(src)
visibilityChanged()
for(var/atom/movable/AM in src)
+1 -1
View File
@@ -105,7 +105,7 @@
icon = 'icons/turf/floors/carpet.dmi'
icon_state = "carpet"
floor_tile = /obj/item/stack/tile/carpet
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
canSmoothWith = null
bullet_bounce_sound = null
tiled_dirt = FALSE
@@ -87,8 +87,9 @@
name = "pod window"
icon = 'icons/obj/smooth_structures/pod_window.dmi'
icon_state = "smooth"
smoothing_flags = SMOOTH_MORE
canSmoothWith = list(/turf/closed/wall/mineral/titanium/survival, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/shuttle/survival_pod)
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_SURVIVAL_TIANIUM_POD)
canSmoothWith = list(SMOOTH_GROUP_SURVIVAL_TIANIUM_POD)
/obj/structure/window/shuttle/survival_pod/spawner/north
dir = NORTH
@@ -519,7 +519,7 @@ Difficulty: Hard
icon_state = "wall"
light_range = MINIMUM_USEFUL_LIGHT_RANGE
duration = 100
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
/obj/effect/temp_visual/hierophant/wall/Initialize(mapload, new_caster)
. = ..()
@@ -304,7 +304,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
icon = 'icons/turf/walls/hierophant_wall_temp.dmi'
icon_state = "wall"
duration = 50
smoothing_flags = SMOOTH_TRUE
smoothing_flags = SMOOTH_CORNERS
layer = BELOW_MOB_LAYER
color = rgb(255,0,0)
light_range = MINIMUM_USEFUL_LIGHT_RANGE
@@ -14,11 +14,11 @@
icon = 'icons/effects/spacevines.dmi'
icon_state = "flower_bud"
layer = SPACEVINE_MOB_LAYER
opacity = 0
canSmoothWith = list()
opacity = FALSE
canSmoothWith = null
smoothing_flags = NONE
/// The amount of time it takes to create a venus human trap, in deciseconds
var/growth_time = 1200
/// The amount of time it takes to create a venus human trap.
var/growth_time = 120 SECONDS
/obj/structure/alien/resin/flower_bud_enemy/Initialize()
. = ..()
@@ -198,7 +198,8 @@ GLOBAL_VAR_INIT(hhmysteryRoomNumber, 1337)
name = "hotel wall"
desc = "A wall designed to protect the security of the hotel's guests."
icon_state = "hotelwall"
canSmoothWith = list(/turf/closed/indestructible/hotelwall)
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_HOTEL_WALLS)
canSmoothWith = list(SMOOTH_GROUP_HOTEL_WALLS)
explosion_block = INFINITY
/turf/open/indestructible/hotelwood
+2
View File
@@ -53,6 +53,7 @@
#include "code\__DEFINES\footsteps.dm"
#include "code\__DEFINES\forensics.dm"
#include "code\__DEFINES\hud.dm"
#include "code\__DEFINES\icon_smoothing.dm"
#include "code\__DEFINES\interaction_flags.dm"
#include "code\__DEFINES\inventory.dm"
#include "code\__DEFINES\is_helpers.dm"
@@ -127,6 +128,7 @@
#include "code\__HELPERS\_string_lists.dm"
#include "code\__HELPERS\areas.dm"
#include "code\__HELPERS\AStar.dm"
#include "code\__HELPERS\bitflag_lists.dm"
#include "code\__HELPERS\chat.dm"
#include "code\__HELPERS\cmp.dm"
#include "code\__HELPERS\config.dm"