mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-29 16:18:01 +01:00
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:
@@ -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
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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)
|
||||
..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user