diff --git a/_maps/map_files/generic/City_of_Cogs.dmm b/_maps/map_files/generic/City_of_Cogs.dmm
index e67a829221..889abe66c3 100644
--- a/_maps/map_files/generic/City_of_Cogs.dmm
+++ b/_maps/map_files/generic/City_of_Cogs.dmm
@@ -212,11 +212,8 @@
/turf/open/indestructible/reebe_void,
/area/reebe)
"aR" = (
-/obj/effect/clockwork/servant_blocker{
- dir = 1
- },
-/obj/structure/lattice/clockwork,
-/turf/open/indestructible/reebe_void,
+/obj/effect/landmark/city_of_cogs,
+/turf/open/indestructible/clock_spawn_room,
/area/reebe/city_of_cogs)
"aS" = (
/obj/effect/clockwork/servant_blocker{
@@ -242,17 +239,20 @@
/turf/open/indestructible/reebe_void/spawning/lattices,
/area/reebe)
"aX" = (
-/obj/effect/landmark/city_of_cogs,
+/obj/structure/table/reinforced/brass,
+/obj/item/clockwork/component/belligerent_eye,
/turf/open/indestructible/clock_spawn_room,
/area/reebe/city_of_cogs)
"aY" = (
-/obj/structure/table/reinforced/brass,
-/obj/item/clockwork/component/belligerent_eye/blind_eye,
-/turf/open/indestructible/clock_spawn_room,
-/area/reebe/city_of_cogs)
+/obj/effect/clockwork/servant_blocker{
+ dir = 1
+ },
+/obj/structure/lattice/clockwork,
+/turf/open/indestructible/reebe_void,
+/area/reebe)
"aZ" = (
/obj/structure/table/reinforced/brass,
-/obj/item/clockwork/component/belligerent_eye,
+/obj/item/clockwork/component/belligerent_eye/blind_eye,
/turf/open/indestructible/clock_spawn_room,
/area/reebe/city_of_cogs)
"ba" = (
@@ -262,32 +262,32 @@
/area/reebe/city_of_cogs)
"bb" = (
/obj/structure/table/reinforced/brass,
-/obj/item/clockwork/component/replicant_alloy,
+/obj/item/clockwork/component/geis_capacitor,
/turf/open/indestructible/clock_spawn_room,
/area/reebe/city_of_cogs)
"bc" = (
/obj/structure/table/reinforced/brass,
-/obj/item/clockwork/component/replicant_alloy/smashed_anima_fragment,
+/obj/item/clockwork/component/geis_capacitor/antennae,
/turf/open/indestructible/clock_spawn_room,
/area/reebe/city_of_cogs)
"bd" = (
/obj/structure/table/reinforced/brass,
-/obj/item/clockwork/component/replicant_alloy/replication_plate,
+/obj/item/clockwork/component/geis_capacitor/fallen_armor,
/turf/open/indestructible/clock_spawn_room,
/area/reebe/city_of_cogs)
"be" = (
/obj/structure/table/reinforced/brass,
-/obj/item/clockwork/component/geis_capacitor/antennae,
+/obj/item/clockwork/component/hierophant_ansible,
/turf/open/indestructible/clock_spawn_room,
/area/reebe/city_of_cogs)
"bf" = (
/obj/structure/table/reinforced/brass,
-/obj/item/clockwork/component/geis_capacitor/fallen_armor,
+/obj/item/clockwork/component/hierophant_ansible/obelisk,
/turf/open/indestructible/clock_spawn_room,
/area/reebe/city_of_cogs)
"bg" = (
/obj/structure/table/reinforced/brass,
-/obj/item/clockwork/component/geis_capacitor,
+/obj/item/clockwork/component/replicant_alloy,
/turf/open/indestructible/clock_spawn_room,
/area/reebe/city_of_cogs)
"bh" = (
@@ -304,6 +304,51 @@
/obj/structure/destructible/clockwork/eminence_spire,
/turf/open/floor/clockwork/reebe,
/area/reebe/city_of_cogs)
+"bk" = (
+/obj/structure/table/reinforced/brass,
+/obj/item/clockwork/component/replicant_alloy/replication_plate,
+/turf/open/indestructible/clock_spawn_room,
+/area/reebe/city_of_cogs)
+"bl" = (
+/obj/structure/table/reinforced/brass,
+/obj/item/clockwork/component/replicant_alloy/smashed_anima_fragment,
+/turf/open/indestructible/clock_spawn_room,
+/area/reebe/city_of_cogs)
+"bm" = (
+/obj/structure/table/reinforced/brass,
+/obj/item/clockwork/component/vanguard_cogwheel,
+/turf/open/indestructible/clock_spawn_room,
+/area/reebe/city_of_cogs)
+"bn" = (
+/obj/structure/table/reinforced/brass,
+/obj/item/clockwork/component/vanguard_cogwheel/onyx_prism,
+/turf/open/indestructible/clock_spawn_room,
+/area/reebe/city_of_cogs)
+"bo" = (
+/obj/structure/window/reinforced/clockwork/fulltile,
+/obj/structure/grille/ratvar,
+/turf/open/indestructible/clock_spawn_room,
+/area/reebe/city_of_cogs)
+"bp" = (
+/obj/structure/window/reinforced/clockwork/fulltile,
+/turf/open/indestructible/clock_spawn_room,
+/area/reebe/city_of_cogs)
+"bu" = (
+/obj/structure/table/reinforced/brass,
+/turf/open/indestructible/clock_spawn_room,
+/area/reebe/city_of_cogs)
+"bw" = (
+/obj/structure/chair/brass{
+ dir = 8
+ },
+/turf/open/indestructible/clock_spawn_room,
+/area/reebe/city_of_cogs)
+"bx" = (
+/obj/structure/chair/brass{
+ dir = 4
+ },
+/turf/open/indestructible/clock_spawn_room,
+/area/reebe/city_of_cogs)
(1,1,1) = {"
aa
@@ -26909,7 +26954,7 @@ ab
ab
ab
ab
-aa
+ab
aa
aa
aa
@@ -27166,8 +27211,8 @@ ab
ab
ab
ab
-aa
-aa
+ab
+ab
aa
aa
aa
@@ -27423,9 +27468,9 @@ ab
ab
ab
ab
-aa
-aa
-aa
+ab
+ab
+ab
aa
aa
aa
@@ -27680,10 +27725,10 @@ ab
ab
ab
ab
-aa
-aa
-aa
-aa
+ab
+ab
+ab
+ab
aa
aa
aa
@@ -27923,25 +27968,25 @@ ab
ab
ab
ab
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ab
ab
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -28166,40 +28211,40 @@ ab
ab
ab
ab
-ab
-ab
aF
+aF
+aY
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ah
+ah
+bo
+bo
+bo
+bo
+bo
+bo
+bo
+ah
+ah
+ae
+ae
+ae
ab
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -28424,39 +28469,39 @@ aF
aF
aF
aF
-aF
-aF
-ae
-ae
-ae
+aG
+aS
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+ah
+ah
+ah
ae
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -28682,38 +28727,38 @@ aG
aG
aG
aG
-aR
-ah
-ah
-ah
-ah
-ah
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+aS
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+aU
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+bo
+aX
+bo
+ag
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -28940,37 +28985,37 @@ aj
aj
aj
aS
+bw
+bw
+bw
+bw
+bw
+bw
+bw
+bw
+bw
+bw
+bw
+bw
+aU
aT
aT
+aR
+aT
+aR
+aT
+aR
aT
aT
-ah
-ah
-ai
-ai
-ai
-ai
-ai
-ah
-ah
+bo
+aZ
+bo
+ag
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -29201,7 +29246,6 @@ aT
aT
aT
aT
-ah
aT
aT
aT
@@ -29209,15 +29253,22 @@ aT
aT
aT
aT
-ah
+aT
+bo
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+bo
+ba
+bo
ag
ae
-ab
-ab
-ab
-ab
-ab
-ae
bi
ab
ab
@@ -29339,12 +29390,6 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
"}
(114,1,1) = {"
aa
@@ -29458,7 +29503,6 @@ aT
aT
aT
aT
-aU
aT
aT
aT
@@ -29466,15 +29510,22 @@ aT
aT
aT
aT
-ah
-ah
-ah
-ab
-ab
-ab
-ab
-ab
-ab
+aT
+aV
+aT
+aT
+aR
+aT
+aR
+aT
+aR
+aT
+aT
+bo
+bb
+bo
+ag
+ae
ab
ae
ac
@@ -29596,12 +29647,6 @@ aa
aa
aa
aa
-aa
-aa
-aa
-aa
-aa
-aa
"}
(115,1,1) = {"
aa
@@ -29715,33 +29760,33 @@ aT
aT
aT
aT
-aU
aT
aT
-aX
-aX
-aX
aT
aT
-ai
-aY
-ai
+aT
+aT
+aT
+aT
+bo
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+bo
+bc
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -29972,33 +30017,33 @@ aT
aT
aT
aT
-aV
aT
aT
-aX
-aX
-aX
aT
aT
-ai
-aZ
-ai
+aT
+aT
+aT
+aT
+aU
+aT
+aT
+aR
+aT
+aR
+aT
+aR
+aT
+aT
+bo
+bd
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -30229,33 +30274,33 @@ aT
aT
aT
aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
aU
aT
aT
-aX
-aX
-aX
aT
aT
-ai
-ba
-ai
+aT
+aT
+aT
+aT
+aT
+bo
+be
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -30486,7 +30531,17 @@ aT
aT
aT
aT
-aU
+aT
+aT
+aT
+aT
+aT
+aT
+bp
+bp
+ah
+aT
+aT
aT
aT
aT
@@ -30497,22 +30552,12 @@ aT
ah
ah
ah
+ae
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -30743,33 +30788,33 @@ aT
aT
aT
aT
+aT
+aT
+aT
+aT
+aT
+aT
+bp
+bg
ah
-aT
-aT
-aT
-aT
-aT
-aT
-aT
ah
-ag
+bo
+bo
+bo
+bo
+bo
+bo
+bo
+ah
+ah
+ae
+ae
ae
ab
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -31000,33 +31045,33 @@ aT
aT
aT
aT
+aT
+aT
+aT
+aT
+aT
+aT
+bp
+bp
+ah
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
ah
ah
-aU
-aU
-aV
-aU
-aU
ah
-ah
-ag
+ae
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -31257,7 +31302,6 @@ aT
aT
aT
aT
-ah
aT
aT
aT
@@ -31265,25 +31309,26 @@ aT
aT
aT
aT
-ah
+aT
+aU
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+bo
+bf
+bo
ag
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -31514,33 +31559,33 @@ aT
aT
aT
aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
aU
aT
aT
+aR
+aT
+aR
+aT
+aR
aT
aT
-aT
-aT
-aT
-ah
-ah
-ah
+bo
+bg
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -31771,33 +31816,33 @@ aT
aT
aT
aT
-aU
aT
aT
-aX
-aX
-aX
+aT
+aT
+aT
+aT
aT
aT
ai
-bb
-ai
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+bo
+bk
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -32028,33 +32073,33 @@ aT
aT
aT
aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
aV
aT
aT
-aX
-aX
-aX
+aR
+aT
+aR
+aT
+aR
aT
aT
-ai
-bc
-ai
+bo
+bl
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -32285,33 +32330,33 @@ aT
aT
aT
aT
-aU
aT
aT
-aX
-aX
-aX
+aT
+aT
+aT
+aT
aT
aT
ai
-bd
-ai
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+bo
+bm
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -32542,33 +32587,33 @@ aT
aT
aT
aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
aU
aT
aT
+aR
+aT
+aR
+aT
+aR
aT
aT
-aT
-aT
-aT
-ah
-ah
-ah
+bo
+bn
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -32799,7 +32844,6 @@ aT
aT
aT
aT
-ah
aT
aT
aT
@@ -32807,25 +32851,26 @@ aT
aT
aT
aT
-ah
+aT
+aU
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+bo
+aX
+bo
ag
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -33056,33 +33101,33 @@ aT
aT
aT
aT
+aT
+aT
+aT
+aT
+aT
+aT
+bp
+bp
+ah
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
ah
ah
-aU
-aU
-aV
-aU
-aU
ah
-ah
-ag
+ae
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -33313,16 +33358,25 @@ aT
aT
aT
aT
+aT
+aT
+aT
+aT
+aT
+aT
+bp
+bk
+ah
+ah
+bo
+bo
+bo
+bo
+bo
+bo
+bo
ah
-aT
-aT
-aT
-aT
-aT
-aT
-aT
ah
-ag
ae
ab
ab
@@ -33331,15 +33385,6 @@ ab
ab
ab
ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -33570,7 +33615,17 @@ aT
aT
aT
aT
-aU
+aT
+aT
+aT
+aT
+aT
+aT
+bp
+bp
+ah
+aT
+aT
aT
aT
aT
@@ -33581,22 +33636,12 @@ aT
ah
ah
ah
+ae
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -33827,33 +33872,33 @@ aT
aT
aT
aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
aU
aT
aT
-aX
-aX
-aX
aT
aT
-ai
-be
-ai
+aT
+aT
+aT
+aT
+aT
+bo
+aZ
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -34084,33 +34129,33 @@ aT
aT
aT
aT
-aV
aT
aT
-aX
-aX
-aX
aT
aT
-ai
-bf
-ai
+aT
+aT
+aT
+aT
+aU
+aT
+aT
+aR
+aT
+aR
+aT
+aR
+aT
+aT
+bo
+ba
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -34341,33 +34386,33 @@ aT
aT
aT
aT
-aU
aT
aT
-aX
-aX
-aX
aT
aT
-ai
-bg
-ai
+aT
+aT
+aT
+aT
+bo
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+bo
+bb
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -34598,7 +34643,6 @@ aT
aT
aT
aT
-aU
aT
aT
aT
@@ -34606,25 +34650,26 @@ aT
aT
aT
aT
-ah
-ah
-ah
+aT
+aV
+aT
+aT
+aR
+aT
+aR
+aT
+aR
+aT
+aT
+bo
+bc
+bo
+ag
+ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -34855,7 +34900,6 @@ aT
aT
aT
aT
-ah
aT
aT
aT
@@ -34863,25 +34907,26 @@ aT
aT
aT
aT
-ah
+aT
+bo
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+bo
+bd
+bo
ag
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -35108,37 +35153,37 @@ aj
aj
aj
aS
+bx
+bx
+bx
+bx
+bx
+bx
+bx
+bx
+bx
+bx
+bx
+bx
+aU
aT
aT
+aR
+aT
+aR
+aT
+aR
aT
aT
-ah
-ah
-ai
-ai
-ai
-ai
-ai
-ah
-ah
+bo
+be
+bo
+ag
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -35364,38 +35409,38 @@ aG
aG
aG
aG
-aR
-ah
-ah
-ah
-ah
-ah
-ae
-ae
-ae
-ae
-ae
-ae
-ae
+aS
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+bu
+aU
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+bo
+bf
+bo
+ag
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -35620,39 +35665,39 @@ aF
aF
aF
aF
-aF
-aF
-ae
-ae
-ae
+aG
+aS
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+ah
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+aT
+ah
+ah
+ah
ae
ae
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -35878,7 +35923,31 @@ ab
ab
ab
ab
-aF
+aY
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ah
+ah
+bo
+bo
+bo
+bo
+bo
+bo
+bo
+ah
+ah
+ae
ab
ab
ab
@@ -35886,30 +35955,6 @@ ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aa
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -36147,12 +36192,18 @@ ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
+ae
ae
ab
ab
@@ -36160,12 +36211,6 @@ ab
ab
ab
ab
-ab
-aa
-aa
-aa
-aa
-aa
aa
aa
aa
@@ -36410,18 +36455,18 @@ ab
ab
ab
ab
-ac
-ac
ab
ab
ab
ab
ab
ab
-aa
-aa
-aa
-aa
+ab
+ab
+ab
+ab
+ab
+ab
aa
aa
aa
@@ -36667,17 +36712,17 @@ ab
ab
ab
ab
-ac
-bh
-ae
ab
ab
ab
ab
ab
-aa
-aa
-aa
+ab
+ab
+ab
+ab
+ab
+ab
aa
aa
aa
@@ -36932,8 +36977,8 @@ ab
ab
ab
ab
-aa
-aa
+ab
+ab
aa
aa
aa
@@ -37189,7 +37234,7 @@ ab
ab
ab
ab
-aa
+ab
aa
aa
aa
@@ -37438,9 +37483,9 @@ ab
ab
ab
ab
-ab
-ab
-ab
+ac
+bh
+ae
ab
ab
ab
diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm
index aea7d42be6..4ed099d9e2 100644
--- a/code/__DEFINES/DNA.dm
+++ b/code/__DEFINES/DNA.dm
@@ -121,3 +121,4 @@
#define ORGAN_SLOT_BRAIN_ANTIDROP "brain_antidrop"
#define ORGAN_SLOT_BRAIN_ANTISTUN "brain_antistun"
#define ORGAN_SLOT_TAIL "tail"
+#define ORGAN_SLOT_PENIS "penis"
diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm
index aab49720f6..9f3d38efa1 100644
--- a/code/__DEFINES/construction.dm
+++ b/code/__DEFINES/construction.dm
@@ -102,6 +102,7 @@
#define CAT_SANDWICH "Sandwiches"
#define CAT_SOUP "Soups"
#define CAT_SPAGHETTI "Spaghettis"
+#define CAT_SUSHI "Fish"
#define RCD_FLOORWALL 1
#define RCD_AIRLOCK 2
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index a5617e6148..99f1813f3c 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -69,6 +69,7 @@
#define TRAIT_TAGGER "tagger"
#define TRAIT_PHOTOGRAPHER "photographer"
#define TRAIT_MUSICIAN "musician"
+#define TRAIT_CROCRIN_IMMUNE "crocin_immune"
// common trait sources
#define TRAIT_GENERIC "generic"
diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm
index d0506c7dcb..36049de77b 100644
--- a/code/_globalvars/lists/maintenance_loot.dm
+++ b/code/_globalvars/lists/maintenance_loot.dm
@@ -108,5 +108,6 @@ GLOBAL_LIST_INIT(maintenance_loot, list(
/obj/item/toy/eightball = 1,
/obj/item/reagent_containers/pill/floorpill = 1,
/obj/item/storage/daki = 3, //VERY IMPORTANT CIT CHANGE - adds bodypillows to maint
+ /obj/item/storage/pill_bottle/penis_enlargement = 2,
"" = 3
))
diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm
index 3d03c2adbd..e0a23b0209 100644
--- a/code/datums/components/storage/concrete/pockets.dm
+++ b/code/datums/components/storage/concrete/pockets.dm
@@ -19,6 +19,22 @@
max_items = 1
attack_hand_interact = FALSE
+/datum/component/storage/concrete/pockets/small/collar
+ max_items = 1
+
+/datum/component/storage/concrete/pockets/small/collar/Initialize()
+ . = ..()
+ can_hold = typecacheof(list(
+ /obj/item/reagent_containers/food/snacks/cookie,
+ /obj/item/reagent_containers/food/snacks/sugarcookie))
+
+/datum/component/storage/concrete/pockets/small/collar/locked/Initialize()
+ . = ..()
+ can_hold = typecacheof(list(
+ /obj/item/reagent_containers/food/snacks/cookie,
+ /obj/item/reagent_containers/food/snacks/sugarcookie,
+ /obj/item/key/collar))
+
/datum/component/storage/concrete/pockets/tiny
max_items = 1
max_w_class = WEIGHT_CLASS_TINY
diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm
index 03badb2069..a870ecae66 100644
--- a/code/datums/dash_weapon.dm
+++ b/code/datums/dash_weapon.dm
@@ -32,7 +32,7 @@
if(!IsAvailable())
return
var/turf/T = get_turf(target)
- if(target in view(user.client.view, get_turf(user)))
+ if(target in view(user.client.view, user))
var/obj/spot1 = new phaseout(get_turf(user), user.dir)
user.forceMove(T)
playsound(T, dash_sound, 25, 1)
diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm
index 4fc30de473..f299e9904a 100644
--- a/code/datums/traits/neutral.dm
+++ b/code/datums/traits/neutral.dm
@@ -84,3 +84,12 @@
/datum/quirk/monochromatic/remove()
if(quirk_holder)
quirk_holder.remove_client_colour(/datum/client_colour/monochrome)
+
+/datum/quirk/crocrin_immunity
+ name = "Crocin Immunity"
+ desc = "You're one of the few people in the galaxy who are genetically immune to Crocin and Hexacrocin products and their addictive properties! However, you can still get brain damage from Hexacrocin addiction."
+ mob_trait = TRAIT_CROCRIN_IMMUNE
+ value = 0
+ gain_text = "You feel more prudish."
+ lose_text = "You don't feel as prudish as before."
+ medical_record_text = "Patient exhibits a special gene that makes them immune to Crocin and Hexacrocin."
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index 94b6eee8aa..927608d3d5 100755
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -15,7 +15,9 @@
/obj/item/gun/energy,
/obj/item/melee/baton,
/obj/item/ammo_box/magazine/recharge,
- /obj/item/modular_computer))
+ /obj/item/modular_computer,
+ /obj/item/gun/ballistic/automatic/magrifle_e,
+ /obj/item/gun/ballistic/automatic/pistol/mag_e))
/obj/machinery/recharger/RefreshParts()
for(var/obj/item/stock_parts/capacitor/C in component_parts)
diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm
index 079feec17a..1a666ce921 100644
--- a/code/game/objects/items/storage/firstaid.dm
+++ b/code/game/objects/items/storage/firstaid.dm
@@ -122,7 +122,7 @@
new /obj/item/reagent_containers/pill/antirad(src)
new /obj/item/reagent_containers/food/drinks/bottle/vodka(src)
new /obj/item/healthanalyzer(src)
-
+
/obj/item/storage/firstaid/o2
name = "oxygen deprivation treatment kit"
@@ -312,3 +312,11 @@
/obj/item/storage/pill_bottle/mutarad/PopulateContents()
for(var/i in 1 to 7)
new /obj/item/reagent_containers/pill/mutarad(src)
+
+/obj/item/storage/pill_bottle/penis_enlargement
+ name = "penis enlargement pills"
+ desc = "You want penis enlargement pills?"
+
+/obj/item/storage/pill_bottle/penis_enlargement/PopulateContents()
+ for(var/i in 1 to 7)
+ new /obj/item/reagent_containers/pill/penis_enlargement(src)
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index b1503f26fb..b6c5a5417a 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -26,7 +26,7 @@
icon_state = "captain"
item_state = "that"
flags_inv = 0
- armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
+ armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
strip_delay = 60
dog_fashion = /datum/dog_fashion/head/captain
@@ -50,7 +50,7 @@
name = "head of personnel's cap"
icon_state = "hopcap"
desc = "The symbol of true bureaucratic micromanagement."
- armor = list("melee" = 25, "bullet" = 15, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
+ armor = list("melee" = 30, "bullet" = 25, "laser" = 25, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
dog_fashion = /datum/dog_fashion/head/hop
/obj/item/clothing/head/hopcap/beret
@@ -200,4 +200,4 @@
/obj/item/clothing/head/beret/qm
name = "quartermaster's beret"
desc = "This headwear shows off your Cargonian leadership"
- icon_state = "qmberet"
\ No newline at end of file
+ icon_state = "qmberet"
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index 8245148096..d4cfbd1a84 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -171,17 +171,57 @@
icon_state = "stripedbluescarf"
item_color = "stripedbluescarf"
-/obj/item/clothing/neck/petcollar //don't really wear this though please c'mon seriously guys
+///////////
+//COLLARS//
+///////////
+
+/obj/item/clothing/neck/petcollar
name = "pet collar"
desc = "It's for pets. Though you probably could wear it yourself, you'd doubtless be the subject of ridicule."
icon_state = "petcollar"
item_color = "petcollar"
+ pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar
var/tagname = null
/obj/item/clothing/neck/petcollar/attack_self(mob/user)
tagname = copytext(sanitize(input(user, "Would you like to change the name on the tag?", "Name your new pet", "Spot") as null|text),1,MAX_NAME_LEN)
name = "[initial(name)] - [tagname]"
+/obj/item/clothing/neck/petcollar/locked
+ name = "locked collar"
+ desc = "A collar that has a small lock on it to keep it from being removed."
+ pocket_storage_component_path = /datum/component/storage/concrete/pockets/small/collar/locked
+ var/lock = FALSE
+
+/obj/item/clothing/neck/petcollar/locked/attackby(obj/item/key/collar, mob/user, params)
+ if(lock != FALSE)
+ to_chat(user, "With a click the collar unlocks!")
+ lock = FALSE
+ item_flags = NONE
+ else
+ to_chat(user, "With a click the collar locks!")
+ lock = TRUE
+ item_flags = NODROP
+ return
+
+/obj/item/clothing/neck/petcollar/locked/attack_hand(mob/user)
+ if(loc == user && user.get_item_by_slot(SLOT_NECK) && lock != FALSE)
+ to_chat(user, "The collar is locked! You'll need unlock the collar before you can take it off!")
+ return
+ ..()
+
+/obj/item/key/collar
+ name = "Collar Key"
+ desc = "A key for a tiny lock on a collar or bag."
+
+/obj/item/clothing/neck/petcollar/Initialize()
+ . = ..()
+ new /obj/item/reagent_containers/food/snacks/cookie(src)
+
+/obj/item/clothing/neck/petcollar/locked/Initialize()
+ . = ..()
+ new /obj/item/key/collar(src)
+
//////////////
//DOPE BLING//
//////////////
@@ -191,4 +231,4 @@
desc = "Damn, it feels good to be a gangster."
icon = 'icons/obj/clothing/neck.dmi'
icon_state = "bling"
- item_color = "bling"
\ No newline at end of file
+ item_color = "bling"
diff --git a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm
index 747f5f7d35..88f8848315 100644
--- a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm
+++ b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm
@@ -102,3 +102,13 @@
list_reagents = list("nutriment" = 2, "vitamin" = 2)
tastes = list("bread" = 2)
foodtype = GRAIN
+
+/obj/item/reagent_containers/food/snacks/tuna_sandwich
+ name = "tuna sandwich"
+ desc = "Both a salad and a sandwich in one."
+ icon = 'modular_citadel/icons/obj/food/food.dmi'
+ icon_state = "tunasandwich"
+ trash = /obj/item/trash/plate
+ bonus_reagents = list("nutriment" = 1, "vitamin" = 3)
+ tastes = list("tuna" = 4, "mayonnaise" = 2, "bread" = 2)
+ foodtype = GRAIN | MEAT
diff --git a/code/modules/food_and_drinks/food/snacks_sushi.dm b/code/modules/food_and_drinks/food/snacks_sushi.dm
new file mode 100644
index 0000000000..a4cbc5e344
--- /dev/null
+++ b/code/modules/food_and_drinks/food/snacks_sushi.dm
@@ -0,0 +1,95 @@
+//////////////////////////Sushi Components///////////////////////
+
+/obj/item/reagent_containers/food/snacks/sushi_rice
+ name = "Sushi Rice"
+ desc = "A bowl of sticky rice for making sushi."
+ icon = 'modular_citadel/icons/obj/food/food.dmi'
+ icon_state = "sushi_rice"
+ list_reagents = list("sodiumchloride" = 5)
+ tastes = list("rice" = 5, "salt" = 1)
+ foodtype = GRAIN
+
+/obj/item/reagent_containers/food/snacks/sea_weed
+ name = "Sea Weed Sheet"
+ desc = "A thin, light salt sheet of plant mater. This is commenly used in sushi recipes,"
+ icon = 'modular_citadel/icons/obj/food/food.dmi'
+ icon_state = "sea_weed"
+ list_reagents = list("sodiumchloride" = 2)
+ tastes = list("plants" = 2, "salt" = 1)
+ foodtype = VEGETABLES
+
+/obj/item/reagent_containers/food/snacks/tuna
+ name = "Canned Tuna"
+ desc = "A small can of tuna fish beloved by felines."
+ icon = 'modular_citadel/icons/obj/food/food.dmi'
+ icon_state = "tuna_can"
+//trash = /obj/item/trash/tuna_used //I dont know if I like this idea - A Masked Cat
+ list_reagents = list("sodiumchloride" = 5, "mercury" = 2)
+ tastes = list("tuna" = 15, "mercury" = 1, "salt" = 3)
+ foodtype = MEAT
+
+//////////////////////////Sushi/////////////////////////////////
+/obj/item/reagent_containers/food/snacks/sushie_basic
+ name = "Funa Hosomaki"
+ desc = "A small cylindrical filled with rice and fish."
+ icon = 'modular_citadel/icons/obj/food/food.dmi'
+ icon_state = "sushie_basic"
+ bonus_reagents = list("vitamin" = 2)
+ list_reagents = list("nutriment" = 1)
+ bitesize = 1
+ filling_color = "#F2EEEA" //rgb(242, 238, 234)
+ tastes = list("fish" = 1, "rice" = 1, "salt" = 1)
+ foodtype = MEAT | VEGETABLES
+
+/obj/item/reagent_containers/food/snacks/sushie_adv
+ name = "Funa Nigiri"
+ desc = "A pice of carp lightly placed on some rice."
+ icon = 'modular_citadel/icons/obj/food/food.dmi'
+ icon_state = "sushie_adv"
+ bonus_reagents = list("vitamin" = 2)
+ list_reagents = list("nutriment" = 2)
+ bitesize = 1
+ filling_color = "#F2EEEA" //rgb(242, 238, 234)
+ tastes = list("fish" = 1, "rice" = 1, "salt" = 1)
+ foodtype = MEAT | VEGETABLES
+
+/obj/item/reagent_containers/food/snacks/sushie_pro
+ name = "Funa Nigiri"
+ desc = "A well prepared pice of the best of the carp fillet placed on rice. Looks fancy and fresh!"
+ icon = 'modular_citadel/icons/obj/food/food.dmi'
+ icon_state = "sushie_pro"
+ bonus_reagents = list("nutriment" = 1, "vitamin" = 2)
+ list_reagents = list("nutriment" = 8, "vitamin" = 1)
+ bitesize = 1
+ filling_color = "#F2EEEA" //rgb(242, 238, 234)
+ tastes = list("fish" = 1, "rice" = 1, "salt" = 1)
+ foodtype = MEAT | VEGETABLES
+
+/obj/item/reagent_containers/food/snacks/tobiko
+ name = "Tobiko"
+ desc = "Spider eggs wrapped in a thin salted Kudzu pod"
+ icon = 'modular_citadel/icons/obj/food/food.dmi'
+ icon_state = "sushie_egg"
+ list_reagents = list("nutriment" = 3, "vitamin" = 2)
+ filling_color = "#FF3333" // R225 G051 B051
+ tastes = list("seaweed" = 1, "salty" = 2)
+ foodtype = MEAT | VEGETABLES
+
+/obj/item/reagent_containers/food/snacks/riceball
+ name = "Onigiri"
+ desc = "A ball of rice with some light salt and a wrap of Kudzu skin."
+ icon = 'modular_citadel/icons/obj/food/food.dmi'
+ icon_state = "riceball"
+ list_reagents = list("nutriment" = 5, "sodiumchloride" = 2)
+ tastes = list("rice" = 4, "salt" = 1)
+ foodtype = GRAIN
+
+/obj/item/reagent_containers/food/snacks/sashimi
+ name = "carp sashimi"
+ desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself."
+ icon_state = "sashimi"
+ bonus_reagents = list("nutriment" = 1, "capsaicin" = 4, "vitamin" = 4)
+ list_reagents = list("nutriment" = 6, "capsaicin" = 5)
+ filling_color = "#FA8072"
+ tastes = list("fish" = 1, "hot peppers" = 1)
+ foodtype = MEAT | TOXIC
\ No newline at end of file
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm
index e401e08062..c16c7268b9 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_meat.dm
@@ -1,5 +1,3 @@
-
-
////////////////////////////////////////////////KEBABS////////////////////////////////////////////////
/datum/crafting_recipe/food/humankebab
@@ -71,47 +69,6 @@
result = /obj/item/reagent_containers/food/snacks/fishfingers
subcategory = CAT_MEAT
-/datum/crafting_recipe/food/sashimi
- name = "Sashimi"
- reqs = list(
- /datum/reagent/consumable/soysauce = 5,
- /obj/item/reagent_containers/food/snacks/spidereggs = 1,
- /obj/item/reagent_containers/food/snacks/carpmeat = 1
- )
- result = /obj/item/reagent_containers/food/snacks/sashimi
- subcategory = CAT_MEAT
-
-/datum/crafting_recipe/food/sushi_basic
- name = "Funa Hosomaki"
- reqs = list(
- /datum/reagent/consumable/soysauce = 3,
- /obj/item/reagent_containers/food/snacks/salad/ricebowl = 1,
- /obj/item/reagent_containers/food/snacks/carpmeat = 2,
- /obj/item/reagent_containers/food/snacks/grown/kudzupod = 3,
- )
- result = /obj/item/reagent_containers/food/snacks/sushi_basic
- subcategory = CAT_MEAT
-
-/datum/crafting_recipe/food/sushi_adv
- name = "Funa Nigiri"
- reqs = list(
- /datum/reagent/consumable/soysauce = 5,
- /obj/item/reagent_containers/food/snacks/salad/ricebowl = 1,
- /obj/item/reagent_containers/food/snacks/carpmeat = 1
- )
- result = /obj/item/reagent_containers/food/snacks/sushi_adv
- subcategory = CAT_MEAT
-
-/datum/crafting_recipe/food/sushi_pro
- name = "Well made Funa Nigiri"
- reqs = list(
- /datum/reagent/consumable/soysauce = 10,
- /obj/item/reagent_containers/food/snacks/salad/ricebowl = 2,
- /obj/item/reagent_containers/food/snacks/carpmeat = 2
- )
- result = /obj/item/reagent_containers/food/snacks/sushi_pro
- subcategory = CAT_MEAT
-
////////////////////////////////////////////////MR SPIDER////////////////////////////////////////////////
/datum/crafting_recipe/food/spidereggsham
@@ -124,16 +81,6 @@
result = /obj/item/reagent_containers/food/snacks/spidereggsham
subcategory = CAT_MEAT
-/datum/crafting_recipe/food/sushi_egg
- name = "Tobiko"
- reqs = list(
- /datum/reagent/consumable/soysauce = 6,
- /obj/item/reagent_containers/food/snacks/spidereggs = 1,
- /obj/item/reagent_containers/food/snacks/grown/kudzupod = 2,
- )
- result = /obj/item/reagent_containers/food/snacks/tobiko
- subcategory = CAT_MEAT
-
////////////////////////////////////////////////MISC RECIPE's////////////////////////////////////////////////
/datum/crafting_recipe/food/cornedbeef
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm
index 9750e91930..a2e83a09b4 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sandwich.dm
@@ -62,5 +62,13 @@
result = /obj/item/reagent_containers/food/snacks/notasandwich
subcategory = CAT_SANDWICH
-
-
+/datum/crafting_recipe/food/notasandwich
+ name = "Tuna sandwich"
+ reqs = list(
+ /obj/item/reagent_containers/food/snacks/breadslice/plain = 2,
+ /obj/item/reagent_containers/food/snacks/tuna = 1,
+ /obj/item/reagent_containers/food/snacks/grown/onion = 1,
+ /obj/item/reagent_containers/food/condiment/mayonnaise = 5
+ )
+ result = /obj/item/reagent_containers/food/snacks/tuna_sandwich
+ subcategory = CAT_SANDWICH
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_sushi.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sushi.dm
new file mode 100644
index 0000000000..99d48cf69d
--- /dev/null
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_sushi.dm
@@ -0,0 +1,94 @@
+//////////////////////////Sushi Components///////////////////////
+
+/datum/crafting_recipe/food/sushi_rice
+ name = "Sushi Rice"
+ reqs = list(
+ /datum/reagent/water = 40,
+ /datum/reagent/consumable/rice = 10
+ )
+ result = /obj/item/reagent_containers/food/snacks/sushi_rice
+ subcategory = CAT_SUSHI
+
+/datum/crafting_recipe/food/sea_weed
+ name = "Sea Weed Sheet"
+ reqs = list(
+ /datum/reagent/water = 30,
+ /datum/reagent/consumable/soysauce = 5,
+ /obj/item/reagent_containers/food/snacks/grown/kudzupod = 1,
+ )
+ result = /obj/item/reagent_containers/food/snacks/sea_weed
+ subcategory = CAT_SUSHI
+
+/datum/crafting_recipe/food/tuna_can
+ name = "Can of Tuna"
+ reqs = list(
+ /datum/reagent/consumable/sodiumchloride = 15,
+ /datum/reagent/consumable/cooking_oil = 5,
+ /obj/item/reagent_containers/food/snacks/carpmeat = 1,
+ )
+ result = /obj/item/reagent_containers/food/snacks/tuna
+ subcategory = CAT_SUSHI
+
+//////////////////////////Sushi/////////////////////////////////
+
+/datum/crafting_recipe/food/sashimi
+ name = "Sashimi"
+ reqs = list(
+ /datum/reagent/consumable/soysauce = 5,
+ /obj/item/reagent_containers/food/snacks/spidereggs = 1,
+ /obj/item/reagent_containers/food/snacks/carpmeat = 1
+ )
+ result = /obj/item/reagent_containers/food/snacks/sashimi
+ subcategory = CAT_SUSHI
+
+/datum/crafting_recipe/food/riceball
+ name = "Onigiri"
+ reqs = list(
+ /datum/reagent/consumable/soysauce = 1,
+ /obj/item/reagent_containers/food/snacks/sea_weed = 1,
+ /obj/item/reagent_containers/food/snacks/sushi_rice = 1
+ )
+ result = /obj/item/reagent_containers/food/snacks/riceball
+ subcategory = CAT_SUSHI
+
+/datum/crafting_recipe/food/sushie_egg
+ name = "Tobiko"
+ reqs = list(
+ /datum/reagent/consumable/soysauce = 6,
+ /obj/item/reagent_containers/food/snacks/spidereggs = 1,
+ /obj/item/reagent_containers/food/snacks/sea_weed = 2,
+ )
+ result = /obj/item/reagent_containers/food/snacks/tobiko
+ subcategory = CAT_SUSHI
+
+/datum/crafting_recipe/food/sushie_basic
+ name = "Funa Hosomaki"
+ reqs = list(
+ /datum/reagent/consumable/soysauce = 3,
+ /obj/item/reagent_containers/food/snacks/sushi_rice = 1,
+ /obj/item/reagent_containers/food/snacks/carpmeat = 2,
+ /obj/item/reagent_containers/food/snacks/sea_weed = 3,
+ )
+ result = /obj/item/reagent_containers/food/snacks/sushie_basic
+ subcategory = CAT_SUSHI
+
+/datum/crafting_recipe/food/sushie_adv
+ name = "Funa Nigiri"
+ reqs = list(
+ /datum/reagent/consumable/soysauce = 5,
+ /obj/item/reagent_containers/food/snacks/sushi_rice = 1,
+ /obj/item/reagent_containers/food/snacks/carpmeat = 1
+ )
+ result = /obj/item/reagent_containers/food/snacks/sushie_adv
+ subcategory = CAT_SUSHI
+
+/datum/crafting_recipe/food/sushie_pro
+ name = "Well made Funa Nigiri"
+ reqs = list(
+ /datum/reagent/consumable/soysauce = 10,
+ /obj/item/reagent_containers/food/snacks/sushi_rice = 2,
+ /obj/item/reagent_containers/food/snacks/carpmeat = 5,
+ /obj/item/reagent_containers/food/snacks/sea_weed = 1
+ )
+ result = /obj/item/reagent_containers/food/snacks/sushie_pro
+ subcategory = CAT_SUSHI
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index e1eb976966..eaffeaf016 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -304,6 +304,8 @@
else if(href_list["create"])
var/amount = (text2num(href_list["amount"]))
+ //Can't be outside these (if you change this keep a sane limit)
+ amount = CLAMP(amount, 1, 50)
var/datum/design/D = locate(href_list["create"])
create_product(D, amount)
updateUsrDialog()
diff --git a/code/modules/mob/dead/new_player/sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories.dm
deleted file mode 100644
index 44c1f7601d..0000000000
--- a/code/modules/mob/dead/new_player/sprite_accessories.dm
+++ /dev/null
@@ -1,1524 +0,0 @@
-/*
-
- Hello and welcome to sprite_accessories: For sprite accessories, such as hair,
- facial hair, and possibly tattoos and stuff somewhere along the line. This file is
- intended to be friendly for people with little to no actual coding experience.
- The process of adding in new hairstyles has been made pain-free and easy to do.
- Enjoy! - Doohl
-
-
- Notice: This all gets automatically compiled in a list in dna.dm, so you do not
- have to define any UI values for sprite accessories manually for hair and facial
- hair. Just add in new hair types and the game will naturally adapt.
-
- !!WARNING!!: changing existing hair information can be VERY hazardous to savefiles,
- to the point where you may completely corrupt a server's savefiles. Please refrain
- from doing this unless you absolutely know what you are doing, and have defined a
- conversion in savefile.dm
-*/
-/proc/init_sprite_accessory_subtypes(prototype, list/L, list/male, list/female,var/roundstart = FALSE)//Roundstart argument builds a specific list for roundstart parts where some parts may be locked
- if(!istype(L))
- L = list()
- if(!istype(male))
- male = list()
- if(!istype(female))
- female = list()
-
- for(var/path in typesof(prototype))
- if(path == prototype)
- continue
- if(roundstart)
- var/datum/sprite_accessory/P = path
- if(initial(P.locked))
- continue
- var/datum/sprite_accessory/D = new path()
-
- if(D.icon_state)
- L[D.name] = D
- else
- L += D.name
-
- switch(D.gender)
- if(MALE)
- male += D.name
- if(FEMALE)
- female += D.name
- else
- male += D.name
- female += D.name
- return L
-
-/datum/sprite_accessory
- var/icon //the icon file the accessory is located in
- var/icon_state //the icon_state of the accessory
- var/name //the preview name of the accessory
- var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations
- var/gender_specific //Something that can be worn by either gender, but looks different on each
- var/color_src = MUTCOLORS //Currently only used by mutantparts so don't worry about hair and stuff. This is the source that this accessory will get its color from. Default is MUTCOLOR, but can also be HAIR, FACEHAIR, EYECOLOR and 0 if none.
- var/hasinner //Decides if this sprite has an "inner" part, such as the fleshy parts on ears.
- var/locked = FALSE //Is this part locked from roundstart selection? Used for parts that apply effects
- var/dimension_x = 32
- var/dimension_y = 32
- var/center = FALSE //Should we center the sprite?
-
-//////////////////////
-// Hair Definitions //
-//////////////////////
-/datum/sprite_accessory/hair
- icon = 'icons/mob/human_face.dmi' // default icon for all hairs
-
- // please make sure they're sorted alphabetically and, where needed, categorized
- // try to capitalize the names please~
- // try to spell
- // you do not need to define _s or _l sub-states, game automatically does this for you
-
-/datum/sprite_accessory/hair/afro
- name = "Afro"
- icon_state = "hair_afro"
-
-/datum/sprite_accessory/hair/afro2
- name = "Afro 2"
- icon_state = "hair_afro2"
-
-/datum/sprite_accessory/hair/afro_large
- name = "Afro (Large)"
- icon_state = "hair_bigafro"
-
-/datum/sprite_accessory/hair/antenna
- name = "Ahoge"
- icon_state = "hair_antenna"
-
-/datum/sprite_accessory/hair/bald
- name = "Bald"
- icon_state = null
-
-/datum/sprite_accessory/hair/balding
- name = "Balding Hair"
- icon_state = "hair_e"
-
-/datum/sprite_accessory/hair/bedhead
- name = "Bedhead"
- icon_state = "hair_bedhead"
-
-/datum/sprite_accessory/hair/bedhead2
- name = "Bedhead 2"
- icon_state = "hair_bedheadv2"
-
-/datum/sprite_accessory/hair/bedhead3
- name = "Bedhead 3"
- icon_state = "hair_bedheadv3"
-
-/datum/sprite_accessory/hair/beehive
- name = "Beehive"
- icon_state = "hair_beehive"
-
-/datum/sprite_accessory/hair/beehive2
- name = "Beehive 2"
- icon_state = "hair_beehivev2"
-
-/datum/sprite_accessory/hair/bob
- name = "Bob Hair"
- icon_state = "hair_bob"
-
-/datum/sprite_accessory/hair/bob2
- name = "Bob Hair 2"
- icon_state = "hair_bob2"
-
-/datum/sprite_accessory/hair/bob3
- name = "Bob Hair 3"
- icon_state = "hair_bobcut"
-
-/datum/sprite_accessory/hair/bobcurl
- name = "Bobcurl"
- icon_state = "hair_bobcurl"
-
-/datum/sprite_accessory/hair/boddicker
- name = "Boddicker"
- icon_state = "hair_boddicker"
-
-/datum/sprite_accessory/hair/bowl
- name = "Bowl"
- icon_state = "hair_bowlcut"
-
-/datum/sprite_accessory/hair/braid
- name = "Braid (Floorlength)"
- icon_state = "hair_braid"
-
-/datum/sprite_accessory/hair/braided
- name = "Braided"
- icon_state = "hair_braided"
-
-/datum/sprite_accessory/hair/front_braid
- name = "Braided Front"
- icon_state = "hair_braidfront"
-
-/datum/sprite_accessory/hair/not_floorlength_braid
- name = "Braid (High)"
- icon_state = "hair_braid2"
-
-/datum/sprite_accessory/hair/lowbraid
- name = "Braid (Low)"
- icon_state = "hair_hbraid"
-
-/datum/sprite_accessory/hair/shortbraid
- name = "Braid (Short)"
- icon_state = "hair_shortbraid"
-
-/datum/sprite_accessory/hair/braidtail
- name = "Braided Tail"
- icon_state = "hair_braidtail"
-
-/datum/sprite_accessory/hair/bun
- name = "Bun Head"
- icon_state = "hair_bun"
-
-/datum/sprite_accessory/hair/bun2
- name = "Bun Head 2"
- icon_state = "hair_bunhead2"
-
-/datum/sprite_accessory/hair/largebun
- name = "Bun (Large)"
- icon_state = "hair_largebun"
-
-/datum/sprite_accessory/hair/business
- name = "Business Hair"
- icon_state = "hair_business"
-
-/datum/sprite_accessory/hair/business2
- name = "Business Hair 2"
- icon_state = "hair_business2"
-
-/datum/sprite_accessory/hair/business3
- name = "Business Hair 3"
- icon_state = "hair_business3"
-
-/datum/sprite_accessory/hair/business4
- name = "Business Hair 4"
- icon_state = "hair_business4"
-
-/datum/sprite_accessory/hair/buzz
- name = "Buzzcut"
- icon_state = "hair_buzzcut"
-
-/datum/sprite_accessory/hair/combover
- name = "Combover"
- icon_state = "hair_combover"
-
-/datum/sprite_accessory/hair/crew
- name = "Crewcut"
- icon_state = "hair_crewcut"
-
-/datum/sprite_accessory/hair/curls
- name = "Curls"
- icon_state = "hair_curls"
-
-/datum/sprite_accessory/hair/cut
- name = "Cut Hair"
- icon_state = "hair_c"
-
-/datum/sprite_accessory/hair/devillock
- name = "Devil Lock"
- icon_state = "hair_devilock"
-
-/datum/sprite_accessory/hair/dreadlocks
- name = "Dreadlocks"
- icon_state = "hair_dreads"
-
-/datum/sprite_accessory/hair/drillhair
- name = "Drill Hair"
- icon_state = "hair_drillhair"
-
-/datum/sprite_accessory/hair/drillhairextended
- name = "Drill Hair (Extended)"
- icon_state = "hair_drillhairextended"
-
-/datum/sprite_accessory/hair/emo
- name = "Emo"
- icon_state = "hair_emo"
-
-/datum/sprite_accessory/hair/feather
- name = "Feather"
- icon_state = "hair_feather"
-
-/datum/sprite_accessory/hair/sargeant
- name = "Flat Top"
- icon_state = "hair_sargeant"
-
-/datum/sprite_accessory/hair/bigflattop
- name = "Flat Top (Big)"
- icon_state = "hair_bigflattop"
-
-/datum/sprite_accessory/hair/fag
- name = "Flow Hair"
- icon_state = "hair_f"
-
-/datum/sprite_accessory/hair/gelled
- name = "Gelled Back"
- icon_state = "hair_gelled"
-
-/datum/sprite_accessory/hair/gentle
- name = "Gentle"
- icon_state = "hair_gentle"
-
-/datum/sprite_accessory/hair/halfbang
- name = "Half-banged Hair"
- icon_state = "hair_halfbang"
-
-/datum/sprite_accessory/hair/halfbang2
- name = "Half-banged Hair 2"
- icon_state = "hair_halfbang2"
-
-/datum/sprite_accessory/hair/hedgehog
- name = "Hedgehog Hair"
- icon_state = "hair_hedgehog"
-
-/datum/sprite_accessory/hair/himecut
- name = "Hime Cut"
- icon_state = "hair_himecut"
-
-/datum/sprite_accessory/hair/himecut2
- name = "Hime Cut 2"
- icon_state = "hair_himecut2"
-
-/datum/sprite_accessory/hair/himeup
- name = "Hime Updo"
- icon_state = "hair_himeup"
-
-/datum/sprite_accessory/hair/hitop
- name = "Hitop"
- icon_state = "hair_hitop"
-
-/datum/sprite_accessory/hair/jensen
- name = "Jensen Hair"
- icon_state = "hair_jensen"
-
-/datum/sprite_accessory/hair/keanu
- name = "Keanu Hair"
- icon_state = "hair_keanu"
-
-/datum/sprite_accessory/hair/kusangi
- name = "Kusanagi Hair"
- icon_state = "hair_kusanagi"
-
-/datum/sprite_accessory/hair/long
- name = "Long Hair 1"
- icon_state = "hair_long"
-
-/datum/sprite_accessory/hair/long2
- name = "Long Hair 2"
- icon_state = "hair_long2"
-
-/datum/sprite_accessory/hair/long3
- name = "Long Hair 3"
- icon_state = "hair_long3"
-
-/datum/sprite_accessory/hair/long_over_eye
- name = "Long Over Eye"
- icon_state = "hair_longovereye"
-
-/datum/sprite_accessory/hair/longbangs
- name = "Long Bangs"
- icon_state = "hair_lbangs"
-
-/datum/sprite_accessory/hair/longemo
- name = "Long Emo"
- icon_state = "hair_longemo"
-
-/datum/sprite_accessory/hair/longfringe
- name = "Long Fringe"
- icon_state = "hair_longfringe"
-
-/datum/sprite_accessory/hair/sidepartlongalt
- name = "Long Side Part"
- icon_state = "hair_longsidepart"
-
-/datum/sprite_accessory/hair/megaeyebrows
- name = "Mega Eyebrows"
- icon_state = "hair_megaeyebrows"
-
-/datum/sprite_accessory/hair/messy
- name = "Messy"
- icon_state = "hair_messy"
-
-/datum/sprite_accessory/hair/mohawk
- name = "Mohawk"
- icon_state = "hair_d"
-
-/datum/sprite_accessory/hair/reversemohawk
- name = "Mohawk (Reverse)"
- icon_state = "hair_reversemohawk"
-
-/datum/sprite_accessory/hair/odango
- name = "Odango"
- icon_state = "hair_odango"
-
-/datum/sprite_accessory/hair/ombre
- name = "Ombre"
- icon_state = "hair_ombre"
-
-/datum/sprite_accessory/hair/oneshoulder
- name = "One Shoulder"
- icon_state = "hair_oneshoulder"
-
-/datum/sprite_accessory/hair/over_eye
- name = "Over Eye"
- icon_state = "hair_shortovereye"
-
-//Donator item - fractious
-/datum/sprite_accessory/hair/over_eye_fr
- name = "Over Eye (fract)"
- icon_state = "hair_shortovereye_1f"
- ckeys_allowed = list("fractious")
-
-/datum/sprite_accessory/hair/parted
- name = "Parted"
- icon_state = "hair_parted"
-
-/datum/sprite_accessory/hair/partedside
- name = "Parted (Side)"
- icon_state = "hair_part"
-
-/datum/sprite_accessory/hair/kagami
- name = "Pigtails"
- icon_state = "hair_kagami"
-
-/datum/sprite_accessory/hair/pigtail
- name = "Pigtails 2"
- icon_state = "hair_pigtails"
-
-/datum/sprite_accessory/hair/pigtail2
- name = "Pigtails 3"
- icon_state = "hair_pigtails2"
-
-/datum/sprite_accessory/hair/pixie
- name = "Pixie Cut"
- icon_state = "hair_pixie"
-
-/datum/sprite_accessory/hair/pompadour
- name = "Pompadour"
- icon_state = "hair_pompadour"
-
-/datum/sprite_accessory/hair/bigpompadour
- name = "Pompadour (Big)"
- icon_state = "hair_bigpompadour"
-
-/datum/sprite_accessory/hair/ponytail1
- name = "Ponytail"
- icon_state = "hair_ponytail"
-
-/datum/sprite_accessory/hair/ponytail2
- name = "Ponytail 2"
- icon_state = "hair_ponytail2"
-
-/datum/sprite_accessory/hair/ponytail3
- name = "Ponytail 3"
- icon_state = "hair_ponytail3"
-
-/datum/sprite_accessory/hair/ponytail4
- name = "Ponytail 4"
- icon_state = "hair_ponytail4"
-
-/datum/sprite_accessory/hair/ponytail5
- name = "Ponytail 5"
- icon_state = "hair_ponytail5"
-
-/datum/sprite_accessory/hair/highponytail
- name = "Ponytail (High)"
- icon_state = "hair_highponytail"
-
-/datum/sprite_accessory/hair/longponytail
- name = "Ponytail (Long)"
- icon_state = "hair_longstraightponytail"
-
-/datum/sprite_accessory/hair/sidetail
- name = "Ponytail (Side)"
- icon_state = "hair_sidetail"
-
-/datum/sprite_accessory/hair/sidetail2
- name = "Ponytail (Side) 2"
- icon_state = "hair_sidetail2"
-
-/datum/sprite_accessory/hair/sidetail3
- name = "Ponytail (Side) 3"
- icon_state = "hair_sidetail3"
-
-/datum/sprite_accessory/hair/sidetail4
- name = "Ponytail (Side) 4"
- icon_state = "hair_sidetail4"
-
-/datum/sprite_accessory/hair/quiff
- name = "Quiff"
- icon_state = "hair_quiff"
-
-/datum/sprite_accessory/hair/short
- name = "Short Hair"
- icon_state = "hair_a"
-
-/datum/sprite_accessory/hair/shorthair2
- name = "Short Hair 2"
- icon_state = "hair_shorthair2"
-
-/datum/sprite_accessory/hair/shorthair3
- name = "Short Hair 3"
- icon_state = "hair_shorthair3"
-
-/datum/sprite_accessory/hair/shoulderlength
- name = "Shoulder-length Hair"
- icon_state = "hair_b"
-
-/datum/sprite_accessory/hair/sidecut
- name = "Sidecut"
- icon_state = "hair_sidecut"
-
-/datum/sprite_accessory/hair/skinhead
- name = "Skinhead"
- icon_state = "hair_skinhead"
-
-/datum/sprite_accessory/hair/protagonist
- name = "Slightly Long Hair"
- icon_state = "hair_protagonist"
-
-/datum/sprite_accessory/hair/spiky
- name = "Spiky"
- icon_state = "hair_spikey"
-
-/datum/sprite_accessory/hair/spiky2
- name = "Spiky 2"
- icon_state = "hair_spiky"
-
-/datum/sprite_accessory/hair/spiky3
- name = "Spiky 3"
- icon_state = "hair_spiky2"
-
-/datum/sprite_accessory/hair/swept
- name = "Swept Back Hair"
- icon_state = "hair_swept"
-
-/datum/sprite_accessory/hair/swept2
- name = "Swept Back Hair 2"
- icon_state = "hair_swept2"
-
-/datum/sprite_accessory/hair/tressshoulder
- name = "Tress Shoulder"
- icon_state = "hair_tressshoulder"
-
-/datum/sprite_accessory/hair/updo
- name = "Updo"
- icon_state = "hair_updo"
-
-/datum/sprite_accessory/hair/longer
- name = "Very Long Hair"
- icon_state = "hair_vlong"
-
-/datum/sprite_accessory/hair/longest
- name = "Very Long Hair 2"
- icon_state = "hair_longest"
-
-/datum/sprite_accessory/hair/longest2
- name = "Very Long Over Eye"
- icon_state = "hair_longest2"
-
-/datum/sprite_accessory/hair/longestalt
- name = "Very Long with Fringe"
- icon_state = "hair_vlongfringe"
-
-/////////////////////////////
-// Facial Hair Definitions //
-/////////////////////////////
-
-/datum/sprite_accessory/facial_hair
- icon = 'icons/mob/human_face.dmi'
- gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P)
-
-// please make sure they're sorted alphabetically and categorized
-
-/datum/sprite_accessory/facial_hair/abe
- name = "Beard (Abraham Lincoln)"
- icon_state = "facial_abe"
-
-/datum/sprite_accessory/facial_hair/brokenman
- name = "Beard (Broken Man)"
- icon_state = "facial_brokenman"
-
-/datum/sprite_accessory/facial_hair/chinstrap
- name = "Beard (Chinstrap)"
- icon_state = "facial_chin"
-
-/datum/sprite_accessory/facial_hair/dwarf
- name = "Beard (Dwarf)"
- icon_state = "facial_dwarf"
-
-/datum/sprite_accessory/facial_hair/fiveoclock
- name = "Beard (Five o Clock Shadow)"
- icon_state = "facial_fiveoclock"
-
-/datum/sprite_accessory/facial_hair/fullbeard
- name = "Beard (Full)"
- icon_state = "facial_fullbeard"
-
-/datum/sprite_accessory/facial_hair/gt
- name = "Beard (Goatee)"
- icon_state = "facial_gt"
-
-/datum/sprite_accessory/facial_hair/hip
- name = "Beard (Hipster)"
- icon_state = "facial_hip"
-
-/datum/sprite_accessory/facial_hair/jensen
- name = "Beard (Jensen)"
- icon_state = "facial_jensen"
-
-/datum/sprite_accessory/facial_hair/neckbeard
- name = "Beard (Neckbeard)"
- icon_state = "facial_neckbeard"
-
-/datum/sprite_accessory/facial_hair/vlongbeard
- name = "Beard (Very Long)"
- icon_state = "facial_wise"
-
-/datum/sprite_accessory/facial_hair/longbeard
- name = "Beard (Long)"
- icon_state = "facial_longbeard"
-
-/datum/sprite_accessory/facial_hair/fu
- name = "Moustache (Fu Manchu)"
- icon_state = "facial_fumanchu"
-
-/datum/sprite_accessory/facial_hair/hogan
- name = "Moustache (Hulk Hogan)"
- icon_state = "facial_hogan" //-Neek
-
-/datum/sprite_accessory/facial_hair/selleck
- name = "Moustache (Selleck)"
- icon_state = "facial_selleck"
-
-/datum/sprite_accessory/facial_hair/chaplin
- name = "Moustache (Square)"
- icon_state = "facial_chaplin"
-
-/datum/sprite_accessory/facial_hair/vandyke
- name = "Moustache (Van Dyke)"
- icon_state = "facial_vandyke"
-
-/datum/sprite_accessory/facial_hair/watson
- name = "Moustache (Watson)"
- icon_state = "facial_watson"
-
-/datum/sprite_accessory/facial_hair/shaved
- name = "Shaved"
- icon_state = null
- gender = NEUTER
-
-/datum/sprite_accessory/facial_hair/elvis
- name = "Sideburns (Elvis)"
- icon_state = "facial_elvis"
-
-
-///////////////////////////
-// Underwear Definitions //
-///////////////////////////
-/datum/sprite_accessory/underwear
- icon = 'icons/mob/underwear.dmi'
-
-/datum/sprite_accessory/underwear/nude
- name = "Nude"
- icon_state = null
- gender = NEUTER
-
-/datum/sprite_accessory/underwear/male_mankini
- name = "Mankini"
- icon_state = "male_mankini"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_black
- name = "Men's Black"
- icon_state = "male_black"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_blackalt
- name = "Men's Black Boxer"
- icon_state = "male_blackalt"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_blue
- name = "Men's Blue"
- icon_state = "male_blue"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_green
- name = "Men's Green"
- icon_state = "male_green"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_grey
- name = "Men's Grey"
- icon_state = "male_grey"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_greyalt
- name = "Men's Grey Boxer"
- icon_state = "male_greyalt"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_hearts
- name = "Men's Hearts Boxer"
- icon_state = "male_hearts"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_kinky
- name = "Men's Kinky"
- icon_state = "male_kinky"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_red
- name = "Men's Red"
- icon_state = "male_red"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_stripe
- name = "Men's Striped Boxer"
- icon_state = "male_stripe"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_commie
- name = "Men's Striped Commie Boxer"
- icon_state = "male_commie"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_usastripe
- name = "Men's Striped Freedom Boxer"
- icon_state = "male_assblastusa"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_uk
- name = "Men's Striped UK Boxer"
- icon_state = "male_uk"
- gender = MALE
-
-/datum/sprite_accessory/underwear/male_white
- name = "Men's White"
- icon_state = "male_white"
- gender = MALE
-
-/datum/sprite_accessory/underwear/female_babydoll
- name = "Babydoll"
- icon_state = "female_babydoll"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_babyblue
- name = "Ladies' Baby-Blue"
- icon_state = "female_babyblue"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_black
- name = "Ladies' Black"
- icon_state = "female_black"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_black_neko
- name = "Ladies' Black Neko"
- icon_state = "female_neko_black"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_blackalt
- name = "Ladies' Black Sport"
- icon_state = "female_blackalt"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_blue
- name = "Ladies' Blue"
- icon_state = "female_blue"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_commie
- name = "Ladies' Commie"
- icon_state = "female_commie"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_usastripe
- name = "Ladies' Freedom"
- icon_state = "female_assblastusa"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_green
- name = "Ladies' Green"
- icon_state = "female_green"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_kinky
- name = "Ladies' Kinky"
- icon_state = "female_kinky"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_pink
- name = "Ladies' Pink"
- icon_state = "female_pink"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_red
- name = "Ladies' Red"
- icon_state = "female_red"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/swimsuit
- name = "Ladies' Swimsuit (Black)"
- icon_state = "swim_black"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/swimsuit_blue
- name = "Ladies' Swimsuit (Blue)"
- icon_state = "swim_blue"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/swimsuit_green
- name = "Ladies' Swimsuit (Green)"
- icon_state = "swim_green"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/swimsuit_purple
- name = "Ladies' Swimsuit (Purple)"
- icon_state = "swim_purple"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/swimsuit_red
- name = "Ladies' Swimsuit (Red)"
- icon_state = "swim_red"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_thong
- name = "Ladies' Thong"
- icon_state = "female_thong"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_uk
- name = "Ladies' UK"
- icon_state = "female_uk"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_white
- name = "Ladies' White"
- icon_state = "female_white"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_white_neko
- name = "Ladies' White Neko"
- icon_state = "female_neko_white"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_whitealt
- name = "Ladies' White Sport"
- icon_state = "female_whitealt"
- gender = FEMALE
-
-/datum/sprite_accessory/underwear/female_yellow
- name = "Ladies' Yellow"
- icon_state = "female_yellow"
- gender = FEMALE
-
-////////////////////////////
-// Undershirt Definitions //
-////////////////////////////
-
-/datum/sprite_accessory/undershirt
- icon = 'icons/mob/underwear.dmi'
-
-/datum/sprite_accessory/undershirt/nude
- name = "Nude"
- icon_state = null
- gender = NEUTER
-
-// please make sure they're sorted alphabetically and categorized
-
-/datum/sprite_accessory/undershirt/bluejersey
- name = "Jersey (Blue)"
- icon_state = "shirt_bluejersey"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/redjersey
- name = "Jersey (Red)"
- icon_state = "shirt_redjersey"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/bluepolo
- name = "Polo Shirt (Blue)"
- icon_state = "bluepolo"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/grayyellowpolo
- name = "Polo Shirt (Gray-Yellow)"
- icon_state = "grayyellowpolo"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/redpolo
- name = "Polo Shirt (Red)"
- icon_state = "redpolo"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/whitepolo
- name = "Polo Shirt (White)"
- icon_state = "whitepolo"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/alienshirt
- name = "Shirt (Alien)"
- icon_state = "shirt_alien"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/mondmondjaja
- name = "Shirt (Band)"
- icon_state = "band"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/shirt_black
- name = "Shirt (Black)"
- icon_state = "shirt_black"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/blueshirt
- name = "Shirt (Blue)"
- icon_state = "shirt_blue"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/clownshirt
- name = "Shirt (Clown)"
- icon_state = "shirt_clown"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/commie
- name = "Shirt (Commie)"
- icon_state = "shirt_commie"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/greenshirt
- name = "Shirt (Green)"
- icon_state = "shirt_green"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/shirt_grey
- name = "Shirt (Grey)"
- icon_state = "shirt_grey"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/ian
- name = "Shirt (Ian)"
- icon_state = "ian"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/ilovent
- name = "Shirt (I Love NT)"
- icon_state = "ilovent"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/lover
- name = "Shirt (Lover)"
- icon_state = "lover"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/matroska
- name = "Shirt (Matroska)"
- icon_state = "matroska"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/meat
- name = "Shirt (Meat)"
- icon_state = "shirt_meat"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/nano
- name = "Shirt (Nanotrasen)"
- icon_state = "shirt_nano"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/peace
- name = "Shirt (Peace)"
- icon_state = "peace"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/pacman
- name = "Shirt (Pogoman)"
- icon_state = "pogoman"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/question
- name = "Shirt (Question)"
- icon_state = "shirt_question"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/redshirt
- name = "Shirt (Red)"
- icon_state = "shirt_red"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/skull
- name = "Shirt (Skull)"
- icon_state = "shirt_skull"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/ss13
- name = "Shirt (SS13)"
- icon_state = "shirt_ss13"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/stripe
- name = "Shirt (Striped)"
- icon_state = "shirt_stripes"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/tiedye
- name = "Shirt (Tie-dye)"
- icon_state = "shirt_tiedye"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/uk
- name = "Shirt (UK)"
- icon_state = "uk"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/usa
- name = "Shirt (USA)"
- icon_state = "shirt_assblastusa"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/shirt_white
- name = "Shirt (White)"
- icon_state = "shirt_white"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/blackshortsleeve
- name = "Short-sleeved Shirt (Black)"
- icon_state = "blackshortsleeve"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/blueshortsleeve
- name = "Short-sleeved Shirt (Blue)"
- icon_state = "blueshortsleeve"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/greenshortsleeve
- name = "Short-sleeved Shirt (Green)"
- icon_state = "greenshortsleeve"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/purpleshortsleeve
- name = "Short-sleeved Shirt (Purple)"
- icon_state = "purpleshortsleeve"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/whiteshortsleeve
- name = "Short-sleeved Shirt (White)"
- icon_state = "whiteshortsleeve"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/sports_bra
- name = "Sports Bra"
- icon_state = "sports_bra"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/sports_bra2
- name = "Sports Bra (Alt)"
- icon_state = "sports_bra_alt"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/blueshirtsport
- name = "Sports Shirt (Blue)"
- icon_state = "blueshirtsport"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/greenshirtsport
- name = "Sports Shirt (Green)"
- icon_state = "greenshirtsport"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/redshirtsport
- name = "Sports Shirt (Red)"
- icon_state = "redshirtsport"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/tank_black
- name = "Tank Top (Black)"
- icon_state = "tank_black"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/tankfire
- name = "Tank Top (Fire)"
- icon_state = "tank_fire"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/tank_grey
- name = "Tank Top (Grey)"
- icon_state = "tank_grey"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/female_midriff
- name = "Tank Top (Midriff)"
- icon_state = "tank_midriff"
- gender = FEMALE
-
-/datum/sprite_accessory/undershirt/tank_red
- name = "Tank Top (Red)"
- icon_state = "tank_red"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/tankstripe
- name = "Tank Top (Striped)"
- icon_state = "tank_stripes"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/tank_white
- name = "Tank Top (White)"
- icon_state = "tank_white"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/redtop
- name = "Top (Red)"
- icon_state = "redtop"
- gender = FEMALE
-
-/datum/sprite_accessory/undershirt/whitetop
- name = "Top (White)"
- icon_state = "whitetop"
- gender = FEMALE
-
-/datum/sprite_accessory/undershirt/tshirt_blue
- name = "T-Shirt (Blue)"
- icon_state = "blueshirt"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/tshirt_green
- name = "T-Shirt (Green)"
- icon_state = "greenshirt"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/tshirt_red
- name = "T-Shirt (Red)"
- icon_state = "redshirt"
- gender = NEUTER
-
-/datum/sprite_accessory/undershirt/yellowshirt
- name = "T-Shirt (Yellow)"
- icon_state = "yellowshirt"
- gender = NEUTER
-
-///////////////////////
-// Socks Definitions //
-///////////////////////
-
-/datum/sprite_accessory/socks
- icon = 'icons/mob/underwear.dmi'
-
-/datum/sprite_accessory/socks/nude
- name = "Nude"
- icon_state = null
-
-// please make sure they're sorted alphabetically and categorized
-
-/datum/sprite_accessory/socks/black_knee
- name = "Knee-high (Black)"
- icon_state = "black_knee"
-
-/datum/sprite_accessory/socks/commie_knee
- name = "Knee-High (Commie)"
- icon_state = "commie_knee"
-
-/datum/sprite_accessory/socks/usa_knee
- name = "Knee-High (Freedom)"
- icon_state = "assblastusa_knee"
-
-/datum/sprite_accessory/socks/rainbow_knee
- name = "Knee-high (Rainbow)"
- icon_state = "rainbow_knee"
-
-/datum/sprite_accessory/socks/striped_knee
- name = "Knee-high (Striped)"
- icon_state = "striped_knee"
-
-/datum/sprite_accessory/socks/thin_knee
- name = "Knee-high (Thin)"
- icon_state = "thin_knee"
-
-/datum/sprite_accessory/socks/uk_knee
- name = "Knee-High (UK)"
- icon_state = "uk_knee"
-
-/datum/sprite_accessory/socks/white_knee
- name = "Knee-high (White)"
- icon_state = "white_knee"
-
-/datum/sprite_accessory/socks/black_norm
- name = "Normal (Black)"
- icon_state = "black_norm"
-
-/datum/sprite_accessory/socks/white_norm
- name = "Normal (White)"
- icon_state = "white_norm"
-
-/datum/sprite_accessory/socks/pantyhose
- name = "Pantyhose"
- icon_state = "pantyhose"
-
-/datum/sprite_accessory/socks/black_short
- name = "Short (Black)"
- icon_state = "black_short"
-
-/datum/sprite_accessory/socks/white_short
- name = "Short (White)"
- icon_state = "white_short"
-
-/datum/sprite_accessory/socks/black_thigh
- name = "Thigh-high (Black)"
- icon_state = "black_thigh"
-
-/datum/sprite_accessory/socks/commie_thigh
- name = "Thigh-high (Commie)"
- icon_state = "commie_thigh"
-
-/datum/sprite_accessory/socks/usa_thigh
- name = "Thigh-high (Freedom)"
- icon_state = "assblastusa_thigh"
-
-/datum/sprite_accessory/socks/rainbow_thigh
- name = "Thigh-high (Rainbow)"
- icon_state = "rainbow_thigh"
-
-/datum/sprite_accessory/socks/striped_thigh
- name = "Thigh-high (Striped)"
- icon_state = "striped_thigh"
-
-/datum/sprite_accessory/socks/thin_thigh
- name = "Thigh-high (Thin)"
- icon_state = "thin_thigh"
-
-/datum/sprite_accessory/socks/uk_thigh
- name = "Thigh-high (UK)"
- icon_state = "uk_thigh"
-
-/datum/sprite_accessory/socks/white_thigh
- name = "Thigh-high (White)"
- icon_state = "white_thigh"
-
-//////////.//////////////////
-// MutantParts Definitions //
-/////////////////////////////
-
-/datum/sprite_accessory/body_markings
- icon = 'icons/mob/mutant_bodyparts.dmi'
-
-/datum/sprite_accessory/body_markings/none
- name = "None"
- icon_state = "none"
-
-/datum/sprite_accessory/body_markings/dtiger
- name = "Dark Tiger Body"
- icon_state = "dtiger"
- gender_specific = 1
-
-/datum/sprite_accessory/body_markings/ltiger
- name = "Light Tiger Body"
- icon_state = "ltiger"
- gender_specific = 1
-
-/datum/sprite_accessory/body_markings/lbelly
- name = "Light Belly"
- icon_state = "lbelly"
- gender_specific = 1
-
-/datum/sprite_accessory/tails
- icon = 'icons/mob/mutant_bodyparts.dmi'
-
-/datum/sprite_accessory/tails_animated
- icon = 'icons/mob/mutant_bodyparts.dmi'
-
-/datum/sprite_accessory/tails/lizard/smooth
- name = "Smooth"
- icon_state = "smooth"
-
-/datum/sprite_accessory/tails_animated/lizard/smooth
- name = "Smooth"
- icon_state = "smooth"
-
-/datum/sprite_accessory/tails/lizard/dtiger
- name = "Dark Tiger"
- icon_state = "dtiger"
-
-/datum/sprite_accessory/tails_animated/lizard/dtiger
- name = "Dark Tiger"
- icon_state = "dtiger"
-
-/datum/sprite_accessory/tails/lizard/ltiger
- name = "Light Tiger"
- icon_state = "ltiger"
-
-/datum/sprite_accessory/tails_animated/lizard/ltiger
- name = "Light Tiger"
- icon_state = "ltiger"
-
-/datum/sprite_accessory/tails/lizard/spikes
- name = "Spikes"
- icon_state = "spikes"
-
-/datum/sprite_accessory/tails_animated/lizard/spikes
- name = "Spikes"
- icon_state = "spikes"
-
-/datum/sprite_accessory/tails/human/none
- name = "None"
- icon_state = "none"
-
-/datum/sprite_accessory/tails_animated/human/none
- name = "None"
- icon_state = "none"
-/*
-/datum/sprite_accessory/tails/human/cat
- name = "Cat"
- icon_state = "cat"
- color_src = HAIR
-
-/datum/sprite_accessory/tails_animated/human/cat
- name = "Cat"
- icon_state = "cat"
- color_src = HAIR*/
-
-/datum/sprite_accessory/snouts
- icon = 'icons/mob/mutant_bodyparts.dmi'
-
-/datum/sprite_accessory/snouts/sharp
- name = "Sharp"
- icon_state = "sharp"
-
-/datum/sprite_accessory/snouts/round
- name = "Round"
- icon_state = "round"
-
-/datum/sprite_accessory/snouts/sharplight
- name = "Sharp + Light"
- icon_state = "sharplight"
-
-/datum/sprite_accessory/snouts/roundlight
- name = "Round + Light"
- icon_state = "roundlight"
-
-/datum/sprite_accessory/horns
- icon = 'icons/mob/mutant_bodyparts.dmi'
-
-/datum/sprite_accessory/horns/none
- name = "None"
- icon_state = "none"
-
-/datum/sprite_accessory/horns/simple
- name = "Simple"
- icon_state = "simple"
-
-/datum/sprite_accessory/horns/short
- name = "Short"
- icon_state = "short"
-
-/datum/sprite_accessory/horns/curled
- name = "Curled"
- icon_state = "curled"
-
-/datum/sprite_accessory/horns/ram
- name = "Ram"
- icon_state = "ram"
-
-/datum/sprite_accessory/horns/angler
- name = "Angeler"
- icon_state = "angler"
-
-/datum/sprite_accessory/ears
- icon = 'icons/mob/mutant_bodyparts.dmi'
-
-/datum/sprite_accessory/ears/none
- name = "None"
- icon_state = "none"
-
-/datum/sprite_accessory/ears/cat
- name = "Cat"
- icon_state = "cat"
- hasinner = 1
- color_src = HAIR
-
-/datum/sprite_accessory/wings/none
- name = "None"
- icon_state = "none"
-
-/datum/sprite_accessory/wings_open
- icon = 'icons/mob/wings.dmi'
-
-/datum/sprite_accessory/wings_open/angel
- name = "Angel"
- icon_state = "angel"
- color_src = 0
- dimension_x = 46
- center = TRUE
- dimension_y = 34
-
-/datum/sprite_accessory/wings
- icon = 'icons/mob/wings.dmi'
-
-/datum/sprite_accessory/wings/angel
- name = "Angel"
- icon_state = "angel"
- color_src = 0
- dimension_x = 46
- center = TRUE
- dimension_y = 34
- locked = TRUE
-
-/datum/sprite_accessory/frills
- icon = 'icons/mob/mutant_bodyparts.dmi'
-
-/datum/sprite_accessory/frills/none
- name = "None"
- icon_state = "none"
-
-/datum/sprite_accessory/frills/simple
- name = "Simple"
- icon_state = "simple"
-
-/datum/sprite_accessory/frills/short
- name = "Short"
- icon_state = "short"
-
-/datum/sprite_accessory/frills/aquatic
- name = "Aquatic"
- icon_state = "aqua"
-
-/datum/sprite_accessory/spines
- icon = 'icons/mob/mutant_bodyparts.dmi'
-
-/datum/sprite_accessory/spines_animated
- icon = 'icons/mob/mutant_bodyparts.dmi'
-
-/datum/sprite_accessory/spines/none
- name = "None"
- icon_state = "none"
-
-/datum/sprite_accessory/spines_animated/none
- name = "None"
- icon_state = "none"
-
-/datum/sprite_accessory/spines/short
- name = "Short"
- icon_state = "short"
-
-/datum/sprite_accessory/spines_animated/short
- name = "Short"
- icon_state = "short"
-
-/datum/sprite_accessory/spines/shortmeme
- name = "Short + Membrane"
- icon_state = "shortmeme"
-
-/datum/sprite_accessory/spines_animated/shortmeme
- name = "Short + Membrane"
- icon_state = "shortmeme"
-
-/datum/sprite_accessory/spines/long
- name = "Long"
- icon_state = "long"
-
-/datum/sprite_accessory/spines_animated/long
- name = "Long"
- icon_state = "long"
-
-/datum/sprite_accessory/spines/longmeme
- name = "Long + Membrane"
- icon_state = "longmeme"
-
-/datum/sprite_accessory/spines_animated/longmeme
- name = "Long + Membrane"
- icon_state = "longmeme"
-
-/datum/sprite_accessory/spines/aqautic
- name = "Aquatic"
- icon_state = "aqua"
-
-/datum/sprite_accessory/spines_animated/aqautic
- name = "Aquatic"
- icon_state = "aqua"
-
-/datum/sprite_accessory/legs //legs are a special case, they aren't actually sprite_accessories but are updated with them.
- icon = null //These datums exist for selecting legs on preference, and little else
-
-/datum/sprite_accessory/legs/none
- name = "Normal Legs"
-
-/datum/sprite_accessory/legs/digitigrade_lizard
- name = "Digitigrade Legs"
-
-/datum/sprite_accessory/caps
- icon = 'icons/mob/mutant_bodyparts.dmi'
- color_src = HAIR
-
-/datum/sprite_accessory/caps/round
- name = "Round"
- icon_state = "round"
-
-/datum/sprite_accessory/moth_wings
- icon = 'icons/mob/wings.dmi'
- color_src = null
-
-/datum/sprite_accessory/moth_wings/plain
- name = "Plain"
- icon_state = "plain"
-
-/datum/sprite_accessory/moth_wings/monarch
- name = "Monarch"
- icon_state = "monarch"
-
-/datum/sprite_accessory/moth_wings/luna
- name = "Luna"
- icon_state = "luna"
-
-/datum/sprite_accessory/moth_wings/atlas
- name = "Atlas"
- icon_state = "atlas"
-
-/datum/sprite_accessory/moth_wings/reddish
- name = "Reddish"
- icon_state = "redish"
-
-/datum/sprite_accessory/moth_wings/royal
- name = "Royal"
- icon_state = "royal"
-
-/datum/sprite_accessory/moth_wings/gothic
- name = "Gothic"
- icon_state = "gothic"
-
-/datum/sprite_accessory/moth_wings/lovers
- name = "Lovers"
- icon_state = "lovers"
-
-/datum/sprite_accessory/moth_wings/whitefly
- name = "White Fly"
- icon_state = "whitefly"
-
-/datum/sprite_accessory/moth_wings/punished
- name = "Burnt Off"
- icon_state = "punished"
- locked = TRUE
-
-/datum/sprite_accessory/moth_wings/firewatch
- name = "Firewatch"
- icon_state = "firewatch"
-
-/datum/sprite_accessory/moth_wings/deathhead
- name = "Deathshead"
- icon_state = "deathhead"
-
-/datum/sprite_accessory/moth_wings/poison
- name = "Poison"
- icon_state = "poison"
-
-/datum/sprite_accessory/moth_wings/ragged
- name = "Ragged"
- icon_state = "ragged"
-
-/datum/sprite_accessory/moth_wings/moonfly
- name = "Moon Fly"
- icon_state = "moonfly"
-
-/datum/sprite_accessory/moth_wings/snow
- name = "Snow"
- icon_state = "snow"
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
new file mode 100644
index 0000000000..699c3c97e4
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/_sprite_accessories.dm
@@ -0,0 +1,62 @@
+/*
+
+ Hello and welcome to sprite_accessories: For sprite accessories, such as hair,
+ facial hair, and possibly tattoos and stuff somewhere along the line. This file is
+ intended to be friendly for people with little to no actual coding experience.
+ The process of adding in new hairstyles has been made pain-free and easy to do.
+ Enjoy! - Doohl
+
+
+ Notice: This all gets automatically compiled in a list in dna.dm, so you do not
+ have to define any UI values for sprite accessories manually for hair and facial
+ hair. Just add in new hair types and the game will naturally adapt.
+
+ !!WARNING!!: changing existing hair information can be VERY hazardous to savefiles,
+ to the point where you may completely corrupt a server's savefiles. Please refrain
+ from doing this unless you absolutely know what you are doing, and have defined a
+ conversion in savefile.dm
+*/
+/proc/init_sprite_accessory_subtypes(prototype, list/L, list/male, list/female,var/roundstart = FALSE)//Roundstart argument builds a specific list for roundstart parts where some parts may be locked
+ if(!istype(L))
+ L = list()
+ if(!istype(male))
+ male = list()
+ if(!istype(female))
+ female = list()
+
+ for(var/path in typesof(prototype))
+ if(path == prototype)
+ continue
+ if(roundstart)
+ var/datum/sprite_accessory/P = path
+ if(initial(P.locked))
+ continue
+ var/datum/sprite_accessory/D = new path()
+
+ if(D.icon_state)
+ L[D.name] = D
+ else
+ L += D.name
+
+ switch(D.gender)
+ if(MALE)
+ male += D.name
+ if(FEMALE)
+ female += D.name
+ else
+ male += D.name
+ female += D.name
+ return L
+
+/datum/sprite_accessory
+ var/icon //the icon file the accessory is located in
+ var/icon_state //the icon_state of the accessory
+ var/name //the preview name of the accessory
+ var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations
+ var/gender_specific //Something that can be worn by either gender, but looks different on each
+ var/color_src = MUTCOLORS //Currently only used by mutantparts so don't worry about hair and stuff. This is the source that this accessory will get its color from. Default is MUTCOLOR, but can also be HAIR, FACEHAIR, EYECOLOR and 0 if none.
+ var/hasinner //Decides if this sprite has an "inner" part, such as the fleshy parts on ears.
+ var/locked = FALSE //Is this part locked from roundstart selection? Used for parts that apply effects
+ var/dimension_x = 32
+ var/dimension_y = 32
+ var/center = FALSE //Should we center the sprite?
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm
new file mode 100644
index 0000000000..6bce18d7ce
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm
@@ -0,0 +1,25 @@
+//////////.//////////////////
+// MutantParts Definitions //
+/////////////////////////////
+
+/datum/sprite_accessory/body_markings
+ icon = 'icons/mob/mutant_bodyparts.dmi'
+
+/datum/sprite_accessory/body_markings/none
+ name = "None"
+ icon_state = "none"
+
+/datum/sprite_accessory/body_markings/dtiger
+ name = "Dark Tiger Body"
+ icon_state = "dtiger"
+ gender_specific = 1
+
+/datum/sprite_accessory/body_markings/ltiger
+ name = "Light Tiger Body"
+ icon_state = "ltiger"
+ gender_specific = 1
+
+/datum/sprite_accessory/body_markings/lbelly
+ name = "Light Belly"
+ icon_state = "lbelly"
+ gender_specific = 1
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/caps.dm b/code/modules/mob/dead/new_player/sprite_accessories/caps.dm
new file mode 100644
index 0000000000..debb4865ba
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/caps.dm
@@ -0,0 +1,7 @@
+datum/sprite_accessory/caps
+ icon = 'icons/mob/mutant_bodyparts.dmi'
+ color_src = HAIR
+
+/datum/sprite_accessory/caps/round
+ name = "Round"
+ icon_state = "round"
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ears.dm b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm
new file mode 100644
index 0000000000..163f8370a2
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/ears.dm
@@ -0,0 +1,12 @@
+/datum/sprite_accessory/ears
+ icon = 'icons/mob/mutant_bodyparts.dmi'
+
+/datum/sprite_accessory/ears/none
+ name = "None"
+ icon_state = "none"
+
+/datum/sprite_accessory/ears/cat
+ name = "Cat"
+ icon_state = "cat"
+ hasinner = 1
+ color_src = HAIR
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/frills.dm b/code/modules/mob/dead/new_player/sprite_accessories/frills.dm
new file mode 100644
index 0000000000..93c4af6df0
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/frills.dm
@@ -0,0 +1,18 @@
+/datum/sprite_accessory/frills
+ icon = 'icons/mob/mutant_bodyparts.dmi'
+
+/datum/sprite_accessory/frills/none
+ name = "None"
+ icon_state = "none"
+
+/datum/sprite_accessory/frills/simple
+ name = "Simple"
+ icon_state = "simple"
+
+/datum/sprite_accessory/frills/short
+ name = "Short"
+ icon_state = "short"
+
+/datum/sprite_accessory/frills/aquatic
+ name = "Aquatic"
+ icon_state = "aqua"
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm b/code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm
new file mode 100644
index 0000000000..3566f3dea5
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/hair_face.dm
@@ -0,0 +1,89 @@
+/////////////////////////////
+// Facial Hair Definitions //
+/////////////////////////////
+/datum/sprite_accessory/facial_hair
+ icon = 'icons/mob/human_face.dmi'
+ gender = MALE // barf (unless you're a dorf, dorfs dig chix w/ beards :P)
+
+// please make sure they're sorted alphabetically and categorized
+
+/datum/sprite_accessory/facial_hair/abe
+ name = "Beard (Abraham Lincoln)"
+ icon_state = "facial_abe"
+
+/datum/sprite_accessory/facial_hair/brokenman
+ name = "Beard (Broken Man)"
+ icon_state = "facial_brokenman"
+
+/datum/sprite_accessory/facial_hair/chinstrap
+ name = "Beard (Chinstrap)"
+ icon_state = "facial_chin"
+
+/datum/sprite_accessory/facial_hair/dwarf
+ name = "Beard (Dwarf)"
+ icon_state = "facial_dwarf"
+
+/datum/sprite_accessory/facial_hair/fiveoclock
+ name = "Beard (Five o Clock Shadow)"
+ icon_state = "facial_fiveoclock"
+
+/datum/sprite_accessory/facial_hair/fullbeard
+ name = "Beard (Full)"
+ icon_state = "facial_fullbeard"
+
+/datum/sprite_accessory/facial_hair/gt
+ name = "Beard (Goatee)"
+ icon_state = "facial_gt"
+
+/datum/sprite_accessory/facial_hair/hip
+ name = "Beard (Hipster)"
+ icon_state = "facial_hip"
+
+/datum/sprite_accessory/facial_hair/jensen
+ name = "Beard (Jensen)"
+ icon_state = "facial_jensen"
+
+/datum/sprite_accessory/facial_hair/neckbeard
+ name = "Beard (Neckbeard)"
+ icon_state = "facial_neckbeard"
+
+/datum/sprite_accessory/facial_hair/vlongbeard
+ name = "Beard (Very Long)"
+ icon_state = "facial_wise"
+
+/datum/sprite_accessory/facial_hair/longbeard
+ name = "Beard (Long)"
+ icon_state = "facial_longbeard"
+
+/datum/sprite_accessory/facial_hair/fu
+ name = "Moustache (Fu Manchu)"
+ icon_state = "facial_fumanchu"
+
+/datum/sprite_accessory/facial_hair/hogan
+ name = "Moustache (Hulk Hogan)"
+ icon_state = "facial_hogan" //-Neek
+
+/datum/sprite_accessory/facial_hair/selleck
+ name = "Moustache (Selleck)"
+ icon_state = "facial_selleck"
+
+/datum/sprite_accessory/facial_hair/chaplin
+ name = "Moustache (Square)"
+ icon_state = "facial_chaplin"
+
+/datum/sprite_accessory/facial_hair/vandyke
+ name = "Moustache (Van Dyke)"
+ icon_state = "facial_vandyke"
+
+/datum/sprite_accessory/facial_hair/watson
+ name = "Moustache (Watson)"
+ icon_state = "facial_watson"
+
+/datum/sprite_accessory/facial_hair/shaved
+ name = "Shaved"
+ icon_state = null
+ gender = NEUTER
+
+/datum/sprite_accessory/facial_hair/elvis
+ name = "Sideburns (Elvis)"
+ icon_state = "facial_elvis"
\ No newline at end of file
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
new file mode 100644
index 0000000000..66c79ea0f0
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/hair_head.dm
@@ -0,0 +1,460 @@
+//////////////////////
+// Hair Definitions //
+//////////////////////
+/datum/sprite_accessory/hair
+ icon = 'icons/mob/human_face.dmi' // default icon for all hairs
+
+ // please make sure they're sorted alphabetically and, where needed, categorized
+ // try to capitalize the names please~
+ // try to spell
+ // you do not need to define _s or _l sub-states, game automatically does this for you
+
+/datum/sprite_accessory/hair/afro
+ name = "Afro"
+ icon_state = "hair_afro"
+
+/datum/sprite_accessory/hair/afro2
+ name = "Afro 2"
+ icon_state = "hair_afro2"
+
+/datum/sprite_accessory/hair/afro_large
+ name = "Afro (Large)"
+ icon_state = "hair_bigafro"
+
+/datum/sprite_accessory/hair/antenna
+ name = "Ahoge"
+ icon_state = "hair_antenna"
+
+/datum/sprite_accessory/hair/bald
+ name = "Bald"
+ icon_state = null
+
+/datum/sprite_accessory/hair/balding
+ name = "Balding Hair"
+ icon_state = "hair_e"
+
+/datum/sprite_accessory/hair/bedhead
+ name = "Bedhead"
+ icon_state = "hair_bedhead"
+
+/datum/sprite_accessory/hair/bedhead2
+ name = "Bedhead 2"
+ icon_state = "hair_bedheadv2"
+
+/datum/sprite_accessory/hair/bedhead3
+ name = "Bedhead 3"
+ icon_state = "hair_bedheadv3"
+
+/datum/sprite_accessory/hair/beehive
+ name = "Beehive"
+ icon_state = "hair_beehive"
+
+/datum/sprite_accessory/hair/beehive2
+ name = "Beehive 2"
+ icon_state = "hair_beehivev2"
+
+/datum/sprite_accessory/hair/bob
+ name = "Bob Hair"
+ icon_state = "hair_bob"
+
+/datum/sprite_accessory/hair/bob2
+ name = "Bob Hair 2"
+ icon_state = "hair_bob2"
+
+/datum/sprite_accessory/hair/bob3
+ name = "Bob Hair 3"
+ icon_state = "hair_bobcut"
+
+/datum/sprite_accessory/hair/bobcurl
+ name = "Bobcurl"
+ icon_state = "hair_bobcurl"
+
+/datum/sprite_accessory/hair/boddicker
+ name = "Boddicker"
+ icon_state = "hair_boddicker"
+
+/datum/sprite_accessory/hair/bowl
+ name = "Bowl"
+ icon_state = "hair_bowlcut"
+
+/datum/sprite_accessory/hair/braid
+ name = "Braid (Floorlength)"
+ icon_state = "hair_braid"
+
+/datum/sprite_accessory/hair/braided
+ name = "Braided"
+ icon_state = "hair_braided"
+
+/datum/sprite_accessory/hair/front_braid
+ name = "Braided Front"
+ icon_state = "hair_braidfront"
+
+/datum/sprite_accessory/hair/not_floorlength_braid
+ name = "Braid (High)"
+ icon_state = "hair_braid2"
+
+/datum/sprite_accessory/hair/lowbraid
+ name = "Braid (Low)"
+ icon_state = "hair_hbraid"
+
+/datum/sprite_accessory/hair/shortbraid
+ name = "Braid (Short)"
+ icon_state = "hair_shortbraid"
+
+/datum/sprite_accessory/hair/braidtail
+ name = "Braided Tail"
+ icon_state = "hair_braidtail"
+
+/datum/sprite_accessory/hair/bun
+ name = "Bun Head"
+ icon_state = "hair_bun"
+
+/datum/sprite_accessory/hair/bun2
+ name = "Bun Head 2"
+ icon_state = "hair_bunhead2"
+
+/datum/sprite_accessory/hair/largebun
+ name = "Bun (Large)"
+ icon_state = "hair_largebun"
+
+/datum/sprite_accessory/hair/business
+ name = "Business Hair"
+ icon_state = "hair_business"
+
+/datum/sprite_accessory/hair/business2
+ name = "Business Hair 2"
+ icon_state = "hair_business2"
+
+/datum/sprite_accessory/hair/business3
+ name = "Business Hair 3"
+ icon_state = "hair_business3"
+
+/datum/sprite_accessory/hair/business4
+ name = "Business Hair 4"
+ icon_state = "hair_business4"
+
+/datum/sprite_accessory/hair/buzz
+ name = "Buzzcut"
+ icon_state = "hair_buzzcut"
+
+/datum/sprite_accessory/hair/combover
+ name = "Combover"
+ icon_state = "hair_combover"
+
+/datum/sprite_accessory/hair/crew
+ name = "Crewcut"
+ icon_state = "hair_crewcut"
+
+/datum/sprite_accessory/hair/curls
+ name = "Curls"
+ icon_state = "hair_curls"
+
+/datum/sprite_accessory/hair/cut
+ name = "Cut Hair"
+ icon_state = "hair_c"
+
+/datum/sprite_accessory/hair/devillock
+ name = "Devil Lock"
+ icon_state = "hair_devilock"
+
+/datum/sprite_accessory/hair/dreadlocks
+ name = "Dreadlocks"
+ icon_state = "hair_dreads"
+
+/datum/sprite_accessory/hair/drillhair
+ name = "Drill Hair"
+ icon_state = "hair_drillhair"
+
+/datum/sprite_accessory/hair/drillhairextended
+ name = "Drill Hair (Extended)"
+ icon_state = "hair_drillhairextended"
+
+/datum/sprite_accessory/hair/emo
+ name = "Emo"
+ icon_state = "hair_emo"
+
+/datum/sprite_accessory/hair/feather
+ name = "Feather"
+ icon_state = "hair_feather"
+
+/datum/sprite_accessory/hair/sargeant
+ name = "Flat Top"
+ icon_state = "hair_sargeant"
+
+/datum/sprite_accessory/hair/bigflattop
+ name = "Flat Top (Big)"
+ icon_state = "hair_bigflattop"
+
+/datum/sprite_accessory/hair/fag
+ name = "Flow Hair"
+ icon_state = "hair_f"
+
+/datum/sprite_accessory/hair/gelled
+ name = "Gelled Back"
+ icon_state = "hair_gelled"
+
+/datum/sprite_accessory/hair/gentle
+ name = "Gentle"
+ icon_state = "hair_gentle"
+
+/datum/sprite_accessory/hair/halfbang
+ name = "Half-banged Hair"
+ icon_state = "hair_halfbang"
+
+/datum/sprite_accessory/hair/halfbang2
+ name = "Half-banged Hair 2"
+ icon_state = "hair_halfbang2"
+
+/datum/sprite_accessory/hair/hedgehog
+ name = "Hedgehog Hair"
+ icon_state = "hair_hedgehog"
+
+/datum/sprite_accessory/hair/himecut
+ name = "Hime Cut"
+ icon_state = "hair_himecut"
+
+/datum/sprite_accessory/hair/himecut2
+ name = "Hime Cut 2"
+ icon_state = "hair_himecut2"
+
+/datum/sprite_accessory/hair/himeup
+ name = "Hime Updo"
+ icon_state = "hair_himeup"
+
+/datum/sprite_accessory/hair/hitop
+ name = "Hitop"
+ icon_state = "hair_hitop"
+
+/datum/sprite_accessory/hair/jensen
+ name = "Jensen Hair"
+ icon_state = "hair_jensen"
+
+/datum/sprite_accessory/hair/keanu
+ name = "Keanu Hair"
+ icon_state = "hair_keanu"
+
+/datum/sprite_accessory/hair/kusangi
+ name = "Kusanagi Hair"
+ icon_state = "hair_kusanagi"
+
+/datum/sprite_accessory/hair/long
+ name = "Long Hair 1"
+ icon_state = "hair_long"
+
+/datum/sprite_accessory/hair/long2
+ name = "Long Hair 2"
+ icon_state = "hair_long2"
+
+/datum/sprite_accessory/hair/long3
+ name = "Long Hair 3"
+ icon_state = "hair_long3"
+
+/datum/sprite_accessory/hair/long_over_eye
+ name = "Long Over Eye"
+ icon_state = "hair_longovereye"
+
+/datum/sprite_accessory/hair/longbangs
+ name = "Long Bangs"
+ icon_state = "hair_lbangs"
+
+/datum/sprite_accessory/hair/longemo
+ name = "Long Emo"
+ icon_state = "hair_longemo"
+
+/datum/sprite_accessory/hair/longfringe
+ name = "Long Fringe"
+ icon_state = "hair_longfringe"
+
+/datum/sprite_accessory/hair/sidepartlongalt
+ name = "Long Side Part"
+ icon_state = "hair_longsidepart"
+
+/datum/sprite_accessory/hair/megaeyebrows
+ name = "Mega Eyebrows"
+ icon_state = "hair_megaeyebrows"
+
+/datum/sprite_accessory/hair/messy
+ name = "Messy"
+ icon_state = "hair_messy"
+
+/datum/sprite_accessory/hair/mohawk
+ name = "Mohawk"
+ icon_state = "hair_d"
+
+/datum/sprite_accessory/hair/reversemohawk
+ name = "Mohawk (Reverse)"
+ icon_state = "hair_reversemohawk"
+
+/datum/sprite_accessory/hair/odango
+ name = "Odango"
+ icon_state = "hair_odango"
+
+/datum/sprite_accessory/hair/ombre
+ name = "Ombre"
+ icon_state = "hair_ombre"
+
+/datum/sprite_accessory/hair/oneshoulder
+ name = "One Shoulder"
+ icon_state = "hair_oneshoulder"
+
+/datum/sprite_accessory/hair/over_eye
+ name = "Over Eye"
+ icon_state = "hair_shortovereye"
+
+//Donator item - fractious
+/datum/sprite_accessory/hair/over_eye_fr
+ name = "Over Eye (fract)"
+ icon_state = "hair_shortovereye_1f"
+ ckeys_allowed = list("fractious")
+
+/datum/sprite_accessory/hair/parted
+ name = "Parted"
+ icon_state = "hair_parted"
+
+/datum/sprite_accessory/hair/partedside
+ name = "Parted (Side)"
+ icon_state = "hair_part"
+
+/datum/sprite_accessory/hair/kagami
+ name = "Pigtails"
+ icon_state = "hair_kagami"
+
+/datum/sprite_accessory/hair/pigtail
+ name = "Pigtails 2"
+ icon_state = "hair_pigtails"
+
+/datum/sprite_accessory/hair/pigtail2
+ name = "Pigtails 3"
+ icon_state = "hair_pigtails2"
+
+/datum/sprite_accessory/hair/pixie
+ name = "Pixie Cut"
+ icon_state = "hair_pixie"
+
+/datum/sprite_accessory/hair/pompadour
+ name = "Pompadour"
+ icon_state = "hair_pompadour"
+
+/datum/sprite_accessory/hair/bigpompadour
+ name = "Pompadour (Big)"
+ icon_state = "hair_bigpompadour"
+
+/datum/sprite_accessory/hair/ponytail1
+ name = "Ponytail"
+ icon_state = "hair_ponytail"
+
+/datum/sprite_accessory/hair/ponytail2
+ name = "Ponytail 2"
+ icon_state = "hair_ponytail2"
+
+/datum/sprite_accessory/hair/ponytail3
+ name = "Ponytail 3"
+ icon_state = "hair_ponytail3"
+
+/datum/sprite_accessory/hair/ponytail4
+ name = "Ponytail 4"
+ icon_state = "hair_ponytail4"
+
+/datum/sprite_accessory/hair/ponytail5
+ name = "Ponytail 5"
+ icon_state = "hair_ponytail5"
+
+/datum/sprite_accessory/hair/highponytail
+ name = "Ponytail (High)"
+ icon_state = "hair_highponytail"
+
+/datum/sprite_accessory/hair/longponytail
+ name = "Ponytail (Long)"
+ icon_state = "hair_longstraightponytail"
+
+/datum/sprite_accessory/hair/sidetail
+ name = "Ponytail (Side)"
+ icon_state = "hair_sidetail"
+
+/datum/sprite_accessory/hair/sidetail2
+ name = "Ponytail (Side) 2"
+ icon_state = "hair_sidetail2"
+
+/datum/sprite_accessory/hair/sidetail3
+ name = "Ponytail (Side) 3"
+ icon_state = "hair_sidetail3"
+
+/datum/sprite_accessory/hair/sidetail4
+ name = "Ponytail (Side) 4"
+ icon_state = "hair_sidetail4"
+
+/datum/sprite_accessory/hair/quiff
+ name = "Quiff"
+ icon_state = "hair_quiff"
+
+/datum/sprite_accessory/hair/short
+ name = "Short Hair"
+ icon_state = "hair_a"
+
+/datum/sprite_accessory/hair/shorthair2
+ name = "Short Hair 2"
+ icon_state = "hair_shorthair2"
+
+/datum/sprite_accessory/hair/shorthair3
+ name = "Short Hair 3"
+ icon_state = "hair_shorthair3"
+
+/datum/sprite_accessory/hair/shoulderlength
+ name = "Shoulder-length Hair"
+ icon_state = "hair_b"
+
+/datum/sprite_accessory/hair/sidecut
+ name = "Sidecut"
+ icon_state = "hair_sidecut"
+
+/datum/sprite_accessory/hair/skinhead
+ name = "Skinhead"
+ icon_state = "hair_skinhead"
+
+/datum/sprite_accessory/hair/protagonist
+ name = "Slightly Long Hair"
+ icon_state = "hair_protagonist"
+
+/datum/sprite_accessory/hair/spiky
+ name = "Spiky"
+ icon_state = "hair_spikey"
+
+/datum/sprite_accessory/hair/spiky2
+ name = "Spiky 2"
+ icon_state = "hair_spiky"
+
+/datum/sprite_accessory/hair/spiky3
+ name = "Spiky 3"
+ icon_state = "hair_spiky2"
+
+/datum/sprite_accessory/hair/swept
+ name = "Swept Back Hair"
+ icon_state = "hair_swept"
+
+/datum/sprite_accessory/hair/swept2
+ name = "Swept Back Hair 2"
+ icon_state = "hair_swept2"
+
+/datum/sprite_accessory/hair/tressshoulder
+ name = "Tress Shoulder"
+ icon_state = "hair_tressshoulder"
+
+/datum/sprite_accessory/hair/updo
+ name = "Updo"
+ icon_state = "hair_updo"
+
+/datum/sprite_accessory/hair/longer
+ name = "Very Long Hair"
+ icon_state = "hair_vlong"
+
+/datum/sprite_accessory/hair/longest
+ name = "Very Long Hair 2"
+ icon_state = "hair_longest"
+
+/datum/sprite_accessory/hair/longest2
+ name = "Very Long Over Eye"
+ icon_state = "hair_longest2"
+
+/datum/sprite_accessory/hair/longestalt
+ name = "Very Long with Fringe"
+ icon_state = "hair_vlongfringe"
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/horns.dm b/code/modules/mob/dead/new_player/sprite_accessories/horns.dm
new file mode 100644
index 0000000000..607ad650e3
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/horns.dm
@@ -0,0 +1,26 @@
+/datum/sprite_accessory/horns
+ icon = 'icons/mob/mutant_bodyparts.dmi'
+
+/datum/sprite_accessory/horns/none
+ name = "None"
+ icon_state = "none"
+
+/datum/sprite_accessory/horns/simple
+ name = "Simple"
+ icon_state = "simple"
+
+/datum/sprite_accessory/horns/short
+ name = "Short"
+ icon_state = "short"
+
+/datum/sprite_accessory/horns/curled
+ name = "Curled"
+ icon_state = "curled"
+
+/datum/sprite_accessory/horns/ram
+ name = "Ram"
+ icon_state = "ram"
+
+/datum/sprite_accessory/horns/angler
+ name = "Angeler"
+ icon_state = "angler"
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/legs.dm b/code/modules/mob/dead/new_player/sprite_accessories/legs.dm
new file mode 100644
index 0000000000..7663100822
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/legs.dm
@@ -0,0 +1,8 @@
+/datum/sprite_accessory/legs //legs are a special case, they aren't actually sprite_accessories but are updated with them.
+ icon = null //These datums exist for selecting legs on preference, and little else
+
+/datum/sprite_accessory/legs/none
+ name = "Normal Legs"
+
+/datum/sprite_accessory/legs/digitigrade_lizard
+ name = "Digitigrade Legs"
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/moth_wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/moth_wings.dm
new file mode 100644
index 0000000000..6b8036bd69
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/moth_wings.dm
@@ -0,0 +1,68 @@
+/datum/sprite_accessory/moth_wings
+ icon = 'icons/mob/wings.dmi'
+ color_src = null
+
+/datum/sprite_accessory/moth_wings/plain
+ name = "Plain"
+ icon_state = "plain"
+
+/datum/sprite_accessory/moth_wings/monarch
+ name = "Monarch"
+ icon_state = "monarch"
+
+/datum/sprite_accessory/moth_wings/luna
+ name = "Luna"
+ icon_state = "luna"
+
+/datum/sprite_accessory/moth_wings/atlas
+ name = "Atlas"
+ icon_state = "atlas"
+
+/datum/sprite_accessory/moth_wings/reddish
+ name = "Reddish"
+ icon_state = "redish"
+
+/datum/sprite_accessory/moth_wings/royal
+ name = "Royal"
+ icon_state = "royal"
+
+/datum/sprite_accessory/moth_wings/gothic
+ name = "Gothic"
+ icon_state = "gothic"
+
+/datum/sprite_accessory/moth_wings/lovers
+ name = "Lovers"
+ icon_state = "lovers"
+
+/datum/sprite_accessory/moth_wings/whitefly
+ name = "White Fly"
+ icon_state = "whitefly"
+
+/datum/sprite_accessory/moth_wings/punished
+ name = "Burnt Off"
+ icon_state = "punished"
+ locked = TRUE
+
+/datum/sprite_accessory/moth_wings/firewatch
+ name = "Firewatch"
+ icon_state = "firewatch"
+
+/datum/sprite_accessory/moth_wings/deathhead
+ name = "Deathshead"
+ icon_state = "deathhead"
+
+/datum/sprite_accessory/moth_wings/poison
+ name = "Poison"
+ icon_state = "poison"
+
+/datum/sprite_accessory/moth_wings/ragged
+ name = "Ragged"
+ icon_state = "ragged"
+
+/datum/sprite_accessory/moth_wings/moonfly
+ name = "Moon Fly"
+ icon_state = "moonfly"
+
+/datum/sprite_accessory/moth_wings/snow
+ name = "Snow"
+ icon_state = "snow"
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/pines.dm b/code/modules/mob/dead/new_player/sprite_accessories/pines.dm
new file mode 100644
index 0000000000..4ccbc3d9ea
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/pines.dm
@@ -0,0 +1,53 @@
+/datum/sprite_accessory/spines
+ icon = 'icons/mob/mutant_bodyparts.dmi'
+
+/datum/sprite_accessory/spines_animated
+ icon = 'icons/mob/mutant_bodyparts.dmi'
+
+/datum/sprite_accessory/spines/none
+ name = "None"
+ icon_state = "none"
+
+/datum/sprite_accessory/spines_animated/none
+ name = "None"
+ icon_state = "none"
+
+/datum/sprite_accessory/spines/short
+ name = "Short"
+ icon_state = "short"
+
+/datum/sprite_accessory/spines_animated/short
+ name = "Short"
+ icon_state = "short"
+
+/datum/sprite_accessory/spines/shortmeme
+ name = "Short + Membrane"
+ icon_state = "shortmeme"
+
+/datum/sprite_accessory/spines_animated/shortmeme
+ name = "Short + Membrane"
+ icon_state = "shortmeme"
+
+/datum/sprite_accessory/spines/long
+ name = "Long"
+ icon_state = "long"
+
+/datum/sprite_accessory/spines_animated/long
+ name = "Long"
+ icon_state = "long"
+
+/datum/sprite_accessory/spines/longmeme
+ name = "Long + Membrane"
+ icon_state = "longmeme"
+
+/datum/sprite_accessory/spines_animated/longmeme
+ name = "Long + Membrane"
+ icon_state = "longmeme"
+
+/datum/sprite_accessory/spines/aqautic
+ name = "Aquatic"
+ icon_state = "aqua"
+
+/datum/sprite_accessory/spines_animated/aqautic
+ name = "Aquatic"
+ icon_state = "aqua"
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm
new file mode 100644
index 0000000000..c663c08d69
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/snouts.dm
@@ -0,0 +1,18 @@
+/datum/sprite_accessory/snouts
+ icon = 'icons/mob/mutant_bodyparts.dmi'
+
+/datum/sprite_accessory/snouts/sharp
+ name = "Sharp"
+ icon_state = "sharp"
+
+/datum/sprite_accessory/snouts/round
+ name = "Round"
+ icon_state = "round"
+
+/datum/sprite_accessory/snouts/sharplight
+ name = "Sharp + Light"
+ icon_state = "sharplight"
+
+/datum/sprite_accessory/snouts/roundlight
+ name = "Round + Light"
+ icon_state = "roundlight"
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/socks.dm b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm
new file mode 100644
index 0000000000..5a5d37d4e7
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/socks.dm
@@ -0,0 +1,96 @@
+///////////////////////
+// Socks Definitions //
+///////////////////////
+
+/datum/sprite_accessory/socks
+ icon = 'icons/mob/underwear.dmi'
+
+/datum/sprite_accessory/socks/nude
+ name = "Nude"
+ icon_state = null
+
+// please make sure they're sorted alphabetically and categorized
+
+/datum/sprite_accessory/socks/black_knee
+ name = "Knee-high (Black)"
+ icon_state = "black_knee"
+
+/datum/sprite_accessory/socks/commie_knee
+ name = "Knee-High (Commie)"
+ icon_state = "commie_knee"
+
+/datum/sprite_accessory/socks/usa_knee
+ name = "Knee-High (Freedom)"
+ icon_state = "assblastusa_knee"
+
+/datum/sprite_accessory/socks/rainbow_knee
+ name = "Knee-high (Rainbow)"
+ icon_state = "rainbow_knee"
+
+/datum/sprite_accessory/socks/striped_knee
+ name = "Knee-high (Striped)"
+ icon_state = "striped_knee"
+
+/datum/sprite_accessory/socks/thin_knee
+ name = "Knee-high (Thin)"
+ icon_state = "thin_knee"
+
+/datum/sprite_accessory/socks/uk_knee
+ name = "Knee-High (UK)"
+ icon_state = "uk_knee"
+
+/datum/sprite_accessory/socks/white_knee
+ name = "Knee-high (White)"
+ icon_state = "white_knee"
+
+/datum/sprite_accessory/socks/black_norm
+ name = "Normal (Black)"
+ icon_state = "black_norm"
+
+/datum/sprite_accessory/socks/white_norm
+ name = "Normal (White)"
+ icon_state = "white_norm"
+
+/datum/sprite_accessory/socks/pantyhose
+ name = "Pantyhose"
+ icon_state = "pantyhose"
+
+/datum/sprite_accessory/socks/black_short
+ name = "Short (Black)"
+ icon_state = "black_short"
+
+/datum/sprite_accessory/socks/white_short
+ name = "Short (White)"
+ icon_state = "white_short"
+
+/datum/sprite_accessory/socks/black_thigh
+ name = "Thigh-high (Black)"
+ icon_state = "black_thigh"
+
+/datum/sprite_accessory/socks/commie_thigh
+ name = "Thigh-high (Commie)"
+ icon_state = "commie_thigh"
+
+/datum/sprite_accessory/socks/usa_thigh
+ name = "Thigh-high (Freedom)"
+ icon_state = "assblastusa_thigh"
+
+/datum/sprite_accessory/socks/rainbow_thigh
+ name = "Thigh-high (Rainbow)"
+ icon_state = "rainbow_thigh"
+
+/datum/sprite_accessory/socks/striped_thigh
+ name = "Thigh-high (Striped)"
+ icon_state = "striped_thigh"
+
+/datum/sprite_accessory/socks/thin_thigh
+ name = "Thigh-high (Thin)"
+ icon_state = "thin_thigh"
+
+/datum/sprite_accessory/socks/uk_thigh
+ name = "Thigh-high (UK)"
+ icon_state = "uk_thigh"
+
+/datum/sprite_accessory/socks/white_thigh
+ name = "Thigh-high (White)"
+ icon_state = "white_thigh"
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/tails.dm b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
new file mode 100644
index 0000000000..31faabf663
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/tails.dm
@@ -0,0 +1,55 @@
+/datum/sprite_accessory/tails
+ icon = 'icons/mob/mutant_bodyparts.dmi'
+
+/datum/sprite_accessory/tails_animated
+ icon = 'icons/mob/mutant_bodyparts.dmi'
+
+/datum/sprite_accessory/tails/lizard/smooth
+ name = "Smooth"
+ icon_state = "smooth"
+
+/datum/sprite_accessory/tails_animated/lizard/smooth
+ name = "Smooth"
+ icon_state = "smooth"
+
+/datum/sprite_accessory/tails/lizard/dtiger
+ name = "Dark Tiger"
+ icon_state = "dtiger"
+
+/datum/sprite_accessory/tails_animated/lizard/dtiger
+ name = "Dark Tiger"
+ icon_state = "dtiger"
+
+/datum/sprite_accessory/tails/lizard/ltiger
+ name = "Light Tiger"
+ icon_state = "ltiger"
+
+/datum/sprite_accessory/tails_animated/lizard/ltiger
+ name = "Light Tiger"
+ icon_state = "ltiger"
+
+/datum/sprite_accessory/tails/lizard/spikes
+ name = "Spikes"
+ icon_state = "spikes"
+
+/datum/sprite_accessory/tails_animated/lizard/spikes
+ name = "Spikes"
+ icon_state = "spikes"
+
+/datum/sprite_accessory/tails/human/none
+ name = "None"
+ icon_state = "none"
+
+/datum/sprite_accessory/tails_animated/human/none
+ name = "None"
+ icon_state = "none"
+/*
+/datum/sprite_accessory/tails/human/cat
+ name = "Cat"
+ icon_state = "cat"
+ color_src = HAIR
+
+/datum/sprite_accessory/tails_animated/human/cat
+ name = "Cat"
+ icon_state = "cat"
+ color_src = HAIR*/
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm b/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm
new file mode 100644
index 0000000000..7c66ef51e3
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/undershirt.dm
@@ -0,0 +1,308 @@
+////////////////////////////
+// Undershirt Definitions //
+////////////////////////////
+
+/datum/sprite_accessory/undershirt
+ icon = 'icons/mob/underwear.dmi'
+ gender = NEUTER
+
+/datum/sprite_accessory/undershirt/nude
+ name = "Nude"
+ icon_state = null
+
+// please make sure they're sorted alphabetically and categorized
+
+/datum/sprite_accessory/undershirt/bluejersey
+ name = "Shirt, Jersey - Blue"
+ icon_state = "shirt_bluejersey"
+
+/datum/sprite_accessory/undershirt/redjersey
+ name = "Shirt, Jersey - Red"
+ icon_state = "shirt_redjersey"
+
+/datum/sprite_accessory/undershirt/bluepolo
+ name = "Shirt, Polo - Blue"
+ icon_state = "bluepolo"
+
+/datum/sprite_accessory/undershirt/grayyellowpolo
+ name = "Shirt, Polo - Gray, Yellow"
+ icon_state = "grayyellowpolo"
+
+/datum/sprite_accessory/undershirt/redpolo
+ name = "Shirt, Polo - Red"
+ icon_state = "redpolo"
+
+/datum/sprite_accessory/undershirt/whitepolo
+ name = "Shirt, Polo - White"
+ icon_state = "whitepolo"
+
+/datum/sprite_accessory/undershirt/alienshirt
+ name = "Shirt - Alien"
+ icon_state = "shirt_alien"
+
+/datum/sprite_accessory/undershirt/mondmondjaja
+ name = "Shirt - Band"
+ icon_state = "band"
+
+/datum/sprite_accessory/undershirt/shirt_black
+ name = "Shirt - Black"
+ icon_state = "shirt_black"
+
+/datum/sprite_accessory/undershirt/blueshirt
+ name = "Shirt - Blue"
+ icon_state = "shirt_blue"
+
+/datum/sprite_accessory/undershirt/clownshirt
+ name = "Shirt - Clown"
+ icon_state = "shirt_clown"
+
+/datum/sprite_accessory/undershirt/commie
+ name = "Shirt - Commie"
+ icon_state = "shirt_commie"
+
+/datum/sprite_accessory/undershirt/greenshirt
+ name = "Shirt - Green"
+ icon_state = "shirt_green"
+
+/datum/sprite_accessory/undershirt/shirt_grey
+ name = "Shirt - Grey"
+ icon_state = "shirt_grey"
+
+/datum/sprite_accessory/undershirt/ian
+ name = "Shirt - Ian"
+ icon_state = "ian"
+
+/datum/sprite_accessory/undershirt/ilovent
+ name = "Shirt - I Love NT"
+ icon_state = "ilovent"
+
+/datum/sprite_accessory/undershirt/lover
+ name = "Shirt - Lover"
+ icon_state = "lover"
+
+/datum/sprite_accessory/undershirt/matroska
+ name = "Shirt - Matroska"
+ icon_state = "matroska"
+
+/datum/sprite_accessory/undershirt/meat
+ name = "Shirt - Meat"
+ icon_state = "shirt_meat"
+
+/datum/sprite_accessory/undershirt/nano
+ name = "Shirt - Nanotrasen"
+ icon_state = "shirt_nano"
+
+/datum/sprite_accessory/undershirt/peace
+ name = "Shirt - Peace"
+ icon_state = "peace"
+
+/datum/sprite_accessory/undershirt/pacman
+ name = "Shirt - Pogoman"
+ icon_state = "pogoman"
+
+/datum/sprite_accessory/undershirt/question
+ name = "Shirt - Question"
+ icon_state = "shirt_question"
+
+/datum/sprite_accessory/undershirt/redshirt
+ name = "Shirt - Red"
+ icon_state = "shirt_red"
+
+/datum/sprite_accessory/undershirt/skull
+ name = "Shirt - Skull"
+ icon_state = "shirt_skull"
+
+/datum/sprite_accessory/undershirt/ss13
+ name = "Shirt - SS13"
+ icon_state = "shirt_ss13"
+
+/datum/sprite_accessory/undershirt/stripe
+ name = "Shirt - Striped"
+ icon_state = "shirt_stripes"
+
+/datum/sprite_accessory/undershirt/tiedye
+ name = "Shirt - Tie-dye"
+ icon_state = "shirt_tiedye"
+
+/datum/sprite_accessory/undershirt/uk
+ name = "Shirt - UK"
+ icon_state = "uk"
+
+/datum/sprite_accessory/undershirt/usa
+ name = "Shirt - USA"
+ icon_state = "shirt_assblastusa"
+
+/datum/sprite_accessory/undershirt/shirt_white
+ name = "Shirt - White"
+ icon_state = "shirt_white"
+
+/datum/sprite_accessory/undershirt/blackshortsleeve
+ name = "Shirt, Short Sleeved - Black"
+ icon_state = "blackshortsleeve"
+
+/datum/sprite_accessory/undershirt/blueshortsleeve
+ name = "Shirt, Short Sleeved - Blue"
+ icon_state = "blueshortsleeve"
+
+/datum/sprite_accessory/undershirt/greenshortsleeve
+ name = "Shirt, Short Sleeved - Green"
+ icon_state = "greenshortsleeve"
+
+/datum/sprite_accessory/undershirt/purpleshortsleeve
+ name = "Shirt, Short Sleeved - Purple"
+ icon_state = "purpleshortsleeve"
+
+/datum/sprite_accessory/undershirt/whiteshortsleeve
+ name = "Shirt, Short Sleeved - White"
+ icon_state = "whiteshortsleeve"
+
+/datum/sprite_accessory/undershirt/blueshirtsport
+ name = "Shirt, Sports - Blue"
+ icon_state = "blueshirtsport"
+ gender = NEUTER
+
+/datum/sprite_accessory/undershirt/greenshirtsport
+ name = "Shirt, Sports - Green"
+ icon_state = "greenshirtsport"
+ gender = NEUTER
+
+/datum/sprite_accessory/undershirt/redshirtsport
+ name = "Shirt, Sports - Red"
+ icon_state = "redshirtsport"
+ gender = NEUTER
+
+/datum/sprite_accessory/undershirt/redtop
+ name = "Shirt, Short - Red"
+ icon_state = "redtop"
+
+/datum/sprite_accessory/undershirt/whitetop
+ name = "Shirt, Short - White"
+ icon_state = "whitetop"
+
+/datum/sprite_accessory/undershirt/tshirt_blue
+ name = "T-Shirt - Blue"
+ icon_state = "blueshirt"
+
+/datum/sprite_accessory/undershirt/tshirt_green
+ name = "T-Shirt - Green"
+ icon_state = "greenshirt"
+
+/datum/sprite_accessory/undershirt/tshirt_red
+ name = "T-Shirt - Red"
+ icon_state = "redshirt"
+
+/datum/sprite_accessory/undershirt/yellowshirt
+ name = "T-Shirt - Yellow"
+ icon_state = "yellowshirt"
+
+/datum/sprite_accessory/undershirt/tank_black
+ name = "Tank Top - Black"
+ icon_state = "tank_black"
+
+/datum/sprite_accessory/undershirt/tankfire
+ name = "Tank Top - Fire"
+ icon_state = "tank_fire"
+
+/datum/sprite_accessory/undershirt/tank_grey
+ name = "Tank Top - Grey"
+ icon_state = "tank_grey"
+
+/datum/sprite_accessory/undershirt/female_midriff
+ name = "Tank Top - Midriff"
+ icon_state = "tank_midriff"
+
+/datum/sprite_accessory/undershirt/tank_red
+ name = "Tank Top - Red"
+ icon_state = "tank_red"
+
+/datum/sprite_accessory/undershirt/tankstripe
+ name = "Tank Top - Striped"
+ icon_state = "tank_stripes"
+
+/datum/sprite_accessory/undershirt/tank_white
+ name = "Tank Top - White"
+ icon_state = "tank_white"
+
+/datum/sprite_accessory/undershirt/female_red
+ name = "Bra - Red"
+ icon_state = "bra_red"
+
+/datum/sprite_accessory/undershirt/female_pink
+ name = "Bra - Pink"
+ icon_state = "bra_pink"
+
+/datum/sprite_accessory/undershirt/female_kinky
+ name = "Bra - Kinky Black"
+ icon_state = "bra_kinky"
+
+/datum/sprite_accessory/undershirt/female_green
+ name = "Bra - Green"
+ icon_state = "bra_green"
+
+/datum/sprite_accessory/undershirt/female_commie
+ name = "Bra - Freedom"
+ icon_state = "bra_assblastusa"
+
+/datum/sprite_accessory/undershirt/female_commie
+ name = "Bra - Commie"
+ icon_state = "bra_commie"
+
+/datum/sprite_accessory/undershirt/female_babyblue
+ name = "Bra, Baby Blue"
+ icon_state = "bra_babyblue"
+
+/datum/sprite_accessory/undershirt/female_black
+ name = "Bra - Black"
+ icon_state = "bra_black"
+
+/datum/sprite_accessory/undershirt/female_uk
+ name = "Bra - UK"
+ icon_state = "bra_uk"
+
+/datum/sprite_accessory/undershirt/female_white
+ name = "Bra - White"
+ icon_state = "bra_white"
+
+/datum/sprite_accessory/undershirt/female_white_neko
+ name = "Bra, Neko - white"
+ icon_state = "bra_neko_white"
+
+/datum/sprite_accessory/undershirt/female_black_neko
+ name = "Bra, Neko - Black"
+ icon_state = "bra_neko_black"
+
+/datum/sprite_accessory/undershirt/female_blackalt
+ name = "Bra, Sports - Black"
+ icon_state = "bra_sports_black"
+
+/datum/sprite_accessory/undershirt/sports_bra
+ name = "Bra, Sports 1 - White"
+ icon_state = "sports_bra"
+
+/datum/sprite_accessory/undershirt/female_whitealt
+ name = "Bra, Sports 2 - White"
+ icon_state = "bra_sports_white"
+
+/datum/sprite_accessory/undershirt/sports_bra2
+ name = "Bra, Sports 3 - White"
+ icon_state = "sports_bra_alt"
+
+/datum/sprite_accessory/undershirt/female_yellow
+ name = "Bra - Yellow"
+ icon_state = "bra_yellow"
+
+/datum/sprite_accessory/undershirt/female_thong
+ name = "Bra, Strapless - Pink"
+ icon_state = "bra_strapless_pink"
+
+/datum/sprite_accessory/undershirt/female_blue
+ name = "Bra, Strapless - Blue"
+ icon_state = "bra_blue"
+
+/datum/sprite_accessory/undershirt/swimsuit_green
+ name = "Swimsuit, Top - Green"
+ icon_state = "bra_swimming_green"
+
+/datum/sprite_accessory/undershirt/swimsuit_purple
+ name = "Swimsuit, Top - Purple"
+ icon_state = "bra_swimming_purple"
\ No newline at end of file
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm b/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm
new file mode 100644
index 0000000000..6beed231aa
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/underwear.dm
@@ -0,0 +1,171 @@
+///////////////////////////
+// Underwear Definitions //
+///////////////////////////
+/datum/sprite_accessory/underwear
+ icon = 'icons/mob/underwear.dmi'
+ gender = NEUTER
+
+/datum/sprite_accessory/underwear/nude
+ name = "Nude"
+ icon_state = null
+
+/datum/sprite_accessory/underwear/mankini
+ name = "Mankini - Green"
+ icon_state = "mankini_green"
+
+/datum/sprite_accessory/underwear/male_kinky
+ name = "Jockstrap - White"
+ icon_state = "jockstrap_white"
+
+/datum/sprite_accessory/underwear/male_white
+ name = "Briefs - White"
+ icon_state = "briefs_white"
+
+/datum/sprite_accessory/underwear/male_black
+ name = "Briefs - Black"
+ icon_state = "briefs_black"
+
+/datum/sprite_accessory/underwear/male_grey
+ name = "Briefs - Grey"
+ icon_state = "briefs_grey"
+
+/datum/sprite_accessory/underwear/male_red
+ name = "Briefs - Red"
+ icon_state = "briefs_red"
+
+/datum/sprite_accessory/underwear/male_green
+ name = "Briefs - Green"
+ icon_state = "briefs_green"
+
+/datum/sprite_accessory/underwear/male_blue
+ name = "Briefs - Blue"
+ icon_state = "briefs_blue"
+
+/datum/sprite_accessory/underwear/male_blackalt
+ name = "Boxers - Black"
+ icon_state = "boxers_black"
+
+/datum/sprite_accessory/underwear/male_greyalt
+ name = "Boxers - Grey"
+ icon_state = "boxers_grey"
+
+/datum/sprite_accessory/underwear/male_hearts
+ name = "Boxers - Heart"
+ icon_state = "boxers_heart"
+
+/datum/sprite_accessory/underwear/male_stripe
+ name = "Boxers - Striped"
+ icon_state = "boxers_striped"
+
+/datum/sprite_accessory/underwear/male_commie
+ name = "Boxers - Striped Communist"
+ icon_state = "boxers_commie"
+
+/datum/sprite_accessory/underwear/male_usastripe
+ name = "Boxers - Striped Freedom"
+ icon_state = "boxers_assblastusa"
+
+/datum/sprite_accessory/underwear/male_uk
+ name = "Boxers - Striped UK"
+ icon_state = "boxers_uk"
+
+
+/datum/sprite_accessory/underwear/female_whitealt
+ name = "Boxer Briefs - White"
+ icon_state = "boxer_briefs_white"
+
+/datum/sprite_accessory/underwear/female_blackalt
+ name = "Boxer Briefs - Black"
+ icon_state = "boxer_briefs_black"
+
+/datum/sprite_accessory/underwear/female_pink
+ name = "Boxer Briefs - Pink"
+ icon_state = "boxer_briefs_pink"
+
+/datum/sprite_accessory/underwear/female_babyblue
+ name = "Boxer Briefs - Baby Blue"
+ icon_state = "boxer_briefs_babyblue"
+
+/datum/sprite_accessory/underwear/female_yellow
+ name = "Boxer Briefs - Yellow"
+ icon_state = "boxer_briefs_yellow"
+
+
+/datum/sprite_accessory/underwear/female_black
+ name = "Panties - Black"
+ icon_state = "panties_black"
+
+/datum/sprite_accessory/underwear/female_blue
+ name = "Panties - Blue"
+ icon_state = "panties_blue"
+
+/datum/sprite_accessory/underwear/female_commie
+ name = "Panties - Commie"
+ icon_state = "panties_commie"
+
+/datum/sprite_accessory/underwear/female_usastripe
+ name = "Panties - Freedom"
+ icon_state = "panties_assblastusa"
+
+/datum/sprite_accessory/underwear/female_green
+ name = "Panties - Green"
+ icon_state = "panties_green"
+
+/datum/sprite_accessory/underwear/female_kinky
+ name = "Panties - Kinky Black"
+ icon_state = "panties_kinky"
+
+/datum/sprite_accessory/underwear/female_red
+ name = "Panties - Red"
+ icon_state = "panties_red"
+
+/datum/sprite_accessory/underwear/female_uk
+ name = "Panties - UK"
+ icon_state = "panties_uk"
+
+/datum/sprite_accessory/underwear/female_white
+ name = "Panties - White"
+ icon_state = "panties_white"
+
+/datum/sprite_accessory/underwear/female_white_neko
+ name = "Panties, Neko - White"
+ icon_state = "panties_neko_white"
+
+/datum/sprite_accessory/underwear/female_black_neko
+ name = "Panties, Neko - Black"
+ icon_state = "panties_neko_black"
+
+
+/datum/sprite_accessory/underwear/swimsuit_red
+ name = "Swimsuit, One Piece - Red"
+ icon_state = "swimming_red"
+
+/datum/sprite_accessory/underwear/swimsuit
+ name = "Swimsuit, One Piece - Black"
+ icon_state = "swimming_black"
+
+/datum/sprite_accessory/underwear/swimsuit_blue
+ name = "Swimsuit, One Piece - Striped Blue"
+ icon_state = "swimming_blue"
+
+/datum/sprite_accessory/underwear/swimsuit_green
+ name = "Swimsuit, Bottom - Green"
+ icon_state = "panties_swimming_green"
+
+/datum/sprite_accessory/underwear/swimsuit_purple
+ name = "Swimsuit, Bottom - Purple"
+ icon_state = "panties_swimming_purple"
+
+/datum/sprite_accessory/underwear/female_thong_black
+ name = "Thong - Black"
+ icon_state = "thong_black"
+
+/datum/sprite_accessory/underwear/female_thong
+ name = "Thong - Pink"
+ icon_state = "thong_pink"
+
+/datum/sprite_accessory/underwear/female_babydoll
+ name = "Babydoll - Black"
+ icon_state = "babydoll"
+
+
diff --git a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm
new file mode 100644
index 0000000000..d051b2f07a
--- /dev/null
+++ b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm
@@ -0,0 +1,26 @@
+/datum/sprite_accessory/wings/none
+ name = "None"
+ icon_state = "none"
+
+/datum/sprite_accessory/wings_open
+ icon = 'icons/mob/wings.dmi'
+
+/datum/sprite_accessory/wings_open/angel
+ name = "Angel"
+ icon_state = "angel"
+ color_src = 0
+ dimension_x = 46
+ center = TRUE
+ dimension_y = 34
+
+/datum/sprite_accessory/wings
+ icon = 'icons/mob/wings.dmi'
+
+/datum/sprite_accessory/wings/angel
+ name = "Angel"
+ icon_state = "angel"
+ color_src = 0
+ dimension_x = 46
+ center = TRUE
+ dimension_y = 34
+ locked = TRUE
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 950ac5fb8b..d1d5fb7cd4 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -39,6 +39,19 @@
restraint_check = TRUE
emote_type = EMOTE_AUDIBLE
+/datum/emote/living/carbon/human/mawp
+ key = "mawp"
+ key_third_person = "mawps"
+ message = "mawps annoyingly."
+ emote_type = EMOTE_AUDIBLE
+
+/datum/emote/living/carbon/human/mawp/run_emote(mob/living/user, params)
+ . = ..()
+ if(.)
+ if(ishuman(user))
+ if(prob(10))
+ user.adjustEarDamage(-5, -5)
+
/datum/emote/living/carbon/human/mumble
key = "mumble"
key_third_person = "mumbles"
diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm
index 3cdaf71e68..dc35e65c47 100644
--- a/code/modules/mob/living/carbon/human/say.dm
+++ b/code/modules/mob/living/carbon/human/say.dm
@@ -1,9 +1,14 @@
/mob/living/carbon/human/say_mod(input, message_mode)
verb_say = dna.species.say_mod
- if(slurring)
- return "slurs"
- else
- . = ..()
+ switch(slurring)
+ if(25 to 50)
+ return "jumbles"
+ if(50 to 75)
+ return "slurs"
+ if(75 to INFINITY)
+ return "garbles"
+ else
+ . = ..()
/mob/living/carbon/human/treat_message(message)
message = dna.species.handle_speech(message,src)
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index 48a401802b..6111a92e99 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -532,7 +532,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
stuttering = max(stuttering-1, 0)
if(slurring)
- slurring = max(slurring-1,0)
+ slurring = max(slurring-1,0,drunkenness)
if(cultslurring)
cultslurring = max(cultslurring-1, 0)
@@ -550,16 +550,11 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
drunkenness = max(drunkenness - (drunkenness * 0.04), 0)
if(drunkenness >= 6)
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "drunk", /datum/mood_event/drunk)
- if(prob(25))
- slurring += 2
jitteriness = max(jitteriness - 3, 0)
if(has_trait(TRAIT_DRUNK_HEALING))
adjustBruteLoss(-0.12, FALSE)
adjustFireLoss(-0.06, FALSE)
- if(drunkenness >= 11 && slurring < 5)
- slurring += 1.2
-
if(mind && (mind.assigned_role == "Scientist" || mind.assigned_role == "Research Director"))
if(SSresearch.science_tech)
if(drunkenness >= 12.9 && drunkenness <= 13.8)
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index a0f619a7d6..871e33349a 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -334,7 +334,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
message = stutter(message)
if(slurring)
- message = slur(message)
+ message = slur(message,slurring)
if(cultslurring)
message = cultslur(message)
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 35b48afa28..3d4e356464 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -64,7 +64,7 @@
p++
return sanitize(t)
-/proc/slur(n)
+/proc/slur(n,var/strength=50)
var/phrase = html_decode(n)
var/leng = lentext(phrase)
var/counter=lentext(phrase)
@@ -72,7 +72,7 @@
var/newletter=""
while(counter>=1)
newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
- if(rand(1,3)==3)
+ if(rand(1,100)<=strength)
if(lowertext(newletter)=="o")
newletter="u"
if(lowertext(newletter)=="s")
@@ -83,17 +83,17 @@
newletter="oo"
if(lowertext(newletter)=="c")
newletter="k"
- if(rand(1,20)==20)
+ if(rand(1,100) <= strength*0.5)
if(newletter==" ")
newletter="...huuuhhh..."
if(newletter==".")
newletter=" *BURP*."
- switch(rand(1,20))
- if(1)
+ if(rand(1,100) <= strength)
+ if(rand(1,5) == 1)
newletter+="'"
- if(10)
+ if(rand(1,5) == 1)
newletter+="[newletter]"
- if(20)
+ if(rand(1,5) == 1)
newletter+="[newletter][newletter]"
newphrase+="[newletter]";counter-=1
return newphrase
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index e43db529b8..9fcdf091a1 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -200,6 +200,10 @@
charge = 0
update_icon()
+/obj/item/stock_parts/cell/lascarbine
+ name = "laser carbine power supply"
+ maxcharge = 2500
+
/obj/item/stock_parts/cell/pulse //200 pulse shots
name = "pulse rifle power cell"
maxcharge = 40000
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 83ce525ac8..914f9bc016 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -88,6 +88,9 @@
icon_state = "riotshotgun"
mag_type = /obj/item/ammo_box/magazine/internal/shot/riot
sawn_desc = "Come with me if you want to live."
+ unique_reskin = list("Tatical" = "riotshotgun",
+ "Wood Stock" = "wood_riotshotgun"
+ )
/obj/item/gun/ballistic/shotgun/riot/attackby(obj/item/A, mob/user, params)
..()
@@ -200,6 +203,10 @@
icon_state = "cshotgun"
mag_type = /obj/item/ammo_box/magazine/internal/shot/com
w_class = WEIGHT_CLASS_HUGE
+ unique_reskin = list("Tatical" = "cshotgun",
+ "Slick" = "cshotgun_slick"
+ )
+
/obj/item/gun/ballistic/shotgun/automatic/combat/compact
name = "compact combat shotgun"
@@ -207,6 +214,10 @@
icon_state = "cshotgunc"
mag_type = /obj/item/ammo_box/magazine/internal/shot/com/compact
w_class = WEIGHT_CLASS_NORMAL
+ unique_reskin = list("Tatical" = "cshotgunc",
+ "Slick" = "cshotgunc_slick"
+ )
+
//Dual Feed Shotgun
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 066b652984..cd0dd53d48 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -39,6 +39,21 @@
selfcharge = EGUN_SELFCHARGE
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
+/obj/item/gun/energy/laser/carbine
+ name = "laser carbine"
+ desc = "A ruggedized laser carbine featuring much higher capacity and improved handling when compared to a normal laser gun."
+ icon = 'icons/obj/guns/energy.dmi'
+ icon_state = "lasernew"
+ item_state = "laser"
+ force = 10
+ throwforce = 10
+ ammo_type = list(/obj/item/ammo_casing/energy/lasergun)
+ cell_type = /obj/item/stock_parts/cell/lascarbine
+ resistance_flags = FIRE_PROOF | ACID_PROOF
+
+/obj/item/gun/energy/laser/carbine/nopin
+ pin = null
+
/obj/item/gun/energy/laser/captain/scattershot
name = "scatter shot laser rifle"
icon_state = "lasercannon"
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index 6e4d5e5a7d..92d9da401b 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -1277,8 +1277,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
if(!M.has_trait(TRAIT_ALCOHOL_TOLERANCE))
M.confused = max(M.confused+2,0)
M.Dizzy(10)
- if (!M.slurring)
- M.slurring = 1
+ M.slurring = max(M.slurring,50)
M.slurring += 3
switch(current_cycle)
if(51 to 200)
@@ -1306,8 +1305,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
M.dizziness +=1.5
switch(current_cycle)
if(15 to 45)
- if(!M.slurring)
- M.slurring = 1
+ M.slurring = max(M.slurring,50)
M.slurring += 3
if(45 to 55)
if(prob(50))
@@ -1336,8 +1334,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
M.dizziness +=2
switch(current_cycle)
if(15 to 45)
- if(!M.slurring)
- M.slurring = 1
+ M.slurring = max(M.slurring,50)
M.slurring += 3
if(45 to 55)
if(prob(50))
@@ -1364,8 +1361,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
glass_desc = "A drink enjoyed by people during the 1960's."
/datum/reagent/consumable/ethanol/hippies_delight/on_mob_life(mob/living/carbon/M)
- if (!M.slurring)
- M.slurring = 1
+ M.slurring = max(M.slurring,50)
switch(current_cycle)
if(1 to 5)
M.Dizzy(10)
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index 52b212f8c5..5071150e24 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -402,8 +402,7 @@
taste_description = "mushroom"
/datum/reagent/mushroomhallucinogen/on_mob_life(mob/living/carbon/M)
- if(!M.slurring)
- M.slurring = 1
+ M.slurring = max(M.slurring,50)
switch(current_cycle)
if(1 to 5)
M.Dizzy(5)
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 15a2ef1cba..5d1593d1e7 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -1863,3 +1863,20 @@
description = "The primary precursor for an ancient feline delicacy known as skooma. While it has no notable effects on it's own, mixing it with morphine in a chilled container may yield interesting results."
color = "#FAEAFF"
taste_description = "synthetic catnip"
+
+/datum/reagent/penis_enlargement
+ name = "Penis Enlargement"
+ id = "penis_enlargement"
+ description = "A patented chemical forumula by Doctor Ronald Hyatt that is guaranteed to bring maximum GROWTH and LENGTH to your penis, today!"
+ color = "#888888"
+ taste_description = "chinese dragon powder"
+ metabolization_rate = INFINITY //So it instantly removes all of itself. Don't want to put strain on the system.
+
+/datum/reagent/penis_enlargement/on_mob_life(mob/living/carbon/C)
+ var/obj/item/organ/genital/penis/P = C.getorganslot(ORGAN_SLOT_PENIS)
+ if(P)
+ var/added_length = round(volume/30,0.01) //Every 30u gives an extra inch. Rounded to the nearest 0.01 so float fuckery doesn't occur with the division by 30.
+ if(added_length >= 0.20) //Only add the length if it's greater than or equal to 0.2. This is to prevent people from smoking the reagents and causing the penis to update constantly.
+ P.length += added_length
+ P.update()
+ ..()
\ No newline at end of file
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 38d47d5185..ed2ca66aae 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -233,3 +233,7 @@
/obj/item/reagent_containers/pill/get_belt_overlay()
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "pouch")
+
+/obj/item/reagent_containers/pill/penis_enlargement
+ name = "penis enlargement pill"
+ list_reagents = list("penis_enlargement" = 30)
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 9b42709fe2..03c0582245 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -1,6 +1,10 @@
-/////////////////////////////////////////
-/////////////////Weapons/////////////////
-/////////////////////////////////////////
+///////////////////////////////
+///////Weapons & Ammo//////////
+///////////////////////////////
+
+//////////////
+//Ammo Boxes//
+//////////////
/datum/design/c38/sec
id = "sec_38"
@@ -13,6 +17,40 @@
id = "sec_38lethal"
build_path = /obj/item/ammo_box/c38/lethal
+//////////////
+//WT550 Mags//
+//////////////
+
+/datum/design/mag_oldsmg
+ name = "WT-550 Semi-Auto SMG Magazine (4.6x30mm)"
+ desc = "A 20 round magazine for the out of date security WT-550 Semi-Auto SMG."
+ id = "mag_oldsmg"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 4000)
+ build_path = /obj/item/ammo_box/magazine/wt550m9
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/mag_oldsmg/ap_mag
+ name = "WT-550 Semi-Auto SMG Armour Piercing Magazine (4.6x30mm AP)"
+ desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG."
+ id = "mag_oldsmg_ap"
+ materials = list(MAT_METAL = 6000, MAT_SILVER = 600)
+ build_path = /obj/item/ammo_box/magazine/wt550m9/wtap
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/mag_oldsmg/ic_mag
+ name = "WT-550 Semi-Auto SMG Incendiary Magazine (4.6x30mm IC)"
+ desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG."
+ id = "mag_oldsmg_ic"
+ materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000)
+ build_path = /obj/item/ammo_box/magazine/wt550m9/wtic
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+//////////////
+//Ammo Shells/
+//////////////
+
/datum/design/rubbershot/sec
id = "sec_rshot"
build_type = PROTOLATHE
@@ -43,6 +81,40 @@
category = list("Ammo")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+/datum/design/stunshell
+ name = "Stun Shell"
+ desc = "A stunning shell for a shotgun."
+ id = "stunshell"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 200)
+ build_path = /obj/item/ammo_casing/shotgun/stunslug
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/techshell
+ name = "Unloaded Technological Shotshell"
+ desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
+ id = "techshotshell"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 1000, MAT_GLASS = 200)
+ build_path = /obj/item/ammo_casing/shotgun/techshell
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/cryostatis_shotgun_dart
+ name = "Cryostasis Shotgun Dart"
+ desc = "A shotgun dart designed with similar internals to that of a cryostatis beaker, allowing reagents to not react when inside."
+ id = "shotgundartcryostatis"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 3500)
+ build_path = /obj/item/ammo_casing/shotgun/dart/noreact
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
+
+//////////////
+//Firing Pins/
+//////////////
+
/datum/design/pin_testing
name = "Test-Range Firing Pin"
desc = "This safety firing pin allows firearms to be operated within proximity to a firing range."
@@ -63,6 +135,20 @@
category = list("Firing Pins")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+//////////////
+//Guns////////
+//////////////
+
+/datum/design/lasercarbine
+ name = "Laser Carbine"
+ desc = "Beefed up version of a standard laser gun."
+ id = "lasercarbine"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 15000, MAT_GLASS = 10000, MAT_GOLD = 2500, MAT_SILVER = 2500)
+ build_path = /obj/item/gun/energy/laser/carbine/nopin
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
/datum/design/stunrevolver
name = "Tesla Revolver"
desc = "A high-tech revolver that fires internal, reusable shock cartridges in a revolving cylinder. The cartridges can be recharged using conventional rechargers."
@@ -83,16 +169,6 @@
category = list("Weapons")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-/datum/design/tele_shield
- name = "Telescopic Riot Shield"
- desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
- id = "tele_shield"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200)
- build_path = /obj/item/shield/riot/tele
- category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
/datum/design/beamrifle
name = "Beam Marksman Rifle"
desc = "A powerful long ranged anti-material rifle that fires charged particle beams to obliterate targets."
@@ -122,11 +198,11 @@
materials = list(MAT_METAL = 5000, MAT_GLASS = 1000)
build_path = /obj/item/gun/syringe/rapidsyringe
category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_MEDICAL //uwu
+ departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
/datum/design/temp_gun
name = "Temperature Gun"
- desc = "A gun that shoots temperature bullet energythings to change temperature."//Change it if you want
+ desc = "A gun that shoots temperature beam like projectiles to change temperature."
id = "temp_gun"
build_type = PROTOLATHE
materials = list(MAT_METAL = 5000, MAT_GLASS = 500, MAT_SILVER = 3000)
@@ -145,46 +221,6 @@
category = list("Weapons")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE
-/datum/design/large_grenade
- name = "Large Grenade"
- desc = "A grenade that affects a larger area and use larger containers."
- id = "large_Grenade"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 3000)
- build_path = /obj/item/grenade/chem_grenade/large
- category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE //Citadel edit added to science
-
-/datum/design/pyro_grenade
- name = "Pyro Grenade"
- desc = "An advanced grenade that is able to self ignite its mixture."
- id = "pyro_Grenade"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 2000, MAT_PLASMA = 500)
- build_path = /obj/item/grenade/chem_grenade/pyro
- category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
-
-/datum/design/cryo_grenade
- name = "Cryo Grenade"
- desc = "An advanced grenade that rapidly cools its contents upon detonation."
- id = "cryo_Grenade"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
- build_path = /obj/item/grenade/chem_grenade/cryo
- category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
-
-/datum/design/adv_grenade
- name = "Advanced Release Grenade"
- desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter."
- id = "adv_Grenade"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 3000, MAT_GLASS = 500)
- build_path = /obj/item/grenade/chem_grenade/adv_release
- category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
-
/datum/design/xray
name = "X-ray Laser Gun"
desc = "Not quite as menacing as it sounds"
@@ -215,64 +251,6 @@
category = list("Weapons")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
-//WT550 Mags
-
-/datum/design/mag_oldsmg
- name = "WT-550 Semi-Auto SMG Magazine (4.6x30mm)"
- desc = "A 20 round magazine for the out of date security WT-550 Semi-Auto SMG."
- id = "mag_oldsmg"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 4000)
- build_path = /obj/item/ammo_box/magazine/wt550m9
- category = list("Ammo")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/mag_oldsmg/ap_mag
- name = "WT-550 Semi-Auto SMG Armour Piercing Magazine (4.6x30mm AP)"
- desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG."
- id = "mag_oldsmg_ap"
- materials = list(MAT_METAL = 6000, MAT_SILVER = 600)
- build_path = /obj/item/ammo_box/magazine/wt550m9/wtap
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/mag_oldsmg/ic_mag
- name = "WT-550 Semi-Auto SMG Incendiary Magazine (4.6x30mm IC)"
- desc = "A 20 round armour piercing magazine for the out of date security WT-550 Semi-Auto SMG."
- id = "mag_oldsmg_ic"
- materials = list(MAT_METAL = 6000, MAT_SILVER = 600, MAT_GLASS = 1000)
- build_path = /obj/item/ammo_box/magazine/wt550m9/wtic
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/stunshell
- name = "Stun Shell"
- desc = "A stunning shell for a shotgun."
- id = "stunshell"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 200)
- build_path = /obj/item/ammo_casing/shotgun/stunslug
- category = list("Ammo")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
-/datum/design/techshell
- name = "Unloaded Technological Shotshell"
- desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
- id = "techshotshell"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 1000, MAT_GLASS = 200)
- build_path = /obj/item/ammo_casing/shotgun/techshell
- category = list("Ammo")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_SCIENCE
-
-/datum/design/suppressor
- name = "Universal Suppressor"
- desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
- id = "suppressor"
- build_type = PROTOLATHE
- materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
- build_path = /obj/item/suppressor
- category = list("Weapons")
- departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
/datum/design/gravitygun
name = "One-point Bluespace-gravitational Manipulator"
desc = "A multi-mode device that blasts one-point bluespace-gravitational bolts that locally distort gravity."
@@ -293,12 +271,70 @@
category = list("Weapons")
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-/datum/design/cryostatis_shotgun_dart
- name = "Cryostasis Shotgun Dart"
- desc = "A shotgun dart designed with similar internals to that of a cryostatis beaker, allowing reagents to not react when inside."
- id = "shotgundartcryostatis"
+///////////
+//Grenades/
+///////////
+
+/datum/design/large_grenade
+ name = "Large Grenade"
+ desc = "A grenade that affects a larger area and use larger containers."
+ id = "large_Grenade"
build_type = PROTOLATHE
- materials = list(MAT_METAL = 3500)
- build_path = /obj/item/ammo_casing/shotgun/dart/noreact
- category = list("Ammo")
- departmental_flags = DEPARTMENTAL_FLAG_MEDICAL
+ materials = list(MAT_METAL = 3000)
+ build_path = /obj/item/grenade/chem_grenade/large
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/pyro_grenade
+ name = "Pyro Grenade"
+ desc = "An advanced grenade that is able to self ignite its mixture."
+ id = "pyro_Grenade"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 2000, MAT_PLASMA = 500)
+ build_path = /obj/item/grenade/chem_grenade/pyro
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
+
+/datum/design/cryo_grenade
+ name = "Cryo Grenade"
+ desc = "An advanced grenade that rapidly cools its contents upon detonation."
+ id = "cryo_Grenade"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
+ build_path = /obj/item/grenade/chem_grenade/cryo
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
+
+/datum/design/adv_grenade
+ name = "Advanced Release Grenade"
+ desc = "An advanced grenade that can be detonated several times, best used with a repeating igniter."
+ id = "adv_Grenade"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 3000, MAT_GLASS = 500)
+ build_path = /obj/item/grenade/chem_grenade/adv_release
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_MEDICAL
+
+//////////
+//MISC////
+//////////
+
+/datum/design/tele_shield
+ name = "Telescopic Riot Shield"
+ desc = "An advanced riot shield made of lightweight materials that collapses for easy storage."
+ id = "tele_shield"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 4000, MAT_GLASS = 4000, MAT_SILVER = 300, MAT_TITANIUM = 200)
+ build_path = /obj/item/shield/riot/tele
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/suppressor
+ name = "Universal Suppressor"
+ desc = "A reverse-engineered universal suppressor that fits on most small arms with threaded barrels."
+ id = "suppressor"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 2000, MAT_SILVER = 500)
+ build_path = /obj/item/suppressor
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index c2abc2f2c5..99ee820ff6 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -564,7 +564,7 @@
display_name = "Weapon Development Technology"
description = "Our researchers have found new to weaponize just about everything now."
prereq_ids = list("engineering")
- design_ids = list("pin_testing", "tele_shield")
+ design_ids = list("pin_testing", "tele_shield", "lasercarbine")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 7500)
export_price = 5000
diff --git a/html/changelogs/AutoChangeLog-pr-8274.yml b/html/changelogs/AutoChangeLog-pr-8274.yml
new file mode 100644
index 0000000000..41b2de1d9e
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8274.yml
@@ -0,0 +1,4 @@
+author: "BurgerBB"
+delete-after: True
+changes:
+ - tweak: "Increased the spawn area of the City of Cogs (Reebe). This does not affect the area in which builders can build."
diff --git a/html/changelogs/AutoChangeLog-pr-8283.yml b/html/changelogs/AutoChangeLog-pr-8283.yml
new file mode 100644
index 0000000000..7a614e2e82
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8283.yml
@@ -0,0 +1,4 @@
+author: "BurgerBB"
+delete-after: True
+changes:
+ - rscadd: "Adds a new 0 cost trait that makes you immune* to Crocin and Hexacrocin"
diff --git a/html/changelogs/AutoChangeLog-pr-8286.yml b/html/changelogs/AutoChangeLog-pr-8286.yml
new file mode 100644
index 0000000000..d59a8dad66
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8286.yml
@@ -0,0 +1,5 @@
+author: "BurgerBB"
+delete-after: True
+changes:
+ - tweak: "Tweaks how slurring works so it's more of a gradual change into slurring instead of immediate."
+ - balance: "Slurring is now directly proportional to your drunkenness, with other sources of slur being added on top of it."
diff --git a/html/changelogs/AutoChangeLog-pr-8287.yml b/html/changelogs/AutoChangeLog-pr-8287.yml
new file mode 100644
index 0000000000..aafba03474
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8287.yml
@@ -0,0 +1,4 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - rscadd: "new lockable colalr"
diff --git a/html/changelogs/AutoChangeLog-pr-8288.yml b/html/changelogs/AutoChangeLog-pr-8288.yml
new file mode 100644
index 0000000000..6b3fbadbd8
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8288.yml
@@ -0,0 +1,7 @@
+author: "BurgerBB"
+delete-after: True
+changes:
+ - tweak: "Bras are now separate from underwear, meaning you can mix and match bras if you're into that."
+ - tweak: "Men can wear female accessory clothing, and females can wear men accessory clothing. It's not a fetish, mom, it's PROGRESSIVE."
+ - code_imp: "Reorganized accessories into their own files to prevent a massive 1000 line file."
+ - server: "i'm 10% sure that merging this PR will cause preference corruption sooooooooooo I just need to hear from @deathride58 or perhaps someone else on how much damage this could possibly do."
diff --git a/html/changelogs/AutoChangeLog-pr-8289.yml b/html/changelogs/AutoChangeLog-pr-8289.yml
new file mode 100644
index 0000000000..d389d95cd6
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8289.yml
@@ -0,0 +1,4 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - tweak: "armor"
diff --git a/html/changelogs/AutoChangeLog-pr-8290.yml b/html/changelogs/AutoChangeLog-pr-8290.yml
new file mode 100644
index 0000000000..553bfbf4f9
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8290.yml
@@ -0,0 +1,5 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - bugfix: "missing hopes and dreams"
+ - code_imp: "orgized the weapon file to be more cat brain friendly"
diff --git a/html/changelogs/AutoChangeLog-pr-8294.yml b/html/changelogs/AutoChangeLog-pr-8294.yml
new file mode 100644
index 0000000000..bce0031c2b
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8294.yml
@@ -0,0 +1,4 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - imageadd: "This means sprite right?"
diff --git a/html/changelogs/AutoChangeLog-pr-8301.yml b/html/changelogs/AutoChangeLog-pr-8301.yml
new file mode 100644
index 0000000000..90e893bdf2
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8301.yml
@@ -0,0 +1,5 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - rscadd: "mag gun uses cells"
+ - balance: "kev things their to op"
diff --git a/html/changelogs/AutoChangeLog-pr-8302.yml b/html/changelogs/AutoChangeLog-pr-8302.yml
new file mode 100644
index 0000000000..e2b535c40f
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8302.yml
@@ -0,0 +1,5 @@
+author: "BurgerBB"
+delete-after: True
+changes:
+ - tweak: "Tweaked penis."
+ - balance: "Rebalanced penis."
diff --git a/html/changelogs/AutoChangeLog-pr-8315.yml b/html/changelogs/AutoChangeLog-pr-8315.yml
new file mode 100644
index 0000000000..5d0b85e162
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8315.yml
@@ -0,0 +1,4 @@
+author: "Trilbyspaceclone"
+delete-after: True
+changes:
+ - bugfix: "laser carbine"
diff --git a/html/changelogs/AutoChangeLog-pr-8317.yml b/html/changelogs/AutoChangeLog-pr-8317.yml
new file mode 100644
index 0000000000..0fd31c3c52
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8317.yml
@@ -0,0 +1,4 @@
+author: "deathride58"
+delete-after: True
+changes:
+ - tweak: "Biogenerators now have a sane limit for production"
diff --git a/html/changelogs/AutoChangeLog-pr-8319.yml b/html/changelogs/AutoChangeLog-pr-8319.yml
new file mode 100644
index 0000000000..e46b83c121
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-8319.yml
@@ -0,0 +1,4 @@
+author: "BurgerBB"
+delete-after: True
+changes:
+ - rscadd: "Adds penis enlargement pills."
diff --git a/icons/mob/underwear.dmi b/icons/mob/underwear.dmi
index 385cd21516..0b63685668 100644
Binary files a/icons/mob/underwear.dmi and b/icons/mob/underwear.dmi differ
diff --git a/icons/mob/underwear_old.dmi b/icons/mob/underwear_old.dmi
new file mode 100644
index 0000000000..5e16a473ba
Binary files /dev/null and b/icons/mob/underwear_old.dmi differ
diff --git a/icons/obj/guns/energy.dmi b/icons/obj/guns/energy.dmi
index e3ec4171ad..4dec451008 100644
Binary files a/icons/obj/guns/energy.dmi and b/icons/obj/guns/energy.dmi differ
diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi
index 0ee0e3d2d1..e4a39903b3 100644
Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ
diff --git a/modular_citadel/code/game/machinery/vending.dm b/modular_citadel/code/game/machinery/vending.dm
index 213dd8a17a..bdca91b0e6 100755
--- a/modular_citadel/code/game/machinery/vending.dm
+++ b/modular_citadel/code/game/machinery/vending.dm
@@ -54,8 +54,11 @@
/obj/item/clothing/neck/petcollar = 5,
/obj/item/clothing/under/mankini = 1,
/obj/item/dildo/flared/huge = 1
- )
- premium = list(/obj/item/electropack/shockcollar = 3)
+ )
+ premium = list(
+ /obj/item/electropack/shockcollar = 3,
+ /obj/item/clothing/neck/petcollar/locked = 1
+ )
refill_canister = /obj/item/vending_refill/kink
/*
/obj/machinery/vending/nazivend
diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/modular_citadel/code/modules/arousal/organs/penis.dm
index 38e8e44f39..f6b9f1d999 100644
--- a/modular_citadel/code/modules/arousal/organs/penis.dm
+++ b/modular_citadel/code/modules/arousal/organs/penis.dm
@@ -4,7 +4,7 @@
icon_state = "penis"
icon = 'modular_citadel/icons/obj/genitals/penis.dmi'
zone = "groin"
- slot = "penis"
+ slot = ORGAN_SLOT_PENIS
w_class = 3
can_masturbate_with = TRUE
masturbation_verb = "stroke"
@@ -40,7 +40,8 @@
var/string = "penis_[GLOB.cock_shapes_icons[shape]]_[size]"
icon_state = sanitize_text(string)
var/lowershape = lowertext(shape)
- desc = "You see a [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[length > 1 ? "es" : ""] long."
+ desc = "You see [aroused_state ? "an erect" : "a flaccid"] [lowershape] penis. You estimate it's about [round(length, 0.25)] inch[round(length, 0.25) != 1 ? "es" : ""] long and [round(girth, 0.25)] inch[round(girth, 0.25) != 1 ? "es" : ""] in girth."
+
if(owner)
if(owner.dna.species.use_skintones && owner.dna.features["genitals_use_skintone"])
if(ishuman(owner)) // Check before recasting type, although someone fucked up if you're not human AND have use_skintones somehow...
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm
index df41a79592..b3af722332 100644
--- a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm
+++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon.dm
@@ -123,7 +123,7 @@
icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
///research memes///
-
+/*
/obj/item/gun/ballistic/automatic/pistol/mag/nopin
pin = null
spawnwithmagazine = FALSE
@@ -155,7 +155,7 @@
materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250)
build_path = /obj/item/ammo_box/magazine/mmag/small
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
+*/
//////toy memes/////
/obj/item/projectile/bullet/reusable/foam_dart/mag
@@ -271,7 +271,8 @@
recoil = 0.15
casing_ejector = 0
-///research///
+/*
+//research///
/obj/item/gun/ballistic/automatic/magrifle/nopin
pin = null
@@ -304,7 +305,7 @@
materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500)
build_path = /obj/item/ammo_box/magazine/mmag
departmental_flags = DEPARTMENTAL_FLAG_SECURITY
-
+*/
///foamagrifle///
/obj/item/ammo_box/magazine/toy/foamag
@@ -326,10 +327,9 @@
spread = 60
w_class = WEIGHT_CLASS_BULKY
weapon_weight = WEAPON_HEAVY
-
/*
// TECHWEBS IMPLEMENTATION
-*/
+//
/datum/techweb_node/magnetic_weapons
id = "magnetic_weapons"
@@ -339,7 +339,7 @@
design_ids = list("magrifle", "magpisol", "mag_magrifle", "mag_magrifle_nl", "mag_magpistol", "mag_magpistol_nl")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
-
+*/
//////Hyper-Burst Rifle//////
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm
new file mode 100644
index 0000000000..90dd577c4b
--- /dev/null
+++ b/modular_citadel/code/modules/projectiles/guns/ballistic/magweapon_energy.dm
@@ -0,0 +1,279 @@
+///ammo///
+
+/obj/item/ammo_casing/caseless/mag_e
+ var/energy_cost = 0
+
+/obj/item/ammo_casing/caseless/mag_e/amagm_e
+ desc = "A large ferromagnetic slug intended to be launched out of a compatible weapon."
+ caliber = "mag_e"
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "mag-casing-live"
+ projectile_type = /obj/item/projectile/bullet/magrifle
+ energy_cost = 300
+
+/obj/item/ammo_casing/caseless/mag_e/anlmagm_e
+ desc = "A large, specialized ferromagnetic slug designed with a less-than-lethal payload."
+ caliber = "mag_e"
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "mag-casing-live"
+ projectile_type = /obj/item/projectile/bullet/nlmagrifle
+ energy_cost = 300
+
+/obj/item/ammo_casing/caseless/mag_e/amags
+ desc = "A ferromagnetic slug intended to be launched out of a compatible weapon."
+ caliber = "mag_e"
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "mag-casing-live"
+ projectile_type = /obj/item/projectile/bullet/mags
+ energy_cost = 200
+
+/obj/item/ammo_casing/caseless/mag_e/anlmags
+ desc = "A specialized ferromagnetic slug designed with a less-than-lethal payload."
+ caliber = "mag_e"
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "mag-casing-live"
+ projectile_type = /obj/item/projectile/bullet/nlmags
+ energy_cost = 200
+
+///magazines///
+
+/obj/item/ammo_box/magazine/mmag_e/
+ name = "magrifle magazine (non-lethal disabler)"
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "mediummagmag"
+ ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmagm_e
+ caliber = "mag_e"
+ max_ammo = 24
+ multiple_sprites = 2
+
+/obj/item/ammo_box/magazine/mmag_e/lethal
+ name = "magrifle magazine (lethal)"
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "mediummagmag"
+ ammo_type = /obj/item/ammo_casing/caseless/mag_e/amagm_e
+ max_ammo = 24
+
+
+/obj/item/ammo_box/magazine/mmag_e/small
+ name = "magpistol magazine (non-lethal disabler)"
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "nlmagmag"
+ ammo_type = /obj/item/ammo_casing/caseless/mag_e/anlmags
+ caliber = "mag_e"
+ max_ammo = 15
+ multiple_sprites = 2
+
+/obj/item/ammo_box/magazine/mmag_e/small/lethal
+ name = "magpistol magazine (lethal)"
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "smallmagmag"
+ ammo_type = /obj/item/ammo_casing/caseless/mag_e/amags
+
+///cells///
+
+/obj/item/stock_parts/cell/magrifle_e
+ name = "magrifle power supply"
+ maxcharge = 14400
+
+/obj/item/stock_parts/cell/magpistol_e
+ name = "magpistol power supply"
+ maxcharge = 6000
+
+///sci designs///
+
+/datum/design/magrifle_e
+ name = "Magrifle"
+ desc = "An upscaled Magpistol in rifle form."
+ id = "magrifle_e"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 10000, MAT_GLASS = 2000, MAT_URANIUM = 2000, MAT_TITANIUM = 10000, MAT_SILVER = 4000, MAT_GOLD = 2000)
+ build_path = /obj/item/gun/ballistic/automatic/magrifle_e/nopin
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/mag_magrifle_e
+ name = "Magrifle Magazine (Lethal)"
+ desc = "A 24-round magazine for the Magrifle."
+ id = "mag_magrifle_e"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 8000, MAT_SILVER = 1000)
+ build_path = /obj/item/ammo_box/magazine/mmag_e/lethal
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/mag_magrifle_e/nl
+ name = "Magrifle Magazine (Non-Lethal)"
+ desc = "A 24- round non-lethal magazine for the Magrifle."
+ id = "mag_magrifle_e_nl"
+ materials = list(MAT_METAL = 6000, MAT_SILVER = 500, MAT_TITANIUM = 500)
+ build_path = /obj/item/ammo_box/magazine/mmag_e
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/magpistol_e
+ name = "Magpistol"
+ desc = "A weapon which fires ferromagnetic slugs."
+ id = "magpistol_e"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 7500, MAT_GLASS = 1000, MAT_URANIUM = 1000, MAT_TITANIUM = 5000, MAT_SILVER = 2000)
+ build_path = /obj/item/gun/ballistic/automatic/pistol/mag_e/nopin
+ category = list("Weapons")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/mag_magpistol_e
+ name = "Magpistol Magazine"
+ desc = "A 14 round magazine for the Magpistol."
+ id = "mag_magpistol_e"
+ build_type = PROTOLATHE
+ materials = list(MAT_METAL = 4000, MAT_SILVER = 500)
+ build_path = /obj/item/ammo_box/magazine/mmag_e/small/lethal
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/mag_magpistol_e/nl
+ name = "Magpistol Magazine (Non-Lethal)"
+ desc = "A 14 round non-lethal magazine for the Magpistol."
+ id = "mag_magpistol_e_nl"
+ materials = list(MAT_METAL = 3000, MAT_SILVER = 250, MAT_TITANIUM = 250)
+ build_path = /obj/item/ammo_box/magazine/mmag_e/small
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/*
+// TECHWEBS IMPLEMENTATION
+*/
+
+/datum/techweb_node/magnetic_weapons
+ id = "magnetic_weapons"
+ display_name = "Magnetic Weapons"
+ description = "Weapons using magnetic technology"
+ prereq_ids = list("weaponry", "adv_weaponry", "emp_adv")
+ design_ids = list("magrifle_e", "magpistol_e", "mag_magrifle_e", "mag_magrifle_e_nl", "mag_magpistol_e", "mag_magpistol_e_nl")
+ research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
+ export_price = 5000
+
+///magrifle///
+
+/obj/item/gun/ballistic/automatic/magrifle_e
+ name = "\improper Magnetic Rifle"
+ desc = "A simple upscalling of the technologies used in the magpistol, the magrifle is capable of firing slightly larger slugs in bursts. Compatible with the magpistol's slugs."
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "magrifle"
+ item_state = "arg"
+ slot_flags = 0
+ mag_type = /obj/item/ammo_box/magazine/mmag_e
+ fire_sound = 'sound/weapons/magrifle.ogg'
+ can_suppress = 0
+ burst_size = 3
+ fire_delay = 2
+ spread = 5
+ recoil = 0.15
+ casing_ejector = 0
+ var/obj/item/stock_parts/cell/cell
+ var/cell_type = /obj/item/stock_parts/cell/magrifle_e
+ var/dead_cell = FALSE
+
+
+/obj/item/gun/ballistic/automatic/magrifle_e/can_shoot()
+ if(QDELETED(cell))
+ return 0
+
+ var/obj/item/ammo_casing/caseless/mag_e/shot = chambered
+ if(!shot)
+ return 0
+ if(cell.charge < shot.energy_cost*burst_size)
+ return 0
+ . = ..()
+
+/obj/item/gun/ballistic/automatic/magrifle_e/shoot_live_shot()
+ var/obj/item/ammo_casing/caseless/mag_e/shot = chambered
+ cell.use(shot.energy_cost)
+ . = ..()
+
+/obj/item/gun/ballistic/automatic/magrifle_e/emp_act(severity)
+ . = ..()
+ if(!(. & EMP_PROTECT_CONTENTS))
+ cell.use(round(cell.charge / severity))
+
+/obj/item/gun/ballistic/automatic/magrifle_e/get_cell()
+ return cell
+
+/obj/item/gun/ballistic/automatic/magrifle_e/Initialize()
+ . = ..()
+ if(cell_type)
+ cell = new cell_type(src)
+ else
+ cell = new(src)
+
+ if(!dead_cell)
+ cell.give(cell.maxcharge)
+
+/obj/item/gun/ballistic/automatic/magrifle_e/nopin
+ pin = null
+ spawnwithmagazine = FALSE
+
+
+///magpistol///
+
+/obj/item/gun/ballistic/automatic/pistol/mag_e
+ name = "magpistol"
+ desc = "A handgun utilizing maglev technologies to propel a ferromagnetic slug to extreme velocities."
+ icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
+ icon_state = "magpistol"
+ force = 10
+ fire_sound = 'sound/weapons/magpistol.ogg'
+ mag_type = /obj/item/ammo_box/magazine/mmag_e/small
+ can_suppress = 0
+ casing_ejector = 0
+ fire_delay = 2
+ recoil = 0.2
+ var/obj/item/stock_parts/cell/cell
+ var/cell_type = /obj/item/stock_parts/cell/magpistol_e
+ var/dead_cell = FALSE
+
+/obj/item/gun/ballistic/automatic/pistol/mag_e/can_shoot()
+ if(QDELETED(cell))
+ return 0
+
+ var/obj/item/ammo_casing/caseless/mag_e/shot = chambered
+ if(!shot)
+ return 0
+ if(cell.charge < shot.energy_cost)
+ return 0
+ . = ..()
+
+/obj/item/gun/ballistic/automatic/pistol/mag_e/shoot_live_shot()
+ var/obj/item/ammo_casing/caseless/mag_e/shot = chambered
+ cell.use(shot.energy_cost)
+ . = ..()
+
+/obj/item/gun/ballistic/automatic/pistol/mag_e/emp_act(severity)
+ . = ..()
+ if(!(. & EMP_PROTECT_CONTENTS))
+ cell.use(round(cell.charge / severity))
+
+/obj/item/gun/ballistic/automatic/pistol/mag_e/get_cell()
+ return cell
+
+/obj/item/gun/ballistic/automatic/pistol/mag_e/Initialize()
+ . = ..()
+ if(cell_type)
+ cell = new cell_type(src)
+ else
+ cell = new(src)
+
+ if(!dead_cell)
+ cell.give(cell.maxcharge)
+
+
+/obj/item/gun/ballistic/automatic/pistol/mag_e/update_icon()
+ ..()
+ if(magazine)
+ cut_overlays()
+ add_overlay("magpistol-magazine")
+ else
+ cut_overlays()
+ icon_state = "[initial(icon_state)][chambered ? "" : "-e"]"
+
+
+/obj/item/gun/ballistic/automatic/pistol/mag_e/nopin
+ pin = null
+ spawnwithmagazine = FALSE
diff --git a/modular_citadel/code/modules/projectiles/guns/energy/laser.dm b/modular_citadel/code/modules/projectiles/guns/energy/laser.dm
index 61996a777a..c82a3e9ed9 100644
--- a/modular_citadel/code/modules/projectiles/guns/energy/laser.dm
+++ b/modular_citadel/code/modules/projectiles/guns/energy/laser.dm
@@ -17,30 +17,3 @@
/obj/item/gun/energy/laser/redtag
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
-
-/obj/item/gun/energy/laser/carbine
- name = "VGS blaster carbine"
- desc = "A ruggedized laser carbine featuring much higher capacity and improved handling when compared to a normal blaster carbine."
- icon = 'modular_citadel/icons/obj/guns/cit_guns.dmi'
- icon_state = "lasernew"
- item_state = "laser"
- force = 10
- throwforce = 10
- ammo_type = list(/obj/item/ammo_casing/energy/lasergun)
- cell_type = /obj/item/stock_parts/cell/lascarbine
-
-/obj/item/gun/energy/laser/carbine/nopin
- pin = null
-
-/obj/item/stock_parts/cell/lascarbine
- name = "laser carbine power supply"
- maxcharge = 2500
-
-/datum/design/lasercarbine
- name = "VGS Blaster Carbine"
- desc = "Beefed up version of a normal blaster carbine."
- id = "lasercarbine"
- build_type = PROTOLATHE
- materials = list(MAT_GOLD = 2500, MAT_METAL = 5000, MAT_GLASS = 5000)
- build_path = /obj/item/gun/energy/laser/carbine/nopin
- category = list("Weapons")
\ No newline at end of file
diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
index e46174b5a9..061f941043 100644
--- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
+++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm
@@ -97,7 +97,7 @@
color = "#FFADFF"//PINK, rgb(255, 173, 255)
/datum/reagent/drug/aphrodisiac/on_mob_life(mob/living/M)
- if(M && M.canbearoused)
+ if(M && M.canbearoused && !M.has_trait(TRAIT_CROCRIN_IMMUNE))
if(prob(33))
M.adjustArousalLoss(2)
if(prob(5))
@@ -119,7 +119,7 @@
overdose_threshold = 20
/datum/reagent/drug/aphrodisiacplus/on_mob_life(mob/living/M)
- if(M && M.canbearoused)
+ if(M && M.canbearoused && !M.has_trait(TRAIT_CROCRIN_IMMUNE))
if(prob(33))
M.adjustArousalLoss(6)//not quite six times as powerful, but still considerably more powerful.
if(prob(5))
@@ -151,7 +151,7 @@
..()
/datum/reagent/drug/aphrodisiacplus/overdose_process(mob/living/M)
- if(M && M.canbearoused && prob(33))
+ if(M && M.canbearoused && !M.has_trait(TRAIT_CROCRIN_IMMUNE) && prob(33))
if(M.getArousalLoss() >= 100 && ishuman(M) && M.has_dna())
var/mob/living/carbon/human/H = M
if(prob(50)) //Less spam
diff --git a/modular_citadel/icons/obj/food/food.dmi b/modular_citadel/icons/obj/food/food.dmi
index d205b29b8b..da9a6c365f 100644
Binary files a/modular_citadel/icons/obj/food/food.dmi and b/modular_citadel/icons/obj/food/food.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 5b4c4eabe5..9e9c6fe593 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1628,6 +1628,7 @@
#include "code\modules\food_and_drinks\food\snacks_sandwichtoast.dm"
#include "code\modules\food_and_drinks\food\snacks_soup.dm"
#include "code\modules\food_and_drinks\food\snacks_spaghetti.dm"
+#include "code\modules\food_and_drinks\food\snacks_sushi.dm"
#include "code\modules\food_and_drinks\food\snacks_vend.dm"
#include "code\modules\food_and_drinks\food\snacks\dough.dm"
#include "code\modules\food_and_drinks\food\snacks\meat.dm"
@@ -1655,6 +1656,7 @@
#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sandwich.dm"
#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_soup.dm"
#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_spaghetti.dm"
+#include "code\modules\food_and_drinks\recipes\tablecraft\recipes_sushi.dm"
#include "code\modules\games\cas.dm"
#include "code\modules\goonchat\browserOutput.dm"
#include "code\modules\goonchat\jsErrorHandler.dm"
@@ -1874,7 +1876,23 @@
#include "code\modules\mob\dead\new_player\new_player.dm"
#include "code\modules\mob\dead\new_player\poll.dm"
#include "code\modules\mob\dead\new_player\preferences_setup.dm"
-#include "code\modules\mob\dead\new_player\sprite_accessories.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\_sprite_accessories.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\body_markings.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\caps.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\ears.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\frills.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\hair_face.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\hair_head.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\horns.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\legs.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\moth_wings.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\pines.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\snouts.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\socks.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\tails.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\undershirt.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\underwear.dm"
+#include "code\modules\mob\dead\new_player\sprite_accessories\wings.dm"
#include "code\modules\mob\dead\observer\login.dm"
#include "code\modules\mob\dead\observer\logout.dm"
#include "code\modules\mob\dead\observer\notificationprefs.dm"
@@ -2954,6 +2972,7 @@
#include "modular_citadel\code\modules\projectiles\guns\ballistic\flechette.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\handguns.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon.dm"
+#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon_energy.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\revolver.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\rifles.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\spinfusor.dm"