diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 6a323ee86f..bdd7ac4179 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -63,21 +63,21 @@ pixel_y = 4 }, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "am" = ( /obj/structure/closet/crate/bin, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "an" = ( /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "ao" = ( @@ -86,8 +86,8 @@ layer = 3.3 }, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "ap" = ( @@ -166,15 +166,15 @@ pixel_y = 8 }, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "aA" = ( /obj/structure/chair/wood/normal, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "aB" = ( @@ -218,16 +218,16 @@ dir = 4 }, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "aJ" = ( /obj/structure/table/wood/poker, /obj/item/clothing/mask/cigarette/pipe, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "aK" = ( @@ -235,8 +235,8 @@ /obj/structure/table/wood/poker, /obj/effect/holodeck_effect/cards, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "aL" = ( @@ -244,8 +244,8 @@ dir = 8 }, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "aM" = ( @@ -259,8 +259,8 @@ dir = 1 }, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "aO" = ( @@ -272,15 +272,15 @@ dir = 4 }, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "aQ" = ( /obj/structure/window/reinforced, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "aR" = ( @@ -299,8 +299,8 @@ pixel_y = 10 }, /turf/open/floor/holofloor{ - icon_state = "wood"; - dir = 9 + dir = 9; + icon_state = "wood" }, /area/holodeck/rec_center/lounge) "aU" = ( @@ -1403,7 +1403,6 @@ /obj/structure/window/reinforced, /obj/machinery/mass_driver{ dir = 1; - icon_state = "mass_driver"; id = "trektorpedo1"; name = "photon torpedo tube" }, @@ -1452,7 +1451,6 @@ /obj/structure/window/reinforced, /obj/machinery/mass_driver{ dir = 1; - icon_state = "mass_driver"; id = "trektorpedo2"; name = "photon torpedo tube" }, @@ -1470,14 +1468,14 @@ dir = 4 }, /turf/open/floor/holofloor{ - icon_state = "chapel"; - dir = 1 + dir = 1; + icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) "dT" = ( /turf/open/floor/holofloor{ - icon_state = "chapel"; - dir = 4 + dir = 4; + icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) "dU" = ( @@ -1489,8 +1487,8 @@ /area/holodeck/rec_center/chapelcourt) "dV" = ( /turf/open/floor/holofloor{ - icon_state = "chapel"; - dir = 1 + dir = 1; + icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) "dW" = ( @@ -1498,8 +1496,8 @@ dir = 8 }, /turf/open/floor/holofloor{ - icon_state = "chapel"; - dir = 4 + dir = 4; + icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) "dX" = ( @@ -1523,8 +1521,8 @@ dir = 8 }, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 8 + dir = 8; + icon_state = "white" }, /area/holodeck/rec_center/firingrange) "eb" = ( @@ -1539,8 +1537,8 @@ dir = 4 }, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 4 + dir = 4; + icon_state = "white" }, /area/holodeck/rec_center/firingrange) "ed" = ( @@ -1611,8 +1609,7 @@ /area/holodeck/rec_center/chapelcourt) "en" = ( /turf/open/floor/holofloor{ - icon_state = "chapel"; - dir = 2 + icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) "eo" = ( @@ -1635,8 +1632,7 @@ dir = 8 }, /turf/open/floor/holofloor{ - icon_state = "chapel"; - dir = 2 + icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) "er" = ( @@ -1644,8 +1640,8 @@ dir = 8 }, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 10 + dir = 10; + icon_state = "white" }, /area/holodeck/rec_center/firingrange) "es" = ( @@ -1658,8 +1654,8 @@ dir = 4 }, /turf/open/floor/holofloor{ - icon_state = "white"; - dir = 6 + dir = 6; + icon_state = "white" }, /area/holodeck/rec_center/firingrange) "eu" = ( @@ -1679,8 +1675,8 @@ /area/holodeck/rec_center/spacechess) "ex" = ( /turf/open/floor/holofloor{ - icon_state = "stairs-old"; - dir = 8 + dir = 8; + icon_state = "stairs-old" }, /area/holodeck/rec_center/thunderdome1218) "ey" = ( @@ -1780,8 +1776,8 @@ dir = 1 }, /turf/open/floor/holofloor{ - icon_state = "chapel"; - dir = 1 + dir = 1; + icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) "eN" = ( @@ -1789,8 +1785,8 @@ dir = 1 }, /turf/open/floor/holofloor{ - icon_state = "chapel"; - dir = 4 + dir = 4; + icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) "eO" = ( @@ -1827,8 +1823,7 @@ dir = 1 }, /turf/open/floor/holofloor{ - icon_state = "chapel"; - dir = 2 + icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) "eT" = ( @@ -2517,9 +2512,9 @@ /area/ctf) "gB" = ( /obj/structure/window/reinforced/fulltile{ - obj_integrity = 5000; max_integrity = 5000; - name = "hardened window" + name = "hardened window"; + obj_integrity = 5000 }, /turf/open/floor/plating, /area/ctf) @@ -3471,8 +3466,7 @@ "ja" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ - name = "CentCom"; - opacity = 1 + name = "CentCom" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -3565,7 +3559,6 @@ /area/centcom/control) "jk" = ( /obj/machinery/door/poddoor{ - density = 1; id = "XCCQMLoaddoor2"; name = "Supply Dock Loading Door" }, @@ -3580,9 +3573,7 @@ /area/centcom/supply) "jl" = ( /obj/structure/plasticflaps, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/conveyor{ dir = 4; id = "XCCQMLoad2" @@ -3591,13 +3582,10 @@ /area/centcom/supply) "jm" = ( /obj/machinery/door/poddoor{ - density = 1; id = "XCCQMLoaddoor2"; name = "Supply Dock Loading Door" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/conveyor{ dir = 4; id = "XCCQMLoad2" @@ -3683,7 +3671,6 @@ pixel_y = -5 }, /obj/machinery/button/door{ - dir = 2; id = "XCCQMLoaddoor2"; layer = 4; name = "Loading Doors"; @@ -3760,7 +3747,6 @@ /area/centcom/control) "jI" = ( /obj/machinery/door/poddoor{ - density = 1; id = "XCCQMLoaddoor"; name = "Supply Dock Loading Door" }, @@ -3779,14 +3765,11 @@ dir = 8; id = "XCCQMLoad" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/supply) "jK" = ( /obj/machinery/door/poddoor{ - density = 1; id = "XCCQMLoaddoor"; name = "Supply Dock Loading Door" }, @@ -3794,9 +3777,7 @@ dir = 8; id = "XCCQMLoad" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/supply) "jL" = ( @@ -4103,7 +4084,6 @@ "ki" = ( /obj/docking_port/stationary{ area_type = /area/syndicate_mothership; - dir = 1; dwidth = 25; height = 50; id = "emergency_syndicate"; @@ -4282,8 +4262,7 @@ /area/centcom/control) "kG" = ( /obj/structure/chair/comfy/brown{ - color = "#596479"; - dir = 2 + color = "#596479" }, /turf/open/floor/plasteel/grimy, /area/centcom/control) @@ -4431,19 +4410,14 @@ "kZ" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/control) "la" = ( /obj/machinery/door/window/brigdoor{ base_state = "rightsecure"; - dir = 2; - icon_state = "leftsecure"; name = "CentCom Stand"; req_access_txt = "109" }, @@ -4479,8 +4453,6 @@ }, /obj/machinery/door/window/brigdoor{ base_state = "rightsecure"; - dir = 2; - icon_state = "leftsecure"; name = "CentCom Stand"; req_access_txt = "109" }, @@ -4498,8 +4470,6 @@ "lf" = ( /obj/machinery/door/window/brigdoor{ base_state = "rightsecure"; - dir = 2; - icon_state = "leftsecure"; name = "CentCom Stand"; req_access_txt = "109" }, @@ -4701,12 +4671,9 @@ "lJ" = ( /obj/machinery/door/airlock/centcom{ name = "Shuttle Control Office"; - opacity = 1; req_access_txt = "109" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/supply) "lK" = ( @@ -4714,9 +4681,7 @@ name = "CentCom Supply"; req_access_txt = "106" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/supply) "lL" = ( @@ -4792,10 +4757,16 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"lS" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Ninja1"; + name = "Dorm 1" + }, +/turf/open/floor/wood, +/area/centcom/holding) "lT" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, /obj/effect/turf_decal/stripes/line{ @@ -4852,6 +4823,16 @@ icon_state = "alien11" }, /area/abductor_ship) +"ma" = ( +/obj/machinery/button/door{ + id = "Ninja7"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) "mb" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/neutral{ @@ -5249,9 +5230,7 @@ /area/centcom/control) "mR" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/control) "mS" = ( @@ -5769,8 +5748,6 @@ "nQ" = ( /obj/machinery/door/window/brigdoor{ base_state = "rightsecure"; - dir = 2; - icon_state = "leftsecure"; name = "CentCom Stand"; req_access_txt = "109" }, @@ -5793,8 +5770,6 @@ "nR" = ( /obj/machinery/door/window/brigdoor{ base_state = "rightsecure"; - dir = 2; - icon_state = "leftsecure"; name = "CentCom Stand"; req_access_txt = "109" }, @@ -6295,7 +6270,6 @@ "oJ" = ( /obj/machinery/door/airlock/centcom{ name = "Administrative Office"; - opacity = 1; req_access_txt = "109" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -6610,11 +6584,11 @@ /obj/structure/table/reinforced, /obj/machinery/door/firedoor, /obj/machinery/door/window/brigdoor{ - name = "CentCom Customs"; - icon_state = "rightsecure"; + base_state = "rightsecure"; dir = 4; - req_access_txt = "109"; - base_state = "rightsecure" + icon_state = "rightsecure"; + name = "CentCom Customs"; + req_access_txt = "109" }, /obj/item/clipboard, /obj/item/folder/yellow, @@ -6990,9 +6964,7 @@ /area/ai_multicam_room) "pZ" = ( /obj/machinery/washing_machine, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, +/turf/open/floor/plasteel/freezer, /area/syndicate_mothership) "qa" = ( /obj/structure/flora/tree/pine, @@ -7275,8 +7247,8 @@ /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/fernybush, /turf/open/floor/plasteel{ - name = "plating"; - icon_state = "asteroid5" + icon_state = "asteroid5"; + name = "plating" }, /area/centcom/control) "qx" = ( @@ -7334,24 +7306,26 @@ /turf/closed/indestructible/riveted/uranium, /area/wizard_station) "qI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/machinery/light{ dir = 1 }, /turf/open/floor/plating, /area/syndicate_mothership) +"qP" = ( +/obj/structure/chair/comfy/brown{ + color = "#596479"; + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) "qQ" = ( /obj/machinery/door/airlock/centcom{ name = "Administrative Office"; - opacity = 1; req_access_txt = "109" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/ferry) "qR" = ( @@ -7361,23 +7335,17 @@ "qS" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/centcom/supply) "qT" = ( /obj/machinery/door/airlock/centcom{ - name = "CentCom"; - opacity = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 + name = "CentCom" }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/centcom/control) @@ -7747,8 +7715,8 @@ dir = 4 }, /turf/open/floor/plasteel{ - name = "plating"; - icon_state = "asteroid5" + icon_state = "asteroid5"; + name = "plating" }, /area/centcom/control) "rI" = ( @@ -7940,7 +7908,6 @@ "sc" = ( /obj/docking_port/stationary{ area_type = /area/syndicate_mothership/control; - dir = 1; dwidth = 3; height = 7; name = "escape pod loader"; @@ -8259,7 +8226,6 @@ "sL" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, /obj/effect/turf_decal/stripes/line{ @@ -8388,7 +8354,6 @@ "te" = ( /obj/machinery/door/airlock/centcom{ name = "Auxillary Dock"; - opacity = 1; req_access_txt = "" }, /turf/open/floor/plating, @@ -8751,6 +8716,10 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plasteel, /area/centcom/supplypod) +"tZ" = ( +/obj/structure/chair/wood/normal, +/turf/open/floor/wood, +/area/centcom/holding) "uc" = ( /obj/effect/turf_decal/tile/green{ dir = 1 @@ -8764,9 +8733,7 @@ /obj/item/storage/crayons, /obj/structure/table, /obj/item/storage/crayons, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, +/turf/open/floor/plasteel/freezer, /area/syndicate_mothership) "uf" = ( /obj/effect/turf_decal/tile/brown{ @@ -8777,6 +8744,13 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/three) +"uh" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Ninja2"; + name = "Dorm 2" + }, +/turf/open/floor/wood, +/area/centcom/holding) "uj" = ( /obj/item/clipboard, /obj/item/folder/red, @@ -9078,12 +9052,9 @@ "uO" = ( /obj/machinery/door/airlock/centcom{ name = "Shuttle Control Office"; - opacity = 1; req_access_txt = "109" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/ferry) "uP" = ( @@ -9309,9 +9280,9 @@ dwidth = 25; height = 50; id = "emergency_away"; + json_key = "emergency"; name = "CentCom Emergency Shuttle Dock"; - width = 50; - json_key = "emergency" + width = 50 }, /turf/open/space, /area/space) @@ -9446,12 +9417,9 @@ "vF" = ( /obj/machinery/door/airlock/centcom{ name = "Administrative Office"; - opacity = 1; req_access_txt = "109" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/ferry) "vG" = ( @@ -9755,6 +9723,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/three) +"wj" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet" + }, +/turf/open/floor/carpet/royalblue, +/area/centcom/holding) "wl" = ( /obj/structure/table/wood, /obj/item/paicard, @@ -9814,7 +9789,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, /obj/effect/turf_decal/stripes/line{ @@ -9881,7 +9855,6 @@ "wC" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Customs"; - opacity = 1; req_access_txt = "109" }, /obj/effect/turf_decal/stripes/line{ @@ -9914,8 +9887,7 @@ /area/centcom/control) "wE" = ( /obj/structure/chair/comfy/brown{ - color = "#596479"; - dir = 2 + color = "#596479" }, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -9967,8 +9939,7 @@ "wJ" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ - name = "CentCom"; - opacity = 1 + name = "CentCom" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -10033,9 +10004,7 @@ /area/syndicate_mothership) "xa" = ( /obj/machinery/door/window/northright{ - base_state = "right"; dir = 4; - icon_state = "right"; name = "Security Desk"; req_access_txt = "103" }, @@ -10266,6 +10235,14 @@ /obj/item/bedsheet/syndie, /turf/open/floor/plasteel/dark, /area/syndicate_mothership) +"xO" = ( +/obj/structure/curtain, +/obj/machinery/shower, +/obj/structure/window{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "xQ" = ( /obj/effect/turf_decal/delivery, /obj/machinery/light, @@ -10396,7 +10373,6 @@ "yj" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, /obj/effect/turf_decal/stripes/line{ @@ -10441,12 +10417,9 @@ "yr" = ( /obj/machinery/door/airlock/centcom{ name = "Briefing Room"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/ferry) "ys" = ( @@ -10652,11 +10625,17 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"yS" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Ninja7"; + name = "Dorm 7" + }, +/turf/open/floor/wood, +/area/centcom/holding) "yU" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ - name = "CentCom"; - opacity = 1 + name = "CentCom" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -10828,7 +10807,6 @@ "zj" = ( /obj/structure/closet/secure_closet/ertCom, /obj/structure/sign/directions/command{ - dir = 2; pixel_y = 24 }, /obj/effect/turf_decal/stripes/line, @@ -10838,9 +10816,7 @@ /obj/machinery/door/airlock/medical/glass{ name = "Infirmary" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/control) "zl" = ( @@ -11098,6 +11074,13 @@ /obj/item/reagent_containers/food/snacks/carpmeat, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"zW" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Ninja5"; + name = "Dorm 5" + }, +/turf/open/floor/wood, +/area/centcom/holding) "zX" = ( /obj/structure/table, /obj/machinery/light{ @@ -11106,6 +11089,14 @@ /obj/item/soap/deluxe, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"zY" = ( +/obj/item/bedsheet/wiz{ + desc = "A glow in the dark blue bedsheet."; + name = "blue bedsheet" + }, +/obj/structure/bed, +/turf/open/floor/carpet/royalblue, +/area/centcom/holding) "Aa" = ( /turf/open/floor/mech_bay_recharge_floor, /area/syndicate_mothership) @@ -11344,6 +11335,16 @@ /obj/effect/decal/remains/xeno, /turf/open/floor/grass, /area/wizard_station) +"AC" = ( +/obj/machinery/button/door{ + id = "Ninja5"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) "AD" = ( /obj/machinery/door/airlock/centcom{ name = "Leader's Room"; @@ -11585,11 +11586,6 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) -"Bp" = ( -/obj/item/paicard, -/obj/structure/table/wood, -/turf/open/floor/engine/cult, -/area/wizard_station) "Bs" = ( /obj/structure/table/wood, /obj/machinery/computer/libraryconsole/bookmanagement, @@ -11846,12 +11842,9 @@ "BM" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/evac) "BN" = ( @@ -12157,7 +12150,6 @@ icon_state = "plant-22" }, /obj/machinery/power/apc{ - dir = 2; name = "Briefing Room APC"; pixel_y = -26 }, @@ -12876,11 +12868,11 @@ /obj/item/folder/red, /obj/item/pen/red, /obj/machinery/door/window/brigdoor{ - name = "CentCom Customs"; - icon_state = "rightsecure"; + base_state = "rightsecure"; dir = 4; - req_access_txt = "109"; - base_state = "rightsecure" + icon_state = "rightsecure"; + name = "CentCom Customs"; + req_access_txt = "109" }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -12891,11 +12883,11 @@ /obj/item/folder/white, /obj/item/pen/blue, /obj/machinery/door/window/brigdoor{ - name = "CentCom Customs"; - icon_state = "rightsecure"; + base_state = "rightsecure"; dir = 8; - req_access_txt = "109"; - base_state = "rightsecure" + icon_state = "rightsecure"; + name = "CentCom Customs"; + req_access_txt = "109" }, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, @@ -13101,12 +13093,9 @@ /area/wizard_station) "Eg" = ( /obj/machinery/door/airlock/centcom{ - name = "Thunderdome Booth"; - opacity = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 + name = "Thunderdome Booth" }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/control) "Eh" = ( @@ -13121,7 +13110,6 @@ /area/wizard_station) "Ej" = ( /obj/vehicle/ridden/scooter/skateboard{ - icon_state = "skateboard"; dir = 4 }, /obj/effect/turf_decal/stripes/line, @@ -13161,9 +13149,7 @@ /area/tdome/tdomeobserve) "Eq" = ( /obj/machinery/door/airlock/external, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Er" = ( @@ -13263,12 +13249,9 @@ "EB" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) @@ -13281,9 +13264,7 @@ /turf/open/floor/engine/cult, /area/wizard_station) "ED" = ( -/obj/machinery/vending/boozeomat{ - req_access_txt = "0" - }, +/obj/machinery/vending/boozeomat, /turf/closed/indestructible{ icon = 'icons/turf/walls/wood_wall.dmi'; icon_state = "wood"; @@ -13323,8 +13304,8 @@ /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/fernybush, /turf/open/floor/plasteel{ - name = "plating"; - icon_state = "asteroid5" + icon_state = "asteroid5"; + name = "plating" }, /area/tdome/tdomeobserve) "EH" = ( @@ -13591,7 +13572,6 @@ "Fr" = ( /obj/machinery/door/window/brigdoor{ base_state = "rightsecure"; - dir = 2; icon_state = "rightsecure"; name = "Thunderdome Booth"; req_access_txt = "109" @@ -13731,8 +13711,7 @@ /area/tdome/tdomeobserve) "FK" = ( /obj/machinery/door/airlock/centcom{ - name = "Thunderdome Backstage"; - opacity = 1 + name = "Thunderdome Backstage" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -13984,9 +13963,9 @@ /area/tdome/tdomeobserve) "Gr" = ( /obj/structure/window/reinforced{ - resistance_flags = 3; color = "#008000"; - dir = 1 + dir = 1; + resistance_flags = 3 }, /turf/open/lava, /area/wizard_station) @@ -14004,9 +13983,7 @@ /area/tdome/tdomeobserve) "Gv" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Gw" = ( @@ -14016,12 +13993,9 @@ "Gx" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Gy" = ( @@ -14033,9 +14007,9 @@ resistance_flags = 3 }, /obj/structure/window/reinforced{ - resistance_flags = 3; color = "#008000"; - dir = 1 + dir = 1; + resistance_flags = 3 }, /turf/open/lava/airless, /area/wizard_station) @@ -14823,12 +14797,9 @@ "HS" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome Locker Room"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "HT" = ( @@ -15176,12 +15147,9 @@ "Ix" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome Administration"; - opacity = 1; req_access_txt = "102" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/tdome/tdomeadmin) @@ -15348,9 +15316,7 @@ /area/tdome/tdomeadmin) "IS" = ( /obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/tdome/tdomeadmin) "IT" = ( @@ -15442,8 +15408,8 @@ /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/fernybush, /turf/open/floor/plasteel{ - name = "plating"; - icon_state = "asteroid5" + icon_state = "asteroid5"; + name = "plating" }, /area/tdome/tdomeadmin) "Je" = ( @@ -15878,6 +15844,14 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) +"Kf" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/lighter, +/obj/item/stack/sheet/mineral/wood{ + amount = 10 + }, +/turf/open/floor/carpet/red, +/area/centcom/holding) "Kg" = ( /turf/closed/indestructible/fakedoor{ name = "Thunderdome Admin" @@ -15887,7 +15861,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ name = "Thunderdome Administration"; - opacity = 1; req_access_txt = "102" }, /obj/effect/turf_decal/stripes/line{ @@ -16199,7 +16172,6 @@ /area/centcom/evac) "KL" = ( /obj/docking_port/stationary{ - dir = 1; dwidth = 1; height = 4; id = "pod4_away"; @@ -16210,7 +16182,6 @@ /area/space) "KM" = ( /obj/docking_port/stationary{ - dir = 1; dwidth = 1; height = 4; id = "pod3_away"; @@ -16322,6 +16293,12 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"Ln" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "Lp" = ( /obj/structure/chair{ dir = 4 @@ -16598,6 +16575,12 @@ "Mm" = ( /turf/open/floor/grass, /area/centcom/holding) +"Ms" = ( +/obj/effect/mob_spawn/human/ghostcafe{ + dir = 8 + }, +/turf/open/floor/wood, +/area/centcom/holding) "Mt" = ( /obj/structure/window/reinforced{ dir = 4 @@ -16701,6 +16684,13 @@ "MI" = ( /turf/open/floor/plating, /area/syndicate_mothership) +"MJ" = ( +/obj/structure/bed, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) "MM" = ( /obj/structure/window/reinforced, /turf/open/floor/carpet/black, @@ -16767,12 +16757,9 @@ "Nk" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -16810,9 +16797,7 @@ /area/syndicate_mothership) "Nv" = ( /obj/structure/table, -/turf/open/floor/plasteel/cafeteria{ - dir = 2 - }, +/turf/open/floor/plasteel/cafeteria, /area/centcom/holding) "Nw" = ( /obj/machinery/recharge_station, @@ -16852,12 +16837,9 @@ "NG" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -16888,12 +16870,9 @@ /area/centcom/holding) "NU" = ( /obj/machinery/door/airlock/centcom{ - name = "CentCom"; - opacity = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 + name = "CentCom" }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -16933,6 +16912,9 @@ /obj/machinery/deepfryer, /turf/open/floor/plasteel/cafeteria, /area/syndicate_mothership) +"Of" = ( +/turf/open/floor/carpet/red, +/area/centcom/holding) "Oh" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -16942,8 +16924,7 @@ "Oj" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ - name = "CentCom"; - opacity = 1 + name = "CentCom" }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -16953,6 +16934,10 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"Ol" = ( +/obj/structure/table/wood/fancy, +/turf/open/floor/wood, +/area/centcom/holding) "Om" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -16986,6 +16971,12 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) +"Ox" = ( +/obj/machinery/door/airlock/wood/glass{ + name = "Cryo" + }, +/turf/open/floor/wood, +/area/centcom/holding) "Oz" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -17121,7 +17112,9 @@ /turf/open/floor/wood, /area/syndicate_mothership) "Px" = ( -/obj/machinery/vr_sleeper, +/obj/structure/mineral_door/paperframe{ + name = "Arcade" + }, /turf/open/floor/wood, /area/centcom/holding) "PA" = ( @@ -17135,7 +17128,10 @@ /area/syndicate_mothership) "PF" = ( /obj/machinery/vr_sleeper{ - dir = 1 + dir = 8 + }, +/obj/machinery/light{ + dir = 4 }, /turf/open/floor/wood, /area/centcom/holding) @@ -17168,6 +17164,12 @@ /obj/machinery/autolathe, /turf/open/floor/wood, /area/centcom/holding) +"PM" = ( +/obj/machinery/vending/clothing{ + extended_inventory = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) "PO" = ( /obj/machinery/hydroponics/constructable, /obj/effect/turf_decal/tile/green{ @@ -17246,6 +17248,11 @@ "Qe" = ( /turf/open/ai_visible, /area/ai_multicam_room) +"Qi" = ( +/obj/item/paicard, +/obj/structure/table/wood, +/turf/open/floor/engine/cult, +/area/wizard_station) "Qk" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ppflowers, @@ -17273,11 +17280,8 @@ /turf/open/floor/plasteel, /area/syndicate_mothership) "Qu" = ( -/obj/machinery/vr_sleeper{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 +/obj/machinery/door/airlock/wood/glass{ + name = "Dorms" }, /turf/open/floor/wood, /area/centcom/holding) @@ -17292,9 +17296,25 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/syndicate_mothership) +"QC" = ( +/obj/machinery/door/airlock/wood{ + name = "Bathroom" + }, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "QE" = ( /turf/open/floor/plasteel, /area/centcom/supplypod) +"QF" = ( +/obj/machinery/button/door{ + id = "Ninja3"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) "QH" = ( /obj/machinery/chem_master/condimaster{ desc = "Used to separate out liquids - useful for purifying botanical extracts. Also dispenses condiments."; @@ -17330,6 +17350,12 @@ /obj/structure/window/reinforced/fulltile, /turf/open/floor/grass, /area/centcom/holding) +"QN" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "QP" = ( /obj/machinery/computer/mech_bay_power_console{ dir = 1 @@ -17466,6 +17492,21 @@ /obj/item/tank/internals/plasmaman/belt/full, /turf/open/floor/wood, /area/centcom/holding) +"Rq" = ( +/obj/machinery/light{ + dir = 1; + light_color = "#cee5d2" + }, +/turf/open/floor/wood, +/area/centcom/holding) +"Ru" = ( +/obj/structure/fireplace, +/turf/open/floor/carpet/red, +/area/centcom/holding) +"Rv" = ( +/obj/structure/dresser, +/turf/open/floor/carpet/royalblue, +/area/centcom/holding) "Rz" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plating, @@ -17480,9 +17521,20 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) -"RL" = ( -/obj/structure/mineral_door/paperframe{ - name = "Arcade" +"RO" = ( +/obj/machinery/shower{ + dir = 1 + }, +/obj/structure/window{ + dir = 8 + }, +/obj/structure/curtain, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) +"RP" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Ninja4"; + name = "Dorm 4" }, /turf/open/floor/wood, /area/centcom/holding) @@ -17508,6 +17560,12 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"RX" = ( +/obj/structure/chair/comfy/brown{ + color = "#596479" + }, +/turf/open/floor/wood, +/area/centcom/holding) "RZ" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -17618,9 +17676,7 @@ pixel_x = -3; pixel_y = 6 }, -/turf/open/floor/plasteel/cafeteria{ - dir = 2 - }, +/turf/open/floor/plasteel/cafeteria, /area/centcom/holding) "SH" = ( /obj/effect/turf_decal/tile/green{ @@ -17648,6 +17704,9 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/space/basic, /area/centcom/supplypod) +"ST" = ( +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "SU" = ( /obj/structure/table/wood, /obj/item/camera/detective{ @@ -17686,10 +17745,27 @@ /obj/structure/table/wood, /turf/open/floor/wood, /area/centcom/holding) +"SZ" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Ninja3"; + name = "Dorm 3" + }, +/turf/open/floor/wood, +/area/centcom/holding) "Tb" = ( /obj/structure/closet/crate/freezer/blood, /turf/open/floor/wood, /area/centcom/holding) +"Tc" = ( +/obj/machinery/button/door{ + id = "Ninja2"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) "Tj" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -17804,6 +17880,10 @@ /obj/effect/landmark/holding_facility, /turf/open/floor/wood, /area/centcom/holding) +"Uf" = ( +/obj/structure/closet/secure_closet, +/turf/open/floor/wood, +/area/centcom/holding) "Ug" = ( /obj/machinery/door/poddoor/shuttledock{ checkdir = 1; @@ -17861,15 +17941,15 @@ "Un" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"Ur" = ( +/turf/open/floor/carpet/royalblue, +/area/centcom/holding) "Uu" = ( /obj/machinery/light{ dir = 8 @@ -17895,6 +17975,13 @@ /obj/machinery/vending/cola, /turf/open/floor/plasteel, /area/centcom/supplypod) +"UD" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet" + }, +/turf/open/floor/wood, +/area/centcom/holding) "UE" = ( /obj/structure/chair/stool/bar, /turf/open/floor/wood, @@ -17918,7 +18005,6 @@ "UO" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, /obj/effect/turf_decal/stripes/line{ @@ -17998,15 +18084,13 @@ dir = 8 }, /obj/machinery/door/window{ - name = "Tactical Toilet"; - icon_state = "right"; dir = 8; + icon_state = "right"; + name = "Tactical Toilet"; opacity = 1 }, /obj/structure/window/reinforced/tinted, -/turf/open/floor/plasteel/freezer{ - dir = 2 - }, +/turf/open/floor/plasteel/freezer, /area/syndicate_mothership) "Vm" = ( /obj/machinery/gibber, @@ -18124,7 +18208,6 @@ "Wc" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, /obj/effect/turf_decal/stripes/line{ @@ -18155,11 +18238,24 @@ "Wr" = ( /turf/open/floor/plasteel/dark, /area/centcom/supplypod) +"Ws" = ( +/obj/machinery/door/airlock/wood{ + id_tag = "Ninja6"; + name = "Dorm 6" + }, +/turf/open/floor/wood, +/area/centcom/holding) "WC" = ( /obj/structure/table/reinforced, /obj/item/pen, /turf/open/floor/mineral/plastitanium/red, /area/centcom/evac) +"WE" = ( +/obj/machinery/vending/kink{ + extended_inventory = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) "WH" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/drinks/bottle/whiskey{ @@ -18170,12 +18266,9 @@ "WJ" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome Administration"; - opacity = 1; req_access_txt = "102" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -18194,6 +18287,16 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"WN" = ( +/obj/machinery/button/door{ + id = "Ninja6"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) "WO" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -18205,7 +18308,6 @@ /obj/machinery/door/firedoor, /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, /obj/effect/turf_decal/stripes/line{ @@ -18220,6 +18322,14 @@ /obj/structure/closet/syndicate/personal, /turf/open/floor/wood, /area/syndicate_mothership) +"WV" = ( +/obj/structure/bed, +/obj/item/bedsheet/hos{ + desc = "A fancy red bedsheet."; + name = "red bedsheet" + }, +/turf/open/floor/carpet/red, +/area/centcom/holding) "WW" = ( /obj/machinery/processor, /turf/open/floor/plasteel/cafeteria, @@ -18232,9 +18342,7 @@ /turf/open/floor/grass, /area/centcom/holding) "Xe" = ( -/obj/machinery/vending/autodrobe{ - req_access_txt = "0" - }, +/obj/machinery/vending/autodrobe, /turf/open/floor/wood, /area/centcom/holding) "Xg" = ( @@ -18260,9 +18368,8 @@ /turf/open/floor/mineral/plastitanium/red, /area/syndicate_mothership) "Xn" = ( -/obj/machinery/door/airlock/wood{ - req_one_access_txt = "0" - }, +/obj/structure/bed, +/obj/item/bedsheet/random, /turf/open/floor/wood, /area/centcom/holding) "Xo" = ( @@ -18287,20 +18394,15 @@ /turf/open/floor/plasteel, /area/centcom/supplypod/loading/four) "Xs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/turf/open/floor/plating, -/area/syndicate_mothership) +/obj/structure/chair/comfy/brown, +/turf/open/floor/wood, +/area/centcom/holding) "Xt" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/centcom/control) @@ -18314,6 +18416,10 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"Xw" = ( +/obj/structure/table/wood/fancy/royalblue, +/turf/open/floor/wood, +/area/centcom/holding) "Xx" = ( /obj/machinery/light{ dir = 4 @@ -18332,6 +18438,16 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) +"XD" = ( +/obj/machinery/button/door{ + id = "Ninja4"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) "XE" = ( /obj/machinery/door/airlock/centcom{ name = "Kitchen"; @@ -18372,6 +18488,16 @@ }, /turf/open/floor/plating, /area/syndicate_mothership) +"Ya" = ( +/obj/machinery/button/door{ + id = "Ninja1"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/turf/open/floor/wood, +/area/centcom/holding) "Yc" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, @@ -18428,12 +18554,9 @@ "Yt" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -18473,6 +18596,12 @@ /mob/living/simple_animal/chicken, /turf/open/floor/grass, /area/centcom/holding) +"YO" = ( +/obj/structure/chair/comfy/brown{ + dir = 1 + }, +/turf/open/floor/wood, +/area/centcom/holding) "YQ" = ( /obj/structure/table, /obj/item/reagent_containers/glass/beaker, @@ -18495,6 +18624,9 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"YW" = ( +/turf/open/floor/plating, +/area/centcom/holding) "Za" = ( /obj/machinery/door/airlock/wood{ id_tag = "lmrestroom" @@ -18529,11 +18661,10 @@ /obj/machinery/light, /turf/open/floor/plasteel/dark, /area/syndicate_mothership) -"Zt" = ( -/obj/machinery/vr_sleeper{ - dir = 1 +"Zu" = ( +/obj/machinery/vending/autodrobe/all_access{ + extended_inventory = 1 }, -/obj/machinery/light, /turf/open/floor/wood, /area/centcom/holding) "Zw" = ( @@ -18554,6 +18685,16 @@ /obj/effect/landmark/start/nukeop_leader, /turf/open/floor/wood, /area/syndicate_mothership) +"ZE" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/turf/open/floor/mineral/titanium/blue, +/area/centcom/holding) "ZF" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -18570,7 +18711,6 @@ "ZJ" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, /obj/effect/turf_decal/stripes/line{ @@ -18629,12 +18769,9 @@ "ZX" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; - opacity = 1; req_access_txt = "101" }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, +/obj/effect/turf_decal/stripes/line, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -25747,7 +25884,7 @@ lI lI lI Ax -Bp +Qi qZ qZ Ax @@ -39895,7 +40032,7 @@ aa aa aa QV -Xs +Yc MI MI MI @@ -40409,7 +40546,7 @@ aa aa aa QV -Xs +Yc MI MI MI @@ -40666,7 +40803,7 @@ aa aa aa QV -Xs +Yc MI MI MI @@ -42755,17 +42892,17 @@ Nd Nd Nd Nd +Nd +Nd +Nd +Nd +Nd aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Nd +Nd +Nd +Nd aa aa aa @@ -43009,20 +43146,20 @@ CT oV CT CT +CT oV CT Nd +Xk +Xk +Xk +Nd aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Uf +Xk +Xk +Nd aa aa aa @@ -43268,18 +43405,18 @@ Xk Xk Xk Xk +Xk +Nd +Gs +Xk +HH Nd aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +MJ +Xk +YW +Nd aa aa aa @@ -43519,24 +43656,24 @@ UV CV Xk NT -Xk +Dj PF +Dj +Xk +Dj +PF +Dj +Nd +Xk Xk -Px Xk -Zt Nd aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +ma +YW +Xk +Nd aa aa aa @@ -43775,25 +43912,25 @@ Nd Gs Xk Xk -RL -Xk -PF -Xk -Px -Xk -PF Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Nd +Nd +Px +Nd +Nd +Nd +Nd +Nd +Ox +Nd +Nd +Nd +Nd +Nd +yS +Nd +Nd aa aa aa @@ -44034,23 +44171,23 @@ CV Xk NT Xk -PF +Yo Xk -Px Xk -Zt +Xk +Yo +Xk +Nd +Xk +Xk +Yo +Xk +Xk +Yo +Xk +Xk +WE Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -44277,7 +44414,7 @@ Nd Xk Yo Xk -Xn +XL Xk Xk Tn @@ -44289,13 +44426,24 @@ NT Zh Xk Xk -NT +Re Xk Xk Xk Xk Xk Xk +Xk +Qu +Xk +Xk +Xk +Xk +Xk +Xk +Xk +Xk +Zu Nd aa aa @@ -44303,17 +44451,6 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa KH KH KS @@ -44547,24 +44684,24 @@ Ym CV Xk NT -Dj -Qu -Dj -Dj -Qu -Dj +Xk +Xx +Xk +Xk +Xk +Xx +Xk +Nd +Xk +Xk +Xk +Xk +Xk +Xk +Xk +Xk +PM Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa @@ -44811,17 +44948,17 @@ Nd Nd Nd Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Nd +Nd +Nd +Rq +HH +Nd +Nd +Nd +Nd +Nd aa aa aa @@ -45068,17 +45205,17 @@ OU RS VF Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +UD +tZ +SY +Nd +Xk +Xk +Nd +SY +Ri +UD +Nd aa aa aa @@ -45325,17 +45462,17 @@ Xk Xk Xk Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Gs +Xk +Xk +lS +Xk +Xk +RP +Xk +Xk +HH +Nd aa aa aa @@ -45582,17 +45719,17 @@ XM XM Xk Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Xn +Xk +Ya +Nd +Xk +Xk +Nd +XD +Xk +Xn +Nd aa aa aa @@ -45839,17 +45976,17 @@ Po ZU Xk Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Nd +Nd +Nd +Xk +Xk +Nd +Nd +Nd +Nd +Nd aa aa aa @@ -46096,17 +46233,17 @@ Sd MM Xk Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +UD +tZ +SY +Nd +Xk +Xk +Nd +SY +Ri +UD +Nd aa aa aa @@ -46353,17 +46490,17 @@ Sd MM TM Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Gs +Xk +Xk +uh +Xk +Xk +zW +Xk +Xk +HH +Nd aa aa aa @@ -46610,17 +46747,17 @@ Sd MM Xk Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Xn +Xk +Tc +Nd +Xk +Xk +Nd +AC +Xk +Xn +Nd aa aa aa @@ -46867,17 +47004,17 @@ PA Pl Xk Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Nd +Nd +Nd +Rq +HH +Nd +Nd +Nd +Nd +Nd aa aa aa @@ -47124,17 +47261,17 @@ GY GY Xk Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Xs +Ol +YO +Nd +Xk +Xk +Nd +RX +Xw +qP +Nd aa aa aa @@ -47381,17 +47518,17 @@ Xk Xk Xk Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Gs +Xk +Xk +SZ +Xk +Xk +Ws +Xk +Xk +HH +Nd aa aa aa @@ -47628,7 +47765,7 @@ Xk GY NT Xk -Xk +Ms Xk NT vt @@ -47638,17 +47775,17 @@ Tb Uh tW Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Ru +Of +QF +Nd +Xk +Xk +Nd +WN +Ur +wj +Nd aa aa aa @@ -47895,17 +48032,17 @@ Nd Nd Nd Nd -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Kf +WV +Xk +Nd +Nd +Nd +Nd +Xk +zY +Rv +Nd aa aa aa @@ -48151,18 +48288,18 @@ aa aa aa aa +Nd +Nd +Nd +QC +Nd aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +QC +Nd +Nd +Nd aa aa aa @@ -48408,18 +48545,18 @@ aa aa aa aa +Nd +Ln +ST +ST +Nd aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +ST +ST +Ln +Nd aa aa aa @@ -48665,18 +48802,18 @@ aa aa aa aa +Nd +xO +QN +ZE +Nd aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +ZE +QN +RO +Nd aa aa aa @@ -48922,18 +49059,18 @@ aa aa aa aa +Nd +Nd +Nd +Nd +Nd aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Nd +Nd +Nd +Nd +Nd aa aa aa diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 09ef814f68..55bfcaff79 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -224,6 +224,8 @@ GLOBAL_LIST_INIT(heavyfootmob, typecacheof(list( #define isorgan(A) (istype(A, /obj/item/organ)) +#define isclothing(A) (istype(A, /obj/item/clothing)) + GLOBAL_LIST_INIT(pointed_types, typecacheof(list( /obj/item/pen, /obj/item/screwdriver, diff --git a/code/__DEFINES/melee.dm b/code/__DEFINES/melee.dm index cb4a433211..b166b9d21a 100644 --- a/code/__DEFINES/melee.dm +++ b/code/__DEFINES/melee.dm @@ -7,4 +7,5 @@ #define MARTIALART_MUSHPUNCH "mushroom punch" #define MARTIALART_KRAVMAGA "krav maga" #define MARTIALART_CQC "CQC" -#define MARTIALART_PLASMAFIST "plasma fist" \ No newline at end of file +#define MARTIALART_PLASMAFIST "plasma fist" +#define MARTIALART_RISINGBASS "rising bass" \ No newline at end of file diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index 94c2c372f0..831f73ac74 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -41,6 +41,7 @@ #define VOICEBOX_TOGGLABLE (1<<6) //The voicebox in this clothing can be toggled. #define VOICEBOX_DISABLED (1<<7) //The voicebox is currently turned off. #define IGNORE_HAT_TOSS (1<<8) //Hats with negative effects when worn (i.e the tinfoil hat). +#define SCAN_REAGENTS (1<<9) // Allows helmets and glasses to scan reagents. // Flags for the organ_flags var on /obj/item/organ diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 428d569531..439b3d1493 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -226,6 +226,7 @@ #define NINJA_SUIT_TRAIT "ninja-suit" #define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant" #define SLEEPING_CARP_TRAIT "sleeping_carp" +#define RISING_BASS_TRAIT "rising_bass" #define ABDUCTOR_ANTAGONIST "abductor-antagonist" #define MADE_UNCLONEABLE "made-uncloneable" #define NUKEOP_TRAIT "nuke-op" diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 0d6345dae2..ce8b2e4cf0 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -76,6 +76,8 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_wings, GLOB.insect_wings_list) if(!GLOB.insect_fluffs_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_fluff, GLOB.insect_fluffs_list) + if(!GLOB.insect_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/insect_markings, GLOB.insect_markings_list) //CIT CHANGES - genitals and such if(!GLOB.cock_shapes_list.len) @@ -151,6 +153,7 @@ "caps" = pick(GLOB.caps_list), "insect_wings" = pick(GLOB.insect_wings_list), "insect_fluff" = "None", + "insect_markings" = pick(GLOB.insect_markings_list), "taur" = "None", "mam_body_markings" = pick(snowflake_markings_list), "mam_ears" = pick(snowflake_ears_list), diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index e0cf8ebdd5..bf179760c0 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -143,6 +143,7 @@ GLOBAL_LIST_INIT(bitfields, list( "VOICEBOX_TOGGLABLE" = VOICEBOX_TOGGLABLE, "VOICEBOX_DISABLED" = VOICEBOX_DISABLED, "IGNORE_HAT_TOSS" = IGNORE_HAT_TOSS, + "SCAN_REAGENTS" = SCAN_REAGENTS ), "tesla_flags" = list( "TESLA_MOB_DAMAGE" = TESLA_MOB_DAMAGE, diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index e2705ad49f..2391d39b3a 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -37,6 +37,7 @@ GLOBAL_LIST_EMPTY(deco_wings_list) GLOBAL_LIST_EMPTY(r_wings_list) GLOBAL_LIST_EMPTY(insect_wings_list) GLOBAL_LIST_EMPTY(insect_fluffs_list) +GLOBAL_LIST_EMPTY(insect_markings_list) GLOBAL_LIST_EMPTY(caps_list) GLOBAL_LIST_INIT(ghost_forms_with_directions_list, list("ghost")) //stores the ghost forms that support directional sprites diff --git a/code/datums/martial.dm b/code/datums/martial.dm index 32850c69df..c8caa853c3 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -8,6 +8,8 @@ var/deflection_chance = 0 //Chance to deflect projectiles var/reroute_deflection = FALSE //Delete the bullet, or actually deflect it in some direction? var/block_chance = 0 //Chance to block melee attacks using items while on throw mode. + var/dodge_chance = 0 + var/restraining = 0 //used in cqc's disarm_act to check if the disarmed is being restrained and so whether they should be put in a chokehold or not var/help_verb var/pacifism_check = TRUE //are the martial arts combos/attacks unable to be used by pacifist. var/allow_temp_override = TRUE //if this martial art can be overridden by temporary martial arts diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 09a493a670..4ec16ac18c 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -10,7 +10,6 @@ help_verb = /mob/living/carbon/human/proc/CQC_help block_chance = 75 var/old_grab_state = null - var/restraining = FALSE /datum/martial_art/cqc/reset_streak(mob/living/carbon/human/new_target) . = ..() diff --git a/code/datums/martial/rising_bass.dm b/code/datums/martial/rising_bass.dm new file mode 100644 index 0000000000..a3b71c6784 --- /dev/null +++ b/code/datums/martial/rising_bass.dm @@ -0,0 +1,156 @@ +#define SIDE_KICK_COMBO "DH" +#define SHOULDER_FLIP_COMBO "GHDGHH" +#define REPULSE_PUNCH_COMBO "GHGH" +#define FOOT_SMASH_COMBO "HH" +#define DEFT_SWITCH_COMBO "GDD" + +/datum/martial_art/the_rising_bass + name = "The Rising Bass" + id = MARTIALART_RISINGBASS + dodge_chance = 100 + allow_temp_override = FALSE + help_verb = /mob/living/carbon/human/proc/rising_bass_help + +/datum/martial_art/the_rising_bass/proc/check_streak(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(findtext(streak,SIDE_KICK_COMBO)) + streak = "" + sideKick(A,D) + return 1 + if(findtext(streak,SHOULDER_FLIP_COMBO)) + streak = "" + shoulderFlip(A,D) + return 1 + if(findtext(streak,REPULSE_PUNCH_COMBO)) + streak = "" + repulsePunch(A,D) + return 1 + if(findtext(streak,FOOT_SMASH_COMBO)) + streak = "" + footSmash(A,D) + return 1 + if(findtext(streak,DEFT_SWITCH_COMBO)) + streak = "" + deftSwitch(A,D) + return 1 + return 0 + + +/datum/martial_art/the_rising_bass/proc/sideKick(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.IsKnockdown() || D.lying == 0) + var/turf/H = get_step(D, A.dir & (NORTH | SOUTH) ? pick(EAST, WEST) : pick(NORTH, SOUTH)) + A.do_attack_animation(D, ATTACK_EFFECT_KICK) + D.visible_message("[A] kicks [D] in the side, sliding them over!", \ + "[A] kicks you in the side, forcing you to step away!") + playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + D.apply_damage(5, BRUTE, BODY_ZONE_CHEST) + D.Knockdown(60) + var/L = H + for(var/obj/i in H.contents) + if(!istype(i,/mob) && i.density == 1) + L = D.loc + D.forceMove(L) + log_combat(A, D, "side kicked (Rising Bass)") + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_rising_bass/proc/shoulderFlip(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.IsKnockdown() || !D.lying) + var/turf/H = get_step(A, get_dir(D,A)) + var/L = H + for(var/obj/i in H.contents) + if(!istype(i,/mob) && i.density == 1)//(i.anchored == 1 && i.density == 1) || istype(i,/obj/structure) || istype(i,/turf/closed) + L = A.loc + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) + D.visible_message("[A] flips [D] over their shoulder, slamming them into the ground!", \ + "[A] flips you over their shoulder, slamming you into the ground!") + playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) + D.emote("scream") + D.apply_damage(10, BRUTE, BODY_ZONE_CHEST) + D.apply_damage(30, BRUTE, BODY_ZONE_HEAD) + D.Sleeping(60) + D.Knockdown(300) + D.forceMove(L) + log_combat(A, D, "shoulder flipped (Rising Bass)") + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_rising_bass/proc/repulsePunch(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.IsKnockdown() || !D.lying) + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) + D.visible_message("[A] smashes [D] in the chest, throwing them away!", \ + "[A] smashes you in the chest, repelling you away!") + playsound(get_turf(A), 'sound/weapons/punch1.ogg', 50, 1, -1) + var/atom/F = get_edge_target_turf(D, get_dir(A, get_step_away(D, A))) + D.throw_at(F, 10, 1) + D.apply_damage(10, BRUTE, BODY_ZONE_CHEST) + D.Knockdown(90) + log_combat(A, D, "repulse punched (Rising Bass)") + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_rising_bass/proc/footSmash(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.IsKnockdown() || !D.lying) + A.do_attack_animation(D, ATTACK_EFFECT_KICK) + D.visible_message("[A] smashes their foot down on [D]'s foot!", \ + "[A] smashes your foot!") + playsound(get_turf(A), 'sound/weapons/punch1.ogg', 50, 1, -1) + D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) + D.dropItemToGround(D.get_active_held_item()) + log_combat(A, D, "foot smashed (Rising Bass)") + return 1 + return basic_hit(A,D) + +/datum/martial_art/the_rising_bass/proc/deftSwitch(mob/living/carbon/human/A, mob/living/carbon/human/D) + if(!D.IsKnockdown() || !D.lying) + if (D.get_active_held_item()) + var/obj/item/G = D.get_active_held_item() + if (G && !(G.item_flags & (ABSTRACT|DROPDEL)) && D.temporarilyRemoveItemFromInventory(G)) + A.put_in_hands(G) + D.visible_message("[A] slaps [D]'s hands, taking [G] from them!", \ + "[A] slaps you, taking [G] from you!") + log_combat(A, D, "deft switched (Rising Bass)") + return 1 + else + to_chat(A, "[G] can't be taken out of [D]'s hands!") + return 0 + +/datum/martial_art/the_rising_bass/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + add_to_streak("D",D) + if(check_streak(A,D)) + return 1 + return ..() + +/datum/martial_art/the_rising_bass/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + add_to_streak("H",D) + if(check_streak(A,D)) + return 1 + return ..() + +/datum/martial_art/the_rising_bass/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) + add_to_streak("G",D) + if(check_streak(A,D)) + return 1 + return ..() + +/mob/living/carbon/human/proc/rising_bass_help() + set name = "Recall Teachings" + set desc = "Remember the martial techniques of the Rising Bass clan." + set category = "Rising Bass" + + to_chat(usr, "You retreat inward and recall the teachings of the Rising Bass...") + + to_chat(usr, "Side Kick: Disarm Harm. Forces opponent to step to the side.") + to_chat(usr, "Shoulder Flip: Grab Harm Disarm Grab Harm Harm. Flips opponent over your shoulder and stuns.") + to_chat(usr, "Repulse Punch: Grab Harm Grab Harm. Slams the opponent far away from you.") + to_chat(usr, "Foot Smash: Harm Harm. Stuns opponent, minor damage.") + to_chat(usr, "Deft Switch: Grab Disarm Disarm. Switches the opponent's held item for your own. Most useful with nothing in your hand.") + +/datum/martial_art/the_rising_bass/teach(mob/living/carbon/human/H, make_temporary = FALSE) + . = ..() + if(!.) + return + ADD_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT) + +/datum/martial_art/the_rising_bass/on_remove(mob/living/carbon/human/H) + . = ..() + REMOVE_TRAIT(H, TRAIT_NOGUNS, RISING_BASS_TRAIT) \ No newline at end of file diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 8d950f8458..b561224668 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -67,7 +67,9 @@ /obj/item/clothing/shoes/kindleKicks = ARCADE_WEIGHT_RARE, /obj/item/storage/belt/military/snack = ARCADE_WEIGHT_RARE, - /obj/item/clothing/mask/fakemoustache/italian = ARCADE_WEIGHT_RARE + /obj/item/clothing/mask/fakemoustache/italian = ARCADE_WEIGHT_RARE, + /obj/item/clothing/suit/hooded/wintercoat/ratvar/fake = ARCADE_WEIGHT_TRICK, + /obj/item/clothing/suit/hooded/wintercoat/narsie/fake = ARCADE_WEIGHT_TRICK ) light_color = LIGHT_COLOR_GREEN diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 1d0f94de71..413ef98060 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -230,6 +230,14 @@ GLOBAL_LIST_INIT(channel_tokens, list( icon_state = "srv_headset" keyslot = new /obj/item/encryptionkey/headset_service +/obj/item/radio/headset/headset_clown + name = "clown's headset" + desc = "A headset for the clown. Finally. A megaphone you can't take away." + icon_state = "srv_headset" + keyslot = new /obj/item/encryptionkey/headset_service + command = TRUE + commandspan = SPAN_CLOWN + /obj/item/radio/headset/headset_cent name = "\improper CentCom headset" desc = "A headset used by the upper echelons of Nanotrasen." diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 7823e6bf87..22012a114f 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -29,6 +29,7 @@ var/freqlock = FALSE // Frequency lock to stop the user from untuning specialist radios. var/use_command = FALSE // If true, broadcasts will be large and BOLD. var/command = FALSE // If true, use_command can be toggled at will. + var/commandspan = SPAN_COMMAND //allow us to set what the fuck we want for headsets // Encryption key handling var/obj/item/encryptionkey/keyslot @@ -206,7 +207,7 @@ return if(use_command) - spans |= SPAN_COMMAND + spans |= commandspan /* Roughly speaking, radios attempt to make a subspace transmission (which diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index 62a7742628..70cd503ef4 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -414,6 +414,23 @@ name = "empty scroll" icon_state = "blankscroll" +/obj/item/book/granter/martial/bass + martial = /datum/martial_art/the_rising_bass + name = "shifting scroll" + martialname = "rising bass" + desc = "A paper scroll that seems to move even as you read it, the letters never seem to stay still." + greet = "You have learned the ancient martial art of the Rising Bass. Your skill at running away has increased quite a bit. Use the combos to get away from opponents quickly. Along with this, you now dodge all projectiles and catch anything thrown at you." + icon = 'icons/obj/wizard.dmi' + icon_state = "scroll2" + remarks = list("The trick is to disarm them...","Running away helps in many situations...","Never stay still...","Fighting won't help unless you're forced to...", "Crush their limbs to incapacitate them...", "Stay as far away as possible...") + +/obj/item/book/granter/martial/bass/onlearned(mob/living/carbon/user) + ..() + if(oneuse == TRUE) + desc = "It's completely blank." + name = "empty scroll" + icon_state = "blankscroll" + /obj/item/book/granter/martial/plasma_fist martial = /datum/martial_art/plasma_fist name = "frayed scroll" diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 223c8e9cf6..817465a16c 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -390,4 +390,10 @@ new /obj/item/seeds/random(src) if(prob(50)) - new /obj/item/seeds/random(src) //oops, an additional packet might have slipped its way into the box \ No newline at end of file + new /obj/item/seeds/random(src) //oops, an additional packet might have slipped its way into the box + +/obj/item/storage/box/syndie_kit/revolver + +/obj/item/storage/box/syndie_kit/revolver/PopulateContents() + new /obj/item/gun/ballistic/revolver(src) + new /obj/item/ammo_box/a357(src) diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index 688006a6e3..fdc85475fb 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -595,3 +595,48 @@ /obj/effect/mob_spawn/human/pirate/gunner rank = "Gunner" + +/obj/effect/mob_spawn/human/ghostcafe + name = "ghost cafe sleeper" + uses = -1 + icon = 'icons/obj/machines/sleeper.dmi' + icon_state = "sleeper" + mob_name = "a ghost cafe visitor" + roundstart = FALSE + anchored = TRUE + density = FALSE + death = FALSE + assignedrole = "Ghost Cafe Visitor" + flavour_text = "Is this what life after death is like?" + skip_reentry_check = TRUE + banType = "ghostcafe" + +/obj/effect/mob_spawn/human/ghostcafe/special(mob/living/carbon/human/new_spawn) + if(new_spawn.client) + new_spawn.client.prefs.copy_to(new_spawn) + var/datum/outfit/O = new /datum/outfit/ghostcafe() + O.equip(new_spawn, FALSE, new_spawn.client) + SSjob.equip_loadout(null, new_spawn, FALSE) + SSquirks.AssignQuirks(new_spawn, new_spawn.client, TRUE, TRUE, null, FALSE, new_spawn) + +/datum/outfit/ghostcafe + name = "ID, jumpsuit and shoes" + uniform = /obj/item/clothing/under/color/random + shoes = /obj/item/clothing/shoes/sneakers/black + id = /obj/item/card/id + + +/datum/outfit/ghostcafe/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE, client/preference_source) + ..() + var/suited = !preference_source || preference_source.prefs.jumpsuit_style == PREF_SUIT + if (CONFIG_GET(flag/grey_assistants)) + if(suited) + uniform = /obj/item/clothing/under/color/grey + else + uniform = /obj/item/clothing/under/skirt/color/grey + else + if(suited) + uniform = /obj/item/clothing/under/color/random + else + uniform = /obj/item/clothing/under/skirt/color/random + diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_integration.dm b/code/modules/antagonists/bloodsucker/bloodsucker_integration.dm index bf4ae4b6b5..3a6b4efedb 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_integration.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_integration.dm @@ -128,7 +128,7 @@ /mob/living/carbon/human/ShowAsPaleExamine() // Check for albino, as per human/examine.dm's check. - if(skin_tone == "albino") + if(dna.species.use_skintones && skin_tone == "albino") return TRUE return ..() // Return vamp check diff --git a/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm b/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm index bd986bac25..05f11294de 100644 --- a/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm +++ b/code/modules/antagonists/clockcult/clock_helpers/fabrication_helpers.dm @@ -345,3 +345,8 @@ if(!power_amount) power_amount = -(CLOCKCULT_POWER_UNIT*0.02) return ..() + + +// Winter coat +/obj/item/clothing/suit/hooded/wintercoat/fabrication_vals(mob/living/user, obj/item/clockwork/replica_fabricator/fabricator, silent) //four sheets of metal + return list("operation_time" = 30, "new_obj_type" = /obj/item/clothing/suit/hooded/wintercoat/ratvar, "power_cost" = POWER_METAL * 4, "spawn_dir" = SOUTH) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index a833aa8a94..794010d9c0 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -585,6 +585,12 @@ new /obj/item/stack/sheet/runed_metal(T,quantity) to_chat(user, "A dark cloud emanates from you hand and swirls around the plasteel, transforming it into runed metal!") SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) + if(istype(target, /obj/item/clothing/suit/hooded/wintercoat) && target.type != /obj/item/clothing/suit/hooded/wintercoat/narsie) + if (do_after(user,30,target=target)) + new /obj/item/clothing/suit/hooded/wintercoat/narsie(T) + qdel(target) + to_chat(user, "A dark cloud emanates from you hand and swirls around [target], transforming it into a narsian winter coat!") + SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) else if(istype(target,/mob/living/silicon/robot)) var/mob/living/silicon/robot/candidate = target if(candidate.mmi) diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index 0d5fa6bc8a..34886c5b27 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -29,6 +29,7 @@ var/show_flavour = TRUE var/banType = "lavaland" var/ghost_usable = TRUE + var/skip_reentry_check = FALSE //Skips the ghost role blacklist time for people who ghost/suicide/cryo //ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/effect/mob_spawn/attack_ghost(mob/user, latejoinercalling) @@ -44,7 +45,7 @@ return if(isobserver(user)) var/mob/dead/observer/O = user - if(!O.can_reenter_round()) + if(!O.can_reenter_round() && !skip_reentry_check) return FALSE var/ghost_role = alert(latejoinercalling ? "Latejoin as [mob_name]? (This is a ghost role, and as such, it's very likely to be off-station.)" : "Become [mob_name]? (Warning, You can no longer be cloned!)",,"Yes","No") if(ghost_role == "No" || !loc) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 284d442413..00cc01105d 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -103,6 +103,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) "legs" = "Plantigrade", "insect_wings" = "Plain", "insect_fluff" = "None", + "insect_markings" = "None", "mcolor2" = "FFF", "mcolor3" = "FFF", "mam_body_markings" = "Plain", @@ -620,6 +621,19 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[features["taur"]]" + if("insect_markings" in pref_species.default_features) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN + + dat += "

Insect markings

" + + dat += "[features["insect_markings"]]
" + + mutant_category++ + if(mutant_category >= MAX_MUTANT_ROWS) + dat += "" + mutant_category = 0 + mutant_category++ if(mutant_category >= MAX_MUTANT_ROWS) dat += "" @@ -1743,6 +1757,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_insect_fluff) features["insect_fluff"] = new_insect_fluff + if("insect_markings") + var/new_insect_markings + new_insect_markings = input(user, "Choose your character's markings:", "Character Preference") as null|anything in GLOB.insect_markings_list + if(new_insect_markings) + features["insect_markings"] = new_insect_markings + if("s_tone") var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in GLOB.skin_tones if(new_s_tone) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index f7f49a66af..c88d246b96 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -366,9 +366,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car S["feature_lizard_legs"] >> features["legs"] S["feature_human_tail"] >> features["tail_human"] S["feature_human_ears"] >> features["ears"] + S["feature_deco_wings"] >> features["deco_wings"] S["feature_insect_wings"] >> features["insect_wings"] - S["feature_deco_wings"] >> features["deco_wings"] S["feature_insect_fluff"] >> features["insect_fluff"] + S["feature_insect_markings"] >> features["insect_markings"] //Custom names for(var/custom_name_id in GLOB.preferences_custom_names) @@ -503,9 +504,10 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["spines"] = sanitize_inlist(features["spines"], GLOB.spines_list) features["body_markings"] = sanitize_inlist(features["body_markings"], GLOB.body_markings_list) features["feature_lizard_legs"] = sanitize_inlist(features["legs"], GLOB.legs_list) - features["insect_wings"] = sanitize_inlist(features["insect_wings"], GLOB.insect_wings_list) features["deco_wings"] = sanitize_inlist(features["deco_wings"], GLOB.deco_wings_list, "None") features["insect_fluff"] = sanitize_inlist(features["insect_fluff"], GLOB.insect_fluffs_list) + features["insect_markings"] = sanitize_inlist(features["insect_markings"], GLOB.insect_markings_list, "None") + features["insect_wings"] = sanitize_inlist(features["insect_wings"], GLOB.insect_wings_list) joblessrole = sanitize_integer(joblessrole, 1, 3, initial(joblessrole)) //Validate job prefs @@ -570,11 +572,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_lizard_spines"] , features["spines"]) WRITE_FILE(S["feature_lizard_body_markings"] , features["body_markings"]) WRITE_FILE(S["feature_lizard_legs"] , features["legs"]) - WRITE_FILE(S["feature_insect_wings"] , features["insect_wings"]) WRITE_FILE(S["feature_deco_wings"] , features["deco_wings"]) + WRITE_FILE(S["feature_insect_wings"] , features["insect_wings"]) WRITE_FILE(S["feature_insect_fluff"] , features["insect_fluff"]) + WRITE_FILE(S["feature_insect_markings"] , features["insect_markings"]) WRITE_FILE(S["feature_meat"] , features["meat_type"]) + //Custom names for(var/custom_name_id in GLOB.preferences_custom_names) var/savefile_slot_name = custom_name_id + "_name" //TODO remove this diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index c1d4b7cea3..36e67048a6 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -22,7 +22,6 @@ var/cooldown = 0 var/obj/item/flashlight/F = null var/can_flashlight = 0 - var/scan_reagents = 0 //Can the wearer see reagents while it's equipped? var/blocks_shove_knockdown = FALSE //Whether wearing the clothing item blocks the ability for shove to knock down. @@ -47,6 +46,17 @@ //Add a "exclude" string to do the opposite, making it only only species listed that can't wear it. //You append this to clothing objects. + //Polychrome stuff: + var/hasprimary = FALSE //These vars allow you to choose which overlays a clothing has + var/hassecondary = FALSE + var/hastertiary = FALSE + var/primary_color = "#FFFFFF" //RGB in hexcode + var/secondary_color = "#FFFFFF" + var/tertiary_color = "#808080" + + //No idea what this is but eh -tori + var/force_alternate_icon = FALSE + /obj/item/clothing/Initialize() . = ..() @@ -54,6 +64,8 @@ actions_types += /datum/action/item_action/toggle_voice_box if(ispath(pocket_storage_component_path)) LoadComponent(pocket_storage_component_path) + if(hasprimary | hassecondary | hastertiary) //Checks if polychrome is enabled + update_icon() //Applies the overlays and default colors onto the clothes on spawn. /obj/item/clothing/MouseDrop(atom/over_object) . = ..() @@ -138,6 +150,8 @@ how_cool_are_your_threads += "Adding or removing items from [src] makes no noise.\n" how_cool_are_your_threads += "" . += how_cool_are_your_threads.Join() + if(hasprimary | hassecondary | hastertiary) //Checks if polychrome is enabled + . += "Alt-click to recolor it." /obj/item/clothing/obj_break(damage_flag) if(!damaged_clothes) @@ -260,8 +274,31 @@ BLIND // can't see anything remove_accessory(user) else rolldown() + // Polychrome stuff: + if(hasprimary | hassecondary | hastertiary) + var/choice = input(user,"polychromic thread options", "Clothing Recolor") as null|anything in list("[hasprimary ? "Primary Color" : ""]", "[hassecondary ? "Secondary Color" : ""]", "[hastertiary ? "Tertiary Color" : ""]") //generates a list depending on the enabled overlays + switch(choice) //Lets the list's options actually lead to something + if("Primary Color") + var/primary_color_input = input(usr,"","Choose Primary Color",primary_color) as color|null //color input menu, the "|null" adds a cancel button to it. + if(primary_color_input) //Checks if the color selected is NULL, rejects it if it is NULL. + primary_color = sanitize_hexcolor(primary_color_input, desired_format=6, include_crunch=1) //formats the selected color properly + update_icon() //updates the item icon + user.regenerate_icons() //updates the worn icon. Probably a bad idea, but it works. + if("Secondary Color") + var/secondary_color_input = input(usr,"","Choose Secondary Color",secondary_color) as color|null + if(secondary_color_input) + secondary_color = sanitize_hexcolor(secondary_color_input, desired_format=6, include_crunch=1) + update_icon() + user.regenerate_icons() + if("Tertiary Color") + var/tertiary_color_input = input(usr,"","Choose Tertiary Color",tertiary_color) as color|null + if(tertiary_color_input) + tertiary_color = sanitize_hexcolor(tertiary_color_input, desired_format=6, include_crunch=1) + update_icon() + user.regenerate_icons() return TRUE + /obj/item/clothing/under/verb/jumpsuit_adjust() set name = "Adjust Jumpsuit Style" set category = null @@ -377,3 +414,18 @@ BLIND // can't see anything return FALSE return TRUE + +/obj/item/clothing/update_icon() // Polychrome stuff + ..() + if(hasprimary) //Checks if the overlay is enabled + var/mutable_appearance/primary_overlay = mutable_appearance(icon, "[item_color]-primary") //Automagically picks overlays + primary_overlay.color = primary_color //Colors the greyscaled overlay + add_overlay(primary_overlay) //Applies the coloured overlay onto the item sprite. but NOT the mob sprite. + if(hassecondary) + var/mutable_appearance/secondary_overlay = mutable_appearance(icon, "[item_color]-secondary") + secondary_overlay.color = secondary_color + add_overlay(secondary_overlay) + if(hastertiary) + var/mutable_appearance/tertiary_overlay = mutable_appearance(icon, "[item_color]-tertiary") + tertiary_overlay.color = tertiary_color + add_overlay(tertiary_overlay) \ No newline at end of file diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 206165a495..1a178158d8 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -99,7 +99,7 @@ desc = "A pair of snazzy goggles used to protect against chemical spills. Fitted with an analyzer for scanning items and reagents." icon_state = "purple" item_state = "glasses" - scan_reagents = TRUE //You can see reagents while wearing science goggles + clothing_flags = SCAN_REAGENTS //You can see reagents while wearing science goggles actions_types = list(/datum/action/item_action/toggle_research_scanner) glass_colour_type = /datum/client_colour/glass_colour/purple resistance_flags = ACID_PROOF @@ -203,7 +203,7 @@ /obj/item/clothing/glasses/sunglasses/reagent name = "beer goggles" desc = "A pair of sunglasses outfitted with apparatus to scan reagents." - scan_reagents = TRUE + clothing_flags = SCAN_REAGENTS /obj/item/clothing/glasses/sunglasses/garb name = "black gar glasses" @@ -405,7 +405,7 @@ item_state = "godeye" vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS darkness_view = 8 - scan_reagents = TRUE + clothing_flags = SCAN_REAGENTS lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE resistance_flags = LAVA_PROOF | FIRE_PROOF diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 0d22b16388..9a5c919720 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -445,7 +445,7 @@ flash_protect = 0 armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75) flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - scan_reagents = TRUE + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS | SCAN_REAGENTS /obj/item/clothing/suit/space/hardsuit/medical icon_state = "hardsuit-medical" @@ -467,7 +467,7 @@ max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 5, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80) var/obj/machinery/doppler_array/integrated/bomb_radar - scan_reagents = TRUE + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS | SCAN_REAGENTS actions_types = list(/datum/action/item_action/toggle_helmet_light, /datum/action/item_action/toggle_research_scanner) /obj/item/clothing/head/helmet/space/hardsuit/rd/Initialize() @@ -638,7 +638,7 @@ armor = list("melee" = 20, "bullet" = 15, "laser" = 15, "energy" = 45, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) item_color = "ancient" brightness_on = 16 - scan_reagents = TRUE + clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS | SCAN_REAGENTS flash_protect = 5 //We will not be flash by bombs tint = 1 var/obj/machinery/doppler_array/integrated/bomb_radar diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 6548b4e7fe..4e155cd341 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -742,6 +742,7 @@ name = "assistant's formal winter coat" icon_state = "coataformal" item_state = "coataformal" + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter,/obj/item/clothing/gloves/color/yellow) hoodtype = /obj/item/clothing/head/hooded/winterhood/aformal /obj/item/clothing/head/hooded/winterhood/aformal @@ -762,7 +763,10 @@ name = "ratvarian winter coat" icon_state = "coatratvar" item_state = "coatratvar" + armor = list("melee" = 30, "bullet" = 45, "laser" = -10, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/clockwork/replica_fabricator, /obj/item/clockwork/integration_cog, /obj/item/clockwork/slab, /obj/item/clockwork/weapon/ratvarian_spear) hoodtype = /obj/item/clothing/head/hooded/winterhood/ratvar + var/real = TRUE /obj/item/clothing/head/hooded/winterhood/ratvar icon_state = "winterhood_ratvar" @@ -770,15 +774,59 @@ light_power = 1 light_color = "#B18B25" //clockwork slab background top color +/obj/item/clothing/suit/hooded/wintercoat/ratvar/equipped(mob/living/user,slot) + ..() + if (slot != SLOT_WEAR_SUIT || !real) + return + if (is_servant_of_ratvar(user)) + return + else + user.dropItemToGround(src) + to_chat(user,"\"Amusing that you think you are fit to wear this.\"") + to_chat(user,"Your skin burns where the coat touched your skin!") + user.adjustFireLoss(rand(10,16)) + /obj/item/clothing/suit/hooded/wintercoat/narsie name = "narsian winter coat" icon_state = "coatnarsie" item_state = "coatnarsie" + armor = list("melee" = 30, "bullet" = 20, "laser" = 30,"energy" = 10, "bomb" = 30, "bio" = 10, "rad" = 10, "fire" = 30, "acid" = 30) + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/restraints/legcuffs/bola/cult,/obj/item/melee/cultblade,/obj/item/melee/cultblade/dagger,/obj/item/reagent_containers/glass/beaker/unholywater,/obj/item/cult_shift,/obj/item/flashlight/flare/culttorch,/obj/item/twohanded/cult_spear) hoodtype = /obj/item/clothing/head/hooded/winterhood/narsie + var/real = TRUE + +/obj/item/clothing/suit/hooded/wintercoat/narsie/equipped(mob/living/user,slot) + ..() + if (slot != SLOT_WEAR_SUIT || !real) + return + if (iscultist(user)) + return + else + user.dropItemToGround(src) + to_chat(user,"\"You are not fit to wear my follower's coat!\"") + to_chat(user,"Sharp spines jab you from within the coat!") + user.adjustBruteLoss(rand(10,16)) /obj/item/clothing/head/hooded/winterhood/narsie icon_state = "winterhood_narsie" +/obj/item/clothing/suit/hooded/wintercoat/ratvar/fake + name = "brass winter coat" + icon_state = "coatratvar" + item_state = "coatratvar" + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + real = FALSE + +/obj/item/clothing/suit/hooded/wintercoat/narsie/fake + name = "runed winter coat" + icon_state = "coatnarsie" + item_state = "coatnarsie" + allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) + armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + real = FALSE + + /obj/item/clothing/suit/spookyghost name = "spooky ghost" desc = "This is obviously just a bedsheet, but maybe try it on?" diff --git a/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm b/code/modules/clothing/under/polychromic_clothes.dm similarity index 86% rename from modular_citadel/code/modules/clothing/under/polychromic_clothes.dm rename to code/modules/clothing/under/polychromic_clothes.dm index c0f7a5d639..9649d93eed 100644 --- a/modular_citadel/code/modules/clothing/under/polychromic_clothes.dm +++ b/code/modules/clothing/under/polychromic_clothes.dm @@ -4,7 +4,7 @@ // Polychromic clothes simply consist of 4 sprites: A base, unrecoloured sprite, and up to 3 greyscaled sprites. // // In order to add more polychromic clothes, simply create a base sprite, and up to 3 recolourable overlays for it, // // and then name them as follows: [name], [name]-primary, [name]-secondary, [name]-tertiary. The sprites should // -// ideally be in 'modular_citadel/icons/polyclothes/item/uniform.dmi' and 'modular_citadel/icons/polyclothes/mob/uniform.dmi' for the // +// ideally be in 'icons/obj/clothing/uniform.dmi' and 'icons/mob/uniform.dmi' for the // // worn sprites. After that, copy paste the code from any of the example clothes and // // change the names around. [name] should go in BOTH icon_state and item_color. You can preset colors and disable // // any overlays using the self-explainatory vars. // @@ -15,8 +15,6 @@ /obj/item/clothing/under/polychromic //enables all three overlays to reduce copypasta and defines basic stuff name = "polychromic suit" desc = "For when you want to show off your horrible colour coordination skills." - icon = 'modular_citadel/icons/polyclothes/item/uniform.dmi' - alternate_worn_icon = 'modular_citadel/icons/polyclothes/mob/uniform.dmi' icon_state = "polysuit" item_color = "polysuit" item_state = "sl_suit" @@ -27,23 +25,22 @@ secondary_color = "#FFFFFF" tertiary_color = "#808080" can_adjust = FALSE - mutantrace_variation = NO_MUTANTRACE_VARIATION // because I'm too lazy to port these to digi-compatible and to prove a point from /tg/ whining - Pooj - suit_style = NORMAL_SUIT_STYLE + mutantrace_variation = NO_MUTANTRACE_VARIATION //Not all clothes are currently digi-compatible (only the shorts are as of time of writing) -/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon +/obj/item/clothing/under/polychromic/worn_overlays(isinhands, icon_file) //this is where the main magic happens. . = ..() if(hasprimary | hassecondary | hastertiary) if(!isinhands) //prevents the worn sprites from showing up if you're just holding them if(hasprimary) //checks if overlays are enabled - var/mutable_appearance/primary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-primary") //automagical sprite selection + var/mutable_appearance/primary_worn = mutable_appearance(icon_file, "[item_color]-primary") //automagical sprite selection primary_worn.color = primary_color //colors the overlay . += primary_worn //adds the overlay onto the buffer list to draw on the mob sprite. if(hassecondary) - var/mutable_appearance/secondary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-secondary") + var/mutable_appearance/secondary_worn = mutable_appearance(icon_file, "[item_color]-secondary") secondary_worn.color = secondary_color . += secondary_worn if(hastertiary) - var/mutable_appearance/tertiary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-tertiary") + var/mutable_appearance/tertiary_worn = mutable_appearance(icon_file, "[item_color]-tertiary") tertiary_worn.color = tertiary_color . += tertiary_worn @@ -89,6 +86,7 @@ secondary_color = "#808080" tertiary_color = "#808080" body_parts_covered = CHEST|GROIN|ARMS + mutantrace_variation = MUTANTRACE_VARIATION //to enable digitigrade wearing /obj/item/clothing/under/polychromic/jumpsuit name = "polychromic tri-tone jumpsuit" 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 index 156cc304a6..a5437aaf39 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/body_markings.dm @@ -275,6 +275,18 @@ name = "Snow" icon_state = "snow" +/datum/sprite_accessory/insect_fluff/oakworm + name = "Oak Worm" + icon_state = "oakworm" + +/datum/sprite_accessory/insect_fluff/jungle + name = "Jungle" + icon_state = "jungle" + +/datum/sprite_accessory/insect_fluff/witchwing + name = "Witch Wing" + icon_state = "witchwing" + /datum/sprite_accessory/insect_fluff/colored name = "Colored (Hair)" icon_state = "snow" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm index 46a123c6bb..9c1eb6a3fa 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/wings.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/wings.dm @@ -213,4 +213,81 @@ /datum/sprite_accessory/insect_wings/whitefly name = "White Fly" - icon_state = "whitefly" \ No newline at end of file + icon_state = "whitefly" + +/datum/sprite_accessory/insect_wings/oakworm + name = "Oak Worm" + icon_state = "oakworm" + +/datum/sprite_accessory/insect_wings/jungle + name = "Jungle" + icon_state = "jungle" + +/datum/sprite_accessory/insect_wings/witchwing + name = "Witch Wing" + icon_state = "witchwing" + +//insect markings +/datum/sprite_accessory/insect_markings // Extra markings for insects ported from tg. + icon = 'icons/mob/insect_markings.dmi' + color_src = null + +/datum/sprite_accessory/insect_markings/none + name = "None" + icon_state = "none" + +/datum/sprite_accessory/insect_markings/reddish + name = "Reddish" + icon_state = "reddish" + +/datum/sprite_accessory/insect_markings/royal + name = "Royal" + icon_state = "royal" + +/datum/sprite_accessory/insect_markings/gothic + name = "Gothic" + icon_state = "gothic" + +/datum/sprite_accessory/insect_markings/whitefly + name = "White Fly" + icon_state = "whitefly" + +/datum/sprite_accessory/insect_markings/lovers + name = "Lovers" + icon_state = "lovers" + +/datum/sprite_accessory/insect_markings/punished + name = "Punished" + icon_state = "punished" + +/datum/sprite_accessory/insect_markings/firewatch + name = "Firewatch" + icon_state = "firewatch" + +/datum/sprite_accessory/insect_markings/deathhead + name = "Deathshead" + icon_state = "deathhead" + +/datum/sprite_accessory/insect_markings/poison + name = "Poison" + icon_state = "poison" + +/datum/sprite_accessory/insect_markings/ragged + name = "Ragged" + icon_state = "ragged" + +/datum/sprite_accessory/insect_markings/moonfly + name = "Moon Fly" + icon_state = "moonfly" + +/datum/sprite_accessory/insect_markings/oakworm + name = "Oak Worm" + icon_state = "oakworm" + +/datum/sprite_accessory/insect_markings/jungle + name = "Jungle" + icon_state = "jungle" + +/datum/sprite_accessory/insect_markings/witchwing + name = "Witch Wing" + icon_state = "witchwing" \ No newline at end of file diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index b83bbb65f0..e0ec600122 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -977,3 +977,14 @@ if(combatmode) toggle_combat_mode(TRUE, TRUE) return ..() + +/mob/living/carbon/can_see_reagents() + . = ..() + if(.) //No need to run through all of this if it's already true. + return + if(isclothing(head)) + var/obj/item/clothing/H = head + if(H.clothing_flags & SCAN_REAGENTS) + return TRUE + if(isclothing(wear_mask) && (wear_mask.clothing_flags & SCAN_REAGENTS)) + return TRUE diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index ed014aa7be..4d189e7164 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -50,6 +50,9 @@ /mob/living/carbon/proc/can_catch_item(skip_throw_mode_check) . = FALSE + if(mind) + if(mind.martial_art && mind.martial_art.dodge_chance == 100) + return TRUE if(!skip_throw_mode_check && !in_throw_mode) return if(get_active_held_item()) @@ -63,6 +66,13 @@ if(can_catch_item()) if(istype(AM, /obj/item)) var/obj/item/I = AM + if (mind) + if (mind.martial_art && mind.martial_art.dodge_chance == 100) //autocatch for rising bass + if (get_active_held_item()) + visible_message("[I] falls to the ground as [src] chops it out of the air!") + return 1 + if(!in_throw_mode) + throw_mode_on() if(isturf(I.loc)) I.attack_hand(src) if(get_active_held_item() == I) //if our attack_hand() picks up the item... diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 042b4af4fe..93f33c3a3d 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -46,6 +46,12 @@ return spec_return if(mind) + if (mind.martial_art && mind.martial_art.dodge_chance) + if(!lying && dna && !dna.check_mutation(HULK)) + if(prob(mind.martial_art.dodge_chance)) + var/dodgemessage = pick("dodges under the projectile!","dodges to the right of the projectile!","jumps over the projectile!") + visible_message("[src] [dodgemessage]", "You dodge the projectile!") + return -1 if(mind.martial_art && !incapacitated(FALSE, TRUE) && mind.martial_art.can_use(src) && mind.martial_art.deflection_chance) //Some martial arts users can deflect projectiles! if(prob(mind.martial_art.deflection_chance)) if(!lying && dna && !dna.check_mutation(HULK)) //But only if they're not lying down, and hulks can't do it @@ -145,7 +151,7 @@ skipcatch = TRUE blocked = TRUE else if(I) - if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD) + if(I.throw_speed >= EMBED_THROWSPEED_THRESHOLD && !(mind.martial_art && mind.martial_art.dodge_chance == 100)) if(can_embed(I)) if(prob(I.embedding.embed_chance) && !HAS_TRAIT(src, TRAIT_PIERCEIMMUNE)) throw_alert("embeddedobject", /obj/screen/alert/embeddedobject) @@ -158,7 +164,9 @@ SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded) hitpush = FALSE skipcatch = TRUE //can't catch the now embedded item - + if (mind) + if (mind.martial_art && mind.martial_art.dodge_chance == 100) + skipcatch = FALSE return ..() /mob/living/carbon/human/grabbedby(mob/living/carbon/user, supress_message = 0) diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 63d02af31a..e5e546fdf8 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -117,7 +117,8 @@ /mob/living/carbon/human/can_use_guns(obj/item/G) . = ..() - + if(!.) + return if(G.trigger_guard == TRIGGER_GUARD_NORMAL) if(HAS_TRAIT(src, TRAIT_CHUNKYFINGERS)) to_chat(src, "Your meaty finger is much too large for the trigger guard!") @@ -126,7 +127,13 @@ to_chat(src, "Your fingers don't fit in the trigger guard!") return FALSE - return . +/mob/living/carbon/human/can_see_reagents() + . = ..() + if(.) //No need to run through all of this if it's already true. + return + if(isclothing(glasses) && (glasses.clothing_flags & SCAN_REAGENTS)) + return TRUE + /* /mob/living/carbon/human/transfer_blood_dna(list/blood_dna) ..() diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index e24f734a13..fc87752bdf 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -781,6 +781,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) S = GLOB.insect_wings_list[H.dna.features["insect_wings"]] if("insect_fluff") S = GLOB.insect_fluffs_list[H.dna.features["insect_fluff"]] + if("insect_markings") + S = GLOB.insect_markings_list[H.dna.features["insect_markings"]] if("caps") S = GLOB.caps_list[H.dna.features["caps"]] if("ipc_screen") diff --git a/code/modules/mob/living/carbon/human/species_types/bugmen.dm b/code/modules/mob/living/carbon/human/species_types/bugmen.dm index 02163eaaed..718599c550 100644 --- a/code/modules/mob/living/carbon/human/species_types/bugmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/bugmen.dm @@ -4,9 +4,9 @@ default_color = "00FF00" species_traits = list(LIPS,EYECOLOR,HAIR,FACEHAIR,MUTCOLORS,HORNCOLOR,WINGCOLOR) inherent_biotypes = list(MOB_ORGANIC, MOB_HUMANOID, MOB_BUG) - mutant_bodyparts = list("mam_ears", "mam_snout", "mam_tail", "taur", "insect_wings", "mam_snouts", "insect_fluff","horns") + mutant_bodyparts = list("mam_ears","mam_tail", "taur", "insect_wings","mam_snout", "mam_snouts", "insect_fluff","insect_markings") default_features = list("mcolor" = "FFF","mcolor2" = "FFF","mcolor3" = "FFF", "mam_tail" = "None", "mam_ears" = "None", - "insect_wings" = "None", "insect_fluff" = "None", "mam_snouts" = "None", "taur" = "None","horns" = "None") + "insect_wings" = "None", "insect_fluff" = "None", "mam_snouts" = "None", "taur" = "None", "insect_markings" = "None") attack_verb = "slash" attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index 463b29772c..28fb1f5a42 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -275,6 +275,15 @@ /mob/living/simple_animal/drone/electrocute_act(shock_damage, obj/source, siemens_coeff = 1, safety = 0, tesla_shock = 0, illusion = 0, stun = TRUE) return 0 //So they don't die trying to fix wiring +/mob/living/simple_animal/drone/can_see_reagents() + . = ..() + if(.) + return + if(isclothing(head)) + var/obj/item/clothing/H = head + if(H.clothing_flags & SCAN_REAGENTS) + return TRUE + /mob/living/simple_animal/drone/generate_mob_holder() var/obj/item/clothing/head/mob_holder/holder = new(get_turf(src), src, "[visualAppearence]_hat", null, null, null, TRUE) return holder diff --git a/code/modules/mob/living/simple_animal/hostile/goose.dm b/code/modules/mob/living/simple_animal/hostile/goose.dm index b67770fb4b..3bc8715c5c 100644 --- a/code/modules/mob/living/simple_animal/hostile/goose.dm +++ b/code/modules/mob/living/simple_animal/hostile/goose.dm @@ -9,7 +9,7 @@ mob_biotypes = list(MOB_ORGANIC, MOB_BEAST) speak_chance = 0 turns_per_move = 5 - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat = 2) + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 2) response_help = "pets" response_disarm = "gently pushes aside" response_harm = "kicks" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ee99c7e7b6..5ecd668b96 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -811,26 +811,6 @@ GLOBAL_VAR_INIT(exploit_warn_spam_prevention, 0) /mob/proc/can_interact_with(atom/A) return IsAdminGhost(src) || Adjacent(A) -//Can the mob see reagents inside of containers? -/mob/proc/can_see_reagents() - if(stat == DEAD) //Ghosts and such can always see reagents - return 1 - if(has_unlimited_silicon_privilege) //Silicons can automatically view reagents - return 1 - if(ishuman(src)) - var/mob/living/carbon/human/H = src - if(H.head && istype(H.head, /obj/item/clothing)) - var/obj/item/clothing/CL = H.head - if(CL.scan_reagents) - return 1 - if(H.wear_mask && H.wear_mask.scan_reagents) - return 1 - if(H.glasses && istype(H.glasses, /obj/item/clothing)) - var/obj/item/clothing/CL = H.glasses - if(CL.scan_reagents) - return 1 - return 0 - //Can the mob use Topic to interact with machines /mob/proc/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE) return diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index c18fc36e9a..18fc2bfb42 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -532,3 +532,7 @@ It's fairly easy to fix if dealing with single letters but not so much with comp if(!held_item) return return held_item.GetID() + +//Can the mob see reagents inside of containers? +/mob/proc/can_see_reagents() + return stat == DEAD || has_unlimited_silicon_privilege //Dead guys and silicons can always see reagents diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm index 4446b5c561..e956fcac36 100644 --- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm @@ -13,6 +13,7 @@ /datum/reagent/drug/space_drugs name = "Space drugs" id = "space_drugs" + value = 6 description = "An illegal chemical compound used as drug." color = "#60A584" // rgb: 96, 165, 132 overdose_threshold = 30 @@ -40,6 +41,7 @@ /datum/reagent/drug/nicotine name = "Nicotine" id = "nicotine" + value = 0 description = "Slightly reduces stun times. If overdosed it will deal toxin and oxygen damage." reagent_state = LIQUID color = "#60A584" // rgb: 96, 165, 132 diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 05eeb564e5..6877ba71f6 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1095,13 +1095,13 @@ continue boost_item_paths |= UI.item //allows deconning to unlock. -/datum/techweb_node/advanced_illegl_ballistics +/datum/techweb_node/advanced_illegal_ballistics id = "advanced_illegal_ballistics" - display_name = "Advanced Illegal Ballistics" - description = "Advanced Ballistic for Illegal weaponds." - design_ids = list("10mm","10mmap","10mminc","10mmhp","pistolm9mm","m45","bolt_clip") + display_name = "Advanced Non-Standard Ballistics" + description = "Ballistic ammunition for non-standard firearms. Usually the ones you don't have nor want to be involved with." + design_ids = list("10mm","10mmap","10mminc","10mmhp","sl357","pistolm9mm","m45","bolt_clip") prereq_ids = list("ballistic_weapons","syndicate_basic","explosive_weapons") - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 25000) //This gives sec lethal mags/clips for guns form traitors or space. + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 25000) //This gives sec lethal mags/clips for guns from traitors, space, or anything in between. export_price = 7000 //Helpers for debugging/balancing the techweb in its entirety! diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 2de04cf0df..97fa6041a9 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -357,9 +357,9 @@ exclude_modes = list(/datum/game_mode/nuclear/clown_ops) /datum/uplink_item/dangerous/revolver - name = "Syndicate Revolver" - desc = "A brutally simple syndicate revolver that fires .357 Magnum rounds and has 7 chambers." - item = /obj/item/gun/ballistic/revolver + name = "Syndicate Revolver Kit" + desc = "A sleek box containing a brutally simple Syndicate revolver that fires .357 Magnum rounds and has 7 chambers, and an extra speedloader." + item = /obj/item/storage/box/syndie_kit/revolver cost = 13 surplus = 50 exclude_modes = list(/datum/game_mode/nuclear/clown_ops) @@ -641,7 +641,7 @@ cost = 2 /datum/uplink_item/stealthy_weapons/martialarts - name = "Martial Arts Scroll" + name = "Sleeping Carp Scroll" desc = "This scroll contains the secrets of an ancient martial arts technique. You will master unarmed combat, \ deflecting all ranged weapon fire, but you also refuse to use dishonorable ranged weaponry." item = /obj/item/book/granter/martial/carp @@ -649,6 +649,15 @@ surplus = 0 exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) +/datum/uplink_item/stealthy_weapons/martialartstwo + name = "Rising Bass Scroll" + desc = "This scroll contains the secrets of an ancient martial arts technique. You will become proficient in fleeing situations, \ + and dodging all ranged weapon fire, but you will refuse to use dishonorable ranged weaponry." + item = /obj/item/book/granter/martial/bass + cost = 18 + surplus = 0 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + /datum/uplink_item/stealthy_weapons/crossbow name = "Miniature Energy Crossbow" desc = "A short bow mounted across a tiller in miniature. Small enough to \ diff --git a/config/dynamic_config.txt b/config/dynamic_config.txt index 18c0d7827d..2ddebdf37a 100644 --- a/config/dynamic_config.txt +++ b/config/dynamic_config.txt @@ -40,6 +40,7 @@ DYNAMIC_WEIGHT WIZARD 1 DYNAMIC_WEIGHT CULT 3 DYNAMIC_WEIGHT NUCLEAR 3 DYNAMIC_WEIGHT REVOLUTION 2 +DYNAMIC_WEIGHT BLOODSUCKER 4 # All below are impossible-by-default DYNAMIC_WEIGHT EXTENDED 3 DYNAMIC_WEIGHT CLOCKWORK_CULT 3 @@ -49,18 +50,20 @@ DYNAMIC_WEIGHT MONKEY 3 DYNAMIC_WEIGHT METEOR 3 ## Midround antags -DYNAMIC_WEIGHT MIDROUND_TRAITOR 7 -DYNAMIC_WEIGHT MIDROUND_MALF_AI 8 -DYNAMIC_WEIGHT MIDROUND_WIZARD 9 -DYNAMIC_WEIGHT MIDROUND_NUCLEAR 9 -DYNAMIC_WEIGHT BLOB 8 -DYNAMIC_WEIGHT XENOS 8 -DYNAMIC_WEIGHT NIGHTMARE 8 -DYNAMIC_WEIGHT SENTIENT_DISEASE 6 -DYNAMIC_WEIGHT REVENANT 6 -DYNAMIC_WEIGHT SLAUGHTER_DEMON 4 -DYNAMIC_WEIGHT ABDUCTORS 8 -DYNAMIC_WEIGHT SPACE_NINJA 8 +DYNAMIC_WEIGHT MIDROUND_TRAITOR 9 +DYNAMIC_WEIGHT MIDROUND_MALF_AI 5 +DYNAMIC_WEIGHT MIDROUND_WIZARD 4 +DYNAMIC_WEIGHT MIDROUND_NUCLEAR 2 +DYNAMIC_WEIGHT BLOB 2 +DYNAMIC_WEIGHT XENOS 2 +DYNAMIC_WEIGHT NIGHTMARE 3 +DYNAMIC_WEIGHT SENTIENT_DISEASE 4 +DYNAMIC_WEIGHT REVENANT 2 +DYNAMIC_WEIGHT SLAUGHTER_DEMON 1 +DYNAMIC_WEIGHT ABDUCTORS 3 +DYNAMIC_WEIGHT SPACE_NINJA 3 + +## Events DYNAMIC_WEIGHT SPIDERS 5 DYNAMIC_WEIGHT VENTCLOG_NORMAL 3 DYNAMIC_WEIGHT VENTCLOG_THREATENING 3 @@ -88,6 +91,7 @@ DYNAMIC_WEIGHT RADIATION_STORM 1 ## Latejoin antags DYNAMIC_WEIGHT LATEJOIN_TRAITOR 7 DYNAMIC_WEIGHT LATEJOIN_REVOLUTION 2 +DYNAMIC_WEIGHT LATEJOIN_BLOODSUCKER 4 ## Threat cost. This is decreased from the mode's threat when the rule is executed. DYNAMIC_COST TRAITOR 10 @@ -98,7 +102,7 @@ DYNAMIC_COST WIZARD 30 DYNAMIC_COST CULT 35 DYNAMIC_COST NUCLEAR 45 DYNAMIC_COST REVOLUTION 40 -# All below are impossible-by-default +DYNAMIC_cOST BLOODSUCKER 15 DYNAMIC_COST EXTENDED 0 DYNAMIC_COST CLOCKWORK_CULT 35 DYNAMIC_COST CLOWNOPS 40 @@ -112,13 +116,15 @@ DYNAMIC_COST MIDROUND_MALF_AI 35 DYNAMIC_COST MIDROUND_WIZARD 20 DYNAMIC_COST MIDROUND_NUCLEAR 35 DYNAMIC_COST BLOB 10 -DYNAMIC_COST XENOS 10 +DYNAMIC_COST XENOS 20 DYNAMIC_COST NIGHTMARE 10 DYNAMIC_COST SENTIENT_DISEASE 5 DYNAMIC_COST REVENANT 5 DYNAMIC_COST SLAUGHTER_DEMON 15 DYNAMIC_COST ABDUCTORS 10 DYNAMIC_COST SPACE_NINJA 15 + +## Events DYNAMIC_COST SPIDERS 10 DYNAMIC_COST VENTCLOG_NORMAL 2 DYNAMIC_COST VENTCLOG_THREATENING 5 @@ -146,6 +152,7 @@ DYNAMIC_COST RADIATION_STORM 3 ## Latejoin antags DYNAMIC_COST LATEJOIN_TRAITOR 5 DYNAMIC_COST LATEJOIN_REVOLUTION 20 +DYNAMIC_COST LATEJOIN_BLOODSUCKER 10 ## Rule will not be generated with threat levels below requirement at a pop value. Pop values are determined by dynamic's pop-per-requirement. ## By default it's 0-8, 9-17, 18-26, 27-35, 36-44, 45-53, 54-60, 61-69, 70-78, 79+. @@ -153,13 +160,12 @@ DYNAMIC_COST LATEJOIN_REVOLUTION 20 DYNAMIC_REQUIREMENTS TRAITOR 50 50 50 50 50 50 50 50 50 50 DYNAMIC_REQUIREMENTS TRAITORBRO 101 101 101 101 101 101 101 101 101 101 DYNAMIC_REQUIREMENTS CHANGELING 101 101 101 101 101 101 101 101 101 101 -DYNAMIC_REQUIREMENTS WIZARD 101 101 101 60 50 50 50 50 50 50 +DYNAMIC_REQUIREMENTS WIZARD 101 101 60 60 50 50 50 50 50 50 DYNAMIC_REQUIREMENTS CULT 101 101 101 60 50 50 50 50 50 50 DYNAMIC_REQUIREMENTS NUCLEAR 101 101 101 60 50 50 50 50 50 50 DYNAMIC_REQUIREMENTS REVOLUTION 101 101 101 60 50 50 50 50 50 50 -# All below are impossible-by-default DYNAMIC_REQUIREMENTS EXTENDED 101 101 101 101 101 101 101 101 101 101 -DYNAMIC_REQUIREMENTS CLOCKWORK_CULT 101 101 101 80 70 60 50 50 50 50 +DYNAMIC_REQUIREMENTS CLOCKWORK_CULT 101 101 101 70 60 60 50 50 50 50 DYNAMIC_REQUIREMENTS CLOWNOPS 101 101 101 101 101 101 101 101 101 101 DYNAMIC_REQUIREMENTS DEVIL 101 101 101 101 101 101 101 101 101 101 DYNAMIC_REQUIREMENTS MONKEY 101 101 101 101 101 101 101 101 101 101 @@ -168,24 +174,22 @@ DYNAMIC_REQUIREMENTS METEOR 101 101 101 101 101 101 101 101 101 101 ## Midround antags DYNAMIC_REQUIREMENTS MIDROUND_TRAITOR 30 25 20 15 15 15 15 15 15 15 DYNAMIC_REQUIREMENTS MIDROUND_MALF_AI 101 101 70 50 50 50 40 30 30 30 -DYNAMIC_REQUIREMENTS MIDROUND_WIZARD 90 90 70 50 50 50 50 40 30 30 +DYNAMIC_REQUIREMENTS MIDROUND_WIZARD 90 90 60 40 30 30 30 30 30 30 DYNAMIC_REQUIREMENTS MIDROUND_NUCLEAR 90 90 90 80 70 60 50 40 40 40 DYNAMIC_REQUIREMENTS BLOB 101 101 101 80 60 50 50 50 50 50 DYNAMIC_REQUIREMENTS XENOS 101 101 101 70 50 50 50 50 50 50 DYNAMIC_REQUIREMENTS NIGHTMARE 101 101 101 70 50 40 20 15 15 15 DYNAMIC_REQUIREMENTS SENTIENT_DISEASE 30 30 20 20 15 10 10 10 10 5 DYNAMIC_REQUIREMENTS REVENANT 30 30 30 30 20 15 15 15 15 15 -DYNAMIC_REQUIREMENTS SLAUGHTER_DEMON 101 101 101 90 80 70 60 50 40 30 +DYNAMIC_REQUIREMENTS SLAUGHTER_DEMON 101 101 101 90 80 70 60 50 50 50 DYNAMIC_REQUIREMENTS ABDUCTORS 80 80 70 50 40 30 30 20 15 15 DYNAMIC_REQUIREMENTS SPACE_NINJA 101 101 101 90 80 70 60 50 40 30 + +## Events DYNAMIC_REQUIREMENTS SPIDERS 70 60 50 50 40 40 40 30 20 15 -DYNAMIC_REQUIREMENTS VENTCLOG_NORMAL 5 5 5 5 5 5 5 5 5 5 -DYNAMIC_REQUIREMENTS VENTCLOG_THREATENING 15 15 15 15 15 15 15 15 15 15 -DYNAMIC_REQUIREMENTS VENTCLOG_CATASTROPHIC 30 30 30 30 30 30 30 30 30 30 +DYNAMIC_REQUIREMENTS VENTCLOG 5 5 5 5 5 5 5 5 5 5 DYNAMIC_REQUIREMENTS ION_STORM 5 5 5 5 5 5 5 5 5 5 -DYNAMIC_REQUIREMENTS METEOR_WAVE_NORMAL 60 50 40 30 30 30 30 30 30 30 -DYNAMIC_REQUIREMENTS METEOR_WAVE_THREATENING 80 70 60 50 40 40 40 40 40 40 -DYNAMIC_REQUIREMENTS METEOR_WAVE_CATASTROPHIC 101 100 90 80 70 60 50 50 50 50 +DYNAMIC_REQUIREMENTS METEOR_WAVE 60 50 40 30 30 30 30 30 30 30 DYNAMIC_REQUIREMENTS PIRATES 70 60 50 50 40 40 40 30 20 15 DYNAMIC_REQUIREMENTS ANOMALY_BLUESPACE 5 5 5 5 5 5 5 5 5 5 DYNAMIC_REQUIREMENTS ANOMALY_FLUX 5 5 5 5 5 5 5 5 5 5 @@ -205,6 +209,7 @@ DYNAMIC_REQUIREMENTS RADIATION_STORM 5 5 5 5 5 5 5 5 5 5 ## Latejoin antags DYNAMIC_REQUIREMENTS LATEJOIN_TRAITOR 40 30 20 15 15 15 15 15 15 15 DYNAMIC_REQUIREMENTS LATEJOIN_REVOLUTION 101 101 70 40 40 40 40 40 40 40 +DYNAMIC_REQUIREMENTS LATEJOIN_BLOODSUCKER 40 30 20 15 15 15 15 15 15 15 ## An alternative, static requirement used instead when pop is over mode's high_pop_limit. DYNAMIC_HIGH_POPULATION_REQUIREMENT TRAITOR 50 @@ -236,14 +241,12 @@ DYNAMIC_HIGH_POPULATION_REQUIREMENT REVENANT 15 DYNAMIC_HIGH_POPULATION_REQUIREMENT SLAUGHTER_DEMON 30 DYNAMIC_HIGH_POPULATION_REQUIREMENT ABDUCTORS 15 DYNAMIC_HIGH_POPULATION_REQUIREMENT SPACE_NINJA 30 + +## Events DYNAMIC_HIGH_POPULATION_REQUIREMENT SPIDERS 15 -DYNAMIC_HIGH_POPULATION_REQUIREMENT VENTCLOG_NORMAL 5 -DYNAMIC_HIGH_POPULATION_REQUIREMENT VENTCLOG_THREATENING 15 -DYNAMIC_HIGH_POPULATION_REQUIREMENT VENTCLOG_CATASTROPHIC 30 +DYNAMIC_HIGH_POPULATION_REQUIREMENT VENTCLOG 5 DYNAMIC_HIGH_POPULATION_REQUIREMENT ION_STORM 5 -DYNAMIC_HIGH_POPULATION_REQUIREMENT METEOR_WAVE_NORMAL 30 -DYNAMIC_HIGH_POPULATION_REQUIREMENT METEOR_WAVE_THREATENING 40 -DYNAMIC_HIGH_POPULATION_REQUIREMENT METEOR_WAVE_CATASTROPHIC 50 +DYNAMIC_HIGH_POPULATION_REQUIREMENT METEOR_WAVE 30 DYNAMIC_HIGH_POPULATION_REQUIREMENT PIRATES 15 DYNAMIC_HIGH_POPULATION_REQUIREMENT ANOMALY_BLUESPACE 5 DYNAMIC_HIGH_POPULATION_REQUIREMENT ANOMALY_FLUX 5 @@ -263,6 +266,7 @@ DYNAMIC_HIGH_POPULATION_REQUIREMENT RADIATION_STORM 5 ## Latejoin antags DYNAMIC_HIGH_POPULATION_REQUIREMENT LATEJOIN_TRAITOR 15 DYNAMIC_HIGH_POPULATION_REQUIREMENT LATEJOIN_REVOLUTION 50 +DYNAMIC_HIGH_POPULATION_REQUIREMENT LATEJOIN_BLOODSUCKER 15 ## Dynamic traitor stuff diff --git a/html/changelogs/AutoChangeLog-pr-10128.yml b/html/changelogs/AutoChangeLog-pr-10128.yml new file mode 100644 index 0000000000..89bca26a76 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10128.yml @@ -0,0 +1,4 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "the clowns headset" diff --git a/html/changelogs/AutoChangeLog-pr-10237.yml b/html/changelogs/AutoChangeLog-pr-10237.yml new file mode 100644 index 0000000000..0a3b481d8c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10237.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Stops humanoids whose skin_tone variable is set to \"albino\" from showing up as pale when examined should their species not use skintones anyway." diff --git a/html/changelogs/AutoChangeLog-pr-10242.yml b/html/changelogs/AutoChangeLog-pr-10242.yml new file mode 100644 index 0000000000..017c3f99bd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10242.yml @@ -0,0 +1,4 @@ +author: "nemvar" +delete-after: True +changes: + - code_imp: "Refactored the visibility of reagents for mobs." diff --git a/html/changelogs/AutoChangeLog-pr-10250.yml b/html/changelogs/AutoChangeLog-pr-10250.yml new file mode 100644 index 0000000000..8e32083f09 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10250.yml @@ -0,0 +1,4 @@ +author: "Toriate" +delete-after: True +changes: + - rscadd: "Polychromic shorts now have a digitigrade state" diff --git a/html/changelogs/AutoChangeLog-pr-10264.yml b/html/changelogs/AutoChangeLog-pr-10264.yml new file mode 100644 index 0000000000..71497e423b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10264.yml @@ -0,0 +1,5 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "added the runed and brass winter coats (cosmetic ratvarian/narsian)" + - tweak: "how the narsian/ratvarian coats can be made" diff --git a/html/changelogs/AutoChangeLog-pr-10266.yml b/html/changelogs/AutoChangeLog-pr-10266.yml new file mode 100644 index 0000000000..7fc7f11682 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10266.yml @@ -0,0 +1,5 @@ +author: "shellspeed1" +delete-after: True +changes: + - rscadd: "Adds Insect markings" + - rscadd: "Adds three new moth wings." diff --git a/html/changelogs/AutoChangeLog-pr-10269.yml b/html/changelogs/AutoChangeLog-pr-10269.yml new file mode 100644 index 0000000000..f38bb346e3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10269.yml @@ -0,0 +1,4 @@ +author: "Ghommie" +delete-after: True +changes: + - bugfix: "Fixed goose meat." diff --git a/html/changelogs/AutoChangeLog-pr-10281.yml b/html/changelogs/AutoChangeLog-pr-10281.yml new file mode 100644 index 0000000000..0d6c353703 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10281.yml @@ -0,0 +1,5 @@ +author: "Hatterhat" +delete-after: True +changes: + - rscadd: ".357 speedloaders can now be printed with the Advanced Illegal Ballistics node on the tech tree!" + - balance: "okay so i may have given the .357 an extra speedloader at the same cost but it comes in a box now" diff --git a/html/changelogs/AutoChangeLog-pr-10282.yml b/html/changelogs/AutoChangeLog-pr-10282.yml new file mode 100644 index 0000000000..bf4f74c84a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10282.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - config: "Buncha dynamic config tweaks" diff --git a/html/changelogs/AutoChangeLog-pr-10283.yml b/html/changelogs/AutoChangeLog-pr-10283.yml new file mode 100644 index 0000000000..435a0c7ca9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10283.yml @@ -0,0 +1,4 @@ +author: "Detective-Google" +delete-after: True +changes: + - bugfix: "short hair 80's is no longer jank" diff --git a/html/changelogs/AutoChangeLog-pr-10296.yml b/html/changelogs/AutoChangeLog-pr-10296.yml new file mode 100644 index 0000000000..22aa8cca14 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10296.yml @@ -0,0 +1,5 @@ +author: "Useroth" +delete-after: True +changes: + - rscadd: "Ghost cafe spawner. For letting people spawn as their own character in the ninja holding facility. It bypasses the usual check, so people who have suicided/ghosted/cryod may use it." + - rscadd: "Dorms in the ninja holding facility." diff --git a/html/changelogs/AutoChangeLog-pr-10298.yml b/html/changelogs/AutoChangeLog-pr-10298.yml new file mode 100644 index 0000000000..981e1f5314 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10298.yml @@ -0,0 +1,4 @@ +author: "kappa-sama" +delete-after: True +changes: + - balance: "you can no longer get 100k credits by spending 4k roundstart" diff --git a/html/changelogs/AutoChangeLog-pr-9751.yml b/html/changelogs/AutoChangeLog-pr-9751.yml new file mode 100644 index 0000000000..a2c22468c3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-9751.yml @@ -0,0 +1,5 @@ +author: "Seris02" +delete-after: True +changes: + - rscadd: "Added Rising Bass and the shifting scroll." + - tweak: "Changes the martial arts scroll in the uplink to \"Sleeping Carp Scroll\"" diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index 9540599364..772a263358 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/insect_markings.dmi b/icons/mob/insect_markings.dmi new file mode 100644 index 0000000000..6aea140271 Binary files /dev/null and b/icons/mob/insect_markings.dmi differ diff --git a/icons/mob/uniform.dmi b/icons/mob/uniform.dmi index 0f962591a5..c5981b06a3 100644 Binary files a/icons/mob/uniform.dmi and b/icons/mob/uniform.dmi differ diff --git a/icons/mob/uniform_digi.dmi b/icons/mob/uniform_digi.dmi index 94d9f07e10..b4f3e6130b 100644 Binary files a/icons/mob/uniform_digi.dmi and b/icons/mob/uniform_digi.dmi differ diff --git a/icons/mob/wings.dmi b/icons/mob/wings.dmi index 7d95805dc5..ace37b1f17 100644 Binary files a/icons/mob/wings.dmi and b/icons/mob/wings.dmi differ diff --git a/icons/obj/clothing/uniforms.dmi b/icons/obj/clothing/uniforms.dmi index 43162f2b7e..60753839d2 100644 Binary files a/icons/obj/clothing/uniforms.dmi and b/icons/obj/clothing/uniforms.dmi differ diff --git a/icons/obj/custom.dmi b/icons/obj/custom.dmi index 7f42c7e250..d0be1113ee 100644 Binary files a/icons/obj/custom.dmi and b/icons/obj/custom.dmi differ diff --git a/modular_citadel/code/modules/client/loadout/suit.dm b/modular_citadel/code/modules/client/loadout/suit.dm index b8f3bd1cc1..d5f2e3cbd1 100644 --- a/modular_citadel/code/modules/client/loadout/suit.dm +++ b/modular_citadel/code/modules/client/loadout/suit.dm @@ -69,6 +69,16 @@ category = SLOT_WEAR_SUIT path = /obj/item/clothing/suit/hooded/wintercoat/aformal +/datum/gear/coat/runed + name = "Runed winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/narsie/fake + +/datum/gear/coat/brass + name = "Brass winter coat" + category = SLOT_WEAR_SUIT + path = /obj/item/clothing/suit/hooded/wintercoat/ratvar/fake + /* Commented out until it is "balanced" /datum/gear/coat/sec name = "Security winter coat" diff --git a/modular_citadel/code/modules/clothing/clothing.dm b/modular_citadel/code/modules/clothing/clothing.dm deleted file mode 100644 index 843b7a84c9..0000000000 --- a/modular_citadel/code/modules/clothing/clothing.dm +++ /dev/null @@ -1,91 +0,0 @@ -/* // -// GLOBALIZED POLYCHROME FOR ALL CLOTHING // -// // -// NOTICE: POLYCHROME STUFF MUST USE ALTERNATE_WORN_ICON AND PLACE THEIR OVERLAYS IN BOTH THE ICON AND ALTERNATE_WORN_ICON // -// // -*///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -// COPYPASTE THE FOLLOWING PROC TO WHATEVER CATERGORY OF CLOTHING YOU WANT TO POLYCHROME - -// THIS IS REQUIRED DUE TO EACH CLOTHING CATEGORY HAVING A SNOWFLAKE WORN_OVERLAYS() THING - -// Don't forget to append the appropriate typepath! Also, refer to polychromic_clothes.dm for example implementations - -/* -/obj/item/clothing/worn_overlays(isinhands, icon_file) //this is where the main magic happens. Also mandates that ALL polychromic stuff MUST USE alternate_worn_icon - . = ..() - if(hasprimary | hassecondary | hastertiary) - if(!isinhands) //prevents the worn sprites from showing up if you're just holding them - if(hasprimary) //checks if overlays are enabled - var/mutable_appearance/primary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-primary") //automagical sprite selection - primary_worn.color = primary_color //colors the overlay - . += primary_worn //adds the overlay onto the buffer list to draw on the mob sprite. - if(hassecondary) - var/mutable_appearance/secondary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-secondary") - secondary_worn.color = secondary_color - . += secondary_worn - if(hastertiary) - var/mutable_appearance/tertiary_worn = mutable_appearance(alternate_worn_icon, "[item_color]-tertiary") - tertiary_worn.color = tertiary_color - . += tertiary_worn -*/ - -/obj/item/clothing/ - var/hasprimary = FALSE //These vars allow you to choose which overlays a clothing has - var/hassecondary = FALSE - var/hastertiary = FALSE - var/primary_color = "#FFFFFF" //RGB in hexcode - var/secondary_color = "#FFFFFF" - var/tertiary_color = "#808080" - - var/force_alternate_icon = FALSE - -/obj/item/clothing/update_icon() // picks the colored overlays from the ICON file - ..() - if(hasprimary) //Checks if the overlay is enabled - var/mutable_appearance/primary_overlay = mutable_appearance(icon, "[item_color]-primary") //Automagically picks overlays - primary_overlay.color = primary_color //Colors the greyscaled overlay - add_overlay(primary_overlay) //Applies the coloured overlay onto the item sprite. but NOT the mob sprite. - if(hassecondary) - var/mutable_appearance/secondary_overlay = mutable_appearance(icon, "[item_color]-secondary") - secondary_overlay.color = secondary_color - add_overlay(secondary_overlay) - if(hastertiary) - var/mutable_appearance/tertiary_overlay = mutable_appearance(icon, "[item_color]-tertiary") - tertiary_overlay.color = tertiary_color - add_overlay(tertiary_overlay) - -/obj/item/clothing/AltClick(mob/living/user) - . = ..() - if(hasprimary | hassecondary | hastertiary) - var/choice = input(user,"polychromic thread options", "Clothing Recolor") as null|anything in list("[hasprimary ? "Primary Color" : ""]", "[hassecondary ? "Secondary Color" : ""]", "[hastertiary ? "Tertiary Color" : ""]") //generates a list depending on the enabled overlays - switch(choice) //Lets the list's options actually lead to something - if("Primary Color") - var/primary_color_input = input(usr,"","Choose Primary Color",primary_color) as color|null //color input menu, the "|null" adds a cancel button to it. - if(primary_color_input) //Checks if the color selected is NULL, rejects it if it is NULL. - primary_color = sanitize_hexcolor(primary_color_input, desired_format=6, include_crunch=1) //formats the selected color properly - update_icon() //updates the item icon - user.regenerate_icons() //updates the worn icon. Probably a bad idea, but it works. - if("Secondary Color") - var/secondary_color_input = input(usr,"","Choose Secondary Color",secondary_color) as color|null - if(secondary_color_input) - secondary_color = sanitize_hexcolor(secondary_color_input, desired_format=6, include_crunch=1) - update_icon() - user.regenerate_icons() - if("Tertiary Color") - var/tertiary_color_input = input(usr,"","Choose Tertiary Color",tertiary_color) as color|null - if(tertiary_color_input) - tertiary_color = sanitize_hexcolor(tertiary_color_input, desired_format=6, include_crunch=1) - update_icon() - user.regenerate_icons() - return TRUE - -/obj/item/clothing/examine(mob/user) - . = ..() - if(hasprimary | hassecondary | hastertiary) - . += "Alt-click to recolor it." - -/obj/item/clothing/Initialize() - ..() - if(hasprimary | hassecondary | hastertiary) - update_icon() //Applies the overlays and default colors onto the clothes on spawn. \ No newline at end of file diff --git a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm index 4d6f8551f8..4ae3e5c488 100644 --- a/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm +++ b/modular_citadel/code/modules/projectiles/boxes_magazines/external/pistol.dm @@ -50,7 +50,7 @@ category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/datum/design/m45 //Kinda NT in throey +/datum/design/m45 //Kinda NT in theory name = "handgun magazine (.45)" id = "m45" build_type = PROTOLATHE @@ -68,3 +68,13 @@ build_path = /obj/item/ammo_box/magazine/pistolm9mm category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY + +/datum/design/sl357 + name = "revolver speedloader (.357)" + desc = "A revolver speedloader." + id = "sl357" + build_type = PROTOLATHE + materials = list(MAT_METAL = 30000) + build_path = /obj/item/ammo_box/a357 + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/modular_citadel/icons/polyclothes/item/uniform.dmi b/modular_citadel/icons/polyclothes/item/uniform.dmi deleted file mode 100644 index 87c3479a6a..0000000000 Binary files a/modular_citadel/icons/polyclothes/item/uniform.dmi and /dev/null differ diff --git a/modular_citadel/icons/polyclothes/mob/uniform.dmi b/modular_citadel/icons/polyclothes/mob/uniform.dmi deleted file mode 100644 index 15b5262bab..0000000000 Binary files a/modular_citadel/icons/polyclothes/mob/uniform.dmi and /dev/null differ diff --git a/tgstation.dme b/tgstation.dme index 20cbea540c..25b7c3e6f3 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -483,6 +483,7 @@ #include "code\datums\martial\mushpunch.dm" #include "code\datums\martial\plasma_fist.dm" #include "code\datums\martial\psychotic_brawl.dm" +#include "code\datums\martial\rising_bass.dm" #include "code\datums\martial\sleeping_carp.dm" #include "code\datums\martial\wrestling.dm" #include "code\datums\mood_events\beauty_events.dm" @@ -1663,6 +1664,7 @@ #include "code\modules\clothing\under\color.dm" #include "code\modules\clothing\under\miscellaneous.dm" #include "code\modules\clothing\under\pants.dm" +#include "code\modules\clothing\under\polychromic_clothes.dm" #include "code\modules\clothing\under\shorts.dm" #include "code\modules\clothing\under\syndicate.dm" #include "code\modules\clothing\under\trek.dm" @@ -3110,12 +3112,10 @@ #include "modular_citadel\code\modules\client\loadout\suit.dm" #include "modular_citadel\code\modules\client\loadout\uniform.dm" #include "modular_citadel\code\modules\client\verbs\who.dm" -#include "modular_citadel\code\modules\clothing\clothing.dm" #include "modular_citadel\code\modules\clothing\neck.dm" #include "modular_citadel\code\modules\clothing\spacesuits\flightsuit.dm" #include "modular_citadel\code\modules\clothing\suits\polychromic_cloaks.dm" #include "modular_citadel\code\modules\clothing\suits\suits.dm" -#include "modular_citadel\code\modules\clothing\under\polychromic_clothes.dm" #include "modular_citadel\code\modules\clothing\under\trek_under.dm" #include "modular_citadel\code\modules\clothing\under\turtlenecks.dm" #include "modular_citadel\code\modules\clothing\under\under.dm"