diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 5a874f0e6e..0b827e6ff6 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -12998,22 +12998,35 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel/dark,
+/obj/machinery/hydroponics/soil,
+/turf/open/floor/grass,
/area/chapel/main)
"aCP" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 10
},
-/turf/open/floor/plasteel/dark,
+/obj/structure/table/wood,
+/obj/item/reagent_containers/food/snacks/grown/poppy{
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/food/snacks/grown/harebell{
+ pixel_y = 5
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"aCQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/obj/machinery/light/small{
- dir = 1
+/obj/machinery/hydroponics/soil,
+/obj/structure/window/reinforced{
+ dir = 4;
+ pixel_x = 3
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/grass,
/area/chapel/main)
"aCR" = (
/turf/closed/wall,
@@ -13539,7 +13552,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"aEi" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -13559,35 +13572,24 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"aEl" = (
/obj/effect/landmark/event_spawn,
/turf/open/floor/plating,
/area/maintenance/starboard/fore)
"aEm" = (
-/obj/machinery/door/window{
- dir = 8;
- name = "Mass Driver";
- req_access_txt = "22"
+/obj/structure/bookcase,
+/obj/machinery/camera{
+ c_tag = "Chapel North"
},
-/obj/machinery/mass_driver{
- dir = 4;
- id = "chapelgun";
- name = "Holy Driver"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
- },
-/turf/open/floor/plating,
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"aEn" = (
-/obj/machinery/door/poddoor{
- id = "chapelgun";
- name = "Chapel Launcher Door"
+/obj/structure/sign/warning/vacuum/external{
+ pixel_y = 32
},
-/obj/structure/fans/tiny,
-/turf/open/floor/plating,
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"aEz" = (
/obj/machinery/power/apc{
@@ -13981,16 +13983,10 @@
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"aFA" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/machinery/computer/pod/old{
- density = 0;
- icon = 'icons/obj/airlock_machines.dmi';
- icon_state = "airlock_control_standby";
- id = "chapelgun";
- name = "Mass Driver Controller";
- pixel_x = 24
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"aFB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -14620,7 +14616,7 @@
departmentType = 2;
pixel_y = 30
},
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aGV" = (
/obj/structure/disposalpipe/segment{
@@ -14655,7 +14651,7 @@
/obj/machinery/airalarm{
pixel_y = 25
},
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aGZ" = (
/obj/machinery/door/airlock/security{
@@ -14706,7 +14702,7 @@
pixel_y = 25
},
/obj/machinery/vending/wardrobe/chap_wardrobe,
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aHg" = (
/obj/machinery/light_switch{
@@ -14715,7 +14711,7 @@
/obj/machinery/camera{
c_tag = "Chapel Office"
},
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aHh" = (
/obj/structure/cable{
@@ -14727,9 +14723,9 @@
/turf/open/floor/plasteel,
/area/gateway)
"aHi" = (
-/obj/structure/closet/crate/coffin,
-/obj/structure/window/reinforced{
- dir = 8
+/obj/machinery/door/morgue{
+ name = "Confession Booth (Chaplain)";
+ req_access_txt = "22"
},
/turf/open/floor/plasteel/dark,
/area/chapel/office)
@@ -14746,42 +14742,47 @@
/turf/open/floor/plasteel,
/area/gateway)
"aHk" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 4
- },
-/turf/open/floor/plasteel/dark,
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/obj/structure/table/wood,
+/obj/item/clothing/under/misc/burial,
+/obj/item/clothing/under/misc/burial,
+/obj/item/clothing/under/misc/burial,
+/obj/item/clothing/under/misc/burial,
+/obj/item/clothing/under/misc/burial,
+/obj/item/clothing/under/misc/burial,
+/obj/item/clothing/under/misc/burial,
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"aHl" = (
-/obj/structure/closet/crate/coffin,
-/obj/machinery/door/window/eastleft{
- name = "Coffin Storage";
- req_access_txt = "22"
+/obj/structure/chair/comfy/plywood,
+/obj/machinery/light/floor,
+/obj/item/radio/intercom{
+ broadcasting = 1;
+ frequency = 1480;
+ name = "Confessional Intercom";
+ pixel_x = 25
},
+/obj/effect/decal/cleanable/cobweb/cobweb2,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"aHm" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
- dir = 4
- },
-/turf/open/floor/plasteel/dark,
+/obj/structure/lattice,
+/turf/closed/wall,
/area/chapel/main)
"aHn" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 4
+/obj/machinery/mass_driver{
+ dir = 4;
+ id = "chapelgun";
+ name = "Holy Driver"
},
-/turf/open/floor/plasteel/dark,
-/area/chapel/main)
-"aHo" = (
-/obj/structure/table/glass,
-/obj/item/reagent_containers/food/snacks/grown/poppy,
-/obj/item/reagent_containers/food/snacks/grown/harebell,
-/turf/open/floor/plasteel/chapel{
- dir = 4
+/obj/machinery/door/window{
+ dir = 8;
+ name = "Mass Driver";
+ req_access_txt = "22"
+ },
+/obj/effect/turf_decal/stripes/line{
+ dir = 8
},
-/area/chapel/main)
-"aHq" = (
-/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/chapel/main)
"aHu" = (
@@ -15281,9 +15282,14 @@
/turf/open/floor/plasteel/dark,
/area/chapel/office)
"aIz" = (
-/obj/machinery/disposal/bin,
-/obj/structure/disposalpipe/trunk,
-/turf/open/floor/plasteel/grimy,
+/obj/structure/disposalpipe/segment{
+ dir = 6
+ },
+/obj/structure/table/wood,
+/obj/item/storage/crayons{
+ pixel_y = 8
+ },
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aIB" = (
/obj/structure/bodycontainer/crematorium{
@@ -15296,20 +15302,16 @@
/area/chapel/office)
"aIC" = (
/obj/effect/landmark/start/chaplain,
-/obj/structure/chair,
-/turf/open/floor/plasteel/grimy,
-/area/chapel/office)
-"aID" = (
-/obj/structure/closet/crate/coffin,
-/obj/structure/window/reinforced{
+/obj/structure/chair/comfy/plywood,
+/obj/structure/disposalpipe/segment{
dir = 4
},
+/turf/open/floor/carpet,
+/area/chapel/office)
+"aID" = (
+/obj/effect/spawner/structure/window/reinforced/tinted,
/turf/open/floor/plasteel/dark,
/area/chapel/office)
-"aIE" = (
-/obj/structure/table/glass,
-/turf/open/floor/plasteel/chapel,
-/area/chapel/main)
"aIH" = (
/obj/structure/table,
/obj/item/storage/box/lights/mixed,
@@ -15331,7 +15333,7 @@
/area/construction/mining/aux_base)
"aII" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aIJ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -15786,15 +15788,14 @@
/area/hydroponics)
"aJM" = (
/obj/structure/table/wood,
-/obj/item/flashlight/lamp{
- pixel_y = 10
- },
/obj/structure/disposalpipe/segment,
-/obj/item/nullrod,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/turf/open/floor/plasteel/grimy,
+/obj/item/flashlight/lamp{
+ pixel_y = 15
+ },
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aJO" = (
/obj/structure/table,
@@ -15828,39 +15829,44 @@
/area/library)
"aJT" = (
/obj/structure/table/wood,
-/obj/item/paper_bin{
- pixel_x = -2;
- pixel_y = 5
- },
-/obj/item/storage/crayons,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/turf/open/floor/plasteel/grimy,
+/obj/item/paper_bin{
+ pixel_y = 4
+ },
+/obj/item/pen/fountain{
+ pixel_y = 4
+ },
+/turf/open/floor/carpet,
/area/chapel/office)
"aJU" = (
/obj/structure/table/wood,
-/obj/item/pen,
-/obj/item/reagent_containers/food/drinks/bottle/holywater,
+/obj/item/reagent_containers/food/drinks/bottle/holywater{
+ pixel_x = 9;
+ pixel_y = 4
+ },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/turf/open/floor/plasteel/grimy,
+/obj/item/nullrod{
+ pixel_x = -15;
+ pixel_y = 3
+ },
+/turf/open/floor/carpet,
/area/chapel/office)
"aJV" = (
-/obj/structure/closet/crate/coffin,
-/obj/machinery/door/window/eastleft{
- dir = 8;
- name = "Coffin Storage";
- req_access_txt = "22"
+/obj/effect/landmark/event_spawn,
+/obj/effect/turf_decal/stripes/line{
+ dir = 4
},
-/turf/open/floor/plasteel/dark,
-/area/chapel/office)
+/turf/open/floor/plating,
+/area/chapel/main)
"aJW" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aJX" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -15919,10 +15925,10 @@
/turf/open/floor/plasteel,
/area/gateway)
"aKe" = (
-/obj/structure/table/glass,
-/turf/open/floor/plasteel/chapel{
+/obj/structure/chair/wood/normal{
dir = 4
},
+/turf/open/floor/carpet,
/area/chapel/main)
"aKf" = (
/obj/structure/cable{
@@ -16251,7 +16257,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aLb" = (
/obj/structure/disposalpipe/segment{
@@ -16270,7 +16276,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 8
},
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aLd" = (
/obj/structure/table,
@@ -16289,13 +16295,13 @@
/turf/open/floor/plasteel,
/area/hydroponics)
"aLe" = (
-/obj/structure/chair{
- dir = 1
- },
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
dir = 4
},
-/turf/open/floor/plasteel/grimy,
+/obj/structure/chair/wood/normal{
+ dir = 1
+ },
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aLf" = (
/obj/machinery/airalarm{
@@ -16819,13 +16825,14 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
+/obj/structure/chair/wood/wings{
+ dir = 8
+ },
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"aMM" = (
-/obj/machinery/camera{
- c_tag = "Chapel North"
- },
-/turf/open/floor/plasteel/dark,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"aMN" = (
/obj/machinery/chem_master/condimaster,
@@ -16890,7 +16897,7 @@
/turf/open/floor/plasteel,
/area/hallway/primary/port)
"aMX" = (
-/turf/open/floor/plasteel/grimy,
+/turf/open/floor/wood/wood_large,
/area/chapel/office)
"aMY" = (
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
@@ -17180,28 +17187,24 @@
/turf/open/floor/wood,
/area/library)
"aNW" = (
-/obj/machinery/door/airlock/public/glass{
- name = "Chapel Office";
+/turf/open/floor/wood/wood_large,
+/area/chapel/main)
+"aNX" = (
+/obj/structure/closet/crate/coffin,
+/obj/machinery/door/window/eastright{
+ dir = 8;
+ name = "Coffin Storage";
req_access_txt = "22"
},
/turf/open/floor/plasteel/dark,
-/area/chapel/office)
-"aNX" = (
-/obj/item/radio/intercom{
- broadcasting = 1;
- frequency = 1480;
- name = "Confessional Intercom";
- pixel_x = 25
- },
-/obj/structure/chair,
-/turf/open/floor/plasteel/dark,
/area/chapel/main)
"aNY" = (
-/obj/machinery/door/morgue{
- name = "Confession Booth (Chaplain)";
- req_access_txt = "22"
+/obj/machinery/door/poddoor{
+ id = "chapelgun";
+ name = "Chapel Launcher Door"
},
-/turf/open/floor/plasteel/dark,
+/obj/structure/fans/tiny,
+/turf/open/floor/plating,
/area/chapel/main)
"aNZ" = (
/obj/structure/chair,
@@ -17682,7 +17685,12 @@
},
/area/chapel/main)
"aPo" = (
-/obj/effect/spawner/structure/window/reinforced/tinted,
+/obj/structure/closet/crate/coffin,
+/obj/machinery/door/window/eastleft{
+ dir = 8;
+ name = "Coffin Storage";
+ req_access_txt = "22"
+ },
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"aPp" = (
@@ -18088,7 +18096,11 @@
/area/chapel/main)
"aQw" = (
/obj/structure/table/wood,
-/turf/open/floor/plasteel/dark,
+/obj/item/trash/candle{
+ pixel_x = -5;
+ pixel_y = 2
+ },
+/turf/open/floor/carpet,
/area/chapel/main)
"aQx" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
@@ -18101,22 +18113,17 @@
},
/area/chapel/main)
"aQz" = (
-/obj/item/radio/intercom{
- broadcasting = 1;
- frequency = 1480;
- name = "Confessional Intercom";
- pixel_x = 25
- },
-/obj/structure/chair{
- dir = 1
+/obj/structure/closet/crate/coffin,
+/obj/structure/window/reinforced{
+ dir = 8
},
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"aQA" = (
-/obj/machinery/door/morgue{
- name = "Confession Booth"
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
},
-/turf/open/floor/plasteel/dark,
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"aQB" = (
/obj/effect/turf_decal/tile/red{
@@ -19114,24 +19121,32 @@
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"aTf" = (
-/obj/structure/chair/stool,
+/obj/structure/chair/pew/right{
+ dir = 1
+ },
/turf/open/floor/plasteel/chapel,
/area/chapel/main)
"aTg" = (
-/obj/structure/chair/stool,
+/obj/structure/chair/pew/left{
+ dir = 1
+ },
/turf/open/floor/plasteel/chapel{
dir = 8
},
/area/chapel/main)
"aTh" = (
-/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/chair/pew/right{
+ dir = 1
+ },
/turf/open/floor/plasteel/chapel,
/area/chapel/main)
"aTi" = (
-/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/effect/landmark/start/assistant,
+/obj/structure/chair/pew/left{
+ dir = 1
+ },
/turf/open/floor/plasteel/chapel{
dir = 8
},
@@ -19663,28 +19678,36 @@
/turf/open/floor/plasteel/dark,
/area/chapel/main)
"aUH" = (
-/obj/structure/chair/stool,
/obj/effect/landmark/start/assistant,
+/obj/structure/chair/pew/right{
+ dir = 1
+ },
/turf/open/floor/plasteel/chapel{
dir = 4
},
/area/chapel/main)
"aUI" = (
-/obj/structure/chair/stool,
+/obj/structure/chair/pew/left{
+ dir = 1
+ },
/turf/open/floor/plasteel/chapel{
dir = 1
},
/area/chapel/main)
"aUJ" = (
-/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/structure/chair/pew/right{
+ dir = 1
+ },
/turf/open/floor/plasteel/chapel{
dir = 4
},
/area/chapel/main)
"aUK" = (
-/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/chair/pew/left{
+ dir = 1
+ },
/turf/open/floor/plasteel/chapel{
dir = 1
},
@@ -20211,8 +20234,10 @@
/turf/open/floor/wood,
/area/library)
"aVU" = (
-/obj/structure/chair/stool,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/chair/pew/left{
+ dir = 1
+ },
/turf/open/floor/plasteel/chapel{
dir = 8
},
@@ -22004,13 +22029,6 @@
},
/turf/open/floor/wood,
/area/crew_quarters/heads/captain)
-"bag" = (
-/obj/machinery/airalarm{
- dir = 1;
- pixel_y = -22
- },
-/turf/open/floor/wood,
-/area/crew_quarters/bar)
"bah" = (
/obj/structure/extinguisher_cabinet{
pixel_y = -30
@@ -23879,14 +23897,15 @@
/turf/closed/wall,
/area/maintenance/disposal)
"bfb" = (
-/obj/structure/sign/warning/vacuum/external{
- pixel_y = 32
+/obj/machinery/computer/pod/old{
+ density = 0;
+ icon = 'icons/obj/airlock_machines.dmi';
+ icon_state = "airlock_control_standby";
+ id = "chapelgun";
+ name = "Mass Driver Controller";
+ pixel_x = 24
},
-/obj/effect/landmark/event_spawn,
-/obj/effect/turf_decal/stripes/line{
- dir = 4
- },
-/turf/open/floor/plating,
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"bfc" = (
/obj/machinery/power/apc{
@@ -34013,9 +34032,6 @@
/area/medical/surgery)
"bCJ" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
-/obj/machinery/light_switch{
- pixel_y = 26
- },
/turf/open/floor/plasteel/white,
/area/medical/surgery)
"bCK" = (
@@ -46278,7 +46294,7 @@
"chY" = (
/obj/machinery/shieldgen,
/turf/open/floor/plating,
-/area/engine/storage)
+/area/engine/engineering)
"cia" = (
/obj/effect/turf_decal/bot{
dir = 1
@@ -46628,7 +46644,7 @@
"ciW" = (
/obj/effect/landmark/blobstart,
/turf/open/floor/plating,
-/area/engine/storage)
+/area/engine/engineering)
"ciX" = (
/obj/structure/closet/crate,
/obj/item/stack/sheet/metal/fifty,
@@ -46643,14 +46659,14 @@
/obj/item/lightreplacer,
/obj/item/lightreplacer,
/turf/open/floor/plating,
-/area/engine/storage)
+/area/engine/engineering)
"ciY" = (
/obj/machinery/door/poddoor{
id = "Secure Storage";
name = "secure storage"
},
/turf/open/floor/plating,
-/area/engine/storage)
+/area/engine/engineering)
"ciZ" = (
/turf/open/floor/plating,
/area/engine/engineering)
@@ -46958,7 +46974,7 @@
dir = 4
},
/turf/open/floor/plating,
-/area/engine/storage)
+/area/engine/engineering)
"cjN" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -47245,11 +47261,11 @@
"ckB" = (
/obj/machinery/field/generator,
/turf/open/floor/plating,
-/area/engine/storage)
+/area/engine/engineering)
"ckC" = (
/obj/machinery/power/emitter,
/turf/open/floor/plating,
-/area/engine/storage)
+/area/engine/engineering)
"ckD" = (
/obj/effect/turf_decal/bot{
dir = 1
@@ -49335,9 +49351,12 @@
/turf/open/floor/plating,
/area/ai_monitored/turret_protected/aisat_interior)
"csT" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/effect/landmark/xmastree,
-/turf/open/floor/plasteel/dark,
+/obj/structure/table/glass,
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/obj/item/storage/book/bible{
+ pixel_y = -1
+ },
+/turf/open/floor/wood/wood_large,
/area/chapel/main)
"csU" = (
/obj/structure/transit_tube/station/reverse,
@@ -51978,14 +51997,11 @@
/turf/open/floor/plating,
/area/maintenance/starboard/aft)
"cBZ" = (
-/obj/structure/table/wood,
-/obj/item/clothing/under/misc/burial,
-/obj/item/clothing/under/misc/burial,
-/obj/item/clothing/under/misc/burial,
-/obj/item/clothing/under/misc/burial,
-/obj/item/clothing/under/misc/burial,
-/obj/item/clothing/under/misc/burial,
-/turf/open/floor/plasteel/grimy,
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/machinery/disposal/bin,
+/turf/open/floor/carpet,
/area/chapel/office)
"cCb" = (
/obj/structure/table,
@@ -53430,10 +53446,6 @@
dir = 4
},
/obj/machinery/suit_storage_unit/atmos,
-/obj/machinery/airalarm{
- dir = 1;
- pixel_y = -22
- },
/obj/effect/turf_decal/stripes/line{
dir = 9
},
@@ -53455,6 +53467,10 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/dark,
/area/hallway/primary/central)
+"dmX" = (
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/chapel/main)
"dnW" = (
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
@@ -53485,6 +53501,14 @@
icon_state = "carpetsymbol"
},
/area/crew_quarters/theatre)
+"dsJ" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/table/glass,
+/obj/item/toy/figure/chaplain{
+ pixel_y = -9
+ },
+/turf/open/floor/wood/wood_large,
+/area/chapel/main)
"dtx" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -54405,8 +54429,9 @@
/turf/open/floor/plasteel,
/area/security/range)
"fsQ" = (
-/turf/open/floor/plating,
-/area/engine/storage)
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/wood/wood_large,
+/area/chapel/main)
"fty" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/orange/visible,
@@ -56361,6 +56386,17 @@
/obj/machinery/atmospherics/pipe/simple/dark/visible,
/turf/open/space/basic,
/area/space/nearstation)
+"kdF" = (
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/obj/structure/closet/crate/coffin,
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/effect/decal/cleanable/cobweb/cobweb2,
+/turf/open/floor/plasteel/dark,
+/area/chapel/main)
"kdO" = (
/obj/machinery/pool/controller,
/turf/open/floor/plasteel/yellowsiding,
@@ -56772,6 +56808,10 @@
},
/turf/open/floor/plating,
/area/maintenance/port/aft)
+"kOL" = (
+/obj/structure/table/glass,
+/turf/open/floor/wood/wood_large,
+/area/chapel/main)
"kPd" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on,
/obj/structure/cable{
@@ -57120,6 +57160,15 @@
},
/turf/open/floor/plasteel,
/area/science/circuit)
+"lNB" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/obj/effect/landmark/xmastree{
+ pixel_x = 14
+ },
+/turf/open/floor/carpet,
+/area/chapel/main)
"lNH" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/cable{
@@ -57378,6 +57427,10 @@
/obj/effect/spawner/lootdrop/keg,
/turf/open/floor/wood,
/area/maintenance/bar)
+"mtU" = (
+/obj/structure/sign/departments/holy,
+/turf/closed/wall,
+/area/chapel/main)
"mug" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 8
@@ -57413,6 +57466,12 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/wood,
/area/crew_quarters/theatre)
+"mzv" = (
+/obj/machinery/door/morgue{
+ name = "Confession Booth"
+ },
+/turf/open/floor/wood/wood_large,
+/area/chapel/main)
"mzB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/window,
@@ -57623,6 +57682,14 @@
},
/turf/open/floor/plasteel,
/area/crew_quarters/locker)
+"mZx" = (
+/obj/structure/table/glass,
+/obj/item/storage/box/matches{
+ pixel_x = 4;
+ pixel_y = -8
+ },
+/turf/open/floor/wood/wood_large,
+/area/chapel/main)
"naI" = (
/turf/open/space,
/area/space/station_ruins)
@@ -58902,6 +58969,14 @@
icon_state = "wood-broken2"
},
/area/maintenance/port/fore)
+"pXG" = (
+/obj/structure/table/wood,
+/obj/item/candle{
+ pixel_x = 5;
+ pixel_y = 2
+ },
+/turf/open/floor/carpet,
+/area/chapel/main)
"pYQ" = (
/obj/structure/reagent_dispensers/watertank,
/obj/item/reagent_containers/glass/bucket,
@@ -58996,6 +59071,13 @@
},
/turf/open/floor/plating,
/area/maintenance/port/fore)
+"qkn" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/light{
+ dir = 8
+ },
+/turf/open/floor/wood/wood_large,
+/area/chapel/main)
"qkC" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -59085,6 +59167,11 @@
/obj/structure/lattice,
/turf/closed/wall/r_wall,
/area/crew_quarters/heads/captain)
+"qCR" = (
+/obj/structure/musician/piano,
+/obj/effect/decal/cleanable/cobweb,
+/turf/open/floor/plasteel/dark,
+/area/chapel/main)
"qEB" = (
/obj/machinery/hydroponics/soil{
pixel_y = 8
@@ -59218,6 +59305,13 @@
},
/turf/open/floor/plasteel/white,
/area/medical/medbay/lobby)
+"qUh" = (
+/obj/machinery/door/airlock/public/glass{
+ name = "Chapel Office";
+ req_access_txt = "22"
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/office)
"qVP" = (
/obj/effect/spawner/structure/window,
/obj/machinery/atmospherics/pipe/simple/supply/hidden{
@@ -59500,6 +59594,14 @@
},
/turf/open/floor/plasteel,
/area/security/prison)
+"rxF" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/table/glass,
+/obj/item/storage/book/bible{
+ pixel_y = 17
+ },
+/turf/open/floor/wood/wood_large,
+/area/chapel/main)
"ryr" = (
/obj/effect/turf_decal/tile/blue,
/obj/effect/turf_decal/tile/blue{
@@ -60536,6 +60638,12 @@
},
/turf/open/floor/wood,
/area/maintenance/bar)
+"tSm" = (
+/obj/item/kirbyplants{
+ icon_state = "plant-18"
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/main)
"tSo" = (
/obj/structure/lattice,
/obj/machinery/atmospherics/pipe/simple/dark/visible{
@@ -61269,6 +61377,19 @@
/obj/item/clothing/under/misc/pj/blue,
/turf/open/floor/plasteel,
/area/crew_quarters/fitness)
+"vqE" = (
+/obj/structure/chair/wood/normal{
+ dir = 1
+ },
+/obj/machinery/light/floor,
+/obj/item/radio/intercom{
+ broadcasting = 1;
+ frequency = 1480;
+ name = "Confessional Intercom";
+ pixel_x = -25
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/main)
"vqP" = (
/obj/structure/bed/dogbed{
desc = "A comfy-looking pet bed. You can even strap your pet in, in case the gravity turns off.";
@@ -62315,8 +62436,17 @@
/turf/open/floor/carpet,
/area/library)
"xES" = (
-/turf/closed/wall/r_wall,
-/area/engine/storage)
+/obj/structure/table/glass,
+/obj/item/storage/fancy/candle_box{
+ pixel_x = 5;
+ pixel_y = 4
+ },
+/obj/item/storage/fancy/candle_box{
+ pixel_x = 1;
+ pixel_y = 4
+ },
+/turf/open/floor/wood/wood_large,
+/area/chapel/main)
"xFM" = (
/obj/item/clothing/gloves/color/rainbow,
/obj/item/clothing/head/soft/rainbow,
@@ -62406,6 +62536,12 @@
/obj/item/instrument/trombone,
/turf/open/floor/wood,
/area/crew_quarters/theatre)
+"xRa" = (
+/obj/item/kirbyplants{
+ icon_state = "plant-20"
+ },
+/turf/open/floor/plasteel/dark,
+/area/chapel/main)
"xSW" = (
/obj/effect/turf_decal/tile/red{
dir = 1
@@ -87968,14 +88104,14 @@ cdc
cdZ
bVI
cay
-xES
-xES
-xES
-xES
-xES
-xES
-xES
-xES
+ccw
+ccw
+ccw
+ccw
+ccw
+ccw
+ccw
+ccw
cfL
coH
cBO
@@ -88225,14 +88361,14 @@ bWB
cec
bVI
kNv
-xES
+ccw
chY
ciX
cjM
ckB
ckB
ckB
-xES
+ccw
cnY
coH
cgR
@@ -88482,14 +88618,14 @@ cde
ceb
bVI
cay
-xES
+ccw
chY
-fsQ
+ciZ
ciW
ckB
ckB
ckC
-xES
+ccw
cnX
coH
cps
@@ -88739,14 +88875,14 @@ cdf
ced
bVI
cay
-xES
-fsQ
-fsQ
-fsQ
+ccw
+ciZ
+ciZ
+ciZ
ckC
ckC
ckC
-xES
+ccw
coa
coJ
clJ
@@ -88996,14 +89132,14 @@ bWB
bWB
bVI
cay
-xES
-xES
+ccw
+ccw
ciY
ciY
-xES
-xES
-xES
-xES
+ccw
+ccw
+ccw
+ccw
cnZ
coH
cgI
@@ -99226,7 +99362,7 @@ aSZ
aQc
qaY
acN
-bag
+aKR
aJC
aYV
aYV
@@ -108469,7 +108605,7 @@ cBZ
aJT
aLc
aFw
-aFz
+tSm
aFz
aFz
aRR
@@ -108479,7 +108615,7 @@ aFz
aRS
aXW
baz
-aCR
+mtU
bcx
aXq
aYV
@@ -108725,7 +108861,7 @@ aGY
aII
aJW
aMX
-aNW
+qUh
aFz
aPl
aQv
@@ -108735,7 +108871,7 @@ aUI
aTg
aRS
aZf
-aFz
+xRa
bbF
aYV
aXq
@@ -108979,8 +109115,8 @@ aCM
aEg
aFw
aHi
-aHi
-aJV
+aFw
+aFw
aFw
aFw
aFz
@@ -109237,18 +109373,18 @@ aEi
aFw
aHl
aID
-aID
-aFw
-aMM
-aFz
+vqE
+aCR
+qCR
aFz
+aRS
aQw
aRS
aRS
aRS
aRS
aRS
-aZf
+lNB
aRS
bbF
aYV
@@ -109491,15 +109627,15 @@ aAz
asB
aCO
aEh
-aFz
-aHk
-aFz
-aFz
-aTe
+aCR
+aCR
+aCR
+mzv
+aCR
aML
aFz
-aFz
-aQw
+aRS
+pXG
cdl
aRS
aRS
@@ -109748,11 +109884,11 @@ aAA
asB
aCQ
aEk
-aFB
-aHn
-aFB
-csT
-aFB
+fsQ
+dsJ
+rxF
+fsQ
+qkn
aLr
aFB
aPn
@@ -110004,12 +110140,12 @@ awO
awO
asB
aCP
-aEj
+aMM
aFA
-aHm
-aEj
-aEj
-aEj
+aMM
+aMM
+aMM
+aMM
aEj
aEj
aPm
@@ -110020,7 +110156,7 @@ aUJ
aTh
aXz
aZg
-aFz
+xRa
bbF
aYV
bdv
@@ -110260,18 +110396,18 @@ ayj
azx
aAB
asB
-aCR
aEm
-aCR
-aPl
-aQv
-aPl
-aQv
-aCR
-aNY
-aCR
+aNW
aQA
-aCR
+aNW
+aNW
+aNW
+aNW
+aFz
+aFz
+aFz
+aFz
+aFz
aTj
aFz
aVV
@@ -110517,14 +110653,14 @@ asB
asB
asB
asB
-aCR
+aHk
+aNW
bfb
-aCR
-aHo
-aIE
aKe
-aIE
-aCR
+aKe
+aKe
+aNW
+kdF
aNX
aPo
aQz
@@ -110773,14 +110909,14 @@ atS
aaf
aaf
aaf
-atS
+asB
aCR
aEn
aCR
-aHq
-aHq
-aHq
-aHq
+aKe
+aKe
+aKe
+aNW
aCR
aCR
aCR
@@ -111030,14 +111166,14 @@ atS
aoV
aoV
aaf
-atS
-aaf
-aaa
-aaf
-aaa
-aaa
-aaa
-aaa
+gXs
+aHm
+aHn
+dmX
+aNW
+aNW
+aNW
+aNW
aMZ
aNZ
aPp
@@ -111287,14 +111423,14 @@ aaH
aoV
aoV
aaf
-atS
-aaf
-aaa
-aaf
-aaa
-aaa
-aaa
-aaf
+gXs
+aHm
+aJV
+dmX
+csT
+kOL
+mZx
+xES
aMZ
aOb
aPr
@@ -111544,14 +111680,14 @@ aaH
aoV
aoV
aoV
-atS
-aaf
-aaa
-aaf
-aaa
-aaa
-aaa
-aaf
+gXs
+aHm
+aNY
+aCR
+dmX
+dmX
+dmX
+dmX
aMZ
aOa
aVX
@@ -111801,7 +111937,7 @@ atS
aoV
aoV
aoV
-atS
+gXs
aaf
aaa
aaf
diff --git a/code/__DEFINES/loadout.dm b/code/__DEFINES/loadout.dm
index ecd043a66a..973457692e 100644
--- a/code/__DEFINES/loadout.dm
+++ b/code/__DEFINES/loadout.dm
@@ -72,9 +72,11 @@
#define LOADOUT_LIMBS list(LOADOUT_LIMB_NORMAL,LOADOUT_LIMB_PROSTHETIC,LOADOUT_LIMB_AMPUTATED) //you can amputate your legs/arms though
//loadout saving/loading specific defines
-#define MAXIMUM_LOADOUT_SAVES 5
-#define LOADOUT_ITEM "loadout_item"
-#define LOADOUT_COLOR "loadout_color"
+#define MAXIMUM_LOADOUT_SAVES 5
+#define LOADOUT_ITEM "loadout_item"
+#define LOADOUT_COLOR "loadout_color"
+#define LOADOUT_CUSTOM_NAME "loadout_custom_name"
+#define LOADOUT_CUSTOM_DESCRIPTION "loadout_custom_description"
//loadout item flags
#define LOADOUT_CAN_NAME (1<<0) //renaming items
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index 779ee2fbac..165f6e9d81 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -691,21 +691,29 @@ SUBSYSTEM_DEF(job)
if(!permitted)
continue
var/obj/item/I = new G.path
- if(I && length(i[LOADOUT_COLOR])) //handle loadout colors
- //handle polychromic items
- if((G.loadout_flags & LOADOUT_CAN_COLOR_POLYCHROMIC) && length(G.loadout_initial_colors))
- var/datum/element/polychromic/polychromic = I.comp_lookup["item_worn_overlays"] //stupid way to do it but GetElement does not work for this
- if(polychromic && istype(polychromic))
- var/list/polychromic_entry = polychromic.colors_by_atom[I]
- if(polychromic_entry)
- if(polychromic.suits_with_helmet_typecache[I.type]) //is this one of those toggleable hood/helmet things?
- polychromic.connect_helmet(I,i[LOADOUT_COLOR])
- polychromic.colors_by_atom[I] = i[LOADOUT_COLOR]
- I.update_icon()
- else
- //handle non-polychromic items (they only have one color)
- I.add_atom_colour(i[LOADOUT_COLOR][1], FIXED_COLOUR_PRIORITY)
- I.update_icon()
+ if(I)
+ if(length(i[LOADOUT_COLOR])) //handle loadout colors
+ //handle polychromic items
+ if((G.loadout_flags & LOADOUT_CAN_COLOR_POLYCHROMIC) && length(G.loadout_initial_colors))
+ var/datum/element/polychromic/polychromic = I.comp_lookup["item_worn_overlays"] //stupid way to do it but GetElement does not work for this
+ if(polychromic && istype(polychromic))
+ var/list/polychromic_entry = polychromic.colors_by_atom[I]
+ if(polychromic_entry)
+ if(polychromic.suits_with_helmet_typecache[I.type]) //is this one of those toggleable hood/helmet things?
+ polychromic.connect_helmet(I,i[LOADOUT_COLOR])
+ polychromic.colors_by_atom[I] = i[LOADOUT_COLOR]
+ I.update_icon()
+ else
+ //handle non-polychromic items (they only have one color)
+ I.add_atom_colour(i[LOADOUT_COLOR][1], FIXED_COLOUR_PRIORITY)
+ I.update_icon()
+ //when inputting the data it's already sanitized
+ if(i[LOADOUT_CUSTOM_NAME])
+ var/custom_name = i[LOADOUT_CUSTOM_NAME]
+ I.name = custom_name
+ if(i[LOADOUT_CUSTOM_DESCRIPTION])
+ var/custom_description = i[LOADOUT_CUSTOM_DESCRIPTION]
+ I.desc = custom_description
if(!M.equip_to_slot_if_possible(I, G.slot, disable_warning = TRUE, bypass_equip_delay_self = TRUE)) // If the job's dresscode compliant, try to put it in its slot, first
if(iscarbon(M))
var/mob/living/carbon/C = M
diff --git a/code/datums/elements/mob_holder.dm b/code/datums/elements/mob_holder.dm
index d770e0f30d..619f674969 100644
--- a/code/datums/elements/mob_holder.dm
+++ b/code/datums/elements/mob_holder.dm
@@ -141,7 +141,7 @@
/obj/item/clothing/head/mob_holder/dropped(mob/user)
. = ..()
- if(held_mob && isturf(loc))//don't release on soft-drops
+ if(held_mob && !ismob(loc))//don't release on soft-drops
release()
/obj/item/clothing/head/mob_holder/proc/release()
diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm
index 36ca035be9..9a29158b33 100644
--- a/code/datums/explosion.dm
+++ b/code/datums/explosion.dm
@@ -239,8 +239,13 @@ GLOBAL_LIST_EMPTY(explosions)
atoms += A
for(var/i in atoms)
var/atom/A = i
- if(!QDELETED(A))
- A.ex_act(dist)
+ if(QDELETED(A))
+ continue
+ A.ex_act(dist, null, src)
+ if(QDELETED(A) || !ismovable(A))
+ continue
+ var/atom/movable/AM = A
+ LAZYADD(AM.acted_explosions, explosion_id)
if(flame_dist && prob(40) && !isspaceturf(T) && !T.density)
new /obj/effect/hotspot(T) //Mostly for ambience!
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 706d3dd548..c453b4bb62 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -554,7 +554,7 @@
/atom/proc/contents_explosion(severity, target)
return //For handling the effects of explosions on contents that would not normally be effected
-/atom/proc/ex_act(severity, target)
+/atom/proc/ex_act(severity, target, datum/explosion/E)
set waitfor = FALSE
contents_explosion(severity, target)
SEND_SIGNAL(src, COMSIG_ATOM_EX_ACT, severity, target)
diff --git a/code/game/machinery/colormate.dm b/code/game/machinery/colormate.dm
index b4306d49a4..1f1c16248c 100644
--- a/code/game/machinery/colormate.dm
+++ b/code/game/machinery/colormate.dm
@@ -6,10 +6,12 @@
density = TRUE
anchored = TRUE
circuit = /obj/item/circuitboard/machine/colormate
- var/obj/item/inserted
+ var/atom/movable/inserted
var/activecolor = "#FFFFFF"
var/list/color_matrix_last
var/matrix_mode = FALSE
+ /// Allow holder'd mobs
+ var/allow_mobs = TRUE
/// Minimum lightness for normal mode
var/minimum_normal_lightness = 50
/// Minimum lightness for matrix mode, tested using 4 test colors of full red, green, blue, white.
@@ -57,11 +59,22 @@
return
if(user.a_intent == INTENT_HARM)
return ..()
+ if(allow_mobs && istype(I, /obj/item/clothing/head/mob_holder))
+ var/obj/item/clothing/head/mob_holder/H = I
+ var/mob/victim = H.held_mob
+ if(!user.transferItemToLoc(I, src))
+ to_chat(user, "[I] is stuck to your hand!")
+ return
+ if(!QDELETED(H))
+ H.release()
+ insert_mob(victim, user)
if(is_type_in_list(I, allowed_types) && is_operational())
if(!user.transferItemToLoc(I, src))
to_chat(user, "[I] is stuck to your hand!")
return
+ if(QDELETED(I))
+ return
user.visible_message("[user] inserts [I] into [src]'s receptable.")
inserted = I
@@ -69,9 +82,22 @@
else
return ..()
+/obj/machinery/gear_painter/proc/insert_mob(mob/victim, mob/user)
+ if(inserted)
+ return
+ if(user)
+ visible_message("[user] stuffs [victim] into [src]!")
+ inserted = victim
+ inserted.forceMove(src)
+
/obj/machinery/gear_painter/AllowDrop()
return FALSE
+/obj/machinery/gear_painter/handle_atom_del(atom/movable/AM)
+ if(AM == inserted)
+ inserted = null
+ return ..()
+
/obj/machinery/gear_painter/AltClick(mob/user)
. = ..()
if(!user.CanReach(src))
diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm
index 81bae3d54b..e47b2bb0d8 100644
--- a/code/game/objects/items/pinpointer.dm
+++ b/code/game/objects/items/pinpointer.dm
@@ -19,6 +19,8 @@
var/minimum_range = 0 //at what range the pinpointer declares you to be at your destination
var/ignore_suit_sensor_level = FALSE // Do we find people even if their suit sensors are turned off
var/alert = FALSE // TRUE to display things more seriously
+ /// resets target on toggle
+ var/resets_target = TRUE
/obj/item/pinpointer/Initialize()
. = ..()
@@ -27,7 +29,7 @@
/obj/item/pinpointer/Destroy()
STOP_PROCESSING(SSfastprocess, src)
GLOB.pinpointer_list -= src
- target = null
+ unset_target()
return ..()
/obj/item/pinpointer/DoRevenantThrowEffects(atom/target)
@@ -41,7 +43,8 @@
if(active)
START_PROCESSING(SSfastprocess, src)
else
- target = null
+ if(resets_target)
+ unset_target()
STOP_PROCESSING(SSfastprocess, src)
update_icon()
@@ -54,6 +57,18 @@
/obj/item/pinpointer/proc/scan_for_target()
return
+/obj/item/pinpointer/proc/set_target(atom/movable/newtarget)
+ if(target)
+ unset_target()
+ target = newtarget
+ RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/unset_target)
+
+/obj/item/pinpointer/proc/unset_target()
+ if(!target)
+ return
+ UnregisterSignal(target, COMSIG_PARENT_QDELETING)
+ target = null
+
/obj/item/pinpointer/update_overlays()
. = ..()
if(!active)
@@ -105,7 +120,8 @@
active = FALSE
user.visible_message("[user] deactivates [user.p_their()] pinpointer.", "You deactivate your pinpointer.")
playsound(src, 'sound/items/screwdriver2.ogg', 50, 1)
- target = null //Restarting the pinpointer forces a target reset
+ if(resets_target)
+ unset_target() //Restarting the pinpointer forces a target reset
STOP_PROCESSING(SSfastprocess, src)
update_icon()
return
@@ -141,7 +157,7 @@
if(!A || QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated())
return
- target = names[A]
+ set_target(names[A])
active = TRUE
user.visible_message("[user] activates [user.p_their()] pinpointer.", "You activate your pinpointer.")
playsound(src, 'sound/items/screwdriver2.ogg', 50, 1)
@@ -153,7 +169,7 @@
if(ishuman(target))
var/mob/living/carbon/human/H = target
if(!trackable(H))
- target = null
+ unset_target()
if(!target) //target can be set to null from above code, or elsewhere
active = FALSE
@@ -167,7 +183,7 @@
. = ..()
/obj/item/pinpointer/pair/scan_for_target()
- target = other_pair
+ set_target(other_pair)
/obj/item/pinpointer/pair/examine(mob/user)
. = ..()
@@ -199,7 +215,7 @@
shuttleport = SSshuttle.getShuttle("huntership")
/obj/item/pinpointer/shuttle/scan_for_target()
- target = shuttleport
+ set_target(shuttleport)
/obj/item/pinpointer/shuttle/Destroy()
shuttleport = null
@@ -211,4 +227,8 @@
icon_state = "pinpointer_ian"
/obj/item/pinpointer/ian/scan_for_target()
- target = locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_living_list
+ set_target(locate(/mob/living/simple_animal/pet/dog/corgi/Ian) in GLOB.mob_living_list)
+
+/obj/item/pinpointer/custom
+ resets_target = FALSE
+
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index 4856f5af32..ab0b0d933a 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -113,12 +113,6 @@
to_chat(src, "Error: Use the admin IRC/Discord channel, nerd.", confidential = TRUE)
return
- //clean the message if it's not sent by a high-rank admin
- if(!check_rights(R_SERVER|R_DEBUG,0)||external)//no sending html to the poor bots
- msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
- if(!msg)
- return
-
else
//get message text, limit it's length.and clean/escape html
if(!msg)
@@ -133,11 +127,16 @@
else
if(holder)
to_chat(src, "Error: Admin-PM: Client not found.", confidential = TRUE)
- to_chat(src, "Message not sent:
[msg]", confidential = TRUE)
+ to_chat(src, "Message not sent:
[sanitize(msg)]", confidential = TRUE)
if(recipient_ticket)
recipient_ticket.AddInteraction("No client found, message not sent:
[msg]")
return
else
+ //clean the message if it's not sent by a high-rank admin
+ if(!check_rights(R_SERVER|R_DEBUG,0)||external)//no sending html to the poor bots
+ msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
+ if(!msg)
+ return
current_ticket.MessageNoRecipient(msg)
return
@@ -149,6 +148,12 @@
if(src.handle_spam_prevention(msg,MUTE_ADMINHELP))
return
+ //clean the message if it's not sent by a high-rank admin
+ if(!check_rights(R_SERVER|R_DEBUG,0)||external)//no sending html to the poor bots
+ msg = sanitize(copytext_char(msg, 1, MAX_MESSAGE_LEN))
+ if(!msg)
+ return
+
var/rawmsg = msg
if(holder)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 9dd063e778..8b68fcaa5f 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -936,19 +936,23 @@ GLOBAL_LIST_EMPTY(preferences_datums)
continue
var/class_link = ""
var/list/loadout_item = has_loadout_gear(loadout_slot, "[gear.type]")
- var/extra_color_data = ""
+ var/extra_loadout_data = ""
if(loadout_item)
class_link = "style='white-space:normal;' class='linkOn' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(name)];toggle_gear=0'"
if(gear.loadout_flags & LOADOUT_CAN_COLOR_POLYCHROMIC)
- extra_color_data += "
Color"
+ extra_loadout_data += "
Color"
for(var/loadout_color in loadout_item[LOADOUT_COLOR])
- extra_color_data += " "
+ extra_loadout_data += " "
else
var/loadout_color_non_poly = "#FFFFFF"
if(length(loadout_item[LOADOUT_COLOR]))
loadout_color_non_poly = loadout_item[LOADOUT_COLOR][1]
- extra_color_data += "
Color"
- extra_color_data += " "
+ extra_loadout_data += "
Color"
+ extra_loadout_data += " "
+ if(gear.loadout_flags & LOADOUT_CAN_NAME)
+ extra_loadout_data += "
Name [loadout_item[LOADOUT_CUSTOM_NAME] ? loadout_item[LOADOUT_CUSTOM_NAME] : "N/A"]"
+ if(gear.loadout_flags & LOADOUT_CAN_DESCRIPTION)
+ extra_loadout_data += "
Description"
else if((gear_points - gear.cost) < 0)
class_link = "style='white-space:normal;' class='linkOff'"
else if(donoritem)
@@ -957,7 +961,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
class_link = "style='white-space:normal;' href='?_src_=prefs;preference=gear;toggle_gear_path=[html_encode(name)];toggle_gear=1'"
else
class_link = "style='white-space:normal;background:#eb2e2e;' class='linkOff'"
- dat += "
| [name][extra_color_data] | "
+ dat += "
| [name][extra_loadout_data] | "
dat += "[gear.cost] | "
if(islist(gear.restricted_roles))
if(gear.restricted_roles.len)
@@ -970,14 +974,15 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += gear.restricted_roles.Join(";")
dat += ""
if(!istype(gear, /datum/gear/unlockable))
- dat += " | [gear.description] |
"
+ // the below line essentially means "if the loadout item is picked by the user and has a custom description, give it the custom description, otherwise give it the default description"
+ dat += "[loadout_item ? (loadout_item[LOADOUT_CUSTOM_DESCRIPTION] ? loadout_item[LOADOUT_CUSTOM_DESCRIPTION] : gear.description) : gear.description] | "
else
//we add the user's progress to the description assuming they have progress
var/datum/gear/unlockable/unlockable = gear
var/progress_made = unlockable_loadout_data[unlockable.progress_key]
if(!progress_made)
progress_made = 0
- dat += "[gear.description] Progress: [min(progress_made, unlockable.progress_required)]/[unlockable.progress_required] | "
+ dat += "[loadout_item ? (loadout_item[LOADOUT_CUSTOM_DESCRIPTION] ? loadout_item[LOADOUT_CUSTOM_DESCRIPTION] : gear.description) : gear.description] Progress: [min(progress_made, unlockable.progress_required)]/[unlockable.progress_required] | "
dat += ""
if(4) // Content preferences
@@ -2892,7 +2897,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
loadout_data["SAVE_[loadout_slot]"] += list(new_loadout_data) //double packed because it does the union of the CONTENTS of the lists
else
loadout_data["SAVE_[loadout_slot]"] = list(new_loadout_data) //double packed because you somehow had no save slot in your loadout?
- if(href_list["loadout_color"])
+
+ if(href_list["loadout_color"] || href_list["loadout_color_polychromic"] || href_list["loadout_rename"] || href_list["loadout_redescribe"])
+ //if the gear doesn't exist, or they don't have it, ignore the request
var/name = html_decode(href_list["loadout_gear_name"])
var/datum/gear/G = GLOB.loadout_items[gear_category][gear_subcategory][name]
if(!G)
@@ -2900,29 +2907,44 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/user_gear = has_loadout_gear(loadout_slot, "[G.type]")
if(!user_gear)
return
- if(!length(user_gear[LOADOUT_COLOR]))
- user_gear[LOADOUT_COLOR] = list("#FFFFFF")
- var/current_color = user_gear[LOADOUT_COLOR][1]
- var/new_color = input(user, "Polychromic options", "Choose Color", current_color) as color|null
- user_gear[LOADOUT_COLOR][1] = sanitize_hexcolor(new_color, 6, TRUE, current_color)
- if(href_list["loadout_color_polychromic"])
- var/name = html_decode(href_list["loadout_gear_name"])
- var/datum/gear/G = GLOB.loadout_items[gear_category][gear_subcategory][name]
- if(!G)
- return
- var/user_gear = has_loadout_gear(loadout_slot, "[G.type]")
- if(!user_gear)
- return
- var/list/color_options = list()
- for(var/i=1, i<=length(G.loadout_initial_colors), i++)
- color_options += "Color [i]"
- var/color_to_change = input(user, "Polychromic options", "Recolor [name]") as null|anything in color_options
- if(color_to_change)
- var/color_index = text2num(copytext(color_to_change, 7))
- var/current_color = user_gear[LOADOUT_COLOR][color_index]
- var/new_color = input(user, "Polychromic options", "Choose [color_to_change] Color", current_color) as color|null
- if(new_color)
- user_gear[LOADOUT_COLOR][color_index] = sanitize_hexcolor(new_color, 6, TRUE, current_color)
+
+ //possible requests: recolor, recolor (polychromic), rename, redescribe
+ //always make sure the gear allows said request before proceeding
+
+ //non-poly coloring can only be done by non-poly items
+ if(href_list["loadout_color"] && !(G.loadout_flags & LOADOUT_CAN_COLOR_POLYCHROMIC))
+ if(!length(user_gear[LOADOUT_COLOR]))
+ user_gear[LOADOUT_COLOR] = list("#FFFFFF")
+ var/current_color = user_gear[LOADOUT_COLOR][1]
+ var/new_color = input(user, "Polychromic options", "Choose Color", current_color) as color|null
+ user_gear[LOADOUT_COLOR][1] = sanitize_hexcolor(new_color, 6, TRUE, current_color)
+
+ //poly coloring can only be done by poly items
+ if(href_list["loadout_color_polychromic"] && (G.loadout_flags & LOADOUT_CAN_COLOR_POLYCHROMIC))
+ var/list/color_options = list()
+ for(var/i=1, i<=length(G.loadout_initial_colors), i++)
+ color_options += "Color [i]"
+ var/color_to_change = input(user, "Polychromic options", "Recolor [name]") as null|anything in color_options
+ if(color_to_change)
+ var/color_index = text2num(copytext(color_to_change, 7))
+ var/current_color = user_gear[LOADOUT_COLOR][color_index]
+ var/new_color = input(user, "Polychromic options", "Choose [color_to_change] Color", current_color) as color|null
+ if(new_color)
+ user_gear[LOADOUT_COLOR][color_index] = sanitize_hexcolor(new_color, 6, TRUE, current_color)
+
+ //both renaming and redescribing strip the input to stop html injection
+
+ //renaming is only allowed if it has the flag for it
+ if(href_list["loadout_rename"] && (G.loadout_flags & LOADOUT_CAN_NAME))
+ var/new_name = stripped_input(user, "Enter new name for item. Maximum [MAX_NAME_LEN] characters.", "Loadout Item Naming", null, MAX_NAME_LEN)
+ if(new_name)
+ user_gear[LOADOUT_CUSTOM_NAME] = new_name
+
+ //redescribing is only allowed if it has the flag for it
+ if(href_list["loadout_redescribe"] && (G.loadout_flags & LOADOUT_CAN_DESCRIPTION)) //redescribe isnt a real word but i can't think of the right term to use
+ var/new_description = stripped_input(user, "Enter new description for item. Maximum 500 characters.", "Loadout Item Redescribing", null, 500)
+ if(new_description)
+ user_gear[LOADOUT_CUSTOM_DESCRIPTION] = new_description
ShowChoices(user)
return 1
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index 5dd35788f1..fc4185f207 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -33,6 +33,16 @@
actions_types = list(/datum/action/item_action/adjust)
mutantrace_variation = STYLE_MUZZLE
+/obj/item/clothing/mask/surgical/aesthetic
+ name = "aesthetic sterile mask"
+ desc = "A sterile mask designed to help prevent the spread of diseases. This one doesn't seem like it does a whole lot, somehow."
+ flags_inv = HIDEFACE
+ flags_cover = null
+ visor_flags_inv = null
+ visor_flags_cover = null
+ permeability_coefficient = 1
+ armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
+
/obj/item/clothing/mask/surgical/attack_self(mob/user)
adjustmask(user)
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index 3228fbbaba..b0af7aa0d5 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -237,6 +237,12 @@
icon_state = "choker"
poly_colors = list("#222222")
+/obj/item/clothing/neck/necklace/cowbell
+ name = "cowbell collar"
+ desc = "Who would wear this? Take this off, you aren't a cow, you're just an awful degenerate."
+ icon = 'icons/obj/clothing/neck.dmi'
+ icon_state = "cowbell"
+
/obj/item/key/collar
name = "Collar Key"
desc = "A key for a tiny lock on a collar or bag."
diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm
index da91b18742..233ece1442 100644
--- a/code/modules/clothing/under/accessories.dm
+++ b/code/modules/clothing/under/accessories.dm
@@ -120,13 +120,175 @@
if(initial(above_suit))
. += "\The [src] can be worn above or below your suit. Alt-click to toggle."
+//////////////
+//Waistcoats//
+//////////////
+
/obj/item/clothing/accessory/waistcoat
- name = "waistcoat"
+ name = "black waistcoat"
desc = "For some classy, murderous fun."
icon_state = "waistcoat"
item_state = "waistcoat"
minimize_when_attached = FALSE
+/obj/item/clothing/accessory/waistcoat/red
+ name = "red waistcoat"
+ icon_state = "waistcoat_red"
+ item_state = "waistcoat_red"
+
+/obj/item/clothing/accessory/waistcoat/grey
+ name = "grey waistcoat"
+ icon_state = "waistcoat_grey"
+ item_state = "waistcoat_grey"
+
+/obj/item/clothing/accessory/waistcoat/brown
+ name = "red waistcoat"
+ icon_state = "waistcoat_brown"
+ item_state = "waistcoat_brown"
+
+/obj/item/clothing/accessory/waistcoat/sweatervest
+ name = "black sweatervest"
+ icon_state = "sweatervest"
+ item_state = "sweatervest"
+
+/obj/item/clothing/accessory/waistcoat/sweatervest/blue
+ name = "blue sweatervest"
+ icon_state = "sweatervest_blue"
+ item_state = "sweatervest_blue"
+
+/obj/item/clothing/accessory/waistcoat/sweatervest/red
+ name = "red sweatervest"
+ icon_state = "sweatervest_red"
+ item_state = "sweatervest_red"
+
+////////////
+//Sweaters//
+////////////
+
+/obj/item/clothing/accessory/sweater
+ name = "grey sweater"
+ desc = "Nicely comfy and warm!"
+ icon_state = "sweater"
+ item_state = "sweater"
+ minimize_when_attached = FALSE
+
+/obj/item/clothing/accessory/sweater/pink
+ name = "pink sweater"
+ icon_state = "sweater_pink"
+ item_state = "sweater_pink"
+
+/obj/item/clothing/accessory/sweater/heart
+ name = "heart sweater"
+ icon_state = "sweater_heart"
+ item_state = "sweater_heart"
+
+/obj/item/clothing/accessory/sweater/blue
+ name = "blue sweater"
+ icon_state = "sweater_blue"
+ item_state = "sweater_blue"
+
+/obj/item/clothing/accessory/sweater/nt
+ name = "nanotrasen sweater"
+ icon_state = "sweater_nt"
+ item_state = "sweater_nt"
+
+/obj/item/clothing/accessory/sweater/mint
+ name = "mint sweater"
+ icon_state = "sweater_mint"
+ item_state = "sweater_mint"
+
+/obj/item/clothing/accessory/sweater/shoulderless
+ name = "shoulderless sweater"
+ icon_state = "sweater_shoulderless"
+ item_state = "sweater_shoulderless"
+
+/obj/item/clothing/accessory/sweater/uglyxmas
+ name = "ugly xmas sweater"
+ icon_state = "sweater_uglyxmas"
+ item_state = "sweater_uglyxmas"
+
+/obj/item/clothing/accessory/sweater/uglyxmas
+ name = "ugly xmas sweater"
+ icon_state = "sweater_uglyxmas"
+ item_state = "sweater_uglyxmas"
+
+/obj/item/clothing/accessory/sweater/flower
+ name = "flower sweater"
+ icon_state = "sweater_uglyxmas"
+ item_state = "sweater_uglyxmas"
+
+////////////////
+//Suit Jackets//
+////////////////
+
+/obj/item/clothing/accessory/suitjacket
+ name = "tan suit jacket"
+ desc = "For those times when you have to attend a fancy business meeting without wearing your pants."
+ icon_state = "jacket_tan"
+ item_state = "jacket_tan"
+ minimize_when_attached = FALSE
+
+/obj/item/clothing/accessory/suitjacket/charcoal
+ name = "charcoal suit jacket"
+ icon_state = "jacket_charcoal"
+ item_state = "jacket_charcoal"
+
+/obj/item/clothing/accessory/suitjacket/navy
+ name = "navy suit jacket"
+ icon_state = "jacket_navy"
+ item_state = "jacket_navy"
+
+/obj/item/clothing/accessory/suitjacket/burgundy
+ name = "burgundy suit jacket"
+ icon_state = "jacket_burgundy"
+ item_state = "jacket_burgundy"
+
+/obj/item/clothing/accessory/suitjacket/checkered
+ name = "checkered suit jacket"
+ icon_state = "jacket_checkered"
+ item_state = "jacket_checkered"
+
+///////////////////////
+//Tactical Turtlnecks//
+///////////////////////
+
+/obj/item/clothing/accessory/turtleneck
+ name = "black turtleneck"
+ desc = "Extra cool. Extra fool."
+ icon_state = "turtleneck"
+ item_state = "turtleneck"
+ minimize_when_attached = FALSE
+
+/obj/item/clothing/accessory/turtleneck/red
+ name = "red turtleneck"
+ icon_state = "turtleneck_red"
+ item_state = "turtleneck_red"
+
+/obj/item/clothing/accessory/turtleneck/tactifool
+ name = "black sweaterneck"
+ desc = "Extra fool. Extra cool."
+ icon_state = "tactifool"
+ item_state = "tactifool"
+
+/obj/item/clothing/accessory/turtleneck/tactifool/green
+ name = "green sweaterneck"
+ icon_state = "tactifool_green"
+ item_state = "tactifool_green"
+
+/obj/item/clothing/accessory/turtleneck/tactifool/blue
+ name = "blue sweaterneck"
+ icon_state = "tactifool_blue"
+ item_state = "tactifool_blue"
+
+/obj/item/clothing/accessory/turtleneck/tactifool/syndicate
+ name = "tactifool sweaterneck"
+ icon_state = "tactifool_syndicate"
+ item_state = "tactifool_syndicate"
+
+/////////////////
+//Miscellaneous//
+/////////////////
+
/obj/item/clothing/accessory/maidapron
name = "maid apron"
desc = "The best part of a maid costume."
diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm
index 0268d32a6b..d6c4dfae34 100644
--- a/code/modules/mining/machine_redemption.dm
+++ b/code/modules/mining/machine_redemption.dm
@@ -250,6 +250,8 @@
if(points)
if(I)
I.mining_points += points
+ if(usr.client)
+ usr.client.increment_progress("miner", points)
points = 0
else
to_chat(usr, "No ID detected.")
diff --git a/code/modules/mining/point_bank.dm b/code/modules/mining/point_bank.dm
index f18b62635f..f467b94de5 100644
--- a/code/modules/mining/point_bank.dm
+++ b/code/modules/mining/point_bank.dm
@@ -20,25 +20,6 @@
data["totalPoints"] = points
return data
-/obj/machinery/mineral/ore_redemption/ui_act(action, params)
- if(..())
- return
- switch(action)
- if("Claim")
- var/mob/M = usr
- var/obj/item/card/id/I = M.get_idcard(TRUE)
- if(points)
- if(I)
- I.mining_points += points
- if(usr.client)
- usr.client.increment_progress("miner", points)
- points = 0
- else
- to_chat(usr, "No ID detected.")
- else
- to_chat(usr, "No points to claim.")
- return TRUE
-
/obj/machinery/point_bank/power_change()
..()
update_icon()
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm b/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm
index 55ab18c20c..4b23112e5e 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm
@@ -13,6 +13,10 @@
name = "Bald"
icon_state = "bald"
+/datum/sprite_accessory/hair/adhara
+ name = "Adhara"
+ icon_state = "hair_adhara"
+
/datum/sprite_accessory/hair/afro
name = "Afro"
icon_state = "hair_afro"
@@ -29,6 +33,14 @@
name = "Ahoge"
icon_state = "hair_antenna"
+/datum/sprite_accessory/hair/amazon
+ name = "Amazon"
+ icon_state = "hair_amazon"
+
+/datum/sprite_accessory/hair/anita
+ name = "Anita"
+ icon_state = "hair_anita"
+
/datum/sprite_accessory/hair/balding
name = "Balding Hair"
icon_state = "hair_e"
@@ -61,6 +73,10 @@
name = "Beehive 2"
icon_state = "hair_beehive2"
+/datum/sprite_accessory/hair/belle
+ name = "Belle"
+ icon_state = "hair_belle"
+
/datum/sprite_accessory/hair/bob
name = "Bob Hair"
icon_state = "hair_bob"
@@ -365,6 +381,10 @@
name = "Hitop"
icon_state = "hair_hitop"
+/datum/sprite_accessory/hair/inkling
+ name = "Inkling"
+ icon_state = "hair_inkling"
+
/datum/sprite_accessory/hair/jade
name = "Jade"
icon_state = "hair_jade"
@@ -373,6 +393,10 @@
name = "Jensen"
icon_state = "hair_jensen"
+/datum/sprite_accessory/hair/jessica
+ name = "Jessica"
+ icon_state = "hair_jessica"
+
/datum/sprite_accessory/hair/joestar
name = "Joestar"
icon_state = "hair_joestar"
@@ -389,6 +413,10 @@
name = "Kusanagi"
icon_state = "hair_kusanagi"
+/datum/sprite_accessory/hair/kleeia
+ name = "Kleeia"
+ icon_state = "hair_kleeia"
+
/datum/sprite_accessory/hair/long
name = "Long Hair 1"
icon_state = "hair_long"
@@ -445,6 +473,10 @@
name = "Mohawk"
icon_state = "hair_d"
+/datum/sprite_accessory/hair/newyou
+ name = "New You"
+ icon_state = "hair_newyou"
+
/datum/sprite_accessory/hair/reversemohawk
name = "Mohawk (Reverse)"
icon_state = "hair_reversemohawk"
@@ -699,6 +731,10 @@
name = "Spiky 3"
icon_state = "hair_spiky2"
+/datum/sprite_accessory/hair/supernova
+ name = "Supernova"
+ icon_state = "hair_supernova"
+
/datum/sprite_accessory/hair/swept
name = "Swept Back Hair"
icon_state = "hair_swept"
@@ -743,6 +779,10 @@
name = "Trimmed (Flat)"
icon_state = "hair_trimflat"
+/datum/sprite_accessory/hair/twincurls
+ name = "Twincurls"
+ icon_state = "hair_twincurls"
+
/datum/sprite_accessory/hair/twintails
name = "Twintails"
icon_state = "hair_twintail"
@@ -787,6 +827,10 @@
name = "Very Short Over Eye (Alt)"
icon_state = "hair_veryshortovereyealternate"
+/datum/sprite_accessory/hair/vivi
+ name = "Vivi"
+ icon_state = "hair_vivi"
+
/datum/sprite_accessory/hair/volaju
name = "Volaju"
icon_state = "hair_volaju"
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/socks.dm b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm
index d4c8ea096a..78517b003e 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/socks.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm
@@ -88,6 +88,10 @@
name = "Pantyhose"
icon_state = "pantyhose"
+/datum/sprite_accessory/underwear/socks/pantyhose_ripped
+ name = "Pantyhose - Ripped"
+ icon_state = "pantyhose_ripped"
+
/datum/sprite_accessory/underwear/socks/socks_short
name = "Short"
icon_state = "socks_short"
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm b/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm
index 1be02c207e..364485fe8a 100644
--- a/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm
+++ b/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm
@@ -343,6 +343,20 @@
icon_state = "fishnet_body"
gender = FEMALE
+/datum/sprite_accessory/underwear/top/shibari
+ name = "Shibari Ropes"
+ icon_state = "shibari"
+ gender = FEMALE
+ has_color = TRUE
+ covers_chest = FALSE
+
+/datum/sprite_accessory/underwear/top/shibari_sleeved
+ name = "Shibari Ropes - sleeves"
+ icon_state = "shibari_sleeves"
+ gender = FEMALE
+ has_color = TRUE
+ covers_chest = FALSE
+
/datum/sprite_accessory/underwear/top/swimsuit
name = "Swimsuit Top"
icon_state = "bra_swimming"
diff --git a/code/modules/mob/death.dm b/code/modules/mob/death.dm
index 09336d2fea..476bddded3 100644
--- a/code/modules/mob/death.dm
+++ b/code/modules/mob/death.dm
@@ -1,6 +1,6 @@
//This is the proc for gibbing a mob. Cannot gib ghosts.
//added different sort of gibs and animations. N
-/mob/proc/gib()
+/mob/proc/gib(no_brain, no_organs, no_bodyparts, datum/explosion/was_explosion)
return
//This is the proc for turning a mob into ash. Mostly a copy of gib code (above).
diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm
index ee2f945b65..528848fb14 100644
--- a/code/modules/mob/living/carbon/death.dm
+++ b/code/modules/mob/living/carbon/death.dm
@@ -17,7 +17,7 @@
if(SSticker.mode)
SSticker.mode.check_win() //Calls the rounds wincheck, mainly for wizard, malf, and changeling now
-/mob/living/carbon/gib(no_brain, no_organs, no_bodyparts)
+/mob/living/carbon/gib(no_brain, no_organs, no_bodyparts, datum/explosion/was_explosion)
var/atom/Tsec = drop_location()
for(var/mob/M in src)
if(M in stomach_contents)
@@ -27,7 +27,7 @@
"You burst out of [src]!")
..()
-/mob/living/carbon/spill_organs(no_brain, no_organs, no_bodyparts)
+/mob/living/carbon/spill_organs(no_brain, no_organs, no_bodyparts, datum/explosion/was_explosion)
var/atom/Tsec = drop_location()
if(!no_bodyparts)
if(no_organs)//so the organs don't get transfered inside the bodyparts we'll drop.
@@ -41,6 +41,8 @@
qdel(O) //so the brain isn't transfered to the head when the head drops.
continue
if(!(O.organ_flags & ORGAN_NO_DISMEMBERMENT) && check_zone(O.zone) == BODY_ZONE_CHEST)
+ if(was_explosion)
+ LAZYADD(O.acted_explosions, was_explosion.explosion_id)
O.Remove()
O.forceMove(Tsec)
O.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5)
@@ -50,13 +52,16 @@
if(I.organ_flags & ORGAN_NO_DISMEMBERMENT || (no_brain && istype(I, /obj/item/organ/brain)) || (no_organs && !istype(I, /obj/item/organ/brain)))
qdel(I)
continue
+ if(was_explosion)
+ LAZYADD(I.acted_explosions, was_explosion.explosion_id)
I.Remove()
I.forceMove(Tsec)
I.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5)
-
-/mob/living/carbon/spread_bodyparts()
+/mob/living/carbon/spread_bodyparts(no_brain, no_organs, datum/explosion/was_explosion)
for(var/X in bodyparts)
var/obj/item/bodypart/BP = X
+ if(was_explosion)
+ LAZYADD(BP.acted_explosions, was_explosion.explosion_id)
BP.drop_limb()
BP.throw_at(get_edge_target_turf(src,pick(GLOB.alldirs)),rand(1,3),5)
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index aa27d4cb9d..a816f969da 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -1,4 +1,4 @@
-/mob/living/gib(no_brain, no_organs, no_bodyparts)
+/mob/living/gib(no_brain, no_organs, no_bodyparts, datum/explosion/was_explosion)
var/prev_lying = lying
if(stat != DEAD)
death(1)
@@ -6,22 +6,22 @@
if(!prev_lying)
gib_animation()
- spill_organs(no_brain, no_organs, no_bodyparts)
+ spill_organs(no_brain, no_organs, no_bodyparts, was_explosion)
if(!no_bodyparts)
- spread_bodyparts(no_brain, no_organs)
+ spread_bodyparts(no_brain, no_organs, was_explosion)
for(var/X in implants)
var/obj/item/implant/I = X
qdel(I)
- spawn_gibs(no_bodyparts)
+ spawn_gibs(no_bodyparts, null, was_explosion)
qdel(src)
/mob/living/proc/gib_animation()
return
-/mob/living/proc/spawn_gibs(with_bodyparts, atom/loc_override)
+/mob/living/proc/spawn_gibs(with_bodyparts, atom/loc_override, datum/explosion/was_explosion)
var/location = loc_override ? loc_override.drop_location() : drop_location()
if(mob_biotypes & MOB_ROBOTIC)
new /obj/effect/gibspawner/robot(location, src, get_static_viruses())
@@ -31,7 +31,7 @@
/mob/living/proc/spill_organs()
return
-/mob/living/proc/spread_bodyparts()
+/mob/living/proc/spread_bodyparts(no_brain, no_organs, datum/explosion/was_explosion)
return
/mob/living/dust(just_ash, drop_items, force)
diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
index 0d0a234afc..c9fbf6928a 100644
--- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm
@@ -783,6 +783,8 @@
value = REAGENT_VALUE_VERY_RARE
/datum/reagent/toxin/rotatium/on_mob_life(mob/living/carbon/M)
+ return ..() // until fixed - the rotations never stop
+/*
if(M.hud_used)
if(current_cycle >= 20 && current_cycle%20 == 0)
var/list/screens = list(M.hud_used.plane_masters["[FLOOR_PLANE]"], M.hud_used.plane_masters["[GAME_PLANE]"],
@@ -800,6 +802,7 @@
for(var/whole_screen in screens)
animate(whole_screen, transform = matrix(), time = 5, easing = QUAD_EASING)
..()
+*/
/datum/reagent/toxin/skewium
name = "Skewium"
diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm
index 462d4b5cb5..4c69f6bb27 100644
--- a/code/modules/vending/clothesmate.dm
+++ b/code/modules/vending/clothesmate.dm
@@ -35,6 +35,19 @@
/obj/item/clothing/under/misc/overalls = 3,
/obj/item/clothing/under/suit/sl = 3,
/obj/item/clothing/under/sweater = 3,
+ /obj/item/clothing/accessory/sweater = 3,
+ /obj/item/clothing/accessory/sweater/pink = 3,
+ /obj/item/clothing/accessory/sweater/heart = 3,
+ /obj/item/clothing/accessory/sweater/blue = 3,
+ /obj/item/clothing/accessory/sweater/nt = 3,
+ /obj/item/clothing/accessory/sweater/mint = 3,
+ /obj/item/clothing/accessory/sweater/shoulderless = 3,
+ /obj/item/clothing/accessory/sweater/flower = 3,
+ /obj/item/clothing/accessory/turtleneck = 2,
+ /obj/item/clothing/accessory/turtleneck/red = 2,
+ /obj/item/clothing/accessory/turtleneck/tactifool = 2,
+ /obj/item/clothing/accessory/turtleneck/tactifool/green = 2,
+ /obj/item/clothing/accessory/turtleneck/tactifool/blue = 2,
/obj/item/clothing/under/sweater/black = 3,
/obj/item/clothing/under/sweater/purple = 3,
/obj/item/clothing/under/sweater/green = 3,
@@ -50,6 +63,11 @@
/obj/item/clothing/under/pants/black = 4,
/obj/item/clothing/under/pants/tan = 4,
/obj/item/clothing/under/pants/track = 3,
+ /obj/item/clothing/accessory/suitjacket = 2,
+ /obj/item/clothing/accessory/suitjacket/charcoal = 2,
+ /obj/item/clothing/accessory/suitjacket/navy = 2,
+ /obj/item/clothing/accessory/suitjacket/burgundy = 2,
+ /obj/item/clothing/accessory/suitjacket/checkered = 2,
/obj/item/clothing/suit/jacket/miljacket = 5,
/obj/item/clothing/under/suit/white_on_white/skirt = 2,
/obj/item/clothing/under/rank/captain/suit/skirt = 2,
@@ -74,6 +92,12 @@
/obj/item/clothing/neck/stripedbluescarf = 3,
/obj/item/clothing/neck/stripedgreenscarf = 3,
/obj/item/clothing/accessory/waistcoat = 2,
+ /obj/item/clothing/accessory/waistcoat/red = 2,
+ /obj/item/clothing/accessory/waistcoat/grey = 2,
+ /obj/item/clothing/accessory/waistcoat/brown = 2,
+ /obj/item/clothing/accessory/waistcoat/sweatervest = 2,
+ /obj/item/clothing/accessory/waistcoat/sweatervest/blue = 2,
+ /obj/item/clothing/accessory/waistcoat/sweatervest/red = 2,
/obj/item/clothing/under/dress/skirt = 3,
/obj/item/clothing/under/dress/skirt/blue = 3,
/obj/item/clothing/under/dress/skirt/red = 3,
@@ -132,22 +156,22 @@
/obj/item/clothing/ears/headphones = 10,
/obj/item/clothing/suit/apron/purple_bartender = 4,
/obj/item/clothing/under/rank/civilian/bartender/purple = 4,
+
/* Commenting out until next Christmas or made automatic
+ /obj/item/clothing/accessory/sweater/uglyxmas = 3,
/obj/item/clothing/under/costume/christmas = 3,
/obj/item/clothing/under/costume/christmas/green = 3,
/obj/item/clothing/under/costume/christmas/croptop = 3,
/obj/item/clothing/under/costume/christmas/croptop/green = 3,
- */
/obj/item/clothing/suit/hooded/wintercoat/christmascoatr = 3,
/obj/item/clothing/suit/hooded/wintercoat/christmascoatg = 3,
/obj/item/clothing/suit/hooded/wintercoat/christmascoatrg = 3,
- /*Commenting out until next Christmas or made automatic
/obj/item/clothing/head/christmashat = 3,
/obj/item/clothing/head/christmashatg = 3,
- */
/obj/item/clothing/shoes/winterboots/christmasbootsr = 3,
/obj/item/clothing/shoes/winterboots/christmasbootsg = 3,
/obj/item/clothing/shoes/winterboots/santaboots = 3,
+ */
/obj/item/clothing/head/cowboyhat = 3,
/obj/item/clothing/head/cowboyhat/black = 3,
/obj/item/clothing/head/cowboyhat/white = 3,
@@ -161,7 +185,8 @@
/obj/item/clothing/under/costume/cheongsam/white = 3,
/obj/item/clothing/under/costume/cheongsam/red = 3,
/obj/item/storage/backpack/snail = 3)
- contraband = list(/obj/item/clothing/under/syndicate/tacticool = 3,
+ contraband = list(/obj/item/clothing/accessory/turtleneck/tactifool/syndicate = 3,
+ /obj/item/clothing/under/syndicate/tacticool = 3,
/obj/item/clothing/under/syndicate/tacticool/skirt = 3,
/obj/item/clothing/mask/balaclava = 3,
/obj/item/clothing/head/ushanka = 3,
diff --git a/code/modules/vending/kinkmate.dm b/code/modules/vending/kinkmate.dm
index 7a710007e3..c270e92798 100644
--- a/code/modules/vending/kinkmate.dm
+++ b/code/modules/vending/kinkmate.dm
@@ -12,6 +12,7 @@
/obj/item/clothing/neck/petcollar = 5,
/obj/item/clothing/neck/petcollar/choker = 5,
/obj/item/clothing/neck/petcollar/leather = 5,
+ /obj/item/clothing/neck/necklace/cowbell = 5,
/obj/item/restraints/handcuffs/fake/kinky = 5,
/obj/item/clothing/glasses/sunglasses/blindfold = 4,
/obj/item/clothing/mask/muzzle = 4,
diff --git a/html/changelog.html b/html/changelog.html
index d77b17f488..24acc8b854 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -50,6 +50,13 @@
-->
+
28 January 2021
+
silicons updated:
+
+ - colormates can now paint some mobs.
+ - 1 dev explosions shouldn't delete brains anymore
+
+
27 January 2021
ArcaneMusic, ported by Hatterhat updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index 3b1a7c119d..22e5b7b3ba 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -28839,3 +28839,7 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
timothyteakettle:
- rscadd: blobs can use the 'me' verb
- admin: adminhelps and pms only sanitize once instead of twice
+2021-01-28:
+ silicons:
+ - rscadd: colormates can now paint some mobs.
+ - bugfix: 1 dev explosions shouldn't delete brains anymore
diff --git a/html/changelogs/AutoChangeLog-pr-14067.yml b/html/changelogs/AutoChangeLog-pr-14067.yml
new file mode 100644
index 0000000000..d8388afe6f
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14067.yml
@@ -0,0 +1,22 @@
+author: "TripleShades"
+delete-after: True
+changes:
+ - bugfix: "fixes engineering secure storage being the wrong area because I fucked that up previously my bad"
+ - bugfix: "removes funny extra light switch under right surgery table in surgery oops"
+ - rscadd: "Added chairs to the corpse launch viewing area"
+ - rscadd: "Small garden plot for flowers for parity with other station Chapels"
+ - rscadd: "Plain Bible to glass tables in Chapel"
+ - rscadd: "Candles and Matchbox to glass tables in Chapel"
+ - rscadd: "More glass tables, with a chaplain figure and another spare bible."
+ - rscadd: "Bookcase to Box Chapel for parity with other station Chapels"
+ - rscadd: "Minimoog to Box Chapel as substitute for a church organ"
+ - rscadd: "Holy department sign just below Chapel
+change: Expanded the corpse launching area to feel less congested
+change: Added windows to the corpse launch so you can look inside I guess?
+change: Moved flowers and burial garments to the corner next to the corpse launcher
+change: Box Chaplain's office door is moved over one
+change: Confessional is now connected to Chaplain's office for parity with other station Chapels
+change: Moved coffins over to old confessional location
+change: Box Chapel now has pews instead of stools
+change: Box Chapel Confessional is now lit instead of being nearly pitch black
+remove: Two coffins from Chapel"
diff --git a/html/changelogs/AutoChangeLog-pr-14093.yml b/html/changelogs/AutoChangeLog-pr-14093.yml
new file mode 100644
index 0000000000..370bb552e5
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14093.yml
@@ -0,0 +1,4 @@
+author: "timothyteakettle"
+delete-after: True
+changes:
+ - rscadd: "you can add custom names and descriptions to item's on the loadout now"
diff --git a/html/changelogs/AutoChangeLog-pr-14142.yml b/html/changelogs/AutoChangeLog-pr-14142.yml
new file mode 100644
index 0000000000..a2a2f6ea9d
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14142.yml
@@ -0,0 +1,4 @@
+author: "zeroisthebiggay"
+delete-after: True
+changes:
+ - rscadd: "roundstart aesthetic sterile masks and roundstart paper masks"
diff --git a/html/changelogs/AutoChangeLog-pr-14146.yml b/html/changelogs/AutoChangeLog-pr-14146.yml
new file mode 100644
index 0000000000..7d6159d930
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14146.yml
@@ -0,0 +1,6 @@
+author: "zeroisthebiggay"
+delete-after: True
+changes:
+ - rscadd: "more accessory slot items"
+ - rscadd: "cowbell necklace happy 2021"
+ - rscadd: "shibari ropes & torn pantyhose"
diff --git a/html/changelogs/AutoChangeLog-pr-14147.yml b/html/changelogs/AutoChangeLog-pr-14147.yml
new file mode 100644
index 0000000000..a7b7e31c16
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14147.yml
@@ -0,0 +1,4 @@
+author: "timothyteakettle"
+delete-after: True
+changes:
+ - bugfix: "the miner bedsheet will now increment its progress when you redeem points from the ORM"
diff --git a/html/changelogs/AutoChangeLog-pr-14151.yml b/html/changelogs/AutoChangeLog-pr-14151.yml
new file mode 100644
index 0000000000..dc38260567
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14151.yml
@@ -0,0 +1,4 @@
+author: "MrJWhit"
+delete-after: True
+changes:
+ - tweak: "Ported the QM, Captain, CMO, and HoS cloaks from beestation."
diff --git a/html/changelogs/AutoChangeLog-pr-14157.yml b/html/changelogs/AutoChangeLog-pr-14157.yml
new file mode 100644
index 0000000000..33778b7415
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14157.yml
@@ -0,0 +1,4 @@
+author: "MrJWhit"
+delete-after: True
+changes:
+ - rscdel: "Removes excess air alarms from boxstation"
diff --git a/icons/mob/clothing/accessories.dmi b/icons/mob/clothing/accessories.dmi
index 743ed03f48..96308a6e70 100644
Binary files a/icons/mob/clothing/accessories.dmi and b/icons/mob/clothing/accessories.dmi differ
diff --git a/icons/mob/clothing/neck.dmi b/icons/mob/clothing/neck.dmi
index 084a2c3649..df1037b8fa 100644
Binary files a/icons/mob/clothing/neck.dmi and b/icons/mob/clothing/neck.dmi differ
diff --git a/icons/mob/clothing/underwear.dmi b/icons/mob/clothing/underwear.dmi
index 913bbf8830..71461e21e8 100644
Binary files a/icons/mob/clothing/underwear.dmi and b/icons/mob/clothing/underwear.dmi differ
diff --git a/icons/mob/hair.dmi b/icons/mob/hair.dmi
index 6dfa78fcff..278c5de311 100644
Binary files a/icons/mob/hair.dmi and b/icons/mob/hair.dmi differ
diff --git a/icons/obj/clothing/accessories.dmi b/icons/obj/clothing/accessories.dmi
index 510adc97b4..3731c9e706 100644
Binary files a/icons/obj/clothing/accessories.dmi and b/icons/obj/clothing/accessories.dmi differ
diff --git a/icons/obj/clothing/cloaks.dmi b/icons/obj/clothing/cloaks.dmi
index cc5f4f3392..7ea22d34bc 100644
Binary files a/icons/obj/clothing/cloaks.dmi and b/icons/obj/clothing/cloaks.dmi differ
diff --git a/icons/obj/clothing/neck.dmi b/icons/obj/clothing/neck.dmi
index c4c9c94f48..d7e0c9c24b 100644
Binary files a/icons/obj/clothing/neck.dmi and b/icons/obj/clothing/neck.dmi differ
diff --git a/modular_citadel/code/modules/client/loadout/_loadout.dm b/modular_citadel/code/modules/client/loadout/_loadout.dm
index ef72daed2d..7d2a999c24 100644
--- a/modular_citadel/code/modules/client/loadout/_loadout.dm
+++ b/modular_citadel/code/modules/client/loadout/_loadout.dm
@@ -53,7 +53,7 @@ GLOBAL_LIST_EMPTY(loadout_whitelist_ids)
var/path //item-to-spawn path
var/cost = 1 //normally, each loadout costs a single point.
var/geargroupID //defines the ID that the gear inherits from the config
- var/loadout_flags = 0
+ var/loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION
var/list/loadout_initial_colors = list()
//NEW DONATOR SYTSEM STUFF
diff --git a/modular_citadel/code/modules/client/loadout/mask.dm b/modular_citadel/code/modules/client/loadout/mask.dm
index 9468c9303d..576b29cddc 100644
--- a/modular_citadel/code/modules/client/loadout/mask.dm
+++ b/modular_citadel/code/modules/client/loadout/mask.dm
@@ -20,3 +20,14 @@
path = /obj/item/clothing/mask/gas
cost = 2
restricted_roles = list("Chief Engineer", "Atmospheric Technician", "Station Engineer") //*shrug
+
+/datum/gear/mask/sterile
+ name = "Aesthetic sterile mask"
+ path = /obj/item/clothing/mask/surgical/aesthetic
+ cost = 2
+
+/datum/gear/mask/paper
+ name = "Paper mask"
+ path = /obj/item/clothing/mask/paper
+ cost = 2
+
diff --git a/modular_citadel/code/modules/client/loadout/neck.dm b/modular_citadel/code/modules/client/loadout/neck.dm
index 7c3c11f25c..300b98fbe9 100644
--- a/modular_citadel/code/modules/client/loadout/neck.dm
+++ b/modular_citadel/code/modules/client/loadout/neck.dm
@@ -30,6 +30,10 @@
name = "Choker"
path = /obj/item/clothing/neck/petcollar/choker
+/datum/gear/neck/cowbell
+ name = "Cowbell collar"
+ path = /obj/item/clothing/neck/necklace/cowbell
+
/datum/gear/neck/scarf
name = "White scarf"
subcategory = LOADOUT_SUBCATEGORY_NECK_SCARVES
@@ -86,7 +90,7 @@
/datum/gear/neck/polycloak
name = "Polychromatic Cloak"
path = /obj/item/clothing/neck/cloak/polychromic
- loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
+ loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#FFFFFF", "#808080")
/datum/gear/neck/altpolycloak
diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm
index 7c21ed84d0..f7ef891104 100644
--- a/modular_citadel/code/modules/client/loadout/suit.dm
+++ b/modular_citadel/code/modules/client/loadout/suit.dm
@@ -101,7 +101,7 @@
name = "Polychromic winter coat"
path = /obj/item/clothing/suit/hooded/wintercoat/polychromic
cost = 4 //too many people with neon green coats is hard on the eyes
- loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
+ loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#6A6964", "#C4B8A6", "#0000FF")
/datum/gear/suit/coat/med
diff --git a/modular_citadel/code/modules/client/loadout/uniform.dm b/modular_citadel/code/modules/client/loadout/uniform.dm
index b76e223f25..303783e1c5 100644
--- a/modular_citadel/code/modules/client/loadout/uniform.dm
+++ b/modular_citadel/code/modules/client/loadout/uniform.dm
@@ -47,7 +47,7 @@
/datum/gear/uniform/maidcostume/polychromic
name = "Polychromic maid costume"
path = /obj/item/clothing/under/rank/civilian/janitor/maid/polychromic
- loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
+ loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#000000")
/datum/gear/uniform/mailmanuniform
@@ -229,49 +229,49 @@
name = "Polychromic Jumpsuit"
path = /obj/item/clothing/under/misc/polyjumpsuit
cost = 2
- loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
+ loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#808080", "#353535")
/datum/gear/uniform/skirt/poly
name = "Polychromic Jumpskirt"
path = /obj/item/clothing/under/dress/skirt/polychromic
cost = 2
- loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
+ loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#F08080", "#808080")
/datum/gear/uniform/suit/poly
name = "Polychromic Button-up Shirt"
path = /obj/item/clothing/under/misc/poly_shirt
cost = 3
- loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
+ loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#353535", "#353535")
/datum/gear/uniform/skirt/poly/pleated
name = "Polychromic Pleated Sweaterskirt"
path = /obj/item/clothing/under/dress/skirt/polychromic/pleated
cost = 3
- loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
+ loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#8CC6FF", "#808080", "#FF3535")
/datum/gear/uniform/polykilt
name = "Polychromic Kilt"
path = /obj/item/clothing/under/costume/kilt/polychromic
cost = 3
- loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
+ loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#F08080")
/datum/gear/uniform/shorts/poly
name = "Polychromic Shorts"
path = /obj/item/clothing/under/misc/polyshorts
cost = 3
- loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
+ loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#353535", "#808080", "#808080")
/datum/gear/uniform/shorts/poly/athletic
name = "Polychromic Athletic Shorts"
path = /obj/item/clothing/under/shorts/polychromic
cost = 2
- loadout_flags = LOADOUT_CAN_COLOR_POLYCHROMIC
+ loadout_flags = LOADOUT_CAN_NAME | LOADOUT_CAN_DESCRIPTION | LOADOUT_CAN_COLOR_POLYCHROMIC
loadout_initial_colors = list("#FFFFFF", "#F08080")
/datum/gear/uniform/hopcasual
diff --git a/modular_sand/code/modules/client/loadout/boxers.dm b/modular_sand/code/modules/client/loadout/boxers.dm
index 1ba7ea6053..02aed40102 100644
--- a/modular_sand/code/modules/client/loadout/boxers.dm
+++ b/modular_sand/code/modules/client/loadout/boxers.dm
@@ -9,130 +9,104 @@
/datum/gear/underwear/jockstrap
name = "Jockstrap"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/jockstrap
/datum/gear/underwear/mankini
name = "Mankini"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/mankini
/datum/gear/underwear/boxers
name = "Boxers"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/boxers
/datum/gear/underwear/boxers/heart
name = "Heart Boxers"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/boxers/heart
/datum/gear/underwear/boxers/uk
name = "UK Boxers"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/boxers/uk
/datum/gear/underwear/boxers/usa
name = "USA Boxers"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/boxers/usa
/datum/gear/underwear/boxers/commie
name = "Heart Boxers"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/boxers/commie
/datum/gear/underwear/boxers/striped
name = "Striped Boxers"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/boxers/striped
/datum/gear/underwear/boxers/bee_shorts
name = "Bee Shorts"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/boxers/bee_shorts
/datum/gear/underwear/boxers/boxer_briefs
name = "Boxer Briefs"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/boxer_briefs
/datum/gear/underwear/boxers/panties
name = "Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties
/datum/gear/underwear/boxers/panties/alt
name = "Panties (alt)"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/alt
/datum/gear/underwear/boxers/panties/slim
name = "Slim Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/slim
/datum/gear/underwear/boxers/panties/thin
name = "Thin Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/thin
/datum/gear/underwear/boxers/panties/neko
name = "Neko Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/neko
/datum/gear/underwear/boxers/panties/thong
name = "Thong"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/thong
/datum/gear/underwear/boxers/panties/thong/babydoll
name = "Babydoll Thong"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/thong/babydoll
/datum/gear/underwear/boxers/panties/swimming
name = "Swimming Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/swimming
/datum/gear/underwear/boxers/panties/kinky
name = "Kinky Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/kinky
/datum/gear/underwear/boxers/panties/beekini
name = "Bee-kini Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/beekini
/datum/gear/underwear/boxers/panties/usa
name = "USA Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/usa
/datum/gear/underwear/boxers/panties/commie
name = "Commie Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/commie
/datum/gear/underwear/boxers/panties/uk
name = "UK Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/uk
/datum/gear/underwear/boxers/panties/striped
name = "Striped Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/striped
/datum/gear/underwear/boxers/panties/fishnet
name = "Fishnet Panties"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/panties/fishnet
/datum/gear/underwear/boxers/long
name = "Long Boxers"
- has_colors = TRUE
path = /obj/item/clothing/underwear/briefs/boxers/long
diff --git a/modular_sand/code/modules/client/loadout/shirts.dm b/modular_sand/code/modules/client/loadout/shirts.dm
index 116d2dede4..13b71795d7 100644
--- a/modular_sand/code/modules/client/loadout/shirts.dm
+++ b/modular_sand/code/modules/client/loadout/shirts.dm
@@ -9,370 +9,304 @@
/datum/gear/shirt/bra
name = "Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra
/datum/gear/shirt/bra/alt
name = "Bra (alt)"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/alt
/datum/gear/shirt/bra/thin
name = "Thin Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/thin
/datum/gear/shirt/bra/sports
name = "Sports Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/sports
/datum/gear/shirt/bra/sports/alt
name = "Sports Bra (alt)"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/sports/alt
/datum/gear/shirt/bra/strapless
name = "Strapless Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/strapless
/datum/gear/shirt/bra/strapless/alt
name = "Strapless Bra (alt)"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/strapless/alt
/datum/gear/shirt/bra/halterneck
name = "Halterneck Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/halterneck
/datum/gear/shirt/bra/neko
name = "Neko Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/neko
/datum/gear/shirt/bra/swimming
name = "Swimming Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/swimming
/datum/gear/shirt/bra/swimming/alt
name = "Swimming Bra (alt)"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/swimming/alt
/datum/gear/shirt/bra/tubetop
name = "Tubetop Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/tubetop
/datum/gear/shirt/bra/babydoll
name = "Babydoll Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/babydoll
/datum/gear/shirt/bra/kinky
name = "Kinky Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/kinky
/datum/gear/shirt/bra/beekini
name = "Beekini Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/beekini
/datum/gear/shirt/bra/usa
name = "USA Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/usa
/datum/gear/shirt/bra/commie
name = "Commie Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/commie
/datum/gear/shirt/bra/uk
name = "UK Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/uk
/datum/gear/shirt/bra/striped
name = "Striped Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/striped
/datum/gear/shirt/bra/bikini
name = "Bikini Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/bikini
/datum/gear/shirt/bra/bikini/blue
name = "Bikini Bra (Blue)"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/bikini/blue
/datum/gear/shirt/bra/bikini/black
name = "Bikini Bra (Black)"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/bikini/black
/datum/gear/shirt/bra/fishnet
name = "Fishnet Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/fishnet
/datum/gear/shirt/bra/fishnet/sleeves
name = "Sleeved Fishnet Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/fishnet/sleeves
/datum/gear/shirt/bra/fishnet/sleeves/gloves
name = "Sleeved & Gloved Fishnet Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/fishnet/sleeves/gloves
/datum/gear/shirt/bra/bikini
name = "Bikini Bra"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bra/bikini
/datum/gear/shirt/shortsleeve
name = "Shortsleeved Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/shortsleeve
/datum/gear/shirt/polo
name = "Polo Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/polo
/datum/gear/shirt/tanktop
name = "Tanktop Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/tanktop
/datum/gear/shirt/tanktop/alt
name = "Tanktop Shirt (alt)"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/tanktop/alt
/datum/gear/shirt/tanktop/striped
name = "Striped Tanktop Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/tanktop/striped
/datum/gear/shirt/tanktop/rainbow
name = "Rainbow Tanktop Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/tanktop/rainbow
/datum/gear/shirt/tanktop/sun
name = "Sun Tanktop Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/tanktop/sun
/datum/gear/shirt/tanktop/midriff
name = "Midriff Tanktop Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/tanktop/midriff
/datum/gear/shirt/tanktop/midriff/alt
name = "Midriff Tanktop Shirt (alt)"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/tanktop/midriff/alt
/datum/gear/shirt/lover
name = "Lover Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/lover
/datum/gear/shirt/ian
name = "Ian Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/ian
/datum/gear/shirt/uk
name = "UK Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/uk
/datum/gear/shirt/ilovent
name = "I Love NT Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/ilovent
/datum/gear/shirt/peace
name = "Peace Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/peace
/datum/gear/shirt/band
name = "Band Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/band
/datum/gear/shirt/pogoman
name = "Pogoman Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/pogoman
/datum/gear/shirt/lover
name = "Matroska Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/matroska
/datum/gear/shirt/sportgreen
name = "Green Sport Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/sportgreen
/datum/gear/shirt/sportblue
name = "Blue Sport Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/sportblue
/datum/gear/shirt/sportred
name = "Red Sport Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/sportred
/datum/gear/shirt/ss13
name = "SS13 Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/ss13
/datum/gear/shirt/question
name = "Question Mark Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/question
/datum/gear/shirt/skull
name = "Skull Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/skull
/datum/gear/shirt/commie
name = "Commie Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/commie
/datum/gear/shirt/striped
name = "Striped Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/striped
/datum/gear/shirt/meat
name = "Meat Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/meat
/datum/gear/shirt/tiedye
name = "Tie Dye Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/tiedye
/datum/gear/shirt/redjersey
name = "Red Jersey Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/redjersey
/datum/gear/shirt/bluejersey
name = "Blue Jersey Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bluejersey
/datum/gear/shirt/bowlingred
name = "Red Bowling Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bowling
/datum/gear/shirt/bowlingpink
name = "Pink Bowling Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bowling/pink
/datum/gear/shirt/bowlingcyan
name = "Cyan Bowling Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bowling/cyan
/datum/gear/shirt/bowlinggrey
name = "Grey Bowling Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bowling/grey
/datum/gear/shirt/alien
name = "Postal Dude Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/alien
/datum/gear/shirt/clown
name = "Clown Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/clown
/datum/gear/shirt/bee
name = "Bee Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/bee
/datum/gear/shirt/long
name = "Longsleeved Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/long
/datum/gear/shirt/long/striped
name = "Striped Longsleeved Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/long/striped
/datum/gear/shirt/long/striped/blue
name = "Blue Striped Longsleeved Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/long/striped/blue
/datum/gear/shirt/usa
name = "USA Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/usa
/datum/gear/shirt/cowboy
name = "Black Cowboy Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/cowboy
/datum/gear/shirt/cowboy/white
name = "White Cowboy Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/cowboy/white
/datum/gear/shirt/cowboy/navy
name = "Navy Cowboy Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/cowboy/navy
/datum/gear/shirt/cowboy/red
name = "Red Cowboy Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/cowboy/red
/datum/gear/shirt/cowboy/short
name = "Black Shortsleeved Cowboy Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/cowboy/short
/datum/gear/shirt/cowboy/short/white
name = "White Shortsleeved Cowboy Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/cowboy/short/white
/datum/gear/shirt/cowboy/short/navy
name = "Navy Shortsleeved Cowboy Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/cowboy/short/navy
/datum/gear/shirt/cowboy/short/red
name = "Red Shortsleeved Cowboy Shirt"
- has_colors = TRUE
path = /obj/item/clothing/underwear/shirt/cowboy/short/red
+
+/datum/gear/shirt/top/shibari
+ name = "Shibari Ropes"
+ path = /obj/item/clothing/underwear/shirt/top/shibari
+
+/datum/gear/shirt/top/shibari_sleeved
+ name = "Shibari Ropes - sleeves"
+ path = /obj/item/clothing/underwear/shirt/top/shibari_sleeved
diff --git a/modular_sand/code/modules/client/loadout/socks.dm b/modular_sand/code/modules/client/loadout/socks.dm
index dc3a7f0988..c53dad5e34 100644
--- a/modular_sand/code/modules/client/loadout/socks.dm
+++ b/modular_sand/code/modules/client/loadout/socks.dm
@@ -9,180 +9,149 @@
/datum/gear/socks/bee
name = "Bee Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/bee
/datum/gear/socks/candycane
name = "Candycane Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/candycane
/datum/gear/socks/candycane
name = "Green Candycane Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/candycane/green
/datum/gear/socks/christmas
name = "Christmas Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/christmas
/datum/gear/socks/knee
name = "Knee Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/knee
/datum/gear/socks/knee/bee
name = "Bee Knee Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/knee/bee
/datum/gear/socks/knee/candycane
name = "Candycane Knee Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/knee/candycane
/datum/gear/socks/knee/candycane/green
name = "Green Candycane Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/knee/candycane/green
/datum/gear/socks/knee/commie
name = "Commie Knee Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/knee/commie
/datum/gear/socks/knee/rainbow
name = "Rainbow Knee Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/knee/rainbow
/datum/gear/socks/knee/striped
name = "Striped Knee Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/knee/striped
/datum/gear/socks/knee/thin
name = "Thin Knee Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/knee/thin
/datum/gear/socks/knee/uk
name = "UK Knee Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/knee/uk
/datum/gear/socks/pantyhose
name = "Pantyhose"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/pantyhose
/datum/gear/socks/short
name = "Short Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/short
/datum/gear/socks/thigh
name = "Thigh High Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh
/datum/gear/socks/thigh/bee
name = "Thigh High Bee Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/bee
/datum/gear/socks/thigh/candycane
name = "Thigh High Candycane Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/candycane
/datum/gear/socks/thigh/candycane/green
name = "Thigh High Green Candycane Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/candycane/green
/datum/gear/socks/thigh/christmas
name = "Thigh High Christmas Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/christmas
/datum/gear/socks/thigh/commie
name = "Thigh High Commie Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/commie
/datum/gear/socks/thigh/rainbow
name = "Thigh High Rainbow Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/rainbow
/datum/gear/socks/thigh/stockings
name = "Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/stockings
/datum/gear/socks/thigh/stockings/blue
name = "Blue Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/stockings/blue
/datum/gear/socks/thigh/stockings/cyan
name = "Cyan Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/stockings/cyan
/datum/gear/socks/thigh/stockings/fishnet
name = "Fishnet Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/stockings/fishnet
/datum/gear/socks/thigh/stockings/green
name = "Green Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/stockings/green
/datum/gear/socks/thigh/stockings/orange
name = "Orange Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/stockings/orange
/datum/gear/socks/thigh/stockings/pinkish
name = "Pinkish Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/stockings/pink2
/datum/gear/socks/thigh/stockings/purple
name = "Purple Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/stockings/purple
/datum/gear/socks/thigh/stockings
name = "Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/stockings/yellow
/datum/gear/socks/thigh/striped
name = "Thigh High StripedSocks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/striped
/datum/gear/socks/thigh/thin
name = "Thigh High Thin Socks"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/thin
/datum/gear/socks/thigh/uk
name = "Thigh High UK Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/uk
/datum/gear/socks/thigh/usa
name = "Thigh High USA Stockings"
- has_colors = TRUE
path = /obj/item/clothing/underwear/socks/thigh/usa
+
+/datum/gear/socks/pantyhose_ripped
+ name = "Pantyhose - Ripped"
+ path = /obj/item/clothing/underwear/socks/pantyhose_ripped
diff --git a/modular_sand/code/modules/clothing/underwear/shirts.dm b/modular_sand/code/modules/clothing/underwear/shirts.dm
index 984d36cff5..129a5d011f 100644
--- a/modular_sand/code/modules/clothing/underwear/shirts.dm
+++ b/modular_sand/code/modules/clothing/underwear/shirts.dm
@@ -331,3 +331,15 @@
/obj/item/clothing/underwear/shirt/cowboy/short/red
name = "short sleeved red cowboy shirt"
icon_state = "undershirt_cowboy_short_red"
+
+/obj/item/clothing/underwear/shirt/top/shibari
+ name = "Shibari Ropes"
+ body_parts_covered = null
+ icon = 'icons/mob/clothing/underwear.dmi'
+ icon_state = "shibari"
+
+/obj/item/clothing/underwear/shirt/top/shibari_sleeved
+ name = "Shibari Ropes - sleeves"
+ body_parts_covered = ARMS
+ icon = 'icons/mob/clothing/underwear.dmi'
+ icon_state = "shibari_sleeves"
diff --git a/modular_sand/code/modules/clothing/underwear/socks.dm b/modular_sand/code/modules/clothing/underwear/socks.dm
index 1205939981..043009dfe2 100644
--- a/modular_sand/code/modules/clothing/underwear/socks.dm
+++ b/modular_sand/code/modules/clothing/underwear/socks.dm
@@ -175,3 +175,9 @@
body_parts_covered = FEET | LEGS | GROIN
icon_state = "socks_pantyhose"
mutantrace_variation = STYLE_DIGITIGRADE
+
+/obj/item/clothing/underwear/socks/pantyhose_ripped
+ name = "Pantyhose - Ripped"
+ body_parts_covered = FEET
+ icon = 'icons/mob/clothing/underwear.dmi'
+ icon_state = "pantyhose_ripped"