diff --git a/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm b/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm
index 8ee03bb502e..ff9f004c337 100644
--- a/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm
+++ b/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm
@@ -1558,7 +1558,7 @@
/turf/open/floor/grass/fairy,
/area/ruin/space/has_grav/powered/hilbertresearchfacility)
"Iy" = (
-/turf/closed/indestructible/riveted/plastinum/nodiagonal,
+/turf/closed/indestructible/riveted/plastinum,
/area/ruin/space/has_grav/powered/hilbertresearchfacility/secretroom)
"ID" = (
/obj/structure/table/reinforced/rglass,
@@ -1878,7 +1878,7 @@
/turf/open/floor/iron/grimy,
/area/ruin/space/has_grav/powered/hilbertresearchfacility)
"Ok" = (
-/turf/closed/indestructible/riveted/plastinum/nodiagonal,
+/turf/closed/indestructible/riveted/plastinum,
/area/ruin/space/has_grav/powered/hilbertresearchfacility)
"OA" = (
/obj/machinery/door/airlock/titanium,
diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm
index ca0e1335144..fbea6e190dc 100644
--- a/_maps/map_files/PubbyStation/PubbyStation.dmm
+++ b/_maps/map_files/PubbyStation/PubbyStation.dmm
@@ -55550,7 +55550,7 @@
/turf/open/floor/iron/dark,
/area/service/library/artgallery)
"wCj" = (
-/obj/item/paint/paint_remover{
+/obj/item/paint_remover{
pixel_y = 8
},
/obj/structure/table/wood,
diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index 4f5d7108625..5d744d202de 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -1817,9 +1817,6 @@
},
/turf/open/floor/carpet/black,
/area/centcom/holding)
-"fg" = (
-/turf/closed/indestructible/weeb,
-/area/centcom/holding)
"fh" = (
/obj/structure/lattice/catwalk,
/obj/effect/turf_decal/stripes/line{
@@ -35748,16 +35745,16 @@ OL
pJ
pJ
pJ
-fg
+Nd
bE
Ob
zS
Nd
Nd
-fg
-fg
-fg
-fg
+Nd
+Nd
+Nd
+Nd
Nd
Nd
oZ
@@ -36005,7 +36002,7 @@ OL
pJ
pJ
pJ
-fg
+Nd
Vt
Fh
hj
@@ -36519,7 +36516,7 @@ pJ
pJ
pJ
pJ
-fg
+Nd
QA
ci
Fh
@@ -36776,7 +36773,7 @@ pJ
aU
pJ
pJ
-fg
+Nd
US
cr
Fh
@@ -36791,7 +36788,7 @@ fO
Rt
Rt
Rt
-fg
+Nd
OL
Di
Qe
@@ -37048,7 +37045,7 @@ fO
Rt
Rt
Rt
-fg
+Nd
OL
Di
Qe
@@ -37562,7 +37559,7 @@ Sn
Uy
Uy
Uy
-fg
+Nd
OL
Di
Qe
@@ -37819,7 +37816,7 @@ Fl
Uy
Cr
Uy
-fg
+Nd
OL
Di
Qe
@@ -38316,8 +38313,8 @@ Nd
Nd
Nd
Nd
-fg
-fg
+Nd
+Nd
Nd
Nd
Nd
@@ -38333,7 +38330,7 @@ Fl
Uy
Pu
Uy
-fg
+Nd
OL
Di
Qe
@@ -38590,7 +38587,7 @@ fe
Uy
rC
Uy
-fg
+Nd
OL
Di
Qe
@@ -39100,7 +39097,7 @@ fO
UU
YC
YC
-fg
+Nd
hs
pJ
pJ
@@ -39614,7 +39611,7 @@ cJ
Rv
YC
YC
-fg
+Nd
pJ
hs
pJ
@@ -39871,7 +39868,7 @@ cJ
Rv
YC
YC
-fg
+Nd
pJ
pJ
pJ
@@ -40385,7 +40382,7 @@ Px
Rv
YC
YC
-fg
+Nd
hs
pJ
pJ
@@ -40624,7 +40621,7 @@ pJ
pJ
pJ
pJ
-fg
+Nd
Zi
wX
fO
@@ -40642,7 +40639,7 @@ JK
Rv
YC
YC
-fg
+Nd
pJ
pJ
OC
@@ -40881,7 +40878,7 @@ pJ
hs
pJ
hs
-fg
+Nd
Zi
kw
eT
@@ -41138,7 +41135,7 @@ pJ
pJ
Zc
hs
-fg
+Nd
bI
fp
fO
@@ -41157,8 +41154,8 @@ Rv
YC
aA
Nd
-fg
-fg
+Nd
+Nd
Nd
pJ
pJ
@@ -42442,8 +42439,8 @@ fO
YC
aA
Nd
-fg
-fg
+Nd
+Nd
Nd
pJ
pJ
@@ -43456,8 +43453,8 @@ Nd
Nd
Nd
Nd
-fg
-fg
+Nd
+Nd
Nd
Nd
Nd
@@ -43984,8 +43981,8 @@ QL
YC
YC
Nd
-fg
-fg
+Nd
+Nd
Nd
ft
CQ
@@ -44219,18 +44216,18 @@ hh
hh
OL
Nd
-fg
+Nd
fM
-fg
Nd
-fg
-fg
-fg
-fg
Nd
-fg
-fg
-fg
+Nd
+Nd
+Nd
+Nd
+Nd
+Nd
+Nd
+Nd
Nd
eZ
YC
@@ -47050,10 +47047,10 @@ aa
aa
aa
Nd
-fg
-fg
-fg
-fg
+Nd
+Nd
+Nd
+Nd
Nd
gk
Zt
@@ -47312,9 +47309,9 @@ OL
OL
OL
Nd
-fg
-fg
-fg
+Nd
+Nd
+Nd
Nd
cE
cv
@@ -47322,9 +47319,9 @@ PD
cv
XF
Nd
-fg
-fg
-fg
+Nd
+Nd
+Nd
Nd
pJ
hs
@@ -47573,11 +47570,11 @@ OL
OL
OL
Nd
-fg
-fg
-fg
-fg
-fg
+Nd
+Nd
+Nd
+Nd
+Nd
Nd
OL
OL
@@ -47587,10 +47584,10 @@ OL
OL
OL
Nd
-fg
-fg
-fg
-fg
+Nd
+Nd
+Nd
+Nd
Nd
OL
aa
diff --git a/_maps/shuttles/emergency_casino.dmm b/_maps/shuttles/emergency_casino.dmm
index fa2f13efcab..9a9fde660f2 100644
--- a/_maps/shuttles/emergency_casino.dmm
+++ b/_maps/shuttles/emergency_casino.dmm
@@ -912,7 +912,7 @@
/obj/item/paint/violet,
/obj/item/paint/white,
/obj/item/paint/yellow,
-/obj/item/paint/paint_remover,
+/obj/item/paint_remover,
/turf/open/floor/sepia,
/area/shuttle/escape)
"yJ" = (
diff --git a/_maps/shuttles/emergency_monastery.dmm b/_maps/shuttles/emergency_monastery.dmm
index 35b87c98441..31354e92f8e 100644
--- a/_maps/shuttles/emergency_monastery.dmm
+++ b/_maps/shuttles/emergency_monastery.dmm
@@ -2090,7 +2090,7 @@
/turf/open/floor/iron/grimy,
/area/shuttle/escape)
"Dn" = (
-/obj/item/paint/paint_remover{
+/obj/item/paint_remover{
pixel_y = 8
},
/obj/structure/table/wood,
diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm
index 23722d43ce8..8ea42e3cfd5 100644
--- a/code/__DEFINES/construction.dm
+++ b/code/__DEFINES/construction.dm
@@ -6,9 +6,7 @@
#define GIRDER_NORMAL 0
#define GIRDER_REINF_STRUTS 1
#define GIRDER_REINF 2
-#define GIRDER_DISPLACED 3
-#define GIRDER_DISASSEMBLED 4
-#define GIRDER_TRAM 5
+#define GIRDER_TRAM 3
//rwall construction states
#define INTACT 0
@@ -141,3 +139,6 @@
/// How much less resources the RCD uses when reconstructing
#define RCD_MEMORY_COST_BUFF 8
+
+/// How many sheets does it cost to make a fulltile window
+#define SHEETS_FOR_FULLTILE_WINDOW 2
diff --git a/code/__DEFINES/direction_junctions.dm b/code/__DEFINES/direction_junctions.dm
new file mode 100644
index 00000000000..6a1d8a8afb8
--- /dev/null
+++ b/code/__DEFINES/direction_junctions.dm
@@ -0,0 +1,31 @@
+//Redefinitions of the diagonal directions so they can be stored in one var without conflicts
+#define NORTH_JUNCTION NORTH //(1<<0)
+#define SOUTH_JUNCTION SOUTH //(1<<1)
+#define EAST_JUNCTION EAST //(1<<2)
+#define WEST_JUNCTION WEST //(1<<3)
+#define NORTHEAST_JUNCTION (1<<4)
+#define SOUTHEAST_JUNCTION (1<<5)
+#define SOUTHWEST_JUNCTION (1<<6)
+#define NORTHWEST_JUNCTION (1<<7)
+
+#define ALL_JUNCTION_DIRECTIONS list(\
+ NORTH_JUNCTION,\
+ SOUTH_JUNCTION,\
+ EAST_JUNCTION,\
+ WEST_JUNCTION,\
+ NORTHEAST_JUNCTION,\
+ SOUTHEAST_JUNCTION,\
+ SOUTHWEST_JUNCTION,\
+ NORTHWEST_JUNCTION\
+ )
+
+DEFINE_BITFIELD(smoothing_junction, list(
+ "NORTH_JUNCTION" = NORTH_JUNCTION,
+ "SOUTH_JUNCTION" = SOUTH_JUNCTION,
+ "EAST_JUNCTION" = EAST_JUNCTION,
+ "WEST_JUNCTION" = WEST_JUNCTION,
+ "NORTHEAST_JUNCTION" = NORTHEAST_JUNCTION,
+ "SOUTHEAST_JUNCTION" = SOUTHEAST_JUNCTION,
+ "SOUTHWEST_JUNCTION" = SOUTHWEST_JUNCTION,
+ "NORTHWEST_JUNCTION" = NORTHWEST_JUNCTION,
+))
diff --git a/code/__DEFINES/greyscale.dm b/code/__DEFINES/greyscale.dm
new file mode 100644
index 00000000000..26ba210988d
--- /dev/null
+++ b/code/__DEFINES/greyscale.dm
@@ -0,0 +1,9 @@
+/* flags for greyscale config for smoothing */
+/// The config will create states for cardinal smoothing
+#define GAGS_CARDINAL_SMOOTH (1<<0)
+/// The config will create states for diagonal smoothing
+#define GAGS_DIAGONAL_SMOOTH (1<<1)
+/// This will make it so diagonal steps require both adjacent cardinal steps to make a state
+#define GAGS_DIAGONAL_NEED_ADJACENT_CARDINAL (1<<2)
+/// The common way to bitmask features all of the modes above
+#define GAGS_COMMON_BITMASKING (GAGS_CARDINAL_SMOOTH|GAGS_DIAGONAL_SMOOTH|GAGS_DIAGONAL_NEED_ADJACENT_CARDINAL)
diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm
index 8805767237f..2fd07a082d6 100644
--- a/code/__DEFINES/icon_smoothing.dm
+++ b/code/__DEFINES/icon_smoothing.dm
@@ -3,19 +3,16 @@
#define SMOOTH_CORNERS (1<<0)
/// Smoothing system in where adjacencies are calculated and used to select a pre-baked icon_state, encoded by bitmasking.
#define SMOOTH_BITMASK (1<<1)
-/// Atom has diagonal corners, with underlays under them.
-#define SMOOTH_DIAGONAL_CORNERS (1<<2)
/// Atom will smooth with the borders of the map.
-#define SMOOTH_BORDER (1<<3)
+#define SMOOTH_BORDER (1<<2)
/// Atom is currently queued to smooth.
-#define SMOOTH_QUEUED (1<<4)
+#define SMOOTH_QUEUED (1<<3)
/// Smooths with objects, and will thus need to scan turfs for contents.
-#define SMOOTH_OBJ (1<<5)
+#define SMOOTH_OBJ (1<<4)
DEFINE_BITFIELD(smoothing_flags, list(
"SMOOTH_CORNERS" = SMOOTH_CORNERS,
"SMOOTH_BITMASK" = SMOOTH_BITMASK,
- "SMOOTH_DIAGONAL_CORNERS" = SMOOTH_DIAGONAL_CORNERS,
"SMOOTH_BORDER" = SMOOTH_BORDER,
"SMOOTH_QUEUED" = SMOOTH_QUEUED,
"SMOOTH_OBJ" = SMOOTH_OBJ,
@@ -96,12 +93,10 @@ DEFINE_BITFIELD(smoothing_flags, list(
#define SMOOTH_GROUP_BAMBOO_FLOOR S_TURF(52) //![/turf/open/floor/bamboo]
#define SMOOTH_GROUP_CLOSED_TURFS S_TURF(53) ///turf/closed
-#define SMOOTH_GROUP_MATERIAL_WALLS S_TURF(54) ///turf/closed/wall/material
-#define SMOOTH_GROUP_SYNDICATE_WALLS S_TURF(55) ///turf/closed/wall/r_wall/syndicate, /turf/closed/indestructible/syndicate
-#define SMOOTH_GROUP_HOTEL_WALLS S_TURF(56) ///turf/closed/indestructible/hotelwall
-#define SMOOTH_GROUP_MINERAL_WALLS S_TURF(57) ///turf/closed/mineral, /turf/closed/indestructible
-#define SMOOTH_GROUP_BOSS_WALLS S_TURF(58) ///turf/closed/indestructible/riveted/boss
-#define SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS S_TURF(59) ///turf/closed/wall/mineral/titanium/survival
+#define SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS S_TURF(53) ///turf/closed/wall/mineral/titanium/survival
+#define SMOOTH_GROUP_HOTEL_WALLS S_TURF(54) ///turf/closed/indestructible/hotelwall
+#define SMOOTH_GROUP_MINERAL_WALLS S_TURF(55) ///turf/closed/mineral, /turf/closed/indestructible
+#define SMOOTH_GROUP_BOSS_WALLS S_TURF(56) ///turf/closed/indestructible/riveted/boss
#define MAX_S_TURF SMOOTH_GROUP_SURVIVAL_TITANIUM_WALLS //Always match this value with the one above it.
@@ -110,22 +105,8 @@ DEFINE_BITFIELD(smoothing_flags, list(
/* /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/reinforced/shuttle/survival_pod
-#define SMOOTH_GROUP_HIERO_WALL S_OBJ(15) ///obj/effect/temp_visual/elite_tumor_wall, /obj/effect/temp_visual/hierophant/wall
-#define SMOOTH_GROUP_BAMBOO_WALLS S_TURF(16) //![/turf/closed/wall/mineral/bamboo, /obj/structure/falsewall/bamboo]
-#define SMOOTH_GROUP_PLASTINUM_WALLS S_TURF(17) //![turf/closed/indestructible/riveted/plastinum]
+#define SMOOTH_GROUP_HIERO_WALL S_OBJ(1) ///obj/effect/temp_visual/elite_tumor_wall, /obj/effect/temp_visual/hierophant/wall
+#define SMOOTH_GROUP_SURVIVAL_TIANIUM_POD S_OBJ(2) ///turf/closed/wall/mineral/titanium/survival/pod, /obj/machinery/door/airlock/survival_pod, /obj/structure/window/reinforced/shuttle/survival_pod
#define SMOOTH_GROUP_PAPERFRAME S_OBJ(20) ///obj/structure/window/paperframe, /obj/structure/mineral_door/paperframe
@@ -136,8 +117,11 @@ DEFINE_BITFIELD(smoothing_flags, list(
#define SMOOTH_GROUP_LATTICE S_OBJ(30) ///obj/structure/lattice
#define SMOOTH_GROUP_CATWALK S_OBJ(31) ///obj/structure/lattice/catwalk
+#define SMOOTH_GROUP_GRILLE S_OBJ(32) ///obj/structure/grille
+#define SMOOTH_GROUP_LOW_WALL S_OBJ(33) ///obj/structure/low_wall
#define SMOOTH_GROUP_AIRLOCK S_OBJ(40) ///obj/machinery/door/airlock
+#define SMOOTH_GROUP_SHUTTERS_BLASTDOORS S_OBJ(41) ///obj/machinery/door/poddoor
#define SMOOTH_GROUP_TABLES S_OBJ(50) ///obj/structure/table
#define SMOOTH_GROUP_WOOD_TABLES S_OBJ(51) ///obj/structure/table/wood
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index a298f50d17d..d8e57293420 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -54,6 +54,8 @@ GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list(
#define isplatingturf(A) (istype(A, /turf/open/floor/plating))
+#define iswall(A) (istype(A, /turf/closed/wall))
+
#define istransparentturf(A) (HAS_TRAIT(A, TURF_Z_TRANSPARENT_TRAIT))
//Mobs
@@ -220,6 +222,8 @@ GLOBAL_LIST_INIT(turfs_openspace, typecacheof(list(
#define is_reagent_container(O) (istype(O, /obj/item/reagent_containers))
+#define isfalsewall(A) (istype(A, /obj/structure/falsewall))
+
//Assemblies
#define isassembly(O) (istype(O, /obj/item/assembly))
diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm
index f16f597a88a..c259529fd89 100644
--- a/code/__DEFINES/layers.dm
+++ b/code/__DEFINES/layers.dm
@@ -73,6 +73,7 @@
#define PROJECTILE_HIT_THRESHHOLD_LAYER 2.75 //projectiles won't hit objects at or below this layer if possible
#define TABLE_LAYER 2.8
#define GATEWAY_UNDERLAY_LAYER 2.85
+#define LOW_WALL_LAYER 2.86
#define BELOW_OBJ_LAYER 2.9
#define LOW_ITEM_LAYER 2.95
//#define OBJ_LAYER 3 //For easy recordkeeping; this is a byond define
@@ -81,6 +82,7 @@
#define ABOVE_OBJ_LAYER 3.2
#define CLOSED_BLASTDOOR_LAYER 3.3 // ABOVE WINDOWS AND DOORS
#define SHUTTER_LAYER 3.3 // HERE BE DRAGONS
+#define LOW_WALL_STRIPE_LAYER 3.25
#define ABOVE_WINDOW_LAYER 3.3
#define SIGN_LAYER 3.4
#define CORGI_ASS_PIN_LAYER 3.41
diff --git a/code/__HELPERS/icon_smoothing.dm b/code/__HELPERS/icon_smoothing.dm
index 321d943a6bf..f9f317e6424 100644
--- a/code/__HELPERS/icon_smoothing.dm
+++ b/code/__HELPERS/icon_smoothing.dm
@@ -9,43 +9,12 @@
Each atom has its own icon file with all the possible corner states. See 'smooth_wall.dmi' for a template.
- DIAGONAL SMOOTHING INSTRUCTIONS
- To make your atom smooth diagonally you need all the proper icon states (see 'smooth_wall.dmi' for a template) and
- to add the 'SMOOTH_DIAGONAL_CORNERS' flag to the atom's smoothing_flags var (in addition to either SMOOTH_TRUE or SMOOTH_MORE).
-
For turfs, what appears under the diagonal corners depends on the turf that was in the same position previously: if you make a wall on
a plating floor, you will see plating under the diagonal wall corner, if it was space, you will see space.
- If you wish to map a diagonal wall corner with a fixed underlay, you must configure the turf's 'fixed_underlay' list var, like so:
- fixed_underlay = list("icon"='icon_file.dmi', "icon_state"="iconstatename")
- A non null 'fixed_underlay' list var will skip copying the previous turf appearance and always use the list. If the list is
- not set properly, the underlay will default to regular floor plating.
-
To see an example of a diagonal wall, see '/turf/closed/wall/mineral/titanium' and its subtypes.
*/
-//Redefinitions of the diagonal directions so they can be stored in one var without conflicts
-#define NORTH_JUNCTION NORTH //(1<<0)
-#define SOUTH_JUNCTION SOUTH //(1<<1)
-#define EAST_JUNCTION EAST //(1<<2)
-#define WEST_JUNCTION WEST //(1<<3)
-#define NORTHEAST_JUNCTION (1<<4)
-#define SOUTHEAST_JUNCTION (1<<5)
-#define SOUTHWEST_JUNCTION (1<<6)
-#define NORTHWEST_JUNCTION (1<<7)
-
-DEFINE_BITFIELD(smoothing_junction, list(
- "NORTH_JUNCTION" = NORTH_JUNCTION,
- "SOUTH_JUNCTION" = SOUTH_JUNCTION,
- "EAST_JUNCTION" = EAST_JUNCTION,
- "WEST_JUNCTION" = WEST_JUNCTION,
- "NORTHEAST_JUNCTION" = NORTHEAST_JUNCTION,
- "SOUTHEAST_JUNCTION" = SOUTHEAST_JUNCTION,
- "SOUTHWEST_JUNCTION" = SOUTHWEST_JUNCTION,
- "NORTHWEST_JUNCTION" = NORTHWEST_JUNCTION,
-))
-
-
#define NO_ADJ_FOUND 0
#define ADJ_FOUND 1
#define NULLTURF_BORDER 2
@@ -156,10 +125,7 @@ DEFINE_BITFIELD(smoothing_junction, list(
if (!z)
CRASH("[type] called smooth_icon() without being on a z-level")
if(smoothing_flags & SMOOTH_CORNERS)
- if(smoothing_flags & SMOOTH_DIAGONAL_CORNERS)
- corners_diagonal_smooth(calculate_adjacencies())
- else
- corners_cardinal_smooth(calculate_adjacencies())
+ corners_cardinal_smooth(calculate_adjacencies())
else if(smoothing_flags & SMOOTH_BITMASK)
bitmask_smooth()
else
@@ -167,35 +133,6 @@ DEFINE_BITFIELD(smoothing_junction, list(
SEND_SIGNAL(src, COMSIG_ATOM_SMOOTHED_ICON)
update_appearance(~UPDATE_SMOOTHING)
-
-/atom/proc/corners_diagonal_smooth(adjacencies)
- switch(adjacencies)
- if(NORTH_JUNCTION|WEST_JUNCTION)
- replace_smooth_overlays("d-se","d-se-0")
- if(NORTH_JUNCTION|EAST_JUNCTION)
- replace_smooth_overlays("d-sw","d-sw-0")
- if(SOUTH_JUNCTION|WEST_JUNCTION)
- replace_smooth_overlays("d-ne","d-ne-0")
- if(SOUTH_JUNCTION|EAST_JUNCTION)
- replace_smooth_overlays("d-nw","d-nw-0")
-
- if(NORTH_JUNCTION|WEST_JUNCTION|NORTHWEST_JUNCTION)
- replace_smooth_overlays("d-se","d-se-1")
- if(NORTH_JUNCTION|EAST_JUNCTION|NORTHEAST_JUNCTION)
- replace_smooth_overlays("d-sw","d-sw-1")
- if(SOUTH_JUNCTION|WEST_JUNCTION|SOUTHWEST_JUNCTION)
- replace_smooth_overlays("d-ne","d-ne-1")
- if(SOUTH_JUNCTION|EAST_JUNCTION|SOUTHEAST_JUNCTION)
- replace_smooth_overlays("d-nw","d-nw-1")
-
- else
- corners_cardinal_smooth(adjacencies)
- return FALSE
-
- icon_state = ""
- return TRUE
-
-
/atom/proc/corners_cardinal_smooth(adjacencies)
var/mutable_appearance/temp_ma
@@ -361,38 +298,6 @@ DEFINE_BITFIELD(smoothing_junction, list(
icon_state = "[base_icon_state]-[smoothing_junction]"
-/turf/closed/set_smoothed_icon_state(new_junction)
- . = ..()
- if(smoothing_flags & SMOOTH_DIAGONAL_CORNERS)
- switch(new_junction)
- if(
- NORTH_JUNCTION|WEST_JUNCTION,
- NORTH_JUNCTION|EAST_JUNCTION,
- SOUTH_JUNCTION|WEST_JUNCTION,
- SOUTH_JUNCTION|EAST_JUNCTION,
- NORTH_JUNCTION|WEST_JUNCTION|NORTHWEST_JUNCTION,
- NORTH_JUNCTION|EAST_JUNCTION|NORTHEAST_JUNCTION,
- SOUTH_JUNCTION|WEST_JUNCTION|SOUTHWEST_JUNCTION,
- SOUTH_JUNCTION|EAST_JUNCTION|SOUTHEAST_JUNCTION
- )
- icon_state = "[base_icon_state]-[smoothing_junction]-d"
- if(!fixed_underlay && new_junction != .) // Mutable underlays?
- var/junction_dir = reverse_ndir(smoothing_junction)
- var/turned_adjacency = REVERSE_DIR(junction_dir)
- var/turf/neighbor_turf = get_step(src, turned_adjacency & (NORTH|SOUTH))
- var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER, plane = FLOOR_PLANE)
- if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
- neighbor_turf = get_step(src, turned_adjacency & (EAST|WEST))
-
- if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
- neighbor_turf = get_step(src, turned_adjacency)
-
- if(!neighbor_turf.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
- if(!get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency)) //if all else fails, ask our own turf
- underlay_appearance.icon = DEFAULT_UNDERLAY_ICON
- underlay_appearance.icon_state = DEFAULT_UNDERLAY_ICON_STATE
- underlays += underlay_appearance
-
/turf/open/floor/set_smoothed_icon_state(new_junction)
if(broken || burnt)
return
@@ -505,19 +410,10 @@ DEFINE_BITFIELD(smoothing_junction, list(
name = "smooth wall"
icon = 'icons/turf/smooth_wall.dmi'
icon_state = "smooth"
- smoothing_flags = SMOOTH_CORNERS|SMOOTH_DIAGONAL_CORNERS|SMOOTH_BORDER
+ smoothing_flags = SMOOTH_CORNERS|SMOOTH_BORDER
smoothing_groups = null
canSmoothWith = null
-#undef NORTH_JUNCTION
-#undef SOUTH_JUNCTION
-#undef EAST_JUNCTION
-#undef WEST_JUNCTION
-#undef NORTHEAST_JUNCTION
-#undef NORTHWEST_JUNCTION
-#undef SOUTHEAST_JUNCTION
-#undef SOUTHWEST_JUNCTION
-
#undef NO_ADJ_FOUND
#undef ADJ_FOUND
#undef NULLTURF_BORDER
diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm
index 81224a93dc6..ee182ebcdba 100644
--- a/code/_globalvars/lists/maintenance_loot.dm
+++ b/code/_globalvars/lists/maintenance_loot.dm
@@ -307,7 +307,7 @@ GLOBAL_LIST_INIT(rarity_loot, list(//rare: really good items
/obj/item/paint/black = 1,
/obj/item/paint/blue = 1,
/obj/item/paint/green = 1,
- /obj/item/paint/paint_remover = 1,
+ /obj/item/paint_remover = 1,
/obj/item/paint/red = 1,
/obj/item/paint/violet = 1,
/obj/item/paint/white = 1,
diff --git a/code/datums/actions/mobs/charge.dm b/code/datums/actions/mobs/charge.dm
index 4d69e28aa71..7c00190dd3d 100644
--- a/code/datums/actions/mobs/charge.dm
+++ b/code/datums/actions/mobs/charge.dm
@@ -287,7 +287,7 @@
/datum/action/cooldown/mob_cooldown/charge/hallucination_charge/hallucination_surround
name = "Surround Target"
- icon_icon = 'icons/turf/walls/wall.dmi'
+ icon_icon = 'icons/turf/walls/legacy/wall.dmi'
button_icon_state = "wall-0"
desc = "Allows you to create hallucinations that charge around your target."
charge_delay = 0.6 SECONDS
diff --git a/code/datums/greyscale/README.md b/code/datums/greyscale/README.md
index ca4e28bf843..a69991db404 100644
--- a/code/datums/greyscale/README.md
+++ b/code/datums/greyscale/README.md
@@ -6,6 +6,7 @@ If you're wanting to add easy recolors for your sprite then this is the system f
- Mixed greyscale and colored sprite layers; You can choose to only greyscale a part of the sprite or have premade filters applied to layers.
- Blend modes; Instead of just putting layers of sprites on top of eachother you can use the more advanced blend modes.
- Reusable configurations; You can reference greyscale sprites from within the configuration of another, allowing you to have a bunch of styles with minimal additional configuration.
+- Bitmasked icons can be generated from bitmasked source files. In order to do this, add "bitmask_config" key to your icon state metadata with an integer value equal to a bitfield of flags from `code/__DEFINES/greyscale.dm`. The common one that walls and windows use is 7 (first three flags). After this you need to set `"bitmask" = true` in your layer data to have that layer use a bitmasked variant. You can mix bitmasked layers and non-bitmasked layers.
## Other Documents
@@ -33,27 +34,31 @@ The json is made up of some metadata and a list of layers used while creating th
```json
{
- "icon_state_name": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/some_other_config",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
+ "icon_state_name":
+ {
+ "layers":
[
{
- "type": "icon_state",
- "icon_state": "highlights",
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/some_other_config",
"blend_mode": "overlay",
- "color_ids": [ 2 ]
+ "color_ids": [ 1 ]
},
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/sparkle_effect",
- "blend_mode": "add"
- }
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "highlights",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/sparkle_effect",
+ "blend_mode": "add"
+ }
+ ]
]
- ]
+ }
}
```
diff --git a/code/datums/greyscale/_greyscale_config.dm b/code/datums/greyscale/_greyscale_config.dm
index 393a0f901c3..cd3a89d4bbc 100644
--- a/code/datums/greyscale/_greyscale_config.dm
+++ b/code/datums/greyscale/_greyscale_config.dm
@@ -138,8 +138,8 @@
/// Called after every config has refreshed, this proc handles data verification that depends on multiple entwined configurations.
/datum/greyscale_config/proc/CrossVerify()
for(var/icon_state in icon_states)
- var/list/verification_targets = icon_states[icon_state]
- verification_targets = verification_targets.Copy()
+ var/datum/greyscale_state/gags_state = icon_states[icon_state]
+ var/list/verification_targets = gags_state.layers.Copy()
while(length(verification_targets))
var/datum/greyscale_layer/layer = verification_targets[length(verification_targets)]
verification_targets.len--
@@ -157,13 +157,16 @@
/datum/greyscale_config/proc/ReadIconStateConfiguration(list/data)
icon_states = list()
for(var/state in data)
- var/list/raw_layers = data[state]
+ var/list/state_information = data[state]
+ var/list/raw_layers = state_information["layers"]
+ var/bitmask_config = state_information["bitmask_config"] ? text2num(state_information["bitmask_config"]) : NONE
+ var/default_state_if_bitmask = state_information["default_state_if_bitmask"] ? TRUE : FALSE
if(!length(raw_layers))
stack_trace("The json configuration [DebugName()] for icon state '[state]' is missing any layers.")
continue
if(icon_states[state])
stack_trace("The json configuration [DebugName()] has a duplicate icon state '[state]' and is being overriden.")
- icon_states[state] = ReadLayersFromJson(raw_layers)
+ icon_states[state] = new /datum/greyscale_state(ReadLayersFromJson(raw_layers), bitmask_config, default_state_if_bitmask)
/// Takes the json layers configuration and puts it into a more processed format
/datum/greyscale_config/proc/ReadLayersFromJson(list/data)
@@ -190,8 +193,10 @@
width = source.Width()
var/list/datum/greyscale_layer/all_layers = list()
+ var/list/to_process = list()
for(var/state in icon_states)
- var/list/to_process = list(icon_states[state])
+ var/datum/greyscale_state/gags_state = icon_states[state]
+ to_process += gags_state.layers
var/list/state_layers = list()
while(length(to_process))
@@ -239,6 +244,13 @@
var/icon/icon_bundle = GenerateBundle(color_string, last_external_icon=last_external_icon)
icon_bundle = fcopy_rsc(icon_bundle)
+
+ // This block is done like this because generated icons are unable to be scaled before getting added to the rsc
+ icon_bundle = fcopy_rsc(icon_bundle)
+ icon_bundle = icon(icon_bundle)
+ icon_bundle.Scale(width, height)
+ icon_bundle = fcopy_rsc(icon_bundle)
+
icon_cache[key] = icon_bundle
var/icon/output = icon(icon_bundle)
return output
@@ -252,34 +264,61 @@
var/list/generated_icons = list()
for(var/icon_state in icon_states)
- var/list/icon_state_steps
- if(render_steps)
- icon_state_steps = render_steps[icon_state] = list()
- var/icon/generated_icon = GenerateLayerGroup(colors, icon_states[icon_state], icon_state_steps, last_external_icon)
- // We read a pixel to force the icon to be fully generated before we let it loose into the world
- // I hate this
- generated_icon.GetPixel(1, 1)
- generated_icons[icon_state] = generated_icon
-
- var/icon/icon_bundle = generated_icons[""] || icon('icons/testing/greyscale_error.dmi')
- icon_bundle.Scale(width, height)
- generated_icons -= ""
-
+ var/datum/greyscale_state/gags_state = icon_states[icon_state]
+ var/list/layers = gags_state.layers
+ var/bitmask_config = gags_state.bitmask_config
+ var/default_state_if_bitmask = gags_state.default_state_if_bitmask
+ // Generate the default icon state if we are not bitmasking, or we want to do so despite bitmasking
+ if(bitmask_config == NONE || default_state_if_bitmask == TRUE)
+ var/icon/generated_icon = GenerateLayerGroup(colors, layers, render_steps)
+ // We read a pixel to force the icon to be fully generated before we let it loose into the world
+ // I hate this
+ generated_icon.GetPixel(1, 1)
+ generated_icons[icon_state] = generated_icon
+
+ // Also generate bitmasked states if the config tells us to.
+ if(bitmask_config != NONE)
+ var/list/steps = list()
+ for(var/potential_step in 0 to 255)
+ if(!(bitmask_config & GAGS_CARDINAL_SMOOTH))
+ if(potential_step & (NORTH_JUNCTION|SOUTH_JUNCTION|EAST_JUNCTION|WEST_JUNCTION))
+ continue
+ if(potential_step & (NORTHEAST_JUNCTION|SOUTHEAST_JUNCTION|SOUTHWEST_JUNCTION|NORTHWEST_JUNCTION))
+ if(!(bitmask_config & GAGS_DIAGONAL_SMOOTH))
+ continue
+ else if (bitmask_config & GAGS_DIAGONAL_NEED_ADJACENT_CARDINAL)
+ if(potential_step & NORTHEAST_JUNCTION && !(potential_step & NORTH_JUNCTION && potential_step & EAST_JUNCTION))
+ continue
+ if(potential_step & SOUTHEAST_JUNCTION && !(potential_step & SOUTH_JUNCTION && potential_step & EAST_JUNCTION))
+ continue
+ if(potential_step & SOUTHWEST_JUNCTION && !(potential_step & SOUTH_JUNCTION && potential_step & WEST_JUNCTION))
+ continue
+ if(potential_step & NORTHWEST_JUNCTION && !(potential_step & NORTH_JUNCTION && potential_step & WEST_JUNCTION))
+ continue
+
+ steps += potential_step
+ for(var/bit_step in steps)
+ var/icon/generated_icon = GenerateLayerGroup(colors, layers, render_steps, TRUE, bit_step)
+ // Same as above.
+ generated_icon.GetPixel(1, 1)
+ generated_icons["[icon_state]-[bit_step]"] = generated_icon
+
+ var/icon/icon_bundle = icon('icons/testing/greyscale_error.dmi')
for(var/icon_state in generated_icons)
icon_bundle.Insert(generated_icons[icon_state], icon_state)
return icon_bundle
/// Internal recursive proc to handle nested layer groups
-/datum/greyscale_config/proc/GenerateLayerGroup(list/colors, list/group, list/render_steps, icon/last_external_icon)
+/datum/greyscale_config/proc/GenerateLayerGroup(list/colors, list/group, list/render_steps, do_bitmasking = FALSE, bitmask_step, icon/last_external_icon)
var/icon/new_icon
for(var/datum/greyscale_layer/layer as anything in group)
var/icon/layer_icon
if(islist(layer))
- layer_icon = GenerateLayerGroup(colors, layer, render_steps, new_icon || last_external_icon)
+ layer_icon = GenerateLayerGroup(colors, layer, render_steps, do_bitmasking, bitmask_step, last_external_icon)
layer = layer[1] // When there are multiple layers in a group like this we use the first one's blend mode
else
- layer_icon = layer.Generate(colors, render_steps, new_icon || last_external_icon)
+ layer_icon = layer.Generate(colors, render_steps, do_bitmasking, bitmask_step, last_external_icon)
if(!new_icon)
new_icon = layer_icon
@@ -289,7 +328,7 @@
// These are so we can see the result of every step of the process in the preview ui
if(render_steps)
var/list/icon_data = list()
- render_steps += list(icon_data)
+ render_steps[icon(layer_icon)] = icon_data
icon_data["config_name"] = name
icon_data["step"] = icon(layer_icon)
icon_data["result"] = icon(new_icon)
diff --git a/code/datums/greyscale/config_types/greyscale_configs.dm b/code/datums/greyscale/config_types/greyscale_configs.dm
index 665b4ea3698..58484d6481d 100644
--- a/code/datums/greyscale/config_types/greyscale_configs.dm
+++ b/code/datums/greyscale/config_types/greyscale_configs.dm
@@ -516,3 +516,63 @@
name = "Worn Skull Bandana Up"
icon_file = 'icons/mob/clothing/mask.dmi'
json_config = 'code/datums/greyscale/json_configs/bandskull_worn_up.json'
+
+/datum/greyscale_config/solid_wall
+ name = "Solid Wall"
+ icon_file = 'icons/turf/walls/solid_wall.dmi'
+ json_config = 'code/datums/greyscale/json_configs/turfs/solid_wall.json'
+
+/datum/greyscale_config/reinforced_solid_wall
+ name = "Reinforced Solid Wall"
+ icon_file = 'icons/turf/walls/solid_wall_reinforced.dmi'
+ json_config = 'code/datums/greyscale/json_configs/turfs/solid_wall.json'
+
+/datum/greyscale_config/low_wall
+ name = "Low Wall"
+ icon_file = 'icons/obj/smooth_structures/low_wall.dmi'
+ json_config = 'code/datums/greyscale/json_configs/structures/low_wall.json'
+
+/datum/greyscale_config/wall_stripe
+ name = "Wall Stripe"
+ icon_file = 'icons/turf/walls/wall_stripe.dmi'
+ json_config = 'code/datums/greyscale/json_configs/turfs/wall_stripe.json'
+
+/datum/greyscale_config/wood_wall_stripe
+ name = "Wood Wall Stripe"
+ icon_file = 'icons/turf/walls/wood_wall_stripe.dmi'
+ json_config = 'code/datums/greyscale/json_configs/turfs/shineless_wall_stripe.json'
+
+/datum/greyscale_config/wall_neighbor_stripe
+ name = "Wall Neighbor Stripe"
+ icon_file = 'icons/turf/walls/neighbor_stripe.dmi'
+ json_config = 'code/datums/greyscale/json_configs/turfs/wall_neighbor_stripe.json'
+
+/datum/greyscale_config/metal_wall
+ name = "Metal Wall"
+ icon_file = 'icons/turf/walls/metal_wall.dmi'
+ json_config = 'code/datums/greyscale/json_configs/turfs/shineless_wall.json'
+
+/datum/greyscale_config/wood_wall
+ name = "Wood Wall"
+ icon_file = 'icons/turf/walls/wood_wall.dmi'
+ json_config = 'code/datums/greyscale/json_configs/turfs/shineless_wall.json'
+
+/datum/greyscale_config/stone_wall
+ name = "Stone Wall"
+ icon_file = 'icons/turf/walls/stone_wall.dmi'
+ json_config = 'code/datums/greyscale/json_configs/turfs/shineless_wall.json'
+
+/datum/greyscale_config/cult_wall
+ name = "Cult Wall"
+ icon_file = 'icons/turf/walls/cult_wall.dmi'
+ json_config = 'code/datums/greyscale/json_configs/turfs/shineless_wall.json'
+
+/datum/greyscale_config/fulltile_window
+ name = "Fulltile Window"
+ icon_file = 'icons/obj/smooth_structures/window.dmi'
+ json_config = 'code/datums/greyscale/json_configs/structures/fulltile_window.json'
+
+/datum/greyscale_config/fulltile_reinforced_window
+ name = "Fulltile Window Reinforced"
+ icon_file = 'icons/obj/smooth_structures/window_reinforced.dmi'
+ json_config = 'code/datums/greyscale/json_configs/structures/fulltile_window.json'
diff --git a/code/datums/greyscale/json_configs/bandana.json b/code/datums/greyscale/json_configs/bandana.json
index a56d9b18265..567c913a01a 100644
--- a/code/datums/greyscale/json_configs/bandana.json
+++ b/code/datums/greyscale/json_configs/bandana.json
@@ -1,10 +1,14 @@
{
- "bandana": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "bandana":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandana_up.json b/code/datums/greyscale/json_configs/bandana_up.json
index 393d7b0710f..524d70afd56 100644
--- a/code/datums/greyscale/json_configs/bandana_up.json
+++ b/code/datums/greyscale/json_configs/bandana_up.json
@@ -1,10 +1,14 @@
{
- "bandana_up": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_up",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "bandana_up":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandana_worn.json b/code/datums/greyscale/json_configs/bandana_worn.json
index bc0e6c002d5..c0800b7f088 100644
--- a/code/datums/greyscale/json_configs/bandana_worn.json
+++ b/code/datums/greyscale/json_configs/bandana_worn.json
@@ -1,10 +1,14 @@
{
- "bandana_worn": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "bandana_worn":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandana_worn_up.json b/code/datums/greyscale/json_configs/bandana_worn_up.json
index b5375d5dfa0..30a7887d49d 100644
--- a/code/datums/greyscale/json_configs/bandana_worn_up.json
+++ b/code/datums/greyscale/json_configs/bandana_worn_up.json
@@ -1,10 +1,14 @@
{
- "bandana_worn_up": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_worn_up",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "bandana_worn_up":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_worn_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandskull.json b/code/datums/greyscale/json_configs/bandskull.json
index 18344d5d13a..31a06692f74 100644
--- a/code/datums/greyscale/json_configs/bandskull.json
+++ b/code/datums/greyscale/json_configs/bandskull.json
@@ -1,16 +1,20 @@
{
- "bandskull": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
+ "bandskull":
{
- "type": "icon_state",
- "icon_state": "bandana_skull",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_skull",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandskull_up.json b/code/datums/greyscale/json_configs/bandskull_up.json
index c01dc7bcf43..e972cb564d6 100644
--- a/code/datums/greyscale/json_configs/bandskull_up.json
+++ b/code/datums/greyscale/json_configs/bandskull_up.json
@@ -1,16 +1,20 @@
{
- "bandskull_up": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_up",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bandana_skull_up",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "bandskull_up":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_skull_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandskull_worn.json b/code/datums/greyscale/json_configs/bandskull_worn.json
index 3d2e34688c9..ca2147adf14 100644
--- a/code/datums/greyscale/json_configs/bandskull_worn.json
+++ b/code/datums/greyscale/json_configs/bandskull_worn.json
@@ -1,16 +1,20 @@
{
- "bandskull_worn": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bandana_skull_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "bandskull_worn":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_skull_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandskull_worn_up.json b/code/datums/greyscale/json_configs/bandskull_worn_up.json
index be37d2ee2b8..81b530d15d1 100644
--- a/code/datums/greyscale/json_configs/bandskull_worn_up.json
+++ b/code/datums/greyscale/json_configs/bandskull_worn_up.json
@@ -1,16 +1,20 @@
{
- "bandskull_worn_up": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_worn_up",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bandana_skull_worn_up",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "bandskull_up":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_worn_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_skull_worn_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandstriped.json b/code/datums/greyscale/json_configs/bandstriped.json
index e31fb50309f..ee11bf76d1d 100644
--- a/code/datums/greyscale/json_configs/bandstriped.json
+++ b/code/datums/greyscale/json_configs/bandstriped.json
@@ -1,16 +1,20 @@
{
- "bandstriped": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bandana_stripe",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "bandstriped":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_stripe",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandstriped_up.json b/code/datums/greyscale/json_configs/bandstriped_up.json
index da464432cd4..fe6e38849d9 100644
--- a/code/datums/greyscale/json_configs/bandstriped_up.json
+++ b/code/datums/greyscale/json_configs/bandstriped_up.json
@@ -1,16 +1,20 @@
{
- "bandstriped_up": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_up",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bandana_stripe_up",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "bandstriped_up":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_stripe_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandstriped_worn.json b/code/datums/greyscale/json_configs/bandstriped_worn.json
index 89d729aa4c9..11a028a0ea6 100644
--- a/code/datums/greyscale/json_configs/bandstriped_worn.json
+++ b/code/datums/greyscale/json_configs/bandstriped_worn.json
@@ -1,16 +1,20 @@
{
- "bandstriped_worn": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bandana_stripe_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "bandstriped_worn":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_stripe_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bandstriped_worn_up.json b/code/datums/greyscale/json_configs/bandstriped_worn_up.json
index 7d08ea651ac..a9251904c56 100644
--- a/code/datums/greyscale/json_configs/bandstriped_worn_up.json
+++ b/code/datums/greyscale/json_configs/bandstriped_worn_up.json
@@ -1,16 +1,20 @@
{
- "bandstriped_worn_up": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_worn_up",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bandana_stripe_worn_up",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "bandstriped_worn_up":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_worn_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_stripe_worn_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bench_corner.json b/code/datums/greyscale/json_configs/bench_corner.json
index 3a86aea97e2..9f2a0f23cfd 100644
--- a/code/datums/greyscale/json_configs/bench_corner.json
+++ b/code/datums/greyscale/json_configs/bench_corner.json
@@ -1,15 +1,19 @@
{
- "bench_corner": [
- {
- "type": "icon_state",
- "icon_state": "bench_corner_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "bench_corner_cover",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "bench_corner":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bench_corner_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bench_corner_cover",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bench_left.json b/code/datums/greyscale/json_configs/bench_left.json
index 36939f8b716..a008cd37586 100644
--- a/code/datums/greyscale/json_configs/bench_left.json
+++ b/code/datums/greyscale/json_configs/bench_left.json
@@ -1,15 +1,19 @@
{
- "bench_left": [
- {
- "type": "icon_state",
- "icon_state": "bench_left_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "bench_left_cover",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "bench_left":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bench_left_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bench_left_cover",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bench_middle.json b/code/datums/greyscale/json_configs/bench_middle.json
index a40df28984e..be15aa53bee 100644
--- a/code/datums/greyscale/json_configs/bench_middle.json
+++ b/code/datums/greyscale/json_configs/bench_middle.json
@@ -1,15 +1,19 @@
{
- "bench_middle": [
- {
- "type": "icon_state",
- "icon_state": "bench_middle_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "bench_middle_cover",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "bench_middle":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bench_middle_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bench_middle_cover",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/bench_right.json b/code/datums/greyscale/json_configs/bench_right.json
index ec1c3575613..f04ccc62980 100644
--- a/code/datums/greyscale/json_configs/bench_right.json
+++ b/code/datums/greyscale/json_configs/bench_right.json
@@ -1,15 +1,19 @@
{
- "bench_right": [
- {
- "type": "icon_state",
- "icon_state": "bench_right_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "bench_right_cover",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "bench_right":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "bench_right_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bench_right_cover",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/beret.json b/code/datums/greyscale/json_configs/beret.json
index f7ee848d264..9e9fdd57247 100644
--- a/code/datums/greyscale/json_configs/beret.json
+++ b/code/datums/greyscale/json_configs/beret.json
@@ -1,18 +1,26 @@
{
- "beret": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "beret_flat": [
- {
- "type": "icon_state",
- "icon_state": "beret_flat",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "beret":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "beret_flat":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_flat",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/beret_badge.json b/code/datums/greyscale/json_configs/beret_badge.json
index f0eda0df5ae..e4581927529 100644
--- a/code/datums/greyscale/json_configs/beret_badge.json
+++ b/code/datums/greyscale/json_configs/beret_badge.json
@@ -1,16 +1,20 @@
{
- "beret_badge": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "beret_badge":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/beret_badge_worn.json b/code/datums/greyscale/json_configs/beret_badge_worn.json
index 47960e08daa..2f2bd8624e8 100644
--- a/code/datums/greyscale/json_configs/beret_badge_worn.json
+++ b/code/datums/greyscale/json_configs/beret_badge_worn.json
@@ -1,16 +1,20 @@
{
- "beret_badge": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "beret_badge":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/beret_worn.json b/code/datums/greyscale/json_configs/beret_worn.json
index 8509136e53a..9924102d195 100644
--- a/code/datums/greyscale/json_configs/beret_worn.json
+++ b/code/datums/greyscale/json_configs/beret_worn.json
@@ -1,18 +1,26 @@
{
- "beret": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "beret_flat": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "beret":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "beret_flat":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/canister_base.json b/code/datums/greyscale/json_configs/canister_base.json
index 4528c6225c6..19095949d00 100644
--- a/code/datums/greyscale/json_configs/canister_base.json
+++ b/code/datums/greyscale/json_configs/canister_base.json
@@ -1,20 +1,24 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "add_shader",
- "blend_mode": "add"
- },
- {
- "type": "icon_state",
- "icon_state": "multi_shader",
- "blend_mode": "multiply"
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "add_shader",
+ "blend_mode": "add"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "multi_shader",
+ "blend_mode": "multiply"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/canister_default.json b/code/datums/greyscale/json_configs/canister_default.json
index b965e9ec3fd..630c84cad3f 100644
--- a/code/datums/greyscale/json_configs/canister_default.json
+++ b/code/datums/greyscale/json_configs/canister_default.json
@@ -1,24 +1,32 @@
{
- "": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/canister/base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/canister/post_effects",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "window-base": [
- {
- "type": "icon_state",
- "icon_state": "window-base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/canister/base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/canister/post_effects",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ },
+ "window-base":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "window-base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/canister_double_stripe.json b/code/datums/greyscale/json_configs/canister_double_stripe.json
index 33dd115d3ea..6beffb49157 100644
--- a/code/datums/greyscale/json_configs/canister_double_stripe.json
+++ b/code/datums/greyscale/json_configs/canister_double_stripe.json
@@ -1,37 +1,45 @@
{
- "": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/canister/base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
+ "":
+ {
+ "layers":
[
{
- "type": "icon_state",
- "icon_state": "double_stripe",
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/canister/base",
"blend_mode": "overlay",
- "color_ids": [ 2 ]
+ "color_ids": [1]
},
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "double_stripe",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "double_stripe_shader",
+ "blend_mode": "subtract"
+ }
+ ],
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/canister/post_effects",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ },
+ "window-base":
+ {
+ "layers":
+ [
{
"type": "icon_state",
- "icon_state": "double_stripe_shader",
- "blend_mode": "subtract"
+ "icon_state": "window-base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
}
- ],
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/canister/post_effects",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "window-base": [
- {
- "type": "icon_state",
- "icon_state": "window-base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/canister_hazard.json b/code/datums/greyscale/json_configs/canister_hazard.json
index 81c19362231..f82cda43784 100644
--- a/code/datums/greyscale/json_configs/canister_hazard.json
+++ b/code/datums/greyscale/json_configs/canister_hazard.json
@@ -1,30 +1,38 @@
{
- "": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/canister/base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "hazard_stripes",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/canister/post_effects",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "window-base": [
- {
- "type": "icon_state",
- "icon_state": "window-base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/canister/base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "hazard_stripes",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ },
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/canister/post_effects",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ },
+ "window-base":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "window-base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/canister_post_effects.json b/code/datums/greyscale/json_configs/canister_post_effects.json
index 6756c3221f9..3eb0391365d 100644
--- a/code/datums/greyscale/json_configs/canister_post_effects.json
+++ b/code/datums/greyscale/json_configs/canister_post_effects.json
@@ -1,15 +1,19 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "outline",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "lights",
- "blend_mode": "overlay"
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "outline",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "lights",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/canister_proto.json b/code/datums/greyscale/json_configs/canister_proto.json
index 09f19b80e9b..4d1873d0dd6 100644
--- a/code/datums/greyscale/json_configs/canister_proto.json
+++ b/code/datums/greyscale/json_configs/canister_proto.json
@@ -1,39 +1,43 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "can_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "can_shader",
- "blend_mode": "multiply"
- },
- {
- "type": "icon_state",
- "icon_state": "stand",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "decals",
- "blend_mode": "overlay"
- },
+ "":
+ {
+ "layers":
[
{
"type": "icon_state",
- "icon_state": "light_base",
+ "icon_state": "can_base",
"blend_mode": "overlay",
- "color_ids": [ 2 ]
+ "color_ids": [1]
},
{
"type": "icon_state",
- "icon_state": "light",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
+ "icon_state": "can_shader",
+ "blend_mode": "multiply"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "stand",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "decals",
+ "blend_mode": "overlay"
+ },
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "light_base",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "light",
+ "blend_mode": "overlay",
+ "color_ids": [3]
+ }
+ ]
]
- ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/canister_stripe.json b/code/datums/greyscale/json_configs/canister_stripe.json
index 9e5f087c0ae..cc7c8288cf9 100644
--- a/code/datums/greyscale/json_configs/canister_stripe.json
+++ b/code/datums/greyscale/json_configs/canister_stripe.json
@@ -1,30 +1,38 @@
{
- "": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/canister/base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "stripe",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/canister/post_effects",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "window-base": [
- {
- "type": "icon_state",
- "icon_state": "window-base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/canister/base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "stripe",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ },
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/canister/post_effects",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ },
+ "window-base":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "window-base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/carp.json b/code/datums/greyscale/json_configs/carp.json
index d01fda5a9ee..a11851c9c49 100644
--- a/code/datums/greyscale/json_configs/carp.json
+++ b/code/datums/greyscale/json_configs/carp.json
@@ -1,28 +1,36 @@
{
- "base": [
- {
- "type": "icon_state",
- "icon_state": "base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "base_mouth",
- "blend_mode": "overlay"
- }
- ],
- "base_dead": [
- {
- "type": "icon_state",
- "icon_state": "base_dead",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "base_dead_mouth",
- "blend_mode": "overlay"
- }
- ]
+ "base":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "base_mouth",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "base_dead":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "base_dead",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "base_dead_mouth",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/carp_disk_mouth.json b/code/datums/greyscale/json_configs/carp_disk_mouth.json
index f74fcfdeec6..c014ba45f91 100644
--- a/code/datums/greyscale/json_configs/carp_disk_mouth.json
+++ b/code/datums/greyscale/json_configs/carp_disk_mouth.json
@@ -1,10 +1,14 @@
{
- "disk_mouth": [
- {
- "type": "icon_state",
- "icon_state": "disk_mouth",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "disk_mouth":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "disk_mouth",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/circuit.json b/code/datums/greyscale/json_configs/circuit.json
index ed1569cda25..e2421536e9d 100644
--- a/code/datums/greyscale/json_configs/circuit.json
+++ b/code/datums/greyscale/json_configs/circuit.json
@@ -1,15 +1,19 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "circuit_board",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "circuit_chip",
- "blend_mode": "overlay"
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "circuit_board",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "circuit_chip",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/ctf_light.json b/code/datums/greyscale/json_configs/ctf_light.json
index e48762afa67..59576795fc5 100644
--- a/code/datums/greyscale/json_configs/ctf_light.json
+++ b/code/datums/greyscale/json_configs/ctf_light.json
@@ -1,15 +1,19 @@
{
- "light": [
- {
- "type": "icon_state",
- "icon_state": "light",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "light_colours",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "light":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "light",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "light_colours",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/ctf_light_worn.json b/code/datums/greyscale/json_configs/ctf_light_worn.json
index e48762afa67..59576795fc5 100644
--- a/code/datums/greyscale/json_configs/ctf_light_worn.json
+++ b/code/datums/greyscale/json_configs/ctf_light_worn.json
@@ -1,15 +1,19 @@
{
- "light": [
- {
- "type": "icon_state",
- "icon_state": "light",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "light_colours",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "light":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "light",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "light_colours",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/ctf_standard.json b/code/datums/greyscale/json_configs/ctf_standard.json
index f56ed5d8c06..3830cb27113 100644
--- a/code/datums/greyscale/json_configs/ctf_standard.json
+++ b/code/datums/greyscale/json_configs/ctf_standard.json
@@ -1,15 +1,19 @@
{
- "standard": [
- {
- "type": "icon_state",
- "icon_state": "standard",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "standard_colours",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "standard":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "standard",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "standard_colours",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/ctf_standard_worn.json b/code/datums/greyscale/json_configs/ctf_standard_worn.json
index f56ed5d8c06..3830cb27113 100644
--- a/code/datums/greyscale/json_configs/ctf_standard_worn.json
+++ b/code/datums/greyscale/json_configs/ctf_standard_worn.json
@@ -1,15 +1,19 @@
{
- "standard": [
- {
- "type": "icon_state",
- "icon_state": "standard",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "standard_colours",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "standard":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "standard",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "standard_colours",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/giftdeliverybox.json b/code/datums/greyscale/json_configs/giftdeliverybox.json
index 68c4ad1f76d..cc57a31a56e 100644
--- a/code/datums/greyscale/json_configs/giftdeliverybox.json
+++ b/code/datums/greyscale/json_configs/giftdeliverybox.json
@@ -1,16 +1,20 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "giftdeliverybox_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "giftdeliverybox_ribbon",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverybox_base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverybox_ribbon",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/giftdeliverycloset.json b/code/datums/greyscale/json_configs/giftdeliverycloset.json
index 9de529901a2..6bac550d021 100644
--- a/code/datums/greyscale/json_configs/giftdeliverycloset.json
+++ b/code/datums/greyscale/json_configs/giftdeliverycloset.json
@@ -1,16 +1,20 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "giftdeliverycloset_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "giftdeliverycloset_ribbon",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverycloset_base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverycloset_ribbon",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/giftdeliverycrate.json b/code/datums/greyscale/json_configs/giftdeliverycrate.json
index 78d864f4123..9d3200155d1 100644
--- a/code/datums/greyscale/json_configs/giftdeliverycrate.json
+++ b/code/datums/greyscale/json_configs/giftdeliverycrate.json
@@ -1,16 +1,20 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "giftdeliverycrate_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "giftdeliverycrate_ribbon",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverycrate_base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverycrate_ribbon",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/giftdeliverypackage1.json b/code/datums/greyscale/json_configs/giftdeliverypackage1.json
index 7b61b49688c..6fd0c65fb8e 100644
--- a/code/datums/greyscale/json_configs/giftdeliverypackage1.json
+++ b/code/datums/greyscale/json_configs/giftdeliverypackage1.json
@@ -1,16 +1,20 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "giftdeliverypackage1_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "giftdeliverypackage1_ribbon",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverypackage1_base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverypackage1_ribbon",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/giftdeliverypackage2.json b/code/datums/greyscale/json_configs/giftdeliverypackage2.json
index a2724a4d4f5..1a113ff6c29 100644
--- a/code/datums/greyscale/json_configs/giftdeliverypackage2.json
+++ b/code/datums/greyscale/json_configs/giftdeliverypackage2.json
@@ -1,16 +1,20 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "giftdeliverypackage2_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "giftdeliverypackage2_ribbon",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverypackage2_base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverypackage2_ribbon",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/giftdeliverypackage3.json b/code/datums/greyscale/json_configs/giftdeliverypackage3.json
index 20b2b2a1f10..335401abae2 100644
--- a/code/datums/greyscale/json_configs/giftdeliverypackage3.json
+++ b/code/datums/greyscale/json_configs/giftdeliverypackage3.json
@@ -1,16 +1,20 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "giftdeliverypackage3_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "giftdeliverypackage3_ribbon",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverypackage3_base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverypackage3_ribbon",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/giftdeliverypackage4.json b/code/datums/greyscale/json_configs/giftdeliverypackage4.json
index a75521dfd7e..29c9e26f627 100644
--- a/code/datums/greyscale/json_configs/giftdeliverypackage4.json
+++ b/code/datums/greyscale/json_configs/giftdeliverypackage4.json
@@ -1,16 +1,20 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "giftdeliverypackage4_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "giftdeliverypackage4_ribbon",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverypackage4_base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverypackage4_ribbon",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/giftdeliverypackage5.json b/code/datums/greyscale/json_configs/giftdeliverypackage5.json
index 180cb27dddc..a7878d6a2ef 100644
--- a/code/datums/greyscale/json_configs/giftdeliverypackage5.json
+++ b/code/datums/greyscale/json_configs/giftdeliverypackage5.json
@@ -1,16 +1,20 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "giftdeliverypackage5_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "giftdeliverypackage5_ribbon",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverypackage5_base",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "giftdeliverypackage5_ribbon",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/ceremonial_blade.json b/code/datums/greyscale/json_configs/items/ceremonial_blade.json
index 16360a5e889..2a8b48b38cb 100644
--- a/code/datums/greyscale/json_configs/items/ceremonial_blade.json
+++ b/code/datums/greyscale/json_configs/items/ceremonial_blade.json
@@ -1,15 +1,19 @@
{
- "default": [
- {
- "type": "icon_state",
- "icon_state": "base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "handle",
- "blend_mode": "overlay"
- }
- ]
+ "default":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "handle",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/ceremonial_blade_lefthand.json b/code/datums/greyscale/json_configs/items/ceremonial_blade_lefthand.json
index aafdb2d897e..7e774e21fd5 100644
--- a/code/datums/greyscale/json_configs/items/ceremonial_blade_lefthand.json
+++ b/code/datums/greyscale/json_configs/items/ceremonial_blade_lefthand.json
@@ -1,10 +1,14 @@
{
- "default": [
- {
- "type": "icon_state",
- "icon_state": "inhand_left",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "default":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "inhand_left",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/ceremonial_blade_righthand.json b/code/datums/greyscale/json_configs/items/ceremonial_blade_righthand.json
index d80b0c49a25..72d7364ba8c 100644
--- a/code/datums/greyscale/json_configs/items/ceremonial_blade_righthand.json
+++ b/code/datums/greyscale/json_configs/items/ceremonial_blade_righthand.json
@@ -1,10 +1,14 @@
{
- "default": [
- {
- "type": "icon_state",
- "icon_state": "inhand_right",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "default":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "inhand_right",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/cleric_mace.json b/code/datums/greyscale/json_configs/items/cleric_mace.json
index 781c790ea6a..91eb4c32d7f 100644
--- a/code/datums/greyscale/json_configs/items/cleric_mace.json
+++ b/code/datums/greyscale/json_configs/items/cleric_mace.json
@@ -1,28 +1,36 @@
{
- "default": [
- {
- "type": "icon_state",
- "icon_state": "base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "handle",
- "blend_mode": "overlay"
- }
- ],
- "default_worn": [
- {
- "type": "icon_state",
- "icon_state": "worn_shaft",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "worn_handle",
- "blend_mode": "overlay"
- }
- ]
+ "default":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "handle",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "default_worn":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "worn_shaft",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "worn_handle",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/cleric_mace_gold.json b/code/datums/greyscale/json_configs/items/cleric_mace_gold.json
index 8ca0ba3b607..54bde741f45 100644
--- a/code/datums/greyscale/json_configs/items/cleric_mace_gold.json
+++ b/code/datums/greyscale/json_configs/items/cleric_mace_gold.json
@@ -1,46 +1,54 @@
{
- "default": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/cleric_mace",
- "icon_state": "default",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
+ "default":
+ {
+ "layers":
[
{
"type": "reference",
- "reference_type": "/datum/greyscale_config/shimmer",
+ "reference_type": "/datum/greyscale_config/cleric_mace",
+ "icon_state": "default",
"blend_mode": "overlay",
- "color_ids": [ "#ffffff" ]
+ "color_ids": [1]
},
- {
- "type": "icon_state",
- "icon_state": "shimmer_mask",
- "blend_mode": "multiply"
- }
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/shimmer",
+ "blend_mode": "overlay",
+ "color_ids": ["#ffffff"]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "shimmer_mask",
+ "blend_mode": "multiply"
+ }
+ ]
]
- ],
- "default_worn": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/cleric_mace",
- "icon_state": "default_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
+ },
+ "default_worn":
+ {
+ "layers":
[
{
"type": "reference",
- "reference_type": "/datum/greyscale_config/shimmer",
+ "reference_type": "/datum/greyscale_config/cleric_mace",
+ "icon_state": "default_worn",
"blend_mode": "overlay",
- "color_ids": [ "#ffffff" ]
+ "color_ids": [1]
},
- {
- "type": "icon_state",
- "icon_state": "shimmer_mask_worn",
- "blend_mode": "multiply"
- }
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/shimmer",
+ "blend_mode": "overlay",
+ "color_ids": ["#ffffff"]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "shimmer_mask_worn",
+ "blend_mode": "multiply"
+ }
+ ]
]
- ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/cleric_mace_lefthand.json b/code/datums/greyscale/json_configs/items/cleric_mace_lefthand.json
index aafdb2d897e..7e774e21fd5 100644
--- a/code/datums/greyscale/json_configs/items/cleric_mace_lefthand.json
+++ b/code/datums/greyscale/json_configs/items/cleric_mace_lefthand.json
@@ -1,10 +1,14 @@
{
- "default": [
- {
- "type": "icon_state",
- "icon_state": "inhand_left",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "default":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "inhand_left",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/cleric_mace_lefthand_gold.json b/code/datums/greyscale/json_configs/items/cleric_mace_lefthand_gold.json
index 9372b4b0551..4191da7aeea 100644
--- a/code/datums/greyscale/json_configs/items/cleric_mace_lefthand_gold.json
+++ b/code/datums/greyscale/json_configs/items/cleric_mace_lefthand_gold.json
@@ -1,24 +1,28 @@
{
- "default": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/cleric_mace_lefthand",
- "icon_state": "default",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
+ "default":
+ {
+ "layers":
[
{
"type": "reference",
- "reference_type": "/datum/greyscale_config/shimmer",
+ "reference_type": "/datum/greyscale_config/cleric_mace_lefthand",
+ "icon_state": "default",
"blend_mode": "overlay",
- "color_ids": [ "#ffffff" ]
+ "color_ids": [1]
},
- {
- "type": "icon_state",
- "icon_state": "shimmer_mask_lefthand",
- "blend_mode": "multiply"
- }
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/shimmer",
+ "blend_mode": "overlay",
+ "color_ids": ["#ffffff"]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "shimmer_mask_lefthand",
+ "blend_mode": "multiply"
+ }
+ ]
]
- ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/cleric_mace_righthand.json b/code/datums/greyscale/json_configs/items/cleric_mace_righthand.json
index d80b0c49a25..72d7364ba8c 100644
--- a/code/datums/greyscale/json_configs/items/cleric_mace_righthand.json
+++ b/code/datums/greyscale/json_configs/items/cleric_mace_righthand.json
@@ -1,10 +1,14 @@
{
- "default": [
- {
- "type": "icon_state",
- "icon_state": "inhand_right",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "default":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "inhand_right",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/cleric_mace_righthand_gold.json b/code/datums/greyscale/json_configs/items/cleric_mace_righthand_gold.json
index d91f1c0800c..48be3b82581 100644
--- a/code/datums/greyscale/json_configs/items/cleric_mace_righthand_gold.json
+++ b/code/datums/greyscale/json_configs/items/cleric_mace_righthand_gold.json
@@ -1,24 +1,28 @@
{
- "default": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/cleric_mace_righthand",
- "icon_state": "default",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
+ "default":
+ {
+ "layers":
[
{
"type": "reference",
- "reference_type": "/datum/greyscale_config/shimmer",
+ "reference_type": "/datum/greyscale_config/cleric_mace_righthand",
+ "icon_state": "default",
"blend_mode": "overlay",
- "color_ids": [ "#ffffff" ]
+ "color_ids": [1]
},
- {
- "type": "icon_state",
- "icon_state": "shimmer_mask_righthand",
- "blend_mode": "multiply"
- }
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/shimmer",
+ "blend_mode": "overlay",
+ "color_ids": ["#ffffff"]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "shimmer_mask_righthand",
+ "blend_mode": "multiply"
+ }
+ ]
]
- ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/cleric_mace_worn.json b/code/datums/greyscale/json_configs/items/cleric_mace_worn.json
index c49a829aa2c..6ef0be472a1 100644
--- a/code/datums/greyscale/json_configs/items/cleric_mace_worn.json
+++ b/code/datums/greyscale/json_configs/items/cleric_mace_worn.json
@@ -1,15 +1,19 @@
{
- "default": [
- {
- "type": "icon_state",
- "icon_state": "worn_shaft",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "worn_handle",
- "blend_mode": "overlay"
- }
- ]
+ "belt_human_default_worn":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "worn_shaft",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "worn_handle",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/items/cleric_mace_worn_gold.json b/code/datums/greyscale/json_configs/items/cleric_mace_worn_gold.json
index 21850436657..3abc633055e 100644
--- a/code/datums/greyscale/json_configs/items/cleric_mace_worn_gold.json
+++ b/code/datums/greyscale/json_configs/items/cleric_mace_worn_gold.json
@@ -1,24 +1,27 @@
{
- "default": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/cleric_mace_worn",
- "icon_state": "default",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
+ "default":
+ {
+ "layers":
[
{
"type": "reference",
- "reference_type": "/datum/greyscale_config/shimmer",
+ "reference_type": "/datum/greyscale_config/cleric_mace_worn",
"blend_mode": "overlay",
- "color_ids": [ "#ffffff" ]
+ "color_ids": [ 1 ]
},
- {
- "type": "icon_state",
- "icon_state": "shimmer_mask_worn",
- "blend_mode": "multiply"
- }
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/shimmer",
+ "blend_mode": "overlay",
+ "color_ids": ["#ffffff"]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "shimmer_mask_worn",
+ "blend_mode": "multiply"
+ }
+ ]
]
- ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/janicart_upgrade.json b/code/datums/greyscale/json_configs/janicart_upgrade.json
index 7269059b3bc..9f2c14ac7d1 100644
--- a/code/datums/greyscale/json_configs/janicart_upgrade.json
+++ b/code/datums/greyscale/json_configs/janicart_upgrade.json
@@ -1,28 +1,32 @@
{
- "janicart_upgrade": [
- {
- "type": "icon_state",
- "icon_state": "housing",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bristles",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "accent",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "light",
- "blend_mode": "overlay",
- "color_ids": [ 4 ]
- }
- ]
+ "janicart_upgrade":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "housing",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bristles",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "accent",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "light",
+ "blend_mode": "overlay",
+ "color_ids": [ 4 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/janicart_upgrade_installed.json b/code/datums/greyscale/json_configs/janicart_upgrade_installed.json
index c586c92709c..5c513e7e68b 100644
--- a/code/datums/greyscale/json_configs/janicart_upgrade_installed.json
+++ b/code/datums/greyscale/json_configs/janicart_upgrade_installed.json
@@ -1,28 +1,32 @@
{
- "janicart_upgrade": [
- {
- "type": "icon_state",
- "icon_state": "cart_housing",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cart_bristles",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cart_accent",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cart_light",
- "blend_mode": "overlay",
- "color_ids": [ 4 ]
- }
- ]
+ "janicart_upgrade":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "cart_housing",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "cart_bristles",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "cart_accent",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "cart_light",
+ "blend_mode": "overlay",
+ "color_ids": [ 4 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/jumpsuit.json b/code/datums/greyscale/json_configs/jumpsuit.json
index 03044770b95..73634a73fbd 100644
--- a/code/datums/greyscale/json_configs/jumpsuit.json
+++ b/code/datums/greyscale/json_configs/jumpsuit.json
@@ -1,28 +1,36 @@
{
- "jumpsuit": [
- {
- "type": "icon_state",
- "icon_state": "jumpsuit",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_accessories",
- "blend_mode": "overlay"
- }
- ],
- "jumpskirt": [
- {
- "type": "icon_state",
- "icon_state": "jumpskirt",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_accessories",
- "blend_mode": "overlay"
- }
- ]
+ "jumpsuit":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_accessories",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "jumpskirt":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpskirt",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_accessories",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/jumpsuit_inhand.json b/code/datums/greyscale/json_configs/jumpsuit_inhand.json
index 754620651b9..af10692f4de 100644
--- a/code/datums/greyscale/json_configs/jumpsuit_inhand.json
+++ b/code/datums/greyscale/json_configs/jumpsuit_inhand.json
@@ -1,15 +1,19 @@
{
- "jumpsuit": [
- {
- "type": "icon_state",
- "icon_state": "jumpsuit",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_accessories",
- "blend_mode": "overlay"
- }
- ]
+ "jumpsuit":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_accessories",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/jumpsuit_prison.json b/code/datums/greyscale/json_configs/jumpsuit_prison.json
index 1ac85b764bf..43e1e1bd3bb 100644
--- a/code/datums/greyscale/json_configs/jumpsuit_prison.json
+++ b/code/datums/greyscale/json_configs/jumpsuit_prison.json
@@ -1,28 +1,36 @@
{
- "jumpsuit": [
- {
- "type": "icon_state",
- "icon_state": "jumpsuit",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_prison",
- "blend_mode": "overlay"
- }
- ],
- "jumpskirt": [
- {
- "type": "icon_state",
- "icon_state": "jumpskirt",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_prison",
- "blend_mode": "overlay"
- }
- ]
+ "jumpsuit":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_prison",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "jumpskirt":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpskirt",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_prison",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/jumpsuit_prison_inhand.json b/code/datums/greyscale/json_configs/jumpsuit_prison_inhand.json
index be537b5a00a..0cf437eba8c 100644
--- a/code/datums/greyscale/json_configs/jumpsuit_prison_inhand.json
+++ b/code/datums/greyscale/json_configs/jumpsuit_prison_inhand.json
@@ -1,15 +1,19 @@
{
- "jumpsuit": [
- {
- "type": "icon_state",
- "icon_state": "jumpsuit",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_prison",
- "blend_mode": "overlay"
- }
- ]
+ "jumpsuit":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_prison",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/jumpsuit_prison_worn.json b/code/datums/greyscale/json_configs/jumpsuit_prison_worn.json
index 0096c95e812..1edf964b8b2 100644
--- a/code/datums/greyscale/json_configs/jumpsuit_prison_worn.json
+++ b/code/datums/greyscale/json_configs/jumpsuit_prison_worn.json
@@ -1,54 +1,70 @@
{
- "jumpsuit": [
- {
- "type": "icon_state",
- "icon_state": "jumpsuit",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_prison",
- "blend_mode": "overlay"
- }
- ],
- "jumpsuit_d" : [
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_d",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_d_prison",
- "blend_mode": "overlay"
- }
- ],
- "jumpskirt": [
- {
- "type": "icon_state",
- "icon_state": "jumpskirt",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpskirt_prison",
- "blend_mode": "overlay"
- }
- ],
- "jumpskirt_d" : [
- {
- "type": "icon_state",
- "icon_state": "jumpskirt_d",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpskirt_d_prison",
- "blend_mode": "overlay"
- }
- ]
+ "jumpsuit":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_prison",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "jumpsuit_d":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_d",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_d_prison",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "jumpskirt":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpskirt",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpskirt_prison",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "jumpskirt_d":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpskirt_d",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpskirt_d_prison",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/jumpsuit_worn.json b/code/datums/greyscale/json_configs/jumpsuit_worn.json
index b2e81aa1b15..cae3f2409e7 100644
--- a/code/datums/greyscale/json_configs/jumpsuit_worn.json
+++ b/code/datums/greyscale/json_configs/jumpsuit_worn.json
@@ -1,44 +1,60 @@
{
- "jumpsuit": [
- {
- "type": "icon_state",
- "icon_state": "jumpsuit",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_accessories",
- "blend_mode": "overlay"
- }
- ],
- "jumpsuit_d" : [
- {
- "type": "icon_state",
- "icon_state": "jumpsuit_d",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "jumpskirt": [
- {
- "type": "icon_state",
- "icon_state": "jumpskirt",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "jumpskirt_accessories",
- "blend_mode": "overlay"
- }
- ],
- "jumpskirt_d" : [
- {
- "type": "icon_state",
- "icon_state": "jumpskirt_d",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "jumpsuit":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_accessories",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "jumpsuit_d":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpsuit_d",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "jumpskirt":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpskirt",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "jumpskirt_accessories",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "jumpskirt_d":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "jumpskirt_d",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/material_effects/shimmer.json b/code/datums/greyscale/json_configs/material_effects/shimmer.json
index 64e2168e5c2..f2773cd501c 100644
--- a/code/datums/greyscale/json_configs/material_effects/shimmer.json
+++ b/code/datums/greyscale/json_configs/material_effects/shimmer.json
@@ -1,10 +1,14 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "animation",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "animation",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/meter.json b/code/datums/greyscale/json_configs/meter.json
index 73cfb739959..1e3dd3bdca9 100644
--- a/code/datums/greyscale/json_configs/meter.json
+++ b/code/datums/greyscale/json_configs/meter.json
@@ -1,374 +1,458 @@
{
- "meter": [
- {
- "type": "icon_state",
- "icon_state": "pressure_off",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- }
- ],
- "meter0": [
- {
- "type": "icon_state",
- "icon_state": "pressure0",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons0",
- "blend_mode": "overlay"
- }
- ],
- "meter1_1": [
- {
- "type": "icon_state",
- "icon_state": "pressure1_1",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons1",
- "blend_mode": "overlay"
- }
- ],
- "meter1_2": [
- {
- "type": "icon_state",
- "icon_state": "pressure1_2",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons1",
- "blend_mode": "overlay"
- }
- ],
- "meter1_3": [
- {
- "type": "icon_state",
- "icon_state": "pressure1_3",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons1",
- "blend_mode": "overlay"
- }
- ],
- "meter1_4": [
- {
- "type": "icon_state",
- "icon_state": "pressure1_4",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons1",
- "blend_mode": "overlay"
- }
- ],
- "meter1_5": [
- {
- "type": "icon_state",
- "icon_state": "pressure1_5",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons1",
- "blend_mode": "overlay"
- }
- ],
- "meter1_6": [
- {
- "type": "icon_state",
- "icon_state": "pressure1_6",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons1",
- "blend_mode": "overlay"
- }
- ],
- "meter2_1": [
- {
- "type": "icon_state",
- "icon_state": "pressure2_1",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons2",
- "blend_mode": "overlay"
- }
- ],
- "meter2_2": [
- {
- "type": "icon_state",
- "icon_state": "pressure2_2",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons2",
- "blend_mode": "overlay"
- }
- ],
- "meter2_3": [
- {
- "type": "icon_state",
- "icon_state": "pressure2_3",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons2",
- "blend_mode": "overlay"
- }
- ],
- "meter2_4": [
- {
- "type": "icon_state",
- "icon_state": "pressure2_4",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons2",
- "blend_mode": "overlay"
- }
- ],
- "meter2_5": [
- {
- "type": "icon_state",
- "icon_state": "pressure2_5",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons2",
- "blend_mode": "overlay"
- }
- ],
- "meter2_6": [
- {
- "type": "icon_state",
- "icon_state": "pressure2_6",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons2",
- "blend_mode": "overlay"
- }
- ],
- "meter3_1": [
- {
- "type": "icon_state",
- "icon_state": "pressure3_1",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons3",
- "blend_mode": "overlay"
- }
- ],
- "meter3_2": [
- {
- "type": "icon_state",
- "icon_state": "pressure3_2",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons3",
- "blend_mode": "overlay"
- }
- ],
- "meter3_3": [
- {
- "type": "icon_state",
- "icon_state": "pressure3_3",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons3",
- "blend_mode": "overlay"
- }
- ],
- "meter3_4": [
- {
- "type": "icon_state",
- "icon_state": "pressure3_4",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons3",
- "blend_mode": "overlay"
- }
- ],
- "meter3_5": [
- {
- "type": "icon_state",
- "icon_state": "pressure3_5",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons3",
- "blend_mode": "overlay"
- }
- ],
- "meter3_6": [
- {
- "type": "icon_state",
- "icon_state": "pressure3_6",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons3",
- "blend_mode": "overlay"
- }
- ],
- "meter4": [
- {
- "type": "icon_state",
- "icon_state": "pressure4",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "meter_base",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "buttons4",
- "blend_mode": "overlay"
- }
- ]
+ "meter":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure_off",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter0":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure0",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons0",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter1_1":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure1_1",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons1",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter1_2":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure1_2",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons1",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter1_3":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure1_3",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons1",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter1_4":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure1_4",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons1",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter1_5":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure1_5",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons1",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter1_6":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure1_6",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons1",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter2_1":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure2_1",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons2",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter2_2":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure2_2",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons2",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter2_3":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure2_3",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons2",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter2_4":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure2_4",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons2",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter2_5":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure2_5",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons2",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter2_6":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure2_6",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons2",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter3_1":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure3_1",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons3",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter3_2":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure3_2",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons3",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter3_3":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure3_3",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons3",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter3_4":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure3_4",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons3",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter3_5":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure3_5",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons3",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter3_6":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure3_6",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons3",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "meter4":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pressure4",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "meter_base",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "buttons4",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/moth_coat.json b/code/datums/greyscale/json_configs/moth_coat.json
index 84cdfb4821e..4418014be3c 100644
--- a/code/datums/greyscale/json_configs/moth_coat.json
+++ b/code/datums/greyscale/json_configs/moth_coat.json
@@ -1,15 +1,19 @@
{
- "mothcoat": [
- {
- "type": "icon_state",
- "icon_state": "mothcoat",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mothcoat_details",
- "blend_mode": "overlay"
- }
- ]
+ "mothcoat":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "mothcoat",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "mothcoat_details",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/moth_coat_winter.json b/code/datums/greyscale/json_configs/moth_coat_winter.json
index 6c8c36615e3..836e6da9656 100644
--- a/code/datums/greyscale/json_configs/moth_coat_winter.json
+++ b/code/datums/greyscale/json_configs/moth_coat_winter.json
@@ -1,21 +1,25 @@
{
- "mothcoat_winter": [
- {
- "type": "icon_state",
- "icon_state": "mothcoat_mantle_top",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mothcoat_mantle_bottom",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mothcoat_mantle_details",
- "blend_mode": "overlay"
- }
- ]
+ "mothcoat_winter":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "mothcoat_mantle_top",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "mothcoat_mantle_bottom",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "mothcoat_mantle_details",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/moth_coat_winter_worn.json b/code/datums/greyscale/json_configs/moth_coat_winter_worn.json
index 04dce626ce2..ea9505fc056 100644
--- a/code/datums/greyscale/json_configs/moth_coat_winter_worn.json
+++ b/code/datums/greyscale/json_configs/moth_coat_winter_worn.json
@@ -1,21 +1,25 @@
{
- "mothcoat_winter": [
- {
- "type": "icon_state",
- "icon_state": "mothcoat_mantle_top_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mothcoat_mantle_bottom_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mothcoat_mantle_details_worn",
- "blend_mode": "overlay"
- }
- ]
+ "mothcoat_winter":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "mothcoat_mantle_top_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "mothcoat_mantle_bottom_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "mothcoat_mantle_details_worn",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/moth_coat_worn.json b/code/datums/greyscale/json_configs/moth_coat_worn.json
index c04046f7f86..fa657a6e254 100644
--- a/code/datums/greyscale/json_configs/moth_coat_worn.json
+++ b/code/datums/greyscale/json_configs/moth_coat_worn.json
@@ -1,15 +1,19 @@
{
- "mothcoat": [
- {
- "type": "icon_state",
- "icon_state": "mothcoat_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mothcoat_details_worn",
- "blend_mode": "overlay"
- }
- ]
+ "mothcoat":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "mothcoat_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "mothcoat_details_worn",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/pda.json b/code/datums/greyscale/json_configs/pda.json
index c10b453817a..77cb8f683ee 100644
--- a/code/datums/greyscale/json_configs/pda.json
+++ b/code/datums/greyscale/json_configs/pda.json
@@ -1,21 +1,25 @@
{
- "pda": [
- {
- "type": "icon_state",
- "icon_state": "pda_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_buttons",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_screen_borders",
- "blend_mode": "overlay"
- }
- ]
+ "pda":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pda_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_buttons",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_screen_borders",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/pda_captain.json b/code/datums/greyscale/json_configs/pda_captain.json
index 52d3f9d1333..c5e36c1e546 100644
--- a/code/datums/greyscale/json_configs/pda_captain.json
+++ b/code/datums/greyscale/json_configs/pda_captain.json
@@ -1,33 +1,37 @@
{
- "pda": [
- {
- "type": "icon_state",
- "icon_state": "pda_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_buttons",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_stripe_split",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_stripe_thick",
- "blend_mode": "overlay",
- "color_ids": [ 4 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_screen_borders",
- "blend_mode": "overlay"
- }
- ]
+ "pda":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pda_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_buttons",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_stripe_split",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_stripe_thick",
+ "blend_mode": "overlay",
+ "color_ids": [ 4 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_screen_borders",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/pda_chaplain.json b/code/datums/greyscale/json_configs/pda_chaplain.json
index e4e351e339d..cd6593a4ac0 100644
--- a/code/datums/greyscale/json_configs/pda_chaplain.json
+++ b/code/datums/greyscale/json_configs/pda_chaplain.json
@@ -1,26 +1,30 @@
{
- "pda": [
- {
- "type": "icon_state",
- "icon_state": "pda_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_buttons",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_cross",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "pda_screen_borders",
- "blend_mode": "overlay"
- }
- ]
+ "pda":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pda_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_buttons",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_cross",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_screen_borders",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/pda_clown.json b/code/datums/greyscale/json_configs/pda_clown.json
index e9be8922369..41f691c68ce 100644
--- a/code/datums/greyscale/json_configs/pda_clown.json
+++ b/code/datums/greyscale/json_configs/pda_clown.json
@@ -1,9 +1,13 @@
{
- "pda": [
- {
- "type": "icon_state",
- "icon_state": "pda-clown",
- "blend_mode": "overlay"
- }
- ]
+ "pda":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pda-clown",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/pda_head.json b/code/datums/greyscale/json_configs/pda_head.json
index c9f56870373..1095eb7e60c 100644
--- a/code/datums/greyscale/json_configs/pda_head.json
+++ b/code/datums/greyscale/json_configs/pda_head.json
@@ -1,26 +1,30 @@
{
- "pda": [
- {
- "type": "icon_state",
- "icon_state": "pda_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_buttons",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_stripe_head",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "pda_screen_borders",
- "blend_mode": "overlay"
- }
- ]
+ "pda":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pda_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_buttons",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_stripe_head",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_screen_borders",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/pda_mime.json b/code/datums/greyscale/json_configs/pda_mime.json
index dc76e60649b..7f31eaa3818 100644
--- a/code/datums/greyscale/json_configs/pda_mime.json
+++ b/code/datums/greyscale/json_configs/pda_mime.json
@@ -1,26 +1,30 @@
{
- "pda": [
- {
- "type": "icon_state",
- "icon_state": "pda_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_stripe_mime",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "pda_buttons",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_screen_borders",
- "blend_mode": "overlay"
- }
- ]
+ "pda":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pda_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_stripe_mime",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_buttons",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_screen_borders",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/pda_stripe_split.json b/code/datums/greyscale/json_configs/pda_stripe_split.json
index 82aaaac1031..fa6d3eefeba 100644
--- a/code/datums/greyscale/json_configs/pda_stripe_split.json
+++ b/code/datums/greyscale/json_configs/pda_stripe_split.json
@@ -1,27 +1,31 @@
{
- "pda": [
- {
- "type": "icon_state",
- "icon_state": "pda_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_buttons",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_stripe_split",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_screen_borders",
- "blend_mode": "overlay"
- }
- ]
+ "pda":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pda_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_buttons",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_stripe_split",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_screen_borders",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/pda_stripe_thick.json b/code/datums/greyscale/json_configs/pda_stripe_thick.json
index cc730f3816a..cfa16375040 100644
--- a/code/datums/greyscale/json_configs/pda_stripe_thick.json
+++ b/code/datums/greyscale/json_configs/pda_stripe_thick.json
@@ -1,27 +1,31 @@
{
- "pda": [
- {
- "type": "icon_state",
- "icon_state": "pda_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_buttons",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_stripe_thick",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_screen_borders",
- "blend_mode": "overlay"
- }
- ]
+ "pda":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pda_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_buttons",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_stripe_thick",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_screen_borders",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/pda_stripe_thick_head.json b/code/datums/greyscale/json_configs/pda_stripe_thick_head.json
index ea216b2476b..06b34aac7c7 100644
--- a/code/datums/greyscale/json_configs/pda_stripe_thick_head.json
+++ b/code/datums/greyscale/json_configs/pda_stripe_thick_head.json
@@ -1,32 +1,36 @@
{
- "pda": [
- {
- "type": "icon_state",
- "icon_state": "pda_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_buttons",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_stripe_thick",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "pda_stripe_head",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "pda_screen_borders",
- "blend_mode": "overlay"
- }
- ]
+ "pda":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "pda_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_buttons",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_stripe_thick",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_stripe_head",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "pda_screen_borders",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/plushie_lizard.json b/code/datums/greyscale/json_configs/plushie_lizard.json
index 5326beac0b1..01c918ce7b1 100644
--- a/code/datums/greyscale/json_configs/plushie_lizard.json
+++ b/code/datums/greyscale/json_configs/plushie_lizard.json
@@ -1,26 +1,30 @@
{
- "map_plushie_lizard": [
- {
- "type": "icon_state",
- "icon_state": "plushie_lizard_body",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "plushie_lizard_eyes",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "plushie_lizard_tongue",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "plushie_lizard_pupil",
- "blend_mode": "overlay"
- }
- ]
+ "map_plushie_lizard":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "plushie_lizard_body",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "plushie_lizard_eyes",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "plushie_lizard_tongue",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "plushie_lizard_pupil",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/screwdriver.json b/code/datums/greyscale/json_configs/screwdriver.json
index 7604eb07465..e5abb8255ab 100644
--- a/code/datums/greyscale/json_configs/screwdriver.json
+++ b/code/datums/greyscale/json_configs/screwdriver.json
@@ -1,15 +1,19 @@
{
- "screwdriver_map": [
- {
- "type": "icon_state",
- "icon_state": "screwdriver",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "screwdriver_screwybits",
- "blend_mode": "overlay"
- }
- ]
+ "screwdriver_map":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "screwdriver",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "screwdriver_screwybits",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/screwdriver_worn.json b/code/datums/greyscale/json_configs/screwdriver_worn.json
index 9e63bb6b883..91fe1880d0a 100644
--- a/code/datums/greyscale/json_configs/screwdriver_worn.json
+++ b/code/datums/greyscale/json_configs/screwdriver_worn.json
@@ -1,15 +1,19 @@
{
- "screwdriver": [
- {
- "type": "icon_state",
- "icon_state": "screwdriver",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "screwdriver_head",
- "blend_mode": "overlay"
- }
- ]
+ "screwdriver":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "screwdriver",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "screwdriver_head",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/simple_flower.json b/code/datums/greyscale/json_configs/simple_flower.json
index 986615c8f15..09bc0cbd54c 100644
--- a/code/datums/greyscale/json_configs/simple_flower.json
+++ b/code/datums/greyscale/json_configs/simple_flower.json
@@ -1,25 +1,29 @@
{
- "map_flower": [
- {
- "type": "icon_state",
- "icon_state": "flower_petal",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "flower_receptacle",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "flower_filament",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "flower_anthers",
- "blend_mode": "overlay"
- }
- ]
+ "map_flower":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "flower_petal",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "flower_receptacle",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "flower_filament",
+ "blend_mode": "overlay"
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "flower_anthers",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/simple_flower_worn.json b/code/datums/greyscale/json_configs/simple_flower_worn.json
index 9a43d2cbd98..4b77667fc52 100644
--- a/code/datums/greyscale/json_configs/simple_flower_worn.json
+++ b/code/datums/greyscale/json_configs/simple_flower_worn.json
@@ -1,15 +1,19 @@
{
- "map_flower": [
- {
- "type": "icon_state",
- "icon_state": "flower_petals_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "flower_stem_worn",
- "blend_mode": "overlay"
- }
- ]
+ "map_flower":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "flower_petals_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "flower_stem_worn",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/smooth_canister_stationary.json b/code/datums/greyscale/json_configs/smooth_canister_stationary.json
index df01ce1e6d2..9d2d9c311ab 100644
--- a/code/datums/greyscale/json_configs/smooth_canister_stationary.json
+++ b/code/datums/greyscale/json_configs/smooth_canister_stationary.json
@@ -1,186 +1,278 @@
{
- "smooth": [
- {
- "type": "icon_state",
- "icon_state": "smooth",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "window-fg": [
- {
- "type": "icon_state",
- "icon_state": "window-fg",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "window-bg": [
- {
- "type": "icon_state",
- "icon_state": "window-bg",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "1-i": [
- {
- "type": "icon_state",
- "icon_state": "1-i",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "2-i": [
- {
- "type": "icon_state",
- "icon_state": "2-i",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "3-i": [
- {
- "type": "icon_state",
- "icon_state": "3-i",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "4-i": [
- {
- "type": "icon_state",
- "icon_state": "4-i",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "1-n": [
- {
- "type": "icon_state",
- "icon_state": "1-n",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "2-n": [
- {
- "type": "icon_state",
- "icon_state": "2-n",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "3-s": [
- {
- "type": "icon_state",
- "icon_state": "3-s",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "4-s": [
- {
- "type": "icon_state",
- "icon_state": "4-s",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "1-w": [
- {
- "type": "icon_state",
- "icon_state": "1-w",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "2-e": [
- {
- "type": "icon_state",
- "icon_state": "2-e",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "3-w": [
- {
- "type": "icon_state",
- "icon_state": "3-w",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "4-e": [
- {
- "type": "icon_state",
- "icon_state": "4-e",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "1-nw": [
- {
- "type": "icon_state",
- "icon_state": "1-nw",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "2-ne": [
- {
- "type": "icon_state",
- "icon_state": "2-ne",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "3-sw": [
- {
- "type": "icon_state",
- "icon_state": "3-sw",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "4-se": [
- {
- "type": "icon_state",
- "icon_state": "4-se",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "1-f": [
- {
- "type": "icon_state",
- "icon_state": "1-f",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "2-f": [
- {
- "type": "icon_state",
- "icon_state": "2-f",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "3-f": [
- {
- "type": "icon_state",
- "icon_state": "3-f",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "4-f": [
- {
- "type": "icon_state",
- "icon_state": "4-f",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "smooth":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "smooth",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "window-fg":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "window-fg",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "window-bg":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "window-bg",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "1-i":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "1-i",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "2-i":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "2-i",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "3-i":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "3-i",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "4-i":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "4-i",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "1-n":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "1-n",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "2-n":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "2-n",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "3-s":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "3-s",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "4-s":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "4-s",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "1-w":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "1-w",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "2-e":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "2-e",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "3-w":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "3-w",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "4-e":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "4-e",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "1-nw":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "1-nw",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "2-ne":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "2-ne",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "3-sw":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "3-sw",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "4-se":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "4-se",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "1-f":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "1-f",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "2-f":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "2-f",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "3-f":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "3-f",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "4-f":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "4-f",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sneakers.json b/code/datums/greyscale/json_configs/sneakers.json
index 50a064bb02b..5cd4d30f157 100644
--- a/code/datums/greyscale/json_configs/sneakers.json
+++ b/code/datums/greyscale/json_configs/sneakers.json
@@ -1,16 +1,20 @@
{
- "sneakers": [
- {
- "type": "icon_state",
- "icon_state": "sneakers_back",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_front",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "sneakers":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sneakers_marisa.json b/code/datums/greyscale/json_configs/sneakers_marisa.json
index b42838b3e15..fc839629ce9 100644
--- a/code/datums/greyscale/json_configs/sneakers_marisa.json
+++ b/code/datums/greyscale/json_configs/sneakers_marisa.json
@@ -1,21 +1,25 @@
{
- "sneakers": [
- {
- "type": "icon_state",
- "icon_state": "sneakers_back",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_front",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_marisa",
- "blend_mode": "overlay"
- }
- ]
+ "sneakers":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_marisa",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sneakers_orange.json b/code/datums/greyscale/json_configs/sneakers_orange.json
index f0e27c02814..6e421e4b434 100644
--- a/code/datums/greyscale/json_configs/sneakers_orange.json
+++ b/code/datums/greyscale/json_configs/sneakers_orange.json
@@ -1,35 +1,43 @@
{
- "sneakers": [
- {
- "type": "icon_state",
- "icon_state": "sneakers_back",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_front",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "sneakers_chained": [
- {
- "type": "icon_state",
- "icon_state": "sneakers_alt_back",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_alt_front",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_alt_chained",
- "blend_mode": "overlay"
- }
- ]
+ "sneakers":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ },
+ "sneakers_chained":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_alt_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_alt_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_alt_chained",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sneakers_orange_worn.json b/code/datums/greyscale/json_configs/sneakers_orange_worn.json
index fb0a07ff196..85a3aed74b1 100644
--- a/code/datums/greyscale/json_configs/sneakers_orange_worn.json
+++ b/code/datums/greyscale/json_configs/sneakers_orange_worn.json
@@ -1,35 +1,43 @@
{
- "sneakers": [
- {
- "type": "icon_state",
- "icon_state": "sneakers_back",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_front",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "sneakers_chained": [
- {
- "type": "icon_state",
- "icon_state": "sneakers_back",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_front",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_chained",
- "blend_mode": "overlay"
- }
- ]
+ "sneakers":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ },
+ "sneakers_chained":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_chained",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sneakers_wheelys.json b/code/datums/greyscale/json_configs/sneakers_wheelys.json
index 221dd5717fe..9fe98a42d9d 100644
--- a/code/datums/greyscale/json_configs/sneakers_wheelys.json
+++ b/code/datums/greyscale/json_configs/sneakers_wheelys.json
@@ -1,21 +1,25 @@
{
- "sneakers": [
- {
- "type": "icon_state",
- "icon_state": "sneakers_back",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_front",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_wheelys",
- "blend_mode": "overlay"
- }
- ]
+ "sneakers":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_wheelys",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sneakers_worn.json b/code/datums/greyscale/json_configs/sneakers_worn.json
index 50a064bb02b..5cd4d30f157 100644
--- a/code/datums/greyscale/json_configs/sneakers_worn.json
+++ b/code/datums/greyscale/json_configs/sneakers_worn.json
@@ -1,16 +1,20 @@
{
- "sneakers": [
- {
- "type": "icon_state",
- "icon_state": "sneakers_back",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sneakers_front",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "sneakers":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sombrero.json b/code/datums/greyscale/json_configs/sombrero.json
index 8a183c55def..35590541223 100644
--- a/code/datums/greyscale/json_configs/sombrero.json
+++ b/code/datums/greyscale/json_configs/sombrero.json
@@ -1,23 +1,31 @@
{
- "sombrero": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/sombrero/base",
- "blend_mode": "overlay",
- "color_ids": [ 1, 2 ]
- }
- ],
- "shamebrero": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/sombrero/base",
- "blend_mode": "overlay",
- "color_ids": [ 1, 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "dongles",
- "blend_mode": "overlay"
- }
- ]
+ "sombrero":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/sombrero/base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1, 2 ]
+ }
+ ]
+ },
+ "shamebrero":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/sombrero/base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1, 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "dongles",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sombrero_base.json b/code/datums/greyscale/json_configs/sombrero_base.json
index 9f2097ac2e8..da00849bf36 100644
--- a/code/datums/greyscale/json_configs/sombrero_base.json
+++ b/code/datums/greyscale/json_configs/sombrero_base.json
@@ -1,21 +1,25 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "cloth",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "ornamentation",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "plate",
- "blend_mode": "overlay"
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "cloth",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "ornamentation",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "plate",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sombrero_base_lefthand.json b/code/datums/greyscale/json_configs/sombrero_base_lefthand.json
index d9d26e0b9c2..971940c76d6 100644
--- a/code/datums/greyscale/json_configs/sombrero_base_lefthand.json
+++ b/code/datums/greyscale/json_configs/sombrero_base_lefthand.json
@@ -1,16 +1,20 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "cloth_lefthand",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "ornamentation_lefthand",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "cloth_lefthand",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "ornamentation_lefthand",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sombrero_base_righthand.json b/code/datums/greyscale/json_configs/sombrero_base_righthand.json
index 32769cb21be..c45603a19d0 100644
--- a/code/datums/greyscale/json_configs/sombrero_base_righthand.json
+++ b/code/datums/greyscale/json_configs/sombrero_base_righthand.json
@@ -1,16 +1,20 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "cloth_righthand",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "ornamentation_righthand",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "cloth_righthand",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "ornamentation_righthand",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sombrero_base_worn.json b/code/datums/greyscale/json_configs/sombrero_base_worn.json
index e97c1875df4..b24bed99889 100644
--- a/code/datums/greyscale/json_configs/sombrero_base_worn.json
+++ b/code/datums/greyscale/json_configs/sombrero_base_worn.json
@@ -1,21 +1,25 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "cloth_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "ornamentation_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "plate_worn",
- "blend_mode": "overlay"
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "cloth_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "ornamentation_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "plate_worn",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sombrero_lefthand.json b/code/datums/greyscale/json_configs/sombrero_lefthand.json
index 5ba8a89ed28..22499a30499 100644
--- a/code/datums/greyscale/json_configs/sombrero_lefthand.json
+++ b/code/datums/greyscale/json_configs/sombrero_lefthand.json
@@ -1,23 +1,31 @@
{
- "sombrero": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/sombrero/base_lefthand",
- "blend_mode": "overlay",
- "color_ids": [ 1, 2 ]
- }
- ],
- "shamebrero": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/sombrero/base_lefthand",
- "blend_mode": "overlay",
- "color_ids": [ 1, 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "dongles_lefthand",
- "blend_mode": "overlay"
- }
- ]
+ "sombrero":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/sombrero/base_lefthand",
+ "blend_mode": "overlay",
+ "color_ids": [ 1, 2 ]
+ }
+ ]
+ },
+ "shamebrero":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/sombrero/base_lefthand",
+ "blend_mode": "overlay",
+ "color_ids": [ 1, 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "dongles_lefthand",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sombrero_righthand.json b/code/datums/greyscale/json_configs/sombrero_righthand.json
index 07737ad2532..f2895566a9e 100644
--- a/code/datums/greyscale/json_configs/sombrero_righthand.json
+++ b/code/datums/greyscale/json_configs/sombrero_righthand.json
@@ -1,23 +1,31 @@
{
- "sombrero": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/sombrero/base_righthand",
- "blend_mode": "overlay",
- "color_ids": [ 1, 2 ]
- }
- ],
- "shamebrero": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/sombrero/base_righthand",
- "blend_mode": "overlay",
- "color_ids": [ 1, 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "dongles_righthand",
- "blend_mode": "overlay"
- }
- ]
+ "sombrero":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/sombrero/base_righthand",
+ "blend_mode": "overlay",
+ "color_ids": [ 1, 2 ]
+ }
+ ]
+ },
+ "shamebrero":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/sombrero/base_righthand",
+ "blend_mode": "overlay",
+ "color_ids": [ 1, 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "dongles_righthand",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/sombrero_worn.json b/code/datums/greyscale/json_configs/sombrero_worn.json
index a70cd5ce9c7..56b20246e86 100644
--- a/code/datums/greyscale/json_configs/sombrero_worn.json
+++ b/code/datums/greyscale/json_configs/sombrero_worn.json
@@ -1,23 +1,31 @@
{
- "sombrero": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/sombrero/base_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1, 2 ]
- }
- ],
- "shamebrero": [
- {
- "type": "reference",
- "reference_type": "/datum/greyscale_config/sombrero/base_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1, 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "dongles_worn",
- "blend_mode": "overlay"
- }
- ]
+ "sombrero":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/sombrero/base_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1, 2 ]
+ }
+ ]
+ },
+ "shamebrero":
+ {
+ "layers":
+ [
+ {
+ "type": "reference",
+ "reference_type": "/datum/greyscale_config/sombrero/base_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1, 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "dongles_worn",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/structures/fulltile_window.json b/code/datums/greyscale/json_configs/structures/fulltile_window.json
new file mode 100644
index 00000000000..b2b9363d1b9
--- /dev/null
+++ b/code/datums/greyscale/json_configs/structures/fulltile_window.json
@@ -0,0 +1,16 @@
+{
+ "window":
+ {
+ "bitmask_config": 7,
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "window",
+ "blend_mode": "overlay",
+ "bitmask": true,
+ "color_ids": [1]
+ }
+ ]
+ }
+}
diff --git a/code/datums/greyscale/json_configs/structures/low_wall.json b/code/datums/greyscale/json_configs/structures/low_wall.json
new file mode 100644
index 00000000000..0b6ff8c9b9f
--- /dev/null
+++ b/code/datums/greyscale/json_configs/structures/low_wall.json
@@ -0,0 +1,22 @@
+{
+ "wall":
+ {
+ "bitmask_config": 7,
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "wall",
+ "blend_mode": "overlay",
+ "bitmask": true,
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "shine",
+ "blend_mode": "overlay",
+ "bitmask": true
+ }
+ ]
+ }
+}
diff --git a/code/datums/greyscale/json_configs/suspenders.json b/code/datums/greyscale/json_configs/suspenders.json
index e7ac4730563..df0b440012b 100644
--- a/code/datums/greyscale/json_configs/suspenders.json
+++ b/code/datums/greyscale/json_configs/suspenders.json
@@ -1,18 +1,26 @@
{
- "suspenders": [
- {
- "type": "icon_state",
- "icon_state": "suspenders",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "suspenders_t": [
- {
- "type": "icon_state",
- "icon_state": "suspenders_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "suspenders":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "suspenders",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "suspenders_t":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "suspenders_t",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/suspenders_worn.json b/code/datums/greyscale/json_configs/suspenders_worn.json
index e7ac4730563..df0b440012b 100644
--- a/code/datums/greyscale/json_configs/suspenders_worn.json
+++ b/code/datums/greyscale/json_configs/suspenders_worn.json
@@ -1,18 +1,26 @@
{
- "suspenders": [
- {
- "type": "icon_state",
- "icon_state": "suspenders",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "suspenders_t": [
- {
- "type": "icon_state",
- "icon_state": "suspenders_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "suspenders":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "suspenders",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "suspenders_t":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "suspenders_t",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/thermomachine.json b/code/datums/greyscale/json_configs/thermomachine.json
index 37a4cbd6815..82200ed0e6c 100644
--- a/code/datums/greyscale/json_configs/thermomachine.json
+++ b/code/datums/greyscale/json_configs/thermomachine.json
@@ -1,41 +1,54 @@
{
- "thermo_base": [
- {
- "type": "icon_state",
- "icon_state": "temp_meter",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "thermo_base",
- "blend_mode": "overlay"
- }
- ],
- "thermo_1": [
- {
- "type": "icon_state",
- "icon_state": "temp_meter_1",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "thermo_base_1",
- "blend_mode": "overlay"
- }
- ],
- "thermo-open": [
- {
- "type": "icon_state",
- "icon_state": "temp_meter-o",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "thermo_base-o",
- "blend_mode": "overlay"
- }
- ]
+ "thermo_base":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "temp_meter",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "thermo_base",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "thermo_1":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "temp_meter_1",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "thermo_base_1",
+ "blend_mode": "overlay"
+ }
+ ]
+ },
+ "thermo_open":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "temp_meter-o",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "thermo_base-o",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
+
diff --git a/code/datums/greyscale/json_configs/turfs/shineless_wall.json b/code/datums/greyscale/json_configs/turfs/shineless_wall.json
new file mode 100644
index 00000000000..b399839d6f4
--- /dev/null
+++ b/code/datums/greyscale/json_configs/turfs/shineless_wall.json
@@ -0,0 +1,52 @@
+{
+ "wall":
+ {
+ "bitmask_config": 7,
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "wall",
+ "blend_mode": "overlay",
+ "bitmask": true,
+ "color_ids": [1]
+ }
+ ]
+ },
+ "fwall_opening":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "fwall_opening",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ },
+ "fwall_open":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "fwall_open",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ },
+ "fwall_closing":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "fwall_closing",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ }
+}
diff --git a/code/datums/greyscale/json_configs/turfs/shineless_wall_stripe.json b/code/datums/greyscale/json_configs/turfs/shineless_wall_stripe.json
new file mode 100644
index 00000000000..0f7d9305b4b
--- /dev/null
+++ b/code/datums/greyscale/json_configs/turfs/shineless_wall_stripe.json
@@ -0,0 +1,16 @@
+{
+ "wall":
+ {
+ "bitmask_config": 7,
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "wall",
+ "blend_mode": "overlay",
+ "bitmask": true,
+ "color_ids": [1]
+ }
+ ]
+ }
+}
diff --git a/code/datums/greyscale/json_configs/turfs/solid_wall.json b/code/datums/greyscale/json_configs/turfs/solid_wall.json
new file mode 100644
index 00000000000..9bd5f467e8c
--- /dev/null
+++ b/code/datums/greyscale/json_configs/turfs/solid_wall.json
@@ -0,0 +1,58 @@
+{
+ "wall":
+ {
+ "bitmask_config": 7,
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "wall",
+ "blend_mode": "overlay",
+ "bitmask": true,
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "shine",
+ "blend_mode": "overlay",
+ "bitmask": true
+ }
+ ]
+ },
+ "fwall_opening":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "fwall_opening",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ },
+ "fwall_open":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "fwall_open",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ },
+ "fwall_closing":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "fwall_closing",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ }
+}
diff --git a/code/datums/greyscale/json_configs/turfs/wall_neighbor_stripe.json b/code/datums/greyscale/json_configs/turfs/wall_neighbor_stripe.json
new file mode 100644
index 00000000000..36659e88267
--- /dev/null
+++ b/code/datums/greyscale/json_configs/turfs/wall_neighbor_stripe.json
@@ -0,0 +1,22 @@
+{
+ "stripe":
+ {
+ "bitmask_config": 1,
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "stripe",
+ "blend_mode": "overlay",
+ "bitmask": true,
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "shine",
+ "blend_mode": "overlay",
+ "bitmask": true
+ }
+ ]
+ }
+}
diff --git a/code/datums/greyscale/json_configs/turfs/wall_stripe.json b/code/datums/greyscale/json_configs/turfs/wall_stripe.json
new file mode 100644
index 00000000000..0b6ff8c9b9f
--- /dev/null
+++ b/code/datums/greyscale/json_configs/turfs/wall_stripe.json
@@ -0,0 +1,22 @@
+{
+ "wall":
+ {
+ "bitmask_config": 7,
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "wall",
+ "blend_mode": "overlay",
+ "bitmask": true,
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "shine",
+ "blend_mode": "overlay",
+ "bitmask": true
+ }
+ ]
+ }
+}
diff --git a/code/datums/greyscale/json_configs/wintercoats.json b/code/datums/greyscale/json_configs/wintercoats.json
index a1a50b04447..fdeb488740b 100644
--- a/code/datums/greyscale/json_configs/wintercoats.json
+++ b/code/datums/greyscale/json_configs/wintercoats.json
@@ -1,84 +1,92 @@
{
- "coatwinter": [
- {
- "type": "icon_state",
- "icon_state": "neck",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sleeves",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "arms",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodytop",
- "blend_mode": "overlay",
- "color_ids": [ 4 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodymiddle",
- "blend_mode": "overlay",
- "color_ids": [ 5 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodybottom",
- "blend_mode": "overlay",
- "color_ids": [ 6 ]
- }
- ],
- "coatwinter_t": [
- {
- "type": "icon_state",
- "icon_state": "neck",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sleeves",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "arms",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodytop",
- "blend_mode": "overlay",
- "color_ids": [ 4 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodymiddle",
- "blend_mode": "overlay",
- "color_ids": [ 5 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodybottom",
- "blend_mode": "overlay",
- "color_ids": [ 6 ]
- },
- {
- "type": "icon_state",
- "icon_state": "hood",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "coatwinter":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "neck",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sleeves",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "arms",
+ "blend_mode": "overlay",
+ "color_ids": [3]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodytop",
+ "blend_mode": "overlay",
+ "color_ids": [4]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodymiddle",
+ "blend_mode": "overlay",
+ "color_ids": [5]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodybottom",
+ "blend_mode": "overlay",
+ "color_ids": [6]
+ }
+ ]
+ },
+ "coatwinter_t":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "neck",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sleeves",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "arms",
+ "blend_mode": "overlay",
+ "color_ids": [3]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodytop",
+ "blend_mode": "overlay",
+ "color_ids": [4]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodymiddle",
+ "blend_mode": "overlay",
+ "color_ids": [5]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodybottom",
+ "blend_mode": "overlay",
+ "color_ids": [6]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "hood",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/wintercoats_hood.json b/code/datums/greyscale/json_configs/wintercoats_hood.json
index d4ea34aa73a..1ad7615b658 100644
--- a/code/datums/greyscale/json_configs/wintercoats_hood.json
+++ b/code/datums/greyscale/json_configs/wintercoats_hood.json
@@ -1,22 +1,26 @@
{
- "hood_winter": [
- {
- "type": "icon_state",
- "icon_state": "top_trim",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bottom_trim",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "hood_cloth",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
+ "hood_winter":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "top_trim",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bottom_trim",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "hood_cloth",
+ "blend_mode": "overlay",
+ "color_ids": [3]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/wintercoats_hood_worn.json b/code/datums/greyscale/json_configs/wintercoats_hood_worn.json
index d4ea34aa73a..1ad7615b658 100644
--- a/code/datums/greyscale/json_configs/wintercoats_hood_worn.json
+++ b/code/datums/greyscale/json_configs/wintercoats_hood_worn.json
@@ -1,22 +1,26 @@
{
- "hood_winter": [
- {
- "type": "icon_state",
- "icon_state": "top_trim",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bottom_trim",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "hood_cloth",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
+ "hood_winter":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "top_trim",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bottom_trim",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "hood_cloth",
+ "blend_mode": "overlay",
+ "color_ids": [3]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/wintercoats_worn.json b/code/datums/greyscale/json_configs/wintercoats_worn.json
index 59e2e9223b1..dbe87ef7b22 100644
--- a/code/datums/greyscale/json_configs/wintercoats_worn.json
+++ b/code/datums/greyscale/json_configs/wintercoats_worn.json
@@ -1,79 +1,86 @@
{
- "coatwinter": [
- {
- "type": "icon_state",
- "icon_state": "neck_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sleeves_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "arms_worn",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodytop_worn",
- "blend_mode": "overlay",
- "color_ids": [ 4 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodymiddle_worn",
- "blend_mode": "overlay",
- "color_ids": [ 5 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodybottom_worn",
- "blend_mode": "overlay",
- "color_ids": [ 6 ]
- }
- ],
-
- "coatwinter_t": [
- {
- "type": "icon_state",
- "icon_state": "neck_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "sleeves_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "arms_worn",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodytop_worn_t",
- "blend_mode": "overlay",
- "color_ids": [ 4 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodymiddle_worn_t",
- "blend_mode": "overlay",
- "color_ids": [ 5 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bodybottom_worn_t",
- "blend_mode": "overlay",
- "color_ids": [ 6 ]
- }
- ]
+ "coatwinter":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "neck_worn",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sleeves_worn",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "arms_worn",
+ "blend_mode": "overlay",
+ "color_ids": [3]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodytop_worn",
+ "blend_mode": "overlay",
+ "color_ids": [4]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodymiddle_worn",
+ "blend_mode": "overlay",
+ "color_ids": [5]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodybottom_worn",
+ "blend_mode": "overlay",
+ "color_ids": [6]
+ }
+ ]
+ },
+ "coatwinter_t":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "neck_worn",
+ "blend_mode": "overlay",
+ "color_ids": [1]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sleeves_worn",
+ "blend_mode": "overlay",
+ "color_ids": [2]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "arms_worn",
+ "blend_mode": "overlay",
+ "color_ids": [3]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodytop_worn_t",
+ "blend_mode": "overlay",
+ "color_ids": [4]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodymiddle_worn_t",
+ "blend_mode": "overlay",
+ "color_ids": [5]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bodybottom_worn_t",
+ "blend_mode": "overlay",
+ "color_ids": [6]
+ }
+ ]
+ }
}
diff --git a/code/datums/greyscale/json_configs/wirecutters.json b/code/datums/greyscale/json_configs/wirecutters.json
index 0fb5c530eb5..118d1976b3e 100644
--- a/code/datums/greyscale/json_configs/wirecutters.json
+++ b/code/datums/greyscale/json_configs/wirecutters.json
@@ -1,15 +1,20 @@
{
- "cutters_map": [
- {
- "type": "icon_state",
- "icon_state": "cutters",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cutters_cutty_thingy",
- "blend_mode": "overlay"
- }
- ]
+ "cutters_map":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "cutters",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "cutters_cutty_thingy",
+ "blend_mode": "overlay"
+ }
+ ]
+ }
}
+
diff --git a/code/datums/greyscale/json_configs/wrap_paper.json b/code/datums/greyscale/json_configs/wrap_paper.json
index c7ea889bc22..9dddb7673d0 100644
--- a/code/datums/greyscale/json_configs/wrap_paper.json
+++ b/code/datums/greyscale/json_configs/wrap_paper.json
@@ -1,16 +1,21 @@
{
- "": [
- {
- "type": "icon_state",
- "icon_state": "wrap_paper_base",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "wrap_paper_ribbon",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "wrap_paper_base",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "wrap_paper_ribbon",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
+
diff --git a/code/datums/greyscale/layer.dm b/code/datums/greyscale/layer.dm
index 06a001c1ad8..658d1f2dcc4 100644
--- a/code/datums/greyscale/layer.dm
+++ b/code/datums/greyscale/layer.dm
@@ -2,6 +2,7 @@
var/layer_type
var/list/color_ids
var/blend_mode
+ var/bitmask = FALSE
var/static/list/json_readers
@@ -66,19 +67,18 @@
/// Used to actualy create the layer using the given colors
/// Do not override, use InternalGenerate instead
-/datum/greyscale_layer/proc/Generate(list/colors, list/render_steps, icon/new_icon)
+/datum/greyscale_layer/proc/Generate(list/colors, list/render_steps, do_bitmask, bitmask_step)
var/list/processed_colors = list()
for(var/i in color_ids)
if(isnum(i))
processed_colors += colors[i]
else
processed_colors += i
- var/icon/copy_of_new_icon = icon(new_icon) // Layers shouldn't be modifying it directly, this is just for them to reference
- return InternalGenerate(processed_colors, render_steps, copy_of_new_icon)
+ return InternalGenerate(processed_colors, render_steps, do_bitmask, bitmask_step)
/// Override this to implement layers.
/// The colors var will only contain colors that this layer is configured to use.
-/datum/greyscale_layer/proc/InternalGenerate(list/colors, list/render_steps, icon/new_icon)
+/datum/greyscale_layer/proc/InternalGenerate(list/colors, list/render_steps, do_bitmask, bitmask_step)
////////////////////////////////////////////////////////
// Subtypes
@@ -87,15 +87,22 @@
/datum/greyscale_layer/icon_state
layer_type = "icon_state"
var/icon_state
+ var/icon_file
var/icon/icon
var/color_id
/datum/greyscale_layer/icon_state/Initialize(icon_file)
. = ..()
+ src.icon_file = icon_file
var/list/icon_states = icon_states(icon_file)
- if(!(icon_state in icon_states))
- CRASH("Configured icon state \[[icon_state]\] was not found in [icon_file]. Double check your json configuration.")
- icon = new(icon_file, icon_state)
+ var/state_to_check
+ if(bitmask)
+ state_to_check = "[icon_state]-0"
+ else
+ state_to_check = icon_state
+ if(!(state_to_check in icon_states))
+ CRASH("Configured icon state \[[state_to_check]\] was not found in [icon_file]. Double check your json configuration.")
+ icon = new(icon_file, state_to_check)
if(length(color_ids) > 1)
CRASH("Icon state layers can not have more than one color id")
@@ -103,32 +110,23 @@
/datum/greyscale_layer/icon_state/GetExpectedValues(list/required_values, list/optional_values)
. = ..()
required_values[NAMEOF(src, icon_state)] = /datum/json_reader/text
+ optional_values[NAMEOF(src, bitmask)] = /datum/json_reader/number
-/datum/greyscale_layer/icon_state/InternalGenerate(list/colors, list/render_steps, icon/new_icon)
+/datum/greyscale_layer/icon_state/InternalGenerate(list/colors, list/render_steps, do_bitmask, bitmask_step)
. = ..()
- var/icon/generated_icon = icon(icon)
+ var/icon/new_icon
+ if(bitmask && do_bitmask)
+ new_icon = icon(icon_file, "[icon_state]-[bitmask_step]")
+ else
+ new_icon = icon(icon)
if(length(colors))
- generated_icon.Blend(colors[1], ICON_MULTIPLY)
- return generated_icon
-
-/// A layer to modify the previous layer's colors with a color matrix
-/datum/greyscale_layer/color_matrix
- layer_type = "color_matrix"
- var/list/color_matrix
-
-/datum/greyscale_layer/color_matrix/GetExpectedValues(list/required_values, list/optional_values)
- . = ..()
- required_values[NAMEOF(src, color_matrix)] = /datum/json_reader/color_matrix
-
-/datum/greyscale_layer/color_matrix/InternalGenerate(list/colors, list/render_steps, icon/new_icon)
- . = ..()
- new_icon.MapColors(arglist(color_matrix))
+ new_icon.Blend(colors[1], ICON_MULTIPLY)
return new_icon
/// A layer created by using another greyscale icon's configuration
/datum/greyscale_layer/reference
layer_type = "reference"
- var/icon_state = ""
+ var/icon_state
var/datum/greyscale_config/reference_type
/datum/greyscale_layer/reference/GetExpectedValues(list/required_values, list/optional_values)
@@ -140,17 +138,8 @@
. = ..()
return reference_type.Refresh(loadFromDisk=TRUE)
-/datum/greyscale_layer/reference/CrossVerify()
- . = ..()
- if(!reference_type.icon_states[icon_state])
- CRASH("[src] expects icon_state '[icon_state]' but referenced configuration '[reference_type]' does not have it.")
-
-/datum/greyscale_layer/reference/InternalGenerate(list/colors, list/render_steps, icon/new_icon)
- var/icon/generated_icon
+/datum/greyscale_layer/reference/InternalGenerate(list/colors, list/render_steps, do_bitmask, bitmask_step)
if(render_steps)
- var/list/reference_data = list()
- generated_icon = reference_type.GenerateBundle(colors, reference_data, new_icon)
- render_steps += reference_data[icon_state]
+ return reference_type.GenerateBundle(colors, render_steps)
else
- generated_icon = reference_type.Generate(colors.Join(), new_icon)
- return icon(generated_icon, icon_state)
+ return reference_type.Generate(colors.Join(), null, do_bitmask, bitmask_step)
diff --git a/code/datums/greyscale/state.dm b/code/datums/greyscale/state.dm
new file mode 100644
index 00000000000..f7ccb99fe21
--- /dev/null
+++ b/code/datums/greyscale/state.dm
@@ -0,0 +1,11 @@
+/// An icon state information for GAGS system
+/datum/greyscale_state
+ /// Flags for the bitmasking configuration
+ var/bitmask_config = NONE
+ var/default_state_if_bitmask = FALSE
+ /// List of `/datum/greyscale_layer`
+ var/list/layers
+
+/datum/greyscale_state/New(layers, bitmask_config, default_state_if_bitmask)
+ src.layers = layers
+ src.bitmask_config = bitmask_config
diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm
index 7eed429ad3d..50b1ee7febc 100644
--- a/code/datums/materials/_material.dm
+++ b/code/datums/materials/_material.dm
@@ -46,6 +46,20 @@ Simple datum which is instanced once per type and is used for every object of sa
var/cached_texture_filter_icon
///What type of shard the material will shatter to
var/obj/item/shard_type
+ ///Icon for walls which are plated with this material
+ var/wall_greyscale_config = /datum/greyscale_config/solid_wall
+ ///Icon for reinforced walls which are plated with this material
+ var/reinforced_wall_greyscale_config = /datum/greyscale_config/reinforced_solid_wall
+ /// Icon for painted stripes on the walls
+ var/wall_stripe_greyscale_config = /datum/greyscale_config/wall_stripe
+ /// Color of walls constructed with this material as their plating
+ var/wall_color
+ /// Type of the wall this material makes when its used as a plating, null means can't make a wall out of it.
+ var/wall_type = /turf/closed/wall
+ /// Type of the false wall this material will make when used as its plating
+ var/false_wall_type
+ /// If true, walls plated with this material that have a reinforcement, will be hard to deconstruct
+ var/hard_wall_decon = FALSE
/** Handles initializing the material.
*
@@ -58,6 +72,12 @@ Simple datum which is instanced once per type and is used for every object of sa
else if(isnull(id))
id = type
+ if(!wall_color)
+ wall_color = greyscale_colors
+
+ if(wall_type && !false_wall_type)
+ false_wall_type = /obj/structure/falsewall
+
if(texture_layer_icon_state)
cached_texture_filter_icon = icon('icons/materials/composite.dmi', texture_layer_icon_state)
diff --git a/code/datums/materials/alloys.dm b/code/datums/materials/alloys.dm
index f92df020843..5cf866b2bab 100644
--- a/code/datums/materials/alloys.dm
+++ b/code/datums/materials/alloys.dm
@@ -40,6 +40,8 @@
sheet_type = /obj/item/stack/sheet/plasteel
categories = list(MAT_CATEGORY_RIGID=TRUE, MAT_CATEGORY_BASE_RECIPES=TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
composition = list(/datum/material/iron=1, /datum/material/plasma=1)
+ wall_color = "#57575c"
+ hard_wall_decon = TRUE
/datum/material/alloy/plasteel/on_applied_obj(obj/item/target_item, amount, material_flags)
. = ..()
@@ -73,6 +75,11 @@
sheet_type = /obj/item/stack/sheet/mineral/plastitanium
categories = list(MAT_CATEGORY_RIGID=TRUE, MAT_CATEGORY_BASE_RECIPES=TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
composition = list(/datum/material/titanium=1, /datum/material/plasma=1)
+ wall_greyscale_config = /datum/greyscale_config/metal_wall
+ wall_type = /turf/closed/wall/mineral/plastitanium
+ false_wall_type = /obj/structure/falsewall/plastitanium
+ hard_wall_decon = TRUE
+ wall_color = "#423b3b"
/** Plasmaglass
*
@@ -92,6 +99,7 @@
value_per_unit = 0.075
categories = list(MAT_CATEGORY_RIGID=TRUE, MAT_CATEGORY_BASE_RECIPES=TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
composition = list(/datum/material/glass=1, /datum/material/plasma=0.5)
+ wall_type = null
/** Titaniumglass
*
@@ -110,6 +118,7 @@
value_per_unit = 0.04
categories = list(MAT_CATEGORY_RIGID=TRUE, MAT_CATEGORY_BASE_RECIPES=TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
composition = list(/datum/material/glass=1, /datum/material/titanium=0.5)
+ wall_type = null
/** Plastitanium Glass
*
@@ -149,6 +158,7 @@
value_per_unit = 0.4
categories = list(MAT_CATEGORY_RIGID=TRUE, MAT_CATEGORY_BASE_RECIPES=TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
composition = list(/datum/material/iron=2, /datum/material/plasma=2)
+ hard_wall_decon = TRUE
/datum/material/alloy/alien/on_applied_obj(obj/item/target_item, amount, material_flags)
. = ..()
diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm
index c16526aface..660725390c2 100644
--- a/code/datums/materials/basemats.dm
+++ b/code/datums/materials/basemats.dm
@@ -7,6 +7,7 @@
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/iron
value_per_unit = 0.0025
+ wall_color = "#57575c"
/datum/material/iron/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5)
@@ -26,6 +27,7 @@
value_per_unit = 0.0025
beauty_modifier = 0.05
armor_modifiers = list(MELEE = 0.2, BULLET = 0.2, LASER = 0, ENERGY = 1, BOMB = 0, BIO = 0.2, FIRE = 1, ACID = 0.2)
+ wall_type = null
/datum/material/glass/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5, sharpness = TRUE) //cronch
@@ -46,6 +48,8 @@ Unless you know what you're doing, only use the first three numbers. They're in
sheet_type = /obj/item/stack/sheet/mineral/silver
value_per_unit = 0.025
beauty_modifier = 0.075
+ wall_type = /turf/closed/wall/mineral/silver
+ false_wall_type = /obj/structure/falsewall/silver
/datum/material/silver/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5)
@@ -63,6 +67,8 @@ Unless you know what you're doing, only use the first three numbers. They're in
value_per_unit = 0.0625
beauty_modifier = 0.15
armor_modifiers = list(MELEE = 1.1, BULLET = 1.1, LASER = 1.15, ENERGY = 1.15, BOMB = 1, BIO = 1, FIRE = 0.7, ACID = 1.1)
+ wall_type = /turf/closed/wall/mineral/gold
+ false_wall_type = /obj/structure/falsewall/gold
/datum/material/gold/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
victim.apply_damage(10, BRUTE, BODY_ZONE_HEAD, wound_bonus = 5)
@@ -80,6 +86,8 @@ Unless you know what you're doing, only use the first three numbers. They're in
value_per_unit = 0.25
beauty_modifier = 0.3
armor_modifiers = list(MELEE = 1.3, BULLET = 1.3, LASER = 0.6, ENERGY = 1, BOMB = 1.2, BIO = 1, FIRE = 1, ACID = 1)
+ wall_type = /turf/closed/wall/mineral/diamond
+ false_wall_type = /obj/structure/falsewall/diamond
/datum/material/diamond/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
victim.apply_damage(15, BRUTE, BODY_ZONE_HEAD, wound_bonus = 7)
@@ -96,6 +104,8 @@ Unless you know what you're doing, only use the first three numbers. They're in
value_per_unit = 0.05
beauty_modifier = 0.3 //It shines so beautiful
armor_modifiers = list(MELEE = 1.5, BULLET = 1.4, LASER = 0.5, ENERGY = 0.5, BOMB = 0, BIO = 0, FIRE = 1, ACID = 1)
+ wall_type = /turf/closed/wall/mineral/uranium
+ false_wall_type = /obj/structure/falsewall/uranium
/datum/material/uranium/on_applied(atom/source, amount, material_flags)
. = ..()
@@ -132,6 +142,8 @@ Unless you know what you're doing, only use the first three numbers. They're in
value_per_unit = 0.1
beauty_modifier = 0.15
armor_modifiers = list(MELEE = 1.4, BULLET = 0.7, LASER = 0, ENERGY = 1.2, BOMB = 0, BIO = 1.2, FIRE = 0, ACID = 0.5)
+ wall_type = /turf/closed/wall/mineral/plasma
+ false_wall_type = /obj/structure/falsewall/plasma
/datum/material/plasma/on_applied(atom/source, amount, material_flags)
. = ..()
@@ -163,6 +175,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
beauty_modifier = 0.5
sheet_type = /obj/item/stack/sheet/bluespace_crystal
value_per_unit = 0.15
+ wall_type = null
/datum/material/bluespace/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
victim.reagents.add_reagent(/datum/reagent/bluespace, rand(5, 8))
@@ -180,6 +193,8 @@ Unless you know what you're doing, only use the first three numbers. They're in
value_per_unit = 0.5
beauty_modifier = 0.5
armor_modifiers = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 100, BIO = 0, FIRE = 10, ACID = 0) //Clowns cant be blown away.
+ wall_type = /turf/closed/wall/mineral/bananium
+ false_wall_type = /obj/structure/falsewall/bananium
/datum/material/bananium/on_applied(atom/source, amount, material_flags)
. = ..()
@@ -206,8 +221,10 @@ Unless you know what you're doing, only use the first three numbers. They're in
categories = list(MAT_CATEGORY_ORE = TRUE, MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
sheet_type = /obj/item/stack/sheet/mineral/titanium
value_per_unit = 0.0625
- beauty_modifier = 0.05
armor_modifiers = list(MELEE = 1.35, BULLET = 1.3, LASER = 1.3, ENERGY = 1.25, BOMB = 1.25, BIO = 1, FIRE = 0.7, ACID = 1)
+ wall_greyscale_config = /datum/greyscale_config/metal_wall
+ wall_type = /turf/closed/wall/mineral/titanium
+ false_wall_type = /obj/structure/falsewall/titanium
/datum/material/titanium/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
victim.apply_damage(15, BRUTE, BODY_ZONE_HEAD, wound_bonus = 7)
@@ -265,9 +282,13 @@ Unless you know what you're doing, only use the first three numbers. They're in
sheet_type = /obj/item/stack/sheet/mineral/wood
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE, MAT_CATEGORY_ITEM_MATERIAL=TRUE)
value_per_unit = 0.01
- beauty_modifier = 0.1
armor_modifiers = list(MELEE = 1.1, BULLET = 1.1, LASER = 0.4, ENERGY = 0.4, BOMB = 1, BIO = 0.2, FIRE = 0, ACID = 0.3)
texture_layer_icon_state = "woodgrain"
+ wall_greyscale_config = /datum/greyscale_config/wood_wall
+ wall_stripe_greyscale_config = /datum/greyscale_config/wood_wall_stripe
+ wall_color = "#93662C"
+ wall_type = /turf/closed/wall/mineral/wood
+ false_wall_type = /obj/structure/falsewall/wood
/datum/material/wood/on_applied_obj(obj/source, amount, material_flags)
. = ..()
@@ -404,9 +425,9 @@ Unless you know what you're doing, only use the first three numbers. They're in
sheet_type = /obj/item/stack/sheet/mineral/sandstone
value_per_unit = 0.0025
armor_modifiers = list(MELEE = 0.5, BULLET = 0.5, LASER = 1.25, ENERGY = 0.5, BOMB = 0.5, BIO = 0.25, FIRE = 1.5, ACID = 1.5)
- beauty_modifier = 0.3
turf_sound_override = FOOTSTEP_WOOD
texture_layer_icon_state = "brick"
+ wall_greyscale_config = /datum/greyscale_config/stone_wall
/datum/material/snow
name = "snow"
@@ -417,9 +438,9 @@ Unless you know what you're doing, only use the first three numbers. They're in
sheet_type = /obj/item/stack/sheet/mineral/snow
value_per_unit = 0.0025
armor_modifiers = list(MELEE = 0.25, BULLET = 0.25, LASER = 0.25, ENERGY = 0.25, BOMB = 0.25, BIO = 0.25, FIRE = 0.25, ACID = 1.5)
- beauty_modifier = 0.3
turf_sound_override = FOOTSTEP_SAND
texture_layer_icon_state = "sand"
+ wall_greyscale_config = /datum/greyscale_config/stone_wall
/datum/material/snow/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
victim.reagents.add_reagent(/datum/reagent/water, rand(5, 10))
@@ -434,8 +455,8 @@ Unless you know what you're doing, only use the first three numbers. They're in
sheet_type = /obj/item/stack/sheet/runed_metal
value_per_unit = 0.75
armor_modifiers = list(MELEE = 1.2, BULLET = 1.2, LASER = 1, ENERGY = 1, BOMB = 1.2, BIO = 1.2, FIRE = 1.5, ACID = 1.5)
- beauty_modifier = -0.15
texture_layer_icon_state = "runed"
+ wall_greyscale_config = /datum/greyscale_config/cult_wall
/datum/material/runedmetal/on_accidental_mat_consumption(mob/living/carbon/victim, obj/item/source_item)
victim.reagents.add_reagent(/datum/reagent/fuel/unholywater, rand(8, 12))
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index 4941064217f..44057df5025 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -14,6 +14,7 @@
resistance_flags = FIRE_PROOF
damage_deflection = 70
can_open_with_hands = FALSE
+ smoothing_groups = list(SMOOTH_GROUP_SHUTTERS_BLASTDOORS)
var/datum/crafting_recipe/recipe_type = /datum/crafting_recipe/blast_doors
var/deconstruction = BLASTDOOR_FINISHED // deconstruction step
var/id = 1
diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm
index ee2dbb64203..77f2fe6386d 100644
--- a/code/game/objects/effects/contraband.dm
+++ b/code/game/objects/effects/contraband.dm
@@ -137,13 +137,6 @@
to_chat(user, span_warning("[P] has no poster... inside it? Inform a coder!"))
return
- // Deny placing posters on currently-diagonal walls, although the wall may change in the future.
- if (smoothing_flags & SMOOTH_DIAGONAL_CORNERS)
- for (var/O in overlays)
- var/image/I = O
- if(copytext(I.icon_state, 1, 3) == "d-") //3 == length("d-") + 1
- return
-
var/stuff_on_wall = 0
for(var/obj/O in contents) //Let's see if it already has a poster on it or too much stuff
if(istype(O, /obj/structure/sign/poster))
diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm
index 06ff319eb64..a3191f31189 100644
--- a/code/game/objects/effects/effect_system/effects_foam.dm
+++ b/code/game/objects/effects/effect_system/effects_foam.dm
@@ -271,18 +271,13 @@
opacity = TRUE // changed in New()
anchored = TRUE
layer = EDGED_TURF_LAYER
- plane = GAME_PLANE_UPPER
resistance_flags = FIRE_PROOF | ACID_PROOF
name = "foamed metal"
- desc = "A lightweight foamed metal wall that can be used as base to construct a wall."
+ desc = "A lightweight foamed metal wall."
gender = PLURAL
max_integrity = 20
- can_atmos_pass = ATMOS_PASS_DENSITY
- obj_flags = CAN_BE_HIT | BLOCK_Z_IN_DOWN | BLOCK_Z_IN_UP
- ///Var used to prevent spamming of the construction sound
- var/next_beep = 0
-/obj/structure/foamedmetal/Initialize(mapload)
+/obj/structure/foamedmetal/Initialize()
. = ..()
air_update_turf(TRUE, TRUE)
@@ -310,37 +305,6 @@
to_chat(user, span_warning("You hit [src] but bounce off it!"))
playsound(src.loc, 'sound/weapons/tap.ogg', 100, TRUE)
-/obj/structure/foamedmetal/attackby(obj/item/W, mob/user, params)
- ///A speed modifier for how fast the wall is build
- var/platingmodifier = 1
- if(HAS_TRAIT(user, TRAIT_QUICK_BUILD))
- platingmodifier = 0.7
- if(next_beep <= world.time)
- next_beep = world.time + 1 SECONDS
- playsound(src, 'sound/machines/clockcult/integration_cog_install.ogg', 50, TRUE)
- add_fingerprint(user)
-
- if(!istype(W, /obj/item/stack/sheet))
- return ..()
-
- var/obj/item/stack/sheet/sheet_for_plating = W
- if(istype(sheet_for_plating, /obj/item/stack/sheet/iron))
- if(sheet_for_plating.get_amount() < 2)
- to_chat(user, span_warning("You need two sheets of iron to finish a wall on [src]!"))
- return
- to_chat(user, span_notice("You start adding plating to the foam structure..."))
- if (do_after(user, 40*platingmodifier, target = src))
- if(!sheet_for_plating.use(2))
- return
- to_chat(user, span_notice("You add the plating."))
- var/turf/T = get_turf(src)
- T.PlaceOnTop(/turf/closed/wall/metal_foam_base)
- transfer_fingerprints_to(T)
- qdel(src)
- return
-
- add_hiddenprint(user)
-
/obj/structure/foamedmetal/iron
max_integrity = 50
icon_state = "ironfoam"
diff --git a/code/game/objects/effects/spawners/structure.dm b/code/game/objects/effects/spawners/structure.dm
index 40edbf913f0..77c97d71616 100644
--- a/code/game/objects/effects/spawners/structure.dm
+++ b/code/game/objects/effects/spawners/structure.dm
@@ -22,7 +22,7 @@ again.
icon = 'icons/obj/structures_spawners.dmi'
icon_state = "window_spawner"
name = "window spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/fulltile)
+ spawn_list = list(/obj/structure/low_wall, /obj/structure/window/fulltile)
dir = SOUTH
/obj/effect/spawner/structure/window/Initialize(mapload)
@@ -32,6 +32,11 @@ again.
var/turf/current_turf = get_turf(src)
current_turf.rcd_memory = RCD_MEMORY_WINDOWGRILLE
+/obj/effect/spawner/structure/window/wood
+ name = "window with wooden low wall spawner"
+ spawn_list = list(/obj/structure/low_wall/wood, /obj/structure/window/fulltile)
+
+
/obj/effect/spawner/structure/window/hollow
name = "hollow window spawner"
icon_state = "hwindow_spawner_full"
@@ -91,7 +96,16 @@ again.
/obj/effect/spawner/structure/window/reinforced
name = "reinforced window spawner"
icon_state = "rwindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/fulltile)
+ spawn_list = list(/obj/structure/low_wall, /obj/structure/window/reinforced/fulltile)
+
+/obj/effect/spawner/structure/window/reinforced/grille
+ name = "reinforced window with grille spawner"
+ spawn_list = list(/obj/structure/grille, /obj/structure/low_wall, /obj/structure/window/reinforced/fulltile)
+
+/obj/effect/spawner/structure/window/reinforced/wood
+ name = "reinforced window with wooden low wall spawner"
+ icon_state = "rwindow_spawner"
+ spawn_list = list(/obj/structure/low_wall/wood, /obj/structure/window/reinforced/fulltile)
/obj/effect/spawner/structure/window/hollow/reinforced
name = "hollow reinforced window spawner"
@@ -152,7 +166,11 @@ again.
/obj/effect/spawner/structure/window/reinforced/tinted
name = "tinted reinforced window spawner"
icon_state = "twindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/tinted/fulltile)
+ spawn_list = list(/obj/structure/low_wall, /obj/structure/window/reinforced/tinted/fulltile)
+
+/obj/effect/spawner/structure/window/reinforced/tinted/grille
+ name = "tinted reinforced window with grille spawner"
+ spawn_list = list(/obj/structure/grille, /obj/structure/low_wall, /obj/structure/window/reinforced/tinted/fulltile)
//bronze
@@ -167,7 +185,7 @@ again.
/obj/effect/spawner/structure/window/reinforced/shuttle
name = "shuttle window spawner"
icon_state = "swindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/shuttle)
+ spawn_list = list(/obj/structure/low_wall/titanium, /obj/structure/window/reinforced/shuttle)
//plastitanium window
@@ -175,7 +193,7 @@ again.
/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium
name = "plastitanium window spawner"
icon_state = "plastitaniumwindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/plasma/plastitanium)
+ spawn_list = list(/obj/structure/low_wall/plastitanium, /obj/structure/window/reinforced/plasma/plastitanium)
//ice window
@@ -183,7 +201,7 @@ again.
/obj/effect/spawner/structure/window/ice
name = "ice window spawner"
icon_state = "icewindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/fulltile/ice)
+ spawn_list = list(/obj/structure/low_wall, /obj/structure/window/reinforced/fulltile/ice)
//survival pod window
@@ -253,7 +271,7 @@ again.
/obj/effect/spawner/structure/window/plasma
name = "plasma window spawner"
icon_state = "pwindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/plasma/fulltile)
+ spawn_list = list(/obj/structure/low_wall, /obj/structure/window/plasma/fulltile)
/obj/effect/spawner/structure/window/hollow/plasma
name = "hollow plasma window spawner"
@@ -314,7 +332,7 @@ again.
/obj/effect/spawner/structure/window/reinforced/plasma
name = "reinforced plasma window spawner"
icon_state = "prwindow_spawner"
- spawn_list = list(/obj/structure/grille, /obj/structure/window/reinforced/plasma/fulltile)
+ spawn_list = list(/obj/structure/grille, /obj/structure/low_wall, /obj/structure/window/reinforced/plasma/fulltile)
/obj/effect/spawner/structure/window/hollow/reinforced/plasma
name = "hollow reinforced plasma window spawner"
diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm
index 2c9a60067f2..b5356af6618 100644
--- a/code/game/objects/items/RCD.dm
+++ b/code/game/objects/items/RCD.dm
@@ -260,7 +260,7 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window())
// and referencing that. I don't know why.
/proc/init_holographic_wall()
return getHologramIcon(
- icon('icons/turf/walls/wall.dmi', "wall-0"),
+ icon('icons/turf/walls/legacy/wall.dmi', "wall-0"),
opacity = 1,
)
diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm
index 8f3b55010bf..94bcc9676a3 100644
--- a/code/game/objects/items/paint.dm
+++ b/code/game/objects/items/paint.dm
@@ -16,6 +16,10 @@
/// How many uses are left
var/paintleft = 10
+/obj/item/paint/examine(mob/user)
+ . = ..()
+ . += span_notice("Paint wall stripes by right clicking a walls.")
+
/obj/item/paint/red
name = "red paint"
paint_color = COLOR_RED
@@ -56,6 +60,17 @@
name = "adaptive paint"
icon_state = "paint_neutral"
+/obj/item/paint/anycolor/examine(mob/user)
+ . = ..()
+ . += span_notice("Choose a basic color by using the paint.")
+ . += span_notice("Choose any color by alt-clicking the paint.")
+
+/obj/item/paint/anycolor/AltClick(mob/living/user)
+ var/new_paint_color = input(user, "Choose new paint color", "Paint Color", paint_color) as color|null
+ if(new_paint_color)
+ paint_color = new_paint_color
+ icon_state = "paint_neutral"
+
/obj/item/paint/anycolor/attack_self(mob/user)
var/list/possible_colors = list(
"black" = image(icon = src.icon, icon_state = "paint_black"),
@@ -102,28 +117,121 @@
return FALSE
return TRUE
-/obj/item/paint/afterattack(atom/target, mob/user, proximity)
+/obj/item/paint/afterattack(atom/target, mob/user, proximity, params)
. = ..()
+ if(.)
+ return
if(!proximity)
return
+ var/list/modifiers = params2list(params)
if(paintleft <= 0)
icon_state = "paint_empty"
return
+ if(istype(target, /obj/structure/low_wall))
+ var/obj/structure/low_wall/target_low_wall = target
+ if(LAZYACCESS(modifiers, RIGHT_CLICK))
+ target_low_wall.set_stripe_paint(paint_color)
+ else
+ target_low_wall.set_wall_paint(paint_color)
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.visible_message(span_notice("[user] paints \the [target_low_wall]."), \
+ span_notice("You paint \the [target_low_wall]."))
+ return TRUE
+ if(iswall(target))
+ var/turf/closed/wall/target_wall = target
+ if(LAZYACCESS(modifiers, RIGHT_CLICK))
+ target_wall.paint_stripe(paint_color)
+ else
+ target_wall.paint_wall(paint_color)
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.visible_message(span_notice("[user] paints \the [target_wall]."), \
+ span_notice("You paint \the [target_wall]."))
+ return TRUE
+ if(isfalsewall(target))
+ var/obj/structure/falsewall/target_falsewall = target
+ if(LAZYACCESS(modifiers, RIGHT_CLICK))
+ target_falsewall.paint_stripe(paint_color)
+ else
+ target_falsewall.paint_wall(paint_color)
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.visible_message(span_notice("[user] paints \the [target_falsewall]."), \
+ span_notice("You paint \the [target_falsewall]."))
+ return TRUE
if(!isturf(target) || isspaceturf(target))
- return
+ return TRUE
target.add_atom_colour(paint_color, WASHABLE_COLOUR_PRIORITY)
-/obj/item/paint/paint_remover
+/obj/item/paint_remover
gender = PLURAL
name = "paint remover"
desc = "Used to remove color from anything."
+ icon = 'icons/obj/items_and_weapons.dmi'
icon_state = "paint_neutral"
+ inhand_icon_state = "paintcan"
+ w_class = WEIGHT_CLASS_NORMAL
+ resistance_flags = FLAMMABLE
+ max_integrity = 100
+
+/obj/item/paint_remover/examine(mob/user)
+ . = ..()
+ . += span_notice("Remove wall stripe paint by right-clicking a wall.")
-/obj/item/paint/paint_remover/afterattack(atom/target, mob/user, proximity)
+/obj/item/paint_remover/afterattack(atom/target, mob/user, proximity, params)
. = ..()
+ if(.)
+ return
if(!proximity)
return
- if(!isturf(target) || !isobj(target))
+ var/list/modifiers = params2list(params)
+ if(istype(target, /obj/structure/low_wall))
+ var/obj/structure/low_wall/target_low_wall = target
+ if(LAZYACCESS(modifiers, RIGHT_CLICK))
+ if(!target_low_wall.stripe_paint)
+ to_chat(user, span_warning("There is no paint to strip!"))
+ return TRUE
+ target_low_wall.set_stripe_paint(null)
+ else
+ if(!target_low_wall.wall_paint)
+ to_chat(user, span_warning("There is no paint to strip!"))
+ return TRUE
+ target_low_wall.set_wall_paint(null)
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.visible_message(span_notice("[user] strips the paint from \the [target_low_wall]."), \
+ span_notice("You strip the paint from \the [target_low_wall]."))
+ return TRUE
+ if(iswall(target))
+ var/turf/closed/wall/target_wall = target
+ if(LAZYACCESS(modifiers, RIGHT_CLICK))
+ if(!target_wall.stripe_paint)
+ to_chat(user, span_warning("There is no paint to strip!"))
+ return TRUE
+ target_wall.paint_stripe(null)
+ else
+ if(!target_wall.wall_paint)
+ to_chat(user, span_warning("There is no paint to strip!"))
+ return TRUE
+ target_wall.paint_wall(null)
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.visible_message(span_notice("[user] strips the paint from \the [target_wall]."), \
+ span_notice("You strip the paint from \the [target_wall]."))
+ return TRUE
+ if(isfalsewall(target))
+ var/obj/structure/falsewall/target_falsewall = target
+ if(LAZYACCESS(modifiers, RIGHT_CLICK))
+ if(!target_falsewall.stripe_paint)
+ to_chat(user, span_warning("There is no paint to strip!"))
+ return TRUE
+ target_falsewall.paint_stripe(null)
+ else
+ if(!target_falsewall.wall_paint)
+ to_chat(user, span_warning("There is no paint to strip!"))
+ return TRUE
+ target_falsewall.paint_wall(null)
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.visible_message(span_notice("[user] strips the paint from \the [target_falsewall]."), \
+ span_notice("You strip the paint from \the [target_falsewall]."))
+ return TRUE
+ if(!isturf(target) && !isobj(target))
return
if(target.color != initial(target.color))
target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY)
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index d8dd5a03f6e..149db4fbfbf 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -32,6 +32,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
matter_amount = 4
cost = 500
source = /datum/robot_energy_storage/glass
+ window_type = /obj/structure/window/fulltile
/obj/item/stack/sheet/glass/suicide_act(mob/living/carbon/user)
user.visible_message(span_suicide("[user] begins to slice [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
@@ -94,6 +95,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10)
material_flags = NONE
tableVariant = /obj/structure/table/glass/plasmaglass
+ window_type = /obj/structure/window/plasma/fulltile
/obj/item/stack/sheet/plasmaglass/fifty
amount = 50
@@ -149,6 +151,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
point_value = 4
matter_amount = 6
tableVariant = /obj/structure/table/reinforced/rglass
+ window_type = /obj/structure/window/reinforced/fulltile
/obj/item/stack/sheet/rglass/attackby(obj/item/W, mob/user, params)
add_fingerprint(user)
@@ -202,6 +205,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
point_value = 23
matter_amount = 8
tableVariant = /obj/structure/table/reinforced/plasmarglass
+ window_type = /obj/structure/window/reinforced/plasma/fulltile
/obj/item/stack/sheet/plasmarglass/get_main_recipes()
. = ..()
@@ -224,6 +228,7 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list(
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/titaniumglass
tableVariant = /obj/structure/table/reinforced/titaniumglass
+ window_type = /obj/structure/window/reinforced/shuttle
/obj/item/stack/sheet/titaniumglass/fifty
amount = 50
@@ -250,6 +255,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
resistance_flags = ACID_PROOF
merge_type = /obj/item/stack/sheet/plastitaniumglass
tableVariant = /obj/structure/table/reinforced/plastitaniumglass
+ window_type = /obj/structure/window/reinforced/plasma/plastitanium
/obj/item/stack/sheet/plastitaniumglass/get_main_recipes()
. = ..()
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 4ec51231657..c477fc1815d 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -73,6 +73,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \
new/datum/stack_recipe("iron rod", /obj/item/stack/rods, 1, 2, 60), \
null, \
new/datum/stack_recipe("wall girders (anchored)", /obj/structure/girder, 2, time = 40, one_per_turf = TRUE, on_floor = TRUE, trait_booster = TRAIT_QUICK_BUILD, trait_modifier = 0.75), \
+ new/datum/stack_recipe("low wall", /obj/structure/low_wall, 2, time = 40, one_per_turf = TRUE, on_floor = TRUE, trait_booster = TRAIT_QUICK_BUILD, trait_modifier = 0.75), \
null, \
new/datum/stack_recipe("tram wall girders (anchored)", /obj/structure/girder/tram, 2, time = 40, one_per_turf = TRUE, on_floor = FALSE, on_tram = TRUE, trait_booster = TRAIT_QUICK_BUILD, trait_modifier = 0.75), \
null, \
@@ -284,6 +285,8 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
new /datum/stack_recipe("pew (right)", /obj/structure/chair/pew/right, 3, one_per_turf = TRUE, on_floor = TRUE)
)),
null, \
+ new/datum/stack_recipe("low wall", /obj/structure/low_wall/wood, 2, time = 40, one_per_turf = TRUE, on_floor = TRUE, trait_booster = TRAIT_QUICK_BUILD, trait_modifier = 0.75), \
+ null, \
))
/obj/item/stack/sheet/mineral/wood
@@ -345,7 +348,6 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \
merge_type = /obj/item/stack/sheet/mineral/bamboo
grind_results = list(/datum/reagent/cellulose = 10)
material_type = /datum/material/bamboo
- walltype = /turf/closed/wall/mineral/bamboo
/obj/item/stack/sheet/mineral/bamboo/get_main_recipes()
. = ..()
@@ -661,6 +663,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
material_type = /datum/material/bronze
walltype = /turf/closed/wall/mineral/bronze
has_unique_girder = TRUE
+ window_type = /obj/structure/window/bronze/fulltile
/obj/item/stack/sheet/bronze/get_main_recipes()
. = ..()
diff --git a/code/game/objects/items/stacks/sheets/sheets.dm b/code/game/objects/items/stacks/sheets/sheets.dm
index 99a26832268..9e7110e29c9 100644
--- a/code/game/objects/items/stacks/sheets/sheets.dm
+++ b/code/game/objects/items/stacks/sheets/sheets.dm
@@ -17,6 +17,8 @@
///What type of wall does this sheet spawn
var/walltype
var/tram_wall_type
+ /// What type of fulltile window this sheet can construct.
+ var/window_type
/obj/item/stack/sheet/Initialize(mapload, new_amount, merge = TRUE, list/mat_override=null, mat_amt=1)
. = ..()
@@ -47,3 +49,38 @@
user.visible_message(span_notice("[user] shatters the sheet of [name] on the floor, leaving [english_list(shards)]."), \
span_notice("You shatter the sheet of [name] on the floor, leaving [english_list(shards)]."))
return TRUE
+
+/// Mob action to try and install a window if the sheet can do that
+/obj/item/stack/sheet/proc/try_install_window(mob/living/user, turf/location, obj/mounted_on)
+ /// If we can't create a window out of this type, return FALSE to not affect attack chain.
+ if(!window_type)
+ return FALSE
+ if(get_amount() < SHEETS_FOR_FULLTILE_WINDOW)
+ to_chat(user, span_warning("You need at least two sheets of glass for that!"))
+ return TRUE
+ var/had_mounted_object = FALSE
+ if(mounted_on)
+ had_mounted_object = TRUE
+ if(!mounted_on.anchored)
+ to_chat(user, span_warning("[mounted_on] needs to be fastened to the floor first!"))
+ return TRUE
+ var/obj/structure/window/existing_window = locate() in location
+ if(existing_window && existing_window.fulltile)
+ to_chat(user, span_warning("There is already a window there!"))
+ return TRUE
+ /// Dense turf (most likely closed). Why check types of if you can check .density
+ if(location.density)
+ to_chat(user, span_warning("You can't install the window there!"))
+ return TRUE
+ to_chat(user, span_notice("You start placing the window..."))
+ var/atom/target = mounted_on || location
+ if(do_after(user, 2 SECONDS, target = target))
+ /// Something we were mounting the window on was deleted, or unanchored
+ if(had_mounted_object && (QDELETED(mounted_on) || !mounted_on.anchored))
+ return TRUE
+ var/obj/structure/window/window = new window_type(location)
+ window.set_anchored(FALSE)
+ window.state = 0
+ use(SHEETS_FOR_FULLTILE_WINDOW)
+ to_chat(user, span_notice("You place \the [window] on \the [target]."))
+ return TRUE
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index f4a43045208..3fec5c435b5 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -671,7 +671,7 @@
/obj/item/clothing/gloves,
/obj/item/melee/flyswatter,
/obj/item/assembly/mousetrap,
- /obj/item/paint/paint_remover,
+ /obj/item/paint_remover,
/obj/item/pushbroom
))
diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
index b02f7e9e74a..a2a28de7c79 100644
--- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm
@@ -55,7 +55,7 @@
new /obj/item/clothing/under/rank/civilian/janitor(src)
new /obj/item/clothing/gloves/color/black(src)
new /obj/item/clothing/head/soft/purple(src)
- new /obj/item/paint/paint_remover(src)
+ new /obj/item/paint_remover(src)
new /obj/item/melee/flyswatter(src)
new /obj/item/flashlight(src)
for(var/i in 1 to 3)
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 2cac5b155ae..b5f30469a39 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -5,33 +5,64 @@
name = "wall"
desc = "A huge chunk of metal used to separate rooms."
anchored = TRUE
- icon = 'icons/turf/walls/wall.dmi'
+ icon = 'icons/turf/walls/solid_wall.dmi'
icon_state = "wall-0"
base_icon_state = "wall"
+ color = "#57575c" //To display in mapping softwares
layer = LOW_OBJ_LAYER
density = TRUE
opacity = TRUE
max_integrity = 100
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_SHUTTERS_BLASTDOORS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE)
can_be_unanchored = FALSE
can_atmos_pass = ATMOS_PASS_DENSITY
rad_insulation = RAD_MEDIUM_INSULATION
material_flags = MATERIAL_EFFECTS
- var/mineral = /obj/item/stack/sheet/iron
- var/mineral_amount = 2
- var/walltype = /turf/closed/wall
- var/girder_type = /obj/structure/girder/displaced
+ greyscale_config = /datum/greyscale_config/low_wall
+ /// Material type of the plating
+ var/plating_material = /datum/material/iron
+ /// Material type of the reinforcement
+ var/reinf_material
+ /// Paint of the wall
+ var/wall_paint
+ /// Stripe paint of the wall
+ var/stripe_paint
var/opening = FALSE
+ /// Typecache of the neighboring objects that we want to neighbor stripe overlay with
+ var/static/list/neighbor_typecache
-/obj/structure/falsewall/Initialize(mapload)
+/obj/structure/falsewall/Initialize()
. = ..()
- var/obj/item/stack/initialized_mineral = new mineral // Okay this kinda sucks.
- set_custom_materials(initialized_mineral.mats_per_unit, mineral_amount)
- qdel(initialized_mineral)
+ color = null //Clear the color that's a mapping aid
air_update_turf(TRUE, TRUE)
+ set_wall_information(plating_material, reinf_material, wall_paint, stripe_paint)
+
+/obj/structure/falsewall/update_greyscale()
+ greyscale_colors = get_wall_color()
+ return ..()
+
+/obj/structure/falsewall/proc/get_wall_color()
+ var/wall_color = wall_paint
+ if(!wall_color)
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(plating_material)
+ wall_color = plating_mat_ref.wall_color
+ return wall_color
+
+/obj/structure/falsewall/proc/get_stripe_color()
+ var/stripe_color = stripe_paint
+ if(!stripe_color)
+ stripe_color = get_wall_color()
+ return stripe_color
+
+/obj/structure/falsewall/update_name()
+ . = ..()
+ if(reinf_material)
+ name = "reinforced wall"
+ else
+ name = "wall"
/obj/structure/falsewall/attack_hand(mob/user, list/modifiers)
if(opening)
@@ -76,9 +107,38 @@
icon_state = density ? "[base_icon_state]-[smoothing_junction]" : "fwall_open"
return ..()
+/// Partially copypasted from /turf/closed/wall
+/obj/structure/falsewall/update_overlays()
+ //Updating the unmanaged wall overlays (unmanaged for optimisations)
+ overlays.Cut()
+ if(density && !opening)
+ if(stripe_paint)
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(plating_material)
+ var/icon/stripe_icon = SSgreyscale.GetColoredIconByType(plating_mat_ref.wall_stripe_greyscale_config, get_stripe_color())
+ var/mutable_appearance/smoothed_stripe = mutable_appearance(stripe_icon, icon_state)
+ overlays += smoothed_stripe
+ var/neighbor_stripe = NONE
+ if(!neighbor_typecache)
+ neighbor_typecache = typecacheof(list(/obj/machinery/door/airlock, /obj/structure/window/reinforced/fulltile, /obj/structure/window/fulltile, /obj/structure/window/reinforced/shuttle, /obj/machinery/door/poddoor))
+ for(var/cardinal in GLOB.cardinals)
+ var/turf/step_turf = get_step(src, cardinal)
+ for(var/atom/movable/movable_thing as anything in step_turf)
+ if(neighbor_typecache[movable_thing.type])
+ neighbor_stripe ^= cardinal
+ break
+ if(neighbor_stripe)
+ var/icon/neighbor_icon = SSgreyscale.GetColoredIconByType(/datum/greyscale_config/wall_neighbor_stripe, get_stripe_color())
+ var/mutable_appearance/neighb_stripe_appearace = mutable_appearance(neighbor_icon, "stripe-[neighbor_stripe]")
+ overlays += neighb_stripe_appearace
+ //And letting anything else that may want to render on the wall to work (ie components)
+ return ..()
+
/obj/structure/falsewall/proc/ChangeToWall(delete = 1)
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(plating_material)
var/turf/T = get_turf(src)
- T.PlaceOnTop(walltype)
+ T.PlaceOnTop(plating_mat_ref.wall_type)
+ var/turf/closed/wall/placed_wall = T
+ placed_wall.set_wall_information(plating_material, reinf_material, wall_paint, stripe_paint)
if(delete)
qdel(src)
return T
@@ -111,8 +171,45 @@
return TOOL_ACT_TOOLTYPE_SUCCESS
return
+/// Painfully copypasted from /turf/closed/wall
+/obj/structure/falsewall/proc/paint_wall(new_paint)
+ wall_paint = new_paint
+ update_greyscale()
+ update_appearance()
+
+/// Painfully copypasted from /turf/closed/wall
+/obj/structure/falsewall/proc/paint_stripe(new_paint)
+ stripe_paint = new_paint
+ update_appearance()
+
+/// Painfully copypasted from /turf/closed/wall
+/obj/structure/falsewall/proc/set_wall_information(plating_mat, reinf_mat, new_paint, new_stripe_paint)
+ wall_paint = new_paint
+ stripe_paint = new_stripe_paint
+ set_materials(plating_mat, reinf_mat)
+
+/// Painfully copypasted from /turf/closed/wall
+/obj/structure/falsewall/proc/set_materials(plating_mat, reinf_mat)
+ var/datum/material/plating_mat_ref
+ if(plating_mat)
+ plating_mat_ref = GET_MATERIAL_REF(plating_mat)
+ var/datum/material/reinf_mat_ref
+ if(reinf_mat)
+ reinf_mat_ref = GET_MATERIAL_REF(reinf_mat)
+
+ if(reinf_mat_ref)
+ greyscale_config = plating_mat_ref.reinforced_wall_greyscale_config
+ else
+ greyscale_config = plating_mat_ref.wall_greyscale_config
+
+ plating_material = plating_mat
+ reinf_material = reinf_mat
+
+ update_greyscale()
+ update_appearance()
+
/obj/structure/falsewall/attackby(obj/item/W, mob/user, params)
- if(!opening)
+ if(opening)
to_chat(user, span_warning("You must wait until the door has stopped moving!"))
return
return ..()
@@ -128,10 +225,9 @@
/obj/structure/falsewall/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
if(disassembled)
- new girder_type(loc)
- if(mineral_amount)
- for(var/i in 1 to mineral_amount)
- new mineral(loc)
+ new /obj/structure/girder(src.loc, reinf_material, wall_paint, stripe_paint, TRUE)
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(plating_material)
+ new plating_mat_ref.sheet_type(src.loc, 2)
qdel(src)
/obj/structure/falsewall/get_dumping_location()
@@ -148,12 +244,8 @@
/obj/structure/falsewall/reinforced
name = "reinforced wall"
desc = "A huge chunk of reinforced metal used to separate rooms."
- icon = 'icons/turf/walls/reinforced_wall.dmi'
- icon_state = "reinforced_wall-0"
- base_icon_state = "reinforced_wall"
- walltype = /turf/closed/wall/r_wall
- mineral = /obj/item/stack/sheet/plasteel
- smoothing_flags = SMOOTH_BITMASK
+ icon = 'icons/turf/walls/solid_wall_reinforced.dmi'
+ reinf_material = /datum/material/alloy/plasteel
/obj/structure/falsewall/reinforced/examine_status(mob/user)
to_chat(user, span_notice("The outer grille is fully intact."))
@@ -171,14 +263,7 @@
/obj/structure/falsewall/uranium
name = "uranium wall"
desc = "A wall with uranium plating. This is probably a bad idea."
- icon = 'icons/turf/walls/uranium_wall.dmi'
- icon_state = "uranium_wall-0"
- base_icon_state = "uranium_wall"
- mineral = /obj/item/stack/sheet/mineral/uranium
- walltype = /turf/closed/wall/mineral/uranium
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS)
+ plating_material = /datum/material/uranium
var/active = null
var/last_event = 0
@@ -214,146 +299,64 @@
/obj/structure/falsewall/gold
name = "gold wall"
desc = "A wall with gold plating. Swag!"
- icon = 'icons/turf/walls/gold_wall.dmi'
- icon_state = "gold_wall-0"
- base_icon_state = "gold_wall"
- mineral = /obj/item/stack/sheet/mineral/gold
- walltype = /turf/closed/wall/mineral/gold
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_GOLD_WALLS)
+ plating_material = /datum/material/gold
/obj/structure/falsewall/silver
name = "silver wall"
desc = "A wall with silver plating. Shiny."
- icon = 'icons/turf/walls/silver_wall.dmi'
- icon_state = "silver_wall-0"
- base_icon_state = "silver_wall"
- mineral = /obj/item/stack/sheet/mineral/silver
- walltype = /turf/closed/wall/mineral/silver
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_SILVER_WALLS)
+ plating_material = /datum/material/silver
/obj/structure/falsewall/diamond
name = "diamond wall"
desc = "A wall with diamond plating. You monster."
- icon = 'icons/turf/walls/diamond_wall.dmi'
- icon_state = "diamond_wall-0"
- base_icon_state = "diamond_wall"
- mineral = /obj/item/stack/sheet/mineral/diamond
- walltype = /turf/closed/wall/mineral/diamond
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_DIAMOND_WALLS)
+ plating_material = /datum/material/diamond
max_integrity = 800
/obj/structure/falsewall/plasma
name = "plasma wall"
desc = "A wall with plasma plating. This is definitely a bad idea."
- icon = 'icons/turf/walls/plasma_wall.dmi'
- icon_state = "plasma_wall-0"
- base_icon_state = "plasma_wall"
- mineral = /obj/item/stack/sheet/mineral/plasma
- walltype = /turf/closed/wall/mineral/plasma
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_PLASMA_WALLS)
+ plating_material = /datum/material/plasma
/obj/structure/falsewall/bananium
name = "bananium wall"
desc = "A wall with bananium plating. Honk!"
- icon = 'icons/turf/walls/bananium_wall.dmi'
- icon_state = "bananium_wall-0"
- base_icon_state = "bananium_wall"
- mineral = /obj/item/stack/sheet/mineral/bananium
- walltype = /turf/closed/wall/mineral/bananium
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS)
+ plating_material = /datum/material/bananium
/obj/structure/falsewall/sandstone
name = "sandstone wall"
desc = "A wall with sandstone plating. Rough."
- icon = 'icons/turf/walls/sandstone_wall.dmi'
- icon_state = "sandstone_wall-0"
- base_icon_state = "sandstone_wall"
- mineral = /obj/item/stack/sheet/mineral/sandstone
- walltype = /turf/closed/wall/mineral/sandstone
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_SANDSTONE_WALLS)
+ icon = 'icons/turf/walls/stone_wall.dmi'
+ plating_material = /datum/material/sandstone
/obj/structure/falsewall/wood
name = "wooden wall"
desc = "A wall with wooden plating. Stiff."
icon = 'icons/turf/walls/wood_wall.dmi'
- icon_state = "wood_wall-0"
- base_icon_state = "wood_wall"
- mineral = /obj/item/stack/sheet/mineral/wood
- walltype = /turf/closed/wall/mineral/wood
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
-
-/obj/structure/falsewall/bamboo
- name = "bamboo wall"
- desc = "A wall with bamboo finish. Zen."
- icon = 'icons/turf/walls/bamboo_wall.dmi'
- icon_state = "bamboo"
- mineral = /obj/item/stack/sheet/mineral/bamboo
- walltype = /turf/closed/wall/mineral/bamboo
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BAMBOO_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_BAMBOO_WALLS)
+ plating_material = /datum/material/wood
/obj/structure/falsewall/iron
name = "rough iron wall"
desc = "A wall with rough metal plating."
- icon = 'icons/turf/walls/iron_wall.dmi'
- icon_state = "iron_wall-0"
- base_icon_state = "iron_wall"
- mineral = /obj/item/stack/rods
- mineral_amount = 5
- walltype = /turf/closed/wall/mineral/iron
base_icon_state = "iron_wall"
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS)
/obj/structure/falsewall/abductor
name = "alien wall"
desc = "A wall with alien alloy plating."
- icon = 'icons/turf/walls/abductor_wall.dmi'
- icon_state = "abductor_wall-0"
- base_icon_state = "abductor_wall"
- mineral = /obj/item/stack/sheet/mineral/abductor
- walltype = /turf/closed/wall/mineral/abductor
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS)
+ plating_material = /datum/material/alloy/alien
/obj/structure/falsewall/titanium
name = "wall"
desc = "A light-weight titanium wall used in shuttles."
- icon = 'icons/turf/walls/shuttle_wall.dmi'
- icon_state = "shuttle_wall-0"
- base_icon_state = "shuttle_wall"
- mineral = /obj/item/stack/sheet/mineral/titanium
- walltype = /turf/closed/wall/mineral/titanium
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
+ icon = 'icons/turf/walls/metal_wall.dmi'
+ plating_material = /datum/material/titanium
+ smoothing_groups = list(SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_SHUTTERS_BLASTDOORS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_SHUTTLE_PARTS)
/obj/structure/falsewall/plastitanium
name = "wall"
desc = "An evil wall of plasma and titanium."
- icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "plastitanium_wall-0"
- base_icon_state = "plastitanium_wall"
- mineral = /obj/item/stack/sheet/mineral/plastitanium
- walltype = /turf/closed/wall/mineral/plastitanium
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
+ icon = 'icons/turf/walls/metal_wall.dmi'
+ plating_material = /datum/material/alloy/plastitanium
+ smoothing_groups = list(SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_SHUTTERS_BLASTDOORS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_SHUTTLE_PARTS)
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index a5641e47fff..bac813b86af 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -1,3 +1,7 @@
+#define GIRDER_PASSCHANCE_NORMAL 20
+#define GIRDER_PASSCHANCE_UNANCHORED 25
+#define GIRDER_PASSCHANCE_REINFORCED 0
+
/obj/structure/girder
name = "girder"
icon_state = "girder"
@@ -5,37 +9,61 @@
anchored = TRUE
density = TRUE
max_integrity = 200
- rad_insulation = RAD_VERY_LIGHT_INSULATION
var/state = GIRDER_NORMAL
- var/girderpasschance = 20 // percentage chance that a projectile passes through the girder.
+ var/girderpasschance = GIRDER_PASSCHANCE_NORMAL // percentage chance that a projectile passes through the girder.
var/can_displace = TRUE //If the girder can be moved around by wrenching it
var/next_beep = 0 //Prevents spamming of the construction sound
- /// The material cost to construct something on the girder
- var/static/list/construction_cost = list(
- /obj/item/stack/sheet/iron = 2,
- /obj/item/stack/rods = 5,
- /obj/item/stack/sheet/plasteel = 2,
- /obj/item/stack/sheet/bronze = 2,
- /obj/item/stack/sheet/runed_metal = 1,
- exotic_material = 2 // this needs to be refactored properly
- )
+ /// What material is this girder reinforced by
+ var/reinforced_material
+ /// Paint to apply to the wall built. Matters for deconstructed and reconstructed walls
+ var/wall_paint
+ /// Stripe paint to apply to the wall built. Matters for deconstructed and reconstructed walls
+ var/stripe_paint
+
+/obj/structure/girder/Initialize(mapload, reinforced_mat, new_paint, new_stripe_paint, unanchored)
+ . = ..()
+ wall_paint = new_paint
+ stripe_paint = new_stripe_paint
+ if(unanchored)
+ set_anchored(FALSE)
+ girderpasschance = GIRDER_PASSCHANCE_UNANCHORED
+ if(reinforced_mat)
+ reinforced_material = reinforced_mat
+ state = GIRDER_REINF
+ update_appearance()
+
+/obj/structure/girder/update_name()
+ . = ..()
+ if(!anchored)
+ name = "displaced girder"
+ else if (state == GIRDER_NORMAL)
+ name = "girder"
+ else
+ name = "reinforced girder"
+
+/obj/structure/girder/update_icon_state()
+ . = ..()
+ if(!anchored)
+ icon_state = "displaced"
+ else if (state == GIRDER_NORMAL)
+ icon_state = "girder"
+ else
+ icon_state = "reinforced"
/obj/structure/girder/examine(mob/user)
. = ..()
switch(state)
if(GIRDER_REINF)
- . += span_notice("The support struts are screwed in place.")
+ . += span_notice("It's reinforcement can be screwed off.")
if(GIRDER_REINF_STRUTS)
- . += span_notice("The support struts are unscrewed and the inner grille is intact.")
+ . += span_notice("The reinforcement struts can be reinforced with a material or cut off.")
if(GIRDER_NORMAL)
- if(can_displace)
- . += span_notice("The bolts are wrenched in place.")
- if(GIRDER_DISPLACED)
- . += span_notice("The bolts are loosened, but the screws are holding [src] together.")
- if(GIRDER_DISASSEMBLED)
- . += span_notice("[src] is disassembled! You probably shouldn't be able to see this examine message.")
- if(GIRDER_TRAM)
- . += span_notice("[src] is designed for tram usage. Deconstructed with a screwdriver!")
+ . += span_notice("The girder can be prepared for reinforcement with rods.")
+ if(anchored)
+ if(can_displace)
+ . += span_notice("The bolts are wrenched in place.")
+ else
+ . += span_notice("The bolts are loosened, but the screws are holding [src] together.")
/obj/structure/girder/attackby(obj/item/W, mob/user, params)
var/platingmodifier = 1
@@ -47,212 +75,93 @@
add_fingerprint(user)
if(istype(W, /obj/item/gun/energy/plasmacutter))
- balloon_alert(user, "slicing apart...")
+ to_chat(user, span_notice("You start slicing apart the girder..."))
if(W.use_tool(src, user, 40, volume=100))
+ to_chat(user, span_notice("You slice apart the girder."))
var/obj/item/stack/sheet/iron/M = new (loc, 2)
- if (!QDELETED(M))
- M.add_fingerprint(user)
+ M.add_fingerprint(user)
qdel(src)
- return
else if(istype(W, /obj/item/stack))
- if(iswallturf(loc) || (locate(/obj/structure/falsewall) in src.loc.contents))
- balloon_alert(user, "wall already present!")
+ if(iswallturf(loc))
+ to_chat(user, span_warning("There is already a wall present!"))
return
- if(!isfloorturf(src.loc) && state != GIRDER_TRAM)
- balloon_alert(user, "need floor!")
+ if(!isfloorturf(src.loc))
+ to_chat(user, span_warning("A floor must be present to build a false wall!"))
return
- if(state == GIRDER_TRAM)
- if(!locate(/obj/structure/industrial_lift/tram) in src.loc.contents)
- balloon_alert(user, "need tram floors!")
- return
-
- if(istype(W, /obj/item/stack/rods))
- var/obj/item/stack/rods/rod = W
- var/amount = construction_cost[rod.type]
- if(state == GIRDER_DISPLACED)
- if(rod.get_amount() < amount)
- balloon_alert(user, "need [amount] rods!")
- return
- balloon_alert(user, "concealing entrance...")
- if(do_after(user, 20, target = src))
- if(rod.get_amount() < amount)
- return
- rod.use(amount)
- var/obj/structure/falsewall/iron/FW = new (loc)
- transfer_fingerprints_to(FW)
- qdel(src)
- return
- else
- if(rod.get_amount() < amount)
- balloon_alert(user, "need [amount] rods!")
- return
- balloon_alert(user, "adding plating...")
- if(do_after(user, 40, target = src))
- if(rod.get_amount() < amount)
- return
- rod.use(amount)
- var/turf/T = get_turf(src)
- T.PlaceOnTop(/turf/closed/wall/mineral/iron)
- transfer_fingerprints_to(T)
- qdel(src)
- return
-
- if(!istype(W, /obj/item/stack/sheet))
+ if (locate(/obj/structure/falsewall) in src.loc.contents)
+ to_chat(user, span_warning("There is already a false wall present!"))
return
- var/obj/item/stack/sheet/sheets = W
- if(istype(sheets, /obj/item/stack/sheet/iron))
- var/amount = construction_cost[/obj/item/stack/sheet/iron]
- if(state == GIRDER_DISPLACED)
- if(sheets.get_amount() < amount)
- balloon_alert(user, "need [amount] sheets!")
- return
- balloon_alert(user, "concealing entrance...")
- if(do_after(user, 20*platingmodifier, target = src))
- if(sheets.get_amount() < amount)
- return
- sheets.use(amount)
- var/obj/structure/falsewall/F = new (loc)
- transfer_fingerprints_to(F)
- qdel(src)
- return
- else if(state == GIRDER_REINF)
- balloon_alert(user, "need plasteel sheet!")
- return
- else if(state == GIRDER_TRAM)
- if(sheets.get_amount() < amount)
- balloon_alert(user, "need [amount] sheets!")
- return
- balloon_alert(user, "adding plating...")
- if (do_after(user, 4 SECONDS, target = src))
- if(sheets.get_amount() < amount)
- return
- sheets.use(2)
- var/obj/structure/tramwall/tram_wall = new sheets.tram_wall_type(loc)
- transfer_fingerprints_to(tram_wall)
- qdel(src)
+ if(istype(W, /obj/item/stack/rods))
+ var/obj/item/stack/rods/S = W
+ if(state != GIRDER_NORMAL)
return
- else
- if(sheets.get_amount() < amount)
- balloon_alert(user, "need [amount] sheets!")
- return
- balloon_alert(user, "adding plating...")
- if (do_after(user, 40*platingmodifier, target = src))
- if(sheets.get_amount() < amount)
- return
- sheets.use(amount)
- var/turf/T = get_turf(src)
- T.PlaceOnTop(/turf/closed/wall)
- transfer_fingerprints_to(T)
- qdel(src)
+ if(S.get_amount() < 2)
+ to_chat(user, span_warning("You need two rods to place reinforcement struts!"))
return
-
- if(istype(sheets, /obj/item/stack/sheet/plasteel))
- var/amount = construction_cost[/obj/item/stack/sheet/plasteel]
- if(state == GIRDER_DISPLACED)
- if(sheets.get_amount() < amount)
- balloon_alert(user, "need [amount] sheets!")
+ to_chat(user, span_notice("You start placing reinforcement struts..."))
+ if(do_after(user, 20*platingmodifier, target = src))
+ if(S.get_amount() < 2)
return
- balloon_alert(user, "concealing entrance...")
- if(do_after(user, 20, target = src))
- if(sheets.get_amount() < amount)
- return
- sheets.use(amount)
- var/obj/structure/falsewall/reinforced/FW = new (loc)
- transfer_fingerprints_to(FW)
- qdel(src)
- return
- else if(state == GIRDER_REINF)
- amount = 1 // hur dur let's make plasteel have different construction amounts 4norasin
- if(sheets.get_amount() < amount)
- return
- balloon_alert(user, "adding plating...")
- if(do_after(user, 50*platingmodifier, target = src))
- if(sheets.get_amount() < amount)
- return
- sheets.use(amount)
- var/turf/T = get_turf(src)
- T.PlaceOnTop(/turf/closed/wall/r_wall)
- transfer_fingerprints_to(T)
- qdel(src)
- return
- else
- amount = 1 // hur dur x2
- if(sheets.get_amount() < amount)
+ if(state != GIRDER_NORMAL)
return
- balloon_alert(user, "reinforcing frame...")
- if(do_after(user, 60*platingmodifier, target = src))
- if(sheets.get_amount() < amount)
- return
- sheets.use(amount)
- var/obj/structure/girder/reinforced/R = new (loc)
- transfer_fingerprints_to(R)
- qdel(src)
- return
+ to_chat(user, span_notice("You place reinforcement struts."))
+ S.use(2)
+ state = GIRDER_REINF_STRUTS
+ update_appearance()
- if(!sheets.has_unique_girder && sheets.material_type)
- if(istype(src, /obj/structure/girder/reinforced))
- balloon_alert(user, "need plasteel!")
- return
+ if(!istype(W, /obj/item/stack/sheet))
+ return
- var/M = sheets.sheettype
- var/amount = construction_cost["exotic_material"]
- if(state == GIRDER_TRAM)
- if(!sheets.tram_wall_type)
- balloon_alert(user, "need titanium, plastitanium, or iron!")
+ var/obj/item/stack/sheet/S = W
+ if(S.get_amount() < 2)
+ to_chat(user, span_warning("You need two sheets of [S]!"))
+ return
+ if(state == GIRDER_REINF_STRUTS)
+ to_chat(user, span_notice("You start reinforcing the girder..."))
+ if(do_after(user, 20*platingmodifier, target = src))
+ if(state != GIRDER_REINF_STRUTS)
return
- if(sheets.get_amount() < amount)
- balloon_alert(user, "need [amount] sheets!")
+ if(S.get_amount() < 2)
return
- balloon_alert(user, "adding plating...")
- if (do_after(user, 4 SECONDS, target = src))
- if(sheets.get_amount() < amount)
- return
- sheets.use(amount)
- var/obj/structure/tramwall/tram_wall = new sheets.tram_wall_type(loc)
- transfer_fingerprints_to(tram_wall)
- qdel(src)
+ S.use(2)
+ state = GIRDER_REINF
+ reinforced_material = S.material_type
+ update_appearance()
+ return
+ else
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(S.material_type)
+ var/wall_type = plating_mat_ref.wall_type
+ if(!wall_type)
+ to_chat(user, span_warning("You can't figure out how to make a wall out of this!"))
return
- if(state == GIRDER_DISPLACED)
- var/falsewall_type = text2path("/obj/structure/falsewall/[M]")
- if(!falsewall_type)
- balloon_alert(user, "need comptatiable sheets!")
- return
- if(sheets.get_amount() < amount)
- balloon_alert(user, "need [amount] sheets!")
- return
- balloon_alert(user, "concealing entrance...")
- if(do_after(user, 20, target = src))
- if(sheets.get_amount() < amount)
- return
- sheets.use(amount)
- var/obj/structure/falsewall/FW = new falsewall_type (loc)
- transfer_fingerprints_to(FW)
- qdel(src)
- return
+ if(anchored)
+ to_chat(user, span_notice("You start adding plating..."))
else
- if(sheets.get_amount() < amount)
- balloon_alert(user, "need [amount] sheets!")
+ to_chat(user, span_notice("You start adding plating, creating a false wall..."))
+ if (do_after(user, 40*platingmodifier, target = src))
+ if(S.get_amount() < 2)
return
- balloon_alert(user, "adding plating...")
- if (do_after(user, 40, target = src))
- if(sheets.get_amount() < amount)
- return
- sheets.use(amount)
- var/turf/T = get_turf(src)
- if(sheets.walltype)
- T.PlaceOnTop(sheets.walltype)
- else
- var/turf/newturf = T.PlaceOnTop(/turf/closed/wall/material)
- var/list/material_list = list()
- material_list[GET_MATERIAL_REF(sheets.material_type)] = MINERAL_MATERIAL_AMOUNT * 2
- if(material_list)
- newturf.set_custom_materials(material_list)
-
- transfer_fingerprints_to(T)
- qdel(src)
- return
+ S.use(2)
+ if(anchored)
+ to_chat(user, span_notice("You add the plating."))
+ else
+ to_chat(user, span_notice("You create the false wall."))
+ var/turf/T = get_turf(src)
+ if(anchored)
+ //Build a normal wall
+ T.PlaceOnTop(wall_type)
+ var/turf/closed/wall/placed_wall = T
+ placed_wall.set_wall_information(S.material_type, reinforced_material, wall_paint, stripe_paint)
+ transfer_fingerprints_to(placed_wall)
+ else
+ //Build a false wall
+ var/false_wall_type = plating_mat_ref.false_wall_type
+ var/obj/structure/falsewall/false_wall = new false_wall_type(T)
+ false_wall.set_wall_information(S.material_type, reinforced_material, wall_paint, stripe_paint)
+ transfer_fingerprints_to(false_wall)
+ qdel(src)
add_hiddenprint(user)
@@ -261,7 +170,7 @@
if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds.
if(!user.transferItemToLoc(P, drop_location()))
return
- balloon_alert(user, "inserted pipe")
+ to_chat(user, span_notice("You fit the pipe into \the [src]."))
else
return ..()
@@ -271,86 +180,74 @@
return TRUE
. = FALSE
- if(state == GIRDER_TRAM)
- balloon_alert(user, "disassembling frame...")
- if(tool.use_tool(src, user, 4 SECONDS, volume=100))
- if(state != GIRDER_TRAM)
- return
- state = GIRDER_DISASSEMBLED
- var/obj/item/stack/sheet/iron/M = new (loc, 2)
- if (!QDELETED(M))
- M.add_fingerprint(user)
- qdel(src)
- return TRUE
-
- if(state == GIRDER_DISPLACED)
- balloon_alert(user, "disassembling frame...")
- if(tool.use_tool(src, user, 40, volume=100))
- if(state != GIRDER_DISPLACED)
- return
- state = GIRDER_DISASSEMBLED
- var/obj/item/stack/sheet/iron/M = new (loc, 2)
- if (!QDELETED(M))
- M.add_fingerprint(user)
- qdel(src)
- return TRUE
-
- else if(state == GIRDER_REINF)
- balloon_alert(user, "unsecuring support struts...")
+ if(state == GIRDER_REINF)
+ to_chat(user, span_notice("You start removing the reinforcement..."))
if(tool.use_tool(src, user, 40, volume=100))
if(state != GIRDER_REINF)
return
+ to_chat(user, span_notice("You remove the reinforcement."))
state = GIRDER_REINF_STRUTS
+ var/datum/material/reinf_mat_ref = GET_MATERIAL_REF(reinforced_material)
+ new reinf_mat_ref.sheet_type(loc, 2)
+ reinforced_material = null
+ update_appearance()
return TRUE
- else if(state == GIRDER_REINF_STRUTS)
- balloon_alert(user, "securing support struts...")
+ else if(!anchored && state != GIRDER_REINF_STRUTS)
+ user.visible_message(span_warning("[user] disassembles the girder."),
+ span_notice("You start to disassemble the girder..."),
+ span_hear("You hear clanking and banging noises."))
if(tool.use_tool(src, user, 40, volume=100))
- if(state != GIRDER_REINF_STRUTS)
+ if(anchored)
return
- state = GIRDER_REINF
+ to_chat(user, span_notice("You disassemble the girder."))
+ var/obj/item/stack/sheet/iron/M = new (loc, 2)
+ M.add_fingerprint(user)
+ qdel(src)
return TRUE
// Wirecutter behavior for girders
/obj/structure/girder/wirecutter_act(mob/user, obj/item/tool)
. = ..()
if(state == GIRDER_REINF_STRUTS)
- balloon_alert(user, "removing inner grille...")
+ to_chat(user, span_notice("You start removing the reinforcement struts..."))
if(tool.use_tool(src, user, 40, volume=100))
- new /obj/item/stack/sheet/plasteel(get_turf(src))
- var/obj/structure/girder/G = new (loc)
- transfer_fingerprints_to(G)
- qdel(src)
+ to_chat(user, span_notice("You remove the reinforcement struts."))
+ new /obj/item/stack/rods(get_turf(src), 2)
+ state = GIRDER_NORMAL
+ update_appearance()
return TRUE
/obj/structure/girder/wrench_act(mob/user, obj/item/tool)
. = ..()
- if(state == GIRDER_DISPLACED)
+ if(!anchored)
if(!isfloorturf(loc))
- balloon_alert(user, "needs floor!")
+ to_chat(user, span_warning("A floor must be present to secure the girder!"))
- balloon_alert(user, "securing frame...")
+ to_chat(user, span_notice("You start securing the girder..."))
if(tool.use_tool(src, user, 40, volume=100))
- var/obj/structure/girder/G = new (loc)
- transfer_fingerprints_to(G)
- qdel(src)
+ to_chat(user, span_notice("You secure the girder."))
+ set_anchored(TRUE)
+ girderpasschance = GIRDER_PASSCHANCE_NORMAL
+ update_appearance()
return TRUE
else if(state == GIRDER_NORMAL && can_displace)
- balloon_alert(user, "unsecuring frame...")
+ to_chat(user, span_notice("You start unsecuring the girder..."))
if(tool.use_tool(src, user, 40, volume=100))
- var/obj/structure/girder/displaced/D = new (loc)
- transfer_fingerprints_to(D)
- qdel(src)
+ to_chat(user, span_notice("You unsecure the girder."))
+ set_anchored(FALSE)
+ girderpasschance = GIRDER_PASSCHANCE_UNANCHORED
+ update_appearance()
return TRUE
-/obj/structure/girder/CanAllowThrough(atom/movable/mover, border_dir)
+/obj/structure/girder/CanAllowThrough(atom/movable/mover, turf/target)
. = ..()
if((mover.pass_flags & PASSGRILLE) || istype(mover, /obj/projectile))
return prob(girderpasschance)
/obj/structure/girder/CanAStarPass(obj/item/card/id/ID, to_dir, atom/movable/caller)
. = !density
- if(caller)
+ if(istype(caller))
. = . || (caller.pass_flags & PASSGRILLE)
/obj/structure/girder/deconstruct(disassembled = TRUE)
@@ -365,18 +262,14 @@
/obj/structure/girder/displaced
name = "displaced girder"
- icon_state = "displaced"
anchored = FALSE
- state = GIRDER_DISPLACED
- girderpasschance = 25
- max_integrity = 120
+ girderpasschance = GIRDER_PASSCHANCE_UNANCHORED
/obj/structure/girder/reinforced
name = "reinforced girder"
- icon_state = "reinforced"
state = GIRDER_REINF
- girderpasschance = 0
- max_integrity = 350
+ reinforced_material = /datum/material/iron
+ girderpasschance = GIRDER_PASSCHANCE_REINFORCED
/obj/structure/girder/tram
name = "tram girder"
@@ -393,27 +286,33 @@
/obj/structure/girder/cult/attackby(obj/item/W, mob/user, params)
add_fingerprint(user)
- if(W.tool_behaviour == TOOL_WELDER)
+ if(istype(W, /obj/item/melee/cultblade/dagger) && IS_CULTIST(user)) //Cultists can demolish cult girders instantly with their tomes
+ user.visible_message(span_warning("[user] strikes [src] with [W]!"), span_notice("You demolish [src]."))
+ new /obj/item/stack/sheet/runed_metal(drop_location(), 1)
+ qdel(src)
+
+ else if(W.tool_behaviour == TOOL_WELDER)
if(!W.tool_start_check(user, amount=0))
return
- balloon_alert(user, "slicing apart...")
+ to_chat(user, span_notice("You start slicing apart the girder..."))
if(W.use_tool(src, user, 40, volume=50))
+ to_chat(user, span_notice("You slice apart the girder."))
var/obj/item/stack/sheet/runed_metal/R = new(drop_location(), 1)
transfer_fingerprints_to(R)
qdel(src)
else if(istype(W, /obj/item/stack/sheet/runed_metal))
var/obj/item/stack/sheet/runed_metal/R = W
- var/amount = construction_cost[R.type]
- if(R.get_amount() < amount)
- balloon_alert(user, "need [amount] sheet!")
+ if(R.get_amount() < 1)
+ to_chat(user, span_warning("You need at least one sheet of runed metal to construct a runed wall!"))
return
- balloon_alert(user, "adding plating...")
+ user.visible_message(span_notice("[user] begins laying runed metal on [src]..."), span_notice("You begin constructing a runed wall..."))
if(do_after(user, 50, target = src))
- if(R.get_amount() < amount)
+ if(R.get_amount() < 1)
return
- R.use(amount)
+ user.visible_message(span_notice("[user] plates [src] with runed metal."), span_notice("You construct a runed wall."))
+ R.use(1)
var/turf/T = get_turf(src)
T.PlaceOnTop(/turf/closed/wall/mineral/cult)
qdel(src)
@@ -444,10 +343,12 @@
var/turf/T = get_turf(src)
switch(passed_mode)
if(RCD_FLOORWALL)
+ to_chat(user, span_notice("You finish a wall."))
T.PlaceOnTop(/turf/closed/wall)
qdel(src)
return TRUE
if(RCD_DECONSTRUCT)
+ to_chat(user, span_notice("You deconstruct the girder."))
qdel(src)
return TRUE
return FALSE
@@ -455,6 +356,7 @@
/obj/structure/girder/bronze
name = "wall gear"
desc = "A girder made out of sturdy bronze, made to resemble a gear."
+ icon = 'icons/obj/clockwork_objects.dmi'
icon_state = "wall_gear"
can_displace = FALSE
@@ -463,23 +365,24 @@
if(W.tool_behaviour == TOOL_WELDER)
if(!W.tool_start_check(user, amount = 0))
return
- balloon_alert(user, "slicing apart...")
+ to_chat(user, span_notice("You start slicing apart [src]..."))
if(W.use_tool(src, user, 40, volume=50))
+ to_chat(user, span_notice("You slice apart [src]."))
var/obj/item/stack/sheet/bronze/B = new(drop_location(), 2)
transfer_fingerprints_to(B)
qdel(src)
else if(istype(W, /obj/item/stack/sheet/bronze))
var/obj/item/stack/sheet/bronze/B = W
- var/amount = construction_cost[B.type]
- if(B.get_amount() < amount)
- balloon_alert(user, "need [amount] sheets!")
+ if(B.get_amount() < 2)
+ to_chat(user, span_warning("You need at least two bronze sheets to build a bronze wall!"))
return
- balloon_alert(user, "adding plating...")
+ user.visible_message(span_notice("[user] begins plating [src] with bronze..."), span_notice("You begin constructing a bronze wall..."))
if(do_after(user, 50, target = src))
- if(B.get_amount() < amount)
+ if(B.get_amount() < 2)
return
- B.use(amount)
+ user.visible_message(span_notice("[user] plates [src] with bronze!"), span_notice("You construct a bronze wall."))
+ B.use(2)
var/turf/T = get_turf(src)
T.PlaceOnTop(/turf/closed/wall/mineral/bronze)
qdel(src)
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index dfb5733fdfa..7afae3d0c5e 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -4,9 +4,10 @@
/obj/structure/grille
desc = "A flimsy framework of iron rods."
name = "grille"
- icon = 'icons/obj/structures.dmi'
- icon_state = "grille"
+ icon = 'icons/obj/smooth_structures/grille.dmi'
+ icon_state = "grille-0"
base_icon_state = "grille"
+ color = "#545454"
density = TRUE
anchored = TRUE
pass_flags_self = PASSGRILLE
@@ -15,6 +16,9 @@
armor = list(MELEE = 50, BULLET = 70, LASER = 70, ENERGY = 100, BOMB = 10, BIO = 100, FIRE = 0, ACID = 0)
max_integrity = 50
integrity_failure = 0.4
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_GRILLE)
+ canSmoothWith = list(SMOOTH_GROUP_GRILLE)
var/rods_type = /obj/item/stack/rods
var/rods_amount = 2
var/rods_broken = TRUE
@@ -27,20 +31,19 @@
update_cable_icons_on_turf(get_turf(src))
return ..()
-/obj/structure/grille/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir)
- . = ..()
- update_appearance()
-
/obj/structure/grille/update_appearance(updates)
- if(QDELETED(src) || broken)
+ if(QDELETED(src))
return
-
. = ..()
- if((updates & UPDATE_SMOOTHING) && (smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)))
- QUEUE_SMOOTH(src)
/obj/structure/grille/update_icon_state()
- icon_state = "[base_icon_state][((atom_integrity / max_integrity) <= 0.5) ? "50_[rand(0, 3)]" : null]"
+ . = ..()
+ if(broken)
+ icon_state = "brokengrille"
+
+/obj/structure/grille/set_smoothed_icon_state(new_junction)
+ if(broken)
+ return
return ..()
/obj/structure/grille/examine(mob/user)
@@ -82,9 +85,6 @@
if(repair_grille())
to_chat(user, span_notice("You rebuild the broken grille."))
- if(!clear_tile(user))
- return FALSE
-
if(!ispath(the_rcd.window_type, /obj/structure/window))
CRASH("Invalid window path type in RCD: [the_rcd.window_type]")
var/obj/structure/window/window_path = the_rcd.window_type
@@ -96,29 +96,6 @@
return TRUE
return FALSE
-/obj/structure/grille/proc/clear_tile(mob/user)
- var/at_users_feet = get_turf(user)
-
- var/unanchored_items_on_tile
- var/obj/item/last_item_moved
- for(var/obj/item/item_to_move in loc.contents)
- if(!item_to_move.anchored)
- if(unanchored_items_on_tile <= CLEAR_TILE_MOVE_LIMIT)
- item_to_move.forceMove(at_users_feet)
- last_item_moved = item_to_move
- unanchored_items_on_tile++
-
- if(!unanchored_items_on_tile)
- return TRUE
-
- to_chat(user, span_notice("You move [unanchored_items_on_tile == 1 ? "[last_item_moved]" : "some things"] out of the way."))
-
- if(unanchored_items_on_tile - CLEAR_TILE_MOVE_LIMIT > 0)
- to_chat(user, span_warning("There's still too much stuff in the way!"))
- return FALSE
-
- return TRUE
-
/obj/structure/grille/Bumped(atom/movable/AM)
if(!ismob(AM))
return
@@ -204,52 +181,11 @@
R.use(1)
return TRUE
-//window placing begin
- else if(is_glass_sheet(W) || istype(W, /obj/item/stack/sheet/bronze))
- if (!broken)
- var/obj/item/stack/ST = W
- if (ST.get_amount() < 2)
- to_chat(user, span_warning("You need at least two sheets of glass for that!"))
- return
- var/dir_to_set = SOUTHWEST
- if(!anchored)
- to_chat(user, span_warning("[src] needs to be fastened to the floor first!"))
- return
- for(var/obj/structure/window/WINDOW in loc)
- to_chat(user, span_warning("There is already a window there!"))
- return
- if(!clear_tile(user))
- return
- to_chat(user, span_notice("You start placing the window..."))
- if(do_after(user,20, target = src))
- if(!src.loc || !anchored) //Grille broken or unanchored while waiting
- return
- for(var/obj/structure/window/WINDOW in loc) //Another window already installed on grille
- return
- if(!clear_tile(user))
- return
- var/obj/structure/window/WD
- if(istype(W, /obj/item/stack/sheet/plasmarglass))
- WD = new/obj/structure/window/reinforced/plasma/fulltile(drop_location()) //reinforced plasma window
- else if(istype(W, /obj/item/stack/sheet/plasmaglass))
- WD = new/obj/structure/window/plasma/fulltile(drop_location()) //plasma window
- else if(istype(W, /obj/item/stack/sheet/rglass))
- WD = new/obj/structure/window/reinforced/fulltile(drop_location()) //reinforced window
- else if(istype(W, /obj/item/stack/sheet/titaniumglass))
- WD = new/obj/structure/window/reinforced/shuttle(drop_location())
- else if(istype(W, /obj/item/stack/sheet/plastitaniumglass))
- WD = new/obj/structure/window/reinforced/plasma/plastitanium(drop_location())
- else if(istype(W, /obj/item/stack/sheet/bronze))
- WD = new/obj/structure/window/bronze/fulltile(drop_location())
- else
- WD = new/obj/structure/window/fulltile(drop_location()) //normal window
- WD.setDir(dir_to_set)
- WD.set_anchored(FALSE)
- WD.state = 0
- ST.use(2)
- to_chat(user, span_notice("You place [WD] on [src]."))
- return
-//window placing end
+ //Try place window on the grille if the sheet supports it
+ else if(istype(W, /obj/item/stack/sheet))
+ var/obj/item/stack/sheet/my_sheet = W
+ if(my_sheet.try_install_window(user, src.loc, src))
+ return TRUE
else if(istype(W, /obj/item/shard) || !shock(user, 70))
return ..()
@@ -277,7 +213,6 @@
/obj/structure/grille/atom_break()
. = ..()
if(!broken && !(flags_1 & NODECONSTRUCT_1))
- icon_state = "brokengrille"
set_density(FALSE)
atom_integrity = 20
broken = TRUE
@@ -285,15 +220,18 @@
rods_broken = FALSE
var/obj/R = new rods_type(drop_location(), rods_broken)
transfer_fingerprints_to(R)
+ smoothing_flags = NONE
+ update_appearance()
/obj/structure/grille/proc/repair_grille()
if(broken)
- icon_state = "grille"
set_density(TRUE)
atom_integrity = max_integrity
broken = FALSE
rods_amount = 2
rods_broken = TRUE
+ smoothing_flags = SMOOTH_BITMASK
+ update_appearance()
return TRUE
return FALSE
@@ -342,7 +280,6 @@
return null
/obj/structure/grille/broken // Pre-broken grilles for map placement
- icon_state = "brokengrille"
density = FALSE
broken = TRUE
rods_amount = 1
diff --git a/code/game/objects/structures/low_wall.dm b/code/game/objects/structures/low_wall.dm
new file mode 100644
index 00000000000..51bffc15b42
--- /dev/null
+++ b/code/game/objects/structures/low_wall.dm
@@ -0,0 +1,206 @@
+/obj/structure/low_wall
+ name = "low wall"
+ desc = "A low wall, with space to mount windows or grilles on top of it."
+ icon = 'icons/obj/smooth_structures/low_wall.dmi'
+ icon_state = "wall-0"
+ base_icon_state = "wall"
+ color = "#57575c" //To display in mapping softwares
+ greyscale_colors = "#57575c"
+ density = TRUE
+ anchored = TRUE
+ pass_flags_self = PASSTABLE | LETPASSTHROW
+ layer = LOW_WALL_LAYER
+ max_integrity = 150
+ smoothing_flags = SMOOTH_BITMASK
+ smoothing_groups = list(SMOOTH_GROUP_LOW_WALL)
+ canSmoothWith = list(SMOOTH_GROUP_LOW_WALL, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTERS_BLASTDOORS)
+ armor = list(MELEE = 20, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 25, BIO = 100, FIRE = 80, ACID = 100)
+ greyscale_config = /datum/greyscale_config/low_wall
+ /// Material used in construction
+ var/plating_material = /datum/material/iron
+ /// Paint color of our wall
+ var/wall_paint
+ /// Paint colour of our stripe
+ var/stripe_paint
+ /// Typecache of airlocks to apply a neighboring stripe overlay to
+ var/static/list/airlock_typecache
+
+/obj/structure/low_wall/update_greyscale()
+ greyscale_colors = get_wall_color()
+ return ..()
+
+/obj/structure/low_wall/proc/get_wall_color()
+ var/wall_color = wall_paint
+ if(!wall_color)
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(plating_material)
+ wall_color = plating_mat_ref.wall_color
+ return wall_color
+
+/obj/structure/low_wall/proc/get_stripe_color()
+ var/stripe_color = stripe_paint
+ if(!stripe_color)
+ stripe_color = get_wall_color()
+ return stripe_color
+
+/obj/structure/low_wall/ex_act(severity)
+ // Obstructed low walls cant be deleted through explosions
+ if(is_top_obstructed())
+ return
+ return ..()
+
+/obj/structure/low_wall/examine(mob/user)
+ . = ..()
+ . += span_notice("You could weld it down.")
+ if(wall_paint)
+ . += span_notice("It's coated with a layer of paint.")
+ if(stripe_paint)
+ . += span_notice("It has a painted stripe around its base.")
+
+/obj/structure/low_wall/Initialize(mapload)
+ . = ..()
+ color = null //To remove the mapping preview color
+ AddElement(/datum/element/climbable)
+ set_material(plating_material)
+ if(wall_paint)
+ set_wall_paint(wall_paint)
+ if(stripe_paint)
+ set_stripe_paint(stripe_paint)
+ QUEUE_SMOOTH(src)
+ QUEUE_SMOOTH_NEIGHBORS(src)
+
+/obj/structure/low_wall/update_overlays()
+ overlays.Cut()
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(plating_material)
+
+ var/icon/stripe_icon = SSgreyscale.GetColoredIconByType(plating_mat_ref.wall_stripe_greyscale_config, get_stripe_color())
+ var/mutable_appearance/smoothed_stripe = mutable_appearance(stripe_icon, icon_state, layer = LOW_WALL_STRIPE_LAYER)
+ overlays += smoothed_stripe
+
+ if(!airlock_typecache)
+ airlock_typecache = typecacheof(list(/obj/machinery/door/airlock, /obj/machinery/door/poddoor))
+ var/neighbor_stripe = NONE
+ for(var/cardinal in GLOB.cardinals)
+ var/turf/step_turf = get_step(src, cardinal)
+ var/obj/structure/low_wall/neighboring_lowwall = locate() in step_turf
+ if(neighboring_lowwall)
+ continue
+ for(var/atom/movable/movable_thing as anything in step_turf)
+ if(airlock_typecache[movable_thing.type])
+ neighbor_stripe ^= cardinal
+ break
+ if(neighbor_stripe)
+ var/icon/neighbor_icon = SSgreyscale.GetColoredIconByType(/datum/greyscale_config/wall_neighbor_stripe, get_stripe_color())
+ var/mutable_appearance/neighb_stripe_appearace = mutable_appearance(neighbor_icon, "stripe-[neighbor_stripe]", layer = LOW_WALL_STRIPE_LAYER)
+ overlays += neighb_stripe_appearace
+ return ..()
+
+/obj/structure/low_wall/CanAllowThrough(atom/movable/mover, turf/target)
+ . = ..()
+ if(.)
+ return
+ if(mover.throwing)
+ return TRUE
+ if(locate(/obj/structure/low_wall) in get_turf(mover))
+ return TRUE
+
+/obj/structure/low_wall/attackby(obj/item/weapon, mob/living/user, params)
+ if(is_top_obstructed())
+ return TRUE
+ var/list/modifiers = params2list(params)
+ if(!(flags_1 & NODECONSTRUCT_1) && LAZYACCESS(modifiers, RIGHT_CLICK))
+ if(weapon.tool_behaviour == TOOL_WELDER)
+ if(weapon.tool_start_check(user, amount = 0))
+ to_chat(user, span_notice("You start cutting \the [src]..."))
+ if (weapon.use_tool(src, user, 50, volume = 50))
+ to_chat(user, span_notice("You cut \the [src] down."))
+ deconstruct(TRUE)
+ return TRUE
+ if(istype(weapon, /obj/item/stack/sheet))
+ var/obj/item/stack/sheet/my_sheet = weapon
+ if(my_sheet.try_install_window(user, src.loc, src))
+ return TRUE
+ if(!user.combat_mode && !(weapon.item_flags & ABSTRACT))
+ if(user.transferItemToLoc(weapon, loc, silent = FALSE, user_click_modifiers = modifiers))
+ return TRUE
+ return ..()
+
+/obj/structure/low_wall/deconstruct(disassembled = TRUE, wrench_disassembly = 0)
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(plating_material)
+ new plating_mat_ref.sheet_type(loc, 2)
+ qdel(src)
+
+/obj/structure/low_wall/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
+ if(is_top_obstructed())
+ return FALSE
+ switch(the_rcd.mode)
+ if(RCD_DECONSTRUCT)
+ return list("mode" = RCD_DECONSTRUCT, "delay" = 20, "cost" = 5)
+ if(RCD_WINDOWGRILLE)
+ /// Slight copypasta from grilles
+ var/cost = 8
+ var/delay = 2 SECONDS
+
+ if(the_rcd.window_glass == RCD_WINDOW_REINFORCED)
+ delay = 4 SECONDS
+ cost = 12
+
+ return rcd_result_with_memory(
+ list("mode" = RCD_WINDOWGRILLE, "delay" = delay, "cost" = cost),
+ get_turf(src), RCD_MEMORY_WINDOWGRILLE,
+ )
+ return FALSE
+
+/obj/structure/low_wall/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode)
+ if(is_top_obstructed())
+ return FALSE
+ switch(passed_mode)
+ if(RCD_DECONSTRUCT)
+ to_chat(user, span_notice("You deconstruct \the [src]."))
+ qdel(src)
+ return TRUE
+ if(RCD_WINDOWGRILLE)
+ /// Slight copypasta from grilles
+ var/turf/my_turf = loc
+ if(!ispath(the_rcd.window_type, /obj/structure/window))
+ CRASH("Invalid window path type in RCD: [the_rcd.window_type]")
+ var/obj/structure/window/window_path = the_rcd.window_type
+ if(!valid_window_location(my_turf, user.dir, is_fulltile = initial(window_path.fulltile)))
+ return FALSE
+ to_chat(user, span_notice("You construct the window."))
+ var/obj/structure/window/WD = new the_rcd.window_type(my_turf, user.dir)
+ WD.set_anchored(TRUE)
+ return TRUE
+ return FALSE
+
+/obj/structure/low_wall/proc/set_wall_paint(new_paint)
+ wall_paint = new_paint
+ update_greyscale()
+ update_appearance()
+
+/obj/structure/low_wall/proc/set_stripe_paint(new_paint)
+ stripe_paint = new_paint
+ update_appearance()
+
+/obj/structure/low_wall/proc/set_material(new_material_type)
+ plating_material = new_material_type
+ update_greyscale()
+ update_appearance()
+
+/// Whether the top of the low wall is obstructed by an installed grille or a window
+/obj/structure/low_wall/proc/is_top_obstructed()
+ var/obj/structure/window/window = locate() in loc
+ if(window && window.anchored)
+ return TRUE
+ var/obj/structure/grille/grille = locate() in loc
+ if(grille && grille.anchored)
+ return TRUE
+ return FALSE
+
+/obj/structure/low_wall/titanium
+ plating_material = /datum/material/titanium
+
+/obj/structure/low_wall/plastitanium
+ plating_material = /datum/material/alloy/plastitanium
+
+/obj/structure/low_wall/wood
+ plating_material = /datum/material/wood
diff --git a/code/game/objects/structures/tram_walls.dm b/code/game/objects/structures/tram_walls.dm
index bb077f16bac..feee62e3799 100644
--- a/code/game/objects/structures/tram_walls.dm
+++ b/code/game/objects/structures/tram_walls.dm
@@ -5,7 +5,7 @@
name = "wall"
desc = "A huge chunk of metal used to separate rooms."
anchored = TRUE
- icon = 'icons/turf/walls/wall.dmi'
+ icon = 'icons/turf/walls/legacy/wall.dmi'
icon_state = "wall-0"
base_icon_state = "wall"
layer = LOW_OBJ_LAYER
@@ -24,7 +24,6 @@
var/tram_wall_type = /obj/structure/tramwall
var/girder_type = /obj/structure/girder/tram
-
/obj/structure/tramwall/Initialize(mapload)
. = ..()
var/obj/item/stack/initialized_mineral = new mineral
@@ -76,23 +75,18 @@
/obj/structure/tramwall/titanium
name = "wall"
desc = "A light-weight titanium wall used in shuttles."
- icon = 'icons/turf/walls/shuttle_wall.dmi'
- icon_state = "shuttle_wall-0"
- base_icon_state = "shuttle_wall"
- mineral = /obj/item/stack/sheet/mineral/titanium
+ explosion_block = 3
+ flags_1 = CAN_BE_DIRTY_1
+ flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD
tram_wall_type = /obj/structure/tramwall/titanium
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
+ smoothing_groups = list(SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_SHUTTERS_BLASTDOORS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_LOW_WALL)
+ color = "#b3c0c7" //To display in mapping softwares
/obj/structure/tramwall/plastitanium
name = "wall"
desc = "An evil wall of plasma and titanium."
- icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "plastitanium_wall-0"
- base_icon_state = "plastitanium_wall"
- mineral = /obj/item/stack/sheet/mineral/plastitanium
+ icon = 'icons/turf/walls/metal_wall.dmi'
tram_wall_type = /obj/structure/tramwall/plastitanium
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
+ smoothing_groups = list(SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_SHUTTERS_BLASTDOORS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_LOW_WALL)
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 830b1147316..2f11b73cfe5 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -359,7 +359,7 @@
cut_overlay(crack_overlay)
if(ratio > 75)
return
- crack_overlay = mutable_appearance('icons/obj/structures.dmi', "damage[ratio]", -(layer+0.1))
+ crack_overlay = mutable_appearance('icons/obj/structures.dmi', "damage[ratio]", -(layer+0.1), appearance_flags = RESET_COLOR)
. += crack_overlay
/obj/structure/window/should_atmos_process(datum/gas_mixture/air, exposed_temperature)
@@ -586,43 +586,55 @@
icon = 'icons/obj/smooth_structures/window.dmi'
icon_state = "window-0"
base_icon_state = "window"
+ color = "#AFD3E6"
+ greyscale_config = /datum/greyscale_config/fulltile_window
+ greyscale_colors = "#AFD3E6"
+ alpha = 180
max_integrity = 50
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTERS_BLASTDOORS)
glass_amount = 2
/obj/structure/window/fulltile/unanchored
anchored = FALSE
/obj/structure/window/plasma/fulltile
- icon = 'icons/obj/smooth_structures/plasma_window.dmi'
- icon_state = "plasma_window-0"
- base_icon_state = "plasma_window"
+ icon = 'icons/obj/smooth_structures/window.dmi'
+ icon_state = "window-0"
+ base_icon_state = "window"
+ color = "#c162ec"
+ greyscale_config = /datum/greyscale_config/fulltile_window
+ greyscale_colors = "#c162ec"
+ alpha = 180
max_integrity = 300
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTERS_BLASTDOORS)
glass_amount = 2
/obj/structure/window/plasma/fulltile/unanchored
anchored = FALSE
/obj/structure/window/reinforced/plasma/fulltile
- icon = 'icons/obj/smooth_structures/rplasma_window.dmi'
- icon_state = "rplasma_window-0"
- base_icon_state = "rplasma_window"
+ icon = 'icons/obj/smooth_structures/window.dmi'
+ icon_state = "window-0"
+ base_icon_state = "window"
+ color = "#c162ec"
+ greyscale_config = /datum/greyscale_config/fulltile_reinforced_window
+ greyscale_colors = "#c162ec"
+ alpha = 180
state = RWINDOW_SECURE
- max_integrity = 1000
+ max_integrity = 500
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTERS_BLASTDOORS)
glass_amount = 2
/obj/structure/window/reinforced/plasma/fulltile/unanchored
@@ -630,16 +642,20 @@
state = WINDOW_OUT_OF_FRAME
/obj/structure/window/reinforced/fulltile
- icon = 'icons/obj/smooth_structures/reinforced_window.dmi'
- icon_state = "reinforced_window-0"
- base_icon_state = "reinforced_window"
+ icon = 'icons/obj/smooth_structures/window_reinforced.dmi'
+ icon_state = "window-0"
+ base_icon_state = "window"
+ color = "#829eb5"
+ greyscale_config = /datum/greyscale_config/fulltile_reinforced_window
+ greyscale_colors = "#829eb5"
+ alpha = 180
max_integrity = 150
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
state = RWINDOW_SECURE
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTERS_BLASTDOORS)
glass_amount = 2
/obj/structure/window/reinforced/fulltile/unanchored
@@ -647,20 +663,21 @@
state = WINDOW_OUT_OF_FRAME
/obj/structure/window/reinforced/tinted/fulltile
- icon = 'icons/obj/smooth_structures/tinted_window.dmi'
- icon_state = "tinted_window-0"
- base_icon_state = "tinted_window"
+ icon = 'icons/obj/smooth_structures/window_reinforced.dmi'
+ icon_state = "window-0"
+ base_icon_state = "window"
+ color = "#3b5461"
+ greyscale_config = /datum/greyscale_config/fulltile_reinforced_window
+ greyscale_colors = "#3b5461"
+ alpha = 180
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTERS_BLASTDOORS)
glass_amount = 2
/obj/structure/window/reinforced/fulltile/ice
- icon = 'icons/obj/smooth_structures/rice_window.dmi'
- icon_state = "rice_window-0"
- base_icon_state = "rice_window"
max_integrity = 150
glass_amount = 2
@@ -668,24 +685,28 @@
/obj/structure/window/reinforced/shuttle//this is called reinforced because it is reinforced w/titanium
name = "shuttle window"
desc = "A reinforced, air-locked pod window."
- icon = 'icons/obj/smooth_structures/shuttle_window.dmi'
- icon_state = "shuttle_window-0"
- base_icon_state = "shuttle_window"
+ icon = 'icons/obj/smooth_structures/window_reinforced.dmi'
+ icon_state = "window-0"
+ base_icon_state = "window"
+ color = "#D0CBD4"
+ greyscale_config = /datum/greyscale_config/fulltile_reinforced_window
+ greyscale_colors = "#D0CBD4"
+ alpha = 180
max_integrity = 150
wtype = "shuttle"
- reinf = TRUE
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
reinf = TRUE
heat_resistance = 1600
- armor = list(MELEE = 90, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, FIRE = 80, ACID = 100)
+ armor = list(MELEE = 75, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, FIRE = 80, ACID = 100)
smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE)
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE)
+ smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTERS_BLASTDOORS)
explosion_block = 3
glass_type = /obj/item/stack/sheet/titaniumglass
glass_amount = 2
receive_ricochet_chance_mod = 1.2
+ damage_deflection = 11
/obj/structure/window/reinforced/shuttle/narsie_act()
add_atom_colour("#3C3434", FIXED_COLOUR_PRIORITY)
@@ -695,14 +716,17 @@
/obj/structure/window/reinforced/shuttle/unanchored
anchored = FALSE
- state = WINDOW_OUT_OF_FRAME
/obj/structure/window/reinforced/plasma/plastitanium
name = "plastitanium window"
desc = "A durable looking window made of an alloy of of plasma and titanium."
- icon = 'icons/obj/smooth_structures/plastitanium_window.dmi'
- icon_state = "plastitanium_window-0"
- base_icon_state = "plastitanium_window"
+ icon = 'icons/obj/smooth_structures/window.dmi'
+ icon_state = "window-0"
+ base_icon_state = "window"
+ color = "#D0CBD4"
+ greyscale_config = /datum/greyscale_config/fulltile_window
+ greyscale_colors = "#D0CBD4"
+ alpha = 180
max_integrity = 1200
wtype = "shuttle"
fulltile = TRUE
@@ -710,8 +734,8 @@
heat_resistance = 1600
armor = list(MELEE = 95, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, FIRE = 80, ACID = 100)
smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM)
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM)
+ smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTERS_BLASTDOORS)
explosion_block = 3
damage_deflection = 21 //The same as reinforced plasma windows.3
glass_type = /obj/item/stack/sheet/plastitaniumglass
@@ -814,11 +838,16 @@
anchored = FALSE
/obj/structure/window/bronze/fulltile
- icon_state = "clockwork_window-0"
- base_icon_state = "clockwork_window"
+ icon = 'icons/obj/smooth_structures/window.dmi'
+ icon_state = "window-0"
+ base_icon_state = "window"
+ color = "#92661A"
+ greyscale_config = /datum/greyscale_config/fulltile_window
+ greyscale_colors = "#92661A"
+ alpha = 180
smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WINDOW_FULLTILE_BRONZE)
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_BRONZE)
+ smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
+ canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTERS_BLASTDOORS)
fulltile = TRUE
flags_1 = PREVENT_CLICK_UNDER_1
max_integrity = 50
diff --git a/code/game/turfs/change_turf.dm b/code/game/turfs/change_turf.dm
index 544ee271a55..e449993a1ee 100644
--- a/code/game/turfs/change_turf.dm
+++ b/code/game/turfs/change_turf.dm
@@ -26,8 +26,11 @@ GLOBAL_LIST_INIT(blacklisted_automated_baseturfs, typecacheof(list(
if(T.icon != icon)
T.icon = icon
if(color)
- T.atom_colours = atom_colours.Copy()
- T.update_atom_colour()
+ if(atom_colours) //Because, we may very well not use atom_colours while we use color, to optimize memory
+ T.atom_colours = atom_colours.Copy()
+ T.update_atom_colour()
+ else
+ T.color = color
if(T.dir != dir)
T.setDir(dir)
return T
diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm
index 1011c888fff..35be7b8136c 100644
--- a/code/game/turfs/closed/_closed.dm
+++ b/code/game/turfs/closed/_closed.dm
@@ -1,6 +1,5 @@
/turf/closed
layer = CLOSED_TURF_LAYER
- turf_flags = IS_SOLID
opacity = TRUE
density = TRUE
blocks_air = TRUE
@@ -41,29 +40,10 @@
icon = 'icons/turf/shuttleold.dmi'
icon_state = "block"
-/turf/closed/indestructible/weeb
- name = "paper wall"
- desc = "Reinforced paper walling. Someone really doesn't you to leave."
- icon = 'icons/obj/smooth_structures/paperframes.dmi'
- icon_state = "paperframes-0"
- base_icon_state = "paperframes"
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_PAPERFRAME)
- canSmoothWith = list(SMOOTH_GROUP_PAPERFRAME)
- var/static/mutable_appearance/indestructible_paper = mutable_appearance('icons/obj/smooth_structures/paperframes.dmi',icon_state = "paper", layer = CLOSED_TURF_LAYER - 0.1)
-
-/turf/closed/indestructible/weeb/Initialize(mapload)
- . = ..()
- update_appearance()
-
-/turf/closed/indestructible/weeb/update_overlays()
- . = ..()
- . += indestructible_paper
-
/turf/closed/indestructible/sandstone
name = "sandstone wall"
desc = "A wall with sandstone plating. Rough."
- icon = 'icons/turf/walls/sandstone_wall.dmi'
+ icon = 'icons/turf/walls/legacy/sandstone_wall.dmi'
icon_state = "sandstone_wall-0"
base_icon_state = "sandstone_wall"
baseturfs = /turf/closed/indestructible/sandstone
@@ -115,7 +95,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen)
/turf/closed/indestructible/reinforced
name = "reinforced wall"
desc = "A huge chunk of reinforced metal used to separate rooms. Effectively impervious to conventional methods of destruction."
- icon = 'icons/turf/walls/reinforced_wall.dmi'
+ icon = 'icons/turf/walls/legacy/reinforced_wall.dmi'
icon_state = "reinforced_wall-0"
base_icon_state = "reinforced_wall"
smoothing_flags = SMOOTH_BITMASK
@@ -124,7 +104,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen)
/turf/closed/indestructible/riveted
- icon = 'icons/turf/walls/riveted.dmi'
+ icon = 'icons/turf/walls/legacy/riveted.dmi'
icon_state = "riveted-0"
base_icon_state = "riveted"
smoothing_flags = SMOOTH_BITMASK
@@ -132,15 +112,15 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen)
canSmoothWith = list(SMOOTH_GROUP_CLOSED_TURFS)
/turf/closed/indestructible/syndicate
- icon = 'icons/turf/walls/plastitanium_wall.dmi'
+ icon = 'icons/turf/walls/legacy/plastitanium_wall.dmi'
icon_state = "plastitanium_wall-0"
base_icon_state = "plastitanium_wall"
smoothing_flags = SMOOTH_BITMASK
- 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)
+ smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
/turf/closed/indestructible/riveted/uranium
- icon = 'icons/turf/walls/uranium_wall.dmi'
+ icon = 'icons/turf/walls/legacy/uranium_wall.dmi'
icon_state = "uranium_wall-0"
base_icon_state = "uranium_wall"
smoothing_flags = SMOOTH_BITMASK
@@ -148,41 +128,33 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen)
/turf/closed/indestructible/riveted/plastinum
name = "plastinum wall"
desc = "A luxurious wall made out of a plasma-platinum alloy. Effectively impervious to conventional methods of destruction."
- icon = 'icons/turf/walls/plastinum_wall.dmi'
+ icon = 'icons/turf/walls/legacy/plastinum_wall.dmi'
icon_state = "plastinum_wall-0"
base_icon_state = "plastinum_wall"
- smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTINUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_PLASTINUM_WALLS)
-
-/turf/closed/indestructible/riveted/plastinum/nodiagonal
- icon_state = "map-shuttle_nd"
- smoothing_flags = SMOOTH_BITMASK
/turf/closed/indestructible/wood
- icon = 'icons/turf/walls/wood_wall.dmi'
+ icon = 'icons/turf/walls/legacy/wood_wall.dmi'
icon_state = "wood_wall-0"
base_icon_state = "wood_wall"
smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
+ smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_WALLS)
/turf/closed/indestructible/alien
name = "alien wall"
desc = "A wall with alien alloy plating."
- icon = 'icons/turf/walls/abductor_wall.dmi'
+ icon = 'icons/turf/walls/legacy/abductor_wall.dmi'
icon_state = "abductor_wall-0"
base_icon_state = "abductor_wall"
- smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS)
+ smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_WALLS)
/turf/closed/indestructible/cult
name = "runed metal wall"
desc = "A cold metal wall engraved with indecipherable symbols. Studying them causes your head to pound. Effectively impervious to conventional methods of destruction."
- icon = 'icons/turf/walls/cult_wall.dmi'
+ icon = 'icons/turf/walls/legacy/cult_wall.dmi'
icon_state = "cult_wall-0"
base_icon_state = "cult_wall"
smoothing_flags = SMOOTH_BITMASK
@@ -199,30 +171,32 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen)
/turf/closed/indestructible/fakeglass
name = "window"
- icon = 'icons/obj/smooth_structures/reinforced_window.dmi'
- icon_state = "fake_window"
- base_icon_state = "reinforced_window"
+ icon = 'icons/obj/smooth_structures/window.dmi'
+ icon_state = "window-0"
+ base_icon_state = "window"
+ color = "#c162ec"
opacity = FALSE
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_WINDOW_FULLTILE)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE)
-/turf/closed/indestructible/fakeglass/Initialize(mapload)
+/turf/closed/indestructible/fakeglass/Initialize(mapload, inherited_virtual_z)
. = ..()
underlays += mutable_appearance('icons/obj/structures.dmi', "grille") //add a grille underlay
underlays += mutable_appearance('icons/turf/floors.dmi', "plating") //add the plating underlay, below the grille
/turf/closed/indestructible/opsglass
name = "window"
- icon = 'icons/obj/smooth_structures/plastitanium_window.dmi'
- icon_state = "plastitanium_window-0"
- base_icon_state = "plastitanium_window"
+ icon = 'icons/obj/smooth_structures/window.dmi'
+ icon_state = "window-0"
+ base_icon_state = "window"
+ color = "#5d3369"
opacity = FALSE
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM)
canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE_PLASTITANIUM)
-/turf/closed/indestructible/opsglass/Initialize(mapload)
+/turf/closed/indestructible/opsglass/Initialize(mapload, inherited_virtual_z)
. = ..()
icon_state = null
underlays += mutable_appearance('icons/obj/structures.dmi', "grille")
@@ -254,7 +228,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen)
icon_state = "icerock"
/turf/closed/indestructible/rock/snow/ice/ore
- icon = 'icons/turf/walls/icerock_wall.dmi'
+ icon = 'icons/turf/walls/legacy/icerock_wall.dmi'
icon_state = "icerock_wall-0"
base_icon_state = "icerock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
@@ -285,18 +259,18 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen)
/turf/closed/indestructible/iron
name = "impervious iron wall"
desc = "A wall with tough iron plating."
- icon = 'icons/turf/walls/iron_wall.dmi'
+ icon = 'icons/turf/walls/legacy/iron_wall.dmi'
icon_state = "iron_wall-0"
base_icon_state = "iron_wall"
smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS)
+ smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_WALLS)
opacity = FALSE
/turf/closed/indestructible/riveted/boss
name = "necropolis wall"
desc = "A thick, seemingly indestructible stone wall."
- icon = 'icons/turf/walls/boss_wall.dmi'
+ icon = 'icons/turf/walls/legacy/boss_wall.dmi'
icon_state = "boss_wall-0"
base_icon_state = "boss_wall"
smoothing_flags = SMOOTH_BITMASK
@@ -316,7 +290,7 @@ INITIALIZE_IMMEDIATE(/turf/closed/indestructible/splashscreen)
/turf/closed/indestructible/riveted/hierophant
name = "wall"
desc = "A wall made out of a strange metal. The squares on it pulse in a predictable pattern."
- icon = 'icons/turf/walls/hierophant_wall.dmi'
+ icon = 'icons/turf/walls/legacy/hierophant_wall.dmi'
icon_state = "wall"
smoothing_flags = SMOOTH_CORNERS
smoothing_groups = list(SMOOTH_GROUP_HIERO_WALL)
diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm
index 1b9815b3827..b3a40a1b96d 100644
--- a/code/game/turfs/closed/minerals.dm
+++ b/code/game/turfs/closed/minerals.dm
@@ -13,7 +13,6 @@
initial_gas_mix = AIRLESS_ATMOS
opacity = TRUE
density = TRUE
- layer = EDGED_TURF_LAYER
plane = GAME_PLANE_UPPER
base_icon_state = "smoothrocks"
temperature = TCMB
@@ -261,7 +260,7 @@
/turf/closed/mineral/random/snow
name = "snowy mountainside"
icon = 'icons/turf/mining.dmi'
- smooth_icon = 'icons/turf/walls/mountain_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/mountain_wall.dmi'
icon_state = "mountainrock"
base_icon_state = "mountain_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
@@ -275,8 +274,8 @@
/turf/closed/mineral/random/snow/Change_Ore(ore_type, random = 0)
. = ..()
if(mineralType)
- smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
- icon = 'icons/turf/walls/icerock_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/icerock_wall.dmi'
+ icon = 'icons/turf/walls/legacy/icerock_wall.dmi'
icon_state = "icerock_wall-0"
base_icon_state = "icerock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
@@ -322,7 +321,7 @@
/turf/closed/mineral/random/labormineral/ice
name = "snowy mountainside"
icon = 'icons/turf/mining.dmi'
- smooth_icon = 'icons/turf/walls/mountain_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/mountain_wall.dmi'
icon_state = "mountainrock"
base_icon_state = "mountain_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
@@ -340,8 +339,8 @@
/turf/closed/mineral/random/labormineral/ice/Change_Ore(ore_type, random = 0)
. = ..()
if(mineralType)
- smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
- icon = 'icons/turf/walls/icerock_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/icerock_wall.dmi'
+ icon = 'icons/turf/walls/legacy/icerock_wall.dmi'
icon_state = "icerock_wall-0"
base_icon_state = "icerock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
@@ -352,7 +351,7 @@
/turf/closed/mineral/iron/ice
icon_state = "icerock_iron"
- smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/icerock_wall.dmi'
base_icon_state = "icerock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/misc/asteroid/snow/ice
@@ -370,7 +369,7 @@
/turf/closed/mineral/diamond/ice
icon_state = "icerock_iron"
- smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/icerock_wall.dmi'
base_icon_state = "icerock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/misc/asteroid/snow/ice
@@ -407,7 +406,7 @@
/turf/closed/mineral/plasma/ice
icon_state = "icerock_plasma"
- smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/icerock_wall.dmi'
base_icon_state = "icerock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/misc/asteroid/snow/ice
@@ -444,7 +443,7 @@
/turf/closed/mineral/ash_rock //wall piece
name = "rock"
icon = 'icons/turf/mining.dmi'
- smooth_icon = 'icons/turf/walls/rock_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/rock_wall.dmi'
icon_state = "rock2"
base_icon_state = "rock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
@@ -457,7 +456,7 @@
/turf/closed/mineral/snowmountain
name = "snowy mountainside"
icon = 'icons/turf/mining.dmi'
- smooth_icon = 'icons/turf/walls/mountain_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/mountain_wall.dmi'
icon_state = "mountainrock"
base_icon_state = "mountain_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
@@ -475,7 +474,7 @@
/turf/closed/mineral/snowmountain/cavern
name = "ice cavern rock"
icon = 'icons/turf/mining.dmi'
- smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/icerock_wall.dmi'
icon_state = "icerock"
base_icon_state = "icerock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
@@ -493,13 +492,13 @@
name = "iron rock"
icon = 'icons/turf/mining.dmi'
icon_state = "redrock"
- smooth_icon = 'icons/turf/walls/red_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/red_wall.dmi'
base_icon_state = "red_wall"
/turf/closed/mineral/random/stationside/asteroid
name = "iron rock"
icon = 'icons/turf/mining.dmi'
- smooth_icon = 'icons/turf/walls/red_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/red_wall.dmi'
base_icon_state = "red_wall"
/turf/closed/mineral/random/stationside/asteroid/porus
@@ -611,7 +610,7 @@
/turf/closed/mineral/gibtonite/ice
icon_state = "icerock_Gibtonite"
- smooth_icon = 'icons/turf/walls/icerock_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/icerock_wall.dmi'
base_icon_state = "icerock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
turf_type = /turf/open/misc/asteroid/snow/ice
@@ -631,7 +630,7 @@
baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface
initial_gas_mix = LAVALAND_DEFAULT_ATMOS
defer_change = 1
- smooth_icon = 'icons/turf/walls/rock_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/rock_wall.dmi'
base_icon_state = "rock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
diff --git a/code/game/turfs/closed/wall/material_walls.dm b/code/game/turfs/closed/wall/material_walls.dm
deleted file mode 100644
index e1de7f8a98d..00000000000
--- a/code/game/turfs/closed/wall/material_walls.dm
+++ /dev/null
@@ -1,26 +0,0 @@
-/turf/closed/wall/material
- name = "wall"
- desc = "A huge chunk of material used to separate rooms."
- icon = 'icons/turf/walls/materialwall.dmi'
- icon_state = "materialwall-0"
- base_icon_state = "materialwall"
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_MATERIAL_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_MATERIAL_WALLS)
- rcd_memory = null
- material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS
-
-/turf/closed/wall/material/break_wall()
- for(var/i in custom_materials)
- var/datum/material/M = i
- new M.sheet_type(src, FLOOR(custom_materials[M] / MINERAL_MATERIAL_AMOUNT, 1))
- return new girder_type(src)
-
-/turf/closed/wall/material/devastate_wall()
- for(var/i in custom_materials)
- var/datum/material/M = i
- new M.sheet_type(src, FLOOR(custom_materials[M] / MINERAL_MATERIAL_AMOUNT, 1))
-
-/turf/closed/wall/material/mat_update_desc(mat)
- desc = "A huge chunk of [mat] used to separate rooms."
-
diff --git a/code/game/turfs/closed/wall/mineral_walls.dm b/code/game/turfs/closed/wall/mineral_walls.dm
index 67fc5685339..cff5538d3a2 100644
--- a/code/game/turfs/closed/wall/mineral_walls.dm
+++ b/code/game/turfs/closed/wall/mineral_walls.dm
@@ -1,9 +1,6 @@
/turf/closed/wall/mineral
name = "mineral wall"
desc = "This shouldn't exist"
- icon_state = ""
- smoothing_flags = SMOOTH_BITMASK
- canSmoothWith = null
rcd_memory = null
material_flags = MATERIAL_EFFECTS
var/last_event = 0
@@ -12,40 +9,23 @@
/turf/closed/wall/mineral/gold
name = "gold wall"
desc = "A wall with gold plating. Swag!"
- icon = 'icons/turf/walls/gold_wall.dmi'
- icon_state = "gold_wall-0"
- base_icon_state = "gold_wall"
- sheet_type = /obj/item/stack/sheet/mineral/gold
explosion_block = 0 //gold is a soft metal you dingus.
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_GOLD_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_GOLD_WALLS)
- custom_materials = list(/datum/material/gold = 4000)
+ plating_material = /datum/material/gold
+ color = "#dbdd4c" //To display in mapping softwares
/turf/closed/wall/mineral/silver
name = "silver wall"
desc = "A wall with silver plating. Shiny!"
- icon = 'icons/turf/walls/silver_wall.dmi'
- icon_state = "silver_wall-0"
- base_icon_state = "silver_wall"
- sheet_type = /obj/item/stack/sheet/mineral/silver
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SILVER_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_SILVER_WALLS)
- custom_materials = list(/datum/material/silver = 4000)
+ plating_material = /datum/material/silver
+ color = "#e3f1f8" //To display in mapping softwares
/turf/closed/wall/mineral/diamond
name = "diamond wall"
desc = "A wall with diamond plating. You monster."
- icon = 'icons/turf/walls/diamond_wall.dmi'
- icon_state = "diamond_wall-0"
- base_icon_state = "diamond_wall"
- sheet_type = /obj/item/stack/sheet/mineral/diamond
slicing_duration = 200 //diamond wall takes twice as much time to slice
explosion_block = 3
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_DIAMOND_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_DIAMOND_WALLS)
- custom_materials = list(/datum/material/diamond = 4000)
+ plating_material = /datum/material/diamond
+ color = "#71c8f7" //To display in mapping softwares
/turf/closed/wall/mineral/diamond/hulk_recoil(obj/item/bodypart/arm, mob/living/carbon/human/hulkman, damage = 41)
return ..()
@@ -53,40 +33,23 @@
/turf/closed/wall/mineral/bananium
name = "bananium wall"
desc = "A wall with bananium plating. Honk!"
- icon = 'icons/turf/walls/bananium_wall.dmi'
- icon_state = "bananium_wall-0"
- base_icon_state = "bananium_wall"
- sheet_type = /obj/item/stack/sheet/mineral/bananium
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BANANIUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_BANANIUM_WALLS)
- custom_materials = list(/datum/material/bananium = 4000)
+ plating_material = /datum/material/bananium
+ color = "#ffff00" //To display in mapping softwares
/turf/closed/wall/mineral/sandstone
name = "sandstone wall"
desc = "A wall with sandstone plating. Rough."
- icon = 'icons/turf/walls/sandstone_wall.dmi'
- icon_state = "sandstone_wall-0"
- base_icon_state = "sandstone_wall"
- sheet_type = /obj/item/stack/sheet/mineral/sandstone
+ icon = 'icons/turf/walls/stone_wall.dmi'
explosion_block = 0
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SANDSTONE_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_SANDSTONE_WALLS)
- custom_materials = list(/datum/material/sandstone = 4000)
+ plating_material = /datum/material/sandstone
+ color = "#B77D31" //To display in mapping softwares
/turf/closed/wall/mineral/uranium
article = "a"
name = "uranium wall"
desc = "A wall with uranium plating. This is probably a bad idea."
- icon = 'icons/turf/walls/uranium_wall.dmi'
- icon_state = "uranium_wall-0"
- base_icon_state = "uranium_wall"
- sheet_type = /obj/item/stack/sheet/mineral/uranium
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_URANIUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_URANIUM_WALLS)
- custom_materials = list(/datum/material/uranium = 4000)
+ plating_material = /datum/material/uranium
+ color = "#30f71a" //To display in mapping softwares
/turf/closed/wall/mineral/uranium/proc/radiate()
if(!active)
@@ -124,30 +87,19 @@
/turf/closed/wall/mineral/plasma
name = "plasma wall"
desc = "A wall with plasma plating. This is definitely a bad idea."
- icon = 'icons/turf/walls/plasma_wall.dmi'
- icon_state = "plasma_wall-0"
- base_icon_state = "plasma_wall"
- sheet_type = /obj/item/stack/sheet/mineral/plasma
thermal_conductivity = 0.04
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASMA_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_PLASMA_WALLS)
- custom_materials = list(/datum/material/plasma = 4000)
+ plating_material = /datum/material/plasma
+ color = "#c162ec" //To display in mapping softwares
/turf/closed/wall/mineral/wood
name = "wooden wall"
desc = "A wall with wooden plating. Stiff."
icon = 'icons/turf/walls/wood_wall.dmi'
- icon_state = "wood_wall-0"
- base_icon_state = "wood_wall"
- sheet_type = /obj/item/stack/sheet/mineral/wood
hardness = 70
turf_flags = IS_SOLID
explosion_block = 0
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WOOD_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_WOOD_WALLS)
- custom_materials = list(/datum/material/wood = 4000)
+ plating_material = /datum/material/wood
+ color = "#bb8e53" //To display in mapping softwares
/turf/closed/wall/mineral/wood/attackby(obj/item/W, mob/user)
if(W.get_sharpness() && W.force)
@@ -164,49 +116,23 @@
/turf/closed/wall/mineral/wood/nonmetal
desc = "A solidly wooden wall. It's a bit weaker than a wall made with metal."
- girder_type = /obj/structure/barricade/wooden
hardness = 50
-/turf/closed/wall/mineral/bamboo
- name = "bamboo wall"
- desc = "A wall with a bamboo finish."
- icon = 'icons/turf/walls/bamboo_wall.dmi'
- icon_state = "bamboo"
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_BAMBOO_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_BAMBOO_WALLS)
- sheet_type = /obj/item/stack/sheet/mineral/bamboo
- hardness = 60
-
/turf/closed/wall/mineral/iron
name = "rough iron wall"
desc = "A wall with rough iron plating."
- icon = 'icons/turf/walls/iron_wall.dmi'
- icon_state = "iron_wall-0"
- base_icon_state = "iron_wall"
- sheet_type = /obj/item/stack/rods
- sheet_amount = 5
- smoothing_flags = SMOOTH_BITMASK
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_IRON_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_IRON_WALLS)
- custom_materials = list(/datum/material/iron = 5000)
+ icon = 'icons/turf/walls/stone_wall.dmi'
/turf/closed/wall/mineral/snow
name = "packed snow wall"
desc = "A wall made of densely packed snow blocks."
- icon = 'icons/turf/walls/snow_wall.dmi'
- icon_state = "snow_wall-0"
- base_icon_state = "snow_wall"
- smoothing_flags = SMOOTH_BITMASK
+ icon = 'icons/turf/walls/stone_wall.dmi'
hardness = 80
explosion_block = 0
slicing_duration = 30
- sheet_type = /obj/item/stack/sheet/mineral/snow
- canSmoothWith = null
- girder_type = null
bullet_sizzle = TRUE
bullet_bounce_sound = null
- custom_materials = list(/datum/material/snow = 4000)
+ plating_material = /datum/material/snow
/turf/closed/wall/mineral/snow/hulk_recoil(obj/item/bodypart/arm, mob/living/carbon/human/hulkman, damage = 0)
return ..() //No recoil damage, snow is weak
@@ -214,78 +140,47 @@
/turf/closed/wall/mineral/abductor
name = "alien wall"
desc = "A wall with alien alloy plating."
- icon = 'icons/turf/walls/abductor_wall.dmi'
- icon_state = "abductor_wall-0"
- base_icon_state = "abductor_wall"
- sheet_type = /obj/item/stack/sheet/mineral/abductor
slicing_duration = 200 //alien wall takes twice as much time to slice
explosion_block = 3
- smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_ABDUCTOR_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_ABDUCTOR_WALLS)
- custom_materials = list(/datum/material/alloy/alien = 4000)
+ plating_material = /datum/material/alloy/alien
+ color = "#6041aa" //To display in mapping softwares
/////////////////////Titanium walls/////////////////////
/turf/closed/wall/mineral/titanium //has to use this path due to how building walls works
name = "wall"
desc = "A light-weight titanium wall used in shuttles."
- icon = 'icons/turf/walls/shuttle_wall.dmi'
- icon_state = "shuttle_wall-0"
- base_icon_state = "shuttle_wall"
explosion_block = 3
flags_1 = CAN_BE_DIRTY_1
flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD
- sheet_type = /obj/item/stack/sheet/mineral/titanium
- smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
- custom_materials = list(/datum/material/titanium = 4000)
+ smoothing_groups = list(SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_SHUTTERS_BLASTDOORS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_LOW_WALL)
+ plating_material = /datum/material/titanium
+ color = "#b3c0c7" //To display in mapping softwares
/turf/closed/wall/mineral/titanium/rust_heretic_act()
return // titanium does not rust
/turf/closed/wall/mineral/titanium/nodiagonal
- icon = 'icons/turf/walls/shuttle_wall.dmi'
- icon_state = "map-shuttle_nd"
- base_icon_state = "shuttle_wall"
- smoothing_flags = SMOOTH_BITMASK
/turf/closed/wall/mineral/titanium/nosmooth
- icon = 'icons/turf/shuttle.dmi'
- icon_state = "wall"
- smoothing_flags = NONE
/turf/closed/wall/mineral/titanium/overspace
- icon_state = "map-overspace"
- smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
- fixed_underlay = list("space" = TRUE)
-
-/turf/closed/wall/mineral/titanium/interior/copyTurf(turf/T)
- . = ..()
- T.transform = transform
-/turf/closed/wall/mineral/titanium/copyTurf(turf/T)
- . = ..()
- T.transform = transform
+/turf/closed/wall/mineral/titanium/interior
/turf/closed/wall/mineral/titanium/survival
name = "pod wall"
desc = "An easily-compressable wall used for temporary shelter."
- icon = 'icons/turf/walls/survival_pod_walls.dmi'
- icon_state = "survival_pod_walls-0"
- base_icon_state = "survival_pod_walls"
- smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
- canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_SHUTTLE_PARTS)
+ canSmoothWith = list(SMOOTH_GROUP_SURVIVAL_TIANIUM_POD, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_SHUTTLE_PARTS)
+ color = "#242424" //To display in mapping softwares
+ wall_paint = "#242424"
+ stripe_paint = "#824621"
/turf/closed/wall/mineral/titanium/survival/nodiagonal
- icon = 'icons/turf/walls/survival_pod_walls.dmi'
- icon_state = "survival_pod_walls-0"
- base_icon_state = "survival_pod_walls"
- smoothing_flags = SMOOTH_BITMASK
/turf/closed/wall/mineral/titanium/survival/pod
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_SURVIVAL_TIANIUM_POD)
+ smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SURVIVAL_TIANIUM_POD)
canSmoothWith = list(SMOOTH_GROUP_SURVIVAL_TIANIUM_POD)
/////////////////////Plastitanium walls/////////////////////
@@ -293,34 +188,21 @@
/turf/closed/wall/mineral/plastitanium
name = "wall"
desc = "A durable wall made of an alloy of plasma and titanium."
- icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "plastitanium_wall-0"
- base_icon_state = "plastitanium_wall"
+ icon = 'icons/turf/walls/metal_wall.dmi'
explosion_block = 4
- sheet_type = /obj/item/stack/sheet/mineral/plastitanium
- smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
- custom_materials = list(/datum/material/alloy/plastitanium = 4000)
+ smoothing_groups = list(SMOOTH_GROUP_WALLS)
+ canSmoothWith = list(SMOOTH_GROUP_SHUTTERS_BLASTDOORS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_LOW_WALL)
+ plating_material = /datum/material/alloy/plastitanium
+ color = "#3a313a" //To display in mapping softwares
/turf/closed/wall/mineral/plastitanium/rust_heretic_act()
return // plastitanium does not rust
/turf/closed/wall/mineral/plastitanium/nodiagonal
- icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "map-shuttle_nd"
- base_icon_state = "plastitanium_wall"
- smoothing_flags = SMOOTH_BITMASK
/turf/closed/wall/mineral/plastitanium/nosmooth
- icon = 'icons/turf/shuttle.dmi'
- icon_state = "wall"
- smoothing_flags = NONE
/turf/closed/wall/mineral/plastitanium/overspace
- icon_state = "map-overspace"
- smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
- fixed_underlay = list("space" = TRUE)
/turf/closed/wall/mineral/plastitanium/explosive/ex_act(severity)
@@ -328,9 +210,4 @@
bombcore.detonate()
return ..()
-/turf/closed/wall/mineral/plastitanium/hulk_recoil(obj/item/bodypart/arm, mob/living/carbon/human/hulkman, damage = 41)
- return ..()
-
-/turf/closed/wall/mineral/plastitanium/copyTurf(turf/T)
- . = ..()
- T.transform = transform
+/turf/closed/wall/mineral/plastitanium/interior
diff --git a/code/game/turfs/closed/wall/misc_walls.dm b/code/game/turfs/closed/wall/misc_walls.dm
index 8842aeada09..4d1f430736e 100644
--- a/code/game/turfs/closed/wall/misc_walls.dm
+++ b/code/game/turfs/closed/wall/misc_walls.dm
@@ -2,22 +2,16 @@
name = "runed metal wall"
desc = "A cold metal wall engraved with indecipherable symbols. Studying them causes your head to pound."
icon = 'icons/turf/walls/cult_wall.dmi'
- icon_state = "cult_wall-0"
- base_icon_state = "cult_wall"
turf_flags = IS_SOLID
smoothing_flags = SMOOTH_BITMASK
canSmoothWith = null
- sheet_type = /obj/item/stack/sheet/runed_metal
- sheet_amount = 1
- girder_type = /obj/structure/girder/cult
+ plating_material = /datum/material/runedmetal
+ color = "#3C3434" //To display in mapping softwares
/turf/closed/wall/mineral/cult/Initialize(mapload)
new /obj/effect/temp_visual/cult/turf(src)
. = ..()
-/turf/closed/wall/mineral/cult/devastate_wall()
- new sheet_type(get_turf(src), sheet_amount)
-
/turf/closed/wall/mineral/cult/Exited(atom/movable/gone, direction)
. = ..()
if(istype(gone, /mob/living/simple_animal/hostile/construct/harvester)) //harvesters can go through cult walls, dragging something with
@@ -41,9 +35,6 @@
/turf/closed/wall/vault
name = "strange wall"
- icon = 'icons/turf/walls.dmi'
- icon_state = "rockvault"
- base_icon_state = "rockvault"
turf_flags = IS_SOLID
smoothing_flags = NONE
canSmoothWith = null
@@ -65,9 +56,6 @@
base_icon_state = "sandstonevault"
/turf/closed/wall/ice
- icon = 'icons/turf/walls/icedmetal_wall.dmi'
- icon_state = "icedmetal_wall-0"
- base_icon_state = "icedmetal_wall"
desc = "A wall covered in a thick sheet of ice."
turf_flags = IS_SOLID
smoothing_flags = SMOOTH_BITMASK
@@ -100,28 +88,20 @@
/turf/closed/wall/mineral/bronze
name = "clockwork wall"
desc = "A huge chunk of bronze, decorated like gears and cogs."
- icon = 'icons/turf/walls/clockwork_wall.dmi'
- icon_state = "clockwork_wall-0"
- base_icon_state = "clockwork_wall"
turf_flags = IS_SOLID
smoothing_flags = SMOOTH_BITMASK
- sheet_type = /obj/item/stack/sheet/bronze
- sheet_amount = 2
- girder_type = /obj/structure/girder/bronze
+ plating_material = /datum/material/bronze
+ color = "#92661A" //To display in mapping softwares
/turf/closed/wall/rock
name = "reinforced rock"
desc = "It has metal struts that need to be welded away before it can be mined."
- icon = 'icons/turf/walls/reinforced_rock.dmi'
+ icon = 'icons/turf/walls/legacy/reinforced_rock.dmi'
icon_state = "porous_rock-0"
base_icon_state = "porous_rock"
turf_flags = NO_RUST
- sheet_amount = 1
hardness = 50
- girder_type = null
- decon_type = /turf/closed/mineral/asteroid
/turf/closed/wall/rock/porous
name = "reinforced porous rock"
desc = "This rock is filled with pockets of breathable air. It has metal struts to protect it from mining."
- decon_type = /turf/closed/mineral/asteroid/porous
diff --git a/code/game/turfs/closed/wall/reinf_walls.dm b/code/game/turfs/closed/wall/reinf_walls.dm
index 350b3097c41..eb209b6640c 100644
--- a/code/game/turfs/closed/wall/reinf_walls.dm
+++ b/code/game/turfs/closed/wall/reinf_walls.dm
@@ -1,271 +1,30 @@
/turf/closed/wall/r_wall
name = "reinforced wall"
desc = "A huge chunk of reinforced metal used to separate rooms."
- icon = 'icons/turf/walls/reinforced_wall.dmi'
- icon_state = "reinforced_wall-0"
- base_icon_state = "reinforced_wall"
+ icon = 'icons/turf/walls/solid_wall_reinforced.dmi'
opacity = TRUE
density = TRUE
- turf_flags = IS_SOLID
- smoothing_flags = SMOOTH_BITMASK
hardness = 10
- sheet_type = /obj/item/stack/sheet/plasteel
- sheet_amount = 1
- girder_type = /obj/structure/girder/reinforced
+ reinf_material = /datum/material/iron
+ plating_material = /datum/material/alloy/plasteel
explosion_block = 2
rad_insulation = RAD_HEAVY_INSULATION
heat_capacity = 312500 //a little over 5 cm thick , 312500 for 1 m by 2.5 m by 0.25 m plasteel wall. also indicates the temperature at wich the wall will melt (currently only able to melt with H/E pipes)
- ///Dismantled state, related to deconstruction.
- var/d_state = INTACT
-
-
-/turf/closed/wall/r_wall/deconstruction_hints(mob/user)
- switch(d_state)
- if(INTACT)
- return span_notice("The outer grille is fully intact.")
- if(SUPPORT_LINES)
- return span_notice("The outer grille has been cut, and the support lines are screwed securely to the outer cover.")
- if(COVER)
- return span_notice("The support lines have been unscrewed, and the metal cover is welded firmly in place.")
- if(CUT_COVER)
- return span_notice("The metal cover has been sliced through, and is connected loosely to the girder.")
- if(ANCHOR_BOLTS)
- return span_notice("The outer cover has been pried away, and the bolts anchoring the support rods are wrenched in place.")
- if(SUPPORT_RODS)
- return span_notice("The bolts anchoring the support rods have been loosened, but are still welded firmly to the girder.")
- if(SHEATH)
- return span_notice("The support rods have been sliced through, and the outer sheath is connected loosely to the girder.")
-
-/turf/closed/wall/r_wall/devastate_wall()
- new sheet_type(src, sheet_amount)
- new /obj/item/stack/sheet/iron(src, 2)
-
-/turf/closed/wall/r_wall/attack_animal(mob/living/simple_animal/user, list/modifiers)
- user.changeNext_move(CLICK_CD_MELEE)
- user.do_attack_animation(src)
- if(!user.environment_smash)
- return
- if(user.environment_smash & ENVIRONMENT_SMASH_RWALLS)
- dismantle_wall(1)
- playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE)
- else
- playsound(src, 'sound/effects/bang.ogg', 50, TRUE)
- to_chat(user, span_warning("This wall is far too strong for you to destroy."))
-
-/turf/closed/wall/r_wall/hulk_recoil(obj/item/bodypart/arm, mob/living/carbon/human/hulkman, damage = 41)
- return ..()
-
-/turf/closed/wall/r_wall/try_decon(obj/item/W, mob/user, turf/T)
- //DECONSTRUCTION
- switch(d_state)
- if(INTACT)
- if(W.tool_behaviour == TOOL_WIRECUTTER)
- W.play_tool_sound(src, 100)
- d_state = SUPPORT_LINES
- update_appearance()
- to_chat(user, span_notice("You cut the outer grille."))
- return TRUE
-
- if(SUPPORT_LINES)
- if(W.tool_behaviour == TOOL_SCREWDRIVER)
- to_chat(user, span_notice("You begin unsecuring the support lines..."))
- if(W.use_tool(src, user, 40, volume=100))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != SUPPORT_LINES)
- return TRUE
- d_state = COVER
- update_appearance()
- to_chat(user, span_notice("You unsecure the support lines."))
- return TRUE
-
- else if(W.tool_behaviour == TOOL_WIRECUTTER)
- W.play_tool_sound(src, 100)
- d_state = INTACT
- update_appearance()
- to_chat(user, span_notice("You repair the outer grille."))
- return TRUE
-
- if(COVER)
- if(W.tool_behaviour == TOOL_WELDER)
- if(!W.tool_start_check(user, amount=0))
- return
- to_chat(user, span_notice("You begin slicing through the metal cover..."))
- if(W.use_tool(src, user, 60, volume=100))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != COVER)
- return TRUE
- d_state = CUT_COVER
- update_appearance()
- to_chat(user, span_notice("You press firmly on the cover, dislodging it."))
- return TRUE
-
- if(W.tool_behaviour == TOOL_SCREWDRIVER)
- to_chat(user, span_notice("You begin securing the support lines..."))
- if(W.use_tool(src, user, 40, volume=100))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != COVER)
- return TRUE
- d_state = SUPPORT_LINES
- update_appearance()
- to_chat(user, span_notice("The support lines have been secured."))
- return TRUE
-
- if(CUT_COVER)
- if(W.tool_behaviour == TOOL_CROWBAR)
- to_chat(user, span_notice("You struggle to pry off the cover..."))
- if(W.use_tool(src, user, 100, volume=100))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != CUT_COVER)
- return TRUE
- d_state = ANCHOR_BOLTS
- update_appearance()
- to_chat(user, span_notice("You pry off the cover."))
- return TRUE
-
- if(W.tool_behaviour == TOOL_WELDER)
- if(!W.tool_start_check(user, amount=0))
- return
- to_chat(user, span_notice("You begin welding the metal cover back to the frame..."))
- if(W.use_tool(src, user, 60, volume=100))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != CUT_COVER)
- return TRUE
- d_state = COVER
- update_appearance()
- to_chat(user, span_notice("The metal cover has been welded securely to the frame."))
- return TRUE
-
- if(ANCHOR_BOLTS)
- if(W.tool_behaviour == TOOL_WRENCH)
- to_chat(user, span_notice("You start loosening the anchoring bolts which secure the support rods to their frame..."))
- if(W.use_tool(src, user, 40, volume=100))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != ANCHOR_BOLTS)
- return TRUE
- d_state = SUPPORT_RODS
- update_appearance()
- to_chat(user, span_notice("You remove the bolts anchoring the support rods."))
- return TRUE
-
- if(W.tool_behaviour == TOOL_CROWBAR)
- to_chat(user, span_notice("You start to pry the cover back into place..."))
- if(W.use_tool(src, user, 20, volume=100))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != ANCHOR_BOLTS)
- return TRUE
- d_state = CUT_COVER
- update_appearance()
- to_chat(user, span_notice("The metal cover has been pried back into place."))
- return TRUE
-
- if(SUPPORT_RODS)
- if(W.tool_behaviour == TOOL_WELDER)
- if(!W.tool_start_check(user, amount=0))
- return
- to_chat(user, span_notice("You begin slicing through the support rods..."))
- if(W.use_tool(src, user, 100, volume=100))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != SUPPORT_RODS)
- return TRUE
- d_state = SHEATH
- update_appearance()
- to_chat(user, span_notice("You slice through the support rods."))
- return TRUE
-
- if(W.tool_behaviour == TOOL_WRENCH)
- to_chat(user, span_notice("You start tightening the bolts which secure the support rods to their frame..."))
- W.play_tool_sound(src, 100)
- if(W.use_tool(src, user, 40))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != SUPPORT_RODS)
- return TRUE
- d_state = ANCHOR_BOLTS
- update_appearance()
- to_chat(user, span_notice("You tighten the bolts anchoring the support rods."))
- return TRUE
-
- if(SHEATH)
- if(W.tool_behaviour == TOOL_CROWBAR)
- to_chat(user, span_notice("You struggle to pry off the outer sheath..."))
- if(W.use_tool(src, user, 100, volume=100))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != SHEATH)
- return TRUE
- to_chat(user, span_notice("You pry off the outer sheath."))
- dismantle_wall()
- return TRUE
-
- if(W.tool_behaviour == TOOL_WELDER)
- if(!W.tool_start_check(user, amount=0))
- return
- to_chat(user, span_notice("You begin welding the support rods back together..."))
- if(W.use_tool(src, user, 100, volume=100))
- if(!istype(src, /turf/closed/wall/r_wall) || d_state != SHEATH)
- return TRUE
- d_state = SUPPORT_RODS
- update_appearance()
- to_chat(user, span_notice("You weld the support rods back together."))
- return TRUE
- return FALSE
-
-/turf/closed/wall/r_wall/update_icon(updates=ALL)
- . = ..()
- if(d_state != INTACT)
- smoothing_flags = NONE
- return
- if (!(updates & UPDATE_SMOOTHING))
- return
- smoothing_flags = SMOOTH_BITMASK
- QUEUE_SMOOTH_NEIGHBORS(src)
- QUEUE_SMOOTH(src)
-
-/turf/closed/wall/r_wall/update_icon_state()
- if(d_state != INTACT)
- icon_state = "r_wall-[d_state]"
- else
- icon_state = "[base_icon_state]-[smoothing_junction]"
- return ..()
-
-/turf/closed/wall/r_wall/wall_singularity_pull(current_size)
- if(current_size >= STAGE_FIVE)
- if(prob(30))
- dismantle_wall()
-
-/turf/closed/wall/r_wall/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
- if(the_rcd.canRturf)
- return ..()
-
-
-/turf/closed/wall/r_wall/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode)
- if(the_rcd.canRturf)
- return ..()
-
-/turf/closed/wall/r_wall/rust_heretic_act()
- if(prob(50))
- return
- if(HAS_TRAIT(src, TRAIT_RUSTY))
- ScrapeAway()
- return
- return ..()
/turf/closed/wall/r_wall/syndicate
name = "hull"
desc = "The armored hull of an ominous looking ship."
- icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "plastitanium_wall-0"
- base_icon_state = "plastitanium_wall"
+ icon = 'icons/turf/walls/metal_wall.dmi'
explosion_block = 20
- sheet_type = /obj/item/stack/sheet/mineral/plastitanium
- turf_flags = IS_SOLID
- smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
- smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_SYNDICATE_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_SYNDICATE_WALLS, SMOOTH_GROUP_PLASTITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS)
+ reinf_material = /datum/material/iron
+ plating_material = /datum/material/alloy/plastitanium
+ color = "#3a313a" //To display in mapping softwares
/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
- icon = 'icons/turf/walls/plastitanium_wall.dmi'
- icon_state = "map-shuttle_nd"
- base_icon_state = "plastitanium_wall"
- smoothing_flags = SMOOTH_BITMASK
/turf/closed/wall/r_wall/syndicate/nosmooth
- icon = 'icons/turf/shuttle.dmi'
- icon_state = "wall"
- smoothing_flags = NONE
/turf/closed/wall/r_wall/syndicate/overspace
- icon_state = "map-overspace"
- smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
- fixed_underlay = list("space" = TRUE)
diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm
index 906c0620989..8837ac9bc11 100644
--- a/code/game/turfs/closed/walls.dm
+++ b/code/game/turfs/closed/walls.dm
@@ -3,7 +3,7 @@
/turf/closed/wall
name = "wall"
desc = "A huge chunk of iron used to separate rooms."
- icon = 'icons/turf/walls/wall.dmi'
+ icon = 'icons/turf/walls/solid_wall.dmi'
icon_state = "wall-0"
base_icon_state = "wall"
explosion_block = 1
@@ -17,59 +17,211 @@
smoothing_flags = SMOOTH_BITMASK
smoothing_groups = list(SMOOTH_GROUP_CLOSED_TURFS, SMOOTH_GROUP_WALLS)
- canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_AIRLOCK)
+ canSmoothWith = list(SMOOTH_GROUP_SHUTTERS_BLASTDOORS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_LOW_WALL)
rcd_memory = RCD_MEMORY_WALL
- ///bool on whether this wall can be chiselled into
- var/can_engrave = TRUE
+
+ color = "#57575c" //To display in mapping softwares
+
+ greyscale_config = /datum/greyscale_config/solid_wall
+ greyscale_colors = "#57575c"
+
///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
- var/sheet_type = /obj/item/stack/sheet/iron
- var/sheet_amount = 2
- var/girder_type = /obj/structure/girder
- /// A turf that will replace this turf when this turf is destroyed
- var/decon_type
+ /// Material type of the plating
+ var/plating_material = /datum/material/iron
+ /// Material type of the reinforcement
+ var/reinf_material
+ /// Paint color of which the wall has been painted with.
+ var/wall_paint
+ /// Paint color of which the stripe has been painted with. Will not overlay a stripe if no paint is applied
+ var/stripe_paint
+ /// Whether this wall is hard to deconstruct, like a reinforced plasteel wall. Dictated by material
+ var/hard_decon
+ /// Deconstruction state, matters if the wall is hard to deconstruct (hard_decon)
+ var/d_state = INTACT
+ /// Whether this wall is rusted or not, to apply the rusted overlay
+ var/rusted
var/list/dent_decals
+ /// Typecache of all objects that we seek out to apply a neighbor stripe overlay
+ var/static/list/neighbor_typecache
+
+/turf/closed/wall/update_greyscale()
+ greyscale_colors = get_wall_color()
+ return ..()
+
+/turf/closed/wall/proc/get_wall_color()
+ var/wall_color = wall_paint
+ if(!wall_color)
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(plating_material)
+ wall_color = plating_mat_ref.wall_color
+ return wall_color
+
+/turf/closed/wall/proc/get_stripe_color()
+ var/stripe_color = stripe_paint
+ if(!stripe_color)
+ stripe_color = get_wall_color()
+ return stripe_color
+
+/turf/closed/wall/has_material_type(datum/material/mat_type, exact=FALSE, mat_amount=0)
+ if(plating_material == mat_type)
+ return TRUE
+ if(reinf_material == mat_type)
+ return TRUE
+ return FALSE
+
+/turf/closed/wall/update_name()
+ . = ..()
+ name = ""
+ if(rusted)
+ name = "rusted "
+ if(reinf_material)
+ name += "reinforced wall"
+ else
+ name += "wall"
+
/turf/closed/wall/Initialize(mapload)
. = ..()
- if(!can_engrave)
- ADD_TRAIT(src, TRAIT_NOT_ENGRAVABLE, INNATE_TRAIT)
- if(is_station_level(z))
+ color = null // Remove the color that was set for mapping clarity
+ set_materials(plating_material, reinf_material)
+ if(is_station_level(src))
GLOB.station_turfs += src
- if(smoothing_flags & SMOOTH_DIAGONAL_CORNERS && fixed_underlay) //Set underlays for the diagonal walls.
- var/mutable_appearance/underlay_appearance = mutable_appearance(layer = TURF_LAYER, plane = FLOOR_PLANE)
- if(fixed_underlay["space"])
- underlay_appearance.icon = 'icons/turf/space.dmi'
- underlay_appearance.icon_state = SPACE_ICON_STATE
- underlay_appearance.plane = PLANE_SPACE
- else
- underlay_appearance.icon = fixed_underlay["icon"]
- underlay_appearance.icon_state = fixed_underlay["icon_state"]
- fixed_underlay = string_assoc_list(fixed_underlay)
- underlays += underlay_appearance
-
-/turf/closed/wall/atom_destruction(damage_flag)
- dismantle_wall(TRUE, FALSE)
/turf/closed/wall/Destroy()
if(is_station_level(z))
GLOB.station_turfs -= src
return ..()
+/turf/closed/wall/copyTurf(turf/T)
+ . = ..()
+ if(istype(., /turf/closed/wall))
+ var/turf/closed/wall/pasted_turf = .
+ pasted_turf.d_state = d_state
+ pasted_turf.set_wall_information(plating_material, reinf_material, wall_paint, stripe_paint)
+
+/// Most of this code is pasted within /obj/structure/falsewall. Be mindful of this
+/turf/closed/wall/update_overlays()
+ //Updating the unmanaged wall overlays (unmanaged for optimisations)
+ overlays.Cut()
+
+ if(stripe_paint)
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(plating_material)
+ var/icon/stripe_icon = SSgreyscale.GetColoredIconByType(plating_mat_ref.wall_stripe_greyscale_config, get_stripe_color())
+ var/mutable_appearance/smoothed_stripe = mutable_appearance(stripe_icon, icon_state)
+ overlays += smoothed_stripe
+
+ var/neighbor_stripe = NONE
+ if(!neighbor_typecache)
+ neighbor_typecache = typecacheof(list(
+ /obj/machinery/door/airlock,
+ /obj/structure/window/reinforced/fulltile,
+ /obj/structure/window/fulltile,
+ /obj/structure/window/reinforced/shuttle,
+ /obj/machinery/door/poddoor,
+ /obj/structure/window/reinforced/plasma/fulltile,
+ /obj/structure/window/plasma/fulltile,
+ /obj/structure/low_wall
+ ))
+ for(var/cardinal in GLOB.cardinals)
+ var/turf/step_turf = get_step(src, cardinal)
+ for(var/atom/movable/movable_thing as anything in step_turf)
+ if(neighbor_typecache[movable_thing.type])
+ neighbor_stripe ^= cardinal
+ break
+ if(neighbor_stripe)
+ var/icon/neighbor_icon = SSgreyscale.GetColoredIconByType(/datum/greyscale_config/wall_neighbor_stripe, get_stripe_color())
+ var/mutable_appearance/neighb_stripe_appearace = mutable_appearance(neighbor_icon, "stripe-[neighbor_stripe]")
+ overlays += neighb_stripe_appearace
+
+ if(rusted)
+ var/mutable_appearance/rust_overlay = mutable_appearance('icons/turf/rust_overlay.dmi', "blobby_rust", appearance_flags = RESET_COLOR)
+ overlays += rust_overlay
+
+ if(hard_decon && d_state)
+ var/mutable_appearance/decon_overlay = mutable_appearance('icons/turf/walls/decon_states.dmi', "[d_state]", appearance_flags = RESET_COLOR)
+ overlays += decon_overlay
+
+ if(dent_decals)
+ add_overlay(dent_decals)
+ //And letting anything else that may want to render on the wall to work (ie components)
+ return ..()
/turf/closed/wall/examine(mob/user)
. += ..()
+ if(wall_paint)
+ . += span_notice("It's coated with a layer of paint.")
+ if(stripe_paint)
+ . += span_notice("It has a painted stripe around its base.")
. += deconstruction_hints(user)
/turf/closed/wall/proc/deconstruction_hints(mob/user)
- return span_notice("The outer plating is welded firmly in place.")
+ if(hard_decon)
+ switch(d_state)
+ if(INTACT)
+ return span_notice("The outer grille is fully intact.")
+ if(SUPPORT_LINES)
+ return span_notice("The outer grille has been cut, and the support lines are screwed securely to the outer cover.")
+ if(COVER)
+ return span_notice("The support lines have been unscrewed, and the metal cover is welded firmly in place.")
+ if(CUT_COVER)
+ return span_notice("The metal cover has been sliced through, and is connected loosely to the girder.")
+ if(ANCHOR_BOLTS)
+ return span_notice("The outer cover has been pried away, and the bolts anchoring the support rods are wrenched in place.")
+ if(SUPPORT_RODS)
+ return span_notice("The bolts anchoring the support rods have been loosened, but are still welded firmly to the girder.")
+ if(SHEATH)
+ return span_notice("The support rods have been sliced through, and the outer sheath is connected loosely to the girder.")
+ else
+ return span_notice("The outer plating is welded firmly in place.")
/turf/closed/wall/attack_tk()
return
+/// Most of this code is pasted within /obj/structure/falsewall. Be mindful of this
+/turf/closed/wall/proc/paint_wall(new_paint)
+ wall_paint = new_paint
+ update_greyscale()
+ update_appearance()
+
+/// Most of this code is pasted within /obj/structure/falsewall. Be mindful of this
+/turf/closed/wall/proc/paint_stripe(new_paint)
+ stripe_paint = new_paint
+ update_appearance()
+
+/// Most of this code is pasted within /obj/structure/falsewall. Be mindful of this
+/turf/closed/wall/proc/set_wall_information(plating_mat, reinf_mat, new_paint, new_stripe_paint)
+ wall_paint = new_paint
+ stripe_paint = new_stripe_paint
+ set_materials(plating_mat, reinf_mat)
+
+/// Most of this code is pasted within /obj/structure/falsewall. Be mindful of this
+/turf/closed/wall/proc/set_materials(plating_mat, reinf_mat)
+ var/datum/material/plating_mat_ref
+ if(plating_mat)
+ plating_mat_ref = GET_MATERIAL_REF(plating_mat)
+ var/datum/material/reinf_mat_ref
+ if(reinf_mat)
+ reinf_mat_ref = GET_MATERIAL_REF(reinf_mat)
+
+ if(reinf_mat_ref && plating_mat_ref.hard_wall_decon)
+ hard_decon = TRUE
+ else
+ hard_decon = null
+
+ if(reinf_mat_ref)
+ greyscale_config = plating_mat_ref.reinforced_wall_greyscale_config
+ else
+ greyscale_config = plating_mat_ref.wall_greyscale_config
+
+ plating_material = plating_mat
+ reinf_material = reinf_mat
+
+ update_greyscale()
+ update_appearance()
+
/turf/closed/wall/proc/dismantle_wall(devastated = FALSE, explode = FALSE)
if(devastated)
devastate_wall()
@@ -83,21 +235,24 @@
if(istype(O, /obj/structure/sign/poster))
var/obj/structure/sign/poster/P = O
P.roll_and_drop(src)
- if(decon_type)
- ChangeTurf(decon_type, flags = CHANGETURF_INHERIT_AIR)
- else
- ScrapeAway()
- QUEUE_SMOOTH_NEIGHBORS(src)
-/turf/closed/wall/proc/break_wall()
- new sheet_type(src, sheet_amount)
- if(girder_type)
- return new girder_type(src)
+ ScrapeAway()
+
+/turf/closed/wall/proc/break_wall(drop_mats = TRUE)
+ if(drop_mats)
+ drop_materials_used()
+ return new /obj/structure/girder(src, reinf_material, wall_paint, stripe_paint)
/turf/closed/wall/proc/devastate_wall()
- new sheet_type(src, sheet_amount)
- if(girder_type)
- new /obj/item/stack/sheet/iron(src)
+ drop_materials_used(TRUE)
+ new /obj/item/stack/sheet/iron(src)
+
+/turf/closed/wall/proc/drop_materials_used(drop_reinf = FALSE)
+ var/datum/material/plating_mat_ref = GET_MATERIAL_REF(plating_material)
+ new plating_mat_ref.sheet_type(src, 2)
+ if(drop_reinf && reinf_material)
+ var/datum/material/reinf_mat_ref = GET_MATERIAL_REF(reinf_material)
+ new reinf_mat_ref.sheet_type(src, 2)
/turf/closed/wall/ex_act(severity, target)
if(target == src)
@@ -131,12 +286,24 @@
/turf/closed/wall/attack_animal(mob/living/simple_animal/user, list/modifiers)
- user.changeNext_move(CLICK_CD_MELEE)
- user.do_attack_animation(src)
- if((user.environment_smash & ENVIRONMENT_SMASH_WALLS) || (user.environment_smash & ENVIRONMENT_SMASH_RWALLS))
- playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE)
- dismantle_wall(1)
- return
+ if(hard_decon)
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.do_attack_animation(src)
+ if(!user.environment_smash)
+ return
+ if(user.environment_smash & ENVIRONMENT_SMASH_RWALLS)
+ dismantle_wall(1)
+ playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE)
+ else
+ playsound(src, 'sound/effects/bang.ogg', 50, TRUE)
+ to_chat(user, span_warning("This wall is far too strong for you to destroy."))
+ else
+ user.changeNext_move(CLICK_CD_MELEE)
+ user.do_attack_animation(src)
+ if((user.environment_smash & ENVIRONMENT_SMASH_WALLS) || (user.environment_smash & ENVIRONMENT_SMASH_RWALLS))
+ playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE)
+ dismantle_wall(1)
+ return
/turf/closed/wall/attack_hulk(mob/living/carbon/user)
..()
@@ -239,16 +406,157 @@
return FALSE
/turf/closed/wall/proc/try_decon(obj/item/I, mob/user, turf/T)
- if(I.tool_behaviour == TOOL_WELDER)
- if(!I.tool_start_check(user, amount=0))
- return FALSE
+ if(hard_decon)
+ switch(d_state)
+ if(INTACT)
+ if(I.tool_behaviour == TOOL_WIRECUTTER)
+ I.play_tool_sound(src, 100)
+ d_state = SUPPORT_LINES
+ update_appearance()
+ to_chat(user, span_notice("You cut the outer grille."))
+ return TRUE
+
+ if(SUPPORT_LINES)
+ if(I.tool_behaviour == TOOL_SCREWDRIVER)
+ to_chat(user, span_notice("You begin unsecuring the support lines..."))
+ if(I.use_tool(src, user, 40, volume=100))
+ if(!istype(src, /turf/closed/wall) || d_state != SUPPORT_LINES)
+ return TRUE
+ d_state = COVER
+ update_appearance()
+ to_chat(user, span_notice("You unsecure the support lines."))
+ return TRUE
+
+ else if(I.tool_behaviour == TOOL_WIRECUTTER)
+ I.play_tool_sound(src, 100)
+ d_state = INTACT
+ update_appearance()
+ to_chat(user, span_notice("You repair the outer grille."))
+ return TRUE
+
+ if(COVER)
+ if(I.tool_behaviour == TOOL_WELDER)
+ if(!I.tool_start_check(user, amount=0))
+ return
+ to_chat(user, span_notice("You begin slicing through the metal cover..."))
+ if(I.use_tool(src, user, 60, volume=100))
+ if(!istype(src, /turf/closed/wall) || d_state != COVER)
+ return TRUE
+ d_state = CUT_COVER
+ update_appearance()
+ to_chat(user, span_notice("You press firmly on the cover, dislodging it."))
+ return TRUE
+
+ if(I.tool_behaviour == TOOL_SCREWDRIVER)
+ to_chat(user, span_notice("You begin securing the support lines..."))
+ if(I.use_tool(src, user, 40, volume=100))
+ if(!istype(src, /turf/closed/wall) || d_state != COVER)
+ return TRUE
+ d_state = SUPPORT_LINES
+ update_appearance()
+ to_chat(user, span_notice("The support lines have been secured."))
+ return TRUE
+
+ if(CUT_COVER)
+ if(I.tool_behaviour == TOOL_CROWBAR)
+ to_chat(user, span_notice("You struggle to pry off the cover..."))
+ if(I.use_tool(src, user, 100, volume=100))
+ if(!istype(src, /turf/closed/wall) || d_state != CUT_COVER)
+ return TRUE
+ d_state = ANCHOR_BOLTS
+ update_appearance()
+ to_chat(user, span_notice("You pry off the cover."))
+ return TRUE
+
+ if(I.tool_behaviour == TOOL_WELDER)
+ if(!I.tool_start_check(user, amount=0))
+ return
+ to_chat(user, span_notice("You begin welding the metal cover back to the frame..."))
+ if(I.use_tool(src, user, 60, volume=100))
+ if(!istype(src, /turf/closed/wall) || d_state != CUT_COVER)
+ return TRUE
+ d_state = COVER
+ update_appearance()
+ to_chat(user, span_notice("The metal cover has been welded securely to the frame."))
+ return TRUE
+
+ if(ANCHOR_BOLTS)
+ if(I.tool_behaviour == TOOL_WRENCH)
+ to_chat(user, span_notice("You start loosening the anchoring bolts which secure the support rods to their frame..."))
+ if(I.use_tool(src, user, 40, volume=100))
+ if(!istype(src, /turf/closed/wall) || d_state != ANCHOR_BOLTS)
+ return TRUE
+ d_state = SUPPORT_RODS
+ update_appearance()
+ to_chat(user, span_notice("You remove the bolts anchoring the support rods."))
+ return TRUE
+
+ if(I.tool_behaviour == TOOL_CROWBAR)
+ to_chat(user, span_notice("You start to pry the cover back into place..."))
+ if(I.use_tool(src, user, 20, volume=100))
+ if(!istype(src, /turf/closed/wall) || d_state != ANCHOR_BOLTS)
+ return TRUE
+ d_state = CUT_COVER
+ update_appearance()
+ to_chat(user, span_notice("The metal cover has been pried back into place."))
+ return TRUE
+
+ if(SUPPORT_RODS)
+ if(I.tool_behaviour == TOOL_WELDER)
+ if(!I.tool_start_check(user, amount=0))
+ return
+ to_chat(user, span_notice("You begin slicing through the support rods..."))
+ if(I.use_tool(src, user, 100, volume=100))
+ if(!istype(src, /turf/closed/wall) || d_state != SUPPORT_RODS)
+ return TRUE
+ d_state = SHEATH
+ update_appearance()
+ to_chat(user, span_notice("You slice through the support rods."))
+ return TRUE
+
+ if(I.tool_behaviour == TOOL_WRENCH)
+ to_chat(user, span_notice("You start tightening the bolts which secure the support rods to their frame..."))
+ I.play_tool_sound(src, 100)
+ if(I.use_tool(src, user, 40))
+ if(!istype(src, /turf/closed/wall) || d_state != SUPPORT_RODS)
+ return TRUE
+ d_state = ANCHOR_BOLTS
+ update_appearance()
+ to_chat(user, span_notice("You tighten the bolts anchoring the support rods."))
+ return TRUE
+
+ if(SHEATH)
+ if(I.tool_behaviour == TOOL_CROWBAR)
+ to_chat(user, span_notice("You struggle to pry off the outer sheath..."))
+ if(I.use_tool(src, user, 100, volume=100))
+ if(!istype(src, /turf/closed/wall) || d_state != SHEATH)
+ return TRUE
+ to_chat(user, span_notice("You pry off the outer sheath."))
+ dismantle_wall()
+ return TRUE
+
+ if(I.tool_behaviour == TOOL_WELDER)
+ if(!I.tool_start_check(user, amount=0))
+ return
+ to_chat(user, span_notice("You begin welding the support rods back together..."))
+ if(I.use_tool(src, user, 100, volume=100))
+ if(!istype(src, /turf/closed/wall) || d_state != SHEATH)
+ return TRUE
+ d_state = SUPPORT_RODS
+ update_appearance()
+ to_chat(user, span_notice("You weld the support rods back together."))
+ return TRUE
+ else
+ if(I.tool_behaviour == TOOL_WELDER)
+ if(!I.tool_start_check(user, amount=0))
+ return FALSE
- to_chat(user, span_notice("You begin slicing through the outer plating..."))
- if(I.use_tool(src, user, slicing_duration, volume=100))
- if(iswallturf(src))
- to_chat(user, span_notice("You remove the outer plating."))
- dismantle_wall()
- return TRUE
+ to_chat(user, span_notice("You begin slicing through the outer plating..."))
+ if(I.use_tool(src, user, slicing_duration, volume=100))
+ if(iswallturf(src))
+ to_chat(user, span_notice("You remove the outer plating."))
+ dismantle_wall()
+ return TRUE
return FALSE
@@ -257,20 +565,25 @@
wall_singularity_pull(current_size)
/turf/closed/wall/proc/wall_singularity_pull(current_size)
- if(current_size >= STAGE_FIVE)
- if(prob(50))
- dismantle_wall()
- return
- if(current_size == STAGE_FOUR)
- if(prob(30))
- dismantle_wall()
+ if(hard_decon)
+ if(current_size >= STAGE_FIVE)
+ if(prob(30))
+ dismantle_wall()
+ else
+ if(current_size >= STAGE_FIVE)
+ if(prob(50))
+ dismantle_wall()
+ return
+ if(current_size == STAGE_FOUR)
+ if(prob(30))
+ dismantle_wall()
/turf/closed/wall/narsie_act(force, ignore_mobs, probability = 20)
. = ..()
if(.)
ChangeTurf(/turf/closed/wall/mineral/cult)
-/turf/closed/wall/get_dumping_location()
+/turf/closed/wall/get_dumping_location(obj/item/storage/source, mob/user)
return null
/turf/closed/wall/acid_act(acidpwr, acid_volume)
@@ -282,12 +595,16 @@
dismantle_wall(1)
/turf/closed/wall/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
+ if(hard_decon && !the_rcd.canRturf)
+ return
switch(the_rcd.mode)
if(RCD_DECONSTRUCT)
return list("mode" = RCD_DECONSTRUCT, "delay" = 40, "cost" = 26)
return FALSE
/turf/closed/wall/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode)
+ if(hard_decon && !the_rcd.canRturf)
+ return
switch(passed_mode)
if(RCD_DECONSTRUCT)
to_chat(user, span_notice("You deconstruct the wall."))
@@ -318,14 +635,13 @@
add_overlay(dent_decals)
/turf/closed/wall/rust_heretic_act()
- if(HAS_TRAIT(src, TRAIT_RUSTY))
- ScrapeAway()
+ if(rusted)
+ return
+ if(hard_decon && prob(50))
return
if(prob(70))
new /obj/effect/temp_visual/glowing_rune(src)
- return ..()
-
-/turf/closed/wall/metal_foam_base
- girder_type = /obj/structure/foamedmetal
+ rusted = TRUE
+ update_appearance()
#undef MAX_DENT_DECALS
diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm
index 8e2ba018ebb..2842cc950e7 100644
--- a/code/game/turfs/open/floor.dm
+++ b/code/game/turfs/open/floor.dm
@@ -23,7 +23,7 @@
var/broken = FALSE
var/burnt = FALSE
/// Path of the tile that this floor drops
- var/floor_tile = null
+ var/floor_tile = null
var/list/broken_states
var/list/burnt_states
@@ -269,7 +269,8 @@
switch(passed_mode)
if(RCD_FLOORWALL)
to_chat(user, span_notice("You build a wall."))
- PlaceOnTop(/turf/closed/wall)
+ var/turf/closed/wall/placed_wall = PlaceOnTop(/turf/closed/wall)
+ placed_wall.set_wall_information(/datum/material/iron)
return TRUE
if(RCD_AIRLOCK)
for(var/obj/machinery/door/door in src)
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 36d5d42f270..daaf6759fae 100755
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -42,9 +42,6 @@ GLOBAL_LIST_EMPTY(station_turfs)
var/tiled_dirt = FALSE // use smooth tiled dirt decal
- ///Icon-smoothing variable to map a diagonal wall corner with a fixed underlay.
- var/list/fixed_underlay = null
-
///Lumcount added by sources other than lighting datum objects, such as the overlay lighting component.
var/dynamic_lumcount = 0
diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm
index 15a6c5b5724..de4671e5094 100644
--- a/code/modules/cargo/goodies.dm
+++ b/code/modules/cargo/goodies.dm
@@ -167,3 +167,9 @@
desc = "A complete meal package for the terminally lazy. Contains one Ready-Donk meal."
cost = PAYCHECK_MEDIUM * 2
contains = list(/obj/item/food/ready_donk)
+
+/datum/supply_pack/goody/paint
+ name = "Adaptive Paint"
+ desc = "A single, premium can of adaptive paint. Now you can turn the entire station neon pink!"
+ cost = PAYCHECK_EASY * 2
+ contains = list(/obj/item/paint/anycolor)
diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm b/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm
index 1c6fdcf3a46..e0f2094e675 100644
--- a/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm
+++ b/code/modules/mapfluff/ruins/lavalandruin_code/elephantgraveyard.dm
@@ -54,7 +54,7 @@
color = "#B5651D"
turf_type = /turf/open/misc/asteroid/basalt/wasteland
baseturfs = /turf/open/misc/asteroid/basalt/wasteland
- smooth_icon = 'icons/turf/walls/rock_wall.dmi'
+ smooth_icon = 'icons/turf/walls/legacy/rock_wall.dmi'
base_icon_state = "rock_wall"
smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER
diff --git a/code/modules/mapping/mapping_helpers.dm b/code/modules/mapping/mapping_helpers.dm
index 3556319f852..f6a26d8d39b 100644
--- a/code/modules/mapping/mapping_helpers.dm
+++ b/code/modules/mapping/mapping_helpers.dm
@@ -698,3 +698,52 @@ INITIALIZE_IMMEDIATE(/obj/effect/mapping_helpers/no_lava)
json_cache[json_url] = json_data
query_in_progress = FALSE
return json_data
+
+
+/obj/effect/mapping_helpers/paint_wall
+ name = "Paint Wall Helper"
+ icon = 'icons/effects/paint_helpers.dmi'
+ icon_state = "paint"
+ late = TRUE
+ /// What wall paint this helper will apply
+ var/wall_paint
+ /// What stripe paint this helper will apply
+ var/stripe_paint
+
+/obj/effect/mapping_helpers/paint_wall/LateInitialize()
+ for(var/obj/effect/mapping_helpers/paint_wall/paint_helper in loc)
+ if(paint_helper == src)
+ continue
+ WARNING("Duplicate paint helper found at [x], [y], [z]")
+ qdel(src)
+ return
+
+ var/did_anything = FALSE
+
+ if(istype(loc, /turf/closed/wall))
+ var/turf/closed/wall/target_wall = loc
+ target_wall.paint_wall(wall_paint)
+ target_wall.paint_stripe(stripe_paint)
+ did_anything = TRUE
+
+ var/obj/structure/low_wall/low_wall = locate() in loc
+ if(low_wall)
+ low_wall.set_wall_paint(wall_paint)
+ low_wall.set_stripe_paint(stripe_paint)
+ did_anything = TRUE
+
+ var/obj/structure/falsewall/falsewall = locate() in loc
+ if(falsewall)
+ falsewall.paint_wall(wall_paint)
+ falsewall.paint_stripe(stripe_paint)
+ did_anything = TRUE
+
+ if(!did_anything)
+ WARNING("Redundant paint helper found at [x], [y], [z]")
+
+ qdel(src)
+
+/obj/effect/mapping_helpers/paint_wall/bridge
+ name = "Bridge Wall Paint"
+ stripe_paint = "#334E6D"
+ icon_state = "paint_bridge"
diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm
index 715eee74d25..47516130526 100644
--- a/code/modules/mob/inventory.dm
+++ b/code/modules/mob/inventory.dm
@@ -288,9 +288,16 @@
I.pixel_y = I.base_pixel_y + rand(-6, 6)
I.do_drop_animation(src)
-//for when the item will be immediately placed in a loc other than the ground
-/mob/proc/transferItemToLoc(obj/item/I, newloc = null, force = FALSE, silent = TRUE)
+//for when the item will be immediately placed in a loc other than the ground. Supports shifting the item's x and y from click modifiers.
+/mob/proc/transferItemToLoc(obj/item/I, newloc = null, force = FALSE, silent = TRUE, list/user_click_modifiers)
. = doUnEquip(I, force, newloc, FALSE, silent = silent)
+ if(. && user_click_modifiers)
+ //Center the icon where the user clicked.
+ if(!LAZYACCESS(user_click_modifiers, ICON_X) || !LAZYACCESS(user_click_modifiers, ICON_Y))
+ return
+ //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the location)
+ I.pixel_x = clamp(text2num(LAZYACCESS(user_click_modifiers, ICON_X)) - 16, -(world.icon_size/2), world.icon_size/2)
+ I.pixel_y = clamp(text2num(LAZYACCESS(user_click_modifiers, ICON_Y)) - 16, -(world.icon_size/2), world.icon_size/2)
I.do_drop_animation(src)
//visibly unequips I but it is NOT MOVED AND REMAINS IN SRC
diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm
index db9636a6d0b..b01806bfcf3 100644
--- a/code/modules/mob/living/silicon/robot/robot_model.dm
+++ b/code/modules/mob/living/silicon/robot/robot_model.dm
@@ -352,7 +352,7 @@
/obj/item/extinguisher/mini,
/obj/item/mop/cyborg,
/obj/item/reagent_containers/glass/bucket,
- /obj/item/paint/paint_remover,
+ /obj/item/paint_remover,
/obj/item/lightreplacer/cyborg,
/obj/item/holosign_creator,
/obj/item/reagent_containers/spray/cyborg_drying)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index dd550099053..76ff1fcaf5d 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -529,7 +529,7 @@ Difficulty: Hard
/obj/effect/temp_visual/hierophant/wall //smoothing and pooling were not friends, but pooling is dead.
name = "vortex wall"
- icon = 'icons/turf/walls/hierophant_wall_temp.dmi'
+ icon = 'icons/turf/walls/legacy/hierophant_wall_temp.dmi'
icon_state = "hierophant_wall_temp-0"
base_icon_state = "hierophant_wall_temp"
smoothing_flags = SMOOTH_BITMASK
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
index 12d5c58a25b..4eaad55c0cc 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm
@@ -89,7 +89,7 @@ Difficulty: Hard
/datum/action/innate/megafauna_attack/shockwave_scream
name = "Shockwave Scream"
- icon_icon = 'icons/turf/walls/wall.dmi'
+ icon_icon = 'icons/turf/walls/legacy/wall.dmi'
button_icon_state = "wall-0"
chosen_message = "You are now screeching, disorienting targets around you."
chosen_attack_num = 3
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
index b29de2f72bc..9b1a79a3d9f 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
@@ -372,7 +372,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
/obj/effect/temp_visual/elite_tumor_wall
name = "magic wall"
- icon = 'icons/turf/walls/hierophant_wall_temp.dmi'
+ icon = 'icons/turf/walls/legacy/hierophant_wall_temp.dmi'
icon_state = "hierophant_wall_temp-0"
base_icon_state = "hierophant_wall_temp"
smoothing_flags = SMOOTH_BITMASK
diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm
index 89a9280a677..63b9b8e3ce7 100644
--- a/code/modules/research/designs/misc_designs.dm
+++ b/code/modules/research/designs/misc_designs.dm
@@ -415,7 +415,7 @@
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = 1000)
reagents_list = list(/datum/reagent/acetone = 60)
- build_path = /obj/item/paint/paint_remover
+ build_path = /obj/item/paint_remover
category = list("Equipment")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm
index a4ce8ca2e83..fc144376980 100644
--- a/code/modules/vending/wardrobes.dm
+++ b/code/modules/vending/wardrobes.dm
@@ -322,7 +322,7 @@
/obj/item/clothing/head/soft/purple = 2,
/obj/item/clothing/mask/bandana/color/purple = 2,
/obj/item/pushbroom = 2,
- /obj/item/paint/paint_remover = 2,
+ /obj/item/paint_remover = 2,
/obj/item/melee/flyswatter = 2,
/obj/item/flashlight = 2,
/obj/item/clothing/suit/caution = 6,
diff --git a/code/modules/vending/youtool.dm b/code/modules/vending/youtool.dm
index 576ec656a8c..79a9ba1d5a5 100644
--- a/code/modules/vending/youtool.dm
+++ b/code/modules/vending/youtool.dm
@@ -17,7 +17,8 @@
/obj/item/flashlight/glowstick = 3,
/obj/item/flashlight/glowstick/red = 3,
/obj/item/flashlight = 5,
- /obj/item/clothing/ears/earmuffs = 1
+ /obj/item/clothing/ears/earmuffs = 1,
+ /obj/item/paint/anycolor = 5
)
contraband = list(
/obj/item/clothing/gloves/color/fyellow = 2
diff --git a/icons/effects/paint_helpers.dmi b/icons/effects/paint_helpers.dmi
new file mode 100644
index 00000000000..11a198fd710
Binary files /dev/null and b/icons/effects/paint_helpers.dmi differ
diff --git a/icons/obj/clockwork_objects.dmi b/icons/obj/clockwork_objects.dmi
new file mode 100644
index 00000000000..b867ddafc14
Binary files /dev/null and b/icons/obj/clockwork_objects.dmi differ
diff --git a/icons/obj/smooth_structures/grille.dmi b/icons/obj/smooth_structures/grille.dmi
new file mode 100644
index 00000000000..33d63084ecd
Binary files /dev/null and b/icons/obj/smooth_structures/grille.dmi differ
diff --git a/icons/obj/smooth_structures/low_wall.dmi b/icons/obj/smooth_structures/low_wall.dmi
new file mode 100644
index 00000000000..bf468aa6699
Binary files /dev/null and b/icons/obj/smooth_structures/low_wall.dmi differ
diff --git a/icons/obj/smooth_structures/window.dmi b/icons/obj/smooth_structures/window.dmi
index 4b78390251e..10553b3a17b 100644
Binary files a/icons/obj/smooth_structures/window.dmi and b/icons/obj/smooth_structures/window.dmi differ
diff --git a/icons/obj/smooth_structures/window_reinforced.dmi b/icons/obj/smooth_structures/window_reinforced.dmi
new file mode 100644
index 00000000000..26824d02da5
Binary files /dev/null and b/icons/obj/smooth_structures/window_reinforced.dmi differ
diff --git a/icons/turf/rust_overlay.dmi b/icons/turf/rust_overlay.dmi
new file mode 100644
index 00000000000..d0aea195a33
Binary files /dev/null and b/icons/turf/rust_overlay.dmi differ
diff --git a/icons/turf/walls/bamboo_wall.dmi b/icons/turf/walls/bamboo_wall.dmi
deleted file mode 100644
index 4eafc79ad48..00000000000
Binary files a/icons/turf/walls/bamboo_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/bananium_wall.dmi b/icons/turf/walls/bananium_wall.dmi
deleted file mode 100644
index abf70635337..00000000000
Binary files a/icons/turf/walls/bananium_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/clockwork_wall.dmi b/icons/turf/walls/clockwork_wall.dmi
deleted file mode 100644
index d6f1872d7c0..00000000000
Binary files a/icons/turf/walls/clockwork_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/cult_wall.dmi b/icons/turf/walls/cult_wall.dmi
index 4990c4474ff..14051316c53 100644
Binary files a/icons/turf/walls/cult_wall.dmi and b/icons/turf/walls/cult_wall.dmi differ
diff --git a/icons/turf/walls/decon_states.dmi b/icons/turf/walls/decon_states.dmi
new file mode 100644
index 00000000000..76c19f05d8b
Binary files /dev/null and b/icons/turf/walls/decon_states.dmi differ
diff --git a/icons/turf/walls/diamond_wall.dmi b/icons/turf/walls/diamond_wall.dmi
deleted file mode 100644
index 1dd44ba283f..00000000000
Binary files a/icons/turf/walls/diamond_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/gold_wall.dmi b/icons/turf/walls/gold_wall.dmi
deleted file mode 100644
index 7012124c271..00000000000
Binary files a/icons/turf/walls/gold_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/icedmetal_wall.dmi b/icons/turf/walls/icedmetal_wall.dmi
deleted file mode 100644
index b069da4394d..00000000000
Binary files a/icons/turf/walls/icedmetal_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/abductor_wall.dmi b/icons/turf/walls/legacy/abductor_wall.dmi
similarity index 100%
rename from icons/turf/walls/abductor_wall.dmi
rename to icons/turf/walls/legacy/abductor_wall.dmi
diff --git a/icons/turf/walls/boss_wall.dmi b/icons/turf/walls/legacy/boss_wall.dmi
similarity index 100%
rename from icons/turf/walls/boss_wall.dmi
rename to icons/turf/walls/legacy/boss_wall.dmi
diff --git a/icons/turf/walls/legacy/cult_wall.dmi b/icons/turf/walls/legacy/cult_wall.dmi
new file mode 100644
index 00000000000..4990c4474ff
Binary files /dev/null and b/icons/turf/walls/legacy/cult_wall.dmi differ
diff --git a/icons/turf/walls/hierophant_wall.dmi b/icons/turf/walls/legacy/hierophant_wall.dmi
similarity index 100%
rename from icons/turf/walls/hierophant_wall.dmi
rename to icons/turf/walls/legacy/hierophant_wall.dmi
diff --git a/icons/turf/walls/hierophant_wall_temp.dmi b/icons/turf/walls/legacy/hierophant_wall_temp.dmi
similarity index 100%
rename from icons/turf/walls/hierophant_wall_temp.dmi
rename to icons/turf/walls/legacy/hierophant_wall_temp.dmi
diff --git a/icons/turf/walls/icerock_wall.dmi b/icons/turf/walls/legacy/icerock_wall.dmi
similarity index 100%
rename from icons/turf/walls/icerock_wall.dmi
rename to icons/turf/walls/legacy/icerock_wall.dmi
diff --git a/icons/turf/walls/iron_wall.dmi b/icons/turf/walls/legacy/iron_wall.dmi
similarity index 100%
rename from icons/turf/walls/iron_wall.dmi
rename to icons/turf/walls/legacy/iron_wall.dmi
diff --git a/icons/turf/walls/mountain_wall.dmi b/icons/turf/walls/legacy/mountain_wall.dmi
similarity index 100%
rename from icons/turf/walls/mountain_wall.dmi
rename to icons/turf/walls/legacy/mountain_wall.dmi
diff --git a/icons/turf/walls/plastinum_wall.dmi b/icons/turf/walls/legacy/plastinum_wall.dmi
similarity index 100%
rename from icons/turf/walls/plastinum_wall.dmi
rename to icons/turf/walls/legacy/plastinum_wall.dmi
diff --git a/icons/turf/walls/plastitanium_wall.dmi b/icons/turf/walls/legacy/plastitanium_wall.dmi
similarity index 100%
rename from icons/turf/walls/plastitanium_wall.dmi
rename to icons/turf/walls/legacy/plastitanium_wall.dmi
diff --git a/icons/turf/walls/legacy/red_wall.dmi b/icons/turf/walls/legacy/red_wall.dmi
new file mode 100644
index 00000000000..91ef6219344
Binary files /dev/null and b/icons/turf/walls/legacy/red_wall.dmi differ
diff --git a/icons/turf/walls/reinforced_rock.dmi b/icons/turf/walls/legacy/reinforced_rock.dmi
similarity index 100%
rename from icons/turf/walls/reinforced_rock.dmi
rename to icons/turf/walls/legacy/reinforced_rock.dmi
diff --git a/icons/turf/walls/legacy/reinforced_wall.dmi b/icons/turf/walls/legacy/reinforced_wall.dmi
new file mode 100644
index 00000000000..c7b05315d50
Binary files /dev/null and b/icons/turf/walls/legacy/reinforced_wall.dmi differ
diff --git a/icons/turf/walls/riveted.dmi b/icons/turf/walls/legacy/riveted.dmi
similarity index 100%
rename from icons/turf/walls/riveted.dmi
rename to icons/turf/walls/legacy/riveted.dmi
diff --git a/icons/turf/walls/rock_wall.dmi b/icons/turf/walls/legacy/rock_wall.dmi
similarity index 100%
rename from icons/turf/walls/rock_wall.dmi
rename to icons/turf/walls/legacy/rock_wall.dmi
diff --git a/icons/turf/walls/sandstone_wall.dmi b/icons/turf/walls/legacy/sandstone_wall.dmi
similarity index 100%
rename from icons/turf/walls/sandstone_wall.dmi
rename to icons/turf/walls/legacy/sandstone_wall.dmi
diff --git a/icons/turf/walls/uranium_wall.dmi b/icons/turf/walls/legacy/uranium_wall.dmi
similarity index 100%
rename from icons/turf/walls/uranium_wall.dmi
rename to icons/turf/walls/legacy/uranium_wall.dmi
diff --git a/icons/turf/walls/legacy/wall.dmi b/icons/turf/walls/legacy/wall.dmi
new file mode 100644
index 00000000000..651227fe8de
Binary files /dev/null and b/icons/turf/walls/legacy/wall.dmi differ
diff --git a/icons/turf/walls/legacy/wood_wall.dmi b/icons/turf/walls/legacy/wood_wall.dmi
new file mode 100644
index 00000000000..60b785c5030
Binary files /dev/null and b/icons/turf/walls/legacy/wood_wall.dmi differ
diff --git a/icons/turf/walls/materialwall.dmi b/icons/turf/walls/materialwall.dmi
deleted file mode 100644
index 1027effda94..00000000000
Binary files a/icons/turf/walls/materialwall.dmi and /dev/null differ
diff --git a/icons/turf/walls/metal_wall.dmi b/icons/turf/walls/metal_wall.dmi
new file mode 100644
index 00000000000..2ce2964513d
Binary files /dev/null and b/icons/turf/walls/metal_wall.dmi differ
diff --git a/icons/turf/walls/neighbor_stripe.dmi b/icons/turf/walls/neighbor_stripe.dmi
new file mode 100644
index 00000000000..45a8e0e4179
Binary files /dev/null and b/icons/turf/walls/neighbor_stripe.dmi differ
diff --git a/icons/turf/walls/plasma_wall.dmi b/icons/turf/walls/plasma_wall.dmi
deleted file mode 100644
index c2f10843c6d..00000000000
Binary files a/icons/turf/walls/plasma_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/red_wall.dmi b/icons/turf/walls/red_wall.dmi
deleted file mode 100644
index 5eb26cf6a30..00000000000
Binary files a/icons/turf/walls/red_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/reinforced_wall.dmi b/icons/turf/walls/reinforced_wall.dmi
deleted file mode 100644
index 9f10b2bc427..00000000000
Binary files a/icons/turf/walls/reinforced_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/rusty_reinforced_wall.dmi b/icons/turf/walls/rusty_reinforced_wall.dmi
deleted file mode 100644
index e2636950d27..00000000000
Binary files a/icons/turf/walls/rusty_reinforced_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/rusty_wall.dmi b/icons/turf/walls/rusty_wall.dmi
deleted file mode 100644
index ca27a10fe07..00000000000
Binary files a/icons/turf/walls/rusty_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/shuttle_wall.dmi b/icons/turf/walls/shuttle_wall.dmi
deleted file mode 100644
index c96b087f77f..00000000000
Binary files a/icons/turf/walls/shuttle_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/silver_wall.dmi b/icons/turf/walls/silver_wall.dmi
deleted file mode 100644
index f0f170fdfe3..00000000000
Binary files a/icons/turf/walls/silver_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/snow_wall.dmi b/icons/turf/walls/snow_wall.dmi
deleted file mode 100644
index 833f7245e46..00000000000
Binary files a/icons/turf/walls/snow_wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/solid_wall.dmi b/icons/turf/walls/solid_wall.dmi
new file mode 100644
index 00000000000..cb68120cc26
Binary files /dev/null and b/icons/turf/walls/solid_wall.dmi differ
diff --git a/icons/turf/walls/solid_wall_reinforced.dmi b/icons/turf/walls/solid_wall_reinforced.dmi
new file mode 100644
index 00000000000..d92d558c3bd
Binary files /dev/null and b/icons/turf/walls/solid_wall_reinforced.dmi differ
diff --git a/icons/turf/walls/stone_wall.dmi b/icons/turf/walls/stone_wall.dmi
new file mode 100644
index 00000000000..5e2e4da98c1
Binary files /dev/null and b/icons/turf/walls/stone_wall.dmi differ
diff --git a/icons/turf/walls/survival_pod_walls.dmi b/icons/turf/walls/survival_pod_walls.dmi
deleted file mode 100644
index 01700f1ed6f..00000000000
Binary files a/icons/turf/walls/survival_pod_walls.dmi and /dev/null differ
diff --git a/icons/turf/walls/wall.dmi b/icons/turf/walls/wall.dmi
deleted file mode 100644
index fd48b11b9b1..00000000000
Binary files a/icons/turf/walls/wall.dmi and /dev/null differ
diff --git a/icons/turf/walls/wall_stripe.dmi b/icons/turf/walls/wall_stripe.dmi
new file mode 100644
index 00000000000..6da8aa92293
Binary files /dev/null and b/icons/turf/walls/wall_stripe.dmi differ
diff --git a/icons/turf/walls/wood_wall.dmi b/icons/turf/walls/wood_wall.dmi
index 60b785c5030..c72f87d282c 100644
Binary files a/icons/turf/walls/wood_wall.dmi and b/icons/turf/walls/wood_wall.dmi differ
diff --git a/icons/turf/walls/wood_wall_stripe.dmi b/icons/turf/walls/wood_wall_stripe.dmi
new file mode 100644
index 00000000000..e539322de7c
Binary files /dev/null and b/icons/turf/walls/wood_wall_stripe.dmi differ
diff --git a/modular_pariah/modules/GAGS/greyscale_configs.dm b/modular_pariah/modules/GAGS/greyscale_configs.dm
index 3ace0280fb0..b4a15a3917a 100644
--- a/modular_pariah/modules/GAGS/greyscale_configs.dm
+++ b/modular_pariah/modules/GAGS/greyscale_configs.dm
@@ -30,146 +30,10 @@
name = "Beret With Fancy Badge Worn"
json_config = 'modular_pariah/modules/GAGS/json_configs/beret/beret_badge_fancy_worn.json'
-//MUSHROOM CAP
-
-/datum/greyscale_config/mushcap
- name = "Mushroom Cap"
- icon_file = 'modular_pariah/modules/GAGS/icons/mushcap.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/mush_cap/mushcap.json'
-
-/datum/greyscale_config/mushcap/worn
- name = "Mushroom Cap Worn"
- json_config = 'modular_pariah/modules/GAGS/json_configs/mush_cap/mushcap_worn.json'
-
-// FLATCAP
-
-/datum/greyscale_config/flatcap
- name = "Flat Cap"
- icon_file = 'modular_pariah/modules/GAGS/icons/hats.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/flatcap/flatcap.json'
-
-/datum/greyscale_config/flatcap/worn
- name = "Flat Cap (Worn)"
- icon_file = 'modular_pariah/modules/GAGS/icons/hats.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/flatcap/flatcap_worn.json'
-
-// FLOWER PIN
-
-/datum/greyscale_config/flowerpin
- name = "Flower Pin"
- icon_file = 'modular_pariah/modules/GAGS/icons/hats.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/flowerpin/flowerpin.json'
-
-/datum/greyscale_config/flowerpin/worn
- name = "Flower Pin (Worn)"
- icon_file = 'modular_pariah/modules/GAGS/icons/hats.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/flowerpin/flowerpin_worn.json'
-
-/*
-* MASKS
-*/
-
-// CLOWN
-/datum/greyscale_config/clown_mask
- name = "Colourable Clown Mask"
- icon_file = 'modular_pariah/modules/GAGS/icons/clown_mask.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/clown_mask/clown_mask.json'
-
-/datum/greyscale_config/clown_mask/worn
- name = "Colourable Clown Mask (Worn)"
- json_config = 'modular_pariah/modules/GAGS/json_configs/clown_mask/clown_mask_worn.json'
-
-
-/*
-* NECK
-*/
-
-// RANGER PONCHO
-/datum/greyscale_config/ranger_poncho
- name = "Ranger Poncho"
- icon_file = 'modular_pariah/modules/GAGS/icons/ranger_poncho.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/ranger_poncho/ranger_poncho.json'
-
-/datum/greyscale_config/ranger_poncho/worn
- name = "Ranger Poncho Worn"
- json_config = 'modular_pariah/modules/GAGS/json_configs/ranger_poncho/ranger_poncho_worn.json'
-
-// CLOAKS
-/datum/greyscale_config/cloak
- name = "Cloak"
- icon_file = 'modular_pariah/modules/GAGS/icons/cloak.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/cloak/cloak.json'
-
-/datum/greyscale_config/cloak/worn
- name = "Cloak Worn"
- json_config = 'modular_pariah/modules/GAGS/json_configs/cloak/cloak_worn.json'
-
-/datum/greyscale_config/cloak/veil
- name = "Veil"
- json_config = 'modular_pariah/modules/GAGS/json_configs/cloak/veil.json'
-
-/datum/greyscale_config/cloak/veil/worn
- name = "Veil Worn"
- json_config = 'modular_pariah/modules/GAGS/json_configs/cloak/veil_worn.json'
-
-/datum/greyscale_config/cloak/boat
- name = "Boatcloak"
- json_config = 'modular_pariah/modules/GAGS/json_configs/cloak/boat.json'
-
-/datum/greyscale_config/cloak/boat/worn
- name = "Boatcloak Worn"
- json_config = 'modular_pariah/modules/GAGS/json_configs/cloak/boat_worn.json'
-
-/datum/greyscale_config/cloak/shroud
- name = "Shroud"
- json_config = 'modular_pariah/modules/GAGS/json_configs/cloak/shroud.json'
-
-/datum/greyscale_config/cloak/shroud/worn
- name = "Shroud Worn"
- json_config = 'modular_pariah/modules/GAGS/json_configs/cloak/shroud_worn.json'
-
/*
* SUITS
*/
-// FANCY SUITS
-/datum/greyscale_config/fancy_suit
- name = "Fancy Suit"
- icon_file = 'modular_pariah/modules/GAGS/icons/fancy_suits.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/fancy_suits/fancy_suit.json'
-
-/datum/greyscale_config/fancy_suit/worn
- name = "Fancy Suit Worn"
- json_config = 'modular_pariah/modules/GAGS/json_configs/fancy_suits/fancy_suit_worn.json'
-
-// HOODIES
-/datum/greyscale_config/hoodie
- name = "Hoodie"
- icon_file = 'modular_pariah/modules/GAGS/icons/hoodie.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/hoodie/hoodie.json'
-
-/datum/greyscale_config/hoodie/worn
- name = "Hoodie Worn"
- json_config = 'modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_worn.json'
-
-/datum/greyscale_config/hoodie_trim
- name = "Trimmed Hoodie"
- icon_file = 'modular_pariah/modules/GAGS/icons/hoodie.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_trim.json'
-
-/datum/greyscale_config/hoodie_trim/worn
- name = "Trimmed Hoodie Worn"
- json_config = 'modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_trim_worn.json'
-
-/datum/greyscale_config/hoodie_branded
- name = "Branded Hoodie"
- icon_file = 'modular_pariah/modules/GAGS/icons/hoodie.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_branded.json'
-
-/datum/greyscale_config/hoodie_branded/worn
- name = "Branded Hoodie Worn"
- json_config = 'modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_branded_worn.json'
-
// JUMPSUITS
/datum/greyscale_config/jumpsuit_worn/digitigrade
@@ -180,17 +44,6 @@
name = "Worn Prison Jumpsuit - Digitigrade"
icon_file = 'modular_pariah/modules/GAGS/icons/jumpsuit_digi.dmi'
-// KILT
-
-/datum/greyscale_config/kilt
- name = "Kilt"
- icon_file = 'modular_pariah/modules/GAGS/icons/kilt.dmi'
- json_config = 'modular_pariah/modules/GAGS/json_configs/kilt/kilt.json'
-
-/datum/greyscale_config/kilt/worn
- name = "Kilt (Worn)"
- json_config = 'modular_pariah/modules/GAGS/json_configs/kilt/kilt_worn.json'
-
/*
* SHOES
*/
diff --git a/modular_pariah/modules/GAGS/json_configs/beret/beret.json b/modular_pariah/modules/GAGS/json_configs/beret/beret.json
index f7ee848d264..9e9fdd57247 100644
--- a/modular_pariah/modules/GAGS/json_configs/beret/beret.json
+++ b/modular_pariah/modules/GAGS/json_configs/beret/beret.json
@@ -1,18 +1,26 @@
{
- "beret": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "beret_flat": [
- {
- "type": "icon_state",
- "icon_state": "beret_flat",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "beret":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "beret_flat":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_flat",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/modular_pariah/modules/GAGS/json_configs/beret/beret_badge.json b/modular_pariah/modules/GAGS/json_configs/beret/beret_badge.json
index 193c4625706..30d86d5dc77 100644
--- a/modular_pariah/modules/GAGS/json_configs/beret/beret_badge.json
+++ b/modular_pariah/modules/GAGS/json_configs/beret/beret_badge.json
@@ -1,72 +1,92 @@
{
- "beret_badge": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "beret_badge_bolt": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_twist_second",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "beret_badge_med": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_med",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "beret_badge_engi": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_engi",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "beret_badge_police": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_police",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "beret_badge":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ },
+ "beret_badge_bolt":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_twist_second",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ },
+ "beret_badge_med":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_med",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ },
+ "beret_badge_engi":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_engi",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ },
+ "beret_badge_police":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_police",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_fancy.json b/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_fancy.json
index 0fafdc77714..96526f263a4 100644
--- a/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_fancy.json
+++ b/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_fancy.json
@@ -1,62 +1,74 @@
{
- "beret_badge_fancy": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_first",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_second",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ],
- "beret_badge_fancy_diagonal": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_diagonal_first",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_diagonal_second",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ],
- "beret_badge_fancy_twist": [
- {
- "type": "icon_state",
- "icon_state": "beret",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_twist_first",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_twist_second",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
+ "beret_badge_fancy":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_first",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_second",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ }
+ ]
+ },
+ "beret_badge_fancy_diagonal":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_diagonal_first",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_twist_second",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ }
+ ]
+ },
+ "beret_badge_fancy_twist":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_twist_first",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_twist_second",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ }
+ ]
+ }
}
diff --git a/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_fancy_worn.json b/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_fancy_worn.json
index 11db050e207..1db3e954b7a 100644
--- a/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_fancy_worn.json
+++ b/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_fancy_worn.json
@@ -1,60 +1,74 @@
{
- "beret_badge_fancy": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_first_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_second_worn",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ],"beret_badge_fancy_diagonal": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_first_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_second_worn",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ],"beret_badge_fancy_twist": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_first_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_fancy_second_worn",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
+ "beret_badge_fancy":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_first_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_second_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ }
+ ]
+ },
+ "beret_badge_fancy_diagonal":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_first_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_second_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ }
+ ]
+ },
+ "beret_badge_fancy_twist":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_first_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_fancy_second_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 3 ]
+ }
+ ]
+ }
}
diff --git a/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_worn.json b/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_worn.json
index 19578536e5d..e4c1bc17e06 100644
--- a/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_worn.json
+++ b/modular_pariah/modules/GAGS/json_configs/beret/beret_badge_worn.json
@@ -1,72 +1,92 @@
{
- "beret_badge": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "beret_badge_bolt": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "beret_badge_med": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "beret_badge_engi": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "beret_badge_police": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "badge_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
+ "beret_badge":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ },
+ "beret_badge_bolt":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ },
+ "beret_badge_med":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ },
+ "beret_badge_engi":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ },
+ "beret_badge_police":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "badge_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+ }
}
diff --git a/modular_pariah/modules/GAGS/json_configs/beret/beret_worn.json b/modular_pariah/modules/GAGS/json_configs/beret/beret_worn.json
index 8509136e53a..9924102d195 100644
--- a/modular_pariah/modules/GAGS/json_configs/beret/beret_worn.json
+++ b/modular_pariah/modules/GAGS/json_configs/beret/beret_worn.json
@@ -1,18 +1,26 @@
{
- "beret": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "beret_flat": [
- {
- "type": "icon_state",
- "icon_state": "beret_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "beret":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ },
+ "beret_flat":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "beret_worn",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/modular_pariah/modules/GAGS/json_configs/cloak/boat.json b/modular_pariah/modules/GAGS/json_configs/cloak/boat.json
deleted file mode 100644
index bd36d48c9df..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/cloak/boat.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "gags_boat": [
- {
- "type": "icon_state",
- "icon_state": "boat_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "boat_pattern_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "boat_trim_obj",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/cloak/boat_worn.json b/modular_pariah/modules/GAGS/json_configs/cloak/boat_worn.json
deleted file mode 100644
index f7f1fbdd007..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/cloak/boat_worn.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "gags_boat": [
- {
- "type": "icon_state",
- "icon_state": "boat_mob",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "boat_pattern_mob",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "boat_trim_mob",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/cloak/cloak.json b/modular_pariah/modules/GAGS/json_configs/cloak/cloak.json
deleted file mode 100644
index c5801b413cd..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/cloak/cloak.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "gags_cloak": [
- {
- "type": "icon_state",
- "icon_state": "cloak_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cloak_pattern_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cloak_trim_obj",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/cloak/cloak_worn.json b/modular_pariah/modules/GAGS/json_configs/cloak/cloak_worn.json
deleted file mode 100644
index ad615c69bfa..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/cloak/cloak_worn.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "gags_cloak": [
- {
- "type": "icon_state",
- "icon_state": "cloak_mob",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cloak_pattern_mob",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cloak_trim_mob",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/cloak/shroud.json b/modular_pariah/modules/GAGS/json_configs/cloak/shroud.json
deleted file mode 100644
index 222c5d133bd..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/cloak/shroud.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "gags_shroud": [
- {
- "type": "icon_state",
- "icon_state": "shroud_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "shroud_pattern_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "shroud_trim_obj",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/cloak/shroud_worn.json b/modular_pariah/modules/GAGS/json_configs/cloak/shroud_worn.json
deleted file mode 100644
index ebd8ab86d70..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/cloak/shroud_worn.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "gags_shroud": [
- {
- "type": "icon_state",
- "icon_state": "shroud_mob",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "shroud_pattern_mob",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "shroud_trim_mob",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/cloak/veil.json b/modular_pariah/modules/GAGS/json_configs/cloak/veil.json
deleted file mode 100644
index 87da07ffe9d..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/cloak/veil.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "gags_veil": [
- {
- "type": "icon_state",
- "icon_state": "veil_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "veil_pattern_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "veil_trim_obj",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/cloak/veil_worn.json b/modular_pariah/modules/GAGS/json_configs/cloak/veil_worn.json
deleted file mode 100644
index 48ecc28aa12..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/cloak/veil_worn.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "gags_veil": [
- {
- "type": "icon_state",
- "icon_state": "veil_mob",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "veil_pattern_mob",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "veil_trim_mob",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/clown_mask/clown_mask.json b/modular_pariah/modules/GAGS/json_configs/clown_mask/clown_mask.json
deleted file mode 100644
index b53e1a072df..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/clown_mask/clown_mask.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "gags_mask": [
- {
- "type": "icon_state",
- "icon_state": "mask_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "hair_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "features_obj",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "eyes_obj",
- "blend_mode": "overlay",
- "color_ids": [ 4 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/clown_mask/clown_mask_worn.json b/modular_pariah/modules/GAGS/json_configs/clown_mask/clown_mask_worn.json
deleted file mode 100644
index 80bf4b835cc..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/clown_mask/clown_mask_worn.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
- "gags_mask": [
- {
- "type": "icon_state",
- "icon_state": "mask_mob",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "hair_mob",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "features_mob",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- },
- {
- "type": "icon_state",
- "icon_state": "eyes_mob",
- "blend_mode": "overlay",
- "color_ids": [ 4 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/fancy_suits/fancy_suit.json b/modular_pariah/modules/GAGS/json_configs/fancy_suits/fancy_suit.json
deleted file mode 100644
index 190c44456ea..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/fancy_suits/fancy_suit.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "fancy_suit": [
- {
- "type": "icon_state",
- "icon_state": "fancy_suit",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "fancy_suit_undershirt",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "fancy_suit_buttons",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/fancy_suits/fancy_suit_worn.json b/modular_pariah/modules/GAGS/json_configs/fancy_suits/fancy_suit_worn.json
deleted file mode 100644
index c6e023f6d8c..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/fancy_suits/fancy_suit_worn.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
- "fancy_suit": [
- {
- "type": "icon_state",
- "icon_state": "fancy_suit_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "fancy_suit_undershirt_worn",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "fancy_suit_buttons_worn",
- "blend_mode": "overlay",
- "color_ids": [ 3 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/flatcap/flatcap.json b/modular_pariah/modules/GAGS/json_configs/flatcap/flatcap.json
deleted file mode 100644
index 758731a5a85..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/flatcap/flatcap.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "flatcap": [
- {
- "type": "icon_state",
- "icon_state": "flatcap_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/flatcap/flatcap_worn.json b/modular_pariah/modules/GAGS/json_configs/flatcap/flatcap_worn.json
deleted file mode 100644
index 56c3467673e..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/flatcap/flatcap_worn.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "flatcap": [
- {
- "type": "icon_state",
- "icon_state": "flatcap_mob",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/flowerpin/flowerpin.json b/modular_pariah/modules/GAGS/json_configs/flowerpin/flowerpin.json
deleted file mode 100644
index c891b726a21..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/flowerpin/flowerpin.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "flowerpin": [
- {
- "type": "icon_state",
- "icon_state": "flowerpin_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/flowerpin/flowerpin_worn.json b/modular_pariah/modules/GAGS/json_configs/flowerpin/flowerpin_worn.json
deleted file mode 100644
index 47aa98f431e..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/flowerpin/flowerpin_worn.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "flowerpin": [
- {
- "type": "icon_state",
- "icon_state": "flowerpin_mob",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie.json b/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie.json
deleted file mode 100644
index 2317c31ba00..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "hoodie": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "hoodie_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_branded.json b/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_branded.json
deleted file mode 100644
index b4e7afa6810..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_branded.json
+++ /dev/null
@@ -1,134 +0,0 @@
-{
- "hoodie_NT": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_obj",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_NT_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_obj",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_NRTI": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_alt_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "hoodie_NRTI_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_alt_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "hoodie_MU": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mu_logo_obj",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_MU_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mu_logo_obj",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_CTI": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cti_logo_obj",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_CTI_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cti_logo_obj",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_SMW": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "smw_logo_obj",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_SMW_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "smw_logo_obj",
- "blend_mode": "overlay"
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_branded_worn.json b/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_branded_worn.json
deleted file mode 100644
index d416bf96b1e..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_branded_worn.json
+++ /dev/null
@@ -1,154 +0,0 @@
-{
- "hoodie_NT": [
- {
- "type": "icon_state",
- "icon_state": "hoodie",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "nt_logo",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_NT_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_t",
- "blend_mode": "overlay"
- },
- {
- "type": "icon_state",
- "icon_state": "nt_logo_t",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_NRTI": [
- {
- "type": "icon_state",
- "icon_state": "hoodie",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_alt",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "nrti_logo",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_NRTI_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_alt_t",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- },
- {
- "type": "icon_state",
- "icon_state": "nrti_logo_t",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_MU": [
- {
- "type": "icon_state",
- "icon_state": "hoodie",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mu_logo",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_MU_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mu_logo_t",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_CTI": [
- {
- "type": "icon_state",
- "icon_state": "hoodie",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cti_logo",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_CTI_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "cti_logo_t",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_SMW": [
- {
- "type": "icon_state",
- "icon_state": "hoodie",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "smw_logo",
- "blend_mode": "overlay"
- }
- ],
- "hoodie_SMW_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "smw_logo_t",
- "blend_mode": "overlay"
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_trim.json b/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_trim.json
deleted file mode 100644
index fb6613d855d..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_trim.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "hoodie_trim": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "hoodie_trim_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "hoodie_trim_alt": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_alt_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "hoodie_trim_alt_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_alt_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_trim_worn.json b/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_trim_worn.json
deleted file mode 100644
index 236a62a2cdf..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_trim_worn.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "hoodie_trim": [
- {
- "type": "icon_state",
- "icon_state": "hoodie",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "hoodie_trim_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_t",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "hoodie_trim_alt": [
- {
- "type": "icon_state",
- "icon_state": "hoodie",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_alt",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "hoodie_trim_alt_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_alt_t",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_worn.json b/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_worn.json
deleted file mode 100644
index 4122bdd059d..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/hoodie/hoodie_worn.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "hoodie": [
- {
- "type": "icon_state",
- "icon_state": "hoodie",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ],
- "hoodie_t": [
- {
- "type": "icon_state",
- "icon_state": "hoodie_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/kilt/kilt.json b/modular_pariah/modules/GAGS/json_configs/kilt/kilt.json
deleted file mode 100644
index 94bbba667c2..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/kilt/kilt.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "kilt": [
- {
- "type": "icon_state",
- "icon_state": "kilt_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "kilt_top_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/kilt/kilt_worn.json b/modular_pariah/modules/GAGS/json_configs/kilt/kilt_worn.json
deleted file mode 100644
index 41a7a3832a5..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/kilt/kilt_worn.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "kilt": [
- {
- "type": "icon_state",
- "icon_state": "kilt_mob",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "kilt_top_mob",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/mush_cap/mushcap.json b/modular_pariah/modules/GAGS/json_configs/mush_cap/mushcap.json
deleted file mode 100644
index 5ca5a3e6fe2..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/mush_cap/mushcap.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "mush_cap": [
- {
- "type": "icon_state",
- "icon_state": "mush_cap",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mush_face",
- "blend_mode": "overlay",
- "color_ids": []
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/mush_cap/mushcap_worn.json b/modular_pariah/modules/GAGS/json_configs/mush_cap/mushcap_worn.json
deleted file mode 100644
index 9236835d3ca..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/mush_cap/mushcap_worn.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "mush_cap": [
- {
- "type": "icon_state",
- "icon_state": "mush_cap_worn",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "mush_face_worn",
- "blend_mode": "overlay",
- "color_ids": []
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/ranger_poncho/ranger_poncho.json b/modular_pariah/modules/GAGS/json_configs/ranger_poncho/ranger_poncho.json
deleted file mode 100644
index 9dcd4115e07..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/ranger_poncho/ranger_poncho.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "ranger_poncho": [
- {
- "type": "icon_state",
- "icon_state": "ranger_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_obj",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "ranger_poncho_t": [
- {
- "type": "icon_state",
- "icon_state": "ranger_obj_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_obj_t",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/ranger_poncho/ranger_poncho_worn.json b/modular_pariah/modules/GAGS/json_configs/ranger_poncho/ranger_poncho_worn.json
deleted file mode 100644
index f35c691008f..00000000000
--- a/modular_pariah/modules/GAGS/json_configs/ranger_poncho/ranger_poncho_worn.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "ranger_poncho": [
- {
- "type": "icon_state",
- "icon_state": "ranger",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ],
- "ranger_poncho_t": [
- {
- "type": "icon_state",
- "icon_state": "ranger_t",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "trim_t",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
-}
diff --git a/modular_pariah/modules/GAGS/json_configs/wraps/wraps.json b/modular_pariah/modules/GAGS/json_configs/wraps/wraps.json
index c708d9526f7..a920c87121f 100644
--- a/modular_pariah/modules/GAGS/json_configs/wraps/wraps.json
+++ b/modular_pariah/modules/GAGS/json_configs/wraps/wraps.json
@@ -1,10 +1,14 @@
{
- "clothwrap": [
- {
- "type": "icon_state",
- "icon_state": "wrap_obj",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "clothwrap":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "wrap_obj",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/modular_pariah/modules/GAGS/json_configs/wraps/wraps_worn.json b/modular_pariah/modules/GAGS/json_configs/wraps/wraps_worn.json
index 4d9f6d4a1d5..30600b0e02d 100644
--- a/modular_pariah/modules/GAGS/json_configs/wraps/wraps_worn.json
+++ b/modular_pariah/modules/GAGS/json_configs/wraps/wraps_worn.json
@@ -1,10 +1,14 @@
{
- "clothwrap": [
- {
- "type": "icon_state",
- "icon_state": "wrap_mob",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
+ "clothwrap":
+ {
+ "layers":
+ [
+ {
+ "type": "icon_state",
+ "icon_state": "wrap_mob",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+ }
}
diff --git a/modular_pariah/modules/aesthetics/windows/code/windows.dm b/modular_pariah/modules/aesthetics/windows/code/windows.dm
deleted file mode 100644
index bb9f422e79a..00000000000
--- a/modular_pariah/modules/aesthetics/windows/code/windows.dm
+++ /dev/null
@@ -1,27 +0,0 @@
-/obj/structure/window/fulltile
- icon = 'modular_pariah/modules/aesthetics/windows/icons/window.dmi'
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK)
-
-/obj/structure/window/reinforced/fulltile
- icon = 'modular_pariah/modules/aesthetics/windows/icons/r_window.dmi'
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK)
-
-/obj/structure/window/reinforced/tinted/fulltile
- icon = 'modular_pariah/modules/aesthetics/windows/icons/r_window_tinted.dmi'
- icon_state = "reinforced_window-0"
- base_icon_state = "reinforced_window"
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK)
-
-/obj/structure/window/plasma/fulltile
- icon = 'modular_pariah/modules/aesthetics/windows/icons/window_plasma.dmi'
- icon_state = "window-0"
- base_icon_state = "window"
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK)
-
-/obj/structure/window/reinforced/plasma/fulltile
- icon = 'modular_pariah/modules/aesthetics/windows/icons/r_window_plasma.dmi'
- icon_state = "reinforced_window-0"
- base_icon_state = "reinforced_window"
- canSmoothWith = list(SMOOTH_GROUP_WINDOW_FULLTILE, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_AIRLOCK)
-
-/obj/structure/window/reinforced/fulltile/ice
diff --git a/modular_pariah/modules/aesthetics/windows/icons/r_window.dmi b/modular_pariah/modules/aesthetics/windows/icons/r_window.dmi
deleted file mode 100644
index 7eeeb246284..00000000000
Binary files a/modular_pariah/modules/aesthetics/windows/icons/r_window.dmi and /dev/null differ
diff --git a/modular_pariah/modules/aesthetics/windows/icons/r_window_plasma.dmi b/modular_pariah/modules/aesthetics/windows/icons/r_window_plasma.dmi
deleted file mode 100644
index 8f86e2c3897..00000000000
Binary files a/modular_pariah/modules/aesthetics/windows/icons/r_window_plasma.dmi and /dev/null differ
diff --git a/modular_pariah/modules/aesthetics/windows/icons/r_window_tinted.dmi b/modular_pariah/modules/aesthetics/windows/icons/r_window_tinted.dmi
deleted file mode 100644
index fdbdde498cc..00000000000
Binary files a/modular_pariah/modules/aesthetics/windows/icons/r_window_tinted.dmi and /dev/null differ
diff --git a/modular_pariah/modules/aesthetics/windows/icons/window.dmi b/modular_pariah/modules/aesthetics/windows/icons/window.dmi
deleted file mode 100644
index 3f9d36a06a4..00000000000
Binary files a/modular_pariah/modules/aesthetics/windows/icons/window.dmi and /dev/null differ
diff --git a/modular_pariah/modules/aesthetics/windows/icons/window_plasma.dmi b/modular_pariah/modules/aesthetics/windows/icons/window_plasma.dmi
deleted file mode 100644
index 0842930bb9a..00000000000
Binary files a/modular_pariah/modules/aesthetics/windows/icons/window_plasma.dmi and /dev/null differ
diff --git a/pariah.dme b/pariah.dme
index 6a1b7546745..9059d59be87 100644
--- a/pariah.dme
+++ b/pariah.dme
@@ -61,6 +61,7 @@
#include "code\__DEFINES\cult.dm"
#include "code\__DEFINES\database.dm"
#include "code\__DEFINES\devices.dm"
+#include "code\__DEFINES\direction_junctions.dm"
#include "code\__DEFINES\directional.dm"
#include "code\__DEFINES\diseases.dm"
#include "code\__DEFINES\DNA.dm"
@@ -84,6 +85,7 @@
#include "code\__DEFINES\fov.dm"
#include "code\__DEFINES\ghost.dm"
#include "code\__DEFINES\gravity.dm"
+#include "code\__DEFINES\greyscale.dm"
#include "code\__DEFINES\hud.dm"
#include "code\__DEFINES\icon_smoothing.dm"
#include "code\__DEFINES\id_cards.dm"
@@ -707,8 +709,8 @@
#include "code\datums\components\codeword_hearing.dm"
#include "code\datums\components\combustible_flooder.dm"
#include "code\datums\components\connect_containers.dm"
-#include "code\datums\components\connect_mob_behalf.dm"
#include "code\datums\components\connect_loc_behalf.dm"
+#include "code\datums\components\connect_mob_behalf.dm"
#include "code\datums\components\connect_range.dm"
#include "code\datums\components\construction.dm"
#include "code\datums\components\conveyor_movement.dm"
@@ -1014,6 +1016,7 @@
#include "code\datums\greyscale\_greyscale_config.dm"
#include "code\datums\greyscale\json_reader.dm"
#include "code\datums\greyscale\layer.dm"
+#include "code\datums\greyscale\state.dm"
#include "code\datums\greyscale\config_types\greyscale_configs.dm"
#include "code\datums\greyscale\config_types\material_effects.dm"
#include "code\datums\helper_datums\events.dm"
@@ -1722,6 +1725,7 @@
#include "code\game\objects\structures\lattice.dm"
#include "code\game\objects\structures\life_candle.dm"
#include "code\game\objects\structures\loom.dm"
+#include "code\game\objects\structures\low_wall.dm"
#include "code\game\objects\structures\maintenance.dm"
#include "code\game\objects\structures\memorial.dm"
#include "code\game\objects\structures\mineral_doors.dm"
@@ -1812,7 +1816,6 @@
#include "code\game\turfs\closed\_closed.dm"
#include "code\game\turfs\closed\minerals.dm"
#include "code\game\turfs\closed\walls.dm"
-#include "code\game\turfs\closed\wall\material_walls.dm"
#include "code\game\turfs\closed\wall\mineral_walls.dm"
#include "code\game\turfs\closed\wall\misc_walls.dm"
#include "code\game\turfs\closed\wall\reinf_walls.dm"
@@ -4553,7 +4556,6 @@
#include "modular_pariah\modules\aesthetics\vending\access_vending.dm"
#include "modular_pariah\modules\aesthetics\wallmed\code\wallmed.dm"
#include "modular_pariah\modules\aesthetics\washing_machine\code\washing_machine.dm"
-#include "modular_pariah\modules\aesthetics\windows\code\windows.dm"
#include "modular_pariah\modules\alternative_job_titles\code\alt_job_titles.dm"
#include "modular_pariah\modules\alternative_job_titles\code\job.dm"
#include "modular_pariah\modules\announcer\code\baystation_announcer.dm"