diff --git a/_maps/RandomRuins/SpaceRuins/arcade.dmm b/_maps/RandomRuins/SpaceRuins/arcade.dmm index 74bdc9a7b8..c68d3b224e 100644 --- a/_maps/RandomRuins/SpaceRuins/arcade.dmm +++ b/_maps/RandomRuins/SpaceRuins/arcade.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/template_noop) "b" = ( -/turf/open/floor/plating/asteroid, +/turf/open/floor/plating/asteroid/airless, /area/ruin/powered) "c" = ( /turf/closed/mineral/random/high_chance, @@ -135,7 +135,7 @@ /area/ruin/powered) "F" = ( /obj/structure/closet/crate/trashcart, -/turf/open/floor/plating/asteroid, +/turf/open/floor/plating/asteroid/airless, /area/ruin/powered) "G" = ( /obj/structure/chair/sofa/right, diff --git a/_maps/RandomRuins/SpaceRuins/augmentationfacility.dmm b/_maps/RandomRuins/SpaceRuins/augmentationfacility.dmm index e23beb3407..2a25a3b6e7 100644 --- a/_maps/RandomRuins/SpaceRuins/augmentationfacility.dmm +++ b/_maps/RandomRuins/SpaceRuins/augmentationfacility.dmm @@ -3,7 +3,7 @@ /turf/template_noop, /area/template_noop) "b" = ( -/turf/open/floor/plating/asteroid, +/turf/open/floor/plating/asteroid/airless, /area/ruin/powered) "c" = ( /turf/closed/mineral/random/high_chance, @@ -176,8 +176,8 @@ /obj/structure/table, /obj/effect/decal/cleanable/dirt, /obj/item/autosurgeon{ - name = "rusted autosurgeon"; desc = "A device that automatically inserts an implant or organ into the user without the hassle of extensive surgery. It has a slot to insert an organ of implant. But this rusted version looks like it could only manage one implant...."; + name = "rusted autosurgeon"; uses = 1 }, /turf/open/floor/plasteel, @@ -205,7 +205,7 @@ /obj/machinery/atmospherics/components/unary/outlet_injector/on/layer1{ dir = 4 }, -/turf/open/floor/plating/asteroid, +/turf/open/floor/plating/asteroid/airless, /area/ruin/powered) "K" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer1{ diff --git a/_maps/RandomRuins/SpaceRuinsStation/roid6.dmm b/_maps/RandomRuins/SpaceRuinsStation/roid6.dmm index 56967b0c37..1bc497d4f9 100644 --- a/_maps/RandomRuins/SpaceRuinsStation/roid6.dmm +++ b/_maps/RandomRuins/SpaceRuinsStation/roid6.dmm @@ -80,7 +80,7 @@ /obj/item/shard{ icon_state = "medium" }, -/turf/open/floor/plating/airless{ +/turf/open/floor/plating{ icon_state = "platingdmg2" }, /area/ruin/space/has_grav) diff --git a/_maps/RandomZLevels/VR/murderdome.dmm b/_maps/RandomZLevels/VR/murderdome.dmm index 740f9fd09f..5b5cbbfcfe 100644 --- a/_maps/RandomZLevels/VR/murderdome.dmm +++ b/_maps/RandomZLevels/VR/murderdome.dmm @@ -232,7 +232,9 @@ /area/awaymission/vr/murderdome) "H" = ( /obj/machinery/telecomms/allinone, -/turf/open/indestructible, +/turf/open/indestructible{ + initial_gas_mix = "TEMP=2.7" + }, /area/awaymission/vr/murderdome) "R" = ( /obj/effect/spawner/structure/window/reinforced/indestructable, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index fbd4c1bf39..6415c984bf 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -32681,6 +32681,10 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/light{ + dir = 1; + light_color = "#cee5d2" + }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/foyer) "blC" = ( @@ -36118,13 +36122,9 @@ /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) "bsf" = ( -/obj/machinery/light, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/foyer) "bsg" = ( @@ -37682,16 +37682,10 @@ /turf/closed/wall, /area/aisat) "bvu" = ( -/obj/structure/table/wood, /obj/machinery/light/small{ dir = 8 }, -/obj/item/radio/off{ - pixel_y = 4 - }, -/obj/item/screwdriver{ - pixel_y = 10 - }, +/obj/machinery/announcement_system, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "bvv" = ( @@ -40188,12 +40182,15 @@ /area/tcommsat/computer) "bAW" = ( /obj/structure/table/wood, -/obj/item/folder/blue, /obj/machinery/status_display/evac{ pixel_y = 31 }, -/obj/item/folder/blue, -/obj/item/pen, +/obj/item/radio/off{ + pixel_y = 4 + }, +/obj/item/screwdriver{ + pixel_y = 10 + }, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) "bAX" = ( @@ -42716,9 +42713,12 @@ /turf/open/floor/carpet, /area/crew_quarters/theatre) "bGh" = ( -/obj/machinery/announcement_system, -/turf/open/floor/plasteel/grimy, -/area/tcommsat/computer) +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/foyer) "bGj" = ( /obj/machinery/vending/cola/random, /obj/machinery/newscaster{ @@ -81595,6 +81595,10 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/port) +"jQK" = ( +/obj/structure/lattice, +/turf/closed/wall/r_wall, +/area/aisat) "jRo" = ( /obj/structure/table/wood, /obj/machinery/newscaster{ @@ -81912,6 +81916,16 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/hallway/primary/port) +"nix" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/turf_decal/tile/blue, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/turret_protected/aisat/foyer) "njd" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -82580,6 +82594,13 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"txh" = ( +/obj/machinery/door/airlock/hatch{ + name = "Telecomms Control Room"; + req_one_access_txt = "19; 61" + }, +/turf/open/floor/plasteel/dark, +/area/tcommsat/computer) "txj" = ( /obj/structure/chair/office/light{ dir = 1 @@ -136361,9 +136382,9 @@ bnw bpJ brW aRy -bvt -aaa -aTU +aRy +aRy +jQK aaa aaa aaa @@ -136617,9 +136638,9 @@ blC bnx bpK bsf -aRy -aRy -aRy +bGh +nix +bGh aRy aRy aRy @@ -136876,7 +136897,7 @@ bpL brY btL btL -btL +txh btL btL bCD @@ -137133,7 +137154,7 @@ bpM brZ btL bvu -bGh +bxq bzn bAU bCD diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index f11815b537..29be428d66 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -334,8 +334,8 @@ /area/crew_quarters/fitness/pool) "aaM" = ( /turf/open/floor/plasteel/yellowsiding/corner{ - icon_state = "yellowcornersiding"; - dir = 8 + dir = 8; + icon_state = "yellowcornersiding" }, /area/crew_quarters/fitness/pool) "aaN" = ( @@ -354,8 +354,8 @@ /area/crew_quarters/fitness/pool) "aaP" = ( /turf/open/floor/plasteel/yellowsiding{ - icon_state = "yellowsiding"; - dir = 8 + dir = 8; + icon_state = "yellowsiding" }, /area/crew_quarters/fitness/pool) "aaQ" = ( @@ -433,8 +433,8 @@ /area/crew_quarters/fitness/pool) "aaW" = ( /turf/open/floor/plasteel/yellowsiding{ - icon_state = "yellowsiding"; - dir = 1 + dir = 1; + icon_state = "yellowsiding" }, /area/crew_quarters/fitness/pool) "aaX" = ( @@ -550,8 +550,8 @@ "abm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/yellowsiding{ - icon_state = "yellowsiding"; - dir = 4 + dir = 4; + icon_state = "yellowsiding" }, /area/crew_quarters/fitness/pool) "abn" = ( @@ -580,8 +580,8 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/yellowsiding{ - icon_state = "yellowsiding"; - dir = 4 + dir = 4; + icon_state = "yellowsiding" }, /area/crew_quarters/fitness/pool) "abr" = ( @@ -595,8 +595,8 @@ "abt" = ( /obj/structure/pool/Rboard, /turf/open/floor/plasteel/yellowsiding{ - icon_state = "yellowsiding"; - dir = 8 + dir = 8; + icon_state = "yellowsiding" }, /area/crew_quarters/fitness/pool) "abu" = ( @@ -659,8 +659,8 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/yellowsiding/corner{ - icon_state = "yellowcornersiding"; - dir = 4 + dir = 4; + icon_state = "yellowcornersiding" }, /area/crew_quarters/fitness/pool) "abB" = ( @@ -670,21 +670,21 @@ pixel_y = -27 }, /turf/open/floor/plasteel/yellowsiding{ - icon_state = "yellowsiding"; - dir = 1 + dir = 1; + icon_state = "yellowsiding" }, /area/crew_quarters/fitness/pool) "abC" = ( /obj/machinery/light, /turf/open/floor/plasteel/yellowsiding{ - icon_state = "yellowsiding"; - dir = 1 + dir = 1; + icon_state = "yellowsiding" }, /area/crew_quarters/fitness/pool) "abD" = ( /turf/open/floor/plasteel/yellowsiding/corner{ - icon_state = "yellowcornersiding"; - dir = 1 + dir = 1; + icon_state = "yellowcornersiding" }, /area/crew_quarters/fitness/pool) "abE" = ( @@ -6313,27 +6313,7 @@ "aoz" = ( /turf/closed/wall, /area/maintenance/fore) -"aoA" = ( -/obj/machinery/gateway{ - dir = 9 - }, -/obj/effect/turf_decal/bot_white/right, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "aoB" = ( -/obj/machinery/gateway{ - dir = 1 - }, /obj/machinery/light{ dir = 1 }, @@ -6350,23 +6330,6 @@ }, /turf/open/floor/plasteel/dark, /area/gateway) -"aoC" = ( -/obj/machinery/gateway{ - dir = 5 - }, -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "aoH" = ( /obj/structure/lattice, /obj/structure/grille, @@ -6692,44 +6655,10 @@ }, /turf/open/space, /area/space/nearstation) -"apq" = ( -/obj/machinery/gateway{ - dir = 8 - }, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "apr" = ( /obj/machinery/gateway/centerstation, /turf/open/floor/plasteel/dark, /area/gateway) -"aps" = ( -/obj/machinery/gateway{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/gateway) "apt" = ( /obj/structure/chair{ dir = 4 @@ -6916,9 +6845,6 @@ /turf/closed/wall/r_wall, /area/ai_monitored/nuke_storage) "apU" = ( -/obj/machinery/gateway{ - dir = 10 - }, /obj/effect/turf_decal/bot_white/left, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -6933,7 +6859,6 @@ /turf/open/floor/plasteel/dark, /area/gateway) "apV" = ( -/obj/machinery/gateway, /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -6948,9 +6873,6 @@ /turf/open/floor/plasteel/dark, /area/gateway) "apW" = ( -/obj/machinery/gateway{ - dir = 6 - }, /obj/effect/turf_decal/bot_white/right, /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -7876,32 +7798,7 @@ /turf/open/floor/plasteel, /area/gateway) "arY" = ( -/obj/structure/closet/crate/internals, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/clothing/suit/hazardvest{ - desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; - name = "emergency lifejacket" - }, -/obj/item/flashlight, -/obj/item/flashlight, -/obj/item/flashlight, -/obj/item/flashlight, -/obj/item/flashlight, +/obj/machinery/computer/gateway_control, /turf/open/floor/plasteel, /area/gateway) "arZ" = ( @@ -8904,6 +8801,32 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 }, +/obj/structure/closet/crate/internals, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/clothing/suit/hazardvest{ + desc = "A high-visibility lifejacket complete with whistle and slot for oxygen tanks."; + name = "emergency lifejacket" + }, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, +/obj/item/flashlight, /turf/open/floor/plasteel, /area/gateway) "auh" = ( @@ -39042,7 +38965,6 @@ /area/chapel/dock) "bKe" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/structure/closet/emcloset, /turf/open/floor/plasteel/white{ heat_capacity = 1e+006 }, @@ -40077,12 +39999,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/chair{ - dir = 1 - }, /turf/open/floor/plasteel/white{ heat_capacity = 1e+006 }, @@ -47273,7 +47189,7 @@ "ceT" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/closet/emcloset, -/turf/open/floor/plating/airless, +/turf/open/floor/plating, /area/engine/engineering) "ceU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -50404,9 +50320,11 @@ /turf/open/floor/plasteel, /area/crew_quarters/heads/chief) "cqW" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/closed/mineral, -/area/chapel/asteroid/monastery) +/obj/structure/chair, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 + }, +/area/chapel/dock) "cqX" = ( /obj/structure/disposalpipe/segment, /obj/structure/lattice, @@ -52993,7 +52911,7 @@ /turf/open/floor/plasteel/dark, /area/security/main) "cCT" = ( -/obj/machinery/rnd/production/protolathe/department/cargo, +/obj/machinery/rnd/production/techfab/department/cargo, /turf/open/floor/plasteel, /area/quartermaster/storage) "cCU" = ( @@ -55664,11 +55582,11 @@ /turf/open/floor/plating, /area/crew_quarters/dorms) "izF" = ( -/turf/open/floor/plating{ - initial_gas_mix = "o2=0.01;n2=0.01"; - luminosity = 2 +/obj/structure/closet/emcloset, +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 }, -/area/maintenance/department/science) +/area/chapel/dock) "iAx" = ( /obj/structure/cable{ icon_state = "4-8" @@ -57738,10 +57656,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, -/turf/open/floor/plating{ - initial_gas_mix = "o2=0.01;n2=0.01"; - luminosity = 2 - }, +/turf/open/floor/plating, /area/maintenance/department/science) "nAs" = ( /obj/machinery/door/airlock/engineering/glass{ @@ -57904,7 +57819,7 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plating/airless, /area/space/nearstation) "nOY" = ( /obj/effect/turf_decal/stripes/line{ @@ -58007,10 +57922,7 @@ /obj/structure/table, /obj/item/paper_bin, /obj/item/pen, -/turf/open/floor/plating{ - initial_gas_mix = "o2=0.01;n2=0.01"; - luminosity = 2 - }, +/turf/open/floor/plating, /area/maintenance/department/science) "odM" = ( /obj/effect/landmark/barthpot, @@ -59532,14 +59444,13 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "ros" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/light/small{ dir = 4 }, -/turf/open/floor/plating{ - initial_gas_mix = "o2=0.01;n2=0.01"; - luminosity = 2 +/turf/open/floor/plasteel/white{ + heat_capacity = 1e+006 }, -/area/maintenance/department/science) +/area/chapel/dock) "rrb" = ( /obj/structure/cable{ icon_state = "1-2" @@ -60667,10 +60578,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 }, -/turf/open/floor/plating{ - initial_gas_mix = "o2=0.01;n2=0.01"; - luminosity = 2 - }, +/turf/open/floor/plating, /area/maintenance/department/science) "uos" = ( /obj/machinery/computer/camera_advanced/base_construction, @@ -61099,13 +61007,6 @@ /obj/structure/lattice, /turf/open/space/basic, /area/space/nearstation) -"vpz" = ( -/obj/structure/girder, -/turf/open/floor/plating{ - initial_gas_mix = "o2=0.01;n2=0.01"; - luminosity = 2 - }, -/area/maintenance/department/science) "vsk" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -61620,12 +61521,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) -"wDe" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plasteel/white{ - heat_capacity = 1e+006 - }, -/area/chapel/dock) "wDl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/stripes/corner, @@ -62038,10 +61933,7 @@ /area/maintenance/department/science) "xsO" = ( /obj/item/ectoplasm, -/turf/open/floor/plating{ - initial_gas_mix = "o2=0.01;n2=0.01"; - luminosity = 2 - }, +/turf/open/floor/plating, /area/maintenance/department/science) "xuv" = ( /obj/item/broken_bottle, @@ -75866,8 +75758,8 @@ aaa bGI bNs cfN -cqW -cqW +cfN +cfN cfN cfN bZY @@ -76379,7 +76271,7 @@ aaa aaa bGI bNs -cqW +cfN bOw cfN bOw @@ -80477,7 +80369,7 @@ aaa aht aqG bGE -bKf +cqW bKf bMw bNy @@ -80734,8 +80626,8 @@ aht aht aqG bGE -bKf -bKf +izF +ros bMx bNz bHM @@ -80991,7 +80883,7 @@ aaa aaa aqG bGE -wDe +bGE bHM bHM bNA @@ -97884,8 +97776,8 @@ aaa aaa aaa lcZ -aoA -apq +apW +apV apU aqQ arX @@ -98398,8 +98290,8 @@ aiT aiS aaa lcZ -aoC -aps +apU +apV apW aqS arZ @@ -107723,7 +107615,7 @@ aht bwm ikB iVJ -izF +lWy typ bwm aht @@ -108233,7 +108125,7 @@ bwm svN bIQ uek -izF +lWy bwm qnT lJr @@ -108488,9 +108380,9 @@ dMO lWy rxQ lWy -ros -izF -izF +bIQ +lWy +lWy mES lWy lWy @@ -108747,7 +108639,7 @@ bwm nzD uoj bwm -izF +lWy bwm dMI lWy @@ -109001,7 +108893,7 @@ bkF bwm bwm bwm -ros +bIQ bwm bwm bwm @@ -109258,8 +109150,8 @@ bkF qIO jXA bwm -ros -vpz +bIQ +hXt bwm aht bwm diff --git a/code/__DEFINES/storage/_storage.dm b/code/__DEFINES/storage/_storage.dm index 3a05293d2d..6eb613b423 100644 --- a/code/__DEFINES/storage/_storage.dm +++ b/code/__DEFINES/storage/_storage.dm @@ -19,7 +19,7 @@ /// Size of EACH left/right border icon for volumetric boxes #define VOLUMETRIC_STORAGE_BOX_BORDER_SIZE 1 /// Minimum pixels an item must have in volumetric scaled storage UI -#define MINIMUM_PIXELS_PER_ITEM 8 +#define MINIMUM_PIXELS_PER_ITEM 16 /// Maximum number of objects that will be allowed to be displayed using the volumetric display system. Arbitrary number to prevent server lockups. #define MAXIMUM_VOLUMETRIC_ITEMS 256 /// How much padding to give between items diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 9c71cfeb69..6dfb685331 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -113,6 +113,22 @@ else return trim(html_encode(name), max_length) +/** + * stripped_multiline_input but reflects to the user instead if it's too big and returns null. + */ +/proc/stripped_multiline_input_or_reflect(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN, no_trim=FALSE) + var/name = input(user, message, title, default) as message|null + if(isnull(name)) // Return null if canceled. + return null + if(length(name) > max_length) + to_chat(user, name) + to_chat(user, "^^^----- The preceeding message has been DISCARDED for being over the maximum length of [max_length]. It has NOT been sent! -----^^^") + return null + if(no_trim) + return copytext(html_encode(name), 1, max_length) + else + return trim(html_encode(name), max_length) + #define NO_CHARS_DETECTED 0 #define SPACES_DETECTED 1 #define SYMBOLS_DETECTED 2 @@ -811,4 +827,4 @@ GLOBAL_LIST_INIT(binary, list("0","1")) corrupted_text += pick(corruption_options) if(prob(15)) corrupted_text += pick(corruption_options) - return corrupted_text \ No newline at end of file + return corrupted_text diff --git a/code/controllers/subsystem/processing/circuit.dm b/code/controllers/subsystem/processing/circuit.dm index 880e7a16a8..ac720a7fb4 100644 --- a/code/controllers/subsystem/processing/circuit.dm +++ b/code/controllers/subsystem/processing/circuit.dm @@ -50,20 +50,17 @@ PROCESSING_SUBSYSTEM_DEF(circuit) /obj/item/electronic_assembly/simple, /obj/item/electronic_assembly/hook, /obj/item/electronic_assembly/pda, - /obj/item/electronic_assembly/dildo, /obj/item/electronic_assembly/small/default, /obj/item/electronic_assembly/small/cylinder, /obj/item/electronic_assembly/small/scanner, /obj/item/electronic_assembly/small/hook, /obj/item/electronic_assembly/small/box, - /obj/item/electronic_assembly/small/dildo, /obj/item/electronic_assembly/medium/default, /obj/item/electronic_assembly/medium/box, /obj/item/electronic_assembly/medium/clam, /obj/item/electronic_assembly/medium/medical, /obj/item/electronic_assembly/medium/gun, /obj/item/electronic_assembly/medium/radio, - /obj/item/electronic_assembly/medium/dildo, /obj/item/electronic_assembly/large/default, /obj/item/electronic_assembly/large/scope, /obj/item/electronic_assembly/large/terminal, diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 765f0c8382..0bc4e6665a 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -711,7 +711,8 @@ SUBSYSTEM_DEF(ticker) 'sound/roundend/yeehaw.ogg', 'sound/roundend/disappointed.ogg', 'sound/roundend/gondolabridge.ogg', - 'sound/roundend/haveabeautifultime.ogg'\ + 'sound/roundend/haveabeautifultime.ogg', + 'sound/roundend/CitadelStationHasSeenBetterDays.ogg'\ ) SEND_SOUND(world, sound(round_end_sound)) diff --git a/code/datums/elements/photosynthesis.dm b/code/datums/elements/photosynthesis.dm index 93e4369b8b..4fe0615b1f 100644 --- a/code/datums/elements/photosynthesis.dm +++ b/code/datums/elements/photosynthesis.dm @@ -60,7 +60,7 @@ if(L.stat == DEAD) continue if(light_nutrition_gain) - L.adjust_nutrition(light_amount * light_nutrition_gain * attached_atoms[AM], NUTRITION_LEVEL_FULL) + L.adjust_nutrition(light_amount * light_nutrition_gain * attached_atoms[AM], NUTRITION_LEVEL_WELL_FED) if(light_amount > bonus_lum || light_amount < malus_lum) var/mult = ((light_amount > bonus_lum) ? 1 : -1) * attached_atoms[AM] if(light_bruteheal) diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm index dc32902e5e..dc9569a4d5 100644 --- a/code/datums/explosion.dm +++ b/code/datums/explosion.dm @@ -196,14 +196,12 @@ GLOBAL_LIST_EMPTY(explosions) //------- EX_ACT AND TURF FIRES ------- - if(T == epicenter) // Ensures explosives detonating from bags trigger other explosives in that bag - var/list/items = list() - for(var/I in T) - var/atom/A = I - if (!(A.flags_1 & PREVENT_CONTENTS_EXPLOSION_1)) //The atom/contents_explosion() proc returns null if the contents ex_acting has been handled by the atom, and TRUE if it hasn't. - items += A.GetAllContents() - for(var/O in items) - var/atom/A = O + if((T == epicenter) && !QDELETED(explosion_source) && ismovable(explosion_source) && (get_turf(explosion_source) == T)) // Ensures explosives detonating from bags trigger other explosives in that bag + var/list/atoms = list() + for(var/atom/A in explosion_source.loc) // the ismovableatom check 2 lines above makes sure we don't nuke an /area + atoms += A + for(var/i in atoms) + var/atom/A = i if(!QDELETED(A)) A.ex_act(dist) diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 87126ae28f..68b5d6f987 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -14,7 +14,7 @@ if(NOBLOOD in H.dna.species.species_traits) //can't lose blood if your species doesn't have any return else - quirk_holder.blood_volume -= 0.275 + quirk_holder.blood_volume -= 0.2 /datum/quirk/depression name = "Depression" @@ -54,7 +54,7 @@ GLOBAL_LIST_EMPTY(family_heirlooms) if("Botanist") heirloom_type = pick(/obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/item/storage/bag/plants, /obj/item/toy/plush/beeplushie) if("Medical Doctor") - heirloom_type = /obj/item/healthanalyzer/advanced + heirloom_type = /obj/item/healthanalyzer if("Paramedic") heirloom_type = /obj/item/lighter if("Station Engineer") @@ -337,10 +337,8 @@ GLOBAL_LIST_EMPTY(family_heirlooms) dumb_thing = FALSE //only once per life if(prob(1)) new/obj/item/reagent_containers/food/snacks/pastatomato(get_turf(H)) //now that's what I call spaghetti code + // small chance to make eye contact with inanimate objects/mindless mobs because of nerves - - - /datum/quirk/social_anxiety/proc/looks_at_floor(datum/source, atom/A) var/mob/living/mind_check = A if(prob(85) || (istype(mind_check) && mind_check.mind)) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index b5e752cc6b..4771e2eca7 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1112,7 +1112,6 @@ detonated = 1 charge = null for(var/mob/living/carbon/human/H in orange(2,src)) - H.Unconscious(160) H.adjust_fire_stacks(20) H.IgniteMob() //Guaranteed knockout and ignition for nearby people H.apply_damage(40, BRUTE, BODY_ZONE_CHEST) diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index 6cdc5ee824..897cb9b750 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -38,6 +38,23 @@ if(!uses) qdel(src) +/obj/item/implant/warp + name = "warp implant" + desc = "Saves your position somewhere, and then warps you back to it after five seconds." + icon_state = "warp" + uses = 15 + +/obj/item/implant/warp/activate() + . = ..() + uses-- + imp_in.do_adrenaline(150, TRUE, 0, 0, TRUE, list(/datum/reagent/fermi/eigenstate = 1.2), "You feel an internal prick as as the bluespace starts ramping up!") + to_chat(imp_in, "You feel an internal prick as as the bluespace starts ramping up!") + if(!uses) + qdel(src) + +/obj/item/implanter/warp + name = "implanter (warp)" + imp_type = /obj/item/implant/warp /obj/item/implant/emp name = "emp implant" diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 992c173d3b..4952c93928 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -106,8 +106,8 @@ var/disarming = (target_downed && (shield_flags & SHIELD_BASH_GROUND_SLAM_DISARM)) || (shield_flags & SHIELD_BASH_ALWAYS_DISARM) || (wallhit && (shield_flags & SHIELD_BASH_WALL_DISARM)) var/knockdown = !target_downed && ((shield_flags & SHIELD_BASH_ALWAYS_KNOCKDOWN) || (wallhit && (shield_flags & SHIELD_BASH_WALL_KNOCKDOWN))) if(shieldbash_stagger_duration || knockdown) - target.visible_message("[target] is knocked [knockdown? "to the floor" : "off balanace"]!", - "You are knocked [knockdown? "to the floor" : "off balanace"]!") + target.visible_message("[target] is knocked [knockdown? "to the floor" : "off balance"]!", + "You are knocked [knockdown? "to the floor" : "off balance"]!") if(knockdown) target.KnockToFloor(disarming) else if(disarming) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index 55ecf49dd8..6b6e9d7d65 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -28,8 +28,7 @@ /obj/item/stack/medical/attack(mob/living/M, mob/user) . = ..() - try_heal(M, user) - + INVOKE_ASYNC(src, .proc/try_heal, M, user) /obj/item/stack/medical/proc/try_heal(mob/living/M, mob/user, silent = FALSE) if(!M.can_inject(user, TRUE)) diff --git a/code/game/objects/items/storage/_storage.dm b/code/game/objects/items/storage/_storage.dm index fd4cc793ab..2fc1b6484d 100644 --- a/code/game/objects/items/storage/_storage.dm +++ b/code/game/objects/items/storage/_storage.dm @@ -19,8 +19,9 @@ return TRUE /obj/item/storage/contents_explosion(severity, target) + var/in_storage = istype(loc, /obj/item/storage)? (max(0, severity - 1)) : (severity) for(var/atom/A in contents) - A.ex_act(severity, target) + A.ex_act(in_storage, target) CHECK_TICK //Cyberboss says: "USE THIS TO FILL IT, NOT INITIALIZE OR NEW" diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 3b66e32d0a..bad858aa21 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -169,6 +169,14 @@ O.imp = new /obj/item/implant/freedom(O) O.update_icon() +/obj/item/storage/box/syndie_kit/imp_warp + name = "boxed warp implant (with injector)" + +/obj/item/storage/box/syndie_kit/imp_warp/PopulateContents() + var/obj/item/implanter/O = new(src) + O.imp = new /obj/item/implant/warp(O) + O.update_icon() + /obj/item/storage/box/syndie_kit/imp_microbomb name = "Microbomb Implant (with injector)" diff --git a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm index 2d25ebb156..a81f702a75 100644 --- a/code/modules/antagonists/bloodsucker/bloodsucker_life.dm +++ b/code/modules/antagonists/bloodsucker/bloodsucker_life.dm @@ -270,13 +270,15 @@ /datum/antagonist/bloodsucker/AmFinalDeath() return owner && owner.AmFinalDeath() -/datum/antagonist/changeling/AmFinalDeath() - return owner && owner.AmFinalDeath() /datum/mind/proc/AmFinalDeath() return !current || QDELETED(current) || !isliving(current) || isbrain(current) || !get_turf(current) // NOTE: "isliving()" is not the same as STAT == CONSCIOUS. This is to make sure you're not a BORG (aka silicon) /datum/antagonist/bloodsucker/proc/FinalDeath() + //Dont bother if we are already supposed to be dead + if(FinalDeath) + return + FinalDeath = TRUE //We are now supposed to die. Lets not spam it. if(!iscarbon(owner.current)) //Check for non carbons. owner.current.gib() return diff --git a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm index 715de0648d..1fcffff810 100644 --- a/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm +++ b/code/modules/antagonists/bloodsucker/datum_bloodsucker.dm @@ -38,6 +38,7 @@ var/level_bloodcost var/passive_blood_drain = -0.1 //The amount of blood we loose each bloodsucker life() tick var/notice_healing //Var to see if you are healing for preventing spam of the chat message inform the user of such + var/FinalDeath //Have we reached final death? Used to prevent spam. // LISTS var/static/list/defaultTraits = list (TRAIT_STABLEHEART, TRAIT_NOBREATH, TRAIT_SLEEPIMMUNE, TRAIT_NOCRITDAMAGE, TRAIT_RESISTCOLD, TRAIT_RADIMMUNE, TRAIT_NIGHT_VISION, \ TRAIT_NOSOFTCRIT, TRAIT_NOHARDCRIT, TRAIT_AGEUSIA, TRAIT_COLDBLOODED, TRAIT_NONATURALHEAL, TRAIT_NOMARROW, TRAIT_NOPULSE, TRAIT_VIRUSIMMUNE, TRAIT_NODECAP, TRAIT_NOGUT) @@ -683,6 +684,8 @@ owner.current.hud_used.sunlight_display.invisibility = INVISIBILITY_ABSTRACT /datum/antagonist/bloodsucker/proc/update_hud(updateRank=FALSE) + if(FinalDeath) + return // No Hud? Get out. if(!owner.current.hud_used) return diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 9355f83827..739a5fa243 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -2800,6 +2800,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(custom_tongue != "default") var/new_tongue = GLOB.roundstart_tongues[custom_tongue] if(new_tongue) + character.dna.species.mutanttongue = new_tongue //this means we get our tongue when we clone var/obj/item/organ/tongue/T = character.getorganslot(ORGAN_SLOT_TONGUE) if(T) qdel(T) diff --git a/code/modules/events/travelling_trader.dm b/code/modules/events/travelling_trader.dm index 08dae1b469..c7b982eda8 100644 --- a/code/modules/events/travelling_trader.dm +++ b/code/modules/events/travelling_trader.dm @@ -1,8 +1,8 @@ /datum/round_event_control/travelling_trader name = "Travelling Trader" typepath = /datum/round_event/travelling_trader - weight = 10 - max_occurrences = 3 + weight = 8 + max_occurrences = 2 earliest_start = 0 MINUTES /datum/round_event/travelling_trader @@ -52,6 +52,14 @@ var/acceptance_speech = "This is exactly what I wanted! I shall be on my way now, thank you.!" var/refusal_speech = "A given_item? I wanted a requested_item!" //what they say when refusing an item var/active = TRUE + var/examine_text = list("You attempt to look directly at the being's face, but it's just a blur!") + move_resist = MOVE_FORCE_VERY_STRONG + mob_size = MOB_SIZE_LARGE + alpha = 200 + +/mob/living/carbon/human/dummy/travelling_trader/examine(mob/user) + SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, examine_text) + return examine_text /mob/living/carbon/human/dummy/travelling_trader/proc/setup_speech(var/input_speech, var/obj/item/given_item) if(requested_item) @@ -92,6 +100,8 @@ /mob/living/carbon/human/dummy/travelling_trader/Initialize() ..() + add_atom_colour("#570d6b", FIXED_COLOUR_PRIORITY) //make them purple (otherworldly!) + set_light(1, -0.7, "#AAD84B") ADD_TRAIT(src,TRAIT_PIERCEIMMUNE, "trader_pierce_immune") //don't let people take their blood equipOutfit(trader_outfit, TRUE) for(var/obj/item/item in src.get_equipped_items()) @@ -159,15 +169,11 @@ trader_name = "Otherworldly Animal Specialist" trader_outfit = /datum/outfit/job/doctor initial_speech = "Greetings, lifeform. I am here to locate a special creature aboard your station." - request_speech = "Find me the creature known as 'requested_item' and you shall be rewarded for your efforts." + request_speech = "Find me the creature known as 'requested_item' and hand it to me, preferably in a suitable container." refusal_speech = "Do you think me to be a fool, lifeform? I know a requested_item when I see one." - possible_wanted_items = list(/mob/living/simple_animal/pet/dog/corgi/Ian = 1, - /mob/living/simple_animal/sloth/paperwork = 1, - /mob/living/carbon/monkey/punpun = 1, - /mob/living/simple_animal/pet/fox/Renault = 1, - /mob/living/simple_animal/hostile/carp/cayenne = 1, - /mob/living/simple_animal/pet/bumbles = 1, - /mob/living/simple_animal/parrot/Poly = 1) + possible_wanted_items = list(/mob/living/simple_animal/pet/dog/corgi = 4, + /mob/living/carbon/monkey = 1, + /mob/living/simple_animal/mouse = 2) possible_rewards = list(/mob/living/simple_animal/pet/dog/corgi/exoticcorgi = 1, //rewards are animals, friendly to only the person who handed the reward in! /mob/living/simple_animal/cockroach = 1, /mob/living/simple_animal/hostile/skeleton = 1, @@ -184,13 +190,6 @@ mob/living/carbon/human/dummy/travelling_trader/animal_hunter/Initialize() acceptance_speech = pick(list("This lifeform shall make for a great stew, thank you.", "This lifeform shall be of a true use to our cause, thank you.", "The lifeform is adequate. Goodbye.", "This lifeform shall make a great addition to my collection.")) - //make sure they only ask for animals that are still alive - for(var/mob/living/animal in possible_wanted_items) - if(!(animal in GLOB.mob_living_list)) - possible_wanted_items -= animal - if(!possible_wanted_items) - //all the pets are dead, so ask for a monkey, or sometimes a corgi (corgis are more annoying to get a hold of) - possible_wanted_items = list(/mob/living/simple_animal/pet/dog/corgi = 1, /mob/living/carbon/monkey = 3) ..() /mob/living/carbon/human/dummy/travelling_trader/animal_hunter/check_item(var/obj/item/supplied_item) //item is likely to be in contents of whats supplied diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 45ab6f6af1..a3ee8c5228 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -299,6 +299,31 @@ desc = "An insult to Duke Purple is an insult to the Space Queen! Any proper gentleman will fight you, if you sully this tea." list_reagents = list(/datum/reagent/consumable/tea = 30) +/obj/item/reagent_containers/food/drinks/mug/tea/red + name = "Dutchess Red tea" + icon_state = "tea" + desc = "Duchess Red's personal blend of red tea leaves and hot water. Great addition to any meal." + list_reagents = list(/datum/reagent/consumable/tea/red = 30) + +/obj/item/reagent_containers/food/drinks/mug/tea/green + name = "Prince Green tea" + icon_state = "tea" + desc = "Prince Green's brew of tea. The blend may be different from time to time, but Prince Green swears by it!" + list_reagents = list(/datum/reagent/consumable/tea/green = 30) + +/obj/item/reagent_containers/food/drinks/mug/tea/forest + name = "Royal Forest tea" + icon_state = "tea" + desc = "Tea fit for anyone with a sweet tooth like Royal Forest." + list_reagents = list(/datum/reagent/consumable/tea/forest = 30) + +/obj/item/reagent_containers/food/drinks/mug/tea/mush + name = "Rebel Mush tea" + icon_state = "tea" + desc = "Rebel Mush, a hallucinogenic tea to help people find their inner self." + list_reagents = list(/datum/reagent/consumable/tea/mush = 30) + + /obj/item/reagent_containers/food/drinks/mug/coco name = "Dutch hot coco" desc = "Made in Space South America." diff --git a/code/modules/food_and_drinks/recipes/drinks_recipes.dm b/code/modules/food_and_drinks/recipes/drinks_recipes.dm index c1a17b87a4..972f9a8cc3 100644 --- a/code/modules/food_and_drinks/recipes/drinks_recipes.dm +++ b/code/modules/food_and_drinks/recipes/drinks_recipes.dm @@ -18,12 +18,6 @@ results = list(/datum/reagent/consumable/ethanol/bilk = 2) required_reagents = list(/datum/reagent/consumable/milk = 1, /datum/reagent/consumable/ethanol/beer = 1) -/datum/chemical_reaction/icetea - name = "Iced Tea" - id = /datum/reagent/consumable/icetea - results = list(/datum/reagent/consumable/icetea = 4) - required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/tea = 3) - /datum/chemical_reaction/icecoffee name = "Iced Coffee" id = /datum/reagent/consumable/icecoffee @@ -581,13 +575,6 @@ required_reagents = list(/datum/reagent/consumable/lemonjuice = 2, /datum/reagent/water = 2, /datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/ice = 1) mix_message = "You're suddenly reminded of home." -/datum/chemical_reaction/arnold_palmer - name = "Arnold Palmer" - id = /datum/reagent/consumable/tea/arnold_palmer - results = list(/datum/reagent/consumable/tea/arnold_palmer = 2) - required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/lemonade = 1) - mix_message = "The smells of fresh green grass and sand traps waft through the air as the mixture turns a friendly yellow-orange." - /datum/chemical_reaction/chocolate_milk name = "chocolate milk" id = /datum/reagent/consumable/milk/chocolate_milk @@ -756,12 +743,6 @@ results = list(/datum/reagent/consumable/pinkmilk = 2) required_reagents = list(/datum/reagent/consumable/strawberryjuice = 1, /datum/reagent/consumable/milk = 1) -/datum/chemical_reaction/pinktea - name = "Strawberry Tea" - id = /datum/reagent/consumable/pinktea - results = list(/datum/reagent/consumable/pinktea = 5) - required_reagents = list(/datum/reagent/consumable/strawberryjuice = 1, /datum/reagent/consumable/tea/arnold_palmer = 1, /datum/reagent/consumable/sugar = 1) - /datum/chemical_reaction/blank_paper name = "Blank Paper" id = /datum/reagent/consumable/ethanol/blank_paper @@ -903,12 +884,6 @@ results = list(/datum/reagent/consumable/ethanol/mauna_loa = 5) required_reagents = list(/datum/reagent/consumable/capsaicin = 2, /datum/reagent/consumable/ethanol/kahlua = 1, /datum/reagent/consumable/ethanol/bahama_mama = 2) -/datum/chemical_reaction/catnip_tea - name = "Catnip Tea" - id = /datum/reagent/consumable/catnip_tea - results = list(/datum/reagent/consumable/catnip_tea = 3) - required_reagents = list(/datum/reagent/consumable/tea = 5, /datum/reagent/pax/catnip = 2) - /datum/chemical_reaction/commander_and_chief name = "Commander and Chief" id = /datum/reagent/consumable/ethanol/commander_and_chief @@ -916,6 +891,76 @@ required_reagents = list(/datum/reagent/consumable/ethanol/alliescocktail = 50, /datum/reagent/consumable/ethanol/champagne = 20, /datum/reagent/consumable/doctor_delight = 10, /datum/reagent/consumable/ethanol/quintuple_sec = 10, /datum/reagent/consumable/ethanol/screwdrivercocktail = 10) mix_message = "When your powers combine, I am Captain Pl-..." +////////////////////////////////////////// Tea Base Drinks ////////////////////////////////////// + +/datum/chemical_reaction/mush + name = "Mush Tea" + id = /datum/reagent/consumable/tea/mush + results = list(/datum/reagent/consumable/tea/mush = 3) + required_reagents = list(/datum/reagent/drug/mushroomhallucinogen = 3, /datum/reagent/consumable/tea = 3) + +/datum/chemical_reaction/foresttea1 + name = "Forest Tea" + id = /datum/reagent/consumable/tea/forest + results = list(/datum/reagent/consumable/tea/forest = 3) + required_reagents = list(/datum/reagent/consumable/buzz_fuzz= 3, /datum/reagent/consumable/tea = 3) + +/datum/chemical_reaction/foresttea2 + name = "Forest Tea" + id = /datum/reagent/consumable/tea/forest + results = list(/datum/reagent/consumable/tea/forest = 3) + required_reagents = list(/datum/reagent/consumable/honey = 1, /datum/reagent/consumable/tea = 3) + +/datum/chemical_reaction/redtea1 + name = "Red Tea" + id = /datum/reagent/consumable/tea/red + results = list(/datum/reagent/consumable/tea/red = 3) + required_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/red = 1, /datum/reagent/consumable/tea = 3) + +/datum/chemical_reaction/greentea1 + name = "Green Tea" + id = /datum/reagent/consumable/tea/green + results = list(/datum/reagent/consumable/tea/green = 3) + required_reagents = list(/datum/reagent/colorful_reagent/crayonpowder/green = 1, /datum/reagent/consumable/tea = 3) + +/datum/chemical_reaction/redtea2 + name = "Red Tea" + id = /datum/reagent/consumable/tea/red + results = list(/datum/reagent/consumable/tea/red = 3) + required_reagents = list(/datum/reagent/toxin/teapowder/red = 1, /datum/reagent/water = 3) + +/datum/chemical_reaction/greentea2 + name = "Green Tea" + id = /datum/reagent/consumable/tea/green + results = list(/datum/reagent/consumable/tea/green = 3) + required_reagents = list(/datum/reagent/toxin/teapowder/green = 1, /datum/reagent/water = 3) + +/datum/chemical_reaction/arnold_palmer + name = "Arnold Palmer" + id = /datum/reagent/consumable/tea/arnold_palmer + results = list(/datum/reagent/consumable/tea/arnold_palmer = 2) + required_reagents = list(/datum/reagent/consumable/tea = 1, /datum/reagent/consumable/lemonade = 1) + mix_message = "The smells of fresh green grass and sand traps waft through the air as the mixture turns a friendly yellow-orange." + +/datum/chemical_reaction/icetea + name = "Iced Tea" + id = /datum/reagent/consumable/icetea + results = list(/datum/reagent/consumable/icetea = 4) + required_reagents = list(/datum/reagent/consumable/ice = 1, /datum/reagent/consumable/tea = 3) + +/datum/chemical_reaction/pinktea + name = "Strawberry Tea" + id = /datum/reagent/consumable/pinktea + results = list(/datum/reagent/consumable/pinktea = 5) + required_reagents = list(/datum/reagent/consumable/strawberryjuice = 1, /datum/reagent/consumable/tea/arnold_palmer = 1, /datum/reagent/consumable/sugar = 1) + +/datum/chemical_reaction/catnip_tea + name = "Catnip Tea" + id = /datum/reagent/consumable/catnip_tea + results = list(/datum/reagent/consumable/catnip_tea = 3) + required_reagents = list(/datum/reagent/consumable/tea = 5, /datum/reagent/pax/catnip = 2) + + ////////////////////////////////////////// Race Base Drinks ////////////////////////////////////// /datum/chemical_reaction/coldscales diff --git a/code/modules/hydroponics/grown/chili.dm b/code/modules/hydroponics/grown/chili.dm index 1f60afe655..001a90b441 100644 --- a/code/modules/hydroponics/grown/chili.dm +++ b/code/modules/hydroponics/grown/chili.dm @@ -81,7 +81,8 @@ wine_power = 50 /obj/item/reagent_containers/food/snacks/grown/ghost_chili/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags) - if( ismob(loc) ) + . = ..() + if(ishuman(loc)) held_mob = loc START_PROCESSING(SSobj, src) diff --git a/code/modules/instruments/songs/_song.dm b/code/modules/instruments/songs/_song.dm index 463398d2f2..d842dbc003 100644 --- a/code/modules/instruments/songs/_song.dm +++ b/code/modules/instruments/songs/_song.dm @@ -303,3 +303,19 @@ return TRUE var/obj/structure/musician/M = parent return M.should_stop_playing(user) + +/datum/song/holoparasite + var/mob/living/simple_animal/hostile/guardian/stand + +/datum/song/holoparasite/New(atom/parent, list/instrument_ids) + . = ..() + stand = istype(parent, /mob/living/simple_animal/hostile/guardian) && parent + +/datum/song/holoparasite/updateDialog() + stand.ui_interact(src) + +/datum/song/holoparasite/should_stop_playing(mob/user) + return FALSE + +/datum/song/holoparasite/check_can_use(mob/user) + return (user == stand) diff --git a/code/modules/instruments/songs/editor.dm b/code/modules/instruments/songs/editor.dm index d9595797d7..8c5171667a 100644 --- a/code/modules/instruments/songs/editor.dm +++ b/code/modules/instruments/songs/editor.dm @@ -109,8 +109,11 @@ linenum++ updateDialog(usr) // make sure updates when complete +/datum/song/proc/check_can_use(mob/user) + return user.canUseTopic(parent, TRUE, FALSE, FALSE, FALSE) + /datum/song/Topic(href, href_list) - if(!usr.canUseTopic(parent, TRUE, FALSE, FALSE, FALSE)) + if(!check_can_use(usr)) usr << browse(null, "window=instrument") usr.unset_machine() return diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 7c9f811c34..903ff13fa8 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -651,11 +651,6 @@ icon_state = "setup_small_pda" desc = "It's a case, for building small electronics with. This one resembles a PDA." -/obj/item/electronic_assembly/dildo - name = "type-g electronic assembly" - icon_state = "setup_dildo_medium" - desc = "It's a case, for building small electronics with. This one has a phallic design." - /obj/item/electronic_assembly/small name = "electronic device" icon_state = "setup_device" @@ -687,11 +682,6 @@ icon_state = "setup_device_box" desc = "It's a case, for building tiny-sized electronics with. This one has a boxy design." -/obj/item/electronic_assembly/small/dildo - name = "type-f electronic device" - icon_state = "setup_dildo_small" - desc = "It's a case, for building tiny-sized electronics with. This one has a phallic design." - /obj/item/electronic_assembly/medium name = "electronic mechanism" icon_state = "setup_medium" @@ -732,12 +722,6 @@ icon_state = "setup_medium_radio" desc = "It's a case, for building medium-sized electronics with. This one resembles an old radio." -/obj/item/electronic_assembly/medium/dildo - name = "type-g electronic mechanism" - icon_state = "setup_dildo_large" - desc = "It's a case, for building medium-sized electronics with. This one has a phallic design." - - /obj/item/electronic_assembly/large name = "electronic machine" icon_state = "setup_large" diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index e5afe7e1b3..463113f14c 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -23,7 +23,7 @@ mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_DETECTIVE - blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/nonviolent, /datum/quirk/paraplegic) + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/monophobia) threat = 1 /datum/outfit/job/detective diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 69ed63a514..3d7d07d894 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -31,7 +31,7 @@ paycheck_department = ACCOUNT_SEC display_order = JOB_DISPLAY_ORDER_HEAD_OF_SECURITY - blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/insanity) + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia, /datum/quirk/insanity) threat = 3 /datum/outfit/job/hos diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index bc6f6a94c7..7e71b2d1f4 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -23,7 +23,7 @@ mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_SECURITY_OFFICER - blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/nonviolent, /datum/quirk/paraplegic) + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia) threat = 2 /datum/job/officer/get_access() diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index 5762731f62..22e3f9b0f1 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -24,7 +24,7 @@ mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM) display_order = JOB_DISPLAY_ORDER_WARDEN - blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/nonviolent, /datum/quirk/paraplegic) + blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia) threat = 2 /datum/job/warden/get_access() diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index ab1d7a3d2e..7a755265dc 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -175,6 +175,20 @@ if(light_on) . += "[icon_state]_lit" +/obj/item/kinetic_crusher/glaive + name = "proto-kinetic glaive" + desc = "A modified design of a proto-kinetic crusher, it is still little more of a combination of various mining tools cobbled together \ + and kit-bashed into a high-tech cleaver on a stick - with a handguard and a goliath hide grip. While it is still of little use to any \ + but the most skilled and/or suicidal miners against local fauna, it's an elegant weapon for a more civilized hunter." + attack_verb = list("stabbed", "diced", "sliced", "cleaved", "chopped", "lacerated", "cut", "jabbed", "punctured") + icon_state = "crusher-glaive" + item_state = "crusher0-glaive" + //ideas: altclick that lets you pummel people with the handguard/handle? + //parrying functionality? + +/obj/item/kinetic_crusher/glaive/update_icon_state() + item_state = "crusher[wielded]-glaive" // this is not icon_state and not supported by 2hcomponent + //destablizing force /obj/item/projectile/destabilizer name = "destabilizing force" diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index e01438a905..e03de83e02 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -930,6 +930,9 @@ /obj/item/lava_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() + INVOKE_ASYNC(src, .proc/attempt_lava, target, user, proximity_flag, click_parameters) + +/obj/item/lava_staff/proc/attempt_lava(atom/target, mob/user, proximity_flag, click_parameters) if(timer > world.time) return diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index b00e291685..564d554319 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -32,7 +32,7 @@ new /datum/data/mining_equipment("500 Point Transfer Card", /obj/item/card/mining_point_card/mp500, 500), new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600), new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750), - new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/kinetic_crusher, 750), + new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/kinetic_crusher, 750), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 750), new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 800), @@ -68,6 +68,7 @@ new /datum/data/mining_equipment("KA Adjustable Tracer Rounds", /obj/item/borg/upgrade/modkit/tracer/adjustable, 150), new /datum/data/mining_equipment("KA Super Chassis", /obj/item/borg/upgrade/modkit/chassis_mod, 250), new /datum/data/mining_equipment("KA Hyper Chassis", /obj/item/borg/upgrade/modkit/chassis_mod/orange, 300), + new /datum/data/mining_equipment("Kinetic Glaive", /obj/item/kinetic_crusher/glaive, 1500), new /datum/data/mining_equipment("KA Range Increase", /obj/item/borg/upgrade/modkit/range, 1000), new /datum/data/mining_equipment("KA Damage Increase", /obj/item/borg/upgrade/modkit/damage, 1000), new /datum/data/mining_equipment("KA Cooldown Decrease", /obj/item/borg/upgrade/modkit/cooldown, 1000), diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index a5de3a2fdc..d11ad4474a 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -441,7 +441,7 @@ to_chat(user, "You cannot send IC messages (muted).") return FALSE else if(!params) - var/custom_emote = stripped_multiline_input(user, "Choose an emote to display.", "Custom Emote", null, MAX_MESSAGE_LEN) + var/custom_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Custom Emote", null, MAX_MESSAGE_LEN) if(custom_emote && !check_invalid(user, custom_emote)) var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable") switch(type) diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index 65e1047cdc..c0fca997f5 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -3,8 +3,14 @@ emote_type = EMOTE_AUDIBLE /datum/emote/sound/silicon - mob_type_allowed_typecache = list(/mob/living/silicon) + mob_type_allowed_typecache = list(/mob/living/silicon, /mob/living/carbon/human) emote_type = EMOTE_AUDIBLE + var/unrestricted = FALSE + +/datum/emote/sound/silicon/run_emote(mob/user, params) + if(!unrestricted && !(issilicon(user) || isipcperson(user))) + return + return ..() /datum/emote/silicon/boop key = "boop" diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index 73ebfa7c77..fb24b0fc09 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -60,11 +60,13 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians var/magic_fluff_string = "You draw the Coder, symbolizing bugs and errors. This shouldn't happen! Submit a bug report!" var/tech_fluff_string = "BOOT SEQUENCE COMPLETE. ERROR MODULE LOADED. THIS SHOULDN'T HAPPEN. Submit a bug report!" var/carp_fluff_string = "CARP CARP CARP SOME SORT OF HORRIFIC BUG BLAME THE CODERS CARP CARP CARP" + /// sigh, fine. + var/datum/song/holoparasite/music_datum /mob/living/simple_animal/hostile/guardian/Initialize(mapload, theme) GLOB.parasites += src updatetheme(theme) - + music_datum = new(src, get_allowed_instrument_ids()) . = ..() /mob/living/simple_animal/hostile/guardian/med_hud_set_health() @@ -84,8 +86,16 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /mob/living/simple_animal/hostile/guardian/Destroy() GLOB.parasites -= src + QDEL_NULL(music_datum) return ..() +/mob/living/simple_animal/hostile/guardian/verb/music_interact() + set name = "Access Internal Synthesizer" + set desc = "Access your internal musical synthesizer" + set category = "IC" + + music_datum.ui_interact(src) + /mob/living/simple_animal/hostile/guardian/proc/updatetheme(theme) //update the guardian's theme if(!theme) theme = pick("magic", "tech", "carp") @@ -638,6 +648,12 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians /obj/item/guardiancreator/tech/choose/dextrous possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Protector", "Ranged", "Standard", "Support") +/obj/item/guardiancreator/tech/choose/nukie // lacks support and protector as encouraging nukies to play turtle isnt fun and dextrous is epic + possible_guardians = list("Assassin", "Chaos", "Charger", "Dextrous", "Explosive", "Lightning", "Ranged", "Standard") + +/obj/item/guardiancreator/tech/choose/nukie/check_uplink_validity() + return !used + /obj/item/paper/guides/antag/guardian name = "Holoparasite Guide" icon_state = "paper_words" @@ -677,7 +693,7 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
Charger: Moves extremely fast, does medium damage on attack, and can charge at targets, damaging the first target hit and forcing them to drop any items they are holding.

- Dexterous: Does low damage on attack, but is capable of holding items and storing a single item within it. It will drop items held in its hands when it recalls, but it will retain the stored item.
+ Dextrous: Does low damage on attack, but is capable of holding items and storing a single item within it. It will drop items held in its hands when it recalls, but it will retain the stored item.

Explosive: High damage resist and medium power attack that may explosively teleport targets. Can turn any object, including objects too large to pick up, into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered or after a delay.

@@ -691,6 +707,29 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians
"} +/obj/item/paper/guides/antag/guardian/nukie + name = "Guardian Guide" + info = {"A list of Guardian Types
+ +
+ Assassin: Does medium damage and takes full damage, but can enter stealth, causing its next attack to do massive damage and ignore armor. However, it becomes briefly unable to recall after attacking from stealth.
+
+ Chaos: Ignites enemies on touch and causes them to hallucinate all nearby people as the guardian. Automatically extinguishes the user if they catch on fire.
+
+ Charger: Moves extremely fast, does medium damage on attack, and can charge at targets, damaging the first target hit and forcing them to drop any items they are holding.
+
+ Dextrous: Does low damage on attack, but is capable of holding items and storing a single item within it. It will drop items held in its hands when it recalls, but it will retain the stored item.
+
+ Explosive: High damage resist and medium power attack that may explosively teleport targets. Can turn any object, including objects too large to pick up, into a bomb, dealing explosive damage to the next person to touch it. The object will return to normal after the trap is triggered or after a delay.
+
+ Lightning: Attacks apply lightning chains to targets. Has a lightning chain to the user. Lightning chains shock everything near them, doing constant damage.
+
+ Ranged: Has two modes. Ranged; which fires a constant stream of weak, armor-ignoring projectiles. Scout; Cannot attack, but can move through walls and is quite hard to see. Can lay surveillance snares, which alert it when crossed, in either mode.
+
+ Standard: Devastating close combat attacks and high damage resist. Can smash through weak walls.
+
+"} + /obj/item/storage/box/syndie_kit/guardian name = "holoparasite injector kit" @@ -699,6 +738,13 @@ GLOBAL_LIST_EMPTY(parasites) //all currently existing/living guardians new /obj/item/guardiancreator/tech/choose/traitor(src) new /obj/item/paper/guides/antag/guardian(src) +/obj/item/storage/box/syndie_kit/nukieguardian + name = "holoparasite injector kit" + +/obj/item/storage/box/syndie_kit/nukieguardian/PopulateContents() + new /obj/item/guardiancreator/tech/choose/nukie(src) + new /obj/item/paper/guides/antag/guardian/nukie(src) + /obj/item/guardiancreator/carp name = "holocarp fishsticks" desc = "Using the power of Carp'sie, you can catch a carp from byond the veil of Carpthulu, and bind it to your fleshy flesh form." diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 195c50e958..03a3ab1001 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -161,4 +161,4 @@ /// The timer that will remove our indicator for early aborts (like when an user finishes their message) var/typing_indicator_timerid /// Current state of our typing indicator. Used for cut overlay, DO NOT RUNTIME ASSIGN OTHER THAN FROM SHOW/CLEAR. Used to absolutely ensure we do not get stuck overlays. - var/typing_indicator_current + var/mutable_appearance/typing_indicator_current diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 3ceafe4a11..7d97270808 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -43,6 +43,11 @@ if(GLOB.say_disabled) //This is here to try to identify lag problems to_chat(usr, "Speech is currently admin-disabled.") return + + if(length(message) > MAX_MESSAGE_LEN) + to_chat(usr, message) + to_chat(usr, "^^^----- The preceeding message has been DISCARDED for being over the maximum length of [MAX_MESSAGE_LEN]. It has NOT been sent! -----^^^") + return message = trim(copytext_char(sanitize(message), 1, MAX_MESSAGE_LEN)) clear_typing_indicator() // clear it immediately! diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 5ed24af726..5db3ccf216 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -37,7 +37,7 @@ proc/get_top_level_mob(var/mob/S) to_chat(user, "You cannot send IC messages (muted).") return FALSE else if(!params) - var/subtle_emote = stripped_multiline_input(user, "Choose an emote to display.", "Subtle", null, MAX_MESSAGE_LEN) + var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtle", null, MAX_MESSAGE_LEN) if(subtle_emote && !check_invalid(user, subtle_emote)) var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable") switch(type) @@ -98,7 +98,7 @@ proc/get_top_level_mob(var/mob/S) to_chat(user, "You cannot send IC messages (muted).") return FALSE else if(!params) - var/subtle_emote = stripped_multiline_input(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN) + var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN) if(subtle_emote && !check_invalid(user, subtle_emote)) var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable") switch(type) diff --git a/code/modules/mob/typing_indicator.dm b/code/modules/mob/typing_indicator.dm index f28cbe4385..6154828f4d 100644 --- a/code/modules/mob/typing_indicator.dm +++ b/code/modules/mob/typing_indicator.dm @@ -15,13 +15,23 @@ GLOBAL_LIST_EMPTY(typing_indicator_overlays) /mob/proc/get_typing_indicator_icon_state() return typing_indicator_state +/// Generates the mutable appearance for typing indicator. Should prevent stuck overlays. +/mob/proc/generate_typing_indicator() + var/state = get_typing_indicator_icon_state() + if(ispath(state)) + var/atom/thing = new state(null) + var/mutable_appearance/generated = new(thing) + return generated + else + CRASH("Unsupported typing indicator state: [state]") + /** * Displays typing indicator. * @param timeout_override - Sets how long until this will disappear on its own without the user finishing their message or logging out. Defaults to src.typing_indicator_timeout * @param state_override - Sets the state that we will fetch. Defaults to src.get_typing_indicator_icon_state() * @param force - shows even if src.typing_indcator_enabled is FALSE. */ -/mob/proc/display_typing_indicator(timeout_override = TYPING_INDICATOR_TIMEOUT, state_override = get_typing_indicator_icon_state(), force = FALSE) +/mob/proc/display_typing_indicator(timeout_override = TYPING_INDICATOR_TIMEOUT, state_override = generate_typing_indicator(), force = FALSE) if((!typing_indicator_enabled && !force) || typing_indicator_current) return typing_indicator_current = state_override diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 6b933ce759..103061088e 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -323,6 +323,83 @@ ..() . = 1 +/datum/reagent/consumable/tea/red + name = "Red Tea" + description = "Tasty red tea, helps the body digest food. Drink in moderation!" + color = "#101000" // rgb: 16, 16, 0 + nutriment_factor = 0 + taste_description = "sweet red tea" + glass_icon_state = "teaglass" + glass_name = "glass of red tea" + glass_desc = "A piping hot tea that helps with the digestion of food." + +/datum/reagent/consumable/tea/red/on_mob_life(mob/living/carbon/M) + if(M.nutrition > NUTRITION_LEVEL_HUNGRY) + M.adjust_nutrition(-3) + M.dizziness = max(0,M.dizziness-2) + M.drowsyness = max(0,M.drowsyness-1) + M.jitteriness = max(0,M.jitteriness-3) + M.adjust_bodytemperature(23 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + . = 1 + +/datum/reagent/consumable/tea/green + name = "Green Tea" + description = "Tasty green tea, known to heal livers, it's good for you!" + color = "#101000" // rgb: 16, 16, 0 + nutriment_factor = 0 + taste_description = "tart green tea" + glass_icon_state = "teaglass" + glass_name = "glass of tea" + glass_desc = "A calming glass of green tea to help get you through the day." + +/datum/reagent/consumable/tea/green/on_mob_life(mob/living/carbon/M) + M.adjustOrganLoss(ORGAN_SLOT_LIVER, -0.5) //Detox! + M.dizziness = max(0,M.dizziness-2) + M.drowsyness = max(0,M.drowsyness-1) + M.jitteriness = max(0,M.jitteriness-3) + M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + . = 1 + +/datum/reagent/consumable/tea/forest + name = "Forest Tea" + description = "Tea mixed with honey, has both antitoxins and sweetness in one!" + color = "#101000" // rgb: 16, 16, 0 + nutriment_factor = 0 + quality = DRINK_NICE + taste_description = "sweet tea" + glass_icon_state = "teaglass" + glass_name = "glass of forest tea" + glass_desc = "A lovely glass of tea and honey." + +/datum/reagent/consumable/tea/forest/on_mob_life(mob/living/carbon/M) + if(M.getToxLoss() && prob(40))//Two anti-toxins working here + M.adjustToxLoss(-1, 0, TRUE) //heals TOXINLOVERs + //Reminder that honey heals toxin lovers + M.dizziness = max(0,M.dizziness-2) + M.drowsyness = max(0,M.drowsyness-1) + M.jitteriness = max(0,M.jitteriness-3) + M.adjust_bodytemperature(15 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, BODYTEMP_NORMAL) + . = 1 + +/datum/reagent/consumable/tea/mush + name = "Mush Tea" + description = "Tea mixed with mushroom hallucinogen, used for fun rides or self reflection." + color = "#101000" // rgb: 16, 16, 0 + nutriment_factor = 0 + quality = DRINK_NICE + taste_description = "fungal infections" + glass_icon_state = "teaglass" + glass_name = "glass of mush tea" + glass_desc = "A cold merky brown tea." + +/datum/reagent/consumable/tea/mush/on_mob_life(mob/living/carbon/M) + M.set_drugginess(20) //Little better then space drugs + if(prob(20)) + M.Dizzy(10) + if(prob(10)) + M.disgust = 0 + . = 1 + /datum/reagent/consumable/lemonade name = "Lemonade" description = "Sweet, tangy lemonade. Good for the soul." diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index 7da734e9c4..8dca028b4a 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -373,6 +373,14 @@ pH = 4.9 value = REAGENT_VALUE_VERY_COMMON +/datum/reagent/toxin/teapowder/red + name = "Ground Red Tea Leaves" + toxpwr = 0.4 + +/datum/reagent/toxin/teapowder/green + name = "Ground Green Tea Leaves" + toxpwr = 0.6 + /datum/reagent/toxin/mutetoxin //the new zombie powder. name = "Mute Toxin" description = "A nonlethal poison that inhibits speech in its victim." diff --git a/code/modules/reagents/reagent_containers/medspray.dm b/code/modules/reagents/reagent_containers/medspray.dm index 02a3f987bc..40ad167531 100644 --- a/code/modules/reagents/reagent_containers/medspray.dm +++ b/code/modules/reagents/reagent_containers/medspray.dm @@ -32,6 +32,9 @@ to_chat(user, "You will now apply the medspray's contents in [squirt_mode ? "short bursts":"extended sprays"]. You'll now use [amount_per_transfer_from_this] units per use.") /obj/item/reagent_containers/medspray/attack(mob/living/L, mob/user, def_zone) + INVOKE_ASYNC(src, .proc/attempt_spray, L, user, def_zone) // this is shitcode because the params for attack aren't even right but i'm not in the mood to refactor right now. + +/obj/item/reagent_containers/medspray/proc/attempt_spray(mob/living/L, mob/user, def_zone) if(!reagents || !reagents.total_volume) to_chat(user, "[src] is empty!") return diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index ca80d6472c..f42ae668c7 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -53,6 +53,9 @@ /obj/item/reagent_containers/syringe/attackby(obj/item/I, mob/user, params) return +/obj/item/reagent_containers/syringe/attack() + return // no bludgeoning. + /obj/item/reagent_containers/syringe/afterattack(atom/target, mob/user, proximity) . = ..() INVOKE_ASYNC(src, .proc/attempt_inject, target, user, proximity) diff --git a/code/modules/uplink/uplink_items/uplink_dangerous.dm b/code/modules/uplink/uplink_items/uplink_dangerous.dm index e068094776..a43e3fc2ce 100644 --- a/code/modules/uplink/uplink_items/uplink_dangerous.dm +++ b/code/modules/uplink/uplink_items/uplink_dangerous.dm @@ -185,6 +185,17 @@ restricted = TRUE refund_path = /obj/item/guardiancreator/tech/choose/traitor +/datum/uplink_item/dangerous/nukieguardian // just like the normal holoparasites but without the support or deffensive stands because nukies shouldnt turtle + name = "Holoparasites" + desc = "Though capable of near sorcerous feats via use of hardlight holograms and nanomachines, they require an \ + organic host as a home base and source of fuel. Holoparasites come in various types and share damage with their host." + item = /obj/item/storage/box/syndie_kit/nukieguardian + cost = 15 + refundable = TRUE + surplus = 50 + refund_path = /obj/item/guardiancreator/tech/choose/nukie + include_modes = list(/datum/game_mode/nuclear) + /datum/uplink_item/dangerous/machinegun name = "L6 Squad Automatic Weapon" desc = "A fully-loaded Aussec Armoury belt-fed machine gun. \ diff --git a/code/modules/uplink/uplink_items/uplink_devices.dm b/code/modules/uplink/uplink_items/uplink_devices.dm index 5149259bb8..eddf1760ed 100644 --- a/code/modules/uplink/uplink_items/uplink_devices.dm +++ b/code/modules/uplink/uplink_items/uplink_devices.dm @@ -147,6 +147,12 @@ item = /obj/item/aiModule/syndicate cost = 9 +/datum/uplink_item/device_tools/damaged_module + name = "Damaged AI Law Upload Module" + desc = "This AI law upload module has been laying around our warehouse for god knows how long. We do not know why you would ever use this." + item = /obj/item/aiModule/core/full/damaged + cost = 5 + /datum/uplink_item/device_tools/headsetupgrade name = "Headset Upgrader" desc = "A device that can be used to make one headset immune to flashbangs." diff --git a/code/modules/uplink/uplink_items/uplink_implants.dm b/code/modules/uplink/uplink_items/uplink_implants.dm index 02b8b1e01d..bb4e0c7960 100644 --- a/code/modules/uplink/uplink_items/uplink_implants.dm +++ b/code/modules/uplink/uplink_items/uplink_implants.dm @@ -29,6 +29,13 @@ item = /obj/item/storage/box/syndie_kit/imp_freedom cost = 5 +/datum/uplink_item/implants/warp + name = "Warp Implant" + desc = "An implant injected into the body and later activated at the user's will. It will inject eigenstasium which saves the user's location and teleports them there after five seconds. Lasts only fifteen times." + item = /obj/item/storage/box/syndie_kit/imp_warp + cost = 6 + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + /datum/uplink_item/implants/hijack name = "Hijack Implant" desc = "An implant that will let you hack into the APCs on station, allowing you to control them at will and the machinery within those rooms." diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 7a5356ce06..a42fe97cb4 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -576,7 +576,7 @@ GLOBAL_LIST_EMPTY(vending_products) "You right [src].") unbuckle_all_mobs(TRUE) - + anchored = FALSE //so you can push it back into position tilted = FALSE layer = initial(layer) diff --git a/code/modules/vending/coffee.dm b/code/modules/vending/coffee.dm index ab64756868..fd555526c6 100644 --- a/code/modules/vending/coffee.dm +++ b/code/modules/vending/coffee.dm @@ -1,16 +1,20 @@ /obj/machinery/vending/coffee name = "\improper Solar's Best Hot Drinks" desc = "A vending machine which dispenses hot drinks." - product_ads = "Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies" + product_ads = "Just what you need!;Have a drink!;Drink up!;It's good for you!;Would you like a hot joe?;I'd kill for some coffee!;The best beans in the galaxy.;Only the finest brew for you.;Mmmm. Nothing like a coffee.;I like coffee, don't you?;Coffee helps you work!;Try some tea.;We hope you like the best!;Try our new chocolate!;Admin conspiracies" icon_state = "coffee" icon_vend = "coffee-vend" products = list(/obj/item/reagent_containers/food/drinks/coffee = 25, /obj/item/reagent_containers/food/drinks/mug/tea = 25, + /obj/item/reagent_containers/food/drinks/mug/tea/red = 10, + /obj/item/reagent_containers/food/drinks/mug/tea/green = 10, /obj/item/reagent_containers/food/drinks/mug/coco = 25) - contraband = list(/obj/item/reagent_containers/food/drinks/ice = 12) + contraband = list(/obj/item/reagent_containers/food/drinks/ice = 12, + /obj/item/reagent_containers/food/drinks/mug/tea/mush = 3,) premium = list(/obj/item/reagent_containers/food/condiment/milk = 2, /obj/item/reagent_containers/food/drinks/bottle/cream = 2, - /obj/item/reagent_containers/food/condiment/sugar = 1) + /obj/item/reagent_containers/food/condiment/sugar = 1, + /obj/item/reagent_containers/food/drinks/mug/tea/forest = 3,) refill_canister = /obj/item/vending_refill/coffee default_price = PRICE_REALLY_CHEAP diff --git a/html/changelog.html b/html/changelog.html index 515a65a4b8..65a9d69167 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,55 @@ -->
+

06 August 2020

+

Auris456852 updated:

+
    +
  • Added B.O.O.P. Remote Control cartridges to the PTech.
  • +
+

Hatterhat updated:

+
    +
  • Proto-kinetic glaives! Essentially a proto-kinetic crusher with a different blade, handguard, and goliath hide grip. Expensive, but elegant.
  • +
  • Door charges no longer knock people out.
  • +
+

Ludox235 updated:

+
    +
  • You can now buy damaged AI upload modules in the traitor's uplink.
  • +
+

Seris02 updated:

+
    +
  • fixed ghost chilis
  • +
+

Trilbyspaceclone updated:

+
    +
  • 4 New blends of tea have been shipped to the station, and how to make them has been leaked!
  • +
+

b1tt3r1n0 updated:

+
    +
  • Added the warp implant
  • +
+

dapnee updated:

+
    +
  • added a hallway to telecoms for engineers to get there on meta
  • +
+

kappa-sama updated:

+
    +
  • dildo circuit assemblies
  • +
+

lolman360 updated:

+
    +
  • The Tendril-Mother on Lavaland has remembered how to make ashwalkers who know how to speak Draconic again.
  • +
+

timothyteakettle updated:

+
    +
  • nanotrasen has decided to fire all disabled members of the security division and confiscate certain sentimental items from doctors
  • +
  • the custom tongue preference now passes through cloning so you spawn with your selected tongue
  • +
  • several changes to travelling traders so they look better and spawn slightly less often
  • +
+

zeroisthebiggay updated:

+
    +
  • nukies can buy holoparasites
  • +
+

04 August 2020

Seris02 updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 006f958f29..c82d7d4058 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -26721,3 +26721,35 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. poked into your body for fun and enjoyment zeroisthebiggay: - rscadd: prefs for headpat wagging +2020-08-06: + Auris456852: + - rscadd: Added B.O.O.P. Remote Control cartridges to the PTech. + Hatterhat: + - rscadd: Proto-kinetic glaives! Essentially a proto-kinetic crusher with a different + blade, handguard, and goliath hide grip. Expensive, but elegant. + - balance: Door charges no longer knock people out. + Ludox235: + - rscadd: You can now buy damaged AI upload modules in the traitor's uplink. + Seris02: + - bugfix: fixed ghost chilis + Trilbyspaceclone: + - rscadd: 4 New blends of tea have been shipped to the station, and how to make + them has been leaked! + b1tt3r1n0: + - rscadd: Added the warp implant + dapnee: + - tweak: added a hallway to telecoms for engineers to get there on meta + kappa-sama: + - rscdel: dildo circuit assemblies + lolman360: + - bugfix: The Tendril-Mother on Lavaland has remembered how to make ashwalkers who + know how to speak Draconic again. + timothyteakettle: + - tweak: nanotrasen has decided to fire all disabled members of the security division + and confiscate certain sentimental items from doctors + - tweak: the custom tongue preference now passes through cloning so you spawn with + your selected tongue + - tweak: several changes to travelling traders so they look better and spawn slightly + less often + zeroisthebiggay: + - rscadd: nukies can buy holoparasites diff --git a/html/changelogs/AutoChangeLog-pr-12969.yml b/html/changelogs/AutoChangeLog-pr-12969.yml new file mode 100644 index 0000000000..8042556cde --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-12969.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - rscadd: "holoparasites can now play music" diff --git a/html/changelogs/AutoChangeLog-pr-13001.yml b/html/changelogs/AutoChangeLog-pr-13001.yml new file mode 100644 index 0000000000..bc4e5b5311 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13001.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - balance: "explosions only recurse one level into storage before dropping 1 level per storage layer." diff --git a/html/changelogs/AutoChangeLog-pr-13006.yml b/html/changelogs/AutoChangeLog-pr-13006.yml new file mode 100644 index 0000000000..e13902099a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13006.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - tweak: "volumetric storage is now minimum 16 pixels per item because 8 was ridiculous" diff --git a/html/changelogs/AutoChangeLog-pr-13026.yml b/html/changelogs/AutoChangeLog-pr-13026.yml new file mode 100644 index 0000000000..99b07f27af --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13026.yml @@ -0,0 +1,4 @@ +author: "dapnee" +delete-after: True +changes: + - bugfix: "fixed active tufs on some space ruins, murderdome VR, and a few on pubby, changed cargo autolathe to techfab, messed with pipe room leading to monastery." diff --git a/html/changelogs/AutoChangeLog-pr-13029.yml b/html/changelogs/AutoChangeLog-pr-13029.yml new file mode 100644 index 0000000000..233deee1fd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13029.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - rscadd: "attempting to send too long of an emote will now reflect it back to you instead of cutting it off and discarding the overflow." diff --git a/html/changelogs/AutoChangeLog-pr-13030.yml b/html/changelogs/AutoChangeLog-pr-13030.yml new file mode 100644 index 0000000000..5e0ac940e3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13030.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - spellcheck: "shieldbash balanace --> balance" diff --git a/html/changelogs/AutoChangeLog-pr-13032.yml b/html/changelogs/AutoChangeLog-pr-13032.yml new file mode 100644 index 0000000000..06a8e274b5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13032.yml @@ -0,0 +1,4 @@ +author: "lolman360" +delete-after: True +changes: + - bugfix: "podpeople no fat when sunbathing." diff --git a/html/changelogs/AutoChangeLog-pr-13033.yml b/html/changelogs/AutoChangeLog-pr-13033.yml new file mode 100644 index 0000000000..d9d11352b4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13033.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - balance: "lethal blood now causes damaging bleeding instead of outright gibbing" diff --git a/html/changelogs/AutoChangeLog-pr-13035.yml b/html/changelogs/AutoChangeLog-pr-13035.yml new file mode 100644 index 0000000000..1c2bf4dc8d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13035.yml @@ -0,0 +1,4 @@ +author: "lolman360" +delete-after: True +changes: + - bugfix: "vendors are now unanchored when tipped. it just fell over it's not bolted to the ground anymore." diff --git a/html/changelogs/AutoChangeLog-pr-13036.yml b/html/changelogs/AutoChangeLog-pr-13036.yml deleted file mode 100644 index 633eb41ed5..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13036.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "lolman360" -delete-after: True -changes: - - bugfix: "The Tendril-Mother on Lavaland has remembered how to make ashwalkers who know how to speak Draconic again." diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index ae8e6221c6..9490595484 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/inhands/weapons/hammers_lefthand.dmi b/icons/mob/inhands/weapons/hammers_lefthand.dmi index 306fd0db8a..b753a1f181 100644 Binary files a/icons/mob/inhands/weapons/hammers_lefthand.dmi and b/icons/mob/inhands/weapons/hammers_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/hammers_righthand.dmi b/icons/mob/inhands/weapons/hammers_righthand.dmi index 674e4d510b..7650f6c760 100644 Binary files a/icons/mob/inhands/weapons/hammers_righthand.dmi and b/icons/mob/inhands/weapons/hammers_righthand.dmi differ diff --git a/icons/obj/implants.dmi b/icons/obj/implants.dmi index a6d4697673..b7cb90e9f4 100644 Binary files a/icons/obj/implants.dmi and b/icons/obj/implants.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 43bc9c48aa..e7063b71db 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/sound/roundend/CitadelStationHasSeenBetterDays.ogg b/sound/roundend/CitadelStationHasSeenBetterDays.ogg new file mode 100644 index 0000000000..2fa0c5b33c Binary files /dev/null and b/sound/roundend/CitadelStationHasSeenBetterDays.ogg differ diff --git a/tgui/yarn.lock b/tgui/yarn.lock index a2a23a7998..c2fc3a185f 100644 --- a/tgui/yarn.lock +++ b/tgui/yarn.lock @@ -1241,9 +1241,9 @@ bluebird@^3.5.5: integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== body-parser@1.19.0: version "1.19.0" @@ -2203,9 +2203,9 @@ electron-to-chromium@^1.3.390: integrity sha512-DbCBdwtARI0l3e3m6ZIxVaTNahb6dSsmGjuag/twiVcWuM4MSpL5IfsJsJSyqLqxosE/m0CXlZaBmxegQW/dAg== elliptic@^6.0.0: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== dependencies: bn.js "^4.4.0" brorand "^1.0.1"